@barocss/browser 0.0.3 → 0.4.0
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/README.md +2 -2
- package/dist/cdn/barocss.js +307 -229
- package/dist/cdn/barocss.js.map +1 -1
- package/dist/cdn/barocss.umd.cjs +1 -1
- package/dist/cdn/barocss.umd.cjs.map +1 -1
- package/dist/index.d.ts +268 -5
- package/dist/index.es.js +63 -53
- package/dist/index.umd.js +3 -3
- package/package.json +10 -6
- package/dist/baro-boot.d.ts +0 -8
- package/dist/browser-runtime.d.ts +0 -119
- package/dist/change-detector.d.ts +0 -80
- package/dist/style-partition-manager.d.ts +0 -51
- package/dist/utils.d.ts +0 -2
package/dist/cdn/barocss.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"barocss.js","sources":["../../../barocss/src/core/ast.ts","../../../barocss/src/core/registry.ts","../../../barocss/src/core/tokenizer.ts","../../../barocss/src/utils/cache.ts","../../../barocss/src/core/parser.ts","../../../barocss/src/core/astToCss.ts","../../../barocss/src/core/engine.ts","../../../barocss/src/core/incremental-parser.ts","../../../barocss/src/theme/colors.ts","../../../barocss/src/theme/spacing.ts","../../../barocss/src/theme/border-radius.ts","../../../barocss/src/theme/font-size.ts","../../../barocss/src/theme/font-family.ts","../../../barocss/src/theme/font-weight.ts","../../../barocss/src/theme/line-height.ts","../../../barocss/src/theme/box-shadow.ts","../../../barocss/src/theme/z-index.ts","../../../barocss/src/theme/opacity.ts","../../../barocss/src/theme/transition-property.ts","../../../barocss/src/theme/transition-timing-function.ts","../../../barocss/src/theme/transition-duration.ts","../../../barocss/src/theme/transition-delay.ts","../../../barocss/src/theme/animations.ts","../../../barocss/src/theme/keyframes.ts","../../../barocss/src/theme/animation-vars.ts","../../../barocss/src/theme/breakpoints.ts","../../../barocss/src/theme/container.ts","../../../barocss/src/theme/letter-spacing.ts","../../../barocss/src/theme/blur.ts","../../../barocss/src/theme/default-theme.ts","../../../barocss/src/core/cssVars.ts","../../../barocss/src/css/preflight.ts","../../../barocss/src/core/context.ts","../../../barocss/src/core/utils.ts","../../../barocss/src/presets/interactivity.ts","../../../barocss/src/presets/transitions.ts","../../../barocss/src/presets/table.ts","../../../barocss/src/presets/filter.ts","../../../barocss/src/presets/backdrop-filter.ts","../../../barocss/src/presets/effects.ts","../../../barocss/src/presets/layout.ts","../../../barocss/src/presets/flexbox-grid.ts","../../../barocss/src/presets/spacing.ts","../../../barocss/src/presets/sizing.ts","../../../barocss/src/presets/typography.ts","../../../barocss/src/presets/background.ts","../../../barocss/src/presets/border.ts","../../../barocss/src/presets/transform.ts","../../../barocss/src/presets/svg.ts","../../../barocss/src/presets/accessibility.ts","../../../barocss/src/presets/variants/pseudo-classes.ts","../../../barocss/src/presets/variants/form-states.ts","../../../barocss/src/presets/variants/structural-selectors.ts","../../../barocss/src/presets/variants/media-features.ts","../../../barocss/src/presets/variants/attribute-selectors.ts","../../../barocss/src/presets/variants/basic-variants.ts","../../../barocss/src/presets/variants/utils.ts","../../../barocss/src/presets/variants/responsive.ts","../../../barocss/src/presets/variants/dark-mode.ts","../../../barocss/src/presets/variants/container-queries.ts","../../../barocss/src/presets/variants/has-variants.ts","../../../barocss/src/presets/variants/negation-variants.ts","../../../barocss/src/presets/variants/universal-selectors.ts","../../../barocss/src/presets/variants/arbitrary-variants.ts","../../../barocss/src/presets/variants/attribute-variants.ts","../../../barocss/src/presets/variants/nth-selectors.ts","../../../barocss/src/presets/variants/functional-selectors.ts","../../../barocss/src/presets/variants/at-rules.ts","../../../barocss/src/presets/variants/group-peer-extensions.ts","../../src/style-partition-manager.ts","../../src/utils.ts","../../src/change-detector.ts","../../src/browser-runtime.ts","../../src/baro-boot.ts"],"sourcesContent":["// AST node types for barocss\nexport type AstNode =\n | { type: \"wrap\"; items: AstNode[], source?: string }\n | { type: \"decl\"; prop: string; value: string | [string, string][], source?: string }\n | { type: \"at-rule\"; name: string; params: string; nodes: AstNode[], source?: string }\n | { type: \"style-rule\"; selector: string; nodes: AstNode[], source?: string }\n | { type: \"rule\"; selector: string; nodes: AstNode[], source?: string }\n | { type: \"at-root\"; nodes: AstNode[], source?: string }\n | { type: \"comment\"; text: string, source?: string }\n | { type: \"raw\"; value: string, source?: string };\n\nexport type HasNodes = { nodes?: AstNode[] };\nexport type HasSource = { source?: string };\nexport type HasSelector = { selector?: string };\nexport type HasName = { name?: string };\nexport type HasParams = { params?: string };\nexport type HasValue = { value?: string | [string, string][] };\nexport type HasProp = { prop?: string };\nexport type HasItems = { items?: AstNode[] };\nexport type HasText = { text?: string };\n\nexport function decl(\n prop: string,\n value: string | [string, string][],\n source?: string\n): AstNode {\n return { type: \"decl\", prop, value, source };\n}\nexport function atRoot(nodes: AstNode[], source?: string): AstNode {\n return {\n type: \"at-root\",\n nodes,\n source\n };\n}\n\nexport function atRule(\n name: string,\n params: string,\n nodes: AstNode[],\n source?: string\n): AstNode {\n return { type: \"at-rule\", name, params, nodes, source };\n}\nexport function styleRule(selector: string, nodes: AstNode[], source?: string): AstNode {\n return { type: \"style-rule\", selector, nodes, source };\n}\nexport function rule(selector: string, nodes: AstNode[], source?: string): AstNode {\n return { type: \"rule\", selector, nodes, source };\n}\nexport function comment(text: string, source?: string): AstNode {\n return { type: \"comment\", text, source };\n}\nexport function raw(value: string, source?: string): AstNode {\n return { type: \"raw\", value, source };\n}\n\nexport function property(name: string, initialValue?: string, syntax?: string, source?: string): AstNode {\n const nodes: AstNode[] = [\n decl(\"syntax\", `\"${syntax || \"*\"}\"`, source),\n decl(\"inherits\", \"false\", source),\n ];\n \n if (initialValue) {\n nodes.push(decl(\"initial-value\", initialValue, source));\n }\n \n return atRule(\"property\", name, nodes, source);\n}","import type { AstNode } from './ast';\nimport { decl, rule } from './ast';\nimport { Context } from './context';\nimport { ParsedModifier, ParsedUtility } from './parser';\n\n// Utility registration\nexport interface UtilityRegistration {\n /**\n * The name of the utility\n */\n name: string;\n /**\n * The match function for the utility\n * @param className The class name of the utility\n * @returns {boolean} Whether the utility matches the class name\n */\n match: (className: string) => boolean;\n /**\n * Handler for utility value\n * @param value Utility value (e.g. 'red-500')\n * @param ctx Context\n * @param token Parsed token\n * @param options Registration options\n */\n handler: (value: string, ctx: Context, token: ParsedUtility, options: UtilityRegistration) => AstNode[] | null | undefined;\n /**\n * The description of the utility\n * @example\n * ```\n * description: 'Custom utility description',\n * ```\n */\n description?: string;\n /**\n * The category of the utility\n * @example\n * ```\n * category: 'background',\n * ```\n */\n category?: string;\n /**\n * The priority of the utility\n * @example\n * ```\n * priority: 10,\n * ```\n */\n priority?: number;\n [key: string]: unknown;\n}\n\nconst utilityRegistry: UtilityRegistration[] = [];\nexport function registerUtility(util: UtilityRegistration) {\n utilityRegistry.push(util);\n}\n\nexport function getUtility(): UtilityRegistration[] {\n return utilityRegistry;\n}\n\n// --- Modifier Registration ---\nexport type ModifierRegistration = {\n match: (mod: string, context: Context) => boolean;\n modifySelector?: (params: { selector: string; fullClassName: string; mod: ParsedModifier; context: Context; variantChain?: ParsedModifier[]; index?: number }) => string | { selector: string; flatten?: boolean; wrappingType?: 'rule' | 'style-rule' | 'at-rule'; override?: boolean; source?: string };\n wrap?: (mod: ParsedModifier, context: Context) => AstNode[];\n astHandler?: (ast: AstNode[], mod: ParsedModifier, context: Context, variantChain?: ParsedModifier[], index?: number) => AstNode[];\n sort?: number;\n description?: string;\n source?: string;\n};\n\nexport const modifierRegistry: ModifierRegistration[] = [];\n\n/**\n * staticModifier: A helper that registers a modifier name and an array of CSS selectors directly to the registry\n * \n * @example\n * ```\n * staticModifier('disabled', ['&:disabled'], { source: 'pseudo' });\n * ```\n * \n * @param name The name of the modifier\n * @param selectors The selectors of the modifier\n * @param options The options of the modifier\n * \n * @returns {void}\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function staticModifier(name: string, selectors: string[], options: any = {}): void {\n modifierRegistry.push({\n match: (mod: string) => mod === name,\n modifySelector: ({ ..._rest }) => {\n return selectors.map(sel => ({\n selector: sel,\n source: options.source\n }));\n },\n ...options\n });\n}\n\nexport function functionalModifier(match: ModifierRegistration['match'], modifySelector: ModifierRegistration['modifySelector'], wrap?: ModifierRegistration['wrap'], options: Partial<ModifierRegistration> = {}) {\n modifierRegistry.push({ match, modifySelector, wrap, ...options });\n}\n\nexport function getModifier(): ModifierRegistration[] {\n return modifierRegistry;\n}\n\n// escapeClassName\nconst ESCAPE_REGEX = /[^A-Za-z0-9_-]/g;\nexport function escapeClassName(className: string) {\n return className.replace(ESCAPE_REGEX, (c) => {\n if (c === ' ') return '\\\\x20 ';\n if (c === '.') return '\\\\.';\n if (c === '/') return '\\\\/';\n if (c === ':') return '\\\\:';\n if (c === '[') return '\\\\[';\n if (c === ']') return '\\\\]';\n if (c === '(') return '\\\\(';\n if (c === ')') return '\\\\)';\n if (c === '%') return '\\\\%';\n if (c === '#') return '\\\\#';\n if (c === ',') return '\\\\,';\n if (c === '=') return '\\\\=';\n if (c === '&') return '\\\\&';\n if (c === '~') return '\\\\~';\n if (c === '*') return '\\\\*';\n if (c === '$') return '\\\\$';\n if (c === '^') return '\\\\^';\n if (c === '+') return '\\\\+';\n if (c === '?') return '\\\\?';\n if (c === '!') return '\\\\!';\n if (c === '@') return '\\\\@';\n if (c === \"'\") return \"\\\\'\";\n if (c === '\"') return '\\\\\"';\n if (c === '`') return '\\\\`';\n if (c === ';') return '\\\\;';\n if (c === '<') return '\\\\<';\n if (c === '>') return '\\\\>';\n if (c === '{') return '\\\\{';\n if (c === '}') return '\\\\}';\n if (c === '|') return '\\\\|';\n if (c === '\\\\') return '\\\\\\\\';\n return '\\\\' + c;\n });\n}\n\n// --- Utility Helper Factories ---\n\ntype StaticUtilityValue = \n | AstNode // ast\n | [string, string] // [prop, value]\n | [string, [string, string][]] // [selector, [prop, value][]]\n | ((value: string) => AstNode); // function\n\n\n/**\n * staticUtility: A helper that registers a utility name and an array of CSS declaration pairs directly to the registry\n *\n * @example\n * ```\n * staticUtility('block', [['display', 'block']]);\n * staticUtility('hidden', [['display', 'none']]);\n * staticUtility('space-x-px', [\n * [\n * '& > :not([hidden]) ~ :not([hidden])', // selector\n * [\n * ['margin-inline-start', '1px'], // [prop, value]\n * ['margin-inline-end', '1px'], // [prop, value]\n * ],\n * ],\n * ]);\n * ```\n * \n * @param name The name of the utility\n * @param decls The declarations of the utility\n * @param opts The options of the utility\n * \n * @returns {void}\n */\nexport function staticUtility(\n name: string,\n decls: StaticUtilityValue[],\n opts?: { description?: string; category?: string; priority?: number }\n): void {\n registerUtility({\n name,\n match: (className: string) => {\n return className === name;\n },\n handler: (value: string): AstNode[] | null | undefined => {\n return decls.flatMap((params) => {\n\n if ((params as AstNode).type) {\n return [params as AstNode];\n }\n\n if (typeof params === 'function') {\n const targetFunction = params as (value: string) => AstNode;\n return [targetFunction(value)];\n }\n const [a, b] = params as [string, string | [string, string][]];\n\n if (typeof b === 'string') {\n // [prop, value]\n return [decl(a, b)];\n } else if (Array.isArray(b)) {\n // selector, [prop, value][]\n return [rule(a, b.map(([prop, value]) => decl(prop, value)))];\n }\n return [];\n });\n },\n description: opts?.description,\n category: opts?.category,\n priority: opts?.priority,\n });\n}\n\nexport type FunctionalUtilityExtra = {\n opacity?: string;\n realThemeValue?: string;\n}\n\nexport type FunctionalUtilityOptions = {\n /**\n * The name of the utility\n * \n * prefix is automatically added to the name\n */\n name: string;\n /**\n * The CSS property to set\n * \n * css property is automatically added to the prop\n */\n prop?: string;\n /**\n * The theme key to look up values\n * \n * theme key is automatically added to the themeKey\n * \n * @example\n * ```\n * themeKey: 'colors'\n * ```\n */\n themeKey?: string;\n /**\n * The theme keys to look up values\n * \n * theme keys are automatically added to the themeKeys\n * \n * @example\n * ```\n * themeKeys: ['colors', 'spacing']\n * ```\n */\n themeKeys?: string[];\n /**\n * Whether to support arbitrary values\n * \n * `bg-[#ff0000]`\n * \n * @example\n * ```\n * supportsArbitrary: true\n * ```\n */\n supportsArbitrary?: boolean;\n /**\n * Whether to support fraction values\n * \n * `m-4`\n * \n * @example\n * ```\n * supportsFraction: true\n * ```\n */\n supportsFraction?: boolean;\n /**\n * Whether to support custom properties\n * \n * `bg-(--my-bg)`\n * \n * @example\n * ```\n * supportsCustomProperty: true\n * ```\n */\n supportsCustomProperty?: boolean;\n /**\n * Whether to support negative values\n * \n * `-m-4`\n * \n * @example\n * ```\n * supportsNegative: true\n * ```\n */\n supportsNegative?: boolean;\n /**\n * Whether to support opacity values\n */\n supportsOpacity?: boolean;\n /**\n * The handler function that processes values\n * \n * @example\n * ```\n * handle: (value, ctx, token, extra) => {\n * return [decl('background-color', value)];\n * }\n * ```\n * \n * @param value The value to process\n * @param ctx The context\n * @param token The parsed utility\n * @param extra The extra metadata\n * \n * @returns {AstNode[] | null | undefined} The AST nodes or null | undefined\n */\n handle?: (value: string, ctx: Context, token: ParsedUtility, extra?: FunctionalUtilityExtra) => AstNode[] | null | undefined;\n /**\n * The handler function that processes bare values\n * \n * @example\n * ```\n * handleBareValue: ({ value }) => isPositiveInteger(value) ? value : null,\n * ```\n * \n * @param args The arguments\n * @param args.value The value to process\n * @param args.ctx The context\n * @param args.token The parsed utility\n * @param args.extra The extra metadata\n * \n * @returns {string | null | undefined} The processed value or null | undefined\n */\n handleBareValue?: (args: { value: string; ctx: Context; token: ParsedUtility, extra?: FunctionalUtilityExtra }) => string | null | undefined;\n /**\n * The handler function that processes negative bare values\n * \n * @example\n * ```\n * handleNegativeBareValue: ({ value }) => isPositiveInteger(value) ? value : null,\n * ```\n */\n handleNegativeBareValue?: (args: { value: string; ctx: Context; token: ParsedUtility, extra?: FunctionalUtilityExtra }) => string | null | undefined;\n\n /**\n * The handler function that processes custom property values\n * \n * \n * @example\n * ```\n * handleCustomProperty: (value, ctx, token, extra) => [decl('background-color', value)],\n * ```\n * \n * @param args The arguments\n * @param args.value The value to process\n * @param args.ctx The context\n * @param args.token The parsed utility\n * @param args.extra The extra metadata\n * \n * @returns {AstNode[] | null | undefined} The AST nodes or null | undefined\n */\n handleCustomProperty?: (value: string, ctx: Context, token: ParsedUtility, extra?: FunctionalUtilityExtra) => AstNode[] | null | undefined;\n /**\n * The description of the utility\n * \n * @example\n * ```\n * description: 'Custom utility description',\n * ```\n */\n description?: string;\n /**\n * The category of the utility\n * \n * It is used to group utilities in the documentation and styles\n * \n * \n * @example\n * ```\n * category: 'background',\n * ```\n */\n category?: string;\n /**\n * The priority of the utility\n * \n * It is used to sort utilities in the styles\n * \n * @example\n * ```\n * priority: 10,\n * ```\n * \n * The higher the number, the higher the priority\n * \n * @default 0\n */\n priority?: number;\n}\n\n/**\n * functionalUtility: A helper that registers dynamic utilities (theme, arbitrary, custom, negative, fraction, etc.) directly\n *\n * Example:\n * functionalUtility({\n * name: 'z',\n * supportsNegative: true,\n * themeKeys: ['--z-index'],\n * handleBareValue: ({ value }) => isPositiveInteger(value) ? value : null,\n * handle: (value) => [decl('z-index', value)],\n * description: 'z-index utility',\n * category: 'layout',\n * });\n */\nexport function functionalUtility(opts: FunctionalUtilityOptions) {\n registerUtility({\n name: opts.name,\n match: (className: string) => className.startsWith(opts.name + '-'),\n handler: (value, ctx, token, _options) => {\n let finalValue = value;\n const parsedUtility = token;\n const extra: FunctionalUtilityExtra = {\n opacity: token.opacity,\n };\n\n if (opts.supportsOpacity && !token.arbitrary && !token.customProperty && value.includes('/')) {\n const list = value.split('/');\n\n if (list.length >= 2) {\n extra.opacity = list.pop();\n finalValue = list.join('/');\n }\n }\n\n // 1. Arbitrary value - already parsed in parser.ts\n if (opts.supportsArbitrary && parsedUtility.arbitrary) {\n const processedValue = finalValue.replace(/_/g, ' ');\n // console.log('[functionalUtility] arbitrary', { processedValue });\n // 7. handle (custom AST generation)\n if (opts.handle) {\n const result = opts.handle(processedValue, ctx, token, extra);\n // console.log('[functionalUtility] arbitrary handle result', result);\n if (result) return result;\n }\n // 8. default decl\n if (opts.prop) {\n // console.log('[functionalUtility] arbitrary default decl', { prop: opts.prop, processedValue });\n return [decl(opts.prop, processedValue)];\n }\n return [];\n }\n // 2. Custom property - already parsed in parser.ts\n if (opts.supportsCustomProperty && parsedUtility.customProperty) {\n // console.log('[functionalUtility] customProperty', { finalValue });\n if (opts.handleCustomProperty) {\n const result = opts.handleCustomProperty(finalValue, ctx, token, extra);\n // console.log('[functionalUtility] customProperty handleCustomProperty result', result);\n return result;\n }\n const customValue = `var(${finalValue})`;\n if (opts.handle) {\n const result = opts.handle(customValue, ctx, token, extra);\n // console.log('[functionalUtility] customProperty handle result', result);\n if (result) return result;\n }\n if (opts.prop) {\n // console.log('[functionalUtility] customProperty default decl', { prop: opts.prop, customValue });\n return [decl(opts.prop, customValue)];\n }\n return [];\n }\n // 3. Theme lookup (themeKey or themeKeys)\n let themeValue: string | undefined;\n if (opts.themeKey && ctx.theme) {\n themeValue = ctx.theme(opts.themeKey, finalValue) as string;\n // console.log('[functionalUtility] themeKey lookup', { themeKey: opts.themeKey, finalValue, themeValue });\n }\n if (!themeValue && opts.themeKeys && ctx.theme) {\n for (const key of opts.themeKeys) {\n themeValue = ctx.theme(key, finalValue) as string;\n // console.log('[functionalUtility] themeKeys lookup', { key, finalValue, themeValue });\n if (themeValue !== undefined) break;\n }\n }\n if (themeValue !== undefined) {\n extra.realThemeValue = finalValue;\n finalValue = themeValue;\n if (opts.prop) {\n // console.log('[functionalUtility] themeValue default decl', { prop: opts.prop, finalValue });\n return [decl(opts.prop, finalValue)];\n }\n if (opts.handle) {\n const result = opts.handle(finalValue, ctx, token, extra);\n // console.log('[functionalUtility] themeValue handle result', result);\n if (result) return result;\n }\n return [];\n }\n // 4. Fraction value (e.g., 1/2, -2/5)\n // console.log('[functionalUtility] fraction', { value });\n if (opts.supportsFraction && /^-?\\d+\\/\\d+$/.test(value)) {\n finalValue = value;\n // console.log('[functionalUtility] fraction', { finalValue });\n }\n // 5. handleNegativeBareValue (only check negative bare value)\n if (parsedUtility.negative && opts.supportsNegative && opts.handleNegativeBareValue) {\n const bare = opts.handleNegativeBareValue({ value: String(finalValue).replace(/^-/, ''), ctx, token, extra });\n // console.log('[functionalUtility] negative bare', { bare });\n if (bare == null) return [];\n finalValue = bare;\n }\n // 6. handleBareValue (only check bare value) - only when negative is not true\n else if (opts.handleBareValue) {\n const bare = opts.handleBareValue({ value: finalValue, ctx, token, extra });\n // console.log('[functionalUtility] bare', { bare });\n if (bare == null) return [];\n finalValue = bare;\n }\n // 7. handle (custom AST generation)\n if (opts.handle) {\n // console.log('[functionalUtility] handle', { finalValue });\n const result = opts.handle(finalValue, ctx, token, extra);\n // console.log('[functionalUtility] handle result', result);\n if (result) return result;\n }\n // 8. default decl\n if (opts.prop) {\n // console.log('[functionalUtility] default decl', { prop: opts.prop, finalValue });\n return [decl(opts.prop, finalValue)];\n }\n // console.log('[functionalUtility] fallback empty', { finalValue });\n return [];\n },\n description: opts.description,\n category: opts.category,\n priority: opts.priority,\n });\n}","export interface Token {\n value: string;\n start: number;\n end: number;\n}\n\n/**\n * Tokenizes a class name string into an array of tokens\n * Only handles separation by ':' while respecting brackets and parentheses\n * \n * Examples:\n * - 'hover:bg-red-500' → [{ value: 'hover' }, { value: 'bg-red-500' }]\n * - 'bg-[#ff0000]:hover' → [{ value: 'bg-[#ff0000]' }, { value: 'hover' }]\n * - 'text-[color:var(--foo)]' → [{ value: 'text-[color:var(--foo)]' }]\n * - '!bg-[red]' → [{ value: '!bg-[red]' }]\n */\nexport function tokenize(className: string): Token[] {\n const tokens: Token[] = [];\n let current = '';\n let start = 0;\n let inBracket = 0;\n let inParen = 0;\n \n for (let i = 0; i < className.length; i++) {\n const char = className[i];\n \n // Bracket tracking\n if (char === '[') inBracket++;\n if (char === ']') inBracket--;\n if (char === '(') inParen++;\n if (char === ')') inParen--;\n \n // Separator (only when not inside brackets or parentheses)\n if (char === ':' && inBracket === 0 && inParen === 0) {\n if (current) {\n tokens.push({\n value: current,\n start,\n end: i\n });\n }\n current = '';\n start = i + 1;\n } else {\n current += char;\n }\n }\n \n // Add remaining token\n if (current) {\n tokens.push({\n value: current,\n start,\n end: className.length\n });\n }\n \n return tokens;\n} ","import type { AstNode } from '../core/ast';\nimport { ParsedModifier, ParsedUtility } from '../core/parser';\n\n/**\n * AST cache management\n */\nexport class AstCache {\n private cache = new Map<string, AstNode[]>();\n private maxSize = 1000; // Prevent memory leaks\n \n set(key: string, ast: AstNode[]): void {\n if (this.cache.size >= this.maxSize) {\n // Remove oldest entries (simple LRU)\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, ast);\n }\n \n get(key: string): AstNode[] | undefined {\n return this.cache.get(key);\n }\n \n has(key: string): boolean {\n return this.cache.has(key);\n }\n \n clear(): void {\n this.cache.clear();\n }\n \n getStats() {\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: this.cache.size / this.maxSize\n };\n }\n}\n\n// Global AST cache instance\nexport const astCache = new AstCache();\n\n/**\n * Parse result cache management\n */\nexport class ParseResultCache {\n private cache = new Map<string, { modifiers: ParsedModifier[]; utility: ParsedUtility | null }>();\n private maxSize = 2000; // Prevent memory leaks\n \n set(key: string, result: { modifiers: ParsedModifier[]; utility: ParsedUtility | null }): void {\n if (this.cache.size >= this.maxSize) {\n // Remove oldest entries (simple LRU)\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, result);\n }\n \n get(key: string): { modifiers: ParsedModifier[]; utility: ParsedUtility | null } | undefined {\n return this.cache.get(key);\n }\n \n has(key: string): boolean {\n return this.cache.has(key);\n }\n \n clear(): void {\n this.cache.clear();\n }\n \n getStats() {\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: this.cache.size / this.maxSize\n };\n }\n}\n\n// Global parse result cache instance\nexport const parseResultCache = new ParseResultCache();\n\n/**\n * Utility cache management\n */\nexport class UtilityCache {\n private cache = new Map<string, boolean>();\n private maxSize = 1000; // Prevent memory leaks\n \n set(key: string, value: boolean): void {\n if (this.cache.size >= this.maxSize) {\n // Remove oldest entries (simple LRU)\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, value);\n }\n \n get(key: string): boolean | undefined {\n return this.cache.get(key);\n }\n \n has(key: string): boolean {\n return this.cache.has(key);\n }\n \n clear(): void {\n this.cache.clear();\n }\n \n getStats() {\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: this.cache.size / this.maxSize\n };\n }\n}\n\n// Global utility cache instance\nexport const utilityCache = new UtilityCache();\n\n/**\n * Clear all caches (for context changes or testing)\n */\nexport function clearAllCaches(): void {\n astCache.clear();\n parseResultCache.clear();\n utilityCache.clear();\n // eslint-disable-next-line no-console\n console.log('[clearAllCaches] All caches cleared');\n}\n\n/**\n * WeakMap-based cache for memory optimization\n */\nexport class WeakCache<T> {\n private cache = new WeakMap<object, T>();\n private keyMap = new Map<string, object>();\n private maxSize = 1000;\n\n set(key: string, value: T): void {\n if (this.keyMap.size >= this.maxSize) {\n // Remove oldest entry\n const firstKey = this.keyMap.keys().next().value;\n if (firstKey) {\n const obj = this.keyMap.get(firstKey);\n if (obj) {\n this.cache.delete(obj);\n }\n this.keyMap.delete(firstKey);\n }\n }\n\n const obj = { key };\n this.cache.set(obj, value);\n this.keyMap.set(key, obj);\n }\n\n get(key: string): T | undefined {\n const obj = this.keyMap.get(key);\n if (obj) {\n return this.cache.get(obj);\n }\n return undefined;\n }\n\n has(key: string): boolean {\n return this.keyMap.has(key);\n }\n\n clear(): void {\n this.keyMap.clear();\n }\n\n getStats() {\n return {\n size: this.keyMap.size,\n maxSize: this.maxSize,\n hitRate: this.keyMap.size / this.maxSize\n };\n }\n}","// Types for parsed modifier and utility\nexport interface ParsedModifier {\n type: string;\n value?: string;\n negative?: boolean;\n arbitrary?: boolean;\n [key: string]: unknown;\n}\n\nexport interface ParsedUtility {\n category?: string;\n prefix: string;\n value?: string;\n arbitrary?: boolean;\n customProperty?: boolean;\n negative?: boolean;\n opacity?: string;\n priority?: number;\n important?: boolean;\n [key: string]: unknown;\n}\n\nimport { getUtility, getModifier, UtilityRegistration } from './registry';\nimport { tokenize, Token } from './tokenizer';\nimport { parseResultCache, utilityCache } from '../utils/cache';\n\n// Cache systems\n\n/**\n * Checks if a string is a utility prefix by checking against registered utilities\n * Optimized with prefix filtering and caching\n * @param str The string to check\n * @returns true if it's a utility prefix\n */\nfunction isUtilityPrefix(str: string): boolean {\n // Check cache\n if (utilityCache.has(str)) {\n return utilityCache.get(str)!;\n }\n \n const utilities = getUtility();\n const modifiers = getModifier();\n \n // 1. Fast prefix filtering (O(1) prefix check)\n const candidateUtilities = utilities.filter(util => {\n const prefix = util.name;\n return str.startsWith(prefix + '-') || str === prefix || str.startsWith(prefix);\n });\n \n // 2. Exact match check only on filtered candidates\n const isUtility = candidateUtilities.some(util => util.match(str));\n \n // 3. Filter modifiers similarly\n const candidateModifiers = modifiers.filter(mod => {\n // Use modifier name if available, otherwise extract from match function\n const modName = (mod as unknown as { name: string }).name || mod.match.toString().split('(')[0];\n return str.startsWith(modName + ':') || str === modName;\n });\n \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isModifier = candidateModifiers.some(mod => mod.match(str, {} as any));\n \n // 4. Calculate result\n const result = isUtility && !isModifier;\n \n // 5. Cache result\n utilityCache.set(str, result);\n \n return result;\n}\n\n/**\n * Parses a class name string into modifiers and utility using tokenization\n * Supports both directions:\n * - modifier:utility (traditional CSS)\n * - utility:modifier (Master CSS style)\n * \n * Examples:\n * - 'group-hover:sm:bg-[red]' → modifier:utility\n * - 'bg-red-500:hover' → utility:modifier\n * - 'text-[color:var(--foo)]' → utility only\n * \n * @param className e.g. 'group-hover:sm:bg-[red]', 'text-[color:var(--foo)]'\n * @returns { modifiers, utility }\n */\nexport function parseClassName(className: string): { modifiers: ParsedModifier[]; utility: ParsedUtility | null } {\n // Check parse result cache first\n if (parseResultCache.has(className)) {\n return parseResultCache.get(className)!;\n }\n\n // Examples: !bg-[red]\n let important = false;\n let realClassName = className;\n if (className.startsWith('!')) {\n important = true;\n realClassName = className.slice(1);\n }\n \n // 1. Tokenize string into tokens\n const tokens = tokenize(realClassName);\n // 2. Convert tokens to parsed result\n const result = parseTokens(tokens);\n if (result.utility) {\n result.utility.important = important;\n }\n \n // Cache the result\n parseResultCache.set(className, result);\n \n return result;\n}\n\n/**\n * Parses tokens into modifiers and utility\n */\nfunction parseTokens(tokens: Token[]): { modifiers: ParsedModifier[]; utility: ParsedUtility | null } {\n const modifiers: ParsedModifier[] = [];\n let utility: ParsedUtility | null = null;\n \n // Handle empty token array\n if (tokens.length === 0) {\n return { modifiers, utility: null };\n }\n \n // Determine token types and parse in both directions\n if (tokens.length === 1) {\n // utility only\n utility = parseUtility(tokens[0].value);\n } else if (tokens.length === 2) {\n const firstToken = tokens[0];\n const secondToken = tokens[1];\n const isFirstUtility = isUtilityPrefix(firstToken.value);\n \n if (isFirstUtility) {\n // utility:modifier form\n utility = parseUtility(firstToken.value);\n const parsed = parseModifier(secondToken.value);\n if (parsed) modifiers.push(parsed);\n } else {\n // modifier:utility form\n const parsed = parseModifier(firstToken.value);\n if (parsed) modifiers.push(parsed);\n utility = parseUtility(secondToken.value);\n }\n } else {\n // Multiple tokens\n // Check if the first token is a utility\n const isFirstUtility = isUtilityPrefix(tokens[0].value);\n \n if (isFirstUtility) {\n // utility:modifier:modifier form\n utility = parseUtility(tokens[0].value);\n for (let i = 1; i < tokens.length; i++) {\n const parsed = parseModifier(tokens[i].value);\n if (parsed) modifiers.push(parsed);\n }\n } else {\n // modifier:modifier:utility form\n for (let i = 0; i < tokens.length - 1; i++) {\n const parsed = parseModifier(tokens[i].value);\n if (parsed) modifiers.push(parsed);\n }\n utility = parseUtility(tokens[tokens.length - 1].value);\n }\n }\n return { modifiers, utility };\n}\n\n/**\n * Parse modifier token\n */\nfunction parseModifier(value: string): ParsedModifier | null {\n let negative = false;\n let modStr = value;\n \n if (modStr.startsWith('-')) {\n negative = true;\n modStr = modStr.slice(1);\n }\n \n // Arbitrary variant support\n if (modStr.startsWith('[') && modStr.endsWith(']')) {\n return { type: modStr, negative, arbitrary: true };\n }\n \n return { type: modStr, negative };\n}\n\nfunction nameSort(a: UtilityRegistration, b: UtilityRegistration): number {\n return b.name.length - a.name.length;\n}\n\n/**\n * Parse utility token\n */\nfunction parseUtility(value: string): ParsedUtility {\n // Examples: bg-[red], text-[color:var(--foo)], bg-(--my-bg), -m-4, -bg-[red]\n let prefix = '';\n let utilityValue = '';\n let arbitrary = false;\n let customProperty = false;\n let negative = false;\n let opacity = '';\n let category = '';\n let priority = 0;\n \n if (value.startsWith('-')) {\n negative = true;\n }\n \n // Handle arbitrary values\n if (value.includes('-[')) {\n [prefix, utilityValue] = value.split('-[');\n // Closing bracket position\n const closeIdx = utilityValue.lastIndexOf(']');\n if (closeIdx !== -1 && closeIdx < utilityValue.length - 1 && utilityValue[closeIdx + 1] === '/') {\n // If '/' follows the closing bracket, split opacity\n opacity = utilityValue.slice(closeIdx + 2); // after '/'\n utilityValue = utilityValue.slice(0, closeIdx); // keep inside brackets only\n } else {\n // If ends with ']', no opacity\n utilityValue = utilityValue.replace(/]$/, '');\n }\n arbitrary = true;\n } \n // Handle custom properties\n else if (value.includes('-(')) {\n [prefix, utilityValue] = value.split('-(');\n utilityValue = utilityValue.replace(/\\)$/, '');\n customProperty = true;\n } \n // Handle regular utilities\n else {\n const utilities = getUtility();\n const sortedUtilities = utilities.sort(nameSort);\n \n let matchedUtility = sortedUtilities.find(p => value === p.name);\n if (matchedUtility) {\n prefix = matchedUtility.name;\n utilityValue = \"\";\n negative = value.startsWith('-');\n category = matchedUtility.category!;\n priority = matchedUtility.priority!;\n } else {\n if (value.startsWith('-')) {\n negative = true;\n value = value.slice(1);\n }\n \n matchedUtility = sortedUtilities.find(p => value.startsWith(p.name + '-'));\n if (matchedUtility) {\n prefix = matchedUtility.name;\n utilityValue = value.slice(matchedUtility.name.length + 1);\n category = matchedUtility.category!;\n priority = matchedUtility.priority!;\n } else {\n const parts = value.split('-');\n prefix = parts[0];\n utilityValue = parts.slice(1).join('-');\n }\n }\n }\n \n return {\n prefix,\n value: utilityValue,\n arbitrary: !!arbitrary,\n customProperty: !!customProperty,\n negative: !!negative,\n opacity,\n category,\n priority,\n };\n}","import { type AstNode } from \"./ast\";\nimport { escapeClassName } from \"./registry\";\n\nconst importantPrefix = \"!important\";\n\n/**\n * Converts AST nodes to CSS string\n * @param ast { AstNode[] } - Array of AST nodes to convert\n * @param baseSelector { string } - Base selector for nested rules (e.g., \".parent\" for \".parent .child\")\n * @param opts { minify?: boolean } - Options for CSS generation\n * @param _indent { string } - Current indentation level for pretty formatting\n */\nfunction astToCss(\n ast: AstNode[],\n baseSelector?: string,\n opts?: { minify?: boolean, important?: boolean },\n _indent = \"\"\n): string {\n const minify = opts?.minify;\n const indent = _indent;\n const nextIndent = _indent + \" \"; // Next-level indentation: current + 2 spaces\n const important = opts?.important ?? false;\n const importantString = important ? ` ${importantPrefix}` : \"\";\n // Note: Caching is handled at a higher level (IncrementalParser); omit here\n\n // Debug logging for empty AST\n if (!ast || ast.length === 0) {\n // eslint-disable-next-line no-console\n console.warn('[astToCss] Empty AST received:', { ast, baseSelector, minify });\n return '';\n }\n\n // Deduplication logic: remove duplicates only among CSS property declarations (decl)\n // \n // How it works:\n // 1. Iterate in reverse (the last defined property wins)\n // 2. Only check duplicates for decl nodes (skip rule/at-rule)\n // 3. Consider duplicates by property name (prop)\n // \n // Current limitations:\n // - Does not dedupe rule or at-rule nodes\n // - When background.ts returns @supports + decl together, dedupe may not apply\n // - This can yield duplicate CSS rules in output\n const dedupedAst = [];\n if (Array.isArray(ast)) {\n const seenProps = new Map(); // Tracks property names already seen\n \n // Reverse iteration: keep the last defined property\n // Example: [color: red, color: blue] → keep only [color: blue]\n for (let i = ast.length - 1; i >= 0; i--) {\n const node = ast[i];\n \n if (node.type === \"decl\") {\n // Handle CSS property declaration nodes\n // node.important is not present; handle safely\n const key = node.prop; // Property name (e.g., \"color\", \"background-color\")\n \n // Skip duplicate properties\n if (seenProps.has(key)) {\n continue;\n }\n \n // Record new property\n seenProps.set(key, true);\n }\n \n // Add node to result (use unshift to preserve original order)\n dedupedAst.unshift(node);\n }\n }\n\n // Generate CSS string from deduped AST\n const result = dedupedAst\n .map((node) => {\n switch (node.type) {\n case \"decl\": {\n // Handle CSS property declaration (e.g., color: red;)\n const value = node.value;\n // node.important is absent; ignore\n if (node.prop.startsWith(\"--\")) {\n // Handle CSS custom property (e.g., --primary-color: #007bff;)\n if (minify) {\n const css = `${node.prop}: ${value}${importantString};`;\n // console.log(\"[astToCss] decl custom property minify\", css);\n return css;\n } else {\n const css = `${indent}${node.prop}: ${value}${importantString};`;\n // console.log(\"[astToCss] decl custom property pretty\", css);\n return css;\n }\n } else {\n const localIndent = minify ? \"\" : indent;\n const css = `${localIndent}${node.prop}: ${value}${importantString};`;\n return css;\n }\n }\n case \"rule\": {\n // Handle nested rule (e.g., .parent .child { ... })\n // \n // baseSelector handling logic:\n // 1. If baseSelector exists: combine to form \".parent .child\"\n // 2. If no baseSelector: keep as standalone \".child\"\n // 3. Replace '&' with baseSelector\n // 4. Pseudo selectors (e.g., :hover) append after baseSelector\n let selector = node.selector;\n \n if (baseSelector) {\n // When baseSelector exists: create nested rule\n const escBase = \".\" + escapeClassName(baseSelector); // Convert baseSelector to class form\n \n if (selector && selector.includes(\"&\")) {\n // Replace '&' with baseSelector\n // Example: \"&:hover\" → \".parent:hover\"\n selector = selector.replace(/&/g, escBase);\n } else if (!selector.startsWith(escBase)) {\n // If it does not start with baseSelector: prepend it\n selector = selector\n .split(\",\") // Handle multiple selectors separated by comma\n .map((sel) => {\n sel = sel.trim();\n \n if (sel.startsWith(\":\") || sel.startsWith(\"::\")) {\n // Pseudo selector: append directly after baseSelector\n // Example: \":hover\" → \".parent:hover\"\n return escBase + sel;\n } else {\n // Normal selector: separate with space from baseSelector\n // Example: \".child\" → \".parent .child\"\n return escBase + (sel.startsWith(\".\") ? \"\" : \" \") + sel;\n }\n })\n .join(\", \");\n }\n }\n \n // Create CSS rule\n if (minify) {\n const css = `${indent}${selector}{${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}}`;\n // console.log(\"[astToCss] rule minify\", css);\n return css;\n } else {\n const css = `${indent}${selector} {\\n${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}${indent}}`;\n // console.log(\"[astToCss] rule pretty\", css);\n return css;\n }\n }\n case \"style-rule\": {\n // Handle style-rule: top-level rule with complete selector\n // \n // baseSelector handling:\n // - Currently: pass baseSelector as-is\n // - Caveat: nested rules may not handle baseSelector correctly\n // - Example: .bg-white/60 { .nested { ... } } → .bg-white/60 .nested { ... }\n if (minify) {\n const css = `${indent}${node.selector} {${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}}`;\n // console.log(\"[astToCss] style-rule minify\", css);\n return css;\n } else {\n const css = `${indent}${node.selector} {\\n${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}${indent}}`;\n // console.log(\"[astToCss] style-rule pretty\", css, JSON.stringify(node, null, 2));\n return css;\n }\n }\n case \"at-rule\": {\n // Handle at-rule: @media, @supports, etc.\n // \n // baseSelector handling:\n // - Pass baseSelector to inner nodes of the at-rule\n // - Ensure nested rules get correct selectors\n // - Example: @media (min-width: 768px) { .parent .child { ... } }\n if (minify) {\n const css = `${indent}@${node.name} ${node.params}{${astToCss(\n node.nodes, // Recursively process inner nodes of the at-rule\n baseSelector, // Always propagate baseSelector so '&' resolves inside at-rules\n opts,\n nextIndent\n )}}`;\n // console.log(\"[astToCss] at-rule minify\", css);\n return css;\n } else {\n const css = `${indent}@${node.name} ${node.params} {\\n${astToCss(\n node.nodes, // Recursively process inner nodes of the at-rule\n baseSelector, // Always propagate baseSelector so '&' resolves inside at-rules\n opts,\n nextIndent\n )}${indent}}`;\n // console.log(\"[astToCss] at-rule pretty\", css);\n return css;\n }\n }\n case \"comment\":\n // Handle CSS comments (removed in minify mode)\n return minify ? \"\" : `${indent}/* ${node.text} */`;\n case \"raw\":\n // Handle raw CSS code (output as-is)\n return `${indent}${node.value}`;\n default:\n // eslint-disable-next-line no-console\n console.warn('[astToCss] Unknown node type:', node);\n return \"\";\n }\n })\n .filter(Boolean) // Remove empty strings\n .join(minify ? \"\" : \"\\n\"); // Join nodes (minify: no whitespace, pretty: newlines)\n\n // Add trailing newline for consistency with expected format\n const finalResult = result + (minify ? \"\" : \"\\n\");\n \n // Debug logging for empty result\n if (!finalResult || finalResult.trim() === '') {\n // eslint-disable-next-line no-console\n console.warn('[astToCss] Empty result generated:', { \n ast, \n baseSelector, \n minify, \n result, \n finalResult,\n dedupedAst \n });\n }\n \n return finalResult;\n}\n\nfunction rootToCss(nodes: AstNode[]): string {\n // console.log(\"[rootToCss] input\", { nodes });\n const result = nodes\n .map((node) => {\n const list: string[] = [];\n\n if (node.type === \"decl\") {\n list.push(`${node.prop}: ${node.value};`);\n } else if (node.type === \"at-rule\") {\n // console.log(\"[rootToCss] at-rule\", node);\n list.push(`@${node.name} ${node.params} {\n${node.nodes.map((node) => {\n // console.log(\"[rootToCss] node\", node);\n if (node.type === \"decl\") {\n return `\\t${node.prop}: ${node.value};`;\n }\n})\n.join(\"\\n\")}\n}`\n );\n }\n\n return list.join(\"\\n\");\n })\n .join(\"\\n\");\n\n // console.log(\"[rootToCss] result\", { nodes, result });\n return result;\n}\n\nexport { astToCss, rootToCss };\n","import { HasItems, HasName, HasParams, HasSelector, type AstNode, type HasNodes } from \"./ast\";\nimport { parseClassName } from \"./parser\";\nimport { astCache, parseResultCache } from \"../utils/cache\";\nimport { getUtility, getModifier } from \"./registry\";\nimport { Context } from \"./context\";\nimport { astToCss, rootToCss } from \"./astToCss\";\nimport { clearAllCaches } from \"../utils/cache\";\n\n// Failure cache for invalid class names\nconst failureCache = new Map<string, boolean>();\n\n/**\n * decl-to-root path collection function (reused in normalizeAstOrder, etc.)\n */\nexport type PathNode = Partial<AstNode>;\nexport type DeclPath = PathNode[];\n\n/**\n * collectDeclPaths\n * Collects all paths from AST tree to decl(leaf) (including variant chains).\n * - Input: AST node array\n * - Output: decl-to-root path(variant chain) array\n * - Usage: Used for path extraction for AST optimization/merging in optimizeAst, declPathToAst, etc.\n *\n * @param nodes AstNode[] - AST tree\n * @param path PathNode[] - Recursive use (initial value omitted)\n * @returns DeclPath[] - Array of paths to decl (variant chains)\n */\nexport function collectDeclPaths(\n nodes: AstNode[] = [],\n path: PathNode[] = []\n): DeclPath[] {\n let result: DeclPath[] = [];\n for (const node of nodes) {\n const curr = { ...node} as HasNodes;\n delete curr.nodes;\n\n const nodes = (node as HasNodes).nodes;\n if (node.type === \"decl\") {\n result.push([...path, curr]);\n } else if (nodes && nodes.length > 0) {\n result = result.concat(\n collectDeclPaths(nodes, [...path, curr])\n );\n }\n }\n return result;\n}\n\n// Sort criteria: at-rule > style-rule > rule > decl, depth first, sibling order preserved\nfunction getPriority(type: string): number {\n if (type === \"at-root\") return -1;\n if (type === \"at-rule\") return 0;\n if (type === \"style-rule\") return 10;\n if (type === \"rule\") return 20;\n return 30; // decl\n}\n\nconst sourcePriority: Record<string, number> = {\n media: 0, // @media\n supports: 1, // @supports\n container: 2, // @container\n responsive: 10, // sm:, md: etc.\n group: 20, // .group:hover &\n peer: 30, // .peer:focus ~ &\n dark: 40, // dark:\n universal: 50, // :is(), :where()\n data: 60, // [data-state=...]\n aria: 70, // [aria-pressed=...]\n attribute: 80, // [type=...]\n pseudo: 90, // :hover, :focus\n base: 100, // &\n starting: 110, // (root)\n};\n\nfunction getRulePriority(rule: Partial<AstNode>): number {\n return sourcePriority[rule.source || \"base\"] || 100;\n}\n\nconst mergeSelectorsBySource = (source: string, nodes: Partial<AstNode>[]) => {\n if (source === \"pseudo\") {\n // Inside → outside (reduce)\n return nodes.reduce((acc, sel) => {\n const selector = (sel as HasSelector).selector as string;\n if (acc === \"\") return selector;\n if (selector?.includes(\"&\")) return selector.replace(/&/, acc);\n return selector + \" \" + acc;\n }, \"\");\n } else {\n // Outside → inside (reduceRight)\n return nodes.reduceRight((acc, sel) => {\n const selector = (sel as HasSelector).selector as string;\n if (acc === \"\") return selector;\n if (selector?.includes(\"&\")) return selector.replace(/&/, acc);\n return selector + \" \" + acc;\n }, \"\");\n }\n};\n\n/**\n * declPathToAst\n * Converts decl-to-root path(variant chain) to actual nested AST.\n * - Input: DeclPath(variant chain)\n * - Output: Nested AstNode[]\n * - Consecutive same variants (same key) are merged, nested in outside→inside order\n *\n * @param declPath DeclPath\n * @returns AstNode[]\n */\nexport function declPathToAst(declPath: DeclPath): AstNode[] {\n if (!declPath || declPath.length === 0) return [];\n // Log type/selector/source for each node in declPath\n // 1. Separate decl (leaf) and variant chain\n const variants = declPath.slice(0, -1);\n const decl = declPath[declPath.length - 1];\n\n // 2. Keep existing sort/merge (hoist) logic\n const sortedVariants = [...variants].sort(\n (a, b) => getPriority(a.type!) - getPriority(b.type!)\n );\n\n // Add default rule handling for decl\n // 1. If first element is decl, add rule('&', [decl])\n // 2. If rule lacks '&' while child is decl, add current rule and rule('&', [decl])\n if (sortedVariants.length === 0) {\n if (decl.type === \"decl\") {\n // If first element is decl, add rule('&', [decl])\n sortedVariants.push({\n type: \"rule\",\n selector: \"&\",\n source: \"base\",\n });\n }\n } else {\n const last = sortedVariants[sortedVariants.length - 1];\n if (\n (last.type == \"at-rule\" && last.name !== \"property\") ||\n last.type == \"style-rule\" ||\n (last.type === \"rule\" && last.selector?.includes(\"&\") === false)\n ) {\n // console.log(\"[declPathToAst] add rule\", last);\n sortedVariants.push({\n type: \"rule\",\n selector: \"&\",\n source: \"base\",\n });\n }\n }\n\n const mergedVariants: typeof sortedVariants = [];\n for (const v of sortedVariants) {\n if (mergedVariants.length === 0) {\n mergedVariants.push(v);\n } else {\n const prev = mergedVariants[mergedVariants.length - 1];\n const isSame =\n v.type === prev.type &&\n ((v.type === \"at-rule\" &&\n prev.type === \"at-rule\" &&\n v.name === prev.name &&\n v.params === prev.params) ||\n ((v.type === \"rule\" || v.type === \"style-rule\") &&\n v.selector === (prev as HasSelector).selector));\n if (!isSame) {\n mergedVariants.push(v);\n }\n // else: skip(merge)\n }\n }\n // 3. Gather only rule nodes (consecutive rules only)\n const ruleSelectors: Partial<AstNode>[] = [];\n const nonRuleVariants: Partial<AstNode>[] = [];\n for (const v of mergedVariants) {\n if (v.type === \"rule\") ruleSelectors.push(v);\n else nonRuleVariants.push(v);\n }\n\n // 5. Compose selector and create a single rule\n let node: Partial<AstNode> = { ...decl };\n const sortedRuleSelectors = [...ruleSelectors].sort(\n (a, b) => getRulePriority(a) - getRulePriority(b)\n );\n if (sortedRuleSelectors.length > 0) {\n const grouped = sortedRuleSelectors.reduce((acc, rule) => {\n const key = rule.source || \"base\";\n if (!acc[key]) acc[key] = [];\n acc[key].push(rule);\n return acc;\n }, {} as Record<string, Partial<AstNode>[]>);\n // Detailed grouped log\n\n // 1. Sort by sourcePriority\n const mergedBySource = Object.entries(grouped)\n .sort(\n ([a], [b]) => (sourcePriority[a] ?? 999) - (sourcePriority[b] ?? 999)\n )\n .map(([source, nodes]) => {\n const merged = mergeSelectorsBySource(source, nodes);\n return merged;\n });\n\n // 2. Reduce from outside→inside (pseudo is always innermost)\n let acc = \"\";\n for (let i = 0; i < mergedBySource.length; i++) {\n const sel = mergedBySource[i];\n if (acc === \"\") acc = sel;\n else if (sel.includes(\"&\")) acc = sel.replace(/&/, acc);\n else acc = sel + \" \" + acc;\n }\n const finalSelector = acc;\n node = { type: \"rule\", selector: finalSelector, nodes: [node as AstNode] };\n }\n\n // 6. Nest remaining variants (e.g., at-rule) outside\n for (let i = nonRuleVariants.length - 1; i >= 0; i--) {\n node = { ...nonRuleVariants[i], nodes: [node as AstNode] };\n }\n\n return [node as AstNode];\n}\n\n/**\n * extractAtRootNodes\n * Extracts at-root nodes from AST tree and returns them as an array.\n * - Input: AstNode[]\n * - Output: AstNode[]\n * - Usage: Used in parseClassToAst for at-root node extraction\n *\n * @param nodes AstNode[]\n * @param parent AstNode\n * @param atRootNodes AstNode[]\n */\nfunction extractAtRootNodes(\n nodes: AstNode[],\n parent?: AstNode,\n atRootNodes: AstNode[] = []\n) {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (node.type === \"at-root\") {\n atRootNodes.push(node);\n delete nodes[i];\n } else if (node.type === \"rule\" || node.type === \"style-rule\") {\n extractAtRootNodes(node.nodes, node, atRootNodes);\n }\n }\n\n if (parent) {\n (parent as HasNodes).nodes = nodes.filter(Boolean) as AstNode[];\n }\n}\n\n/**\n * parseClassToAst\n * Parses className(including variant chain) to generate AST tree.\n * - Input: className(string), Context\n * - Output: AstNode[] (multiple roots possible for variant wrapping path)\n * - Perfectly supports variant wrapping structure (Cartesian product, nesting, siblings, etc.)\n * - Accumulates wrappers in wrappers and applies them from right to left.\n * - Can return multiple root asts.\n *\n * @param fullClassName string (e.g., 'sm:dark:hover:bg-red-500')\n * @param ctx Context\n * @returns AstNode[]\n *\n * @example\n * const ast = parseClassToAst('sm:dark:hover:bg-red-500', ctx);\n * // ast is an AST tree with sm, dark, hover variants nested\n */\nexport function parseClassToAst(\n fullClassName: string,\n ctx: Context\n): AstNode[] {\n // Check failure cache first\n if (failureCache.has(fullClassName)) {\n return [];\n }\n\n // Check AST cache first\n // Simpler cache key: className + context hash\n const contextHash = JSON.stringify({\n darkMode: ctx.config(\"darkMode\"),\n darkModeSelector: ctx.config(\"darkModeSelector\"),\n theme: ctx.theme,\n });\n const cacheKey = `${fullClassName}:${contextHash}`;\n if (astCache.has(cacheKey)) {\n return astCache.get(cacheKey)!;\n }\n\n const { modifiers, utility } = parseClassName(fullClassName);\n\n // console.log('[parseClassToAst] modifiers', modifiers, utility);\n\n if (!utility) {\n // eslint-disable-next-line no-console\n console.warn(`[BAROCSS] Invalid class name format: \"${fullClassName}\"`);\n failureCache.set(fullClassName, true);\n return [];\n }\n\n const utilReg = getUtility().find((u) => {\n const fullClassName = utility.value\n ? `${utility.prefix}-${utility.value}`\n : utility.prefix;\n return u.match(fullClassName);\n });\n // console.log('[parseClassToAst] utilReg', utilReg);\n if (!utilReg) {\n const utilityName = utility.value\n ? `${utility.prefix}-${utility.value}`\n : utility.prefix;\n // eslint-disable-next-line no-console\n console.warn(`[BAROCSS] Unknown utility class: \"${utilityName}\" in \"${fullClassName}\"`);\n failureCache.set(fullClassName, true);\n return [];\n }\n\n let value = utility.value;\n if (utility.negative && value) value = \"-\" + value;\n // console.log('[parseClassToAst] value', value, utility);\n let ast = utilReg.handler(value!, ctx, utility, utilReg) || [];\n\n // console.log('[parseClassToAst] ast', ast);\n\n const wrappers = [];\n const selector = \"&\";\n\n for (let i = 0; i < modifiers.length; i++) {\n const variant = modifiers[i];\n\n const plugin = getModifier().find((p) => p.match(variant.type, ctx));\n\n if (!plugin) {\n // eslint-disable-next-line no-console\n console.warn(`[BAROCSS] Unknown variant: \"${variant.type}\" in \"${fullClassName}\"`);\n continue;\n }\n\n if (plugin.wrap) {\n const items = plugin.wrap(variant, ctx);\n wrappers.push({\n type: \"wrap\",\n items: items,\n });\n continue;\n }\n if (plugin.modifySelector) {\n const result = plugin.modifySelector({\n selector,\n fullClassName,\n mod: variant,\n context: ctx,\n variantChain: modifiers,\n index: i,\n });\n if (typeof result === \"string\" && result.includes(\"&\")) {\n wrappers.push({ type: \"rule\", selector: result });\n } else if (typeof result === \"object\" && result.selector) {\n const wrappingType = result.wrappingType || \"rule\";\n wrappers.push({\n type: wrappingType,\n selector: result.selector,\n flatten: result.flatten,\n source: result.source,\n });\n } else if (Array.isArray(result)) {\n wrappers.push({\n type: \"wrap\",\n items: result.map((r) => ({\n type: r.wrappingType || \"rule\",\n selector: r.selector,\n source: r.source,\n flatten: r.flatten,\n })),\n });\n }\n }\n }\n\n // Nest wrappers in N→0 (right→left) order\n for (let i = wrappers.length - 1; i >= 0; i--) {\n const wrap = wrappers[i];\n\n if (wrap.type === \"wrap\") {\n ast = ((wrap as HasItems).items as AstNode[]).map((item) => ({\n ...item,\n nodes: Array.isArray(ast) ? ast : [ast],\n }));\n } else if (wrap.type === \"style-rule\") {\n ast = [\n {\n type: \"style-rule\",\n selector: wrap.selector!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n } else if (wrap.type === \"at-rule\") {\n ast = [\n {\n type: \"at-rule\",\n name: (wrap as HasName).name || \"media\",\n params: (wrap as HasParams).params!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n } else if (wrap.type === \"rule\") {\n ast = [\n {\n type: \"rule\",\n selector: wrap.selector!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n }\n }\n\n // console.log(\"[parseClassToAst] ast\", ast);\n\n // ast 에서 at-root 노드만 추출해서 ast 앞으로 추가\n // ast 내부에서는 at-root 노드를 제거\n // 재귀적으로 실행되어야 함\n const atRootNodes: AstNode[] = [];\n\n extractAtRootNodes(ast, undefined, atRootNodes);\n\n ast = [...atRootNodes, ...ast].filter(Boolean);\n\n // console.log(\"[parseClassToAst] ast\", ast);\n // Cache the result\n astCache.set(cacheKey, ast);\n\n return ast;\n}\n\n/**\n * Clear all AST caches (mainly for testing)\n */\nexport function clearAstCache(): void {\n clearAllCaches();\n failureCache.clear();\n}\n\n/**\n * generateCss\n * Takes multiple classNames and generates CSS for each, joining them.\n * - Input: classList(string), Context, options\n * - Output: string (result of joining multiple CSS blocks)\n * - Processes internally parseClassToAst → optimizeAst → astToCss in sequence\n * - Supports options like dedup, minify\n *\n * @param classList string (e.g., 'bg-red-500 text-lg hover:bg-blue-500')\n * @param ctx Context\n * @param opts { minify?: boolean, dedup?: boolean }\n * @returns string\n *\n * @example\n * const css = generateCss('sm:dark:hover:bg-red-500 sm:focus:bg-blue-500', ctx);\n */\nexport function generateCss(\n classList: string,\n ctx: Context,\n opts?: { minify?: boolean; dedup?: boolean }\n): string {\n const seen = new Set<string>();\n const allAtRootNodes: AstNode[] = [];\n\n const results = classList\n .split(/\\s+/)\n .filter((cls) => {\n if (!cls) return false;\n if (opts?.dedup) {\n if (seen.has(cls)) return false;\n seen.add(cls);\n }\n return true;\n })\n .map((cls) => {\n const ast = parseClassToAst(cls, ctx);\n const parsedResult = parseResultCache.get(cls);\n const cleanAst = optimizeAst(ast);\n\n cleanAst.forEach((node) => {\n if (node.type === \"at-root\") {\n allAtRootNodes.push(...node.nodes);\n }\n });\n\n // If style-rule already has a complete selector, do not pass baseSelector\n const hasStyleRule = cleanAst.some((node) => node.type === \"style-rule\");\n const css = astToCss(cleanAst, hasStyleRule ? undefined : cls, {\n minify: opts?.minify,\n important: parsedResult?.utility?.important ?? false,\n }); // Conditional baseSelector\n\n const rootCss = rootToCss(allAtRootNodes);\n const result = `${rootCss ? `:root,:host {${rootCss}}` : \"\"}${css}`;\n\n // Debug logging for empty CSS\n if (!result || result.trim() === \"\") {\n // eslint-disable-next-line no-console\n console.warn(\"[generateCss] Empty CSS generated for class:\", {\n class: cls,\n ast: cleanAst,\n hasStyleRule,\n css,\n rootCss,\n result,\n });\n }\n\n return result;\n })\n .join(opts?.minify ? \"\" : \"\\n\");\n\n if (allAtRootNodes.length > 0) {\n // eslint-disable-next-line no-console\n console.log(\"[generateCss] All collected atRoot nodes:\", allAtRootNodes);\n }\n\n // Debug logging for final result\n if (!results || results.trim() === \"\") {\n // eslint-disable-next-line no-console\n console.warn(\"[generateCss] Empty final result:\", {\n classList,\n results,\n allAtRootNodes,\n });\n }\n\n return results;\n}\n\nexport type GenerateCssRulesResult = {\n cls: string;\n ast: AstNode[];\n css: string;\n cssList: string[];\n rootCss: string;\n rootCssList: string[];\n};\n\n/**\n * Returns an array of optimized results for multiple class names with dedup/filter.\n * - Each object: { cls, ast, css }\n * - Supports minify, dedup options\n * - Applies astToCss(cleanAst, cls, opts) per class\n * @param classList string (space-separated)\n * @param ctx Context\n * @param opts { minify?: boolean; dedup?: boolean }\n * @returns Array<{ cls: string; ast: AstNode[]; css: string }>\n */\nexport function generateCssRules(\n classList: string,\n ctx: Context,\n opts?: { minify?: boolean; dedup?: boolean }\n): Array<GenerateCssRulesResult> {\n const seen = new Set<string>();\n const options = {\n minify: opts?.minify,\n dedup: opts?.dedup,\n };\n return classList\n .split(/\\s+/)\n .filter((cls) => {\n if (!cls) return false;\n if (opts?.dedup) {\n if (seen.has(cls)) return false;\n seen.add(cls);\n }\n return true;\n })\n .map((cls) => {\n // console.log(\"[generateCssRules] cls\", cls);\n const ast = parseClassToAst(cls, ctx);\n const cleanAst = optimizeAst(ast);\n\n // console.log(\"[generateCssRules] cleanAst\", cleanAst);\n\n const allAtRootNodes: AstNode[] = cleanAst\n .filter(\n (node) => node.type === \"at-root\" && !node.source\n )\n .map((node) => (node as HasNodes).nodes || [])\n .flat();\n const allCleanAst: AstNode[] = cleanAst.filter(\n (node) =>\n node.type !== \"at-root\" ||\n (node.type === \"at-root\" && node.source)\n );\n\n\n const cssList = [];\n for (const node of allCleanAst) {\n if (node.type === \"at-root\") {\n node.nodes.forEach((node) => {\n const css = astToCss([node], \"\", options);\n cssList.push(css);\n });\n } else {\n const css = astToCss([node], cls, options);\n cssList.push(css);\n }\n }\n // console.log('[generateCssRules] css', cls);\n const rootCssList = [];\n for (const node of allAtRootNodes) {\n const css = rootToCss([node]);\n rootCssList.push(css);\n }\n // console.log(\"[generateCssRules] rootCss\", rootCssList, allAtRootNodes);\n return {\n cls,\n ast: allCleanAst,\n css: cssList.join(options.minify ? \"\" : \"\\n\"),\n cssList,\n rootCss: rootCssList.join(options.minify ? \"\" : \"\\n\"),\n rootCssList,\n };\n });\n}\n\n/**\n * mergeAstTreeList\n * Takes a list of declPathToAst results (AstNode[][]), merges same at-rule(name, params) etc., and returns the final AST tree.\n * - Input: AstNode[][] (nested ASTs of multiple decl-to-root paths)\n * @returns AstNode[]\n * - Usage: Used in optimizeAst for final AST merging/optimization\n *\n * @param astList AstNode[][]\n * @returns AstNode[]\n */\nexport function mergeAstTreeList(astList: AstNode[][]): AstNode[] {\n // AstNode[][] → DeclPath[]\n const declPaths: DeclPath[] = astList.map((ast) => {\n // declPathToAst always returns [rootNode]\n const path: AstNode[] = [];\n let node = ast[0];\n while (node) {\n path.push({ ...node, nodes: undefined } as AstNode & HasNodes);\n if ((node as HasNodes).nodes && (node as HasNodes)?.nodes?.length === 1)\n node = (node as HasNodes).nodes?.[0] as AstNode;\n else break;\n }\n return path;\n });\n // Recursive merge\n function merge(declPaths: DeclPath[], depth = 0): AstNode[] {\n if (declPaths.length === 0) return [];\n if (declPaths[0].length === depth + 1) {\n // All decls remain\n return declPaths.map((path) => path[depth]) as AstNode[];\n }\n // Group by variant(type+key) at current depth\n const groupMap = new Map<string, DeclPath[]>();\n for (const path of declPaths) {\n const node = path[depth];\n let key = node.type;\n if (node.type === \"at-rule\") key += \":\" + node.name + \":\" + node.params;\n else if (node.type === \"rule\" || node.type === \"style-rule\")\n key += \":\" + node.selector;\n else key += \":\" + JSON.stringify(node);\n if (!groupMap.has(key!)) groupMap.set(key!, []);\n groupMap.get(key!)!.push(path);\n }\n // Recursive merge for each group\n const result: AstNode[] = [];\n for (const [, group] of groupMap.entries()) {\n const node = group[0][depth];\n const children = merge(group, depth + 1);\n result.push(\n children.length\n ? ({ ...node, nodes: children as AstNode[] } as AstNode & HasNodes)\n : ({ ...node } as AstNode & HasNodes)\n );\n }\n return result;\n }\n const merged = merge(declPaths);\n return merged;\n}\n/**\n * optimizeAst\n * Merges/organizes AST generated by parseClassToAst into an optimized AST tree based on decl-to-root path.\n * - Input: AstNode[] (result of parseClassToAst)\n * - Output: Optimized AST tree (AstNode[])\n * - Uses collectDeclPaths, declPathToAst, mergeAstTreeList internally\n * - Reflects all variant wrapping structures (nesting, siblings, merging, etc.)\n *\n * @param ast AstNode[]\n * @returns AstNode[]\n */\nexport function optimizeAst(ast: AstNode[]): AstNode[] {\n // console.log(\"[optimizeAst] ast\", ast);\n const declPaths = collectDeclPaths(ast);\n // console.log(\"[optimizeAst] declPaths\", declPaths);\n const astList = declPaths.map(declPathToAst);\n // console.log(\"[optimizeAst] astList\", astList);\n const merged = mergeAstTreeList(astList);\n // console.log(\"[optimizeAst] merged\", merged);\n\n return merged;\n}\n","import { parseClassName } from './parser';\nimport { parseClassToAst, generateCssRules, GenerateCssRulesResult } from './engine';\nimport type { Context } from './context';\nimport { astCache } from '../utils/cache';\n\n/**\n * Incremental parsing system for efficient class processing\n * \n * This class provides an optimized approach to CSS class processing by:\n * - Tracking processed classes to avoid redundant work\n * - Batching multiple class operations for better performance\n * - Supporting both synchronous and asynchronous processing modes\n * \n * ## Usage Patterns\n * \n * ### Universal Usage (Node.js & Browser)\n * ```typescript\n * const parser = new IncrementalParser(ctx);\n * \n * // Process classes synchronously\n * const results = parser.processClasses(['bg-blue-500', 'text-lg']);\n * \n * // Process single class\n * const result = parser.processClass('bg-red-500');\n * \n * // Get statistics\n * const stats = parser.getStats();\n * ```\n * \n * ### Browser Integration\n * ```typescript\n * const parser = new IncrementalParser(ctx);\n * const BrowserRuntime = new BrowserRuntime();\n * \n * // Process classes and manually inject CSS\n * const results = parser.processClasses(['bg-blue-500', 'text-lg']);\n * results.forEach(result => {\n * if (result.css) {\n * BrowserRuntime.insertRule(result.css);\n * }\n * });\n * \n * // Use with ChangeDetector for automatic DOM monitoring\n * const detector = new ChangeDetector(parser);\n * detector.observe(document.body, { scan: true });\n * ```\n * \n * ## Architecture\n * \n * - **IncrementalParser**: Pure CSS processing (works in Node.js and browser)\n * - **ChangeDetector**: Browser-only DOM monitoring (uses MutationObserver)\n * - **BrowserRuntime**: Browser-only CSS injection (uses DOM APIs)\n */\nexport class IncrementalParser {\n /** Set of class names that have already been processed to avoid duplicates */\n private processedClasses = new Set<string>();\n \n /** BAROCSS context for theme and utility resolution */\n private ctx: Context;\n \n /** Maximum number of classes to process in a single batch */\n private batchSize = 50;\n \n /** Debounce delay for batch processing in milliseconds */\n private debounceMs = 16;\n \n /** Set of classes waiting to be processed */\n private pendingClasses = new Set<string>();\n \n /** Timer for debounced batch processing */\n private batchTimer: number | null = null;\n\n /**\n * Create a new IncrementalParser instance\n * \n * @param ctx - BAROCSS context for theme and utility resolution\n */\n constructor(ctx: Context) {\n this.ctx = ctx;\n }\n\n /**\n * Processes a single CSS class and generates its AST and CSS representation\n * \n * This method performs the complete pipeline for a single class:\n * 1. Checks if the class has already been processed\n * 2. Parses the class name to extract utility information\n * 3. Generates the Abstract Syntax Tree (AST)\n * 4. Converts the AST to CSS rules\n * 5. Marks the class as processed to avoid future duplicates\n * \n * @param className - The CSS class name to process (e.g., 'bg-blue-500')\n * @returns Object containing AST and CSS, or null if processing failed or class was already processed\n */\n processClass(className: string): GenerateCssRulesResult | null {\n // Check if already processed\n if (this.processedClasses.has(className)) {\n // console.log('[IncrementalParser] Class already processed:', className);\n return null; // Already processed\n }\n\n try { \n // Parse class\n const parseResult = parseClassName(className);\n \n if (!parseResult.utility) {\n return null;\n }\n\n // Generate AST\n const ast = parseClassToAst(className, this.ctx);\n\n // console.log('[IncrementalParser] ast', className, ast);\n \n if (ast.length === 0) {\n // eslint-disable-next-line no-console\n console.warn('[IncrementalParser] ast is empty', className);\n return null;\n }\n\n // Generate CSS using the same method as runtime\n const rules = generateCssRules(className, this.ctx, { dedup: false });\n \n if (rules.length === 0) {\n return null;\n }\n\n const rule = rules[0];\n if (!rule.css) {\n return null;\n }\n\n // Mark as processed\n this.processedClasses.add(className);\n\n return { \n cls: className, \n ast, \n css: rule.css, \n cssList: rule.cssList, \n rootCss: rule.rootCss,\n rootCssList: rule.rootCssList\n };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('[IncrementalParser] Failed to process class:', className, error);\n return null;\n }\n }\n\n /**\n * Processes multiple CSS classes in batches for optimal performance\n * \n * This method handles multiple classes efficiently by:\n * - Filtering out already processed classes to avoid redundant work\n * - Processing classes in configurable batch sizes\n * - Returning comprehensive results for each processed class\n * \n * @param classes - Array of CSS class names to process\n * @returns Array of processing results, each containing className, AST, and CSS\n */\n processClasses(classes: string[]): Array<GenerateCssRulesResult> {\n const results: Array<GenerateCssRulesResult> = [];\n const newClasses = classes.filter(cls => !this.processedClasses.has(cls));\n\n if (newClasses.length === 0) {\n return results; // All classes already processed\n }\n\n // Process in batches for better performance\n for (let i = 0; i < newClasses.length; i += this.batchSize) {\n const batch = newClasses.slice(i, i + this.batchSize);\n \n for (const className of batch) {\n const result = this.processClass(className);\n if (result) {\n results.push(result);\n }\n };\n }\n\n return results;\n }\n\n /**\n * Adds classes to the pending queue for asynchronous batch processing\n * \n * This method is used by the ChangeDetector when new classes are discovered\n * in the DOM. Classes are queued and processed together to minimize\n * performance impact from frequent DOM mutations.\n * \n * @param classes - Array of CSS class names to queue for processing\n */\n addToPending(classes: string[]): void {\n classes.forEach(cls => this.pendingClasses.add(cls));\n this.scheduleBatchProcessing();\n }\n\n /**\n * Schedule batch processing with debouncing\n * \n * This method uses setTimeout to debounce rapid class additions\n * and process them in batches for better performance.\n */\n private scheduleBatchProcessing(): void {\n if (this.batchTimer) {\n clearTimeout(this.batchTimer);\n }\n\n if (typeof window !== 'undefined') {\n this.batchTimer = window.setTimeout(() => {\n this.processPendingClasses();\n }, this.debounceMs);\n } else {\n // In server environment, process immediately\n this.processPendingClasses();\n }\n }\n\n /**\n * Process pending classes from the queue\n * \n * This method is called by the debounced timer to process\n * all classes that have been added to the pending queue.\n */\n private processPendingClasses(): void {\n if (this.pendingClasses.size === 0) return;\n\n const classesToProcess = Array.from(this.pendingClasses);\n this.pendingClasses.clear();\n\n // Use common method for processing\n this.applyClasses(classesToProcess);\n }\n\n /**\n * Core method that processes classes and marks them as processed\n * \n * This is the common processing logic used by both pending and synchronous\n * processing methods. It:\n * 1. Processes the provided classes using the batch processor\n * 2. Marks classes as processed to prevent duplicates\n * \n * @param classes - Array of CSS class names to process\n */\n private applyClasses(classes: string[]): void {\n this.processClasses(classes);\n \n // Mark classes as processed\n classes.forEach(cls => {\n this.markProcessed(cls);\n });\n }\n\n /**\n * Returns comprehensive statistics about the incremental parser's state\n * \n * This method provides detailed metrics including:\n * - Number of processed classes\n * - Number of pending classes\n * - Cache statistics from AST and CSS caches\n * \n * @returns Object containing processing statistics and cache information\n */\n getStats() {\n return {\n processedClasses: this.processedClasses.size,\n pendingClasses: this.pendingClasses.size,\n cacheStats: {\n ast: astCache.getStats(),\n css: {} // No CSS cache, so return empty object\n }\n };\n }\n\n /**\n * Clears all processed classes and pending queue\n * \n * This method is useful when the theme or configuration changes,\n * requiring all classes to be reprocessed. It:\n * - Clears the processed classes set\n * - Clears the pending classes queue\n * - Cancels any pending batch processing timer\n */\n clearProcessed(): void {\n this.processedClasses.clear();\n this.pendingClasses.clear();\n if (this.batchTimer && typeof window !== 'undefined') {\n clearTimeout(this.batchTimer);\n this.batchTimer = null;\n }\n }\n\n /**\n * Checks if a specific class has been processed\n * \n * @param cls - The CSS class name to check\n * @returns True if the class has been processed, false otherwise\n */\n isProcessed(cls: string): boolean {\n return this.processedClasses.has(cls);\n }\n\n /**\n * Marks a class as processed to prevent future duplicate processing\n * \n * @param cls - The CSS class name to mark as processed\n */\n markProcessed(cls: string): void {\n this.processedClasses.add(cls);\n }\n\n /**\n * Process classes synchronously and update BrowserRuntime cache\n * This method is used by ChangeDetector for scan operations\n */\n processClassesSync(classes: string[]): void {\n this.applyClasses(classes);\n }\n\n /**\n * Returns all currently processed class names\n * \n * This method is useful for debugging and monitoring purposes,\n * providing visibility into which classes have been processed.\n * \n * @returns Array of all processed class names\n */\n getProcessedClasses(): string[] {\n return Array.from(this.processedClasses);\n }\n}\n","// complete color palette (OKLCH/HEX, etc.)\n// Default theme reference\n\nexport const colors = {\n inherit: 'inherit',\n current: 'currentcolor',\n transparent: 'transparent',\n black: '#000',\n white: '#fff',\n slate: {\n '50': 'oklch(98.4% 0.003 247.858)',\n '100': 'oklch(96.8% 0.007 247.896)',\n '200': 'oklch(92.9% 0.013 255.508)',\n '300': 'oklch(86.9% 0.022 252.894)',\n '400': 'oklch(70.4% 0.04 256.788)',\n '500': 'oklch(55.4% 0.046 257.417)',\n '600': 'oklch(44.6% 0.043 257.281)',\n '700': 'oklch(37.2% 0.044 257.287)',\n '800': 'oklch(27.9% 0.041 260.031)',\n '900': 'oklch(20.8% 0.042 265.755)',\n '950': 'oklch(12.9% 0.042 264.695)',\n },\n gray: {\n '50': 'oklch(98.5% 0.002 247.839)',\n '100': 'oklch(96.7% 0.003 264.542)',\n '200': 'oklch(92.8% 0.006 264.531)',\n '300': 'oklch(87.2% 0.01 258.338)',\n '400': 'oklch(70.7% 0.022 261.325)',\n '500': 'oklch(55.1% 0.027 264.364)',\n '600': 'oklch(44.6% 0.03 256.802)',\n '700': 'oklch(37.3% 0.034 259.733)',\n '800': 'oklch(27.8% 0.033 256.848)',\n '900': 'oklch(21% 0.034 264.665)',\n '950': 'oklch(13% 0.028 261.692)',\n },\n zinc: {\n '50': 'oklch(98.5% 0 0)',\n '100': 'oklch(96.7% 0.001 286.375)',\n '200': 'oklch(92% 0.004 286.32)',\n '300': 'oklch(87.1% 0.006 286.286)',\n '400': 'oklch(70.5% 0.015 286.067)',\n '500': 'oklch(55.2% 0.016 285.938)',\n '600': 'oklch(44.2% 0.017 285.786)',\n '700': 'oklch(37% 0.013 285.805)',\n '800': 'oklch(27.4% 0.006 286.033)',\n '900': 'oklch(21% 0.006 285.885)',\n '950': 'oklch(14.1% 0.005 285.823)',\n },\n neutral: {\n '50': 'oklch(98.5% 0 0)',\n '100': 'oklch(97% 0 0)',\n '200': 'oklch(92.2% 0 0)',\n '300': 'oklch(87% 0 0)',\n '400': 'oklch(70.8% 0 0)',\n '500': 'oklch(55.6% 0 0)',\n '600': 'oklch(43.9% 0 0)',\n '700': 'oklch(37.1% 0 0)',\n '800': 'oklch(26.9% 0 0)',\n '900': 'oklch(20.5% 0 0)',\n '950': 'oklch(14.5% 0 0)',\n },\n stone: {\n '50': 'oklch(98.5% 0.001 106.423)',\n '100': 'oklch(97% 0.001 106.424)',\n '200': 'oklch(92.3% 0.003 48.717)',\n '300': 'oklch(86.9% 0.005 56.366)',\n '400': 'oklch(70.9% 0.01 56.259)',\n '500': 'oklch(55.3% 0.013 58.071)',\n '600': 'oklch(44.4% 0.011 73.639)',\n '700': 'oklch(37.4% 0.01 67.558)',\n '800': 'oklch(26.8% 0.007 34.298)',\n '900': 'oklch(21.6% 0.006 56.043)',\n '950': 'oklch(14.7% 0.004 49.25)',\n },\n red: {\n '50': 'oklch(97.1% 0.013 17.38)',\n '100': 'oklch(93.6% 0.032 17.717)',\n '200': 'oklch(88.5% 0.062 18.334)',\n '300': 'oklch(80.8% 0.114 19.571)',\n '400': 'oklch(70.4% 0.191 22.216)',\n '500': 'oklch(63.7% 0.237 25.331)',\n '600': 'oklch(57.7% 0.245 27.325)',\n '700': 'oklch(50.5% 0.213 27.518)',\n '800': 'oklch(44.4% 0.177 26.899)',\n '900': 'oklch(39.6% 0.141 25.723)',\n '950': 'oklch(25.8% 0.092 26.042)',\n },\n orange: {\n '50': 'oklch(98% 0.016 73.684)',\n '100': 'oklch(95.4% 0.038 75.164)',\n '200': 'oklch(90.1% 0.076 70.697)',\n '300': 'oklch(83.7% 0.128 66.29)',\n '400': 'oklch(75% 0.183 55.934)',\n '500': 'oklch(70.5% 0.213 47.604)',\n '600': 'oklch(64.6% 0.222 41.116)',\n '700': 'oklch(55.3% 0.195 38.402)',\n '800': 'oklch(47% 0.157 37.304)',\n '900': 'oklch(40.8% 0.123 38.172)',\n '950': 'oklch(26.6% 0.079 36.259)',\n },\n amber: {\n '50': 'oklch(98.7% 0.022 95.277)',\n '100': 'oklch(96.2% 0.059 95.617)',\n '200': 'oklch(92.4% 0.12 95.746)',\n '300': 'oklch(87.9% 0.169 91.605)',\n '400': 'oklch(82.8% 0.189 84.429)',\n '500': 'oklch(76.9% 0.188 70.08)',\n '600': 'oklch(66.6% 0.179 58.318)',\n '700': 'oklch(55.5% 0.163 48.998)',\n '800': 'oklch(47.3% 0.137 46.201)',\n '900': 'oklch(41.4% 0.112 45.904)',\n '950': 'oklch(27.9% 0.077 45.635)',\n },\n yellow: {\n '50': 'oklch(98.7% 0.026 102.212)',\n '100': 'oklch(97.3% 0.071 103.193)',\n '200': 'oklch(94.5% 0.129 101.54)',\n '300': 'oklch(90.5% 0.182 98.111)',\n '400': 'oklch(85.2% 0.199 91.936)',\n '500': 'oklch(79.5% 0.184 86.047)',\n '600': 'oklch(68.1% 0.162 75.834)',\n '700': 'oklch(55.4% 0.135 66.442)',\n '800': 'oklch(47.6% 0.114 61.907)',\n '900': 'oklch(42.1% 0.095 57.708)',\n '950': 'oklch(28.6% 0.066 53.813)',\n },\n lime: {\n '50': 'oklch(98.6% 0.031 120.757)',\n '100': 'oklch(96.7% 0.067 122.328)',\n '200': 'oklch(93.8% 0.127 124.321)',\n '300': 'oklch(89.7% 0.196 126.665)',\n '400': 'oklch(84.1% 0.238 128.85)',\n '500': 'oklch(76.8% 0.233 130.85)',\n '600': 'oklch(64.8% 0.2 131.684)',\n '700': 'oklch(53.2% 0.157 131.589)',\n '800': 'oklch(45.3% 0.124 130.933)',\n '900': 'oklch(40.5% 0.101 131.063)',\n '950': 'oklch(27.4% 0.072 132.109)',\n },\n green: {\n '50': 'oklch(98.2% 0.018 155.826)',\n '100': 'oklch(96.2% 0.044 156.743)',\n '200': 'oklch(92.5% 0.084 155.995)',\n '300': 'oklch(87.1% 0.15 154.449)',\n '400': 'oklch(79.2% 0.209 151.711)',\n '500': 'oklch(72.3% 0.219 149.579)',\n '600': 'oklch(62.7% 0.194 149.214)',\n '700': 'oklch(52.7% 0.154 150.069)',\n '800': 'oklch(44.8% 0.119 151.328)',\n '900': 'oklch(39.3% 0.095 152.535)',\n '950': 'oklch(26.6% 0.065 152.934)',\n },\n emerald: {\n '50': 'oklch(97.9% 0.021 166.113)',\n '100': 'oklch(95% 0.052 163.051)',\n '200': 'oklch(90.5% 0.093 164.15)',\n '300': 'oklch(84.5% 0.143 164.978)',\n '400': 'oklch(76.5% 0.177 163.223)',\n '500': 'oklch(69.6% 0.17 162.48)',\n '600': 'oklch(59.6% 0.145 163.225)',\n '700': 'oklch(50.8% 0.118 165.612)',\n '800': 'oklch(43.2% 0.095 166.913)',\n '900': 'oklch(37.8% 0.077 168.94)',\n '950': 'oklch(26.2% 0.051 172.552)',\n },\n teal: {\n '50': 'oklch(98.4% 0.014 180.72)',\n '100': 'oklch(95.3% 0.051 180.801)',\n '200': 'oklch(91% 0.096 180.426)',\n '300': 'oklch(85.5% 0.138 181.071)',\n '400': 'oklch(77.7% 0.152 181.912)',\n '500': 'oklch(70.4% 0.14 182.503)',\n '600': 'oklch(60% 0.118 184.704)',\n '700': 'oklch(51.1% 0.096 186.391)',\n '800': 'oklch(43.7% 0.078 188.216)',\n '900': 'oklch(38.6% 0.063 188.416)',\n '950': 'oklch(27.7% 0.046 192.524)',\n },\n cyan: {\n '50': 'oklch(98.4% 0.019 200.873)',\n '100': 'oklch(95.6% 0.045 203.388)',\n '200': 'oklch(91.7% 0.08 205.041)',\n '300': 'oklch(86.5% 0.127 207.078)',\n '400': 'oklch(78.9% 0.154 211.53)',\n '500': 'oklch(71.5% 0.143 215.221)',\n '600': 'oklch(60.9% 0.126 221.723)',\n '700': 'oklch(52% 0.105 223.128)',\n '800': 'oklch(45% 0.085 224.283)',\n '900': 'oklch(39.8% 0.07 227.392)',\n '950': 'oklch(30.2% 0.056 229.695)',\n },\n sky: {\n '50': 'oklch(97.7% 0.013 236.62)',\n '100': 'oklch(95.1% 0.026 236.824)',\n '200': 'oklch(90.1% 0.058 230.902)',\n '300': 'oklch(82.8% 0.111 230.318)',\n '400': 'oklch(74.6% 0.16 232.661)',\n '500': 'oklch(68.5% 0.169 237.323)',\n '600': 'oklch(58.8% 0.158 241.966)',\n '700': 'oklch(50% 0.134 242.749)',\n '800': 'oklch(44.3% 0.11 240.79)',\n '900': 'oklch(39.1% 0.09 240.876)',\n '950': 'oklch(29.3% 0.066 243.157)',\n },\n blue: {\n '50': 'oklch(97% 0.014 254.604)',\n '100': 'oklch(93.2% 0.032 255.585)',\n '200': 'oklch(88.2% 0.059 254.128)',\n '300': 'oklch(80.9% 0.105 251.813)',\n '400': 'oklch(70.7% 0.165 254.624)',\n '500': 'oklch(62.3% 0.214 259.815)',\n '600': 'oklch(54.6% 0.245 262.881)',\n '700': 'oklch(48.8% 0.243 264.376)',\n '800': 'oklch(42.4% 0.199 265.638)',\n '900': 'oklch(37.9% 0.146 265.522)',\n '950': 'oklch(28.2% 0.091 267.935)',\n },\n indigo: {\n '50': 'oklch(96.2% 0.018 272.314)',\n '100': 'oklch(93% 0.034 272.788)',\n '200': 'oklch(87% 0.065 274.039)',\n '300': 'oklch(78.5% 0.115 274.713)',\n '400': 'oklch(67.3% 0.182 276.935)',\n '500': 'oklch(58.5% 0.233 277.117)',\n '600': 'oklch(51.1% 0.262 276.966)',\n '700': 'oklch(45.7% 0.24 277.023)',\n '800': 'oklch(39.8% 0.195 277.366)',\n '900': 'oklch(35.9% 0.144 278.697)',\n '950': 'oklch(25.7% 0.09 281.288)',\n },\n violet: {\n '50': 'oklch(96.9% 0.016 293.756)',\n '100': 'oklch(94.3% 0.029 294.588)',\n '200': 'oklch(89.4% 0.057 293.283)',\n '300': 'oklch(81.1% 0.111 293.571)',\n '400': 'oklch(70.2% 0.183 293.541)',\n '500': 'oklch(60.6% 0.25 292.717)',\n '600': 'oklch(54.1% 0.281 293.009)',\n '700': 'oklch(49.1% 0.27 292.581)',\n '800': 'oklch(43.2% 0.232 292.759)',\n '900': 'oklch(38% 0.189 293.745)',\n '950': 'oklch(28.3% 0.141 291.089)',\n },\n purple: {\n '50': 'oklch(97.7% 0.014 308.299)',\n '100': 'oklch(94.6% 0.033 307.174)',\n '200': 'oklch(90.2% 0.063 306.703)',\n '300': 'oklch(82.7% 0.119 306.383)',\n '400': 'oklch(71.4% 0.203 305.504)',\n '500': 'oklch(62.7% 0.265 303.9)',\n '600': 'oklch(55.8% 0.288 302.321)',\n '700': 'oklch(49.6% 0.265 301.924)',\n '800': 'oklch(43.8% 0.218 303.724)',\n '900': 'oklch(38.1% 0.176 304.987)',\n '950': 'oklch(29.1% 0.149 302.717)',\n },\n fuchsia: {\n '50': 'oklch(97.7% 0.017 320.058)',\n '100': 'oklch(95.2% 0.037 318.852)',\n '200': 'oklch(90.3% 0.076 319.62)',\n '300': 'oklch(83.3% 0.145 321.434)',\n '400': 'oklch(74% 0.238 322.16)',\n '500': 'oklch(66.7% 0.295 322.15)',\n '600': 'oklch(59.1% 0.293 322.896)',\n '700': 'oklch(51.8% 0.253 323.949)',\n '800': 'oklch(45.2% 0.211 324.591)',\n '900': 'oklch(40.1% 0.17 325.612)',\n '950': 'oklch(29.3% 0.136 325.661)',\n },\n pink: {\n '50': 'oklch(97.1% 0.014 343.198)',\n '100': 'oklch(94.8% 0.028 342.258)',\n '200': 'oklch(89.9% 0.061 343.231)',\n '300': 'oklch(82.3% 0.12 346.018)',\n '400': 'oklch(71.8% 0.202 349.761)',\n '500': 'oklch(65.6% 0.241 354.308)',\n '600': 'oklch(59.2% 0.249 0.584)',\n '700': 'oklch(52.5% 0.223 3.958)',\n '800': 'oklch(45.9% 0.187 3.815)',\n '900': 'oklch(40.8% 0.153 2.432)',\n '950': 'oklch(28.4% 0.109 3.907)',\n },\n rose: {\n '50': 'oklch(96.9% 0.015 12.422)',\n '100': 'oklch(94.1% 0.03 12.58)',\n '200': 'oklch(89.2% 0.058 10.001)',\n '300': 'oklch(81% 0.117 11.638)',\n '400': 'oklch(71.2% 0.194 13.428)',\n '500': 'oklch(64.5% 0.246 16.439)',\n '600': 'oklch(58.6% 0.253 17.585)',\n '700': 'oklch(51.4% 0.222 16.935)',\n '800': 'oklch(45.5% 0.188 13.697)',\n '900': 'oklch(41% 0.159 10.272)',\n '950': 'oklch(27.1% 0.105 12.094)',\n },\n}; ","// complete spacing scale\n// Default theme reference\n\nexport const spacing = {\n px: '1px',\n 0: '0px',\n 0.5: '0.125rem',\n 1: '0.25rem',\n 1.5: '0.375rem',\n 2: '0.5rem',\n 2.5: '0.625rem',\n 3: '0.75rem',\n 3.5: '0.875rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n 14: '3.5rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 28: '7rem',\n 32: '8rem',\n 36: '9rem',\n 40: '10rem',\n 44: '11rem',\n 48: '12rem',\n 52: '13rem',\n 56: '14rem',\n 60: '15rem',\n 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n 112: '28rem',\n 128: '32rem',\n}; ","// complete borderRadius scale\n// Default theme reference\n\nexport const borderRadius = {\n none: '0px',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n}; ","// Complete fontSize scale\n// Default theme reference\n\nexport const fontSize = {\n xs: ['0.75rem', 'calc(1 / 0.75)'],\n sm: ['0.875rem', 'calc(1.25 / 0.875)'],\n base: ['1rem', 'calc(1.5 / 1)'],\n lg: ['1.125rem', 'calc(1.75 / 1.125)'],\n xl: ['1.25rem', 'calc(1.75 / 1.25)'],\n '2xl': ['1.5rem', 'calc(2 / 1.5)'],\n '3xl': ['1.875rem', 'calc(2.25 / 1.875)'],\n '4xl': ['2.25rem', 'calc(2.5 / 2.25)'],\n '5xl': ['3rem', '1'],\n '6xl': ['3.75rem', '1'],\n '7xl': ['4.5rem', '1'],\n '8xl': ['6rem', '1'],\n '9xl': ['8rem', '1'],\n}; ","// complete fontFamily list\n// Default theme reference\n\nexport const fontFamily = {\n sans: [\n 'ui-sans-serif',\n 'system-ui',\n 'sans-serif',\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol',\n 'Noto Color Emoji',\n ],\n serif: [\n 'ui-serif',\n 'Georgia',\n 'Cambria',\n 'Times New Roman',\n 'Times',\n 'serif',\n ],\n mono: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n 'Liberation Mono',\n 'Courier New',\n 'monospace',\n ],\n}; ","// complete fontWeight scale\n// Default theme reference\n\nexport const fontWeight = {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n}; ","// complete lineHeight scale\n// Default theme reference\n\nexport const lineHeight = {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n 3: '.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n}; ","// Complete boxShadow map\n// Default theme reference\n\nexport const boxShadow = {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px 0 rgb(0 0 0 / 0.06)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -1px rgb(0 0 0 / 0.06)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -2px rgb(0 0 0 / 0.05)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 10px 10px -5px rgb(0 0 0 / 0.04)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n}; ","// complete zIndex scale\n// Default theme reference\n\nexport const zIndex = {\n auto: 'auto',\n 0: '0',\n 10: '10',\n 20: '20',\n 30: '30',\n 40: '40',\n 50: '50',\n}; ","// complete opacity scale\n// Default theme reference\n\nexport const opacity = {\n 0: '0',\n 5: '0.05',\n 10: '0.1',\n 20: '0.2',\n 25: '0.25',\n 30: '0.3',\n 40: '0.4',\n 50: '0.5',\n 60: '0.6',\n 70: '0.7',\n 75: '0.75',\n 80: '0.8',\n 90: '0.9',\n 95: '0.95',\n 100: '1',\n}; ","// complete transitionProperty map\n// Default theme reference\n\nexport const transitionProperty = {\n none: 'none',\n all: 'all',\n DEFAULT: 'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n opacity: 'opacity',\n shadow: 'box-shadow',\n transform: 'transform',\n}; ","// complete transitionTimingFunction scale\n// Default theme reference\n\nexport const transitionTimingFunction = {\n DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n 'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n}; ","// complete transitionDuration scale\n// Default theme reference\n\nexport const transitionDuration = {\n DEFAULT: '150ms',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n}; ","// complete transitionDelay scale\n// Default theme reference\n\nexport const transitionDelay = {\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n}; ","// animation preset\n// default theme reference\n\nexport const animations = {\n spin: 'spin 1s linear infinite',\n ping: 'ping 1s cubic-bezier(0,0,0.2,1) infinite',\n pulse: 'pulse 2s cubic-bezier(0.4,0,0.6,1) infinite',\n bounce: 'bounce 1s infinite',\n}; ","// keyframes preset\n// default theme reference\n\nexport const keyframes = {\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n ping: {\n \"75%\": {\n transform: 'scale(2)',\n opacity: '0',\n },\n \"100%\": {\n transform: 'scale(2)',\n opacity: '0',\n },\n },\n pulse: {\n \"50%\": {\n opacity: '0.5',\n },\n },\n bounce: {\n \"0%\": {\n transform: 'translateY(-25%)',\n 'animation-timing-function': 'cubic-bezier(0.8,0,1,1)',\n },\n \"100%\": {\n transform: 'none',\n 'animation-timing-function': 'cubic-bezier(0,0,0.2,1)',\n },\n },\n}; ","// animationVars preset\n// default theme reference\nimport { animations } from './animations';\n\nexport const animationVars = {\n '--animate-spin': animations.spin,\n '--animate-ping': animations.ping,\n '--animate-pulse': animations.pulse,\n '--animate-bounce': animations.bounce,\n}; ","// responsive design documentation\n\nexport const breakpoints = {\n sm: '40rem',\n md: '48rem',\n lg: '64rem',\n xl: '80rem',\n '2xl': '96rem',\n};","// responsive design documentation\n\nexport const container = {\n '3xs': '16rem',\n '2xs': '18rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n};","// complete letterSpacing scale\n// Default theme reference\n\nexport const letterSpacing = {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0em',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n}; ","export const blur = {\n DEFAULT: '0px',\n sm: '4px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n '2xl': '24px',\n '3xl': '32px',\n '4xl': '40px',\n '5xl': '48px',\n};","// default theme structure implemented to closely match reference\n// Default theme reference\n\nimport { colors } from './colors';\nimport { spacing } from './spacing';\nimport { borderRadius } from './border-radius';\nimport { fontSize } from './font-size';\nimport { fontFamily } from './font-family';\nimport { fontWeight } from './font-weight';\nimport { lineHeight } from './line-height';\nimport { boxShadow } from './box-shadow';\nimport { zIndex } from './z-index';\nimport { opacity } from './opacity';\nimport { transitionProperty } from './transition-property';\nimport { transitionTimingFunction } from './transition-timing-function';\nimport { transitionDuration } from './transition-duration';\nimport { transitionDelay } from './transition-delay';\nimport { animations } from './animations';\nimport { keyframes } from './keyframes';\nimport { animationVars } from './animation-vars';\nimport { breakpoints } from './breakpoints';\nimport { container } from './container';\nimport { letterSpacing } from './letter-spacing';\nimport { blur } from './blur';\n\nexport interface UserTheme {\n [key: string]: unknown;\n}\n\nexport const defaultTheme = {\n colors,\n spacing,\n borderRadius,\n breakpoints,\n container,\n fontSize,\n fontFamily,\n fontWeight,\n letterSpacing,\n lineHeight,\n boxShadow,\n zIndex,\n opacity,\n transitionProperty,\n transitionTimingFunction,\n transitionDuration,\n transitionDelay,\n animations,\n keyframes,\n animationVars,\n blur,\n} as UserTheme; ","// Collection of converters from theme categories to CSS variables (v4 style)\n// Each function takes a category theme object and returns Record<string, string>\n// Namespace/naming rules aligned with v4\n\nimport type { Theme } from './context';\n\n// Global CSS variable prefix helper\nlet CSS_VAR_PREFIX = '--bcss-';\n\nfunction normalizePrefix(prefix: string): string {\n let p = prefix.trim();\n if (!p.startsWith('--')) p = `--${p}`;\n if (!p.endsWith('-')) p = `${p}-`;\n return p;\n}\n\nexport function setVarPrefix(prefix: string | undefined): void {\n if (typeof prefix !== 'string' || prefix.trim() === '') {\n CSS_VAR_PREFIX = '--bcss-';\n return;\n }\n CSS_VAR_PREFIX = normalizePrefix(prefix);\n}\n\nexport function getVarName(key: string): string {\n return `${CSS_VAR_PREFIX}${key}`;\n}\n\n// Aliases for brevity\nexport const varName = getVarName;\nexport function v(key: string): string { return getVarName(key); }\n\nfunction escapeKey(key: string): string {\n return key.replace('.', '\\\\.');\n}\n\n/**\n * colors: { blue: { 500: '#123456' }, red: { 500: '#ff0000' } }\n * → { '--color-blue-500': '#123456', '--color-red-500': '#ff0000' }\n */\nexport function colorsToCssVars(colors?: Record<string, unknown>): Record<string, string> {\n if (!colors) return {};\n const result: Record<string, string> = {};\n function walk(obj: Record<string, unknown>, prefix: string[] = []) {\n for (const key in obj) {\n const value = obj[key] as unknown;\n if (typeof value === 'object' && value !== null) {\n walk(value as Record<string, unknown>, [...prefix, key]);\n } else {\n const varName = '--color-' + [...prefix, key].join('-');\n result[varName] = value as string;\n }\n }\n }\n walk(colors);\n return result;\n}\n\n/**\n * boxShadow: { lg: '0 10px 15px ...', ... }\n * → { '--shadow-lg': '...' }\n */\nexport function boxShadowToCssVars(boxShadow?: Record<string, unknown>): Record<string, string> {\n if (!boxShadow) return {};\n const result: Record<string, string> = {};\n for (const key in boxShadow) {\n result[`--shadow-${key}`] = boxShadow[key] as string;\n }\n return result;\n}\n\n/**\n * fontSize: { xs: ['0.75rem', '1rem'], ... }\n * → { '--text-xs': '0.75rem', '--text-xs--line-height': '1rem' }\n */\nexport function fontSizeToCssVars(fontSize?: Record<string, unknown>): Record<string, string> {\n if (!fontSize) return {};\n const result: Record<string, string> = {};\n for (const key in fontSize) {\n const value = fontSize[key] as unknown;\n if (Array.isArray(value)) {\n result[`--text-${key}`] = value[0] as string;\n if (value[1]) result[`--text-${key}--line-height`] = value[1];\n } else {\n result[`--text-${key}`] = value as string;\n }\n }\n // console.log('[fontSizeToCssVars] result', result);\n return result;\n}\n\n/**\n * fontWeight: { normal: '400', ... }\n * → { '--font-weight-normal': '400' }\n */\nexport function fontWeightToCssVars(fontWeight?: Record<string, unknown>): Record<string, string> {\n if (!fontWeight) return {};\n const result: Record<string, string> = {};\n for (const key in fontWeight) {\n result[`--font-weight-${key}`] = fontWeight[key] as string;\n }\n return result;\n}\n\n/**\n * fontFamily: { sans: ['ui-sans-serif', ...], ... }\n * → { '--font-sans-0': 'ui-sans-serif', ... }\n */\nexport function fontFamilyToCssVars(fontFamily?: Record<string, unknown>): Record<string, string> {\n if (!fontFamily) return {};\n const result: Record<string, string> = {};\n for (const key in fontFamily) {\n const value = fontFamily[key] as unknown;\n if (Array.isArray(value)) {\n result[`--font-${key}`] = value.join(', ');\n } else {\n result[`--font-${key}`] = value as string;\n }\n }\n return result;\n}\n\n/**\n * letterSpacing: { tight: '0.05em', ... }\n * → { '--letter-spacing-tight': '0.05em' }\n */\nexport function letterSpacingToCssVars(letterSpacing?: Record<string, unknown>): Record<string, string> {\n if (!letterSpacing) return {};\n const result: Record<string, string> = {};\n for (const key in letterSpacing) {\n result[`--letter-spacing-${key}`] = letterSpacing[key] as string;\n }\n return result;\n}\n\n/**\n * spacing: { 0: '0px', 1: '0.25rem', ... }\n * → { '--spacing-0': '0px', '--spacing-1': '0.25rem', ... }\n */\nexport function spacingToCssVars(spacing?: Record<string, unknown>): Record<string, string> {\n if (!spacing) return {};\n const result: Record<string, string> = {};\n for (const key in spacing) {\n result[`--spacing-${escapeKey(key)}`] = spacing[key] as string;\n }\n return result;\n}\n\n/**\n * borderRadius: { xl: '0.75rem', ... }\n * → { '--radius-xl': '0.75rem' }\n */\nexport function borderRadiusToCssVars(borderRadius?: Record<string, unknown>): Record<string, string> {\n if (!borderRadius) return {};\n const result: Record<string, string> = {};\n for (const key in borderRadius) {\n result[`--radius-${escapeKey(key)}`] = borderRadius[key] as string;\n }\n return result;\n}\n\n/**\n * zIndex: { 10: '10', ... }\n * → { '--z-10': '10' }\n */\nexport function zIndexToCssVars(zIndex?: Record<string, unknown>): Record<string, string> {\n if (!zIndex) return {};\n const result: Record<string, string> = {};\n for (const key in zIndex) {\n result[`--z-${escapeKey(key)}`] = String(zIndex[key] as number);\n }\n return result;\n}\n\n/**\n * opacity: { 50: '0.5', ... }\n * → { '--opacity-50': '0.5' }\n */\nexport function opacityToCssVars(opacity?: Record<string, unknown>): Record<string, string> {\n if (!opacity) return {};\n const result: Record<string, string> = {};\n for (const key in opacity) {\n result[`--opacity-${escapeKey(key)}`] = String(opacity[key] as number);\n }\n return result;\n}\n\n/**\n * animations: { spin: 'spin 1s linear infinite', ... }\n * → { '--animate-spin': 'spin 1s linear infinite' }\n */\nexport function animationToCssVars(animations?: Record<string, unknown>): Record<string, string> {\n if (!animations) return {};\n const result: Record<string, string> = {};\n for (const key in animations) {\n result[`--animate-${escapeKey(key)}`] = animations[key] as string;\n }\n return result;\n}\n\n/**\n * keyframes: { spin: { 'to': { transform: 'rotate(360deg)' } }, ... }\n * → Requires separate @keyframes block generation (variable conversion omitted here)\n */\nexport function keyframesToCss(keyframes?: Record<string, unknown>): string {\n if (!keyframes) return '';\n let css = '';\n for (const name in keyframes) {\n const frames = keyframes[name] as unknown;\n css += `@keyframes ${name} {\\n`;\n for (const step in frames as Record<string, unknown>) {\n css += ` ${step} {`;\n const props = (frames as Record<string, unknown>)[step] as Record<string, unknown>;\n for (const prop in props) {\n css += ` ${prop}: ${props[prop] as string};`;\n }\n css += ' }\\n';\n }\n css += '}\\n';\n }\n return css;\n}\n\n/**\n * transition: { duration: '150ms', ... }\n * → { '--transition-duration': '150ms' }\n */\nexport function transitionTimingFunctionToCssVars(transition: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in transition) {\n\n if (key === 'DEFAULT') {\n result[`--default-transition-timing-function`] = transition[key];\n } else {\n result[`--transition-timing-function-${escapeKey(key)}`] = transition[key];\n }\n }\n return result;\n}\n\n/**\n * transitionDuration: { DEFAULT: '150ms', ... }\n * → { '--default-transition-duration': '150ms' }\n */\nexport function transitionDurationToCssVars(transitionDuration: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in transitionDuration) {\n if (key === 'DEFAULT') {\n result[`--default-transition-duration`] = transitionDuration[key];\n } else {\n result[`--transition-duration-${escapeKey(key)}`] = transitionDuration[key];\n }\n }\n return result;\n}\n\n\n/**\n * transitionDelay: { DEFAULT: '0ms', ... }\n * → { '--default-transition-delay': '0ms' }\n */\nexport function transitionDelayToCssVars(transitionDelay: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const key in transitionDelay) {\n if (key === 'DEFAULT') {\n result[`--default-transition-delay`] = transitionDelay[key];\n } else {\n result[`--transition-delay-${escapeKey(key)}`] = transitionDelay[key];\n }\n } \n return result;\n}\n\n/**\n * blur: { DEFAULT: '0px', ... }\n * → { '--default-blur': '0px' }\n */\nexport function blurToCssVars(blur: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in blur) {\n if (key === 'DEFAULT') {\n result[`--default-blur`] = blur[key];\n } else {\n result[`--blur-${escapeKey(key)}`] = blur[key];\n }\n }\n return result;\n}\n\n/**\n * container: { 1: '1rem', ... }\n * → { '--container-1': '1rem' }\n */\nexport function containerToCssVars(container: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in container) {\n result[`--container-${escapeKey(key)}`] = container[key];\n }\n return result;\n}\n\n/**\n * themeToCssVarsAll: merge CSS variables from major theme categories\n */\nexport function themeToCssVarsAll(theme: Theme): Record<string, string> {\n return {\n ...colorsToCssVars(theme.colors! as Record<string, unknown>),\n ...boxShadowToCssVars(theme.boxShadow! as Record<string, unknown>),\n ...fontSizeToCssVars(theme.fontSize! as Record<string, unknown>),\n ...fontWeightToCssVars(theme.fontWeight! as Record<string, unknown>),\n ...fontFamilyToCssVars(theme.fontFamily! as Record<string, unknown>),\n ...letterSpacingToCssVars(theme.letterSpacing! as Record<string, unknown>),\n '--spacing': (theme.spacing! as Record<string, unknown>)['1'] as string,\n ...spacingToCssVars(theme.spacing! as Record<string, unknown>),\n ...containerToCssVars(theme.container! as Record<string, string>),\n ...borderRadiusToCssVars(theme.borderRadius! as Record<string, unknown>),\n ...zIndexToCssVars(theme.zIndex! as Record<string, unknown>),\n ...opacityToCssVars(theme.opacity! as Record<string, unknown>),\n ...animationToCssVars(theme.animations! as Record<string, unknown>),\n ...transitionTimingFunctionToCssVars(theme.transitionTimingFunction! as Record<string, string>),\n ...transitionDurationToCssVars(theme.transitionDuration! as Record<string, string>),\n ...transitionDelayToCssVars(theme.transitionDelay! as Record<string, string>),\n ...blurToCssVars(theme.blur! as Record<string, string>),\n // keyframes handled separately\n };\n}\n\n/**\n * toCssVarsBlock: convert Record<string, string> → :root { ... } CSS block string\n */\nexport function toCssVarsBlock(vars: Record<string, string>, extra: string = ''): string {\n return ':root,:host {\\n' + Object.entries(vars).map(([k, v]) => ` ${k}: ${v};`).join('\\n') + '\\n}\\n' + extra + '\\n';\n} ","// BaroCSS Preflight CSS as TypeScript variables\n// This eliminates the need for ?raw imports and improves compatibility\n\nexport const preflightMinimalCSS = `\n/* BaroCSS Preflight - Minimal Reset */\n/* ================================= */\n\n/* Box sizing rules */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Remove default margin and padding */\n* {\n margin: 0;\n padding: 0;\n}\n\n/* Set core body defaults */\nbody {\n min-height: 100vh;\n scroll-behavior: smooth;\n text-rendering: optimizeSpeed;\n line-height: 1.5;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n list-style: none;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n max-width: 100%;\n display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n \n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n`;\n\nexport const preflightStandardCSS = `\n/* BaroCSS Preflight - Standard Reset */\n/* ================================== */\n\n/* Box sizing rules */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Remove default margin and padding */\n* {\n margin: 0;\n padding: 0;\n}\n\n/* Set core body defaults */\nbody {\n min-height: 100vh;\n scroll-behavior: smooth;\n text-rendering: optimizeSpeed;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n list-style: none;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n max-width: 100%;\n display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n \n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* Additional standard resets */\nhtml {\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n}\n\n/* Remove the gray background on active links in IE 10 */\na {\n background-color: transparent;\n}\n\n/* Add the correct font weight in Chrome, Edge, and Safari */\nb,\nstrong {\n font-weight: bolder;\n}\n\n/* Prevent sub and sup elements from affecting the line height */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Improve media defaults */\nsvg {\n vertical-align: middle;\n}\n\n/* Remove border on iframe */\niframe {\n border: 0;\n}\n\n/* Table defaults */\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n/* Form element defaults */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Remove the inner border and padding in Firefox */\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/* Restore the focus styles unset by the previous rule */\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Correct the padding in Firefox */\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/* Remove padding so developers aren't caught out when they zero out fieldset elements */\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\n/* Add the correct vertical alignment in Chrome, Firefox, and Opera */\nprogress {\n vertical-align: baseline;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n`;\n\nexport const preflightFullCSS = `\n/* BaroCSS Preflight - Full Reset */\n/* =============================== */\n\n/* Box sizing rules */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Remove default margin and padding */\n* {\n margin: 0;\n padding: 0;\n}\n\n/* Set core body defaults */\nbody {\n min-height: 100vh;\n scroll-behavior: smooth;\n text-rendering: optimizeSpeed;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n list-style: none;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n max-width: 100%;\n display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n \n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure, \nfooter, header, hgroup, menu, nav, section {\n display: block;\n}\n\n/* Additional full resets */\nhtml {\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n}\n\n/* Remove the gray background on active links in IE 10 */\na {\n background-color: transparent;\n text-decoration: none;\n color: inherit;\n}\n\n/* Add the correct font weight in Chrome, Edge, and Safari */\nb,\nstrong {\n font-weight: bolder;\n}\n\n/* Prevent sub and sup elements from affecting the line height */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Improve media defaults */\nsvg {\n vertical-align: middle;\n}\n\n/* Remove border on iframe */\niframe {\n border: 0;\n}\n\n/* Table defaults */\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n/* Form element defaults */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Remove the inner border and padding in Firefox */\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/* Restore the focus styles unset by the previous rule */\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Correct the padding in Firefox */\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/* Remove padding so developers aren't caught out when they zero out fieldset elements */\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\n/* Add the correct vertical alignment in Chrome, Firefox, and Opera */\nprogress {\n vertical-align: baseline;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/* Additional full reset styles */\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\n/* Add the correct font size in all browsers */\nsmall {\n font-size: 80%;\n}\n\n/* Prevent overflow of the container in all browsers */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Add the correct display in IE 9 */\naudio,\nvideo {\n display: inline-block;\n}\n\n/* Add the correct display in IE */\ntemplate {\n display: none;\n}\n\n/* Hidden attribute */\n[hidden] {\n display: none;\n}\n\n/* Focus styles */\n:focus {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n}\n\n/* Skip link for accessibility */\n.skip-link {\n position: absolute;\n top: -40px;\n left: 6px;\n background: #000;\n color: white;\n padding: 8px;\n text-decoration: none;\n z-index: 100;\n}\n\n.skip-link:focus {\n top: 6px;\n}\n\n/* Print styles */\n@media print {\n *,\n *::before,\n *::after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n \n a,\n a:visited {\n text-decoration: underline;\n }\n \n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n \n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n \n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n \n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n \n thead {\n display: table-header-group;\n }\n \n tr,\n img {\n page-break-inside: avoid;\n }\n \n img {\n max-width: 100% !important;\n }\n \n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n \n h2,\n h3 {\n page-break-after: avoid;\n }\n}\n`;\n","import { defaultTheme } from \"../theme\";\nimport { keyframesToCss, themeToCssVarsAll, toCssVarsBlock, setVarPrefix } from \"./cssVars\";\nimport { clearAllCaches } from \"../utils/cache\";\nimport { preflightMinimalCSS, preflightStandardCSS, preflightFullCSS } from \"../css/preflight\";\n\ntype PreflightLevel = 'minimal' | 'standard' | 'full' | true | false;\n\ntype Function = (...args: unknown[]) => unknown;\ntype ContextRecord = Record<string, unknown>;\n\nexport function getPreflightCSS(level: PreflightLevel = true): string {\n if (level === 'minimal') {\n return preflightMinimalCSS;\n } else if (level === 'standard') {\n return preflightStandardCSS;\n } else if (level === 'full') {\n return preflightFullCSS;\n } else if (level === true) {\n return preflightFullCSS;\n } else if (level === false) {\n return '';\n }\n return '';\n}\n\n// Types for theme/config/context\nexport interface Theme {\n extend?: Theme;\n [namespace: string]: unknown;\n}\n\nexport interface Config {\n prefix?: string; // prefix for class names, default is 'barocss-'\n cssVarPrefix?: string; // prefix for generated CSS custom properties, default '--bcss-'\n /**\n * Modern dark mode strategy\n * - 'media': uses @media (prefers-color-scheme: dark)\n * - 'class': uses .dark selector\n * - string[]: custom selectors (e.g. ['class', '[data-theme=\"dark\"]'])\n */\n darkMode?: 'media' | 'class' | string[];\n theme?: Theme;\n presets?: { theme: Theme }[];\n\n /**\n * Whether to include preflight CSS\n * - 'minimal': Minimal preflight CSS\n * - 'standard': Standard preflight CSS\n * - 'full': Full preflight CSS\n * - true: Full preflight CSS (default)\n * - false: No preflight CSS\n * \n * default: true (full preflight)\n */\n preflight?: PreflightLevel;\n /**\n * Whether to clear all caches when context is created/changed\n * - true (default): Clear all caches on context change\n * - false: Keep existing caches\n */\n clearCacheOnContextChange?: boolean;\n [key: string]: unknown;\n}\n\nexport const defaultConfig: Config = {\n prefix: 'barocss-',\n darkMode: 'media', // same as default\n};\n\nexport interface Context {\n hasPreset: (category: string, preset: string) => boolean;\n theme: (...path: (string|number)[]) => unknown;\n config: (...path: (string|number)[]) => unknown;\n themeToCssVars: (prefix?: string) => string;\n // Safe API for extending theme from plugins\n extendTheme: (category: string, values: Record<string, unknown> | Function) => void;\n getPreflightCSS: (level?: PreflightLevel) => string;\n}\n\n// Deep merge utility\nexport function deepMerge<T extends Record<string, unknown>>(base: T, override: Partial<T>): T {\n const result: Record<string, unknown> = {};\n const keys = new Set([\n ...Object.keys(base || {}),\n ...Object.keys(override || {}),\n ]);\n for (const key of keys) {\n const skey = String(key);\n const baseVal = base && typeof base === 'object' ? (base as T)[skey] : undefined;\n const overrideVal = override && typeof override === 'object' ? (override as T)[skey] : undefined;\n if (\n overrideVal &&\n typeof overrideVal === 'object' &&\n !Array.isArray(overrideVal)\n ) {\n result[skey] = deepMerge(\n (typeof baseVal === 'object' && baseVal !== null) ? baseVal as T : {} as T,\n overrideVal\n );\n } else if (overrideVal !== undefined) {\n result[skey] = overrideVal;\n } else {\n result[skey] = baseVal;\n }\n }\n return result as T;\n}\n\nexport type ThemeGetter = (...path: (string|number)[]) => unknown;\n\nlet staticInProgress: Set<string> | undefined;\n\n/**\n * Modern theme getter for BAROCSS\n *\n * - Supports category-level (first path segment) function values only.\n * - If the category (e.g., 'spacing', 'colors') is a function, it will be executed with the theme getter as argument.\n * - This allows dynamic theme extension and plugin-style patterns, e.g.:\n * spacing: (theme) => ({ ...theme('spacing'), '72': '18rem' })\n * - Leaf (property) functions are NOT supported and will be ignored (returns undefined).\n * - Infinite recursion is prevented: If the exact same path is being resolved recursively (directly or indirectly), undefined is returned for that call.\n * - Category-level functions can safely call theme('category.otherKey') for dynamic references.\n * - Only true recursion on the same path is blocked.\n * - All theme lookups (theme('category.key')) will always re-execute the category function if present, ensuring dynamic resolution.\n *\n * @param themeObj - The theme object (possibly with category functions)\n * @param path - Path segments (string or number), or dot-path string (e.g. 'colors.red.500')\n * @returns The resolved theme value, or undefined if not found or if a leaf function is encountered\n *\n * @example\n * const theme = {\n * spacing: (theme) => ({ 1: '0.25rem', 2: theme('spacing.1') }),\n * };\n * themeGetter(theme, 'spacing.2'); // '0.25rem'\n *\n * @example\n * // Infinite recursion is prevented:\n * const theme = {\n * spacing: (theme) => theme('spacing.1'),\n * };\n * themeGetter(theme, 'spacing.1'); // undefined\n */\nexport function themeGetter(themeObj: Theme, ...path: (string | number)[]): unknown {\n // The theme getter function itself, passed to category functions for dynamic resolution\n const theme: ThemeGetter = (...args: (string | number)[]) => themeGetter(themeObj, ...args);\n\n // Parse the path: support both dot-path string and array of segments\n let keys: (string | number)[] = [];\n if (path.length === 1 && typeof path[0] === 'string' && path[0].includes('.')) {\n keys = path[0].split('.');\n } else {\n if (path[0] === 'colors' && typeof path[1] === 'string' && path[1].includes('-')) {\n // colors.red-500 → colors.red.500 (only for color names with numbers)\n // But custom-blue should remain as custom-blue\n const colorKey = path[1] as string;\n if (colorKey.match(/^[a-zA-Z]+-\\d+$/)) {\n // Only split if it's a pattern like \"red-500\", \"blue-600\", etc.\n keys = colorKey.split('-');\n keys = [path[0], ...keys];\n } else {\n // For custom keys like \"custom-blue\", keep as is\n keys = path;\n }\n } else {\n keys = path;\n }\n }\n if (keys.length === 0) return undefined;\n\n // Infinite recursion protection: track currently resolving full paths\n // If the exact same path is being resolved recursively, return undefined\n staticInProgress = staticInProgress || new Set();\n const pathKey = keys.join('.');\n if (staticInProgress?.has(pathKey)) return undefined;\n staticInProgress?.add(pathKey);\n\n // Get the category value (could be a function or object)\n let value = themeObj[keys[0]];\n // console.log(`[themeGetter] category '${keys[0]}' value:`, value, `type:`, typeof value);\n \n // If the category is a function, execute it with the theme getter\n // This enables dynamic theme extension and plugin-style patterns\n if (typeof value === 'function') {\n // console.log(`[themeGetter] executing category function for '${keys[0]}'`);\n value = value(theme);\n // console.log(`[themeGetter] category function result:`, value);\n }\n\n // Traverse the rest of the path (leaf keys)\n for (let i = 1; i < keys.length; i++) {\n // console.log(`[themeGetter] traversing key '${keys[i]}', current value:`, value);\n if (value == null) {\n // console.log(`[themeGetter] value is null/undefined at key '${keys[i]}'`);\n staticInProgress?.delete(pathKey);\n return undefined;\n }\n value = (value as Record<string, unknown>)[keys[i]];\n // console.log(`[themeGetter] after accessing '${keys[i]}', value:`, value);\n }\n\n staticInProgress?.delete(pathKey);\n // If the final value is a function (leaf function), do NOT execute it\n // Only category-level functions are supported; leaf functions are ignored\n if (typeof value === 'function') {\n return undefined;\n }\n\n // Return the resolved value (static or dynamically generated)\n // console.log(`[themeGetter] final result:`, value);\n return value;\n}\n\n// config getter\nexport function configGetter(config: ContextRecord, ...path: (string|number)[]): unknown {\n let keys: (string|number)[] = [];\n if (path.length === 1 && typeof path[0] === 'string' && path[0].includes('.')) {\n keys = path[0].split('.');\n } else {\n keys = path;\n }\n return keys.reduce((acc: unknown, key) => (acc ? (acc as Record<string, unknown>)[key] : undefined), config) as unknown as ContextRecord;\n}\n\n// hasPreset\nexport function hasPreset(themeObj: Theme, category: string, preset: string): boolean {\n return (themeObj[category] as string[])?.includes?.(preset) as boolean;\n}\n\n// resolveTheme\nexport function resolveTheme(config: Config): Theme {\n let theme: Theme = {};\n if (config.presets) {\n for (const preset of config.presets) {\n if (preset.theme) {\n theme = deepMerge(theme, preset.theme);\n }\n }\n }\n if (config.theme) {\n const { extend, ...overrideTheme } = config.theme as Theme;\n theme = deepMerge(theme, overrideTheme); // switch from shallowMerge to deepMerge\n if (extend) {\n theme = deepMerge(theme, extend);\n }\n }\n return theme;\n}\n\n\nexport function themeToCssVars(theme: Theme): string {\n const vars = themeToCssVarsAll(theme);\n // console.log('[themeToCssVars] vars', vars);\n const result = toCssVarsBlock(vars, `\n${keyframesToCss((theme.keyframes || {}) as Record<string, unknown>)}\n`);\n\n// console.log('[themeToCssVars] result', result);\n\n return result;\n}\n\n// createContext\nexport function createContext(configObj: Config): Context {\n // Automatically include defaultTheme as the base preset\n const configWithDefaults = {\n presets: [\n { theme: defaultTheme }, // always include defaultTheme as base preset\n ...(configObj.presets || [])\n ],\n ...configObj\n };\n // Initialize global CSS var prefix\n setVarPrefix(configWithDefaults.cssVarPrefix || '--bcss-');\n \n const themeObj = resolveTheme(configWithDefaults);\n \n // Auto-clear caches on context change (optional)\n if (configObj.clearCacheOnContextChange !== false) {\n clearAllCaches();\n }\n\n // 1. Declare ctx first as an object\n const ctx: Context = {\n hasPreset: (category: string, preset: string): boolean => {\n const result = hasPreset(themeObj, category, preset);\n // console.log(`[hasPreset] category: ${category}, preset: ${preset} =>`, result);\n return result as boolean;\n },\n theme: (...args) => {\n const result = themeGetter(themeObj, ...args);\n // console.log(`[theme] path:`, args, `=>`, result);\n return result;\n },\n config: (...args) => {\n const result = configGetter(configWithDefaults, ...args);\n // console.log(`[config] path:`, args, `=>`, result);\n return result;\n },\n themeToCssVars: () => themeToCssVars(themeObj),\n // Safe API for theme extension from plugins\n extendTheme: (category: string, values: Record<string, unknown> | Function) => {\n // console.log(`[extendTheme] category: ${category}, values:`, values);\n \n if (typeof values === 'function') {\n // If it's a function, execute with theme getter\n const themeFunction = values as (theme: ThemeGetter) => unknown;\n const result = themeFunction(ctx.theme);\n if (result && typeof result === 'object') {\n // Merge with existing values\n const existingValues = themeObj[category] || {} as Record<string, unknown>;\n themeObj[category] = {\n ...existingValues,\n ...result\n };\n // console.log(`[extendTheme] function result merged for ${category}:`, themeObj[category]);\n }\n } else if (typeof values === 'object' && values !== null && !Array.isArray(values)) {\n // Get existing category values\n const existingValues = themeObj[category] || {} as Record<string, unknown>;\n \n // Merge existing and new values\n themeObj[category] = {\n ...existingValues,\n ...values\n };\n // console.log(`[extendTheme] merged ${category}:`, themeObj[category]);\n } else {\n // console.warn(`[extendTheme] Invalid values for category ${category}:`, values);\n }\n },\n getPreflightCSS: (level: PreflightLevel = true) => {\n return getPreflightCSS(level);\n }\n };\n\n // 2. Property assignment (functions reference themeObj, configWithDefaults, etc.)\n // ctx.hasPreset = (category: string, preset: string) => {\n // const result = hasPreset(themeObj, category, preset);\n // console.log(`[hasPreset] category: ${category}, preset: ${preset} =>`, result);\n // return result;\n // };\n // ctx.theme = (...args) => {\n // const value = themeGetter(themeObj, ...args);\n // console.log(`[theme] path:`, args, '=>', value);\n // return value;\n // };\n // ctx.config = (...args) => {\n // const value = configGetter(configWithDefaults, ...args);\n // console.log(`[config] path:`, args, '=>', value);\n // return value;\n // };\n // ctx.plugins = configWithDefaults.plugins ?? [];\n // ctx.themeToCssVars = () => themeToCssVars(themeObj);\n\n return ctx;\n} ","// Value parsing helpers inspired by value-parser.ts\n\n/**\n * Extracts the value from [arbitrary] syntax, or returns null if not arbitrary.\n */\nexport function parseArbitraryValue(input: string): string | null {\n return input.startsWith('[') && input.endsWith(']') ? input.slice(1, -1) : null;\n}\n\n/**\n * Parses a fraction string (e.g., '1/2') and returns a percentage string (e.g., '50%'), or null if not a valid fraction.\n */\nexport function parseFraction(input: string): string | null {\n if (input.includes('/')) {\n const [num, denom] = input.split('/').map(Number);\n if (!isNaN(num) && !isNaN(denom) && denom !== 0) {\n return `${(num / denom) * 100}%`;\n }\n }\n return null;\n}\n\n/**\n * Returns the input if it is a valid non-negative integer string, else null.\n * \n * @example\n * parseNumber(\"10\") // \"10\"\n * parseNumber(\"-10\") // \"-10\"\n * parseNumber(\"10.5\") // \"10.5\"\n */\nexport function parseNumber(input: string): string | null {\n // Accept integers and decimals (e.g., 1, -2, 1.5, -0.25)\n return /^-?\\d+(?:\\.\\d+)?$/.test(input) ? input : null;\n}\n\n/**\n * Returns the input if it is a valid non-negative integer string, else null.\n * \n * @example\n * parseInteger(\"10\") // \"10\"\n * parseInteger(\"-10\") // null\n * parseInteger(\"10.5\") // null\n */\nexport function parseInteger(input: string): string | null {\n return /^-?\\d+$/.test(input) ? input : null;\n}\n\n/**\n * Returns the input if it is a valid length string, else null.\n */\nexport function parseLength(input: string): string | null {\n return /^\\d+(px|em|rem|vh|vw|vmin|vmax|%|in|cm|mm|pt|pc|ex|ch|fr)$/.test(input) ? input : null;\n}\n\n/**\n * Returns the input without a leading '-' if negative, else null.\n */\nexport function parseNegative(input: string): string | null {\n return input.startsWith('-') ? input.slice(1) : null;\n}\n\n/**\n * Returns the input if it is a valid CSS var() expression, else null.\n */\nexport function parseVar(input: string): string | null {\n return input.startsWith('var(') && input.endsWith(')') ? input : null;\n}\n\n/**\n * Unified parser for fraction or number, with options for percent or repeat syntax.\n * - percent: if true, returns percentage for fraction (e.g., '1/2' -> '50%')\n * - repeat: if true, returns repeat() for number (e.g., '3' -> 'repeat(3, minmax(0, 1fr))')\n */\nexport function parseFractionOrNumber(value: string, opts: { percent?: boolean; repeat?: boolean } = {}): string | null {\n if (/^\\d+$/.test(value)) {\n if (opts.repeat) return `repeat(${value}, minmax(0, 1fr))`;\n return value;\n }\n if (value.includes('/')) {\n const [numerator, denominator] = value.split('/').map(Number);\n if (!isNaN(numerator) && !isNaN(denominator) && denominator !== 0) {\n const result = numerator / denominator;\n if (opts.percent) return `${result * 100}%`;\n return result.toString();\n }\n }\n return null;\n} \n\nconst CSS_COLOR_NAMES = new Set([\n \"aliceblue\",\n \"antiquewhite\",\n \"aqua\",\n \"aquamarine\",\n \"azure\",\n \"beige\",\n \"bisque\",\n \"black\",\n \"blanchedalmond\",\n \"blue\",\n \"blueviolet\",\n \"brown\",\n \"burlywood\",\n \"cadetblue\",\n \"chartreuse\",\n \"chocolate\",\n \"coral\",\n \"cornflowerblue\",\n \"cornsilk\",\n \"crimson\",\n \"cyan\",\n \"darkblue\",\n \"darkcyan\",\n \"darkgoldenrod\",\n \"darkgray\",\n \"darkgreen\",\n \"darkgrey\",\n \"darkkhaki\",\n \"darkmagenta\",\n \"darkolivegreen\",\n \"darkorange\",\n \"darkorchid\",\n \"darkred\",\n \"darksalmon\",\n \"darkseagreen\",\n \"darkslateblue\",\n \"darkslategray\",\n \"darkslategrey\",\n \"darkturquoise\",\n \"darkviolet\",\n \"deeppink\",\n \"deepskyblue\",\n \"dimgray\",\n \"dimgrey\",\n \"dodgerblue\",\n \"firebrick\",\n \"floralwhite\",\n \"forestgreen\",\n \"fuchsia\",\n \"gainsboro\",\n \"ghostwhite\",\n \"gold\",\n \"goldenrod\",\n \"gray\",\n \"grey\",\n \"green\",\n \"greenyellow\",\n \"honeydew\",\n \"hotpink\",\n \"indianred\",\n \"indigo\",\n \"ivory\",\n \"khaki\",\n \"lavender\",\n \"lavenderblush\",\n \"lawngreen\",\n \"lemonchiffon\",\n \"lightblue\",\n \"lightcoral\",\n \"lightcyan\",\n \"lightgoldenrodyellow\",\n \"lightgray\",\n \"lightgreen\",\n \"lightgrey\",\n \"lightpink\",\n \"lightsalmon\",\n \"lightseagreen\",\n \"lightskyblue\",\n \"lightslategray\",\n \"lightslategrey\",\n \"lightsteelblue\",\n \"lightyellow\",\n \"lime\",\n \"limegreen\",\n \"linen\",\n \"magenta\",\n \"maroon\",\n \"mediumaquamarine\",\n \"mediumblue\",\n \"mediumorchid\",\n \"mediumpurple\",\n \"mediumseagreen\",\n \"mediumslateblue\",\n \"mediumspringgreen\",\n \"mediumturquoise\",\n \"mediumvioletred\",\n \"midnightblue\",\n \"mintcream\",\n \"mistyrose\",\n \"moccasin\",\n \"navajowhite\",\n \"navy\",\n \"oldlace\",\n \"olive\",\n \"olivedrab\",\n \"orange\",\n \"orangered\",\n \"orchid\",\n \"palegoldenrod\",\n \"palegreen\",\n \"paleturquoise\",\n \"palevioletred\",\n \"papayawhip\",\n \"peachpuff\",\n \"peru\",\n \"pink\",\n \"plum\",\n \"powderblue\",\n \"purple\",\n \"red\",\n \"rosybrown\",\n \"royalblue\",\n \"saddlebrown\",\n \"salmon\",\n \"sandybrown\",\n \"seagreen\",\n \"seashell\",\n \"sienna\",\n \"silver\",\n \"skyblue\",\n \"slateblue\",\n \"slategray\",\n \"slategrey\",\n \"snow\",\n \"springgreen\",\n \"steelblue\",\n \"tan\",\n \"teal\",\n \"thistle\",\n \"tomato\",\n \"turquoise\",\n \"violet\",\n \"wheat\",\n \"white\",\n \"whitesmoke\",\n \"yellow\",\n \"yellowgreen\",\n]);\n\n/**\n * Returns the input if it is a valid color string, else null.\n *\n * #rgb, #rgba, #rrggbb, #rrggbbaa, rgb(r, g, b), rgb(r, g, b, a), hsl(h, s, l), hsl(h, s, l, a), hwb(h, w, b), hwb(h, w, b, a), lab(l, a, b), lab(l, a, b, a), lch(l, c, h), lch(l, c, h, a), oklab(l, a, b), oklab(l, a, b, a), oklch(l, c, h), oklch(l, c, h, a), color-mix(in oklab, var(--color-blue-500) 60%, transparent)\n */\nexport function parseColor(input: string): string | null {\n\n // CSS named colors\n if (CSS_COLOR_NAMES.has(input.toLowerCase())) {\n return input;\n }\n\n if (input.startsWith('color:var(')) {\n return input.slice(6);\n }\n\n if (input.startsWith('color:')) {\n return parseColor(input.slice(6));\n }\n\n // hex\n if (input.startsWith('#') && input.length === 4) {\n return `#${input.slice(1)}`;\n }\n if (input.startsWith('#') && input.length === 5) {\n return `#${input.slice(1)}`;\n }\n if (input.startsWith('#') && input.length === 7) {\n return `#${input.slice(1)}`;\n }\n if (input.startsWith('#') && input.length === 9) {\n return `#${input.slice(1)}`;\n }\n\n\n // rgb\n if (input.startsWith('rgb(')) {\n return input.slice(4, -1);\n }\n\n // rgba\n if (input.startsWith('rgba(')) {\n return input.slice(5, -1);\n }\n\n // hsl\n if (input.startsWith('hsl(')) {\n return input.slice(4, -1);\n }\n\n // hsla\n if (input.startsWith('hsla(')) {\n return input.slice(5, -1);\n }\n\n // hwb\n if (input.startsWith('hwb(')) {\n return input.slice(4, -1);\n }\n\n // lab\n if (input.startsWith('lab(')) {\n return input.slice(4, -1);\n }\n\n // lch\n if (input.startsWith('lch(')) {\n return input.slice(4, -1);\n }\n\n // oklab\n if (input.startsWith('oklab(')) {\n return input.slice(5, -1);\n }\n\n // oklch\n if (input.startsWith('oklch(')) {\n return input.slice(6, -1);\n }\n\n // color-mix\n if (input.startsWith('color-mix(')) {\n return input.slice(9, -1);\n }\n\n\n return null;\n}","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Accent Color Utilities ---\n// accent-color documentation\n\n// Theme color utilities (e.g. accent-inherit, accent-blue-500)\n// (Assume theme color registration is handled elsewhere, or extend as needed)\n\nstaticUtility(\"accent-inherit\", [[\"accent-color\", \"inherit\"]], { category: 'interactivity' });\nstaticUtility(\"accent-current\", [[\"accent-color\", \"currentColor\"]], { category: 'interactivity' });\nstaticUtility(\"accent-transparent\", [[\"accent-color\", \"transparent\"]], { category: 'interactivity' });\n\n// Functional: arbitrary value (accent-[value])\nfunctionalUtility({\n name: \"accent\",\n themeKeys: [\"colors\"],\n supportsOpacity: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\n \"accent-color\",\n `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`\n ),\n ]),\n decl(\"accent-color\", value),\n ];\n }\n\n return [decl(\"accent-color\", `var(--color-${extra.realThemeValue})`)];\n }\n\n return [decl(\"accent-color\", value)];\n },\n handleCustomProperty: (value) => [decl(\"accent-color\", `var(${value})`)],\n description: \"accent-color utility (static, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n\n// --- Appearance Utilities ---\n// appearance documentation\n\n// appearance-none: removes native form control styling\nstaticUtility(\"appearance-none\", [[\"appearance\", \"none\"]], { category: 'interactivity' });\n// appearance-auto: restores default browser styling\nstaticUtility(\"appearance-auto\", [[\"appearance\", \"auto\"]], { category: 'interactivity' });\n\n// --- Caret Color Utilities ---\n// caret-color documentation\n\n// Static caret colors\nstaticUtility(\"caret-inherit\", [[\"caret-color\", \"inherit\"]], { category: 'interactivity' });\nstaticUtility(\"caret-current\", [[\"caret-color\", \"currentColor\"]], { category: 'interactivity' });\nstaticUtility(\"caret-transparent\", [[\"caret-color\", \"transparent\"]], { category: 'interactivity' });\n\n// Theme color utilities (e.g. caret-blue-500)\n// (Assume theme color registration is handled elsewhere)\n\n// Functional: arbitrary value (caret-[value]) and custom property (caret-(--my-caret))\nfunctionalUtility({\n name: \"caret\",\n themeKeys: [\"colors\"],\n supportsOpacity: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\n \"caret-color\",\n `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`\n ),\n ]),\n decl(\"caret-color\", value),\n ];\n }\n\n return [decl(\"caret-color\", `var(--color-${extra.realThemeValue})`)];\n }\n return [decl(\"caret-color\", value)];\n },\n handleCustomProperty: (value) => [decl(\"caret-color\", `var(${value})`)],\n description:\n \"caret-color utility (static, theme, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n\n// --- Color Scheme Utilities ---\n// color-scheme documentation\n\n// scheme-normal: color-scheme: normal;\nstaticUtility(\"scheme-normal\", [[\"color-scheme\", \"normal\"]], { category: 'interactivity' });\n// scheme-dark: color-scheme: dark;\nstaticUtility(\"scheme-dark\", [[\"color-scheme\", \"dark\"]], { category: 'interactivity' });\n// scheme-light: color-scheme: light;\nstaticUtility(\"scheme-light\", [[\"color-scheme\", \"light\"]], { category: 'interactivity' });\n// scheme-light-dark: color-scheme: light dark;\nstaticUtility(\"scheme-light-dark\", [[\"color-scheme\", \"light dark\"]], { category: 'interactivity' });\n// scheme-only-dark: color-scheme: only dark;\nstaticUtility(\"scheme-only-dark\", [[\"color-scheme\", \"only dark\"]], { category: 'interactivity' });\n// scheme-only-light: color-scheme: only light;\nstaticUtility(\"scheme-only-light\", [[\"color-scheme\", \"only light\"]], { category: 'interactivity' });\n\n// --- Cursor Utilities ---\n// cursor documentation\n\n// Static cursor values\n[\n \"auto\",\n \"default\",\n \"pointer\",\n \"wait\",\n \"text\",\n \"move\",\n \"help\",\n \"not-allowed\",\n \"none\",\n \"context-menu\",\n \"progress\",\n \"cell\",\n \"crosshair\",\n \"vertical-text\",\n \"alias\",\n \"copy\",\n \"no-drop\",\n \"grab\",\n \"grabbing\",\n \"all-scroll\",\n \"col-resize\",\n \"row-resize\",\n \"n-resize\",\n \"e-resize\",\n \"s-resize\",\n \"w-resize\",\n \"ne-resize\",\n \"nw-resize\",\n \"se-resize\",\n \"sw-resize\",\n \"ew-resize\",\n \"ns-resize\",\n \"nesw-resize\",\n \"nwse-resize\",\n \"zoom-in\",\n \"zoom-out\",\n].forEach((cursor) => {\n staticUtility(`cursor-${cursor}`, [[\"cursor\", cursor]], { category: 'interactivity' });\n});\n\n// Functional: custom property (cursor-(--my-cursor)) and arbitrary value (cursor-[value])\nfunctionalUtility({\n name: \"cursor\",\n prop: \"cursor\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"cursor utility (static, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n\n// --- Field Sizing Utilities ---\n// field-sizing documentation\n\n// field-sizing-fixed: field-sizing: fixed;\nstaticUtility(\"field-sizing-fixed\", [[\"field-sizing\", \"fixed\"]], { category: 'interactivity' });\n// field-sizing-content: field-sizing: content;\nstaticUtility(\"field-sizing-content\", [[\"field-sizing\", \"content\"]], { category: 'interactivity' });\n\n// --- Pointer Events Utilities ---\n// pointer-events documentation\n\n// pointer-events-auto: pointer-events: auto;\nstaticUtility(\"pointer-events-auto\", [[\"pointer-events\", \"auto\"]], { category: 'interactivity' });\n// pointer-events-none: pointer-events: none;\nstaticUtility(\"pointer-events-none\", [[\"pointer-events\", \"none\"]], { category: 'interactivity' });\n\n// --- Resize Utilities ---\n// resize documentation\n\n// resize: resize: both;\nstaticUtility(\"resize\", [[\"resize\", \"both\"]], { category: 'interactivity' });\n// resize-x: resize: horizontal;\nstaticUtility(\"resize-x\", [[\"resize\", \"horizontal\"]], { category: 'interactivity' });\n// resize-y: resize: vertical;\nstaticUtility(\"resize-y\", [[\"resize\", \"vertical\"]], { category: 'interactivity' });\n// resize-none: resize: none;\nstaticUtility(\"resize-none\", [[\"resize\", \"none\"]], { category: 'interactivity' });\n\n// --- Scroll Behavior Utilities ---\n// scroll-behavior documentation\n\n// scroll-auto: scroll-behavior: auto;\nstaticUtility(\"scroll-auto\", [[\"scroll-behavior\", \"auto\"]], { category: 'interactivity' });\n// scroll-smooth: scroll-behavior: smooth;\nstaticUtility(\"scroll-smooth\", [[\"scroll-behavior\", \"smooth\"]], { category: 'interactivity' });\n\n// --- Scroll Snap Align Utilities ---\n// scroll-snap-align documentation\nstaticUtility(\"snap-start\", [[\"scroll-snap-align\", \"start\"]], { category: 'interactivity' });\nstaticUtility(\"snap-end\", [[\"scroll-snap-align\", \"end\"]], { category: 'interactivity' });\nstaticUtility(\"snap-center\", [[\"scroll-snap-align\", \"center\"]], { category: 'interactivity' });\nstaticUtility(\"snap-align-none\", [[\"scroll-snap-align\", \"none\"]], { category: 'interactivity' });\n\n// --- Scroll Snap Stop Utilities ---\n// scroll-snap-stop documentation\nstaticUtility(\"snap-normal\", [[\"scroll-snap-stop\", \"normal\"]], { category: 'interactivity' });\nstaticUtility(\"snap-always\", [[\"scroll-snap-stop\", \"always\"]], { category: 'interactivity' });\n\n// --- Scroll Snap Type Utilities ---\n// scroll-snap-type documentation\nstaticUtility(\"snap-none\", [[\"scroll-snap-type\", \"none\"]], { category: 'interactivity' });\nstaticUtility(\"snap-x\", [[\"scroll-snap-type\", \"x var(--baro-scroll-snap-strictness)\"]], { category: 'interactivity' });\nstaticUtility(\"snap-y\", [[\"scroll-snap-type\", \"y var(--baro-scroll-snap-strictness)\"]], { category: 'interactivity' });\nstaticUtility(\"snap-both\", [[\"scroll-snap-type\", \"both var(--baro-scroll-snap-strictness)\"]], { category: 'interactivity' });\nstaticUtility(\"snap-mandatory\", [[\"--baro-scroll-snap-strictness\", \"mandatory\"]], { category: 'interactivity' });\nstaticUtility(\"snap-proximity\", [[\"--baro-scroll-snap-strictness\", \"proximity\"]], { category: 'interactivity' });\n\n\n[\n [\"mt\", \"scroll-margin-top\"],\n [\"mr\", \"scroll-margin-right\"],\n [\"mb\", \"scroll-margin-bottom\"],\n [\"ml\", \"scroll-margin-left\"],\n [\"mx\", \"scroll-margin-inline\"],\n [\"my\", \"scroll-margin-block\"],\n [\"ms\", \"scroll-margin-inline-start\"],\n [\"me\", \"scroll-margin-inline-end\"],\n [\"m\", \"scroll-margin\"],\n].forEach(([name, prop]) => {\n functionalUtility({\n name: `scroll-${name}`,\n prop,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token, _extra) => {\n if (parseNumber(value) || token.negative) {\n return [decl(prop, `calc(var(--spacing) * ${value})`)];\n }\n return [decl(prop, value)];\n },\n handleCustomProperty: (value) => [decl(prop, `var(${value})`)],\n description: `${name} utility (static, arbitrary, custom property supported)`,\n category: \"interactivity\",\n });\n});\n\n\n\n\n\n[\n [\"pt\", \"scroll-padding-top\"],\n [\"pr\", \"scroll-padding-right\"],\n [\"pb\", \"scroll-padding-bottom\"],\n [\"pl\", \"scroll-padding-left\"],\n [\"px\", \"scroll-padding-inline\"],\n [\"py\", \"scroll-padding-block\"],\n [\"ps\", \"scroll-padding-inline-start\"],\n [\"pe\", \"scroll-padding-inline-end\"],\n [\"p\", \"scroll-padding\"],\n].forEach(([name, prop]) => {\n functionalUtility({\n name: `scroll-${name}`,\n prop,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token, _extra) => {\n if (parseNumber(value) || token.negative) {\n return [decl(prop, `calc(var(--spacing) * ${value})`)];\n }\n return [decl(prop, value)];\n },\n handleCustomProperty: (value) => [decl(prop, `var(${value})`)],\n description: `scroll-${name} utility (static, arbitrary, custom property supported)`,\n category: \"interactivity\",\n });\n});\n\n// --- Touch Action Utilities ---\n// touch-action documentation\nstaticUtility(\"touch-auto\", [[\"touch-action\", \"auto\"]], { category: 'interactivity' });\nstaticUtility(\"touch-none\", [[\"touch-action\", \"none\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-x\", [[\"touch-action\", \"pan-x\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-left\", [[\"touch-action\", \"pan-left\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-right\", [[\"touch-action\", \"pan-right\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-y\", [[\"touch-action\", \"pan-y\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-up\", [[\"touch-action\", \"pan-up\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-down\", [[\"touch-action\", \"pan-down\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pinch-zoom\", [[\"touch-action\", \"pinch-zoom\"]], { category: 'interactivity' });\nstaticUtility(\"touch-manipulation\", [[\"touch-action\", \"manipulation\"]], { category: 'interactivity' });\n\n// --- User Select Utilities ---\n// user-select documentation\nstaticUtility(\"select-none\", [[\"user-select\", \"none\"]], { category: 'interactivity' });\nstaticUtility(\"select-text\", [[\"user-select\", \"text\"]], { category: 'interactivity' });\nstaticUtility(\"select-all\", [[\"user-select\", \"all\"]], { category: 'interactivity' });\nstaticUtility(\"select-auto\", [[\"user-select\", \"auto\"]], { category: 'interactivity' });\n\n// --- Will Change Utilities ---\n// will-change documentation\nstaticUtility(\"will-change-auto\", [[\"will-change\", \"auto\"]], { category: 'interactivity' });\nstaticUtility(\"will-change-scroll\", [[\"will-change\", \"scroll-position\"]], { category: 'interactivity' });\nstaticUtility(\"will-change-contents\", [[\"will-change\", \"contents\"]], { category: 'interactivity' });\nstaticUtility(\"will-change-transform\", [[\"will-change\", \"transform\"]], { category: 'interactivity' });\n\n// Functional: will-change-[value], will-change-(--custom-property)\nfunctionalUtility({\n name: \"will-change\",\n prop: \"will-change\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"will-change utility (static, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Transition Property Utilities ---\n// transition-property documentation\n\n// Default variable\nconst defaultTiming = \"var(--default-transition-timing-function)\"; // cubic-bezier(0.4, 0, 0.2, 1)\nconst defaultDuration = \"var(--default-transition-duration)\"; // 150ms\n\n// transition\nstaticUtility(\"transition\", [\n [\n \"transition-property\",\n \"color, background-color, border-color, text-decoration-color, fill, stroke, --baro-gradient-from, --baro-gradient-via, --baro-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter\",\n ],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-all\nstaticUtility(\"transition-all\", [\n [\"transition-property\", \"all\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-colors\nstaticUtility(\"transition-colors\", [\n [\n \"transition-property\",\n \"color, background-color, border-color, text-decoration-color, fill, stroke, --baro-gradient-from, --baro-gradient-via, --baro-gradient-to\",\n ],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-opacity\nstaticUtility(\"transition-opacity\", [\n [\"transition-property\", \"opacity\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-shadow\nstaticUtility(\"transition-shadow\", [\n [\"transition-property\", \"box-shadow\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-transform\nstaticUtility(\"transition-transform\", [\n [\"transition-property\", \"transform, translate, scale, rotate\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' } );\n\n\n// --- Transition Behavior ---\nstaticUtility(\"transition-normal\", [[\"transition-behavior\", \"normal\"]], { category: 'transitions' });\nstaticUtility(\"transition-discrete\", [[\"transition-behavior\", \"allow-discrete\"]], { category: 'transitions' }); \n\n// transition-none\nstaticUtility(\"transition-none\", [[\"transition-property\", \"none\"]], { category: 'transitions' });\n\n// transition-[value] (arbitrary value)\nfunctionalUtility({\n name: \"transition\",\n prop: \"transition-property\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n return [\n decl(\"transition-property\", value),\n decl(\"transition-timing-function\", defaultTiming),\n decl(\"transition-duration\", defaultDuration),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"transition-property\", `var(${value})`),\n decl(\"transition-timing-function\", defaultTiming),\n decl(\"transition-duration\", defaultDuration),\n ],\n description:\n \"transition-property utility (static, arbitrary value, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Transition Duration ---\nstaticUtility(\"duration-initial\", [[\"transition-duration\", \"initial\"]], { category: 'transitions' });\n\nfunctionalUtility({\n name: \"duration\",\n prop: \"transition-duration\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"transition-duration\", `${value}ms`)];\n }\n return [decl(\"transition-duration\", value)];\n },\n handleCustomProperty: (value) => [decl(\"transition-duration\", `var(${value})`)],\n description: \"transition-duration utility (static, number, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Transition Timing Function ---\nstaticUtility(\"ease-linear\", [[\"transition-timing-function\", \"linear\"]], { category: 'transitions' });\nstaticUtility(\"ease-in\", [[\"transition-timing-function\", \"var(--ease-in)\"]], { category: 'transitions' });\nstaticUtility(\"ease-out\", [[\"transition-timing-function\", \"var(--ease-out)\"]], { category: 'transitions' });\nstaticUtility(\"ease-in-out\", [[\"transition-timing-function\", \"var(--ease-in-out)\"]], { category: 'transitions' });\nstaticUtility(\"ease-initial\", [[\"transition-timing-function\", \"initial\"]], { category: 'transitions' });\n\nfunctionalUtility({\n name: \"ease\",\n prop: \"transition-timing-function\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n return [decl(\"transition-timing-function\", value)];\n },\n handleCustomProperty: (value) => [decl(\"transition-timing-function\", `var(${value})`)],\n description: \"transition-timing-function utility (static, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Transition Delay ---\nfunctionalUtility({\n name: \"delay\",\n prop: \"transition-delay\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"transition-delay\", `${value}ms`)];\n }\n return [decl(\"transition-delay\", value)];\n },\n handleCustomProperty: (value) => [decl(\"transition-delay\", `var(${value})`)],\n description: \"transition-delay utility (number, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Animation ---\nstaticUtility(\"animate-spin\", [\n [\"animation\", \"var(--animate-spin)\"],\n], { category: 'transitions' });\nstaticUtility(\"animate-ping\", [[\"animation\", \"var(--animate-ping)\"]], { category: 'transitions' });\nstaticUtility(\"animate-pulse\", [[\"animation\", \"var(--animate-pulse)\"]], { category: 'transitions' });\nstaticUtility(\"animate-bounce\", [[\"animation\", \"var(--animate-bounce)\"]], { category: 'transitions' });\nstaticUtility(\"animate-none\", [[\"animation\", \"none\"]], { category: 'transitions' } );\n\nfunctionalUtility({\n name: \"animate\",\n prop: \"animation\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (token.customProperty) {\n return [decl(\"animation\", `var(${value})`)];\n }\n return [decl(\"animation\", value)];\n },\n handleCustomProperty: (value) => [decl(\"animation\", `var(${value})`)],\n description: \"animation utility (static, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n","import { staticUtility } from \"../core/registry\";\nimport { functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Table Layout Utilities (border-collapse, border-separate) ---\nstaticUtility(\"border-collapse\", [[\"border-collapse\", \"collapse\"]], { category: 'table' });\nstaticUtility(\"border-separate\", [[\"border-collapse\", \"separate\"]], { category: 'table' });\n\n// --- Table Layout ---\nstaticUtility(\"table-auto\", [[\"table-layout\", \"auto\"]], { category: 'table' });\nstaticUtility(\"table-fixed\", [[\"table-layout\", \"fixed\"]], { category: 'table' });\n\n// --- Border Spacing ---\nfunctionalUtility({\n name: \"border-spacing-x\",\n prop: \"border-spacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"border-spacing\", `calc(var(--spacing) * ${value}) var(--baro-border-spacing-y)`)]\n }\n return [decl(\"border-spacing\", `${value} var(--baro-border-spacing-y)`)]\n },\n handleCustomProperty: (value) => [decl(\"border-spacing\", `var(${value}) var(--baro-border-spacing-y)`)],\n description: \"border-spacing-x utility (static, number, arbitrary, custom property supported)\",\n category: \"table\",\n});\n\nfunctionalUtility({\n name: \"border-spacing-y\",\n prop: \"border-spacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"border-spacing\", `var(--baro-border-spacing-x) calc(var(--spacing) * ${value})`)]\n }\n return [decl(\"border-spacing\", `var(--baro-border-spacing-x) ${value}`)]\n },\n handleCustomProperty: (value) => [decl(\"border-spacing\", `var(--baro-border-spacing-x) var(${value})`)],\n description: \"border-spacing-y utility (static, number, arbitrary, custom property supported)\",\n category: \"table\",\n}); \n\nfunctionalUtility({\n name: \"border-spacing\",\n prop: \"border-spacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"border-spacing\", `calc(var(--spacing) * ${value})`)];\n }\n return [decl(\"border-spacing\", value)];\n },\n handleCustomProperty: (value) => [decl(\"border-spacing\", `var(${value})`)],\n description: \"border-spacing utility (static, number, arbitrary, custom property supported)\",\n category: \"table\",\n });\n\n// --- Caption Side ---\nstaticUtility(\"caption-top\", [[\"caption-side\", \"top\"]], { category: 'table' });\nstaticUtility(\"caption-bottom\", [[\"caption-side\", \"bottom\"]], { category: 'table' });","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\nimport { parseColor } from \"../core/utils\";\n\n// --- Filter ---\nstaticUtility(\"filter-none\", [[\"filter\", \"none\"]], { category: 'effects' });\n\nfunctionalUtility({\n name: \"filter\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\nconst filters = () => {\n return decl(\"filter\", \"var(--baro-blur, ) var(--baro-brightness, ) var(--baro-contrast, ) var(--baro-grayscale, ) var(--baro-hue-rotate, ) var(--baro-invert, ) var(--baro-saturate, ) var(--baro-sepia, ) var(--baro-drop-shadow, )\");\n}\n\n// --- Blur ---\n[\n [\"blur-xs\", \"var(--blur-xs)\"],\n [\"blur-sm\", \"var(--blur-sm)\"],\n [\"blur-md\", \"var(--blur-md)\"],\n [\"blur-lg\", \"var(--blur-lg)\"],\n [\"blur-xl\", \"var(--blur-xl)\"],\n [\"blur-2xl\", \"var(--blur-2xl)\"],\n [\"blur-3xl\", \"var(--blur-3xl)\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [\n decl(\"--baro-blur\", `blur(${value})`),\n filters()\n ], { category: 'effects' });\n});\nstaticUtility(\"blur-none\", [decl(\"--baro-blur\", \"\"), filters()], { category: 'effects' });\n\nfunctionalUtility({\n name: \"blur\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.customProperty) return [decl(\"--baro-blur\", `blur(var(${value}))`), filters()];\n return [decl(\"--baro-blur\", `blur(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-blur\", `blur(var(${value}))`), filters()],\n description: \"blur filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Brightness ---\n\nfunctionalUtility({\n name: \"brightness\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (token.arbitrary) {\n return [decl(\"--baro-brightness\", `brightness(${value})`), filters()];\n }\n if (parseNumber(value)) {\n return [decl(\"--baro-brightness\", `brightness(${value}%)`), filters()];\n }\n if (token.customProperty)\n return [decl(\"--baro-brightness\", `brightness(var(${value}))`), filters()];\n return [decl(\"--baro-brightness\", `brightness(${value})`), filters()];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-brightness\", `brightness(var(${value}))`),\n filters()\n ],\n description:\n \"brightness filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Contrast ---\nfunctionalUtility({\n name: \"contrast\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.arbitrary) {\n return [decl(\"--baro-contrast\", `contrast(${value})`), filters()];\n }\n if (parseNumber(value)) {\n return [decl(\"--baro-contrast\", `contrast(${value}%)`), filters()];\n }\n if (token.customProperty)\n return [decl(\"--baro-contrast\", `contrast(var(${value}))`), filters()];\n return [decl(\"--baro-contrast\", `contrast(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-contrast\", `contrast(var(${value}))`), filters()],\n description:\n \"contrast filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Drop Shadow ---\n[\n [\"drop-shadow-xs\", \"xs\", '0 1px 1px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-sm\", \"sm\", '0 1px 2px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-md\", \"md\", '0 3px 3px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-lg\", \"lg\", '0 4px 4px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-xl\", \"xl\", '0 9px 7px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-2xl\", \"2xl\", '0 25px 25px var(--baro-drop-shadow-color, #0000001a)'],\n].forEach(([name, size, sizeValue]) => {\n staticUtility(name as string, [\n decl(\"--baro-drop-shadow-size\", `drop-shadow(${sizeValue})`),\n decl(\"--baro-drop-shadow\", `var(--drop-shadow-${size})`),\n filters()\n ]);\n});\nstaticUtility(\"drop-shadow-none\", [decl(\"--baro-drop-shadow\", \"drop-shadow(0 0 #0000)\"), filters()]);\n\n// --- Drop Shadow Color ---\n// drop-shadow-inherit, drop-shadow-current, drop-shadow-transparent\n[\"inherit\", \"current\", \"transparent\"].forEach((name) => {\n staticUtility(`drop-shadow-${name}`, [\n decl(\"--baro-drop-shadow-color\", name === \"current\" ? \"currentColor\" : name),\n ]);\n});\n\n// drop-shadow-black, drop-shadow-white, drop-shadow-{color}-{shade}\n[\"black\", \"white\"].forEach((name) => {\n staticUtility(`drop-shadow-${name}`, [\n decl(\"--baro-drop-shadow-color\", `var(--color-${name})`),\n ]);\n});\n\n// drop-shadow-(color:--my-color)\nfunctionalUtility({\n name: \"drop-shadow\",\n themeKeys: ['colors'],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token, extra) => {\n if (extra?.realThemeValue) {\n return [decl(\"--baro-drop-shadow-color\", `var(--color-${extra.realThemeValue})`)];\n }\n\n if (parseColor(value)) {\n return [decl(\"--baro-drop-shadow-color\", value)];\n }\n\n return [\n decl(\"--baro-drop-shadow-size\", `drop-shadow(${value})`),\n decl(\"--baro-drop-shadow\", `var(--baro-drop-shadow-size)`),\n ];\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n return [\n decl(\"--baro-drop-shadow-color\", `var(${value.replace(\"color:\", \"\")})`),\n ];\n }\n\n return [\n decl(\"--baro-drop-shadow-size\", `drop-shadow(var(${value}))`),\n decl(\"--baro-drop-shadow\", `var(--baro-drop-shadow-size)`),\n ];\n },\n description:\n \"drop-shadow filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Grayscale ---\nstaticUtility(\"grayscale\", [decl(\"--baro-grayscale\", \"grayscale(100%)\"), filters()], { category: \"effects\" });\n\nfunctionalUtility({\n name: \"grayscale\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-grayscale\", `grayscale(${value}%)`), filters()];\n }\n return [decl(\"--baro-grayscale\", `grayscale(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-grayscale\", `grayscale(var(${value}))`), filters()],\n description: \"grayscale filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Hue Rotate ---\n\nfunctionalUtility({\n name: \"hue-rotate\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, _ctx, token) => {\n if (token.negative && parseNumber(token.value!)) {\n return [decl(\"--baro-hue-rotate\", `hue-rotate(calc(${token.value}deg * -1))`), filters()];\n }\n if (parseNumber(value)) {\n return [decl(\"--baro-hue-rotate\", `hue-rotate(${value}deg)`), filters()];\n }\n if (token.customProperty) return [decl(\"--baro-hue-rotate\", `hue-rotate(var(${value}))`), filters()];\n return [decl(\"--baro-hue-rotate\", `hue-rotate(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-hue-rotate\", `hue-rotate(var(${value}))`), filters()],\n description: \"hue-rotate filter utility (static, negative, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Invert ---\nstaticUtility(\"invert\", [decl(\"--baro-invert\", \"invert(100%)\"), filters()], { category: \"effects\" });\n\nfunctionalUtility({\n name: \"invert\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-invert\", `invert(${value}%)`), filters()];\n }\n\n return [decl(\"--baro-invert\", `invert(${value})`), filters()];\n },\n description: \"invert filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Saturate ---\nfunctionalUtility({\n name: \"saturate\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-saturate\", `saturate(${value}%)`), filters()];\n }\n return [decl(\"--baro-saturate\", `saturate(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-saturate\", `saturate(var(${value}))`), filters()],\n description: \"saturate filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Sepia ---\nstaticUtility(\"sepia\", [decl(\"--baro-sepia\", \"sepia(100%)\"), filters()], { category: \"effects\" });\n\nfunctionalUtility({\n name: \"sepia\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-sepia\", `sepia(${value}%)`), filters()];\n }\n return [decl(\"--baro-sepia\", `sepia(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-sepia\", `sepia(var(${value}))`), filters()],\n description: \"sepia filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\nconst filters = () => {\n return [\n decl(\n \"-webkit-backdrop-filter\",\n \"var(--baro-backdrop-blur, ) var(--baro-backdrop-brightness, ) var(--baro-backdrop-contrast, ) var(--baro-backdrop-grayscale, ) var(--baro-backdrop-hue-rotate, ) var(--baro-backdrop-invert, ) var(--baro-backdrop-saturate, ) var(--baro-backdrop-sepia, )\"\n ),\n decl(\n \"backdrop-filter\",\n \"var(--baro-backdrop-blur, ) var(--baro-backdrop-brightness, ) var(--baro-backdrop-contrast, ) var(--baro-backdrop-grayscale, ) var(--baro-backdrop-hue-rotate, ) var(--baro-backdrop-invert, ) var(--baro-backdrop-saturate, ) var(--baro-backdrop-sepia, )\"\n ),\n ];\n};\n\n// --- Backdrop Filter ---\nstaticUtility(\n \"backdrop-filter\",\n [[\"backdrop-filter\", \"var(--baro-backdrop-filter)\"]],\n { category: \"effects\" }\n);\nstaticUtility(\"backdrop-filter-none\", [[\"backdrop-filter\", \"none\"]], {\n category: \"effects\",\n});\n\nfunctionalUtility({\n name: \"backdrop-filter\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Blur ---\n[\n [\"backdrop-blur-xs\", \"var(--blur-xs)\"],\n [\"backdrop-blur-sm\", \"var(--blur-sm)\"],\n [\"backdrop-blur-md\", \"var(--blur-md)\"],\n [\"backdrop-blur-lg\", \"var(--blur-lg)\"],\n [\"backdrop-blur-xl\", \"var(--blur-xl)\"],\n [\"backdrop-blur-2xl\", \"var(--blur-2xl)\"],\n [\"backdrop-blur-3xl\", \"var(--blur-3xl)\"],\n].forEach(([name, value]) => {\n staticUtility(\n name as string,\n [decl(\"--baro-backdrop-blur\", `blur(${value})`), ...filters()],\n { category: \"effects\" }\n );\n});\nstaticUtility(\n \"backdrop-blur-none\",\n [decl(\"--baro-backdrop-blur\", \"\"), ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-blur\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.customProperty)\n return [\n decl(\"--baro-backdrop-blur\", `blur(var(${value}))`),\n ...filters(),\n ];\n return [decl(\"--baro-backdrop-blur\", `blur(${value})`), ...filters()];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-blur\", `blur(var(${value}))`),\n ...filters(),\n ],\n description:\n \"blur filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Brightness ---\n\nfunctionalUtility({\n name: \"backdrop-brightness\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.arbitrary) {\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(${value})`),\n ...filters(),\n ];\n }\n\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(${value}%)`),\n ...filters(),\n ];\n }\n if (token.customProperty)\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(var(${value}))`),\n ...filters(),\n ];\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-brightness\", `brightness(var(${value}))`),\n ...filters(),\n ],\n description:\n \"brightness filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Contrast ---\nfunctionalUtility({\n name: \"backdrop-contrast\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handle: (value, _ctx, token) => {\n if (token.arbitrary) {\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(${value})`),\n ...filters(),\n ];\n }\n\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(${value}%)`),\n ...filters(),\n ];\n }\n if (token.customProperty)\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(var(${value}))`),\n ...filters(),\n ];\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-contrast\", `contrast(var(${value}))`),\n ...filters(),\n ],\n description:\n \"contrast filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Grayscale ---\nstaticUtility(\n \"backdrop-grayscale\",\n [[\"--baro-backdrop-grayscale\", \"grayscale(100%)\"], ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-grayscale\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-grayscale\", `grayscale(${value}%)`),\n ...filters(),\n ];\n }\n return [\n decl(\"--baro-backdrop-grayscale\", `grayscale(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-grayscale\", `grayscale(var(${value}))`),\n ...filters(),\n ],\n description:\n \"grayscale filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Hue Rotate ---\n\nfunctionalUtility({\n name: \"backdrop-hue-rotate\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, _ctx, token) => {\n if (token.negative && parseNumber(token.value!)) {\n return [\n decl(\n \"--baro-backdrop-hue-rotate\",\n `hue-rotate(calc(${token.value}deg * -1))`\n ),\n ...filters(),\n ];\n }\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-hue-rotate\", `hue-rotate(${value}deg)`),\n ...filters(),\n ];\n }\n return [\n decl(\"--baro-backdrop-hue-rotate\", `hue-rotate(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-hue-rotate\", `hue-rotate(var(${value}))`),\n ...filters(),\n ],\n description:\n \"hue-rotate filter utility (static, negative, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Invert ---\nstaticUtility(\n \"backdrop-invert\",\n [[\"--baro-backdrop-invert\", \"invert(100%)\"], ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-invert\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-invert\", `invert(${value}%)`),\n ...filters(),\n ];\n }\n\n return [decl(\"--baro-backdrop-invert\", `invert(${value})`), ...filters()];\n },\n description:\n \"invert filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Saturate ---\nfunctionalUtility({\n name: \"backdrop-saturate\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-saturate\", `saturate(${value}%)`),\n ...filters(),\n ];\n }\n return [\n decl(\"--baro-backdrop-saturate\", `saturate(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-saturate\", `saturate(var(${value}))`),\n ...filters(),\n ],\n description:\n \"saturate filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Sepia ---\nstaticUtility(\n \"backdrop-sepia\",\n [[\"--baro-backdrop-sepia\", \"sepia(100%)\"], ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-sepia\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-backdrop-sepia\", `sepia(${value}%)`), ...filters()];\n }\n return [decl(\"--baro-backdrop-sepia\", `sepia(${value})`), ...filters()];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-sepia\", `sepia(var(${value}))`),\n ...filters(),\n ],\n description:\n \"sepia filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport { parseColor, parseNumber } from \"../core/utils\";\n\n// --- Box Shadow ---\n// box-shadow documentation\n\n// Static shadow levels\n[\n [\"shadow-2xs\", \"var(--shadow-2xs)\"],\n [\"shadow-xs\", \"var(--shadow-xs)\"],\n [\"shadow-sm\", \"var(--shadow-sm)\"],\n [\"shadow\", \"var(--shadow-default)\"],\n [\"shadow-md\", \"var(--shadow-md)\"],\n [\"shadow-lg\", \"var(--shadow-lg)\"],\n [\"shadow-xl\", \"var(--shadow-xl)\"],\n [\"shadow-2xl\", \"var(--shadow-2xl)\"],\n [\"shadow-none\", \"0 0 #0000\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"box-shadow\", value as string]], { category: 'effects' });\n});\n\n// Static inset shadow levels\n[\n [\n \"inset-shadow-2xs\",\n \"inset 0 1px 2px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-xs\",\n \"inset 0 2px 4px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-sm\",\n \"inset 0 2px 4px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-md\",\n \"inset 0 4px 6px -1px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-lg\",\n \"inset 0 10px 15px -3px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-xl\",\n \"inset 0 20px 25px -5px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-2xl\",\n \"inset 0 25px 50px -12px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\"inset-shadow-none\", \"0 0 #0000\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [\n [\"--baro-inset-shadow\", value as string],\n [\n \"box-shadow\",\n \"var(--baro-inset-shadow), var(--baro-inset-ring-shadow), var(--baro-ring-offset-shadow), var(--baro-ring-shadow), var(--baro-shadow)\",\n ],\n ], { category: 'effects' });\n});\n\n// --- Box Shadow Color (with opacity, custom property, arbitrary) ---\n// shadow-red-500, shadow-red-500/50, shadow-[#bada55]/80, shadow-(color:--my-shadow), shadow-inherit, etc.\n\nfunction createShadowThemeColor(\n key: string,\n main: string,\n opacity: string | undefined,\n realThemeValue: string\n) {\n let fallbackColor = main;\n const colorVar = `var(--color-${realThemeValue})`;\n let colorValue = colorVar;\n if (opacity) {\n colorValue = `color-mix(in oklab, color-mix(in oklab, ${colorVar} ${opacity}%, transparent) var(--baro-shadow-alpha),transparent)`;\n if (parseColor(main)) {\n if (main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallbackColor = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallbackColor = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n }\n }\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(key, colorValue),\n ]),\n decl(key, fallbackColor),\n ];\n}\n\n// shadow-color utilities\nfunctionalUtility({\n name: \"shadow\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\", \"shadows\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n\n // 1. Theme color (e.g. shadow-red-500/60)\n if (realThemeValue) {\n return createShadowThemeColor(\n \"--baro-shadow-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n\n // Custom property color: shadow-(color:--my-shadow)\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n if (opacity) {\n return [\n decl(\n \"--baro-shadow-color\",\n `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`\n ),\n ];\n }\n return [decl(\"--baro-shadow-color\", `var(${cp})`)];\n }\n\n // Arbitrary color: shadow-[#bada55] or shadow-[oklch(...)]\n if (token.arbitrary) {\n if (parseColor(main)) {\n if (opacity) {\n return [\n decl(\n \"--baro-shadow-color\",\n `color-mix(in oklab, ${main} ${opacity}%, transparent)`\n ),\n ];\n }\n\n return [decl(\"box-shadow\", main)];\n }\n\n return [decl(\"box-shadow\", main)];\n }\n\n // Special cases\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\"--baro-shadow-color\", main === \"current\" ? \"currentColor\" : main),\n ];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"box-shadow\", `var(${value})`)],\n});\n\n// inset-shadow-color utilities\nfunctionalUtility({\n name: \"inset-shadow\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\", \"shadows\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n\n // 1. Theme color (e.g. inset-shadow-red-500/60)\n if (realThemeValue) {\n return createShadowThemeColor(\n \"--baro-inset-shadow-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n\n // 2. Custom property color: inset-shadow-(color:--my-shadow)\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n let colorValue = `var(${cp})`;\n if (opacity) {\n colorValue = `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`;\n }\n return [decl(\"--baro-inset-shadow-color\", colorValue)];\n }\n\n // 3. Arbitrary color: inset-shadow-[#bada55] or inset-shadow-[oklch(...)]\n if (token.arbitrary) {\n if (parseColor(main)) {\n let colorValue = main;\n if (opacity) {\n colorValue = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n }\n return [decl(\"--baro-inset-shadow-color\", colorValue)];\n }\n\n return [decl(\"box-shadow\", `inset ${main}`)];\n }\n\n // 4. Special cases\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\n \"--baro-inset-shadow-color\",\n main === \"current\" ? \"currentColor\" : main\n ),\n ];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"box-shadow\", `var(${value})`)],\n});\n\n// --- Ring ( multi-variable) ---\n// ring-width documentation\n\n// Static ring width utilities\n[\n [\"ring\", \"1px\"],\n [\"ring-0\", \"0px\"],\n [\"ring-1\", \"1px\"],\n [\"ring-2\", \"2px\"],\n [\"ring-4\", \"4px\"],\n [\"ring-8\", \"8px\"],\n].forEach(([name, px]) => {\n staticUtility(name as string, [\n [\"--baro-ring-inset\", \"\"],\n [\"--baro-ring-offset-width\", \"0px\"],\n [\"--baro-ring-offset-color\", \"#fff\"],\n [\"--baro-ring-color\", \"rgb(59 130 246 / 0.5)\"], // default blue-500/50\n [\n \"--baro-ring-shadow\",\n `var(--baro-ring-inset) 0 0 0 calc(${px} + var(--baro-ring-offset-width)) var(--baro-ring-color, currentcolor)`,\n ],\n [\"--baro-ring-offset-shadow\", `0 0 #0000`],\n [\n \"box-shadow\",\n \"var(--baro-inset-shadow), var(--baro-inset-ring-shadow), var(--baro-ring-offset-shadow), var(--baro-ring-shadow), var(--baro-shadow)\",\n ],\n ]);\n});\n\n// Inset ring width utilities\n[\n [\"inset-ring\", \"1px\"],\n [\"inset-ring-0\", \"0px\"],\n [\"inset-ring-1\", \"1px\"],\n [\"inset-ring-2\", \"2px\"],\n [\"inset-ring-4\", \"4px\"],\n [\"inset-ring-8\", \"8px\"],\n].forEach(([name, px]) => {\n staticUtility(name as string, [\n [\"--baro-ring-inset\", \"inset\"],\n [\"--baro-ring-offset-width\", \"0px\"],\n [\"--baro-ring-offset-color\", \"#fff\"],\n [\"--baro-inset-ring-color\", \"rgb(59 130 246 / 0.5)\"],\n [\n \"--baro-inset-ring-shadow\",\n `var(--baro-ring-inset) 0 0 0 calc(${px} + var(--baro-ring-offset-width)) var(--baro-inset-ring-color, currentcolor)`,\n ],\n [\"--baro-ring-offset-shadow\", `0 0 #0000`],\n [\n \"box-shadow\",\n \"var(--baro-inset-shadow), var(--baro-inset-ring-shadow), var(--baro-ring-offset-shadow), var(--baro-ring-shadow), var(--baro-shadow)\",\n ],\n ]);\n});\n\n// Ring inset\nstaticUtility(\"ring-inset\", [[\"--baro-ring-inset\", \"inset\"]], { category: 'effects' });\n\n// --- Ring color/opacity/arbitrary/custom property ( supports+fallback) ---\nfunction createRingColorDecls(\n key: string,\n main: string,\n opacity: string | undefined,\n realThemeValue: string\n) {\n const colorVar = `var(--color-${realThemeValue})`;\n let colorMix = colorVar;\n let fallback = colorVar;\n if (opacity) {\n colorMix = `color-mix(in oklab, ${colorVar} ${opacity}%, transparent)`;\n if (parseColor(main) && main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallback = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallback = colorMix;\n }\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(key, colorMix),\n ]),\n decl(key, fallback),\n ];\n}\n\n// Ring color/opacity/arbitrary/custom property\nfunctionalUtility({\n name: \"ring\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n if (realThemeValue) {\n return createRingColorDecls(\n \"--baro-ring-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n let colorMix = `var(${cp})`;\n let fallback = colorMix;\n if (opacity) {\n colorMix = `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`;\n fallback = colorMix;\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-ring-color\", colorMix),\n ]),\n decl(\"--baro-ring-color\", fallback),\n ];\n }\n if (token.arbitrary) {\n let colorMix = main;\n let fallback = main;\n if (opacity) {\n colorMix = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n if (parseColor(main) && main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallback = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallback = colorMix;\n }\n\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-ring-color\", colorMix),\n ]),\n decl(\"--baro-ring-color\", fallback),\n ];\n }\n\n return [decl(\"box-shadow\", main)];\n }\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\"--baro-ring-color\", main === \"current\" ? \"currentColor\" : main),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n const cp = value.replace(\"color:\", \"\");\n return [decl(\"--baro-ring-color\", `var(${cp})`)];\n }\n return [decl(\"--baro-ring-color\", `var(${value})`)];\n },\n});\n\n// Inset ring color/opacity/arbitrary/custom property ( supports+fallback)\nfunctionalUtility({\n name: \"inset-ring\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\", \"shadows\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n if (realThemeValue) {\n return createRingColorDecls(\n \"--baro-inset-ring-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n let colorMix = `var(${cp})`;\n let fallback = colorMix;\n if (opacity) {\n colorMix = `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`;\n fallback = colorMix;\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-inset-ring-color\", colorMix),\n ]),\n decl(\"--baro-inset-ring-color\", fallback),\n ];\n }\n if (token.arbitrary) {\n let colorMix = main;\n let fallback = main;\n if (opacity) {\n colorMix = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n if (parseColor(main) && main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallback = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallback = colorMix;\n }\n\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-inset-ring-color\", colorMix),\n ]),\n decl(\"--baro-inset-ring-color\", fallback),\n ];\n }\n\n return [decl(\"box-shadow\", `inset ${main}`)];\n }\n\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\n \"--baro-inset-ring-color\",\n main === \"current\" ? \"currentColor\" : main\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n const cp = value.replace(\"color:\", \"\");\n return [decl(\"--baro-inset-ring-color\", `var(${cp})`)];\n }\n return [decl(\"--baro-inset-ring-color\", `var(${value})`)];\n },\n});\n\n// --- Opacity ---\n\nfunctionalUtility({\n name: \"opacity\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n // opacity-100, opacity-75, etc.\n if (parseNumber(value)) {\n let num = Number(value);\n if (num > 1) num = num / 100;\n return [decl(\"opacity\", String(num))];\n }\n // opacity-[.67] → .67\n if (token.arbitrary) {\n return [decl(\"opacity\", value)];\n }\n return null;\n },\n handleCustomProperty: (value) => [decl(\"opacity\", `var(${value})`)],\n description: \"opacity utility (number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Mix Blend Mode ---\n[\n [\"mix-blend-normal\", \"normal\"],\n [\"mix-blend-multiply\", \"multiply\"],\n [\"mix-blend-screen\", \"screen\"],\n [\"mix-blend-overlay\", \"overlay\"],\n [\"mix-blend-darken\", \"darken\"],\n [\"mix-blend-lighten\", \"lighten\"],\n [\"mix-blend-color-dodge\", \"color-dodge\"],\n [\"mix-blend-color-burn\", \"color-burn\"],\n [\"mix-blend-hard-light\", \"hard-light\"],\n [\"mix-blend-soft-light\", \"soft-light\"],\n [\"mix-blend-difference\", \"difference\"],\n [\"mix-blend-exclusion\", \"exclusion\"],\n [\"mix-blend-hue\", \"hue\"],\n [\"mix-blend-saturation\", \"saturation\"],\n [\"mix-blend-color\", \"color\"],\n [\"mix-blend-luminosity\", \"luminosity\"],\n [\"mix-blend-plus-darker\", \"plus-darker\"],\n [\"mix-blend-plus-lighter\", \"plus-lighter\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mix-blend-mode\", value as string]]);\n});\n\n// --- Background Blend Mode ---\n[\n [\"bg-blend-normal\", \"normal\"],\n [\"bg-blend-multiply\", \"multiply\"],\n [\"bg-blend-screen\", \"screen\"],\n [\"bg-blend-overlay\", \"overlay\"],\n [\"bg-blend-darken\", \"darken\"],\n [\"bg-blend-lighten\", \"lighten\"],\n [\"bg-blend-color-dodge\", \"color-dodge\"],\n [\"bg-blend-color-burn\", \"color-burn\"],\n [\"bg-blend-hard-light\", \"hard-light\"],\n [\"bg-blend-soft-light\", \"soft-light\"],\n [\"bg-blend-difference\", \"difference\"],\n [\"bg-blend-exclusion\", \"exclusion\"],\n [\"bg-blend-hue\", \"hue\"],\n [\"bg-blend-saturation\", \"saturation\"],\n [\"bg-blend-color\", \"color\"],\n [\"bg-blend-luminosity\", \"luminosity\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"background-blend-mode\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Clip ---\n[\n [\"mask-clip-border\", \"border-box\"],\n [\"mask-clip-padding\", \"padding-box\"],\n [\"mask-clip-content\", \"content-box\"],\n [\"mask-clip-fill\", \"fill-box\"],\n [\"mask-clip-stroke\", \"stroke-box\"],\n [\"mask-clip-view\", \"view-box\"],\n [\"mask-no-clip\", \"no-clip\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-clip\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Composite ---\n[\n [\"mask-add\", \"add\"],\n [\"mask-subtract\", \"subtract\"],\n [\"mask-intersect\", \"intersect\"],\n [\"mask-exclude\", \"exclude\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-composite\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Mode ---\n[\n [\"mask-alpha\", \"alpha\"],\n [\"mask-luminance\", \"luminance\"],\n [\"mask-match\", \"match-source\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-mode\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Origin ---\n[\n [\"mask-origin-border\", \"border-box\"],\n [\"mask-origin-padding\", \"padding-box\"],\n [\"mask-origin-content\", \"content-box\"],\n [\"mask-origin-fill\", \"fill-box\"],\n [\"mask-origin-stroke\", \"stroke-box\"],\n [\"mask-origin-view\", \"view-box\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-origin\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Position ---\n[\n [\"mask-top-left\", \"top left\"],\n [\"mask-top\", \"top\"],\n [\"mask-top-right\", \"top right\"],\n [\"mask-left\", \"left\"],\n [\"mask-center\", \"center\"],\n [\"mask-right\", \"right\"],\n [\"mask-bottom-left\", \"bottom left\"],\n [\"mask-bottom\", \"bottom\"],\n [\"mask-bottom-right\", \"bottom right\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-position\", value as string]], { category: 'effects' });\n});\nfunctionalUtility({\n name: \"mask-position\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (token.arbitrary) return [decl(\"mask-position\", value)];\n if (token.customProperty) return [decl(\"mask-position\", `var(${value})`)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"mask-position\", `var(${value})`)],\n description:\n \"mask-position utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Mask Repeat ---\n[\n [\"mask-repeat\", \"repeat\"],\n [\"mask-no-repeat\", \"no-repeat\"],\n [\"mask-repeat-x\", \"repeat-x\"],\n [\"mask-repeat-y\", \"repeat-y\"],\n [\"mask-repeat-space\", \"space\"],\n [\"mask-repeat-round\", \"round\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-repeat\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Size ---\n[\n [\"mask-auto\", \"auto\"],\n [\"mask-cover\", \"cover\"],\n [\"mask-contain\", \"contain\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-size\", value as string]], { category: 'effects' });\n});\n\n\n// --- Mask Type ---\n[\n [\"mask-type-alpha\", \"alpha\"],\n [\"mask-type-luminance\", \"luminance\"],\n ].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-type\", value as string]], { category: 'effects' });\n });\n\n// mask-size-[value] (arbitrary) & mask-size-(--custom-property)\nfunctionalUtility({\n name: \"mask-size\",\n prop: \"mask-size\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"mask-size utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Mask Image ---\nfunctionalUtility({\n name: \"mask\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (value === \"none\") return [decl(\"mask-image\", \"none\")];\n if (token.arbitrary) return [decl(\"mask-image\", value)];\n if (token.customProperty) return [decl(\"mask-image\", `var(${value})`)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"mask-image\", `var(${value})`)],\n description: \"mask-image utility (arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport {\n parseNumber,\n parseFraction,\n} from \"../core/utils\";\n\n// --- Layout: Isolation ---\nstaticUtility(\"isolate\", [[\"isolation\", \"isolate\"]], { category: 'layout' });\nstaticUtility(\"isolation-auto\", [[\"isolation\", \"auto\"]], { category: 'layout' });\n\n// --- Layout: Z-Index ---\nstaticUtility(\"z-auto\", [[\"z-index\", \"auto\"]], { category: 'layout' });\nfunctionalUtility({\n name: \"z\",\n prop: \"z-index\",\n themeKey: \"zIndex\",\n supportsNegative: true,\n supportsFraction: true,\n supportsArbitrary: true, // z-[999], z-[calc(var(--index)+1)] 등 지원\n supportsCustomProperty: true, // z-(--my-z) supported\n // but actual theme lookup is handled in ctx.theme\n handleBareValue: ({ value }) => {\n return parseNumber(value); // only allow integers\n },\n description: \"z-index utility\",\n category: \"layout\",\n});\n\n// --- Layout: Aspect Ratio ---\nstaticUtility(\"aspect-square\", [[\"aspect-ratio\", \"1 / 1\"]], { category: 'layout' });\nstaticUtility(\"aspect-video\", [[\"aspect-ratio\", \"var(--aspect-ratio-video)\"]], { category: 'layout' });\nstaticUtility(\"aspect-auto\", [[\"aspect-ratio\", \"auto\"]], { category: 'layout' });\nfunctionalUtility({\n name: \"aspect\",\n prop: \"aspect-ratio\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n description:\n \"aspect-ratio utility (theme, arbitrary, custom property, fraction supported)\",\n category: \"layout\",\n});\n\n// --- Layout: Columns ---\nstaticUtility(\"columns-auto\", [[\"columns\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"columns-3xs\", [[\"columns\", \"var(--container-3xs)\"]], { category: 'layout' });\nstaticUtility(\"columns-2xs\", [[\"columns\", \"var(--container-2xs)\"]], { category: 'layout' });\nstaticUtility(\"columns-xs\", [[\"columns\", \"var(--container-xs)\"]], { category: 'layout' });\nstaticUtility(\"columns-sm\", [[\"columns\", \"var(--container-sm)\"]], { category: 'layout' });\nstaticUtility(\"columns-md\", [[\"columns\", \"var(--container-md)\"]], { category: 'layout' });\nstaticUtility(\"columns-lg\", [[\"columns\", \"var(--container-lg)\"]], { category: 'layout' });\nstaticUtility(\"columns-xl\", [[\"columns\", \"var(--container-xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-2xl\", [[\"columns\", \"var(--container-2xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-3xl\", [[\"columns\", \"var(--container-3xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-4xl\", [[\"columns\", \"var(--container-4xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-5xl\", [[\"columns\", \"var(--container-5xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-6xl\", [[\"columns\", \"var(--container-6xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-7xl\", [[\"columns\", \"var(--container-7xl)\"]], { category: 'layout' });\nfunctionalUtility({\n name: \"columns\",\n prop: \"columns\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => parseNumber(value),\n description:\n \"columns utility (theme, arbitrary, custom property, fraction supported)\",\n category: \"layout\",\n});\n\n// --- Layout: Break After ---\nstaticUtility(\"break-after-auto\", [[\"break-after\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"break-after-avoid\", [[\"break-after\", \"avoid\"]], { category: 'layout' });\nstaticUtility(\"break-after-all\", [[\"break-after\", \"all\"]], { category: 'layout' });\nstaticUtility(\"break-after-avoid-page\", [[\"break-after\", \"avoid-page\"]], { category: 'layout' });\nstaticUtility(\"break-after-page\", [[\"break-after\", \"page\"]], { category: 'layout' });\nstaticUtility(\"break-after-left\", [[\"break-after\", \"left\"]], { category: 'layout' });\nstaticUtility(\"break-after-right\", [[\"break-after\", \"right\"]], { category: 'layout' });\nstaticUtility(\"break-after-column\", [[\"break-after\", \"column\"]], { category: 'layout' });\n\n// --- Layout: Break Before ---\nstaticUtility(\"break-before-auto\", [[\"break-before\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"break-before-avoid\", [[\"break-before\", \"avoid\"]], { category: 'layout' });\nstaticUtility(\"break-before-all\", [[\"break-before\", \"all\"]], { category: 'layout' });\nstaticUtility(\"break-before-avoid-page\", [[\"break-before\", \"avoid-page\"]], { category: 'layout' });\nstaticUtility(\"break-before-page\", [[\"break-before\", \"page\"]], { category: 'layout' });\nstaticUtility(\"break-before-left\", [[\"break-before\", \"left\"]], { category: 'layout' });\nstaticUtility(\"break-before-right\", [[\"break-before\", \"right\"]], { category: 'layout' });\nstaticUtility(\"break-before-column\", [[\"break-before\", \"column\"]], { category: 'layout' });\n\n// --- Layout: Break Inside ---\nstaticUtility(\"break-inside-auto\", [[\"break-inside\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"break-inside-avoid\", [[\"break-inside\", \"avoid\"]], { category: 'layout' });\nstaticUtility(\"break-inside-avoid-page\", [[\"break-inside\", \"avoid-page\"]], { category: 'layout' });\nstaticUtility(\"break-inside-avoid-column\", [[\"break-inside\", \"avoid-column\"]], { category: 'layout' });\n\n// --- Layout: Box Decoration Break ---\nstaticUtility(\"box-decoration-slice\", [[\"box-decoration-break\", \"slice\"]], { category: 'layout' });\nstaticUtility(\"box-decoration-clone\", [[\"box-decoration-break\", \"clone\"]], { category: 'layout' });\n\n// --- Layout: Box Sizing ---\n staticUtility(\"box-border\", [[\"box-sizing\", \"border-box\"]], { category: 'layout' });\nstaticUtility(\"box-content\", [[\"box-sizing\", \"content-box\"]], { category: 'layout' });\n\n// --- Layout: Display ---\nstaticUtility(\"block\", [[\"display\", \"block\"]], { category: 'layout' });\nstaticUtility(\"inline\", [[\"display\", \"inline\"]], { category: 'layout' });\nstaticUtility(\"inline-block\", [[\"display\", \"inline-block\"]], { category: 'layout' });\nstaticUtility(\"flow-root\", [[\"display\", \"flow-root\"]], { category: 'layout' });\nstaticUtility(\"flex\", [[\"display\", \"flex\"]], { category: 'layout' });\nstaticUtility(\"inline-flex\", [[\"display\", \"inline-flex\"]], { category: 'layout' });\nstaticUtility(\"grid\", [[\"display\", \"grid\"]], { category: 'layout' });\nstaticUtility(\"inline-grid\", [[\"display\", \"inline-grid\"]], { category: 'layout' });\nstaticUtility(\"contents\", [[\"display\", \"contents\"]], { category: 'layout' });\nstaticUtility(\"table\", [[\"display\", \"table\"]], { category: 'layout' });\nstaticUtility(\"inline-table\", [[\"display\", \"inline-table\"]], { category: 'layout' });\nstaticUtility(\"table-caption\", [[\"display\", \"table-caption\"]], { category: 'layout' });\nstaticUtility(\"table-cell\", [[\"display\", \"table-cell\"]], { category: 'layout' });\nstaticUtility(\"table-column\", [[\"display\", \"table-column\"]], { category: 'layout' });\nstaticUtility(\"table-column-group\", [[\"display\", \"table-column-group\"]], { category: 'layout' });\nstaticUtility(\"table-footer-group\", [[\"display\", \"table-footer-group\"]], { category: 'layout' });\nstaticUtility(\"table-header-group\", [[\"display\", \"table-header-group\"]], { category: 'layout' });\nstaticUtility(\"table-row-group\", [[\"display\", \"table-row-group\"]], { category: 'layout' });\nstaticUtility(\"table-row\", [[\"display\", \"table-row\"]], { category: 'layout' });\nstaticUtility(\"list-item\", [[\"display\", \"list-item\"]], { category: 'layout' });\nstaticUtility(\"hidden\", [[\"display\", \"none\"]], { category: 'layout' });\nstaticUtility(\"sr-only\", [\n [\"position\", \"absolute\"],\n [\"width\", \"1px\"],\n [\"height\", \"1px\"],\n [\"margin\", \"-1px\"],\n [\"padding\", \"0\"],\n [\"overflow\", \"hidden\"],\n [\"clip\", \"rect(0, 0, 0, 0)\"],\n [\"white-space\", \"nowrap\"],\n [\"border-width\", \"0\"],\n], { category: 'layout' });\n\nstaticUtility(\"not-sr-only\", [\n [\"position\", \"static\"],\n [\"width\", \"auto\"],\n [\"height\", \"auto\"],\n [\"margin\", \"0\"],\n [\"padding\", \"0\"],\n [\"overflow\", \"visible\"],\n [\"clip\", \"auto\"],\n [\"white-space\", \"normal\"],\n], { category: 'layout' });\n\n// --- Layout: Float ---\nstaticUtility(\"float-right\", [[\"float\", \"right\"]], { category: 'layout' });\nstaticUtility(\"float-left\", [[\"float\", \"left\"]], { category: 'layout' });\nstaticUtility(\"float-start\", [[\"float\", \"inline-start\"]], { category: 'layout' });\nstaticUtility(\"float-end\", [[\"float\", \"inline-end\"]], { category: 'layout' });\nstaticUtility(\"float-none\", [[\"float\", \"none\"]], { category: 'layout' });\n\n// --- Layout: Clear ---\nstaticUtility(\"clear-left\", [[\"clear\", \"left\"]], { category: 'layout' });\nstaticUtility(\"clear-right\", [[\"clear\", \"right\"]], { category: 'layout' });\nstaticUtility(\"clear-both\", [[\"clear\", \"both\"]], { category: 'layout' });\nstaticUtility(\"clear-start\", [[\"clear\", \"inline-start\"]], { category: 'layout' });\nstaticUtility(\"clear-end\", [[\"clear\", \"inline-end\"]], { category: 'layout' });\nstaticUtility(\"clear-none\", [[\"clear\", \"none\"]], { category: 'layout' });\n\n// --- Layout: Object Fit ---\nstaticUtility(\"object-contain\", [[\"object-fit\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"object-cover\", [[\"object-fit\", \"cover\"]], { category: 'layout' });\nstaticUtility(\"object-fill\", [[\"object-fit\", \"fill\"]], { category: 'layout' });\nstaticUtility(\"object-none\", [[\"object-fit\", \"none\"]], { category: 'layout' });\nstaticUtility(\"object-scale-down\", [[\"object-fit\", \"scale-down\"]], { category: 'layout' });\n\n// --- Layout: Object Position ---\nstaticUtility(\"object-top-left\", [[\"object-position\", \"top left\"]], { category: 'layout' });\nstaticUtility(\"object-top\", [[\"object-position\", \"top\"]], { category: 'layout' });\nstaticUtility(\"object-top-right\", [[\"object-position\", \"top right\"]], { category: 'layout' });\nstaticUtility(\"object-left\", [[\"object-position\", \"left\"]], { category: 'layout' });\nstaticUtility(\"object-center\", [[\"object-position\", \"center\"]], { category: 'layout' });\nstaticUtility(\"object-right\", [[\"object-position\", \"right\"]], { category: 'layout' });\nstaticUtility(\"object-bottom-left\", [[\"object-position\", \"bottom left\"]], { category: 'layout' });\nstaticUtility(\"object-bottom\", [[\"object-position\", \"bottom\"]], { category: 'layout' });\nstaticUtility(\"object-bottom-right\", [[\"object-position\", \"bottom right\"]], { category: 'layout' });\n\nfunctionalUtility({\n name: \"object\",\n prop: \"object-position\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description:\n \"object-position utility (arbitrary value, custom property supported)\",\n category: \"layout\",\n});\n\n// --- Layout: Overflow ---\n staticUtility(\"overflow-auto\", [[\"overflow\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overflow-hidden\", [[\"overflow\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"overflow-clip\", [[\"overflow\", \"clip\"]], { category: 'layout' });\nstaticUtility(\"overflow-visible\", [[\"overflow\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"overflow-scroll\", [[\"overflow\", \"scroll\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-auto\", [[\"overflow-x\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-auto\", [[\"overflow-y\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-hidden\", [[\"overflow-x\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-hidden\", [[\"overflow-y\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-clip\", [[\"overflow-x\", \"clip\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-clip\", [[\"overflow-y\", \"clip\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-visible\", [[\"overflow-x\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-visible\", [[\"overflow-y\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-scroll\", [[\"overflow-x\", \"scroll\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-scroll\", [[\"overflow-y\", \"scroll\"]], { category: 'layout' });\n\n// --- Layout: Overscroll Behavior ---\nstaticUtility(\"overscroll-auto\", [[\"overscroll-behavior\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overscroll-contain\", [[\"overscroll-behavior\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"overscroll-none\", [[\"overscroll-behavior\", \"none\"]], { category: 'layout' });\nstaticUtility(\"overscroll-x-auto\", [[\"overscroll-behavior-x\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overscroll-x-contain\", [[\"overscroll-behavior-x\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"overscroll-x-none\", [[\"overscroll-behavior-x\", \"none\"]], { category: 'layout' });\nstaticUtility(\"overscroll-y-auto\", [[\"overscroll-behavior-y\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overscroll-y-contain\", [[\"overscroll-behavior-y\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"overscroll-y-none\", [[\"overscroll-behavior-y\", \"none\"]], { category: 'layout' });\n\n// --- Layout: Position ---\nstaticUtility(\"static\", [[\"position\", \"static\"]], { category: 'layout' });\nstaticUtility(\"fixed\", [[\"position\", \"fixed\"]], { category: 'layout' });\nstaticUtility(\"absolute\", [[\"position\", \"absolute\"]], { category: 'layout' });\nstaticUtility(\"relative\", [[\"position\", \"relative\"]], { category: 'layout' });\nstaticUtility(\"sticky\", [[\"position\", \"sticky\"]], { category: 'layout' });\n\n// --- Layout: Inset/Top/Right/Bottom/Left ---\n[\n [\"inset-x\", \"inset-inline\"],\n [\"inset-y\", \"inset-block\"],\n [\"inset\", \"inset\"],\n [\"start\", \"inset-inline-start\"],\n [\"end\", \"inset-inline-end\"],\n [\"top\", \"top\"],\n [\"right\", \"right\"],\n [\"bottom\", \"bottom\"],\n [\"left\", \"left\"],\n].forEach(([name, prop]) => {\n // inset\n staticUtility(`${name}-auto`, [[prop, \"auto\"]], { category: 'layout' });\n staticUtility(`${name}-full`, [[prop, \"100%\"]], { category: 'layout' });\n staticUtility(`-${name}-full`, [[prop, \"-100%\"]], { category: 'layout' });\n staticUtility(`${name}-px`, [[prop, \"1px\"]], { category: 'layout' });\n staticUtility(`-${name}-px`, [[prop, \"-1px\"]], { category: 'layout' });\n functionalUtility({\n name: name,\n prop: prop,\n supportsNegative: true,\n supportsFraction: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n const frac = parseFraction(value);\n if (frac) return frac;\n return null;\n },\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * -${value})`;\n }\n const frac = parseFraction(value);\n if (frac) return `-${frac}`;\n return null;\n },\n description: `${name} utility (spacing, fraction, px, full, auto, custom property, arbitrary, negative supported)`,\n category: \"layout\",\n });\n});\n\n// --- Layout: Visibility ---\nstaticUtility(\"visible\", [[\"visibility\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"invisible\", [[\"visibility\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"collapse\", [[\"visibility\", \"collapse\"]], { category: 'layout' });\n\n// --- Layout: Gap ---\nfunctionalUtility({\n name: \"gap-x\",\n prop: \"column-gap\",\n supportsArbitrary: true, // gap-x-[10vw]\n supportsCustomProperty: true, // gap-x-(--my-gap-x)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"column-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"column-gap\", `var(${value})`)],\n description: \"gap-x utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap-y\",\n prop: \"row-gap\",\n supportsArbitrary: true, // gap-y-[10vw]\n supportsCustomProperty: true, // gap-y-(--my-gap-y)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"row-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"row-gap\", `var(${value})`)],\n description: \"gap-y utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap\",\n prop: \"gap\",\n supportsArbitrary: true, // gap-[10vw]\n supportsCustomProperty: true, // gap-(--my-gap)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"gap\", `var(${value})`)],\n description: \"gap utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport {\n parseFractionOrNumber,\n parseNumber,\n parseFraction,\n} from \"../core/utils\";\n\n\n// --- Flexbox & Grid: flex-basis ---\nstaticUtility(\"basis-full\", [[\"flex-basis\", \"100%\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-auto\", [[\"flex-basis\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-3xs\", [[\"flex-basis\", \"var(--container-3xs)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-2xs\", [[\"flex-basis\", \"var(--container-2xs)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-xs\", [[\"flex-basis\", \"var(--container-xs)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-sm\", [[\"flex-basis\", \"var(--container-sm)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-md\", [[\"flex-basis\", \"var(--container-md)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-lg\", [[\"flex-basis\", \"var(--container-lg)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-xl\", [[\"flex-basis\", \"var(--container-xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-2xl\", [[\"flex-basis\", \"var(--container-2xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-3xl\", [[\"flex-basis\", \"var(--container-3xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-4xl\", [[\"flex-basis\", \"var(--container-4xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-5xl\", [[\"flex-basis\", \"var(--container-5xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-6xl\", [[\"flex-basis\", \"var(--container-6xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-7xl\", [[\"flex-basis\", \"var(--container-7xl)\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"basis\",\n prop: \"flex-basis\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--container-${value}) * 1px)`;\n }\n const frac = parseFraction(value);\n if (frac) return frac;\n return null;\n },\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--container-${value}) * -1px)`;\n }\n const frac = parseFraction(value);\n if (frac) return `-${frac}`;\n return null;\n },\n description:\n \"flex-basis utility (theme, arbitrary, custom property, fraction supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: flex-direction ---\nstaticUtility(\"flex-row\", [[\"flex-direction\", \"row\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-row-reverse\", [[\"flex-direction\", \"row-reverse\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-col\", [[\"flex-direction\", \"column\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-col-reverse\", [[\"flex-direction\", \"column-reverse\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: flex-wrap ---\nstaticUtility(\"flex-wrap\", [[\"flex-wrap\", \"wrap\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-wrap-reverse\", [[\"flex-wrap\", \"wrap-reverse\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-nowrap\", [[\"flex-wrap\", \"nowrap\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Flex ---\nstaticUtility(\"flex-auto\", [[\"flex\", \"1 1 auto\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-initial\", [[\"flex\", \"0 1 auto\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-none\", [[\"flex\", \"none\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"flex\",\n supportsArbitrary: true, // flex-[3_1_auto], flex-[2], flex-[0_0_100%], etc.\n supportsCustomProperty: true, // flex-(--my-flex)\n supportsFraction: true, // flex-1/2 → flex: 50%;\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) return value;\n const frac = parseFraction(value);\n if (frac) return `calc(${frac})`;\n return null;\n },\n handle: (value) => [decl(\"flex\", value)],\n description:\n \"flex shorthand utility (number, fraction, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Flex Grow ---\nstaticUtility(\"grow\", [[\"flex-grow\", \"1\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"grow\",\n prop: \"flex-grow\",\n supportsArbitrary: true, // grow-[25vw], grow-[2], grow-[var(--factor)], etc.\n supportsCustomProperty: true, // grow-(--my-grow)\n handleBareValue: ({ value }) => parseNumber(value),\n handle: (value) => [decl(\"flex-grow\", value)],\n description: \"flex-grow utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Flex Shrink ---\nstaticUtility(\"shrink\", [[\"flex-shrink\", \"1\"]], { category: 'flex-grid' });\nstaticUtility(\"shrink-0\", [[\"flex-shrink\", \"0\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"shrink\",\n prop: \"flex-shrink\",\n supportsArbitrary: true, // shrink-[2], shrink-[calc(100vw-var(--sidebar))], etc.\n supportsCustomProperty: true, // shrink-(--my-shrink)\n handleBareValue: ({ value }) => parseNumber(value),\n description: \"flex-shrink utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Order ---\nstaticUtility(\"order-first\", [[\"order\", \"calc(-infinity)\"]], { category: 'flex-grid' });\nstaticUtility(\"order-last\", [[\"order\", \"calc(infinity)\"]], { category: 'flex-grid' });\nstaticUtility(\"order-none\", [[\"order\", \"0\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"order\",\n prop: \"order\",\n supportsNegative: true, // -order-1 → order: calc(1 * -1)\n supportsArbitrary: true, // order-[min(var(--total-items),10)], etc.\n supportsCustomProperty: true, // order-(--my-order)\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"order utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Template Columns ---\nstaticUtility(\"grid-cols-none\", [[\"grid-template-columns\", \"none\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-cols-subgrid\", [[\"grid-template-columns\", \"subgrid\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"grid-cols\",\n prop: \"grid-template-columns\",\n supportsArbitrary: true, // grid-cols-[200px_minmax(900px,_1fr)_100px], etc.\n supportsCustomProperty: true, // grid-cols-(--my-grid-cols)\n handleBareValue: ({ value }) =>\n parseFractionOrNumber(value, { repeat: true }),\n description:\n \"grid-template-columns utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Template Rows ---\nstaticUtility(\"grid-rows-none\", [[\"grid-template-rows\", \"none\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-rows-subgrid\", [[\"grid-template-rows\", \"subgrid\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"grid-rows\",\n prop: \"grid-template-rows\",\n supportsArbitrary: true, // grid-rows-[200px_minmax(900px,_1fr)_100px], etc.\n supportsCustomProperty: true, // grid-rows-(--my-grid-rows)\n handleBareValue: ({ value }) =>\n parseFractionOrNumber(value, { repeat: true }),\n handle: (value) => {\n // grid-rows-[200px_minmax(900px,_1fr)_100px]\n // Just output as-is (spaces instead of underscores)\n if (typeof value === \"string\") {\n return [decl(\"grid-template-rows\", value.replace(/_/g, \" \"))];\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\"grid-template-rows\", `var(${value})`),\n ],\n description:\n \"grid-template-rows utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Row ---\n// row-span utilities\nstaticUtility(\"row-span-full\", [[\"grid-row\", \"1 / -1\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row-span\",\n prop: \"grid-row\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) return `span ${value} / span ${value}`;\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\"grid-row\", `span var(${value}) / span var(${value})`),\n ],\n handle: (value) => {\n if (parseNumber(value))\n return [decl(\"grid-row\", `span ${value} / span ${value}`)];\n // arbitrary value: row-span-[5] → span 5 / span 5\n return null;\n },\n description:\n \"grid-row span utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n// row-start utilities\nstaticUtility(\"row-start-auto\", [[\"grid-row-start\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row-start\",\n prop: \"grid-row-start\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-row-start\", `var(${value})`)],\n handle: (value) => {\n if (parseNumber(value)) return [decl(\"grid-row-start\", value)];\n if (typeof value === \"string\") return [decl(\"grid-row-start\", value)];\n return null;\n },\n description:\n \"grid-row-start utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n// row-end utilities\nstaticUtility(\"row-end-auto\", [[\"grid-row-end\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row-end\",\n prop: \"grid-row-end\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-row-end\", `var(${value})`)],\n handle: (value) => {\n if (parseNumber(value)) return [decl(\"grid-row-end\", value)];\n if (typeof value === \"string\") return [decl(\"grid-row-end\", value)];\n return null;\n },\n description:\n \"grid-row-end utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n// row-auto, row-<number>, -row-<number>, row-(<custom-property>), row-[value]\nstaticUtility(\"row-auto\", [[\"grid-row\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row\",\n prop: \"grid-row\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-row\", `var(${value})`)],\n handle: (value) => {\n if (parseNumber(value)) return [decl(\"grid-row\", value)];\n if (typeof value === \"string\") return [decl(\"grid-row\", value)];\n return null;\n },\n description:\n \"grid-row utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Auto Flow ---\n staticUtility(\"grid-flow-row\", [[\"grid-auto-flow\", \"row\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-col\", [[\"grid-auto-flow\", \"column\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-dense\", [[\"grid-auto-flow\", \"dense\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-row-dense\", [[\"grid-auto-flow\", \"row dense\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-col-dense\", [[\"grid-auto-flow\", \"column dense\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Grid Auto Columns ---\nstaticUtility(\"auto-cols-auto\", [[\"grid-auto-columns\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-cols-min\", [[\"grid-auto-columns\", \"min-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-cols-max\", [[\"grid-auto-columns\", \"max-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-cols-fr\", [[\"grid-auto-columns\", \"minmax(0, 1fr)\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"auto-cols\",\n prop: \"grid-auto-columns\",\n supportsArbitrary: true, // auto-cols-[minmax(0,2fr)]\n supportsCustomProperty: true, // auto-cols-(--my-auto-cols)\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"grid-auto-columns\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-auto-columns\", `var(${value})`)],\n description:\n \"grid-auto-columns utility (static, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Auto Rows ---\nstaticUtility(\"auto-rows-auto\", [[\"grid-auto-rows\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-rows-min\", [[\"grid-auto-rows\", \"min-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-rows-max\", [[\"grid-auto-rows\", \"max-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-rows-fr\", [[\"grid-auto-rows\", \"minmax(0, 1fr)\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"auto-rows\",\n prop: \"grid-auto-rows\",\n supportsArbitrary: true, // auto-rows-[minmax(0,2fr)]\n supportsCustomProperty: true, // auto-rows-(--my-auto-rows)\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"grid-auto-rows\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-auto-rows\", `var(${value})`)],\n description:\n \"grid-auto-rows utility (static, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Gap ---\nfunctionalUtility({\n name: \"gap-x\",\n prop: \"column-gap\",\n supportsArbitrary: true, // gap-x-[10vw]\n supportsCustomProperty: true, // gap-x-(--my-gap-x)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"column-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"column-gap\", `var(${value})`)],\n description: \"gap-x utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap-y\",\n prop: \"row-gap\",\n supportsArbitrary: true, // gap-y-[10vw]\n supportsCustomProperty: true, // gap-y-(--my-gap-y)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"row-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"row-gap\", `var(${value})`)],\n description: \"gap-y utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap\",\n prop: \"gap\",\n supportsArbitrary: true, // gap-[10vw]\n supportsCustomProperty: true, // gap-(--my-gap)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"gap\", `var(${value})`)],\n description: \"gap utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\n\n// --- Flexbox & Grid: Justify Content ---\nstaticUtility(\"justify-start\", [[\"justify-content\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-end\", [[\"justify-content\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-end-safe\", [[\"justify-content\", \"safe flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-center\", [[\"justify-content\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-center-safe\", [[\"justify-content\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-between\", [[\"justify-content\", \"space-between\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-around\", [[\"justify-content\", \"space-around\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-evenly\", [[\"justify-content\", \"space-evenly\"]], { category: 'flex-grid' });\n staticUtility(\"justify-stretch\", [[\"justify-content\", \"stretch\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-baseline\", [[\"justify-content\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-normal\", [[\"justify-content\", \"normal\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Justify Items ---\nstaticUtility(\"justify-items-start\", [[\"justify-items\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-end\", [[\"justify-items\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-end-safe\", [[\"justify-items\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-center\", [[\"justify-items\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-center-safe\", [[\"justify-items\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-stretch\", [[\"justify-items\", \"stretch\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-normal\", [[\"justify-items\", \"normal\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Justify Self ---\nstaticUtility(\"justify-self-auto\", [[\"justify-self\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-start\", [[\"justify-self\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-center\", [[\"justify-self\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-center-safe\", [[\"justify-self\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-end\", [[\"justify-self\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-end-safe\", [[\"justify-self\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-stretch\", [[\"justify-self\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Align Content ---\n staticUtility(\"content-normal\", [[\"align-content\", \"normal\"]], { category: 'flex-grid' });\nstaticUtility(\"content-center\", [[\"align-content\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"content-start\", [[\"align-content\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"content-end\", [[\"align-content\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"content-between\", [[\"align-content\", \"space-between\"]], { category: 'flex-grid' });\nstaticUtility(\"content-around\", [[\"align-content\", \"space-around\"]], { category: 'flex-grid' });\nstaticUtility(\"content-evenly\", [[\"align-content\", \"space-evenly\"]], { category: 'flex-grid' });\nstaticUtility(\"content-baseline\", [[\"align-content\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"content-stretch\", [[\"align-content\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Align Items ---\nstaticUtility(\"items-start\", [[\"align-items\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"items-end\", [[\"align-items\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"items-end-safe\", [[\"align-items\", \"safe flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"items-center\", [[\"align-items\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"items-center-safe\", [[\"align-items\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"items-baseline\", [[\"align-items\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"items-baseline-last\", [[\"align-items\", \"last baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"items-stretch\", [[\"align-items\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Align Self ---\nstaticUtility(\"self-auto\", [[\"align-self\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"self-start\", [[\"align-self\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"self-end\", [[\"align-self\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"self-end-safe\", [[\"align-self\", \"safe flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"self-center\", [[\"align-self\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"self-center-safe\", [[\"align-self\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"self-stretch\", [[\"align-self\", \"stretch\"]], { category: 'flex-grid' });\nstaticUtility(\"self-baseline\", [[\"align-self\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"self-baseline-last\", [[\"align-self\", \"last baseline\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Place Content ---\nstaticUtility(\"place-content-center\", [[\"place-content\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-center-safe\", [[\"place-content\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-start\", [[\"place-content\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-end\", [[\"place-content\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-end-safe\", [[\"place-content\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-between\", [[\"place-content\", \"space-between\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-around\", [[\"place-content\", \"space-around\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-evenly\", [[\"place-content\", \"space-evenly\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-baseline\", [[\"place-content\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-stretch\", [[\"place-content\", \"stretch\"]], { category: 'flex-grid' } );\n\n// --- Flexbox & Grid: Place Items ---\nstaticUtility(\"place-items-start\", [[\"place-items\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-end\", [[\"place-items\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-end-safe\", [[\"place-items\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-center\", [[\"place-items\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-center-safe\", [[\"place-items\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-baseline\", [[\"place-items\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-stretch\", [[\"place-items\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Place Self ---\nstaticUtility(\"place-self-auto\", [[\"place-self\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-start\", [[\"place-self\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-end\", [[\"place-self\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-end-safe\", [[\"place-self\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-center\", [[\"place-self\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-center-safe\", [[\"place-self\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-stretch\", [[\"place-self\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Grid Column ---\n// col-span utilities\nstaticUtility(\"col-span-full\", [[\"grid-column\", \"1 / -1\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col-span\",\n prop: \"grid-column\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) return `span ${value} / span ${value}`;\n return null;\n },\n handleCustomProperty: (value, _ctx, _token) => {\n return [decl(\"grid-column\", `span var(${value}) / span var(${value})`)];\n },\n handle: (value, _ctx, _token) => {\n if (parseNumber(value))\n return [decl(\"grid-column\", `span ${value} / span ${value}`)];\n return null;\n },\n description:\n \"grid-column span utility (number, arbitrary, custom property supported)\",\n category: \"grid\",\n});\n\n// col-start utilities\nstaticUtility(\"col-start-auto\", [[\"grid-column-start\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col-start\",\n prop: \"grid-column-start\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"grid-column-start utility (number, negative, arbitrary, custom property supported)\",\n category: \"grid\",\n});\n\n// col-end utilities\nstaticUtility(\"col-end-auto\", [[\"grid-column-end\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col-end\",\n prop: \"grid-column-end\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"grid-column-end utility (number, negative, arbitrary, custom property supported)\",\n category: \"grid\",\n});\n\n// col-auto, col-<number>, -col-<number>, col-(<custom-property>), col-[value]\nstaticUtility(\"col-auto\", [[\"grid-column\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col\",\n prop: \"grid-column\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"grid-column utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl, rule } from \"../core/ast\";\n\n// Padding utilities (p-*, px-*, py-*, ps-*, pe-*, pt-*, pr-*, pb-*, pl-*)\n[\n [\"px\", \"padding-inline\"],\n [\"py\", \"padding-block\"],\n [\"ps\", \"padding-inline-start\"],\n [\"pe\", \"padding-inline-end\"],\n [\"pt\", \"padding-top\"],\n [\"pr\", \"padding-right\"],\n [\"pb\", \"padding-bottom\"],\n [\"pl\", \"padding-left\"],\n [\"p\", \"padding\"],\n].forEach(([name, prop]) => {\n staticUtility(`${name}-px`, [[prop, \"1px\"]], { category: 'spacing' });\n functionalUtility({\n name,\n prop,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n description: `${name} utility (number, arbitrary, custom property supported)`,\n category: \"spacing\",\n });\n});\n\n// Margin utilities (m-*, mx-*, my-*, ms-*, me-*, mt-*, mr-*, mb-*, ml-*)\n[\n [\"mx\", \"margin-inline\"],\n [\"my\", \"margin-block\"],\n [\"ms\", \"margin-inline-start\"],\n [\"me\", \"margin-inline-end\"],\n [\"mt\", \"margin-top\"],\n [\"mr\", \"margin-right\"],\n [\"mb\", \"margin-bottom\"],\n [\"ml\", \"margin-left\"],\n [\"m\", \"margin\"],\n].forEach(([name, prop]) => {\n staticUtility(`${name}-auto`, [[prop, \"auto\"]], { category: 'spacing' });\n staticUtility(`${name}-px`, [[prop, \"1px\"]], { category: 'spacing' });\n staticUtility(`-${name}-px`, [[prop, \"-1px\"]], { category: 'spacing' });\n functionalUtility({\n name,\n prop,\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n description: `${name} margin utility (number, negative, arbitrary, custom property, auto, px supported)`,\n category: \"spacing\",\n });\n});\n\n// --- Spacing: space-x, space-y, space-x-reverse, space-y-reverse ---\n// spacing utilities reference\n\n// space-x-*, -space-x-*, space-x-px, -space-x-px, space-x-[...], space-x-(...)\n\nstaticUtility(\"space-x-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-x-reverse\", \"0\"],\n [\n \"margin-inline-start\",\n \"calc(1px * calc(1 - var(--baro-space-x-reverse)))\",\n ],\n [\"margin-inline-end\", \"calc(1px * var(--baro-space-x-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"-space-x-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-x-reverse\", \"0\"],\n [\n \"margin-inline-start\",\n \"calc(-1px * calc(1 - var(--baro-space-x-reverse)))\",\n ],\n [\"margin-inline-end\", \"calc(-1px * var(--baro-space-x-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"space-x-reverse\", [\n [\"& > :not([hidden]) ~ :not([hidden])\", [[\"--baro-space-x-reverse\", \"1\"]]],\n], { category: 'spacing' });\n\nfunctionalUtility({\n name: \"space-x\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n handle: (value, ctx, token) => {\n let v = value;\n if (typeof v === \"number\" || /^-?\\d+(\\.\\d+)?$/.test(v)) {\n v = `calc(var(--spacing) * ${token.negative ? \"-\" : \"\"}${v})`;\n }\n return [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-x-reverse\", \"0\"),\n decl(\n \"margin-inline-start\",\n `calc(${v} * calc(1 - var(--baro-space-x-reverse)))`\n ),\n decl(\"margin-inline-end\", `calc(${v} * var(--baro-space-x-reverse))`),\n ]),\n ];\n },\n handleCustomProperty: (value) => [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-x-reverse\", \"0\"),\n decl(\n \"margin-inline-start\",\n `calc(var(${value}) * calc(1 - var(--baro-space-x-reverse)))`\n ),\n decl(\n \"margin-inline-end\",\n `calc(var(${value}) * var(--baro-space-x-reverse))`\n ),\n ]),\n ],\n description:\n \"space-x utility (number, negative, px, arbitrary, custom property, reverse supported)\",\n category: \"spacing\",\n});\n\n// space-y-*, -space-y-*, space-y-px, -space-y-px, space-y-[...], space-y-(...)\n\nstaticUtility(\"space-y-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-y-reverse\", \"0\"],\n [\"margin-block-start\", \"calc(1px * calc(1 - var(--baro-space-y-reverse)))\"],\n [\"margin-block-end\", \"calc(1px * var(--baro-space-y-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"-space-y-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-y-reverse\", \"0\"],\n [\n \"margin-block-start\",\n \"calc(-1px * calc(1 - var(--baro-space-y-reverse)))\",\n ],\n [\"margin-block-end\", \"calc(-1px * var(--baro-space-y-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"space-y-reverse\", [\n [\"& > :not([hidden]) ~ :not([hidden])\", [[\"--baro-space-y-reverse\", \"1\"]]],\n], { category: 'spacing' });\n\nfunctionalUtility({\n name: \"space-y\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n handle: (value, ctx, token) => {\n let v = value;\n if (typeof v === \"number\" || /^-?\\d+(\\.\\d+)?$/.test(v)) {\n v = `calc(var(--spacing) * ${token.negative ? \"-\" : \"\"}${v})`;\n }\n return [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-y-reverse\", \"0\"),\n decl(\n \"margin-block-start\",\n `calc(${v} * calc(1 - var(--baro-space-y-reverse)))`\n ),\n decl(\"margin-block-end\", `calc(${v} * var(--baro-space-y-reverse))`),\n ]),\n ];\n },\n handleCustomProperty: (value) => [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-y-reverse\", \"0\"),\n decl(\n \"margin-block-start\",\n `calc(var(${value}) * calc(1 - var(--baro-space-y-reverse)))`\n ),\n decl(\n \"margin-block-end\",\n `calc(var(${value}) * var(--baro-space-y-reverse))`\n ),\n ]),\n ],\n description:\n \"space-y utility (number, negative, px, arbitrary, custom property, reverse supported)\",\n category: \"spacing\",\n});","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport {\n parseFractionOrNumber,\n parseNumber,\n} from \"../core/utils\";\n\n// Import layout utilities\nimport \"./layout\";\nimport \"./flexbox-grid\";\nimport \"./spacing\";\n\n\n// --- Sizing: width (w-*) and size (size-*) ---\n// width documentation\n\n// w-* static values\n[\n ['w-auto', 'auto'],\n ['w-px', '1px'],\n ['w-full', '100%'],\n ['w-screen', '100vw'],\n ['w-dvw', '100dvw'],\n ['w-dvh', '100dvh'],\n ['w-lvw', '100lvw'],\n ['w-lvh', '100lvh'],\n ['w-svw', '100svw'],\n ['w-svh', '100svh'],\n ['w-min', 'min-content'],\n ['w-max', 'max-content'],\n ['w-fit', 'fit-content'],\n ['w-3xs', 'var(--container-3xs)'],\n ['w-2xs', 'var(--container-2xs)'],\n ['w-xs', 'var(--container-xs)'],\n ['w-sm', 'var(--container-sm)'],\n ['w-md', 'var(--container-md)'],\n ['w-lg', 'var(--container-lg)'],\n ['w-xl', 'var(--container-xl)'],\n ['w-2xl', 'var(--container-2xl)'],\n ['w-3xl', 'var(--container-3xl)'],\n ['w-4xl', 'var(--container-4xl)'],\n ['w-5xl', 'var(--container-5xl)'],\n ['w-6xl', 'var(--container-6xl)'],\n ['w-7xl', 'var(--container-7xl)'],\n].forEach(([name, value]) => {\n staticUtility(name, [['width', value]]);\n});\n\n// w-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'w',\n prop: 'width',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n \n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'width utility (spacing, fraction, arbitrary, custom property, container scale, static supported)',\n category: 'sizing',\n});\n\n// size-* static values\n[\n ['size-auto', ['auto', 'auto']],\n ['size-px', ['1px', '1px']],\n ['size-full', ['100%', '100%']],\n ['size-dvw', ['100dvw', '100dvw']],\n ['size-dvh', ['100dvh', '100dvh']],\n ['size-lvw', ['100lvw', '100lvw']],\n ['size-lvh', ['100lvh', '100lvh']],\n ['size-svw', ['100svw', '100svw']],\n ['size-svh', ['100svh', '100svh']],\n ['size-min', ['min-content', 'min-content']],\n ['size-max', ['max-content', 'max-content']],\n ['size-fit', ['fit-content', 'fit-content']],\n].forEach(([name, [w, h]]) => {\n staticUtility(name as string, [['width', w], ['height', h]]);\n});\n\n// size-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'size',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n handle: (value) => {\n // arbitrary, custom property, etc.\n return [\n decl('width', value),\n decl('height', value),\n ];\n },\n handleCustomProperty: (value) => [\n decl('width', `var(${value})`),\n decl('height', `var(${value})`),\n ],\n description: 'size utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: height (h-*) ---\n// height documentation\n\n// h-* static values\n[\n ['h-auto', 'auto'],\n ['h-px', '1px'],\n ['h-full', '100%'],\n ['h-screen', '100vh'],\n ['h-dvh', '100dvh'],\n ['h-lvh', '100lvh'],\n ['h-svh', '100svh'],\n ['h-min', 'min-content'],\n ['h-max', 'max-content'],\n ['h-fit', 'fit-content'],\n].forEach(([name, value]) => {\n staticUtility(name, [['height', value]]);\n});\n\n// h-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'h',\n prop: 'height',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'height utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: min-height (min-h-*) ---\n// min-height documentation\n\n// min-h-* static values\n[\n ['min-h-0', '0px'],\n ['min-h-px', '1px'],\n ['min-h-full', '100%'],\n ['min-h-screen', '100vh'],\n ['min-h-dvh', '100dvh'],\n ['min-h-lvh', '100lvh'],\n ['min-h-svh', '100svh'],\n ['min-h-min', 'min-content'],\n ['min-h-max', 'max-content'],\n ['min-h-fit', 'fit-content'],\n].forEach(([name, value]) => {\n staticUtility(name, [['min-height', value]], { category: 'sizing' });\n});\n\n// min-h-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'min-h',\n prop: 'min-height',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'min-height utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: max-height (max-h-*) ---\n// max-height documentation\n\n// max-h-* static values\n[\n ['max-h-px', '1px'],\n ['max-h-full', '100%'],\n ['max-h-screen', '100vh'],\n ['max-h-dvh', '100dvh'],\n ['max-h-lvh', '100lvh'],\n ['max-h-svh', '100svh'],\n ['max-h-min', 'min-content'],\n ['max-h-max', 'max-content'],\n ['max-h-fit', 'fit-content'],\n ['max-h-none', 'none'],\n].forEach(([name, value]) => {\n staticUtility(name, [['max-height', value]], { category: 'sizing' });\n});\n\n// max-h-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'max-h',\n prop: 'max-height',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'max-height utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: min-width (min-w-*) ---\n// min-width documentation\n\n// min-w-* static values\n[\n ['min-w-auto', 'auto'],\n ['min-w-px', '1px'],\n ['min-w-full', '100%'],\n ['min-w-screen', '100vw'],\n ['min-w-dvw', '100dvw'],\n ['min-w-dvh', '100dvh'],\n ['min-w-lvw', '100lvw'],\n ['min-w-lvh', '100lvh'],\n ['min-w-svw', '100svw'],\n ['min-w-svh', '100svh'],\n ['min-w-min', 'min-content'],\n ['min-w-max', 'max-content'],\n ['min-w-fit', 'fit-content'],\n ['min-w-3xs', 'var(--container-3xs)'],\n ['min-w-2xs', 'var(--container-2xs)'],\n ['min-w-xs', 'var(--container-xs)'],\n ['min-w-sm', 'var(--container-sm)'],\n ['min-w-md', 'var(--container-md)'],\n ['min-w-lg', 'var(--container-lg)'],\n ['min-w-xl', 'var(--container-xl)'],\n ['min-w-2xl', 'var(--container-2xl)'],\n ['min-w-3xl', 'var(--container-3xl)'],\n ['min-w-4xl', 'var(--container-4xl)'],\n ['min-w-5xl', 'var(--container-5xl)'],\n ['min-w-6xl', 'var(--container-6xl)'],\n ['min-w-7xl', 'var(--container-7xl)'],\n].forEach(([name, value]) => {\n staticUtility(name, [['min-width', value]], { category: 'sizing' });\n});\n\n// min-w-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'min-w',\n prop: 'min-width',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'min-width utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n\n// --- Sizing: max-width (max-w-*) ---\n// max-width documentation\n\n// max-w-* static values\n[\n ['max-w-none', 'none'],\n ['max-w-xs', 'var(--container-xs)'],\n ['max-w-sm', 'var(--container-sm)'],\n ['max-w-md', 'var(--container-md)'],\n ['max-w-lg', 'var(--container-lg)'],\n ['max-w-xl', 'var(--container-xl)'],\n ['max-w-2xl', 'var(--container-2xl)'],\n ['max-w-3xl', 'var(--container-3xl)'],\n ['max-w-4xl', 'var(--container-4xl)'],\n ['max-w-5xl', 'var(--container-5xl)'],\n ['max-w-6xl', 'var(--container-6xl)'],\n ['max-w-7xl', 'var(--container-7xl)'],\n].forEach(([name, value]) => {\n staticUtility(name, [['max-width', value]], { category: 'sizing' });\n});\n\n// max-w-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'max-w',\n prop: 'max-width',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'max-width utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport {\n parseNumber,\n parseLength,\n} from \"../core/utils\";\n\n// --- Typography: Font Family ---\nstaticUtility(\"font-sans\", [[\"font-family\", \"var(--font-family-sans)\"]], { category: 'typography' });\nstaticUtility(\"font-serif\", [[\"font-family\", \"var(--font-family-serif)\"]], { category: 'typography' });\nstaticUtility(\"font-mono\", [[\"font-family\", \"var(--font-family-mono)\"]], { category: 'typography' });\n\n// --- Typography: Font Size ---\nstaticUtility(\"text-xs\", [[\"font-size\", \"var(--text-xs)\"], [\"line-height\", \"var(--text-xs--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-sm\", [[\"font-size\", \"var(--text-sm)\"], [\"line-height\", \"var(--text-sm--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-base\", [[\"font-size\", \"var(--text-base)\"], [\"line-height\", \"var(--text-base--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-lg\", [[\"font-size\", \"var(--text-lg)\"], [\"line-height\", \"var(--text-lg--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-xl\", [[\"font-size\", \"var(--text-xl)\"], [\"line-height\", \"var(--text-xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-2xl\", [[\"font-size\", \"var(--text-2xl)\"], [\"line-height\", \"var(--text-2xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-3xl\", [[\"font-size\", \"var(--text-3xl)\"], [\"line-height\", \"var(--text-3xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-4xl\", [[\"font-size\", \"var(--text-4xl)\"], [\"line-height\", \"var(--text-4xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-5xl\", [[\"font-size\", \"var(--text-5xl)\"], [\"line-height\", \"var(--text-5xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-6xl\", [[\"font-size\", \"var(--text-6xl)\"], [\"line-height\", \"var(--text-6xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-7xl\", [[\"font-size\", \"var(--text-7xl)\"], [\"line-height\", \"var(--text-7xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-8xl\", [[\"font-size\", \"var(--text-8xl)\"], [\"line-height\", \"var(--text-8xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-9xl\", [[\"font-size\", \"var(--text-9xl)\"], [\"line-height\", \"var(--text-9xl--line-height)\"]], { category: 'typography' });\n\n\n// --- Typography: Font Weight ---\nstaticUtility(\"font-thin\", [[\"font-weight\", \"var(--font-weight-thin)\"]], { category: 'typography' });\nstaticUtility(\"font-extralight\", [[\"font-weight\", \"var(--font-weight-extralight)\"]], { category: 'typography' });\nstaticUtility(\"font-light\", [[\"font-weight\", \"var(--font-weight-light)\"]], { category: 'typography' });\nstaticUtility(\"font-normal\", [[\"font-weight\", \"var(--font-weight-normal)\"]], { category: 'typography' });\nstaticUtility(\"font-medium\", [[\"font-weight\", \"var(--font-weight-medium)\"]], { category: 'typography' });\nstaticUtility(\"font-semibold\", [[\"font-weight\", \"var(--font-weight-semibold)\"]], { category: 'typography' });\nstaticUtility(\"font-bold\", [[\"font-weight\", \"var(--font-weight-bold)\"]], { category: 'typography' });\nstaticUtility(\"font-extrabold\", [[\"font-weight\", \"var(--font-weight-extrabold)\"]], { category: 'typography' });\nstaticUtility(\"font-black\", [[\"font-weight\", \"var(--font-weight-black)\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"font\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"font-weight\", value)];\n }\n return [decl(\"font-family\", value)];\n },\n handleCustomProperty: (value) => {\n\n if (value.startsWith(\"font-name:\")) {\n return [decl(\"font-family\", `var(${value.replace(\"font-name:\", \"\")})`)];\n }\n return [decl(\"font-weight\", `var(${value})`)];\n },\n description: \"font-weight utility (theme, number, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Font Style ---\nstaticUtility(\"italic\", [[\"font-style\", \"italic\"]], { category: 'typography' });\nstaticUtility(\"not-italic\", [[\"font-style\", \"normal\"]], { category: 'typography' });\n\n// --- Typography: Letter Spacing ---\nstaticUtility(\"tracking-tighter\", [[\"letter-spacing\", \"var(--letter-spacing-tighter)\"]], { category: 'typography' });\nstaticUtility(\"tracking-tight\", [[\"letter-spacing\", \"var(--letter-spacing-tight)\"]], { category: 'typography' });\nstaticUtility(\"tracking-normal\", [[\"letter-spacing\", \"var(--letter-spacing-normal)\"]], { category: 'typography' });\nstaticUtility(\"tracking-wide\", [[\"letter-spacing\", \"var(--letter-spacing-wide)\"]], { category: 'typography' });\nstaticUtility(\"tracking-wider\", [[\"letter-spacing\", \"var(--letter-spacing-wider)\"]], { category: 'typography' });\nstaticUtility(\"tracking-widest\", [[\"letter-spacing\", \"var(--letter-spacing-widest)\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"tracking\",\n prop: \"letter-spacing\",\n themeKey: \"letterSpacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"letter-spacing utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Line Height ---\nstaticUtility(\"leading-none\", [[\"line-height\", \"var(--line-height-none)\"]], { category: 'typography' });\nstaticUtility(\"leading-tight\", [[\"line-height\", \"var(--line-height-tight)\"]], { category: 'typography' });\nstaticUtility(\"leading-snug\", [[\"line-height\", \"var(--line-height-snug)\"]], { category: 'typography' });\nstaticUtility(\"leading-normal\", [[\"line-height\", \"var(--line-height-normal)\"]], { category: 'typography' });\nstaticUtility(\"leading-relaxed\", [[\"line-height\", \"var(--line-height-relaxed)\"]], { category: 'typography' });\nstaticUtility(\"leading-loose\", [[\"line-height\", \"var(--line-height-loose)\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"leading\",\n prop: \"line-height\",\n themeKey: \"lineHeight\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n description: \"line-height utility (theme, number, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Align ---\nstaticUtility(\"text-left\", [[\"text-align\", \"left\"]], { category: 'typography' });\nstaticUtility(\"text-center\", [[\"text-align\", \"center\"]], { category: 'typography' });\nstaticUtility(\"text-right\", [[\"text-align\", \"right\"]], { category: 'typography' });\nstaticUtility(\"text-justify\", [[\"text-align\", \"justify\"]], { category: 'typography' });\nstaticUtility(\"text-start\", [[\"text-align\", \"start\"]], { category: 'typography' });\nstaticUtility(\"text-end\", [[\"text-align\", \"end\"]], { category: 'typography' });\n\n// --- Typography: Text Color ---\nstaticUtility(\"text-inherit\", [[\"color\", \"inherit\"]], { category: 'typography' });\nstaticUtility(\"text-current\", [[\"color\", \"currentColor\"]], { category: 'typography' });\nstaticUtility(\"text-transparent\", [[\"color\", \"transparent\"]], { category: 'typography' });\n\n// --- Typography: Text Overflow ---\nstaticUtility(\"truncate\", [[\"overflow\", \"hidden\"], [\"text-overflow\", \"ellipsis\"], [\"white-space\", \"nowrap\"]], { category: 'typography' });\nstaticUtility(\"text-ellipsis\", [[\"text-overflow\", \"ellipsis\"]], { category: 'typography' });\nstaticUtility(\"text-clip\", [[\"text-overflow\", \"clip\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"text\", \n themeKey: \"colors\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\"color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ]),\n decl(\"color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ];\n }\n\n return [decl(\"color\", value)];\n }\n\n if (parseLength(value)) {\n return [decl(\"font-size\", value)];\n }\n return [decl(\"color\", value)];\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n return [decl(\"color\", `var(${value.replace(\"color:\", \"\")})`)];\n }\n return [decl(\"font-size\", `var(${value})`)];\n },\n description: \"text color utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n\nfunctionalUtility({\n name: \"text\",\n themeKey: \"fontSize\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n // Check if it's a theme value first\n const themeValue = ctx.theme(\"fontSize\", value) as string | [string, string];\n if (themeValue) {\n if (Array.isArray(themeValue)) {\n // [fontSize, lineHeight] format\n return [\n decl(\"font-size\", themeValue[0]),\n decl(\"line-height\", themeValue[1])\n ];\n } else {\n return [decl(\"font-size\", themeValue as string)];\n }\n }\n\n // Handle arbitrary values\n if (token.arbitrary) {\n return [decl(\"font-size\", value)];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"font-size\", `var(${value})`)],\n description: \"font-size utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Transform ---\nstaticUtility(\"uppercase\", [[\"text-transform\", \"uppercase\"]], { category: 'typography' });\nstaticUtility(\"lowercase\", [[\"text-transform\", \"lowercase\"]], { category: 'typography' });\nstaticUtility(\"capitalize\", [[\"text-transform\", \"capitalize\"]], { category: 'typography' });\nstaticUtility(\"normal-case\", [[\"text-transform\", \"none\"]], { category: 'typography' });\n\n// --- Typography: Text Decoration ---\nstaticUtility(\"underline\", [[\"text-decoration-line\", \"underline\"]], { category: 'typography' });\nstaticUtility(\"overline\", [[\"text-decoration-line\", \"overline\"]], { category: 'typography' });\nstaticUtility(\"line-through\", [[\"text-decoration-line\", \"line-through\"]], { category: 'typography' });\nstaticUtility(\"no-underline\", [[\"text-decoration-line\", \"none\"]], { category: 'typography' });\n\n\n\n// --- Typography: Whitespace ---\nstaticUtility(\"whitespace-normal\", [[\"white-space\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"whitespace-nowrap\", [[\"white-space\", \"nowrap\"]], { category: 'typography' });\nstaticUtility(\"whitespace-pre\", [[\"white-space\", \"pre\"]], { category: 'typography' });\nstaticUtility(\"whitespace-pre-line\", [[\"white-space\", \"pre-line\"]], { category: 'typography' });\nstaticUtility(\"whitespace-pre-wrap\", [[\"white-space\", \"pre-wrap\"]], { category: 'typography' });\nstaticUtility(\"whitespace-break-spaces\", [[\"white-space\", \"break-spaces\"]], { category: 'typography' });\n\n// --- Typography: Word Break ---\nstaticUtility(\"break-normal\", [[\"overflow-wrap\", \"normal\"], [\"word-break\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"break-words\", [[\"overflow-wrap\", \"break-word\"]], { category: 'typography' });\nstaticUtility(\"break-all\", [[\"word-break\", \"break-all\"]], { category: 'typography' });\nstaticUtility(\"break-keep\", [[\"word-break\", \"keep-all\"]], { category: 'typography' });\n\n// --- Typography: Font Smoothing ---\nstaticUtility(\"antialiased\", [[\"-webkit-font-smoothing\", \"antialiased\"], [\"-moz-osx-font-smoothing\", \"grayscale\"]], { category: 'typography' });\nstaticUtility(\"subpixel-antialiased\", [[\"-webkit-font-smoothing\", \"auto\"], [\"-moz-osx-font-smoothing\", \"auto\"]], { category: 'typography' });\n\n// --- Typography: Font Stretch ---\nstaticUtility(\"font-stretch-normal\", [[\"font-stretch\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-ultra-condensed\", [[\"font-stretch\", \"ultra-condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-extra-condensed\", [[\"font-stretch\", \"extra-condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-condensed\", [[\"font-stretch\", \"condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-semi-condensed\", [[\"font-stretch\", \"semi-condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-semi-expanded\", [[\"font-stretch\", \"semi-expanded\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-expanded\", [[\"font-stretch\", \"expanded\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-extra-expanded\", [[\"font-stretch\", \"extra-expanded\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-ultra-expanded\", [[\"font-stretch\", \"ultra-expanded\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"font-stretch\",\n prop: \"font-stretch\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"font-stretch utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Font Variant Numeric ---\nstaticUtility(\"normal-nums\", [[\"font-variant-numeric\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"ordinal\", [[\"font-variant-numeric\", \"ordinal\"]], { category: 'typography' });\nstaticUtility(\"slashed-zero\", [[\"font-variant-numeric\", \"slashed-zero\"]], { category: 'typography' });\nstaticUtility(\"lining-nums\", [[\"font-variant-numeric\", \"lining-nums\"]], { category: 'typography' });\nstaticUtility(\"oldstyle-nums\", [[\"font-variant-numeric\", \"oldstyle-nums\"]], { category: 'typography' });\nstaticUtility(\"proportional-nums\", [[\"font-variant-numeric\", \"proportional-nums\"]], { category: 'typography' });\nstaticUtility(\"tabular-nums\", [[\"font-variant-numeric\", \"tabular-nums\"]], { category: 'typography' });\nstaticUtility(\"diagonal-fractions\", [[\"font-variant-numeric\", \"diagonal-fractions\"]], { category: 'typography' });\nstaticUtility(\"stacked-fractions\", [[\"font-variant-numeric\", \"stacked-fractions\"]], { category: 'typography' });\n\n// --- Typography: Line Clamp ---\nstaticUtility(\"line-clamp-none\", [[\"-webkit-line-clamp\", \"none\"]], { category: 'typography' });\nfunctionalUtility({\n name: \"line-clamp\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handle: (value) => [\n decl(\"overflow\", \"hidden\"),\n decl(\"display\", \"-webkit-box\"),\n decl(\"-webkit-box-orient\", \"vertical\"),\n decl(\"-webkit-line-clamp\", value)\n ],\n handleCustomProperty: (value) => [\n decl(\"overflow\", \"hidden\"),\n decl(\"display\", \"-webkit-box\"),\n decl(\"-webkit-box-orient\", \"vertical\"),\n decl(\"-webkit-line-clamp\", `var(${value})`)\n ],\n description: \"line-clamp utility (number, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: List Style Type ---\nstaticUtility(\"list-none\", [[\"list-style-type\", \"none\"]], { category: 'typography' });\nstaticUtility(\"list-disc\", [[\"list-style-type\", \"disc\"]], { category: 'typography' });\nstaticUtility(\"list-decimal\", [[\"list-style-type\", \"decimal\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"list\",\n prop: \"list-style-type\",\n themeKey: \"listStyleType\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"list-style-type utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: List Style Position ---\nstaticUtility(\"list-inside\", [[\"list-style-position\", \"inside\"]], { category: 'typography' });\nstaticUtility(\"list-outside\", [[\"list-style-position\", \"outside\"]], { category: 'typography' });\n\n// --- Typography: List Style Image ---\nstaticUtility(\"list-image-none\", [[\"list-style-image\", \"none\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"list-image\",\n prop: \"list-style-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(\"list-style-image\", `url(${value})`)],\n handleCustomProperty: (value) => [decl(\"list-style-image\", `var(${value})`)],\n description: \"list-style-image utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Decoration Color ---\nfunctionalUtility({\n name: \"decoration\",\n themeKey: \"colors\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\"text-decoration-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ]),\n decl(\"text-decoration-color\", value),\n ];\n }\n return [decl(\"text-decoration-color\", value)];\n }\n return [decl(\"text-decoration-color\", value)];\n },\n handleCustomProperty: (value) => [decl(\"text-decoration-color\", `var(${value})`)],\n description: \"text-decoration-color utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Decoration Style ---\n staticUtility(\"decoration-solid\", [[\"text-decoration-style\", \"solid\"]], { category: 'typography' });\nstaticUtility(\"decoration-double\", [[\"text-decoration-style\", \"double\"]], { category: 'typography' });\nstaticUtility(\"decoration-dotted\", [[\"text-decoration-style\", \"dotted\"]], { category: 'typography' });\nstaticUtility(\"decoration-dashed\", [[\"text-decoration-style\", \"dashed\"]], { category: 'typography' });\nstaticUtility(\"decoration-wavy\", [[\"text-decoration-style\", \"wavy\"]], { category: 'typography' });\n\n// --- Typography: Text Decoration Thickness ---\nstaticUtility(\"decoration-auto\", [[\"text-decoration-thickness\", \"auto\"]], { category: 'typography' });\nstaticUtility(\"decoration-from-font\", [[\"text-decoration-thickness\", \"from-font\"]], { category: 'typography' });\nstaticUtility(\"decoration-0\", [[\"text-decoration-thickness\", \"0px\"]], { category: 'typography' });\nstaticUtility(\"decoration-1\", [[\"text-decoration-thickness\", \"1px\"]], { category: 'typography' });\nstaticUtility(\"decoration-2\", [[\"text-decoration-thickness\", \"2px\"]], { category: 'typography' });\nstaticUtility(\"decoration-4\", [[\"text-decoration-thickness\", \"4px\"]], { category: 'typography' });\nstaticUtility(\"decoration-8\", [[\"text-decoration-thickness\", \"8px\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"decoration\",\n prop: \"text-decoration-thickness\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `${value}px`,\n description: \"text-decoration-thickness utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Underline Offset ---\nstaticUtility(\"underline-offset-auto\", [[\"text-underline-offset\", \"auto\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-0\", [[\"text-underline-offset\", \"0px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-1\", [[\"text-underline-offset\", \"1px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-2\", [[\"text-underline-offset\", \"2px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-4\", [[\"text-underline-offset\", \"4px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-8\", [[\"text-underline-offset\", \"8px\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"underline-offset\",\n prop: \"text-underline-offset\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `${value}px`,\n description: \"text-underline-offset utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Wrap ---\nstaticUtility(\"text-wrap\", [[\"text-wrap\", \"wrap\"]], { category: 'typography' });\nstaticUtility(\"text-nowrap\", [[\"text-wrap\", \"nowrap\"]], { category: 'typography' });\nstaticUtility(\"text-balance\", [[\"text-wrap\", \"balance\"]], { category: 'typography' });\nstaticUtility(\"text-pretty\", [[\"text-wrap\", \"pretty\"]], { category: 'typography' });\n\n// --- Typography: Text Indent ---\nfunctionalUtility({\n name: \"indent\",\n prop: \"text-indent\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n description: \"text-indent utility (spacing, negative, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Vertical Align ---\nstaticUtility(\"align-baseline\", [[\"vertical-align\", \"baseline\"]], { category: 'typography' });\nstaticUtility(\"align-top\", [[\"vertical-align\", \"top\"]], { category: 'typography' });\nstaticUtility(\"align-middle\", [[\"vertical-align\", \"middle\"]], { category: 'typography' });\nstaticUtility(\"align-bottom\", [[\"vertical-align\", \"bottom\"]], { category: 'typography' });\nstaticUtility(\"align-text-top\", [[\"vertical-align\", \"text-top\"]], { category: 'typography' });\nstaticUtility(\"align-text-bottom\", [[\"vertical-align\", \"text-bottom\"]], { category: 'typography' });\nstaticUtility(\"align-sub\", [[\"vertical-align\", \"sub\"]], { category: 'typography' });\nstaticUtility(\"align-super\", [[\"vertical-align\", \"super\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"align\",\n prop: \"vertical-align\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"vertical-align utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Hyphens ---\nstaticUtility(\"hyphens-none\", [[\"hyphens\", \"none\"]], { category: 'typography' });\nstaticUtility(\"hyphens-manual\", [[\"hyphens\", \"manual\"]], { category: 'typography' });\nstaticUtility(\"hyphens-auto\", [[\"hyphens\", \"auto\"]], { category: 'typography' });\n\n// --- Typography: Content ---\nstaticUtility(\"content-none\", [[\"content\", \"none\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"content\",\n prop: \"content\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(\"content\", `\"${value}\"`)],\n handleCustomProperty: (value) => [decl(\"content\", `var(${value})`)],\n description: \"content utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { AstNode, atRoot, atRule, decl, property, styleRule } from \"../core/ast\";\nimport { parseColor, parseLength, parseNumber } from \"../core/utils\";\n\nconst gradientStopProperties = () => {\n return atRoot([\n property('--baro-gradient-position'),\n property('--baro-gradient-from', '#0000', '<color>'),\n property('--baro-gradient-via', '#0000', '<color>'),\n property('--baro-gradient-to', '#0000', '<color>'),\n property('--baro-gradient-stops', \"transparent\"),\n property('--baro-gradient-from-position', '0%', '<length-percentage>'),\n property('--baro-gradient-via-position', '50%', '<length-percentage>'),\n property('--baro-gradient-to-position', '100%', '<length-percentage>'),\n ], \"background\")\n}\n\n\n// --- Background Attachment ---\nstaticUtility(\"bg-fixed\", [[\"background-attachment\", \"fixed\"]], { category: 'background' });\nstaticUtility(\"bg-local\", [[\"background-attachment\", \"local\"]], { category: 'background' });\nstaticUtility(\"bg-scroll\", [[\"background-attachment\", \"scroll\"]], { category: 'background' });\n\n// --- Background Clip ---\nstaticUtility(\"bg-clip-border\", [[\"background-clip\", \"border-box\"]], { category: 'background' });\nstaticUtility(\"bg-clip-padding\", [[\"background-clip\", \"padding-box\"]], { category: 'background' });\nstaticUtility(\"bg-clip-content\", [[\"background-clip\", \"content-box\"]], { category: 'background' });\nstaticUtility(\"bg-clip-text\", [[\"background-clip\", \"text\"]], { category: 'background' });\n\n// --- Background Color ---\nstaticUtility(\"bg-inherit\", [[\"background-color\", \"inherit\"]], { category: 'background' });\nstaticUtility(\"bg-current\", [[\"background-color\", \"currentColor\"]], { category: 'background' });\nstaticUtility(\"bg-transparent\", [[\"background-color\", \"transparent\"]], { category: 'background' });\n\n// --- Background Image ---\nstaticUtility(\"bg-none\", [[\"background-image\", \"none\"]], { category: 'background' });\n\n// --- Background Origin ---\nstaticUtility(\"bg-origin-border\", [[\"background-origin\", \"border-box\"]], { category: 'background' });\nstaticUtility(\"bg-origin-padding\", [[\"background-origin\", \"padding-box\"]], { category: 'background' });\nstaticUtility(\"bg-origin-content\", [[\"background-origin\", \"content-box\"]], { category: 'background' });\n\n// --- Background Position ---\n[\n [\"bg-bottom\", \"bottom\"],\n [\"bg-center\", \"center\"],\n [\"bg-left\", \"left\"],\n [\"bg-left-bottom\", \"left bottom\"],\n [\"bg-left-top\", \"left top\"],\n [\"bg-right\", \"right\"],\n [\"bg-right-bottom\", \"right bottom\"],\n [\"bg-right-top\", \"right top\"],\n [\"bg-top\", \"top\"],\n].forEach(([name, value]) => {\n staticUtility(name, [[\"background-position\", value]], { category: 'background' });\n});\n\n/**\n * background-position utility (arbitrary, custom property supported)\n *\n * bg-position-[length] → background-position: [length]\n * bg-position-[length] → background-position: [length]\n */\nfunctionalUtility({\n name: \"bg-position\",\n prop: \"background-position\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"background-position utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Repeat ---\nstaticUtility(\"bg-repeat\", [[\"background-repeat\", \"repeat\"]], { category: 'background' });\nstaticUtility(\"bg-no-repeat\", [[\"background-repeat\", \"no-repeat\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-x\", [[\"background-repeat\", \"repeat-x\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-y\", [[\"background-repeat\", \"repeat-y\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-round\", [[\"background-repeat\", \"round\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-space\", [[\"background-repeat\", \"space\"]], { category: 'background' });\n\n// --- Background Size ---\nstaticUtility(\"bg-auto\", [[\"background-size\", \"auto\"]], { category: 'background' });\nstaticUtility(\"bg-cover\", [[\"background-size\", \"cover\"]], { category: 'background' });\nstaticUtility(\"bg-contain\", [[\"background-size\", \"contain\"]], { category: 'background' });\n\nfunctionalUtility({\n name: \"bg-size\",\n prop: \"background-size\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"background-size utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Gradients: Linear ---\nconst positionValue = (position: string) => {\n return [\n decl(\"--baro-gradient-position\", position), \n styleRule(\"@supports (background-image: linear-gradient(in lab, red, red))\", [\n decl(\"--baro-gradient-position\", `${position} in oklab`),\n ]),\n decl(\n \"background-image\",\n `linear-gradient(${position}, var(--baro-gradient-stops))`\n ),\n ];\n};\n\n[\n [\"bg-linear-to-t\", positionValue(\"to top\")],\n [\"bg-linear-to-tr\", positionValue(\"to top right\")],\n [\"bg-linear-to-r\", positionValue(\"to right\")],\n [\"bg-linear-to-br\", positionValue(\"to bottom right\")],\n [\"bg-linear-to-b\", positionValue(\"to bottom\")],\n [\"bg-linear-to-bl\", positionValue(\"to bottom left\")],\n [\"bg-linear-to-l\", positionValue(\"to left\")],\n [\"bg-linear-to-tl\", positionValue(\"to top left\")],\n\n // fallback , legacy CSS compatibility\n [\"bg-gradient-to-t\", positionValue(\"to top\")],\n [\"bg-gradient-to-tr\", positionValue(\"to top right\")],\n [\"bg-gradient-to-r\", positionValue(\"to right\")],\n [\"bg-gradient-to-br\", positionValue(\"to bottom right\")],\n [\"bg-gradient-to-b\", positionValue(\"to bottom\")],\n [\"bg-gradient-to-bl\", positionValue(\"to bottom left\")],\n [\"bg-gradient-to-l\", positionValue(\"to left\")],\n [\"bg-gradient-to-tl\", positionValue(\"to top left\")],\n].forEach(([name, value]) => {\n staticUtility(name as string, value as AstNode[], { category: 'background', priority: 1000 });\n});\n// bg-linear-<angle> (e.g., bg-linear-45)\nfunctionalUtility({\n name: \"bg-linear\",\n prop: \"background-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, context, token) => {\n if (parseNumber(value)) {\n // bg-linear-45 → linear-gradient(45deg in oklab, var(--baro-gradient-stops))\n return [\n decl(\n \"background-image\",\n `linear-gradient(${value}deg in oklab, var(--baro-gradient-stops))`\n ),\n ];\n }\n if (token.arbitrary) {\n // bg-linear-[25deg,red_5%,yellow_60%,lime_90%,teal]\n return [\n decl(\n \"background-image\",\n `linear-gradient(var(--baro-gradient-stops, ${value}))`\n ),\n ];\n }\n if (token.customProperty) {\n // bg-linear-(--my-gradient)\n return [\n decl(\n \"background-image\",\n `linear-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\n \"background-image\",\n `linear-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ],\n description:\n \"linear-gradient background-image utility (angle, arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Gradients: Radial ---\nstaticUtility(\"bg-radial\", [\n [\"background-image\", \"radial-gradient(in oklab, var(--baro-gradient-stops))\"],\n], { category: 'background' });\nfunctionalUtility({\n name: \"bg-radial\",\n prop: \"background-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, context, token) => {\n if (token.arbitrary) {\n // bg-radial-[at_50%_75%]\n return [\n decl(\n \"background-image\",\n `radial-gradient(var(--baro-gradient-stops, ${value}))`\n ),\n ];\n }\n if (token.customProperty) {\n // bg-radial-(--my-gradient)\n return [\n decl(\n \"background-image\",\n `radial-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\n \"background-image\",\n `radial-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ],\n description:\n \"radial-gradient background-image utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Gradients: Conic ---\nstaticUtility(\"bg-conic\", [\n [\n \"background-image\",\n \"conic-gradient(from 0deg in oklab, var(--baro-gradient-stops))\",\n ],\n], { category: 'background' });\nfunctionalUtility({\n name: \"bg-conic\",\n prop: \"background-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, context, token) => {\n if (parseNumber(value)) {\n // bg-conic-180 → conic-gradient(from 180deg in oklab, var(--baro-gradient-stops))\n return [\n decl(\n \"background-image\",\n `conic-gradient(from ${value}deg in oklab, var(--baro-gradient-stops))`\n ),\n ];\n }\n if (token.arbitrary) {\n // bg-conic-[at_50%_75%]\n return [decl(\"background-image\", `${value}`)];\n }\n if (token.customProperty) {\n // bg-conic-(--my-gradient)\n return [\n decl(\n \"background-image\",\n `conic-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => [decl(\"background-image\", `var(${value})`)],\n description:\n \"conic-gradient background-image utility (angle, arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Gradient Stops ---\n\n\n\n// from-*, via-*, to-* (color, percentage, custom property, arbitrary)\n[\"from\", \"via\", \"to\"].forEach((stop) => {\n functionalUtility({\n name: stop,\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, context, token, extra) => {\n // console.log('[gradient stop] value', value, context, token, extra);\n if (extra?.realThemeValue) {\n if (stop === \"from\") {\n\n let color = value; \n if (extra?.opacity) {\n color = `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`;\n }\n\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-from`, color),\n // decl(`--baro-gradient-to`, \"var(--baro-gradient-to, transparent)\"),\n decl(`--baro-gradient-stops`, \"var(--baro-gradient-from),var(--baro-gradient-to)\")\n ];\n }\n\n if (stop === \"via\") {\n let color = value; \n if (extra?.opacity) {\n color = `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`;\n }\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, color),\n decl(`--baro-gradient-stops`, `var(--baro-gradient-from), ${value} var(--baro-gradient-via-position), var(--baro-gradient-to)`) // via 포함 stops\n ];\n }\n\n if (stop === \"to\") {\n let color = value; \n if (extra?.opacity) {\n color = `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`;\n }\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, color),\n ];\n }\n }\n\n // to-50% → --baro-gradient-to-position: 50%\n if (parseLength(value)) {\n return [decl(`--baro-gradient-${stop}-position`, value)];\n }\n\n // to-50% → --baro-gradient-to-position: 50%\n if (parseNumber(value)) {\n return [decl(`--baro-gradient-${stop}-position`, `${value}%`)];\n }\n\n // to-red-500 → --baro-gradient-to: red-500\n if (parseColor(value)) {\n\n if (stop === \"from\") {\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-from`, value),\n decl(`--baro-gradient-to`, \"transparent\"),\n decl(`--baro-gradient-stops`, \"var(--baro-gradient-from),var(--baro-gradient-to)\")\n ];\n }\n\n if (stop === \"via\") {\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, value),\n decl(`--baro-gradient-stops`, `var(--baro-gradient-from), ${value} var(--baro-gradient-via-position), var(--baro-gradient-to)`) // via 포함 stops\n ];\n }\n\n if (stop === \"to\") {\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, value),\n ];\n }\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(`--baro-gradient-${stop}`, `var(${value})`),\n ],\n description: `${stop} gradient stop utility (color, percent, custom property, arbitrary supported)`,\n category: \"background\",\n });\n // position variant: from-10%, via-30%, to-90%\n functionalUtility({\n name: `${stop}-position`,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(`--baro-gradient-${stop}-position`, value)],\n handleCustomProperty: (value) => [\n decl(`--baro-gradient-${stop}-position`, `var(${value})`),\n ],\n description: `${stop}-position gradient stop position utility (percent, custom property, arbitrary supported)`,\n category: \"background\",\n });\n});\n\n/**\n * background-size utility (arbitrary, custom property supported)\n * bg-[length] → background-size: [length]\n * bg-[length] → background-size: [length]\n * bg-[color] → background-color: [color]\n * bg-[url] → background-image: [url]\n * bg-[radial-gradient()] → background-image: radial-gradient(var(--baro-gradient-stops))\n * bg-red-500 → background-color: var(--color-red-500)\n */\nfunctionalUtility({\n name: \"bg\",\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, context, token, extra) => {\n if (value.startsWith(\"url(\")) {\n return [decl(\"background-image\", value)];\n }\n\n // if (value.startsWith(\"radial-gradient(\")) {\n // return [decl(\"background-image\", value)];\n // }\n\n if (value.startsWith(\"length:\")) {\n return [decl(\"background-size\", value.replace(\"length:\", \"\"))];\n }\n\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\n \"background-color\",\n `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`\n ),\n ]),\n decl(\"background-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ];\n }\n return [decl(\"background-color\", value)];\n }\n\n if (parseColor(value)) {\n const parsedColor = parseColor(value);\n\n if (value.startsWith(\"color:\")) {\n return [decl(\"background-color\", parsedColor || value)];\n }\n\n return [decl(\"background-color\", value)];\n }\n\n if (parseLength(value)) {\n return [decl(\"background-size\", value)];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"background-size\", `var(${value})`)],\n description: \"background-size utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport { parseNumber, parseLength, parseColor } from \"../core/utils\";\n\n// --- Border Radius ---\n// border-radius documentation\n\n// Static border radius utilities\nstaticUtility(\"rounded-none\", [[\"border-radius\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"rounded-sm\", [[\"border-radius\", \"var(--radius-sm)\"]], { category: 'borders' });\nstaticUtility(\"rounded\", [[\"border-radius\", \"var(--radius)\"]], { category: 'borders' });\nstaticUtility(\"rounded-md\", [[\"border-radius\", \"var(--radius-md)\"]], { category: 'borders' });\nstaticUtility(\"rounded-lg\", [[\"border-radius\", \"var(--radius-lg)\"]], { category: 'borders' });\nstaticUtility(\"rounded-xl\", [[\"border-radius\", \"var(--radius-xl)\"]], { category: 'borders' });\nstaticUtility(\"rounded-2xl\", [[\"border-radius\", \"var(--radius-2xl)\"]], { category: 'borders' });\nstaticUtility(\"rounded-3xl\", [[\"border-radius\", \"var(--radius-3xl)\"]], { category: 'borders' });\nstaticUtility(\"rounded-full\", [[\"border-radius\", \"9999px\"]], { category: 'borders' });\n\n\n// Individual corner radius utilities\n[\n [\"rounded-t\", [\"border-top-left-radius\", \"border-top-right-radius\"]],\n [\"rounded-r\", [\"border-top-right-radius\", \"border-bottom-right-radius\"]],\n [\"rounded-b\", [\"border-bottom-right-radius\", \"border-bottom-left-radius\"]],\n [\"rounded-l\", [\"border-top-left-radius\", \"border-bottom-left-radius\"]],\n [\"rounded-tl\", [\"border-top-left-radius\"]],\n [\"rounded-tr\", [\"border-top-right-radius\"]],\n [\"rounded-br\", [\"border-bottom-right-radius\"]],\n [\"rounded-bl\", [\"border-bottom-left-radius\"]],\n].forEach(([name, props]) => {\n const propList = props as string[];\n // Static utilities\n staticUtility(`${name}-none`, propList.map(prop => [prop, \"0px\"]), { category: 'borders' });\n staticUtility(`${name}-sm`, propList.map(prop => [prop, \"var(--radius-sm)\"]), { category: 'borders' });\n staticUtility(`${name}`, propList.map(prop => [prop, \"var(--radius)\"]), { category: 'borders' });\n staticUtility(`${name}-md`, propList.map(prop => [prop, \"var(--radius-md)\"]), { category: 'borders' });\n staticUtility(`${name}-lg`, propList.map(prop => [prop, \"var(--radius-lg)\"]), { category: 'borders' });\n staticUtility(`${name}-xl`, propList.map(prop => [prop, \"var(--radius-xl)\"]), { category: 'borders' });\n staticUtility(`${name}-2xl`, propList.map(prop => [prop, \"var(--radius-2xl)\"]), { category: 'borders' });\n staticUtility(`${name}-3xl`, propList.map(prop => [prop, \"var(--radius-3xl)\"]), { category: 'borders' });\n staticUtility(`${name}-full`, propList.map(prop => [prop, \"9999px\"]), { category: 'borders' });\n\n // Functional utility\n functionalUtility({\n name: name as string,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n return null;\n },\n handle: (value) => propList.map(prop => decl(prop, value)),\n description: `${name} utility (spacing, arbitrary, custom property support)`,\n category: \"borders\",\n });\n});\n\n\n// Functional border radius utility\nfunctionalUtility({\n name: \"rounded\",\n prop: \"border-radius\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n return null;\n },\n description: \"border-radius utility (spacing, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n// --- Border Width ---\n// border-width documentation\n\n// Static border width utilities\nstaticUtility(\"border-0\", [[\"border-width\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"border-2\", [[\"border-width\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"border-4\", [[\"border-width\", \"4px\"]], { category: 'borders' });\nstaticUtility(\"border-8\", [[\"border-width\", \"8px\"]], { category: 'borders' });\nstaticUtility(\"border\", [[\"border-width\", \"1px\"]], { category: 'borders' });\n\n\n\n// Individual side border width utilities\n[\n [\"border-x\", [\"border-left-width\", \"border-right-width\"]],\n [\"border-y\", [\"border-top-width\", \"border-bottom-width\"]],\n [\"border-t\", [\"border-top-width\"]],\n [\"border-r\", [\"border-right-width\"]],\n [\"border-b\", [\"border-bottom-width\"]],\n [\"border-l\", [\"border-left-width\"]],\n].forEach(([name, props]) => {\n const propList = props as string[];\n // Static utilities\n staticUtility(`${name}-0`, propList.map(prop => [prop, \"0px\"]));\n staticUtility(`${name}-2`, propList.map(prop => [prop, \"2px\"]));\n staticUtility(`${name}-4`, propList.map(prop => [prop, \"4px\"]));\n staticUtility(`${name}-8`, propList.map(prop => [prop, \"8px\"]));\n staticUtility(`${name}`, propList.map(prop => [prop, \"1px\"]));\n\n // Functional utility\n functionalUtility({\n name: name as string,\n themeKeys: [\"borderWidth\", \"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `${value}px`;\n }\n return null;\n },\n handle: (value, ctx, token) => {\n if (parseColor(value)) {\n return propList.map(prop => decl(prop.replace(\"width\", \"color\"), value));\n }\n if (token.arbitrary) {\n return propList.map(prop => decl(prop, value));\n }\n return null;\n },\n handleCustomProperty: (value) => {\n\n if (value.startsWith(\"length:\")) {\n return propList.map(prop => decl(prop, `var(${value.replace(\"length:\", \"\")})`));\n }\n\n return propList.map(prop => decl(prop.replace(\"width\", \"color\"), `var(${value})`));\n },\n description: `${name} utility (number, arbitrary, custom property support)`,\n category: \"borders\",\n });\n});\n\n// --- Border Color ---\n// border-color documentation\n\n// Static border color utilities\nstaticUtility(\"border-inherit\", [[\"border-color\", \"inherit\"]], { category: 'borders' });\nstaticUtility(\"border-current\", [[\"border-color\", \"currentColor\"]], { category: 'borders' });\nstaticUtility(\"border-transparent\", [[\"border-color\", \"transparent\"]], { category: 'borders' });\n\n// --- Border Style ---\n// border-style documentation\n\n// Static border style utilities\nstaticUtility(\"border-solid\", [[\"border-style\", \"solid\"]], { category: 'borders' });\nstaticUtility(\"border-dashed\", [[\"border-style\", \"dashed\"]], { category: 'borders' });\nstaticUtility(\"border-dotted\", [[\"border-style\", \"dotted\"]], { category: 'borders' });\nstaticUtility(\"border-double\", [[\"border-style\", \"double\"]], { category: 'borders' });\nstaticUtility(\"border-hidden\", [[\"border-style\", \"hidden\"]], { category: 'borders' });\nstaticUtility(\"border-none\", [[\"border-style\", \"none\"]], { category: 'borders' });\n\n\n// Functional border width utility\nfunctionalUtility({\n name: \"border\",\n themeKeys: [\"colors\", \"borderWidth\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, ctx, token, extra) => {\n\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\"border-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ]),\n decl(\"border-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ];\n }\n return [decl(\"border-color\", value)];\n }\n\n if (token.arbitrary) {\n if (parseLength(value)) {\n return [decl(\"border-width\", value)];\n }\n return [decl(\"border-color\", value)];\n }\n\n if (parseNumber(value)) {\n return [decl(\"border-width\", `${value}px`)];\n }\n if (parseColor(value)) {\n return [decl(\"border-color\", value)];\n }\n return null;\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"length:\")) {\n return [decl(\"border-width\", `var(${value.replace(\"length:\", \"\")})`)];\n }\n return [decl(\"border-color\", `var(${value})`)];\n },\n description: \"border-width utility (number, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n// --- Outline Width ---\n// outline-width documentation\n\n// Static outline width utilities\nstaticUtility(\"outline-0\", [[\"outline-width\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"outline-1\", [[\"outline-width\", \"1px\"]], { category: 'borders' });\nstaticUtility(\"outline-2\", [[\"outline-width\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"outline-4\", [[\"outline-width\", \"4px\"]], { category: 'borders' });\nstaticUtility(\"outline-8\", [[\"outline-width\", \"8px\"]], { category: 'borders' });\n\n// --- Outline Color ---\n// outline-color documentation\n\n// Static outline color utilities\nstaticUtility(\"outline-inherit\", [[\"outline-color\", \"inherit\"]], { category: 'borders' });\nstaticUtility(\"outline-current\", [[\"outline-color\", \"currentColor\"]], { category: 'borders' });\nstaticUtility(\"outline-transparent\", [[\"outline-color\", \"transparent\"]], { category: 'borders' });\n\n\n// --- Outline Style ---\n// outline-style documentation\n\n// Static outline style utilities\nstaticUtility(\"outline-none\", [[\"outline\", \"2px solid transparent\"], [\"outline-offset\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"outline\", [[\"outline-style\", \"solid\"]], { category: 'borders' });\nstaticUtility(\"outline-dashed\", [[\"outline-style\", \"dashed\"]], { category: 'borders' });\nstaticUtility(\"outline-dotted\", [[\"outline-style\", \"dotted\"]], { category: 'borders' });\nstaticUtility(\"outline-double\", [[\"outline-style\", \"double\"]], { category: 'borders' });\n\n// --- Outline Offset ---\n// outline-offset documentation\n\n// Static outline offset utilities\nstaticUtility(\"outline-offset-0\", [[\"outline-offset\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-1\", [[\"outline-offset\", \"1px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-2\", [[\"outline-offset\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-4\", [[\"outline-offset\", \"4px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-8\", [[\"outline-offset\", \"8px\"]], { category: 'borders' });\n\n// Functional outline offset utility\nfunctionalUtility({\n name: \"outline-offset\",\n prop: \"outline-offset\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `${value}px`;\n }\n return null;\n },\n description: \"outline-offset utility (number, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n\n// Functional outline color utility\nfunctionalUtility({\n name: \"outline\",\n themeKeys: [\"colors\", \"borderWidth\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n\n if (parseColor(value)) {\n return [decl(\"outline-color\", value)];\n }\n\n if (parseNumber(value)) {\n return [decl(\"outline-width\", `${value}px`)];\n }\n\n // Handle arbitrary values\n if (token.arbitrary) {\n\n if (parseLength(value)) {\n return [decl(\"outline-width\", value)];\n }\n\n return [decl(\"outline-color\", value)];\n }\n\n\n\n return null;\n },\n handleCustomProperty: (value) => {\n\n if (value.startsWith(\"color:\")) {\n return [decl(\"outline-color\", value.replace(\"color:\", \"\"))];\n }\n\n if (value.startsWith(\"length:\")) {\n return [decl(\"outline-width\", `var(${value.replace(\"length:\", \"\")})`)];\n }\n\n return [decl(\"outline-color\", `var(${value})`)];\n },\n description: \"outline-color utility (theme colors, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n\n// Functional outline width utility\nfunctionalUtility({\n name: \"outline\",\n prop: \"outline-width\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `${value}px`;\n }\n return null;\n },\n description: \"outline-width utility (number, arbitrary, custom property support)\",\n category: \"borders\",\n});\n","// --- Transform Utilities ---\nimport { atRoot, decl, property } from \"../core/ast\";\nimport { staticUtility, functionalUtility } from \"../core/registry\";\nimport { parseFractionOrNumber, parseNumber } from \"../core/utils\";\n\n// --- Transform ---\n// transform-none: disables all transforms\nstaticUtility(\"transform-none\", [[\"transform\", \"none\"]], {\n category: \"transform\",\n});\n\n// transform-gpu: enables GPU acceleration for transforms\n// Output: transform: translateZ(0) var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y);\nstaticUtility(\n \"transform-gpu\",\n [\n [\n \"transform\",\n \"translateZ(0) var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y)\",\n ],\n ],\n { category: \"transform\" }\n);\n\n// transform-cpu: disables GPU acceleration, uses only CPU transforms\n// Output: transform: var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y);\nstaticUtility(\"transform-cpu\", [\n [\n \"transform\",\n \"var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y)\",\n ],\n]);\n\n// --- Transform Style ---\n// transform-style documentation\n\n// transform-3d: transform-style: preserve-3d;\nstaticUtility(\"transform-3d\", [[\"transform-style\", \"preserve-3d\"]], {\n category: \"transform\",\n});\n// transform-flat: transform-style: flat;\nstaticUtility(\"transform-flat\", [[\"transform-style\", \"flat\"]], {\n category: \"transform\",\n});\n\n// transform-(<custom-property>): sets transform to a CSS custom property value\n// Example: transform-(--my-transform) → transform: var(--my-transform);\nfunctionalUtility({\n name: \"transform\",\n prop: \"transform\",\n supportsCustomProperty: true,\n handleCustomProperty: (value) => [decl(\"transform\", `var(${value})`)],\n description:\n \"transform utility for custom property (transform-(--my-transform))\",\n category: \"transform\",\n});\n\n// transform-[<value>]: sets transform to an arbitrary value\n// Example: transform-[matrix(1,2,3,4,5,6)] → transform: matrix(1,2,3,4,5,6);\nfunctionalUtility({\n name: \"transform\",\n prop: \"transform\",\n supportsArbitrary: true,\n handle: (value) => [decl(\"transform\", value)],\n description: \"transform utility for arbitrary value (transform-[...])\",\n category: \"transform\",\n});\n\n// --- Backface Visibility ---\n// backface-visibility documentation\nstaticUtility(\"backface-hidden\", [[\"backface-visibility\", \"hidden\"]], {\n category: \"transform\",\n});\nstaticUtility(\"backface-visible\", [[\"backface-visibility\", \"visible\"]], {\n category: \"transform\",\n});\n\n// --- Perspective ---\n// perspective documentation\nstaticUtility(\n \"perspective-dramatic\",\n [[\"perspective\", \"var(--perspective-dramatic)\"]],\n { category: \"transform\" }\n); // 100px\nstaticUtility(\n \"perspective-near\",\n [[\"perspective\", \"var(--perspective-near)\"]],\n { category: \"transform\" }\n); // 300px\nstaticUtility(\n \"perspective-normal\",\n [[\"perspective\", \"var(--perspective-normal)\"]],\n { category: \"transform\" }\n); // 500px\nstaticUtility(\n \"perspective-midrange\",\n [[\"perspective\", \"var(--perspective-midrange)\"]],\n { category: \"transform\" }\n); // 800px\nstaticUtility(\n \"perspective-distant\",\n [[\"perspective\", \"var(--perspective-distant)\"]],\n { category: \"transform\" }\n); // 1200px\nstaticUtility(\"perspective-none\", [[\"perspective\", \"none\"]], {\n category: \"transform\",\n});\n\n// --- Perspective Origin ---\n// perspective-origin documentation\nstaticUtility(\"perspective-origin-center\", [[\"perspective-origin\", \"center\"]], {\n category: \"transform\",\n});\nstaticUtility(\"perspective-origin-top\", [[\"perspective-origin\", \"top\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-top-right\",\n [[\"perspective-origin\", \"top right\"]],\n { category: \"transform\" }\n);\nstaticUtility(\"perspective-origin-right\", [[\"perspective-origin\", \"right\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-bottom-right\",\n [[\"perspective-origin\", \"bottom right\"]],\n { category: \"transform\" }\n);\nstaticUtility(\"perspective-origin-bottom\", [[\"perspective-origin\", \"bottom\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-bottom-left\",\n [[\"perspective-origin\", \"bottom left\"]],\n { category: \"transform\" }\n);\nstaticUtility(\"perspective-origin-left\", [[\"perspective-origin\", \"left\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-top-left\",\n [[\"perspective-origin\", \"top left\"]],\n { category: \"transform\" }\n);\n\nfunctionalUtility({\n name: \"perspective-origin\",\n prop: \"perspective-origin\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(\"perspective-origin\", value)],\n handleCustomProperty: (value) => [\n decl(\"perspective-origin\", `var(${value})`),\n ],\n description:\n \"perspective-origin utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// perspective-(<custom-property>) → perspective: var(--custom-property)\nfunctionalUtility({\n name: \"perspective\",\n prop: \"perspective\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n // perspective-[750px] → perspective: 750px\n return [decl(\"perspective\", value)];\n },\n handleCustomProperty: (value) => [decl(\"perspective\", `var(${value})`)],\n description:\n \"perspective utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Rotate ---\n// rotate documentation\n\n// rotate-none\nstaticUtility(\"rotate-none\", [[\"rotate\", \"none\"]], { category: \"transform\" });\n\n// rotate-x-<number>, -rotate-x-<number>, rotate-x-(<custom-property>), rotate-x-[<value>]\nfunctionalUtility({\n name: \"rotate-x\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-x-45 → transform: rotateX(45deg) var(--baro-rotate-y)\n // -rotate-x-45 → transform: rotateX(-45deg) var(--baro-rotate-y)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `rotateX(${sign}${deg}) var(--baro-rotate-y)`)];\n }\n // rotate-x-[3.142rad] → transform: rotateX(3.142rad) var(--baro-rotate-y)\n return [decl(\"transform\", `rotateX(${value}) var(--baro-rotate-y)`)];\n },\n handleCustomProperty: (value) => [\n decl(\"transform\", `rotateX(var(${value})) var(--baro-rotate-y)`),\n ],\n description: \"rotate-x utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// rotate-y-<number>, -rotate-y-<number>, rotate-y-(<custom-property>), rotate-y-[<value>]\nfunctionalUtility({\n name: \"rotate-y\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-y-45 → transform: var(--baro-rotate-x) rotateY(45deg)\n // -rotate-y-45 → transform: var(--baro-rotate-x) rotateY(-45deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `var(--baro-rotate-x) rotateY(${sign}${deg})`)];\n }\n // rotate-y-[3.142rad] → transform: var(--baro-rotate-x) rotateY(3.142rad)\n return [decl(\"transform\", `var(--baro-rotate-x) rotateY(${value})`)];\n },\n handleCustomProperty: (value) => [\n decl(\"transform\", `var(--baro-rotate-x) rotateY(var(${value}))`),\n ],\n description: \"rotate-y utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// rotate-z-<number>, -rotate-z-<number>, rotate-z-(<custom-property>), rotate-z-[<value>]\nfunctionalUtility({\n name: \"rotate-z\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-z-45 → transform: var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(45deg)\n // -rotate-z-45 → transform: var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(-45deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [\n decl(\n \"transform\",\n `var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(${sign}${deg})`\n ),\n ];\n }\n // rotate-z-[3.142rad] → transform: var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(3.142rad)\n return [\n decl(\n \"transform\",\n `var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(${value})`\n ),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\n \"transform\",\n `var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(var(${value}))`\n ),\n ],\n description: \"rotate-z utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// rotate-<number>, -rotate-<number>, rotate-(<custom-property>), rotate-[<value>]\nfunctionalUtility({\n name: \"rotate\",\n prop: \"rotate\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-45 → rotate: 45deg\n // -rotate-45 → rotate: calc(45deg * -1)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n if (negative || String(value).startsWith(\"-\")) {\n return [decl(\"rotate\", `calc(${deg} * -1)`)];\n }\n\n return [decl(\"rotate\", deg)];\n }\n // rotate-[3.142rad] → rotate: 3.142rad\n return [decl(\"rotate\", value)];\n },\n handleCustomProperty: (value) => [decl(\"rotate\", `var(${value})`)],\n description: \"rotate utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Scale ---\n// scale documentation\n\n// scale-none\nstaticUtility(\"scale-none\", [[\"scale\", \"none\"]], { category: \"transform\" });\n// scale-3d\nstaticUtility(\n \"scale-3d\",\n [[\"scale\", \"var(--baro-scale-x) var(--baro-scale-y) var(--baro-scale-z)\"]],\n { category: \"transform\" }\n);\n\n// scale-x-<number>, -scale-x-<number>, scale-x-(<custom-property>), scale-x-[<value>]\nfunctionalUtility({\n name: \"scale-x\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [decl(\"scale\", `${value}`)];\n }\n\n // scale-x-75 → scale: 75% var(--baro-scale-y)\n // -scale-x-75 → scale: calc(75% * -1) var(--baro-scale-y)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"scale\", `calc(${pct} * ${sign}1) var(--baro-scale-y)`)];\n }\n // scale-x-[1.7] → scale: 1.7 var(--baro-scale-y)\n return [decl(\"scale\", `${value} var(--baro-scale-y)`)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(${value}) var(--baro-scale-y)`),\n ],\n description: \"scale-x utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// scale-y-<number>, -scale-y-<number>, scale-y-(<custom-property>), scale-y-[<value>]\nfunctionalUtility({\n name: \"scale-y\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [decl(\"scale\", `var(--baro-scale-x) ${value}`)];\n }\n\n // scale-y-75 → scale: var(--baro-scale-x) 75%\n // -scale-y-75 → scale: var(--baro-scale-x) calc(75% * -1)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"scale\", `var(--baro-scale-x) calc(${pct} * ${sign}1)`)];\n }\n // scale-y-[1.7] → scale: var(--baro-scale-x) 1.7\n return [decl(\"scale\", `var(--baro-scale-x) ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(--baro-scale-x) var(${value})`),\n ],\n description: \"scale-y utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// scale-z-<number>, -scale-z-<number>, scale-z-(<custom-property>), scale-z-[<value>]\nfunctionalUtility({\n name: \"scale-z\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [\n decl(\"scale\", `var(--baro-scale-x) var(--baro-scale-y) ${value}`),\n ];\n }\n\n // scale-z-75 → scale: var(--baro-scale-x) var(--baro-scale-y) 75%\n // -scale-z-75 → scale: var(--baro-scale-x) var(--baro-scale-y) calc(75% * -1)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [\n decl(\n \"scale\",\n `var(--baro-scale-x) var(--baro-scale-y) calc(${pct} * ${sign}1)`\n ),\n ];\n }\n // scale-z-[1.7] → scale: var(--baro-scale-x) var(--baro-scale-y) 1.7\n return [decl(\"scale\", `var(--baro-scale-x) var(--baro-scale-y) ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(--baro-scale-x) var(--baro-scale-y) var(${value})`),\n ],\n description: \"scale-z utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// scale-<number>, -scale-<number>, scale-(<custom-property>), scale-[<value>]\nfunctionalUtility({\n name: \"scale\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [decl(\"scale\", `${value}`)];\n }\n\n // scale-75 → scale: 75% 75%\n // -scale-75 → scale: calc(75% * -1) calc(75% * -1)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n if (negative || String(value).startsWith(\"-\")) {\n return [decl(\"scale\", `calc(${pct} * -1) calc(${pct} * -1)`)];\n }\n return [decl(\"scale\", `${pct} ${pct}`)];\n }\n // scale-[1.7] → scale: 1.7\n return [decl(\"scale\", value)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(${value}) var(${value})`),\n ],\n description: \"scale utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Skew ---\n// skew documentation\n\n// skew-x-<number>, -skew-x-<number>, skew-x-(<custom-property>), skew-x-[<value>]\nfunctionalUtility({\n name: \"skew-x\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // skew-x-4 → transform: skewX(4deg)\n // -skew-x-4 → transform: skewX(-4deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `skewX(${sign}${deg})`)];\n }\n // skew-x-[3.142rad] → transform: skewX(3.142rad)\n return [decl(\"transform\", `skewX(${value})`)];\n },\n handleCustomProperty: (value) => [decl(\"transform\", `skewX(var(${value}))`)],\n description: \"skew-x utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// skew-y-<number>, -skew-y-<number>, skew-y-(<custom-property>), skew-y-[<value>]\nfunctionalUtility({\n name: \"skew-y\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // skew-y-4 → transform: skewY(4deg)\n // -skew-y-4 → transform: skewY(-4deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `skewY(${sign}${deg})`)];\n }\n // skew-y-[3.142rad] → transform: skewY(3.142rad)\n return [decl(\"transform\", `skewY(${value})`)];\n },\n handleCustomProperty: (value) => [decl(\"transform\", `skewY(var(${value}))`)],\n description: \"skew-y utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// skew-<number>, -skew-<number>, skew-(<custom-property>), skew-[<value>]\nfunctionalUtility({\n name: \"skew\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // skew-4 → transform: skewX(4deg) skewY(4deg)\n // -skew-4 → transform: skewX(-4deg) skewY(-4deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `skewX(${sign}${deg}) skewY(${sign}${deg})`)];\n }\n // skew-[3.142rad] → transform: skewX(3.142rad) skewY(3.142rad)\n return [decl(\"transform\", `skewX(${value}) skewY(${value})`)];\n },\n handleCustomProperty: (value) => [\n decl(\"transform\", `skewX(var(${value})) skewY(var(${value}))`),\n ],\n description: \"skew utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Transform Origin ---\n// transform-origin documentation\n\n// origin-center: transform-origin: center;\nstaticUtility(\"origin-center\", [[\"transform-origin\", \"center\"]], {\n category: \"transform\",\n});\n// origin-top: transform-origin: top;\nstaticUtility(\"origin-top\", [[\"transform-origin\", \"top\"]], {\n category: \"transform\",\n});\n// origin-top-right: transform-origin: top right;\nstaticUtility(\"origin-top-right\", [[\"transform-origin\", \"top right\"]], {\n category: \"transform\",\n});\n// origin-right: transform-origin: right;\nstaticUtility(\"origin-right\", [[\"transform-origin\", \"right\"]], {\n category: \"transform\",\n});\n// origin-bottom-right: transform-origin: bottom right;\nstaticUtility(\"origin-bottom-right\", [[\"transform-origin\", \"bottom right\"]], {\n category: \"transform\",\n});\n// origin-bottom: transform-origin: bottom;\nstaticUtility(\"origin-bottom\", [[\"transform-origin\", \"bottom\"]], {\n category: \"transform\",\n});\n// origin-bottom-left: transform-origin: bottom left;\nstaticUtility(\"origin-bottom-left\", [[\"transform-origin\", \"bottom left\"]], {\n category: \"transform\",\n});\n// origin-left: transform-origin: left;\nstaticUtility(\"origin-left\", [[\"transform-origin\", \"left\"]], {\n category: \"transform\",\n});\n// origin-top-left: transform-origin: top left;\nstaticUtility(\"origin-top-left\", [[\"transform-origin\", \"top left\"]], {\n category: \"transform\",\n});\n\n// origin-(<custom-property>): transform-origin: var(--custom-property);\nfunctionalUtility({\n name: \"origin\",\n prop: \"transform-origin\",\n supportsCustomProperty: true,\n supportsArbitrary: true,\n description:\n \"transform-origin utility for custom property (origin-(--my-transform-origin))\",\n category: \"transform\",\n});\n\n// --- Translate ---\n// translate documentation\n\nconst translateProperties = () =>\n atRoot([\n property(\"--baro-translate-x\", \"0\"),\n property(\"--baro-translate-y\", \"0\"),\n property(\"--baro-translate-z\", \"0\"),\n ]);\n\n// --- Static translate utilities ---\n// translate-none: disables all translation\nstaticUtility(\"translate-none\", [[\"translate\", \"none\"]], {\n category: \"transform\",\n});\n\n// translate-px, -translate-px, translate-full, -translate-full\nstaticUtility(\"translate-px\", [[\"translate\", \"1px 1px\"]], {\n category: \"transform\",\n});\nstaticUtility(\"-translate-px\", [[\"translate\", \"-1px -1px\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"translate-full\",\n [\n translateProperties,\n [\"--baro-translate-x\", \"100%\"],\n [\"--baro-translate-y\", \"100%\"],\n [\"translate\", \"var(--baro-translate-x) var(--baro-translate-y)\"],\n ],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-full\",\n [\n translateProperties,\n [\"--baro-translate-x\", \"-100%\"],\n [\"--baro-translate-y\", \"-100%\"],\n [\"translate\", \"var(--baro-translate-x) var(--baro-translate-y)\"],\n ],\n { category: \"transform\" }\n);\n\n// translate-x-px, -translate-x-px, translate-x-full, -translate-x-full\nstaticUtility(\n \"translate-x-px\",\n [[\"translate\", \"1px var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-x-px\",\n [[\"translate\", \"-1px var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"translate-x-full\",\n [[\"translate\", \"100% var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-x-full\",\n [[\"translate\", \"-100% var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\n\n// translate-y-px, -translate-y-px, translate-y-full, -translate-y-full\nstaticUtility(\n \"translate-y-px\",\n [[\"translate\", \"var(--baro-translate-x) 1px\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-y-px\",\n [[\"translate\", \"var(--baro-translate-x) -1px\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"translate-y-full\",\n [[\"translate\", \"var(--baro-translate-x) 100%\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-y-full\",\n [[\"translate\", \"var(--baro-translate-x) -100%\"]],\n { category: \"transform\" }\n);\n\n// translate-z-px, -translate-z-px\nstaticUtility(\n \"translate-z-px\",\n [[\"translate\", \"var(--baro-translate-x) var(--baro-translate-y) 1px\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-z-px\",\n [[\"translate\", \"var(--baro-translate-x) var(--baro-translate-y) -1px\"]],\n { category: \"transform\" }\n);\n\n// --- Functional translate utilities ---\n\n// translate-x-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate-x\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [decl(\"translate\", `${v} var(--baro-translate-y)`)];\n }\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [decl(\"translate\", `${v} var(--baro-translate-y)`)];\n }\n return [decl(\"translate\", `${value} var(--baro-translate-y)`)];\n },\n handleCustomProperty: (value) => [\n decl(\"translate\", `var(${value}) var(--baro-translate-y)`),\n ],\n description:\n \"translate-x utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n\n// translate-y-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate-y\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [decl(\"translate\", `var(--baro-translate-x) ${v}`)];\n }\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [decl(\"translate\", `var(--baro-translate-x) ${v}`)];\n }\n return [decl(\"translate\", `var(--baro-translate-x) ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"translate\", `var(--baro-translate-x) var(${value})`),\n ],\n description:\n \"translate-y utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n\n// translate-z-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate-z\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) ${v}`\n ),\n ];\n }\n\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) ${v}`\n ),\n ];\n }\n\n return [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) ${value}`\n ),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) var(${value})`\n ),\n ],\n description:\n \"translate-z utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n\n// translate-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n // Fraction\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [decl(\"translate\", `${v} ${v}`)];\n }\n // Number (spacing scale)\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [decl(\"translate\", `${v} ${v}`)];\n }\n // Arbitrary value\n return [decl(\"translate\", `${value} ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"translate\", `var(${value}) var(${value})`),\n ],\n description:\n \"translate utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n","import { decl } from \"../core/ast\";\nimport { staticUtility, functionalUtility } from \"../core/registry\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Fill Utilities ---\n// fill documentation\n\n// Static fill values\nstaticUtility(\"fill-inherit\", [[\"fill\", \"inherit\"]], { category: 'svg' });\nstaticUtility(\"fill-current\", [[\"fill\", \"currentColor\"]], { category: 'svg' });\nstaticUtility(\"fill-transparent\", [[\"fill\", \"transparent\"]], { category: 'svg' });\nstaticUtility(\"fill-black\", [[\"fill\", \"#000\"]], { category: 'svg' });\nstaticUtility(\"fill-white\", [[\"fill\", \"#fff\"]], { category: 'svg' });\n\n// Functional: theme color, arbitrary, custom property\nfunctionalUtility({\n name: \"fill\",\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n return [decl(\"fill\", `var(--color-${extra.realThemeValue})`)];\n }\n return [decl(\"fill\", value)];\n },\n description: \"fill utility (static, theme, arbitrary, custom property supported)\",\n category: \"svg\",\n});\n\n// --- Stroke Utilities ---\n// stroke documentation\nstaticUtility(\"stroke-inherit\", [[\"stroke\", \"inherit\"]], { category: 'svg' });\nstaticUtility(\"stroke-current\", [[\"stroke\", \"currentColor\"]], { category: 'svg' });\nstaticUtility(\"stroke-transparent\", [[\"stroke\", \"transparent\"]], { category: 'svg' });\nstaticUtility(\"stroke-black\", [[\"stroke\", \"#000\"]], { category: 'svg' });\nstaticUtility(\"stroke-white\", [[\"stroke\", \"#fff\"]], { category: 'svg' });\n\nfunctionalUtility({\n name: \"stroke\",\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token, extra) => {\n\n if (parseNumber(value)) {\n return [decl(\"stroke-width\", value)];\n }\n\n if (extra?.realThemeValue) {\n return [decl(\"stroke\", `var(--color-${extra.realThemeValue})`)];\n }\n return [decl(\"stroke\", value)];\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"length:\")) {\n const cp = value.replace(\"length:\", \"\");\n return [decl(\"stroke-width\", `var(${cp})`)];\n }\n return [decl(\"stroke\", `var(${value})`)];\n },\n description: \"stroke utility (static, theme, arbitrary, custom property supported)\",\n category: \"svg\",\n});\n\n","import { staticUtility } from \"../core/registry\";\n\n// --- Forced Color Adjust Utilities ---\n// forced-color-adjust documentation\nstaticUtility(\"forced-color-adjust-auto\", [[\"forced-color-adjust\", \"auto\"]], { category: 'accessibility' });\nstaticUtility(\"forced-color-adjust-none\", [[\"forced-color-adjust\", \"none\"]], { category: 'accessibility' }); ","import { staticModifier } from \"../../core/registry\";\n\n// --- Basic pseudo-class variants ---\nstaticModifier('hover', ['&:hover'], { order: 50, source: 'pseudo' });\nstaticModifier('focus', ['&:focus'], { order: 50, source: 'pseudo' });\nstaticModifier('active', ['&:active'], { order: 50, source: 'pseudo' });\nstaticModifier('visited', ['&:visited'], { order: 50, source: 'pseudo' });\nstaticModifier('focus-visible', ['&:focus-visible'], { order: 50, source: 'pseudo' });\nstaticModifier('focus-within', ['&:focus-within'], { order: 50, source: 'pseudo' }); ","import { staticModifier } from \"../../core/registry\";\n\n// --- Form state variants ---\nstaticModifier('disabled', ['&:disabled'], { source: 'pseudo' });\nstaticModifier('checked', ['&:checked'], { source: 'pseudo' });\nstaticModifier('required', ['&:required'], { source: 'pseudo' });\nstaticModifier('invalid', ['&:invalid'], { source: 'pseudo' });\nstaticModifier('enabled', ['&:enabled'], { source: 'pseudo' });\nstaticModifier('indeterminate', ['&:indeterminate'], { source: 'pseudo' });\nstaticModifier('default', ['&:default'], { source: 'pseudo' });\nstaticModifier('optional', ['&:optional'], { source: 'pseudo' });\nstaticModifier('valid', ['&:valid'], { source: 'pseudo' });\nstaticModifier('user-valid', ['&:user-valid'], { source: 'pseudo' });\nstaticModifier('user-invalid', ['&:user-invalid'], { source: 'pseudo' });\nstaticModifier('in-range', ['&:in-range'], { source: 'pseudo' });\nstaticModifier('out-of-range', ['&:out-of-range'], { source: 'pseudo' });\nstaticModifier('placeholder-shown', ['&:placeholder-shown'], { source: 'pseudo' });\nstaticModifier('autofill', ['&:autofill'], { source: 'pseudo' });\nstaticModifier('read-only', ['&:read-only'], { source: 'pseudo' }); ","import { staticModifier } from \"../../core/registry\";\n\n// --- Structural selector variants ---\nstaticModifier('first', ['&:first-child'], { source: 'pseudo' });\nstaticModifier('last', ['&:last-child'], { source: 'pseudo' });\nstaticModifier('only', ['&:only-child'], { source: 'pseudo' });\nstaticModifier('odd', ['&:nth-child(odd)'], { source: 'pseudo' });\nstaticModifier('even', ['&:nth-child(even)'], { source: 'pseudo' });\nstaticModifier('first-of-type', ['&:first-of-type'], { source: 'pseudo' });\nstaticModifier('last-of-type', ['&:last-of-type'], { source: 'pseudo' });\nstaticModifier('only-of-type', ['&:only-of-type'], { source: 'pseudo' });\nstaticModifier('empty', ['&:empty'], { source: 'pseudo' }); ","import { staticModifier } from \"../../core/registry\";\nimport { AstNode, atRule } from \"../../core/ast\";\n\n// --- Media feature variants ---\nstaticModifier('prefers-contrast-more', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-contrast: more)', [], 'media')],\n source: 'media'\n});\nstaticModifier('prefers-contrast-less', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-contrast: less)', [], 'media')],\n source: 'media'\n});\nstaticModifier('forced-colors', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(forced-colors: active)', [], 'media')],\n source: 'media'\n});\nstaticModifier('pointer-coarse', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(pointer: coarse)', [], 'media')],\n source: 'media'\n});\nstaticModifier('pointer-fine', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(pointer: fine)', [], 'media')],\n source: 'media'\n});\nstaticModifier('any-pointer-coarse', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(any-pointer: coarse)', [], 'media')],\n source: 'media'\n});\nstaticModifier('any-pointer-fine', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(any-pointer: fine)', [], 'media')],\n source: 'media'\n});\n\n// Motion variants\nstaticModifier('motion-safe', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-reduced-motion: no-preference)', [], 'media')],\n source: 'media'\n});\nstaticModifier('motion-reduce', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-reduced-motion: reduce)', [], 'media')],\n source: 'media'\n});\n\n// Print and orientation variants\nstaticModifier('print', ['&'], {\n order: 5,\n wrap: () => [atRule('media', 'print', [], 'media')],\n source: 'media'\n});\nstaticModifier('portrait', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(orientation: portrait)', [], 'media')],\n source: 'media'\n});\nstaticModifier('landscape', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(orientation: landscape)', [], 'media')],\n source: 'media'\n}); ","import { staticModifier } from \"../../core/registry\";\n \n// --- Attribute selector variants ---\nstaticModifier('rtl', ['&[dir=rtl]'], { order: 20, source: 'attribute' });\nstaticModifier('ltr', ['&[dir=ltr]'], { order: 20, source: 'attribute' });\nstaticModifier('inert', ['&[inert]'], { order: 40, source: 'attribute' });\nstaticModifier('open', ['&:is([open], :popover-open, :open)'], { order: 40, source: 'attribute' }); ","import { staticModifier } from \"../../core/registry\";\nimport { AstNode, atRule } from \"../../core/ast\";\n\n// Import separated variant modules\nimport \"./pseudo-classes\";\nimport \"./form-states\";\nimport \"./structural-selectors\";\nimport \"./media-features\";\nimport \"./attribute-selectors\";\n\n// --- Pseudo-elements (cross-browser) ---\nstaticModifier('before', ['&::before'], { source: 'pseudo' });\nstaticModifier('after', ['&::after'], { source: 'pseudo' });\nstaticModifier('placeholder', [\n '&::placeholder',\n '&::-webkit-input-placeholder',\n '&::-moz-placeholder',\n '&:-ms-input-placeholder',\n], { source: 'pseudo' });\nstaticModifier('selection', [\n '&::selection',\n '&::-moz-selection',\n], { source: 'pseudo' });\nstaticModifier('file', [\n '&::file-selector-button',\n '&::-webkit-file-upload-button',\n], { source: 'pseudo' });\nstaticModifier('marker', [\n '&::marker',\n '&::-webkit-details-marker',\n '&::-moz-list-bullet',\n '&::-moz-list-number',\n], { source: 'pseudo' });\nstaticModifier('details-content', ['&::details-content'], { source: 'pseudo' });\nstaticModifier('first-line', ['&::first-line'], { source: 'pseudo' });\nstaticModifier('first-letter', ['&::first-letter'], { source: 'pseudo' });\nstaticModifier('backdrop', ['&::backdrop'], { source: 'pseudo' });\n\n// --- starting: variant (maps to @starting-style) ---\nstaticModifier('starting', ['&'], {\n wrap: () => [atRule('starting-style', '', [], 'starting')],\n source: 'starting'\n}); ","import { AstNode } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\n\n/**\n * Create container query parameters\n */\nexport function createContainerParams(type: 'min' | 'max', value: string, name?: string): string {\n const condition = type === 'min' ? 'width >=' : 'width <';\n return name ? `${name} (${condition} ${value})` : `(${condition} ${value})`;\n}\n\n/**\n * Create media query parameters\n */\nexport function createMediaParams(type: 'min' | 'max', value: string): string {\n return type === 'min' ? `(min-width: ${value})` : `(width < ${value})`;\n}\n\n/**\n * Get size value from theme\n */\nexport function getThemeSize(ctx: Context, key: string): string | undefined {\n return ctx.theme('container.' + key) as string || ctx.theme('breakpoint.' + key) as string;\n}\n\n/**\n * Create container query AST\n */\nexport function createContainerRule(params: string, ast: AstNode | AstNode[]): AstNode {\n return {\n type: 'at-rule',\n name: 'container',\n params,\n nodes: Array.isArray(ast) ? ast : [ast],\n source: 'container'\n };\n}\n\n/**\n * Create media query AST\n */\nexport function createMediaRule(params: string, ast: AstNode | AstNode[]): AstNode {\n return {\n type: 'at-rule',\n name: 'media',\n params,\n nodes: Array.isArray(ast) ? ast : [ast],\n };\n}\n\n// Default breakpoint values (fallback)\nexport function getDefaultBreakpoint(breakpoint: string): string {\n const defaults: Record<string, string> = {\n 'sm': '(min-width: 640px)',\n 'md': '(min-width: 768px)', \n 'lg': '(min-width: 1024px)',\n 'xl': '(min-width: 1280px)',\n '2xl': '(min-width: 1536px)'\n };\n return defaults[breakpoint] || `(min-width: ${breakpoint})`;\n} ","import { functionalModifier } from \"../../core/registry\";\nimport { atRule } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\nimport { ParsedModifier } from \"../../core/parser\";\nimport { getDefaultBreakpoint } from \"./utils\";\n\n// responsive (media queries) - dynamic breakpoint support\nfunctionalModifier(\n (mod: string, context: Context) => {\n // 1. Check breakpoints defined in config (matches actual implementation)\n const breakpoints = context.theme('breakpoints') || context.config('theme.breakpoints') || {};\n const breakpointKeys = Object.keys(breakpoints);\n \n // 2. Check basic breakpoints (all breakpoints defined in config)\n if (breakpointKeys.includes(mod)) {\n return true;\n }\n \n // 3. Check max-width breakpoint (max-{breakpoint})\n if (mod.startsWith('max-')) {\n const baseBreakpoint = mod.replace('max-', '');\n // 3-1. When it is a defined breakpoint\n if (breakpointKeys.includes(baseBreakpoint)) {\n return true;\n }\n // 3-2. When it is an arbitrary max-width (max-[960px])\n if (/^\\[.*\\]$/.test(baseBreakpoint)) {\n return true;\n }\n }\n \n // 4. Check arbitrary min-width (min-[600px])\n if (/^min-\\[.*\\]$/.test(mod)) {\n return true; // arbitrary values are always valid\n }\n \n // 5. Check arbitrary max-width (max-[960px])\n if (/^max-\\[.*\\]$/.test(mod)) {\n return true; // arbitrary values are always valid\n }\n \n return false;\n },\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const breakpoint = mod.type;\n \n // 1. Handle breakpoints defined in config (v4.1 standard)\n const breakpoints = context.theme('breakpoints') || context.config('theme.breakpoints') || {};\n \n // 2. Handle basic breakpoints (all breakpoints defined in config)\n if (Object.keys(breakpoints).includes(breakpoint)) {\n let mediaQuery: string = context.theme(`breakpoints.${breakpoint}`) as string || \n getDefaultBreakpoint(breakpoint);\n // If only a number (px/em/rem etc.) is provided, wrap with (min-width: ...)\n if (/^\\d+(px|em|rem)?$/.test(mediaQuery)) {\n mediaQuery = `(min-width: ${mediaQuery})`;\n }\n return [atRule('media', mediaQuery, [], 'responsive')];\n }\n \n // 3. Handle max-width breakpoint (max-{breakpoint})\n if (breakpoint.startsWith('max-')) {\n const baseBreakpoint = breakpoint.replace('max-', '');\n \n // 3-1. When it is a defined breakpoint (max-sm, max-md, etc.)\n if (Object.keys(breakpoints).includes(baseBreakpoint)) {\n let mediaQuery = context.theme(`breakpoints.${baseBreakpoint}`) as string || \n getDefaultBreakpoint(baseBreakpoint);\n \n // Convert min-width to max-width\n if (mediaQuery.includes('min-width:')) {\n const value = mediaQuery.match(/min-width:\\s*([^)]+)/)?.[1];\n if (value) {\n mediaQuery = `(width < ${value})`;\n }\n } else if (mediaQuery.includes('width >=')) {\n const value = mediaQuery.match(/width >=\\s*([^)]+)/)?.[1];\n if (value) {\n mediaQuery = `(width < ${value})`;\n }\n }\n \n return [atRule('media', mediaQuery, [], 'responsive')];\n }\n \n // 3-2. When it is an arbitrary max-width (max-[960px])\n if (/^\\[(.*)\\]$/.test(baseBreakpoint)) {\n const value = baseBreakpoint.match(/^\\[(.*)\\]$/)?.[1];\n if (value) {\n return [atRule('media', `(width < ${value})`, [], 'responsive')];\n }\n }\n }\n \n // 4. Handle arbitrary min-width (min-[600px])\n if (/^min-\\[(.*)\\]$/.test(breakpoint)) {\n const value = breakpoint.match(/^min-\\[(.*)\\]$/)?.[1];\n if (value) {\n return [atRule('media', `(width >= ${value})`, [], 'responsive')];\n }\n }\n \n // 5. Handle arbitrary max-width (max-[960px])\n if (/^max-\\[(.*)\\]$/.test(breakpoint)) {\n const value = breakpoint.match(/^max-\\[(.*)\\]$/)?.[1];\n if (value) {\n return [atRule('media', `(width < ${value})`, [], 'responsive')];\n }\n }\n return [];\n }\n); ","import { functionalModifier } from \"../../core/registry\";\nimport { AstNode, atRule, rule } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\nimport { ParsedModifier } from \"../../core/parser\";\n\n// Dark variant plugin\nconst getDarkSelectors = (ctx: Context) => {\n const mode = ctx.config(\"darkMode\") || \"media\";\n const custom = ctx.config(\"darkModeSelector\");\n const selectors: { type: \"media\" | \"selector\"; value: string }[] = [];\n\n if (mode === \"media\") {\n selectors.push({ type: \"media\", value: \"(prefers-color-scheme: dark)\" });\n if (custom) {\n const joined = Array.isArray(custom) ? custom.join(\", \") : custom;\n selectors.push({ type: \"selector\", value: joined as string });\n }\n return selectors;\n }\n if (mode === \"class\") {\n if (custom) {\n const joined = Array.isArray(custom) ? custom.join(\", \") : custom;\n selectors.push({ type: \"selector\", value: joined as string });\n return selectors;\n }\n selectors.push({ type: \"selector\", value: \".dark\" });\n return selectors;\n }\n selectors.push({ type: \"selector\", value: \".dark\" });\n return selectors;\n};\n\nfunctionalModifier(\n (mod: string) => mod === \"dark\",\n undefined, // modifySelector is not used\n (_mod: ParsedModifier, ctx: Context) => {\n const selectors = getDarkSelectors(ctx);\n \n const result: AstNode[] = [];\n\n selectors.forEach((sel) => {\n if (sel.type === \"media\") {\n const atRuleNode = atRule(\"media\", sel.value, [], 'dark');\n result.push(atRuleNode);\n } else {\n const ruleNode = rule(sel.value, [], 'dark');\n result.push(ruleNode);\n }\n });\n\n return result;\n }\n); \n","import { functionalModifier } from \"../../core/registry\";\nimport { AstNode, atRule } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\nimport { ParsedModifier } from \"../../core/parser\";\nimport { createContainerRule, createContainerParams, getThemeSize } from \"./utils\";\n\n// --- @container query variants ---\n\n// 1. @container/main - named container\nfunctionalModifier(\n (mod: string) => /^@container\\/([a-zA-Z0-9_-]+)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const containerMatch = /^@container\\/([a-zA-Z0-9_-]+)$/.exec(mod.type);\n if (containerMatch) {\n const name = containerMatch[1];\n const params = name; // Just the name, no condition\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 2. @container/size - named container with arbitrary size\nfunctionalModifier(\n (mod: string) => /^@container\\/([a-zA-Z0-9_-]+)\\s+\\(([^)]+)\\)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const containerSizeMatch = /^@container\\/([a-zA-Z0-9_-]+)\\s+\\(([^)]+)\\)$/.exec(mod.type);\n if (containerSizeMatch) {\n const [, name, size] = containerSizeMatch;\n const params = createContainerParams('min', size, name);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 3. @container/size - theme size with named container\nfunctionalModifier(\n (mod: string) => /^@(sm|md|lg|xl|2xl)\\/([a-zA-Z0-9_-]+)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const namedSizeMatch = /^@(sm|md|lg|xl|2xl)\\/([a-zA-Z0-9_-]+)$/.exec(mod.type);\n if (namedSizeMatch) {\n const [, size, name] = namedSizeMatch;\n const sizeValue = getThemeSize(context, size) || size;\n const params = createContainerParams('min', sizeValue, name);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 4. @container/size - theme size without named container\nfunctionalModifier(\n (mod: string) => /^@(sm|md|lg|xl|2xl)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const themeSizeMatch = /^@(sm|md|lg|xl|2xl)$/.exec(mod.type);\n if (themeSizeMatch) {\n const size = themeSizeMatch[1];\n const sizeValue = getThemeSize(context, size) || size;\n const params = createContainerParams('min', sizeValue);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 4.5. @max-container/size - max theme size without named container\nfunctionalModifier(\n (mod: string) => /^@max-(sm|md|lg|xl|2xl)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const themeSizeMatch = /^@max-(sm|md|lg|xl|2xl)$/.exec(mod.type);\n if (themeSizeMatch) {\n const size = themeSizeMatch[1];\n const sizeValue = getThemeSize(context, size) || size;\n const params = createContainerParams('max', sizeValue);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 5. @container/size - arbitrary size\nfunctionalModifier(\n (mod: string) => /^@(min|max)-\\[.*\\]$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const arbitraryMatch = /^@(min|max)-\\[(.+)\\]$/.exec(mod.type);\n if (arbitraryMatch) {\n const [, type, value] = arbitraryMatch;\n const params = createContainerParams(type as 'min' | 'max', value);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 6. @container/size - arbitrary size with named container\nfunctionalModifier(\n (mod: string) => /^@(min|max)-\\[.*\\]\\/([a-zA-Z0-9_-]+)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const arbitraryNamedMatch = /^@(min|max)-\\[(.+)\\]\\/([a-zA-Z0-9_-]+)$/.exec(mod.type);\n if (arbitraryNamedMatch) {\n const [, type, value, name] = arbitraryNamedMatch;\n const params = createContainerParams(type as 'min' | 'max', value, name);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// has-[]: functionalModifier\nfunctionalModifier(\n (mod: string) => /^has-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^has-\\[(.+)\\]$/.exec(mod.type);\n\n if (m && m[1].startsWith('.')) {\n return {\n selector: `&:has(${m[1]})`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n\n return m ? {\n selector: `&:has(${m[1]})`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined,\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// not-[]: functionalModifier for arbitrary negation\nfunctionalModifier(\n (mod: string) => /^not-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^not-\\[(.+)\\]$/.exec(mod.type);\n if (m) {\n\n if (m[1].startsWith('.')) {\n return {\n selector: `&:not(${m[1]})`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n\n return {\n selector: `&:not([${m[1]}])`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n \n return {\n selector,\n source: 'attribute'\n };\n }\n);\n\n// not-: functionalModifier for pseudo-class negation\nfunctionalModifier(\n (mod: string) => /^not-/.test(mod),\n ({ selector, mod }) => {\n const m = /^not-(.+)$/.exec(mod.type);\n return {\n selector: m ? `&:not(:${m[1]})` : selector,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n); ","import { functionalModifier, escapeClassName } from \"../../core/registry\";\n\n// --- Universal selector variants ( 4.x style, supports chaining/:is wrapping) ---\nfunctionalModifier(\n (mod) => mod === '*',\n ({ selector, fullClassName, variantChain }) => {\n const isSingle = !variantChain || variantChain.length === 1;\n return {\n selector: `:is(.${escapeClassName(fullClassName)} > *)`,\n flatten: true,\n wrappingType: isSingle ? 'rule' : 'style-rule',\n source: 'universal'\n };\n },\n undefined,\n);\n\nfunctionalModifier(\n (mod) => mod === '**',\n ({ selector, fullClassName }) => {\n return {\n selector: `:is(.${escapeClassName(fullClassName)} *)`,\n flatten: false,\n wrappingType: 'style-rule',\n source: 'universal'\n };\n },\n undefined,\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// Master CSS-style arbitrary variant ([...]) support (order: 999, always last)\nfunctionalModifier(\n (mod: string) => /^\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^\\[(.+)\\]$/.exec(mod.type);\n if (!m) return { selector };\n const inner = m[1].trim();\n // For attribute selectors (attr=val) or simple attributes ([open]), wrap with brackets\n if (/^[a-zA-Z0-9_-]+(=.+)?$/.test(inner)) {\n return { selector: `&[${inner}]`, wrappingType: 'rule', source: 'attribute' };\n }\n\n if (inner === '&>*') {\n return { selector: `${inner}`, wrappingType: 'style-rule', source: 'peer' };\n }\n\n if (inner.startsWith('&')) {\n return { selector: `${inner}`, wrappingType: 'rule', source: 'pseudo' };\n }\n\n return { selector: `${inner} &`.trim(), wrappingType: 'rule', source: 'base' };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- Standard aria and not- variants ---\nfunctionalModifier(\n (mod: string) => /^aria-/.test(mod),\n ({ selector, mod }) => {\n // aria-[expanded=true] → &[aria-expanded=\"true\"] { ... }\n const bracket = /^aria-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(mod.type);\n if (bracket) {\n const key = bracket[1];\n const value = bracket[2] ?? 'true';\n return {\n selector: `&[aria-${key}=\"${value}\"]`,\n source: 'aria'\n };\n }\n // aria-pressed → &[aria-pressed=\"true\"] { ... }\n const m2 = /^aria-([a-zA-Z0-9_]+)$/.exec(mod.type);\n if (m2) {\n const key = m2[1];\n return {\n selector: `&[aria-${key}=\"true\"]`,\n source: 'aria'\n };\n }\n return {\n selector,\n source: 'aria'\n };\n },\n undefined\n);\n\nfunctionalModifier(\n (mod: string) => mod.startsWith('not-'),\n ({ selector, mod }) => {\n const pseudo = mod.type.replace('not-', '');\n if (pseudo.startsWith('[')) {\n const inner = pseudo.slice(1, -1);\n // Attribute pattern: identifier(=value)? (e.g., open, dir=rtl, aria-pressed=true)\n if (/^[a-zA-Z0-9_-]+(=.+)?$/.test(inner)) {\n return {\n selector: `&:not([${inner}])`,\n source: 'attribute'\n };\n } else {\n // Otherwise, treat as a selector\n return {\n selector: `&:not(${inner})`,\n source: 'attribute'\n };\n }\n } else {\n // not-hover → :not(:hover)\n return {\n selector: `&:not(:${pseudo})`,\n source: 'attribute'\n };\n }\n },\n undefined\n);\n\n// --- Standard data- variants (similar to aria-) ---\nfunctionalModifier(\n (mod: string) => /^data-/.test(mod),\n ({ selector, mod }) => {\n \n // data-[state=open] → [data-state=\"open\"] & { ... }\n const bracket = /^data-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(mod.type);\n if (bracket) {\n const key = bracket[1];\n const value = bracket[2] ?? 'true';\n return {\n selector: `&[data-${key}=\"${value}\"]`,\n source: 'data'\n };\n }\n // data-avatar → [data-avatar] & { ... }\n const m2 = /^data-([a-zA-Z0-9_]+)$/.exec(mod.type);\n if (m2) {\n const key = m2[1];\n return {\n selector: `&[data-${key}]`,\n source: 'data'\n };\n }\n return {\n selector,\n source: 'attribute'\n };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- Nth-child, nth-last-child, nth-of-type, nth-last-of-type (숫자/패턴 기반) ---\nfunctionalModifier(\n (mod: string) => /^nth-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-child(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^nth-last-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-last-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-last-child(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^nth-of-type-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-of-type-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-of-type(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^nth-last-of-type-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-last-of-type-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-last-of-type(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- Functional selector variants ---\nfunctionalModifier(\n (mod: string) => /^is-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^is-\\[(.+)\\]$/.exec(mod.type);\n return m ? {\n selector: `&:is(${m[1]})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^where-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^where-\\[(.+)\\]$/.exec(mod.type);\n return m ? {\n selector: `&:where(${m[1]})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\nimport { atRule } from \"../../core/ast\";\n\n// --- At-rule variants ---\n\n// supports-[]: functionalModifier\nfunctionalModifier(\n (mod: string) => /^supports-\\[.*\\]$/.test(mod),\n undefined,\n (mod) => {\n const m = /^supports-\\[(.+)\\]$/.exec(mod.type);\n if (m) {\n return [atRule('supports', `(${m[1]})`, [], 'supports')];\n }\n return [];\n }\n);\n\n// --- layer-[]: @layer 쿼리 variant ---\nfunctionalModifier(\n (mod: string) => /^layer-\\[.*\\]$/.test(mod),\n undefined,\n (mod) => {\n const m = /^layer-\\[(.+)\\]$/.exec(mod.type);\n return m ? [atRule('layer', m[1], [])] : [];\n }\n);\n\n// --- scope-[]: @scope 쿼리 variant ---\nfunctionalModifier(\n (mod: string) => /^scope-\\[.*\\]$/.test(mod),\n undefined,\n (mod) => {\n const m = /^scope-\\[(.+)\\]$/.exec(mod.type);\n return m ? [atRule('scope', m[1], [])] : [];\n }\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- group/peer/parent/child extensions (examples: group-focus, peer-active, etc.) ---\nfunctionalModifier(\n (mod: string) => /^group-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^group-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n const value = m?.[1].slice(1, -1).replace(/_/g, '');\n return {\n selector: `&:is(:where(.group):is(${value}) *)`,\n wrappingType: 'rule',\n source: 'group'\n };\n }\n\n if (m?.[1]?.startsWith('has-')) {\n const pattern = /^has-\\[([a-zA-Z0-9_-]+)\\]$/.exec(m?.[1]);\n if (pattern) {\n const value = pattern[1];\n return {\n selector: `&:is(:where(.group):has(:is(${value})) *)`,\n source: 'group'\n };\n }\n return {\n selector: `&:is(:where(.group):has(:is(${m?.[1].slice(4, -1)})) *)`,\n source: 'group'\n };\n }\n\n if (m?.[1]?.startsWith('aria-')) {\n const pattern = /^aria-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(m?.[1]);\n if (pattern) {\n const value = pattern[1];\n if (pattern[2]) {\n return {\n selector: `&:is(:where(.group)[aria-${value}=\"${pattern[2]}\"] *)`,\n source: 'group'\n };\n } else {\n return {\n selector: `&:is(:where(.group)[aria-${value}] *)`,\n source: 'group'\n };\n }\n }\n }\n\n return m ? {\n selector: `&:is(:where(.group):${m[1]} *)`,\n wrappingType: 'rule',\n source: 'group'\n } : {\n selector,\n source: 'group'\n };\n },\n undefined,\n);\n\nfunctionalModifier(\n (mod: string) => /^peer-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^peer-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n const value = m?.[1].slice(1, -1).replace(/_/g, '');\n return {\n selector: `&:is(:where(.peer):is(${value})~*)`,\n wrappingType: 'rule',\n source: 'peer'\n };\n }\n\n const value = m?.[1];\n\n // has-xxxx, not-xxxx, aria-xxxx\n\n if (value?.startsWith('has-')) {\n return {\n selector: `&:is(:where(.peer):has(:${value.slice(4)})~*)`,\n source: 'peer'\n };\n }\n\n if (value?.startsWith('not-')) {\n return {\n selector: `&:is(:where(.peer):not(:${value.slice(4)})~*)`,\n source: 'peer'\n };\n }\n \n if (value?.startsWith('aria-')) {\n\n let pattern = /^aria-([a-zA-Z0-9_]+)$/.exec(value);\n if (pattern) {\n const key = pattern[1];\n return {\n selector: `&:is(:where(.peer)[aria-${key}]~*)`,\n source: 'peer'\n };\n }\n\n pattern = /^aria-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(value);\n if (pattern) {\n const key = pattern[1];\n const value = pattern[2];\n\n if (pattern[2]) {\n return {\n selector: `&:is(:where(.peer)[aria-${key}=\"${value}\"]~*)`,\n source: 'peer'\n };\n } else {\n return {\n selector: `&:is(:where(.peer)[aria-${key}]~*)`,\n source: 'peer'\n };\n }\n }\n }\n\n return m ? {\n selector: `&:is(:where(.peer):${value}~*)`,\n source: 'peer'\n } : {\n selector,\n source: 'peer'\n };\n },\n undefined,\n);\n\n// --- parent/child extensions (not in the actual spec, but extensibility example) ---\nfunctionalModifier(\n (mod: string) => /^parent-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^parent-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n return {\n selector: `.parent\\\\:\\\\[${m[1].slice(1, -1)}\\\\] &`,\n wrappingType: 'rule',\n source: 'parent'\n };\n }\n\n return m ? {\n selector: `.parent:${m[1]} &`,\n source: 'parent'\n } : {\n selector,\n source: 'parent'\n };\n },\n undefined,\n);\nfunctionalModifier(\n (mod: string) => /^child-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^child-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n return {\n selector: `& > .child\\\\:\\\\[${m[1].slice(1, -1)}\\\\]`,\n wrappingType: 'rule',\n source: 'child'\n };\n }\n return m ? {\n selector: `& > .child:${m[1]}`,\n source: 'child'\n } : {\n selector,\n source: 'child'\n };\n },\n undefined,\n); ","/**\n * StylePartitionManager\n *\n * StylePartitionManager is a singleton class that manages the partition of styles into different parts.\n * It is used to manage the partition of styles into different parts.\n *\n */\n\nimport { GenerateCssRulesResult } from \"@barocss/kit\";\nimport { parseResultCache } from \"@barocss/kit\";\n\nexport interface StylePartition {\n id: string;\n styles: string[];\n styleElement: HTMLStyleElement;\n}\n\nexport class StylePartitionManager {\n private partitions: StylePartition[] = [];\n private categoryPartitions: Map<string, StylePartition> = new Map();\n private partitionCounter = 0;\n private maxRulesPerPartition = 50;\n private insertionPoint: HTMLElement;\n private classToPartitionMap = new Map<string, number>();\n private classToCategoryPartitionMap = new Map<string, string>();\n private styleIdPrefix = \"barocss-style-partition-\";\n\n constructor(\n insertionPoint: HTMLElement,\n maxRulesPerPartition: number = 50,\n styleIdPrefix: string = \"barocss-style-partition-\"\n ) {\n this.insertionPoint = insertionPoint;\n this.maxRulesPerPartition = maxRulesPerPartition;\n this.styleIdPrefix = styleIdPrefix;\n\n this.initializeDefaultPartition();\n }\n\n private initializeDefaultPartition() {\n this.createNewPartition();\n }\n\n private createNewCategoryPartition(category: string) {\n const newPartition: StylePartition = {\n id: this.styleIdPrefix + `-${category}`,\n styles: [],\n styleElement: document.createElement(\"style\"),\n };\n\n // set id\n newPartition.styleElement.id = newPartition.id;\n newPartition.styleElement.setAttribute(\"data-barocss\", \"partition\");\n newPartition.styleElement.setAttribute(\"data-category\", category);\n\n // set insertion point\n this.insertionPoint.appendChild(newPartition.styleElement);\n\n this.categoryPartitions.set(category, newPartition);\n\n return newPartition;\n }\n\n private createNewPartition() {\n const newPartition: StylePartition = {\n id: this.styleIdPrefix + `-${this.partitionCounter++}`,\n styles: [],\n styleElement: document.createElement(\"style\"),\n };\n this.partitions.push(newPartition);\n\n // set id\n newPartition.styleElement.id = newPartition.id;\n newPartition.styleElement.setAttribute(\"data-barocss\", \"partition\");\n newPartition.styleElement.setAttribute(\n \"data-partition-index\",\n this.partitionCounter.toString()\n );\n\n // set insertion point\n this.insertionPoint.appendChild(newPartition.styleElement);\n\n return newPartition;\n }\n\n hasRule(rule: string) {\n return this.classToPartitionMap.has(rule);\n }\n\n hasCategoryRule(rule: string, category: string) {\n return this.classToCategoryPartitionMap.get(rule) === category;\n }\n\n setRuleCache(rule: string, partitionIndex: number) {\n this.classToPartitionMap.set(rule, partitionIndex);\n }\n\n setCategoryRuleCache(rule: string, category: string) {\n this.classToCategoryPartitionMap.set(rule, category);\n }\n\n get currentPartition() {\n return this.partitions[this.partitions.length - 1];\n }\n\n getCategoryPartition(category: string) {\n return this.categoryPartitions.get(category);\n }\n\n /**\n * Escape CSS rule text\n * - Properly escape special characters\n * - Prevent CSS syntax errors\n */\n private escapeCssRule(rule: string): string {\n // Basic CSS string normalization\n const escaped = rule.replace(/\\\\\\//g, '\\\\/');\n\n return escaped;\n }\n\n addRule(rule: string) {\n if (this.hasRule(rule)) {\n return false;\n }\n\n if (this.currentPartition.styles.length >= this.maxRulesPerPartition) {\n this.createNewPartition();\n }\n\n const currentPartition = this.currentPartition;\n const partitionIndex = this.partitions.length - 1;\n\n try {\n // CSS 규칙 삽입\n const sheet = currentPartition.styleElement.sheet;\n if (sheet) {\n sheet.insertRule(this.escapeCssRule(rule), sheet.cssRules.length);\n } else {\n // sheet가 없는 경우 textContent로 폴백\n currentPartition.styleElement.textContent += rule + \"\\n\";\n }\n\n // 성공적으로 삽입된 경우에만 캐시 업데이트\n this.setRuleCache(rule, partitionIndex);\n currentPartition.styles.push(rule);\n\n return true;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(\n `[StylePartitionManager] Failed to insert rule: ${rule}`,\n error\n );\n return false;\n }\n }\n\n addCategoryRule(rule: string, category: string) {\n if (this.hasCategoryRule(rule, category)) {\n return false;\n }\n\n let categoryPartition = this.getCategoryPartition(category);\n if (!categoryPartition) {\n categoryPartition = this.createNewCategoryPartition(category);\n }\n\n try {\n const sheet = categoryPartition.styleElement.sheet;\n if (sheet) {\n sheet.insertRule(this.escapeCssRule(rule), sheet.cssRules.length);\n } else {\n categoryPartition.styleElement.textContent += rule + \"\\n\";\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(\n `[StylePartitionManager] Failed to insert rule in category: ${category} ${rule}`,\n error\n );\n return false;\n }\n\n this.setCategoryRuleCache(rule, category);\n categoryPartition.styles.push(rule);\n\n return true;\n }\n \n addRootRules(rules: string[]) {\n let categoryPartition = this.getCategoryPartition(\"root\");\n if (!categoryPartition) {\n categoryPartition = this.createNewCategoryPartition(\"root\");\n } \n\n try {\n\n const sheet = categoryPartition.styleElement.sheet;\n\n for (const rule of rules) {\n if (sheet) {\n sheet.insertRule(this.escapeCssRule(rule), sheet.cssRules.length);\n } else {\n categoryPartition.styleElement.textContent += rule + \"\\n\";\n }\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(\n `[StylePartitionManager] Failed to insert rule in category: root ${rules.join(\"\\n\")}`,\n error\n );\n return { success: 0, failed: rules.length };\n }\n\n return { success: rules.length, failed: 0 };\n }\n\n addRules(rules: GenerateCssRulesResult[]) {\n let success = 0;\n let failed = 0;\n\n // rules.sort((a, b) => {\n // const aPriority = parseResultCache.get(a.cls)?.utility?.priority;\n // const bPriority = parseResultCache.get(b.cls)?.utility?.priority;\n // return (aPriority ?? 0) - (bPriority ?? 0);\n // });\n\n for (const rule of rules) {\n const parsedResult = parseResultCache.get(rule.cls);\n const category = parsedResult?.utility?.category;\n\n if (category) {\n for (const css of rule.cssList) {\n this.addCategoryRule(css, category);\n }\n } else {\n for (const css of rule.cssList) {\n if (this.addRule(css)) {\n success++;\n } else {\n failed++;\n }\n }\n }\n }\n\n return { success, failed };\n }\n\n /**\n * 특정 규칙이 어느 파티션에 있는지 찾기\n */\n findRulePartition(rule: string): StylePartition | null {\n const partitionIndex = this.classToPartitionMap.get(rule);\n if (partitionIndex !== undefined && this.partitions[partitionIndex]) {\n return this.partitions[partitionIndex];\n }\n\n const categoryPartition = this.classToCategoryPartitionMap.get(rule);\n if (categoryPartition !== undefined) {\n return this.categoryPartitions.get(categoryPartition) || null;\n }\n\n return null;\n }\n\n\n updateRuleContent(category: string, ruleContent: string) {\n const partition = this.getCategoryPartition(category);\n if (partition) {\n partition.styleElement.textContent = ruleContent;\n } else {\n const newPartition = this.createNewCategoryPartition(category);\n // eslint-disable-next-line no-console\n console.log(`[StylePartitionManager] Created new partition for category: ${category}`);\n newPartition.styleElement.textContent = ruleContent;\n }\n }\n\n /**\n * 모든 파티션 정리\n */\n cleanup(): void {\n // DOM에서 모든 스타일 엘리먼트 제거\n this.partitions.forEach((partition) => {\n if (partition.styleElement.parentNode) {\n partition.styleElement.parentNode.removeChild(partition.styleElement);\n }\n });\n\n this.categoryPartitions.forEach((partition) => {\n if (partition.styleElement.parentNode) {\n partition.styleElement.parentNode.removeChild(partition.styleElement);\n }\n });\n\n // 상태 초기화\n this.partitions = [];\n this.partitionCounter = 0;\n this.classToPartitionMap.clear();\n this.classToCategoryPartitionMap.clear();\n }\n}\n","export function normalizeClassName(className: any): string {\n if (!className) return '';\n \n if (className instanceof SVGAnimatedString) {\n return className.baseVal.toString();\n }\n \n return className.toString();\n }\n \nexport function normalizeClassNameList(className: any): string[] {\n if (!className) return [];\n return normalizeClassName(className).split(/\\s+/).filter(Boolean);\n}","import { IncrementalParser, parseResultCache } from \"@barocss/kit\";\nimport { BrowserRuntime } from \"./browser-runtime\";\nimport { normalizeClassNameList } from \"./utils\";\n\n/**\n * Change detection system for DOM mutations\n * \n * ⚠️ BROWSER-ONLY: This class is designed for browser environments only.\n * It uses MutationObserver and DOM APIs that are not available in Node.js.\n * \n * This class monitors DOM changes and automatically processes new CSS classes\n * that are added to elements. It uses MutationObserver to detect:\n * - Class attribute changes on existing elements\n * - New elements being added to the DOM\n * - Changes in child elements\n * \n * For server-side usage, use IncrementalParser directly with processClassesSync()\n * or processClasses() methods.\n */\nexport class ChangeDetector {\n /** MutationObserver instance for DOM change detection */\n private observer: MutationObserver | null = null;\n \n /** Reference to IncrementalParser for class processing */\n private incrementalParser: IncrementalParser;\n \n /** Reference to BrowserRuntime for CSS injection (optional) */\n private BrowserRuntime?: BrowserRuntime;\n \n /** Set of elements that have already been processed to avoid duplicates */\n private processedElements = new WeakSet<Element>();\n \n /**\n * Create a new ChangeDetector instance\n * \n * @param incrementalParser - IncrementalParser instance for class processing\n * @param BrowserRuntime - Optional BrowserRuntime instance for CSS injection\n */\n constructor(incrementalParser: IncrementalParser, BrowserRuntime?: BrowserRuntime) {\n this.incrementalParser = incrementalParser;\n this.BrowserRuntime = BrowserRuntime;\n }\n \n /**\n * Starts observing DOM changes for new CSS classes\n * \n * This method sets up a MutationObserver that monitors:\n * - Attribute changes (specifically class attribute modifications)\n * - Child list changes (new elements being added)\n * - Subtree changes (changes in descendant elements)\n * \n * The observer automatically processes any new classes it discovers\n * by adding them to the IncrementalParser's pending queue.\n * \n * @param root - The root element to observe (defaults to document.body)\n * @param options - Configuration options including initial scan and onReady callback\n * @returns The MutationObserver instance for external control\n */\n observe(root: HTMLElement = document.body, options?: { scan?: boolean; onReady?: () => void }): MutationObserver {\n if (typeof window === 'undefined') {\n // Return dummy observer for Node.js environment\n return new MutationObserver(() => {});\n }\n \n if (this.observer) {\n this.observer.disconnect();\n }\n \n this.observer = new MutationObserver((mutations) => {\n const newClasses = new Set<string>();\n \n mutations.forEach(mutation => {\n // Handle attribute changes (class modifications)\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n const target = mutation.target as HTMLElement;\n if (target.className) {\n // SVG className is SVGAnimatedString; convert to string with toString()\n // HTMLElement className is string; use as-is\n const classes = normalizeClassNameList(target.className);\n classes.forEach(cls => {\n if (!this.incrementalParser.isProcessed(cls)) {\n newClasses.add(cls);\n }\n });\n }\n }\n \n // Handle new nodes\n if (mutation.type === 'childList') {\n mutation.addedNodes.forEach(node => {\n if (node instanceof HTMLElement) {\n this.processElement(node, newClasses);\n // Process child elements\n node.querySelectorAll('[class]').forEach(el => {\n this.processElement(el as HTMLElement, newClasses);\n });\n }\n });\n }\n });\n \n // Process new classes in batch\n if (newClasses.size > 0) {\n const classesArray = Array.from(newClasses);\n \n // Process classes directly and update BrowserRuntime cache\n const results = this.incrementalParser.processClasses(classesArray);\n // If BrowserRuntime is available, apply results via public API\n this.BrowserRuntime?.applyParseResults(results);\n }\n });\n \n this.observer.observe(root, {\n attributes: true,\n subtree: true,\n attributeFilter: ['class'],\n childList: true\n });\n \n // Handle scan option - process existing classes\n if (options?.scan) {\n this.scanExistingClasses(root, options);\n }\n \n return this.observer;\n }\n \n /**\n * Scan existing classes in the DOM and process them\n */\n private scanExistingClasses(root: HTMLElement, options?: { onReady?: () => void }): void {\n const existingClasses = new Set<string>();\n \n // Include root itself\n if (root.className) {\n const classes = normalizeClassNameList(root.className);\n classes.forEach(cls => {\n if (!this.incrementalParser.isProcessed(cls)) {\n existingClasses.add(cls);\n }\n });\n }\n \n // Scan all child elements\n const elementsWithClass = root.querySelectorAll('[class]') as unknown as HTMLElement[];\n // console.log('[BrowserRuntime] scanExistingClasses', elementsWithClass);\n for (const el of elementsWithClass) {\n if (el.className) {\n // SVG className is SVGAnimatedString; convert to string with toString()\n // HTMLElement className is string; use as-is\n const classes = normalizeClassNameList(el.className);\n // console.log('[BrowserRuntime] scanExistingClasses', classes);\n \n for (const cls of classes) {\n if (!this.incrementalParser.isProcessed(cls)) {\n existingClasses.add(cls);\n }\n };\n }\n }\n \n // console.log('[BrowserRuntime] scanExistingClasses', existingClasses);\n \n if (existingClasses.size > 0) {\n // Process classes using IncrementalParser\n const classes = Array.from(existingClasses);\n const results = this.incrementalParser.processClasses(classes);\n \n const layoutResults = results.filter(result => parseResultCache.get(result.cls)?.utility?.category === 'layout');\n const nonLayoutResults = results.filter(result => parseResultCache.get(result.cls)?.utility?.category !== 'layout');\n \n \n // Apply layout results\n this.BrowserRuntime?.applyParseResults(layoutResults);\n options?.onReady?.();\n \n // Apply non-layout results\n this.BrowserRuntime?.applyParseResults(nonLayoutResults);\n }\n }\n \n /**\n * Processes an individual element and extracts new classes\n * \n * This method is called for each element discovered during DOM mutations.\n * It:\n * - Checks if the element has already been processed\n * - Extracts all class names from the element's className\n * - Filters out already processed classes\n * - Adds new classes to the collection for batch processing\n * - Marks the element as processed to avoid duplicates\n * \n * @param element - The HTML element to process\n * @param newClasses - Set to collect newly discovered class names\n */\n private processElement(element: HTMLElement, newClasses: Set<string>): void {\n if (this.processedElements.has(element)) return;\n \n if (element.className) {\n // SVG className is SVGAnimatedString; convert to string with toString()\n // HTMLElement className is string; use as-is\n const classes = normalizeClassNameList(element.className);\n classes.forEach(cls => {\n if (!this.incrementalParser.isProcessed(cls)) {\n newClasses.add(cls);\n }\n });\n }\n \n this.processedElements.add(element);\n }\n \n /**\n * Stops observing DOM changes and cleans up resources\n * \n * This method disconnects the MutationObserver and clears the\n * observer reference to prevent memory leaks and allow the\n * ChangeDetector to be properly garbage collected.\n */\n disconnect(): void {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n }\n } ","import { GenerateCssRulesResult } from '@barocss/kit';\nimport { createContext, astCache, IncrementalParser } from '@barocss/kit';\nimport type { Config, Context } from '@barocss/kit';\nimport { StylePartitionManager } from './style-partition-manager';\nimport { ChangeDetector } from './change-detector';\n\nexport interface BrowserRuntimeOptions {\n config?: Config; // full config object\n styleId?: string;\n insertionPoint?: 'head' | 'body' | HTMLElement;\n maxRulesPerPartition?: number;\n}\n\nexport class BrowserRuntime {\n private cache: Map<string, GenerateCssRulesResult> = new Map(); // class name -> generated CSS mapping\n private rootCache: Set<string> = new Set(); // class name -> generated CSS mapping\n private context: Context;\n private options: Required<BrowserRuntimeOptions>;\n private isDestroyed = false;\n\n private incrementalParser: IncrementalParser;\n private changeDetector: ChangeDetector;\n private stylePartitionManager: StylePartitionManager;\n\n constructor(options: BrowserRuntimeOptions = {}) {\n // Default config - createContext handles defaultTheme automatically\n const defaultConfig: Config = {};\n\n this.options = {\n config: options.config || defaultConfig,\n styleId: options.styleId || 'barocss-runtime',\n insertionPoint: options.insertionPoint || 'head',\n maxRulesPerPartition: options.maxRulesPerPartition || 50,\n };\n\n // Pass full config to createContext (defaultTheme auto-included)\n this.context = createContext(this.options.config);\n\n this.incrementalParser = new IncrementalParser(this.context);\n this.changeDetector = new ChangeDetector(this.incrementalParser, this);\n\n this.stylePartitionManager = new StylePartitionManager(this.getInsertionPoint(), this.options.maxRulesPerPartition, `${this.options.styleId}-partition`);\n\n this.init();\n }\n\n // Debugging and logging helpers\n \n /**\n * Add debug logs (by level)\n */\n private debugLog(level: 'info' | 'warn' | 'error' | 'debug', message: string, data?: unknown): void {\n // Console output\n // eslint-disable-next-line no-console\n const consoleMethod = console[level] || console.log;\n consoleMethod(`[BrowserRuntime:${level.toUpperCase()}] ${message}`, data || '');\n }\n\n private init() {\n // eslint-disable-next-line no-console\n console.log('[BrowserRuntime] init');\n this.injectPreflightCSS();\n this.ensureCssVars();\n }\n\n private injectPreflightCSS() {\n if (this.options.config.preflight) {\n const preflightCSS = this.context.getPreflightCSS(this.options.config.preflight);\n this.stylePartitionManager.updateRuleContent(\"preflight\", preflightCSS);\n }\n }\n\n private ensureCssVars() {\n if (this.isDestroyed) return;\n\n const cssVars = this.context.themeToCssVars ? this.context.themeToCssVars() : ':root { /* CSS Variables will be generated here */ }';\n this.stylePartitionManager.updateRuleContent(\"css-vars\", cssVars);\n }\n\n private getInsertionPoint(): HTMLElement {\n if (this.options.insertionPoint instanceof HTMLElement) {\n return this.options.insertionPoint;\n }\n switch (this.options.insertionPoint) {\n case 'body':\n return document.body || document.head;\n case 'head':\n default:\n return document.head;\n }\n }\n\n /**\n * Dynamically add one or more class names and generate/insert CSS\n */\n addClass(classes: string | string[]): void {\n if (this.isDestroyed) return;\n \n const classList = this.normalizeClasses(classes);\n \n this.processClasses(classList);\n }\n\n /**\n * Process classes\n */\n private processClasses(classList: string[]): void { \n // Use incremental parsing by default (always enabled)\n \n this.processClassesIncremental(classList);\n }\n\n /**\n * Process classes using incremental parsing\n */\n private processClassesIncremental(classList: string[]): void {\n const isBrowser = typeof window !== 'undefined';\n \n // Process classes immediately for testing environment\n const results = this.incrementalParser.processClasses(classList);\n \n // eslint-disable-next-line no-console\n console.log('[BrowserRuntime] results', results, ...classList);\n // Apply results and inject CSS\n this.applyParseResults(results, { isBrowser });\n }\n\n /**\n * Public method to apply parser results, update internal caches, and inject CSS\n */\n public applyParseResults(results: Array<GenerateCssRulesResult>, _opts?: { isBrowser?: boolean }): void {\n const cssRules: GenerateCssRulesResult[] = [];\n const rootCssRules: string[] = [];\n\n for (const result of results) {\n if (result.css && Array.isArray(result.cssList)) {\n cssRules.push(result);\n // this.cache.set(normalizeClassName(result.cls), result);\n }\n\n if (result.rootCss && Array.isArray(result.rootCssList)) {\n for (const rootCss of result.rootCssList) {\n if (!this.rootCache.has(rootCss)) {\n this.rootCache.add(rootCss);\n rootCssRules.push(rootCss);\n }\n }\n }\n }\n\n if (rootCssRules.length > 0) {\n this.stylePartitionManager.addRootRules(rootCssRules.filter(Boolean));\n }\n\n if (cssRules.length > 0) {\n this.stylePartitionManager.addRules(cssRules);\n }\n\n this.debugLog('info', `Applied ${results.length} parser results`, {\n cssRuleCount: cssRules.length,\n rootCssCount: rootCssRules.length,\n });\n }\n\n /**\n * MutationObserver instance method to automatically call addClass when class attributes change in DOM\n */\n observe(root: HTMLElement = document.body, options?: { scan?: boolean; onReady?: () => void }): MutationObserver {\n return this.changeDetector.observe(root, options);\n }\n\n private normalizeClasses(classes: string | string[]): string[] {\n return Array.isArray(classes)\n ? classes.flatMap(cls => cls.split(/\\s+/))\n : classes.split(/\\s+/);\n }\n\n has(cls: string): boolean {\n const result = this.cache.has(cls);\n return result;\n }\n\n getCss(cls: string): string | undefined {\n const css = this.cache.get(cls)?.cssList.join('\\n');\n return css;\n }\n\n getAllCss(): string {\n const all = Array.from(this.cache.values()).flatMap(result => result.cssList).join('\\n');\n return all;\n }\n\n getClasses(): string[] {\n const keys = Array.from(this.cache.keys());\n return keys;\n }\n\n /**\n * Get comprehensive cache statistics\n */\n getCacheStats() {\n return {\n runtime: {\n cachedClasses: this.cache.size,\n rootCacheSize: this.rootCache.size\n },\n ast: astCache.getStats(),\n incremental: this.incrementalParser.getStats(),\n };\n }\n\n /**\n * Clear all caches (useful for debugging or memory management)\n */\n clearCaches(): void {\n this.cache.clear();\n this.rootCache.clear();\n astCache.clear();\n this.incrementalParser.clearProcessed();\n this.stylePartitionManager.cleanup();\n }\n\n\n reset(): void {\n this.cache.clear();\n this.rootCache.clear();\n this.stylePartitionManager.cleanup();\n \n }\n\n updateConfig(newConfig: Config): void {\n this.options.config = newConfig;\n this.context = createContext(newConfig);\n const existingClasses = Array.from(this.cache.keys());\n this.reset();\n if (existingClasses.length > 0) {\n this.addClass(existingClasses);\n }\n }\n\n removeClass(classes: string | string[]): void {\n const classList = this.normalizeClasses(classes);\n for (const cls of classList) {\n this.cache.delete(cls);\n }\n }\n\n destroy(): void {\n\n this.stylePartitionManager.cleanup();\n\n this.cache.clear();\n this.rootCache.clear();\n this.isDestroyed = true;\n\n }\n\n getStats() {\n const stats = {\n cachedClasses: this.cache.size,\n styleElementId: this.options.styleId,\n isDestroyed: this.isDestroyed,\n config: this.options.config,\n cacheStats: this.getCacheStats(),\n };\n return stats;\n }\n}","import { BrowserRuntime, BrowserRuntimeOptions } from \"./browser-runtime\";\n\nlet runtime: BrowserRuntime | null = null;\n\nexport function getRuntime(options: BrowserRuntimeOptions) {\n if (!runtime) {\n runtime = new BrowserRuntime(options);\n }\n return runtime;\n}\n\ntype BaroBootOptions = BrowserRuntimeOptions & { loadingClassName?: string };\n\nexport function baroBoot({ loadingClassName = 'baro-boot', ...options }: BaroBootOptions = {}) {\n const startClassName = `${loadingClassName}-doing`;\n const endClassName = `${loadingClassName}-done`;\n try { \n\n document.body.classList.add(startClassName);\n\n const runtime = getRuntime(options);\n runtime.observe(document.body, { scan: true, onReady: () => {\n document.body.classList.remove(startClassName);\n document.body.classList.add(endClassName);\n }});\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('BaroCSS boot failed:', error);\n }\n}\n\nexport const baroStart = baroBoot;"],"names":["value","opacity","node","nodes","rule","decl","acc","fullClassName","declPaths","colors","varName","boxShadow","fontSize","fontWeight","fontFamily","letterSpacing","spacing","borderRadius","zIndex","animations","keyframes","transitionDuration","transitionDelay","blur","container","v","filters","breakpoints","BrowserRuntime","runtime"],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2O7B,MAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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AAA,EACF;AACA,SAAO;AACT;AAEA,MAAM,sCAAsB,IAAI;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAA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"}
|
|
1
|
+
{"version":3,"file":"barocss.js","sources":["../../../barocss/src/core/ast.ts","../../../barocss/src/utils/cache.ts","../../../barocss/src/core/contextState.ts","../../../barocss/src/core/registry.ts","../../../barocss/src/core/tokenizer.ts","../../../barocss/src/core/parser.ts","../../../barocss/src/core/astToCss.ts","../../../barocss/src/core/engine.ts","../../../barocss/src/core/incremental-parser.ts","../../../barocss/src/theme/colors.ts","../../../barocss/src/theme/spacing.ts","../../../barocss/src/theme/border-radius.ts","../../../barocss/src/theme/font-size.ts","../../../barocss/src/theme/font-family.ts","../../../barocss/src/theme/font-weight.ts","../../../barocss/src/theme/line-height.ts","../../../barocss/src/theme/box-shadow.ts","../../../barocss/src/theme/z-index.ts","../../../barocss/src/theme/opacity.ts","../../../barocss/src/theme/transition-property.ts","../../../barocss/src/theme/transition-timing-function.ts","../../../barocss/src/theme/transition-duration.ts","../../../barocss/src/theme/transition-delay.ts","../../../barocss/src/theme/animations.ts","../../../barocss/src/theme/keyframes.ts","../../../barocss/src/theme/animation-vars.ts","../../../barocss/src/theme/breakpoints.ts","../../../barocss/src/theme/container.ts","../../../barocss/src/theme/letter-spacing.ts","../../../barocss/src/theme/blur.ts","../../../barocss/src/theme/default-theme.ts","../../../barocss/src/core/cssVars.ts","../../../barocss/src/css/preflight.ts","../../../barocss/src/core/context.ts","../../../barocss/src/core/utils.ts","../../../barocss/src/presets/interactivity.ts","../../../barocss/src/presets/transitions.ts","../../../barocss/src/presets/table.ts","../../../barocss/src/presets/filter.ts","../../../barocss/src/presets/backdrop-filter.ts","../../../barocss/src/presets/effects.ts","../../../barocss/src/presets/layout.ts","../../../barocss/src/presets/flexbox-grid.ts","../../../barocss/src/presets/spacing.ts","../../../barocss/src/presets/sizing.ts","../../../barocss/src/presets/typography.ts","../../../barocss/src/presets/background.ts","../../../barocss/src/presets/border.ts","../../../barocss/src/presets/transform.ts","../../../barocss/src/presets/svg.ts","../../../barocss/src/presets/accessibility.ts","../../../barocss/src/presets/variants/pseudo-classes.ts","../../../barocss/src/presets/variants/form-states.ts","../../../barocss/src/presets/variants/structural-selectors.ts","../../../barocss/src/presets/variants/media-features.ts","../../../barocss/src/presets/variants/attribute-selectors.ts","../../../barocss/src/presets/variants/basic-variants.ts","../../../barocss/src/presets/variants/utils.ts","../../../barocss/src/presets/variants/responsive.ts","../../../barocss/src/presets/variants/dark-mode.ts","../../../barocss/src/presets/variants/container-queries.ts","../../../barocss/src/presets/variants/has-variants.ts","../../../barocss/src/presets/variants/negation-variants.ts","../../../barocss/src/presets/variants/universal-selectors.ts","../../../barocss/src/presets/variants/arbitrary-variants.ts","../../../barocss/src/presets/variants/attribute-variants.ts","../../../barocss/src/presets/variants/nth-selectors.ts","../../../barocss/src/presets/variants/functional-selectors.ts","../../../barocss/src/presets/variants/at-rules.ts","../../../barocss/src/presets/variants/group-peer-extensions.ts","../../src/style-partition-manager.ts","../../src/utils.ts","../../src/change-detector.ts","../../src/browser-runtime.ts","../../src/baro-boot.ts"],"sourcesContent":["// AST node types for barocss\nexport type AstNode =\n | { type: \"wrap\"; items: AstNode[], source?: string }\n | { type: \"decl\"; prop: string; value: string | [string, string][], source?: string }\n | { type: \"at-rule\"; name: string; params: string; nodes: AstNode[], source?: string }\n | { type: \"style-rule\"; selector: string; nodes: AstNode[], source?: string }\n | { type: \"rule\"; selector: string; nodes: AstNode[], source?: string }\n | { type: \"at-root\"; nodes: AstNode[], source?: string }\n | { type: \"comment\"; text: string, source?: string }\n | { type: \"raw\"; value: string, source?: string };\n\nexport type HasNodes = { nodes?: AstNode[] };\nexport type HasSource = { source?: string };\nexport type HasSelector = { selector?: string };\nexport type HasName = { name?: string };\nexport type HasParams = { params?: string };\nexport type HasValue = { value?: string | [string, string][] };\nexport type HasProp = { prop?: string };\nexport type HasItems = { items?: AstNode[] };\nexport type HasText = { text?: string };\n\nexport function decl(\n prop: string,\n value: string | [string, string][],\n source?: string\n): AstNode {\n return { type: \"decl\", prop, value, source };\n}\nexport function atRoot(nodes: AstNode[], source?: string): AstNode {\n return {\n type: \"at-root\",\n nodes,\n source\n };\n}\n\nexport function atRule(\n name: string,\n params: string,\n nodes: AstNode[],\n source?: string\n): AstNode {\n return { type: \"at-rule\", name, params, nodes, source };\n}\nexport function styleRule(selector: string, nodes: AstNode[], source?: string): AstNode {\n return { type: \"style-rule\", selector, nodes, source };\n}\nexport function rule(selector: string, nodes: AstNode[], source?: string): AstNode {\n return { type: \"rule\", selector, nodes, source };\n}\nexport function comment(text: string, source?: string): AstNode {\n return { type: \"comment\", text, source };\n}\nexport function raw(value: string, source?: string): AstNode {\n return { type: \"raw\", value, source };\n}\n\nexport function property(name: string, initialValue?: string, syntax?: string, source?: string): AstNode {\n const nodes: AstNode[] = [\n decl(\"syntax\", `\"${syntax || \"*\"}\"`, source),\n decl(\"inherits\", \"false\", source),\n ];\n \n if (initialValue) {\n nodes.push(decl(\"initial-value\", initialValue, source));\n }\n \n return atRule(\"property\", name, nodes, source);\n}","import type { AstNode } from '../core/ast';\nimport { ParsedModifier, ParsedUtility } from '../core/parser';\n\n/**\n * AST cache management\n */\nexport class AstCache {\n private cache = new Map<string, AstNode[]>();\n private maxSize = 1000; // Prevent memory leaks\n \n set(key: string, ast: AstNode[]): void {\n if (this.cache.size >= this.maxSize) {\n // Remove oldest entries (simple LRU)\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, ast);\n }\n \n get(key: string): AstNode[] | undefined {\n return this.cache.get(key);\n }\n \n has(key: string): boolean {\n return this.cache.has(key);\n }\n \n clear(): void {\n this.cache.clear();\n }\n \n getStats() {\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: this.cache.size / this.maxSize\n };\n }\n}\n\n// Global AST cache instance\nexport const astCache = new AstCache();\n\n/**\n * Parse result cache management\n */\nexport class ParseResultCache {\n private cache = new Map<string, { modifiers: ParsedModifier[]; utility: ParsedUtility | null }>();\n private maxSize = 2000; // Prevent memory leaks\n \n set(key: string, result: { modifiers: ParsedModifier[]; utility: ParsedUtility | null }): void {\n if (this.cache.size >= this.maxSize) {\n // Remove oldest entries (simple LRU)\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, result);\n }\n \n get(key: string): { modifiers: ParsedModifier[]; utility: ParsedUtility | null } | undefined {\n return this.cache.get(key);\n }\n \n has(key: string): boolean {\n return this.cache.has(key);\n }\n \n clear(): void {\n this.cache.clear();\n }\n \n getStats() {\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: this.cache.size / this.maxSize\n };\n }\n}\n\n// Global parse result cache instance\nexport const parseResultCache = new ParseResultCache();\n\n/**\n * Utility cache management\n */\nexport class UtilityCache {\n private cache = new Map<string, boolean>();\n private maxSize = 1000; // Prevent memory leaks\n \n set(key: string, value: boolean): void {\n if (this.cache.size >= this.maxSize) {\n // Remove oldest entries (simple LRU)\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, value);\n }\n \n get(key: string): boolean | undefined {\n return this.cache.get(key);\n }\n \n has(key: string): boolean {\n return this.cache.has(key);\n }\n \n clear(): void {\n this.cache.clear();\n }\n \n getStats() {\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: this.cache.size / this.maxSize\n };\n }\n}\n\n// Global utility cache instance\nexport const utilityCache = new UtilityCache();\n\nlet resetContextCaches: (() => void) | undefined;\n\n/** Internal hook for caches owned by contexts. */\nexport function setContextCacheReset(reset: () => void): void {\n resetContextCaches = reset;\n}\n\n/**\n * Clear all caches (for context changes or testing)\n */\nexport function clearAllCaches(): void {\n astCache.clear();\n parseResultCache.clear();\n utilityCache.clear();\n resetContextCaches?.();\n // eslint-disable-next-line no-console\n console.log('[clearAllCaches] All caches cleared');\n}\n\n/**\n * WeakMap-based cache for memory optimization\n */\nexport class WeakCache<T> {\n private cache = new WeakMap<object, T>();\n private keyMap = new Map<string, object>();\n private maxSize = 1000;\n\n set(key: string, value: T): void {\n if (this.keyMap.size >= this.maxSize) {\n // Remove oldest entry\n const firstKey = this.keyMap.keys().next().value;\n if (firstKey) {\n const obj = this.keyMap.get(firstKey);\n if (obj) {\n this.cache.delete(obj);\n }\n this.keyMap.delete(firstKey);\n }\n }\n\n const obj = { key };\n this.cache.set(obj, value);\n this.keyMap.set(key, obj);\n }\n\n get(key: string): T | undefined {\n const obj = this.keyMap.get(key);\n if (obj) {\n return this.cache.get(obj);\n }\n return undefined;\n }\n\n has(key: string): boolean {\n return this.keyMap.has(key);\n }\n\n clear(): void {\n this.keyMap.clear();\n }\n\n getStats() {\n return {\n size: this.keyMap.size,\n maxSize: this.maxSize,\n hitRate: this.keyMap.size / this.maxSize\n };\n }\n}\n","import type { Context } from './context';\nimport type { ModifierRegistration, UtilityRegistration } from './registry';\nimport { AstCache, ParseResultCache, UtilityCache, setContextCacheReset } from '../utils/cache';\n\ninterface ContextState {\n utilities: UtilityRegistration[];\n modifiers: ModifierRegistration[];\n astCache: AstCache;\n parseResultCache: ParseResultCache;\n utilityCache: UtilityCache;\n failures: Set<string>;\n cacheGeneration: number;\n}\n\nconst states = new WeakMap<Context, ContextState>();\nlet cacheGeneration = 0;\n\nsetContextCacheReset(() => { cacheGeneration += 1; });\n\nexport function initializeContextState(\n ctx: Context,\n utilities: UtilityRegistration[],\n modifiers: ModifierRegistration[],\n): void {\n states.set(ctx, {\n utilities: [...utilities],\n modifiers: [...modifiers],\n astCache: new AstCache(),\n parseResultCache: new ParseResultCache(),\n utilityCache: new UtilityCache(),\n failures: new Set<string>(),\n cacheGeneration,\n });\n}\n\nexport function getContextState(ctx: Context): ContextState | undefined {\n const state = states.get(ctx);\n if (state && state.cacheGeneration !== cacheGeneration) {\n clearContextCaches(ctx);\n state.cacheGeneration = cacheGeneration;\n }\n return state;\n}\n\nexport function clearContextCaches(ctx: Context): void {\n const state = states.get(ctx);\n if (!state) return;\n state.astCache.clear();\n state.parseResultCache.clear();\n state.utilityCache.clear();\n state.failures.clear();\n}\n","import type { AstNode } from './ast';\nimport { decl, rule } from './ast';\nimport type { Context } from './context';\nimport { clearContextCaches, getContextState } from './contextState';\nimport { ParsedModifier, ParsedUtility } from './parser';\n\n// Utility registration\nexport interface UtilityRegistration {\n /**\n * The name of the utility\n */\n name: string;\n /**\n * The match function for the utility\n * @param className The class name of the utility\n * @returns {boolean} Whether the utility matches the class name\n */\n match: (className: string) => boolean;\n /**\n * Handler for utility value\n * @param value Utility value (e.g. 'red-500')\n * @param ctx Context\n * @param token Parsed token\n * @param options Registration options\n */\n handler: (value: string, ctx: Context, token: ParsedUtility, options: UtilityRegistration) => AstNode[] | null | undefined;\n /**\n * The description of the utility\n * @example\n * ```\n * description: 'Custom utility description',\n * ```\n */\n description?: string;\n /**\n * The category of the utility\n * @example\n * ```\n * category: 'background',\n * ```\n */\n category?: string;\n /**\n * The priority of the utility\n * @example\n * ```\n * priority: 10,\n * ```\n */\n priority?: number;\n [key: string]: unknown;\n}\n\nconst utilityRegistry: UtilityRegistration[] = [];\nexport function registerUtility(util: UtilityRegistration, ctx?: Context) {\n const state = ctx && getContextState(ctx);\n if (ctx && !state) throw new Error('Utility registration requires a context from createContext');\n (state?.utilities || utilityRegistry).push(util);\n if (ctx) clearContextCaches(ctx);\n}\n\nexport function getUtility(ctx?: Context): UtilityRegistration[] {\n return (ctx && getContextState(ctx)?.utilities) || utilityRegistry;\n}\n\n// --- Modifier Registration ---\nexport type ModifierSelector = {\n selector: string;\n flatten?: boolean;\n wrappingType?: 'rule' | 'style-rule' | 'at-rule';\n override?: boolean;\n source?: string;\n};\n\nexport type ModifierRegistration = {\n match: (mod: string, context: Context) => boolean;\n modifySelector?: (params: { selector: string; fullClassName: string; mod: ParsedModifier; context: Context; variantChain?: ParsedModifier[]; index?: number }) => string | ModifierSelector | ModifierSelector[];\n wrap?: (mod: ParsedModifier, context: Context) => AstNode[];\n astHandler?: (ast: AstNode[], mod: ParsedModifier, context: Context, variantChain?: ParsedModifier[], index?: number) => AstNode[];\n sort?: number;\n description?: string;\n source?: string;\n};\n\nexport const modifierRegistry: ModifierRegistration[] = [];\n\n/**\n * staticModifier: A helper that registers a modifier name and an array of CSS selectors directly to the registry\n * \n * @example\n * ```\n * staticModifier('disabled', ['&:disabled'], { source: 'pseudo' });\n * ```\n * \n * @param name The name of the modifier\n * @param selectors The selectors of the modifier\n * @param options The options of the modifier\n * \n * @returns {void}\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function staticModifier(name: string, selectors: string[], options: any = {}, ctx?: Context): void {\n registerModifier({\n match: (mod: string) => mod === name,\n modifySelector: ({ ..._rest }) => {\n return selectors.map(sel => ({\n selector: sel,\n source: options.source\n }));\n },\n ...options\n }, ctx);\n}\n\nexport function functionalModifier(match: ModifierRegistration['match'], modifySelector: ModifierRegistration['modifySelector'], wrap?: ModifierRegistration['wrap'], options: Partial<ModifierRegistration> = {}, ctx?: Context) {\n registerModifier({ match, modifySelector, wrap, ...options }, ctx);\n}\n\nexport function registerModifier(modifier: ModifierRegistration, ctx?: Context): void {\n const state = ctx && getContextState(ctx);\n if (ctx && !state) throw new Error('Modifier registration requires a context from createContext');\n (state?.modifiers || modifierRegistry).push(modifier);\n if (ctx) clearContextCaches(ctx);\n}\n\nexport function getModifier(ctx?: Context): ModifierRegistration[] {\n return (ctx && getContextState(ctx)?.modifiers) || modifierRegistry;\n}\n\n// escapeClassName\nconst ESCAPE_REGEX = /[^A-Za-z0-9_-]/g;\nexport function escapeClassName(className: string) {\n return className.replace(ESCAPE_REGEX, (c) => {\n if (c === ' ') return '\\\\x20 ';\n if (c === '.') return '\\\\.';\n if (c === '/') return '\\\\/';\n if (c === ':') return '\\\\:';\n if (c === '[') return '\\\\[';\n if (c === ']') return '\\\\]';\n if (c === '(') return '\\\\(';\n if (c === ')') return '\\\\)';\n if (c === '%') return '\\\\%';\n if (c === '#') return '\\\\#';\n if (c === ',') return '\\\\,';\n if (c === '=') return '\\\\=';\n if (c === '&') return '\\\\&';\n if (c === '~') return '\\\\~';\n if (c === '*') return '\\\\*';\n if (c === '$') return '\\\\$';\n if (c === '^') return '\\\\^';\n if (c === '+') return '\\\\+';\n if (c === '?') return '\\\\?';\n if (c === '!') return '\\\\!';\n if (c === '@') return '\\\\@';\n if (c === \"'\") return \"\\\\'\";\n if (c === '\"') return '\\\\\"';\n if (c === '`') return '\\\\`';\n if (c === ';') return '\\\\;';\n if (c === '<') return '\\\\<';\n if (c === '>') return '\\\\>';\n if (c === '{') return '\\\\{';\n if (c === '}') return '\\\\}';\n if (c === '|') return '\\\\|';\n if (c === '\\\\') return '\\\\\\\\';\n return '\\\\' + c;\n });\n}\n\n// --- Utility Helper Factories ---\n\ntype StaticUtilityValue = \n | AstNode // ast\n | [string, string] // [prop, value]\n | [string, [string, string][]] // [selector, [prop, value][]]\n | ((value: string) => AstNode); // function\n\n\n/**\n * staticUtility: A helper that registers a utility name and an array of CSS declaration pairs directly to the registry\n *\n * @example\n * ```\n * staticUtility('block', [['display', 'block']]);\n * staticUtility('hidden', [['display', 'none']]);\n * staticUtility('space-x-px', [\n * [\n * '& > :not([hidden]) ~ :not([hidden])', // selector\n * [\n * ['margin-inline-start', '1px'], // [prop, value]\n * ['margin-inline-end', '1px'], // [prop, value]\n * ],\n * ],\n * ]);\n * ```\n * \n * @param name The name of the utility\n * @param decls The declarations of the utility\n * @param opts The options of the utility\n * \n * @returns {void}\n */\nexport function staticUtility(\n name: string,\n decls: StaticUtilityValue[],\n opts?: { description?: string; category?: string; priority?: number },\n ctx?: Context,\n): void {\n registerUtility({\n name,\n match: (className: string) => {\n return className === name;\n },\n handler: (value: string): AstNode[] | null | undefined => {\n return decls.flatMap((params) => {\n\n if ((params as AstNode).type) {\n return [params as AstNode];\n }\n\n if (typeof params === 'function') {\n const targetFunction = params as (value: string) => AstNode;\n return [targetFunction(value)];\n }\n const [a, b] = params as [string, string | [string, string][]];\n\n if (typeof b === 'string') {\n // [prop, value]\n return [decl(a, b)];\n } else if (Array.isArray(b)) {\n // selector, [prop, value][]\n return [rule(a, b.map(([prop, value]) => decl(prop, value)))];\n }\n return [];\n });\n },\n description: opts?.description,\n category: opts?.category,\n priority: opts?.priority,\n }, ctx);\n}\n\nexport type FunctionalUtilityExtra = {\n opacity?: string;\n realThemeValue?: string;\n}\n\nexport type FunctionalUtilityOptions = {\n /**\n * The name of the utility\n * \n * prefix is automatically added to the name\n */\n name: string;\n /**\n * The CSS property to set\n * \n * css property is automatically added to the prop\n */\n prop?: string;\n /**\n * The theme key to look up values\n * \n * theme key is automatically added to the themeKey\n * \n * @example\n * ```\n * themeKey: 'colors'\n * ```\n */\n themeKey?: string;\n /**\n * The theme keys to look up values\n * \n * theme keys are automatically added to the themeKeys\n * \n * @example\n * ```\n * themeKeys: ['colors', 'spacing']\n * ```\n */\n themeKeys?: string[];\n /**\n * Whether to support arbitrary values\n * \n * `bg-[#ff0000]`\n * \n * @example\n * ```\n * supportsArbitrary: true\n * ```\n */\n supportsArbitrary?: boolean;\n /**\n * Whether to support fraction values\n * \n * `m-4`\n * \n * @example\n * ```\n * supportsFraction: true\n * ```\n */\n supportsFraction?: boolean;\n /**\n * Whether to support custom properties\n * \n * `bg-(--my-bg)`\n * \n * @example\n * ```\n * supportsCustomProperty: true\n * ```\n */\n supportsCustomProperty?: boolean;\n /**\n * Whether to support negative values\n * \n * `-m-4`\n * \n * @example\n * ```\n * supportsNegative: true\n * ```\n */\n supportsNegative?: boolean;\n /**\n * Whether to support opacity values\n */\n supportsOpacity?: boolean;\n /**\n * The handler function that processes values\n * \n * @example\n * ```\n * handle: (value, ctx, token, extra) => {\n * return [decl('background-color', value)];\n * }\n * ```\n * \n * @param value The value to process\n * @param ctx The context\n * @param token The parsed utility\n * @param extra The extra metadata\n * \n * @returns {AstNode[] | null | undefined} The AST nodes or null | undefined\n */\n handle?: (value: string, ctx: Context, token: ParsedUtility, extra?: FunctionalUtilityExtra) => AstNode[] | null | undefined;\n /**\n * The handler function that processes bare values\n * \n * @example\n * ```\n * handleBareValue: ({ value }) => isPositiveInteger(value) ? value : null,\n * ```\n * \n * @param args The arguments\n * @param args.value The value to process\n * @param args.ctx The context\n * @param args.token The parsed utility\n * @param args.extra The extra metadata\n * \n * @returns {string | null | undefined} The processed value or null | undefined\n */\n handleBareValue?: (args: { value: string; ctx: Context; token: ParsedUtility, extra?: FunctionalUtilityExtra }) => string | null | undefined;\n /**\n * The handler function that processes negative bare values\n * \n * @example\n * ```\n * handleNegativeBareValue: ({ value }) => isPositiveInteger(value) ? value : null,\n * ```\n */\n handleNegativeBareValue?: (args: { value: string; ctx: Context; token: ParsedUtility, extra?: FunctionalUtilityExtra }) => string | null | undefined;\n\n /**\n * The handler function that processes custom property values\n * \n * \n * @example\n * ```\n * handleCustomProperty: (value, ctx, token, extra) => [decl('background-color', value)],\n * ```\n * \n * @param args The arguments\n * @param args.value The value to process\n * @param args.ctx The context\n * @param args.token The parsed utility\n * @param args.extra The extra metadata\n * \n * @returns {AstNode[] | null | undefined} The AST nodes or null | undefined\n */\n handleCustomProperty?: (value: string, ctx: Context, token: ParsedUtility, extra?: FunctionalUtilityExtra) => AstNode[] | null | undefined;\n /**\n * The description of the utility\n * \n * @example\n * ```\n * description: 'Custom utility description',\n * ```\n */\n description?: string;\n /**\n * The category of the utility\n * \n * It is used to group utilities in the documentation and styles\n * \n * \n * @example\n * ```\n * category: 'background',\n * ```\n */\n category?: string;\n /**\n * The priority of the utility\n * \n * It is used to sort utilities in the styles\n * \n * @example\n * ```\n * priority: 10,\n * ```\n * \n * The higher the number, the higher the priority\n * \n * @default 0\n */\n priority?: number;\n}\n\n/**\n * functionalUtility: A helper that registers dynamic utilities (theme, arbitrary, custom, negative, fraction, etc.) directly\n *\n * Example:\n * functionalUtility({\n * name: 'z',\n * supportsNegative: true,\n * themeKeys: ['--z-index'],\n * handleBareValue: ({ value }) => isPositiveInteger(value) ? value : null,\n * handle: (value) => [decl('z-index', value)],\n * description: 'z-index utility',\n * category: 'layout',\n * });\n */\nexport function functionalUtility(opts: FunctionalUtilityOptions, ctx?: Context) {\n registerUtility({\n name: opts.name,\n match: (className: string) => className.startsWith(opts.name + '-'),\n handler: (value, ctx, token, _options) => {\n let finalValue = value;\n const parsedUtility = token;\n const extra: FunctionalUtilityExtra = {\n opacity: token.opacity,\n };\n\n if (opts.supportsOpacity && !token.arbitrary && !token.customProperty && value.includes('/')) {\n const list = value.split('/');\n\n if (list.length >= 2) {\n extra.opacity = list.pop();\n finalValue = list.join('/');\n }\n }\n\n // 1. Arbitrary value - already parsed in parser.ts\n if (opts.supportsArbitrary && parsedUtility.arbitrary) {\n const processedValue = finalValue.replace(/_/g, ' ');\n // console.log('[functionalUtility] arbitrary', { processedValue });\n // 7. handle (custom AST generation)\n if (opts.handle) {\n const result = opts.handle(processedValue, ctx, token, extra);\n // console.log('[functionalUtility] arbitrary handle result', result);\n if (result) return result;\n }\n // 8. default decl\n if (opts.prop) {\n // console.log('[functionalUtility] arbitrary default decl', { prop: opts.prop, processedValue });\n return [decl(opts.prop, processedValue)];\n }\n return [];\n }\n // 2. Custom property - already parsed in parser.ts\n if (opts.supportsCustomProperty && parsedUtility.customProperty) {\n // console.log('[functionalUtility] customProperty', { finalValue });\n if (opts.handleCustomProperty) {\n const result = opts.handleCustomProperty(finalValue, ctx, token, extra);\n // console.log('[functionalUtility] customProperty handleCustomProperty result', result);\n return result;\n }\n const customValue = `var(${finalValue})`;\n if (opts.handle) {\n const result = opts.handle(customValue, ctx, token, extra);\n // console.log('[functionalUtility] customProperty handle result', result);\n if (result) return result;\n }\n if (opts.prop) {\n // console.log('[functionalUtility] customProperty default decl', { prop: opts.prop, customValue });\n return [decl(opts.prop, customValue)];\n }\n return [];\n }\n // 3. Theme lookup (themeKey or themeKeys)\n let themeValue: string | undefined;\n if (opts.themeKey && ctx.theme) {\n themeValue = ctx.theme(opts.themeKey, finalValue) as string;\n // console.log('[functionalUtility] themeKey lookup', { themeKey: opts.themeKey, finalValue, themeValue });\n }\n if (!themeValue && opts.themeKeys && ctx.theme) {\n for (const key of opts.themeKeys) {\n themeValue = ctx.theme(key, finalValue) as string;\n // console.log('[functionalUtility] themeKeys lookup', { key, finalValue, themeValue });\n if (themeValue !== undefined) break;\n }\n }\n if (themeValue !== undefined) {\n extra.realThemeValue = finalValue;\n finalValue = themeValue;\n if (opts.prop) {\n // console.log('[functionalUtility] themeValue default decl', { prop: opts.prop, finalValue });\n return [decl(opts.prop, finalValue)];\n }\n if (opts.handle) {\n const result = opts.handle(finalValue, ctx, token, extra);\n // console.log('[functionalUtility] themeValue handle result', result);\n if (result) return result;\n }\n return [];\n }\n // 4. Fraction value (e.g., 1/2, -2/5)\n // console.log('[functionalUtility] fraction', { value });\n if (opts.supportsFraction && /^-?\\d+\\/\\d+$/.test(value)) {\n finalValue = value;\n // console.log('[functionalUtility] fraction', { finalValue });\n }\n // 5. handleNegativeBareValue (only check negative bare value)\n if (parsedUtility.negative && opts.supportsNegative && opts.handleNegativeBareValue) {\n const bare = opts.handleNegativeBareValue({ value: String(finalValue).replace(/^-/, ''), ctx, token, extra });\n // console.log('[functionalUtility] negative bare', { bare });\n if (bare == null) return [];\n finalValue = bare;\n }\n // 6. handleBareValue (only check bare value) - only when negative is not true\n else if (opts.handleBareValue) {\n const bare = opts.handleBareValue({ value: finalValue, ctx, token, extra });\n // console.log('[functionalUtility] bare', { bare });\n if (bare == null) return [];\n finalValue = bare;\n }\n // 7. handle (custom AST generation)\n if (opts.handle) {\n // console.log('[functionalUtility] handle', { finalValue });\n const result = opts.handle(finalValue, ctx, token, extra);\n // console.log('[functionalUtility] handle result', result);\n if (result) return result;\n }\n // 8. default decl\n if (opts.prop) {\n // console.log('[functionalUtility] default decl', { prop: opts.prop, finalValue });\n return [decl(opts.prop, finalValue)];\n }\n // console.log('[functionalUtility] fallback empty', { finalValue });\n return [];\n },\n description: opts.description,\n category: opts.category,\n priority: opts.priority,\n }, ctx);\n}\n","export interface Token {\n value: string;\n start: number;\n end: number;\n}\n\n/**\n * Tokenizes a class name string into an array of tokens\n * Only handles separation by ':' while respecting brackets and parentheses\n * \n * Examples:\n * - 'hover:bg-red-500' → [{ value: 'hover' }, { value: 'bg-red-500' }]\n * - 'bg-[#ff0000]:hover' → [{ value: 'bg-[#ff0000]' }, { value: 'hover' }]\n * - 'text-[color:var(--foo)]' → [{ value: 'text-[color:var(--foo)]' }]\n * - '!bg-[red]' → [{ value: '!bg-[red]' }]\n */\nexport function tokenize(className: string): Token[] {\n const tokens: Token[] = [];\n let current = '';\n let start = 0;\n let inBracket = 0;\n let inParen = 0;\n \n for (let i = 0; i < className.length; i++) {\n const char = className[i];\n \n // Bracket tracking\n if (char === '[') inBracket++;\n if (char === ']') inBracket--;\n if (char === '(') inParen++;\n if (char === ')') inParen--;\n \n // Separator (only when not inside brackets or parentheses)\n if (char === ':' && inBracket === 0 && inParen === 0) {\n if (current) {\n tokens.push({\n value: current,\n start,\n end: i\n });\n }\n current = '';\n start = i + 1;\n } else {\n current += char;\n }\n }\n \n // Add remaining token\n if (current) {\n tokens.push({\n value: current,\n start,\n end: className.length\n });\n }\n \n return tokens;\n} ","// Types for parsed modifier and utility\nexport interface ParsedModifier {\n type: string;\n value?: string;\n negative?: boolean;\n arbitrary?: boolean;\n [key: string]: unknown;\n}\n\nexport interface ParsedUtility {\n category?: string;\n prefix: string;\n value?: string;\n arbitrary?: boolean;\n customProperty?: boolean;\n negative?: boolean;\n opacity?: string;\n priority?: number;\n important?: boolean;\n [key: string]: unknown;\n}\n\nimport { getUtility, getModifier, UtilityRegistration } from './registry';\nimport { tokenize, Token } from './tokenizer';\nimport { parseResultCache, utilityCache } from '../utils/cache';\nimport type { Context } from './context';\nimport { getContextState } from './contextState';\n\n// Cache systems\n\n/**\n * Checks if a string is a utility prefix by checking against registered utilities\n * Optimized with prefix filtering and caching\n * @param str The string to check\n * @returns true if it's a utility prefix\n */\nfunction isUtilityPrefix(str: string, ctx?: Context): boolean {\n const cache = (ctx && getContextState(ctx)?.utilityCache) || utilityCache;\n // Check cache\n if (cache.has(str)) {\n return cache.get(str)!;\n }\n \n const utilities = getUtility(ctx);\n const modifiers = getModifier(ctx);\n \n // 1. Fast prefix filtering (O(1) prefix check)\n const candidateUtilities = utilities.filter(util => {\n const prefix = util.name;\n return str.startsWith(prefix + '-') || str === prefix || str.startsWith(prefix);\n });\n \n // 2. Exact match check only on filtered candidates\n const isUtility = candidateUtilities.some(util => util.match(str));\n \n // 3. Filter modifiers similarly\n const candidateModifiers = modifiers.filter(mod => {\n // Use modifier name if available, otherwise extract from match function\n const modName = (mod as unknown as { name: string }).name || mod.match.toString().split('(')[0];\n return str.startsWith(modName + ':') || str === modName;\n });\n \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isModifier = candidateModifiers.some(mod => mod.match(str, {} as any));\n \n // 4. Calculate result\n const result = isUtility && !isModifier;\n \n // 5. Cache result\n cache.set(str, result);\n \n return result;\n}\n\n/**\n * Parses a class name string into modifiers and utility using tokenization\n * Supports both directions:\n * - modifier:utility (traditional CSS)\n * - utility:modifier (Master CSS style)\n * \n * Examples:\n * - 'group-hover:sm:bg-[red]' → modifier:utility\n * - 'bg-red-500:hover' → utility:modifier\n * - 'text-[color:var(--foo)]' → utility only\n * \n * @param className e.g. 'group-hover:sm:bg-[red]', 'text-[color:var(--foo)]'\n * @returns { modifiers, utility }\n */\nexport function parseClassName(className: string, ctx?: Context): { modifiers: ParsedModifier[]; utility: ParsedUtility | null } {\n const cache = (ctx && getContextState(ctx)?.parseResultCache) || parseResultCache;\n // Check parse result cache first\n if (cache.has(className)) {\n return cache.get(className)!;\n }\n\n // Examples: !bg-[red]\n let important = false;\n let realClassName = className;\n if (className.startsWith('!')) {\n important = true;\n realClassName = className.slice(1);\n }\n \n // 1. Tokenize string into tokens\n const tokens = tokenize(realClassName);\n // 2. Convert tokens to parsed result\n const result = parseTokens(tokens, ctx);\n if (result.utility) {\n result.utility.important = important;\n }\n \n // Cache the result\n cache.set(className, result);\n \n return result;\n}\n\n/**\n * Parses tokens into modifiers and utility\n */\nfunction parseTokens(tokens: Token[], ctx?: Context): { modifiers: ParsedModifier[]; utility: ParsedUtility | null } {\n const modifiers: ParsedModifier[] = [];\n let utility: ParsedUtility | null = null;\n \n // Handle empty token array\n if (tokens.length === 0) {\n return { modifiers, utility: null };\n }\n \n // Determine token types and parse in both directions\n if (tokens.length === 1) {\n // utility only\n utility = parseUtility(tokens[0].value, ctx);\n } else if (tokens.length === 2) {\n const firstToken = tokens[0];\n const secondToken = tokens[1];\n const isFirstUtility = isUtilityPrefix(firstToken.value, ctx);\n \n if (isFirstUtility) {\n // utility:modifier form\n utility = parseUtility(firstToken.value, ctx);\n const parsed = parseModifier(secondToken.value);\n if (parsed) modifiers.push(parsed);\n } else {\n // modifier:utility form\n const parsed = parseModifier(firstToken.value);\n if (parsed) modifiers.push(parsed);\n utility = parseUtility(secondToken.value, ctx);\n }\n } else {\n // Multiple tokens\n // Check if the first token is a utility\n const isFirstUtility = isUtilityPrefix(tokens[0].value, ctx);\n \n if (isFirstUtility) {\n // utility:modifier:modifier form\n utility = parseUtility(tokens[0].value, ctx);\n for (let i = 1; i < tokens.length; i++) {\n const parsed = parseModifier(tokens[i].value);\n if (parsed) modifiers.push(parsed);\n }\n } else {\n // modifier:modifier:utility form\n for (let i = 0; i < tokens.length - 1; i++) {\n const parsed = parseModifier(tokens[i].value);\n if (parsed) modifiers.push(parsed);\n }\n utility = parseUtility(tokens[tokens.length - 1].value, ctx);\n }\n }\n return { modifiers, utility };\n}\n\n/**\n * Parse modifier token\n */\nfunction parseModifier(value: string): ParsedModifier | null {\n let negative = false;\n let modStr = value;\n \n if (modStr.startsWith('-')) {\n negative = true;\n modStr = modStr.slice(1);\n }\n \n // Arbitrary variant support\n if (modStr.startsWith('[') && modStr.endsWith(']')) {\n return { type: modStr, negative, arbitrary: true };\n }\n \n return { type: modStr, negative };\n}\n\nfunction nameSort(a: UtilityRegistration, b: UtilityRegistration): number {\n return b.name.length - a.name.length;\n}\n\n/**\n * Parse utility token\n */\nfunction parseUtility(value: string, ctx?: Context): ParsedUtility {\n // Examples: bg-[red], text-[color:var(--foo)], bg-(--my-bg), -m-4, -bg-[red]\n let prefix = '';\n let utilityValue = '';\n let arbitrary = false;\n let customProperty = false;\n let negative = false;\n let opacity = '';\n let category = '';\n let priority = 0;\n \n if (value.startsWith('-')) {\n negative = true;\n }\n \n // Handle arbitrary values\n if (value.includes('-[')) {\n [prefix, utilityValue] = value.split('-[');\n // Closing bracket position\n const closeIdx = utilityValue.lastIndexOf(']');\n if (closeIdx !== -1 && closeIdx < utilityValue.length - 1 && utilityValue[closeIdx + 1] === '/') {\n // If '/' follows the closing bracket, split opacity\n opacity = utilityValue.slice(closeIdx + 2); // after '/'\n utilityValue = utilityValue.slice(0, closeIdx); // keep inside brackets only\n } else {\n // If ends with ']', no opacity\n utilityValue = utilityValue.replace(/]$/, '');\n }\n arbitrary = true;\n } \n // Handle custom properties\n else if (value.includes('-(')) {\n [prefix, utilityValue] = value.split('-(');\n utilityValue = utilityValue.replace(/\\)$/, '');\n customProperty = true;\n } \n // Handle regular utilities\n else {\n const sortedUtilities = [...getUtility(ctx)].sort(nameSort);\n \n let matchedUtility = sortedUtilities.find(p => value === p.name);\n if (matchedUtility) {\n prefix = matchedUtility.name;\n utilityValue = \"\";\n negative = value.startsWith('-');\n category = matchedUtility.category!;\n priority = matchedUtility.priority!;\n } else {\n if (value.startsWith('-')) {\n negative = true;\n value = value.slice(1);\n }\n \n matchedUtility = sortedUtilities.find(p => value.startsWith(p.name + '-'));\n if (matchedUtility) {\n prefix = matchedUtility.name;\n utilityValue = value.slice(matchedUtility.name.length + 1);\n category = matchedUtility.category!;\n priority = matchedUtility.priority!;\n } else {\n const parts = value.split('-');\n prefix = parts[0];\n utilityValue = parts.slice(1).join('-');\n }\n }\n }\n \n return {\n prefix,\n value: utilityValue,\n arbitrary: !!arbitrary,\n customProperty: !!customProperty,\n negative: !!negative,\n opacity,\n category,\n priority,\n };\n}\n","import { type AstNode } from \"./ast\";\nimport { escapeClassName } from \"./registry\";\n\nconst importantPrefix = \"!important\";\n\n/**\n * Converts AST nodes to CSS string\n * @param ast { AstNode[] } - Array of AST nodes to convert\n * @param baseSelector { string } - Base selector for nested rules (e.g., \".parent\" for \".parent .child\")\n * @param opts { minify?: boolean } - Options for CSS generation\n * @param _indent { string } - Current indentation level for pretty formatting\n */\nfunction astToCss(\n ast: AstNode[],\n baseSelector?: string,\n opts?: { minify?: boolean, important?: boolean },\n _indent = \"\"\n): string {\n const minify = opts?.minify;\n const indent = _indent;\n const nextIndent = _indent + \" \"; // Next-level indentation: current + 2 spaces\n const important = opts?.important ?? false;\n const importantString = important ? ` ${importantPrefix}` : \"\";\n // Note: Caching is handled at a higher level (IncrementalParser); omit here\n\n // Debug logging for empty AST\n if (!ast || ast.length === 0) {\n // eslint-disable-next-line no-console\n console.warn('[astToCss] Empty AST received:', { ast, baseSelector, minify });\n return '';\n }\n\n // Deduplication logic: remove duplicates only among CSS property declarations (decl)\n // \n // How it works:\n // 1. Iterate in reverse (the last defined property wins)\n // 2. Only check duplicates for decl nodes (skip rule/at-rule)\n // 3. Consider duplicates by property name (prop)\n // \n // Current limitations:\n // - Does not dedupe rule or at-rule nodes\n // - When background.ts returns @supports + decl together, dedupe may not apply\n // - This can yield duplicate CSS rules in output\n const dedupedAst = [];\n if (Array.isArray(ast)) {\n const seenProps = new Map(); // Tracks property names already seen\n \n // Reverse iteration: keep the last defined property\n // Example: [color: red, color: blue] → keep only [color: blue]\n for (let i = ast.length - 1; i >= 0; i--) {\n const node = ast[i];\n \n if (node.type === \"decl\") {\n // Handle CSS property declaration nodes\n // node.important is not present; handle safely\n const key = node.prop; // Property name (e.g., \"color\", \"background-color\")\n \n // Skip duplicate properties\n if (seenProps.has(key)) {\n continue;\n }\n \n // Record new property\n seenProps.set(key, true);\n }\n \n // Add node to result (use unshift to preserve original order)\n dedupedAst.unshift(node);\n }\n }\n\n // Generate CSS string from deduped AST\n const result = dedupedAst\n .map((node) => {\n switch (node.type) {\n case \"decl\": {\n // Handle CSS property declaration (e.g., color: red;)\n const value = node.value;\n // node.important is absent; ignore\n if (node.prop.startsWith(\"--\")) {\n // Handle CSS custom property (e.g., --primary-color: #007bff;)\n if (minify) {\n const css = `${node.prop}: ${value}${importantString};`;\n // console.log(\"[astToCss] decl custom property minify\", css);\n return css;\n } else {\n const css = `${indent}${node.prop}: ${value}${importantString};`;\n // console.log(\"[astToCss] decl custom property pretty\", css);\n return css;\n }\n } else {\n const localIndent = minify ? \"\" : indent;\n const css = `${localIndent}${node.prop}: ${value}${importantString};`;\n return css;\n }\n }\n case \"rule\": {\n // Handle nested rule (e.g., .parent .child { ... })\n // \n // baseSelector handling logic:\n // 1. If baseSelector exists: combine to form \".parent .child\"\n // 2. If no baseSelector: keep as standalone \".child\"\n // 3. Replace '&' with baseSelector\n // 4. Pseudo selectors (e.g., :hover) append after baseSelector\n let selector = node.selector;\n \n if (baseSelector) {\n // When baseSelector exists: create nested rule\n const escBase = \".\" + escapeClassName(baseSelector); // Convert baseSelector to class form\n \n if (selector && selector.includes(\"&\")) {\n // Replace '&' with baseSelector\n // Example: \"&:hover\" → \".parent:hover\"\n selector = selector.replace(/&/g, escBase);\n } else if (!selector.startsWith(escBase)) {\n // If it does not start with baseSelector: prepend it\n selector = selector\n .split(\",\") // Handle multiple selectors separated by comma\n .map((sel) => {\n sel = sel.trim();\n \n if (sel.startsWith(\":\") || sel.startsWith(\"::\")) {\n // Pseudo selector: append directly after baseSelector\n // Example: \":hover\" → \".parent:hover\"\n return escBase + sel;\n } else {\n // Normal selector: separate with space from baseSelector\n // Example: \".child\" → \".parent .child\"\n return escBase + (sel.startsWith(\".\") ? \"\" : \" \") + sel;\n }\n })\n .join(\", \");\n }\n }\n \n // Create CSS rule\n if (minify) {\n const css = `${indent}${selector}{${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}}`;\n // console.log(\"[astToCss] rule minify\", css);\n return css;\n } else {\n const css = `${indent}${selector} {\\n${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}${indent}}`;\n // console.log(\"[astToCss] rule pretty\", css);\n return css;\n }\n }\n case \"style-rule\": {\n // Handle style-rule: top-level rule with complete selector\n // \n // baseSelector handling:\n // - Currently: pass baseSelector as-is\n // - Caveat: nested rules may not handle baseSelector correctly\n // - Example: .bg-white/60 { .nested { ... } } → .bg-white/60 .nested { ... }\n if (minify) {\n const css = `${indent}${node.selector} {${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}}`;\n // console.log(\"[astToCss] style-rule minify\", css);\n return css;\n } else {\n const css = `${indent}${node.selector} {\\n${astToCss(\n node.nodes, // Recursively process child nodes\n baseSelector, // Pass baseSelector (used in nested rules)\n opts,\n nextIndent\n )}${indent}}`;\n // console.log(\"[astToCss] style-rule pretty\", css, JSON.stringify(node, null, 2));\n return css;\n }\n }\n case \"at-rule\": {\n // Handle at-rule: @media, @supports, etc.\n // \n // baseSelector handling:\n // - Pass baseSelector to inner nodes of the at-rule\n // - Ensure nested rules get correct selectors\n // - Example: @media (min-width: 768px) { .parent .child { ... } }\n if (minify) {\n const css = `${indent}@${node.name} ${node.params}{${astToCss(\n node.nodes, // Recursively process inner nodes of the at-rule\n baseSelector, // Always propagate baseSelector so '&' resolves inside at-rules\n opts,\n nextIndent\n )}}`;\n // console.log(\"[astToCss] at-rule minify\", css);\n return css;\n } else {\n const css = `${indent}@${node.name} ${node.params} {\\n${astToCss(\n node.nodes, // Recursively process inner nodes of the at-rule\n baseSelector, // Always propagate baseSelector so '&' resolves inside at-rules\n opts,\n nextIndent\n )}${indent}}`;\n // console.log(\"[astToCss] at-rule pretty\", css);\n return css;\n }\n }\n case \"comment\":\n // Handle CSS comments (removed in minify mode)\n return minify ? \"\" : `${indent}/* ${node.text} */`;\n case \"raw\":\n // Handle raw CSS code (output as-is)\n return `${indent}${node.value}`;\n default:\n // eslint-disable-next-line no-console\n console.warn('[astToCss] Unknown node type:', node);\n return \"\";\n }\n })\n .filter(Boolean) // Remove empty strings\n .join(minify ? \"\" : \"\\n\"); // Join nodes (minify: no whitespace, pretty: newlines)\n\n // Add trailing newline for consistency with expected format\n const finalResult = result + (minify ? \"\" : \"\\n\");\n \n // Debug logging for empty result\n if (!finalResult || finalResult.trim() === '') {\n // eslint-disable-next-line no-console\n console.warn('[astToCss] Empty result generated:', { \n ast, \n baseSelector, \n minify, \n result, \n finalResult,\n dedupedAst \n });\n }\n \n return finalResult;\n}\n\nfunction rootToCss(nodes: AstNode[]): string {\n // console.log(\"[rootToCss] input\", { nodes });\n const result = nodes\n .map((node) => {\n const list: string[] = [];\n\n if (node.type === \"decl\") {\n list.push(`${node.prop}: ${node.value};`);\n } else if (node.type === \"at-rule\") {\n // console.log(\"[rootToCss] at-rule\", node);\n list.push(`@${node.name} ${node.params} {\n${node.nodes.map((node) => {\n // console.log(\"[rootToCss] node\", node);\n if (node.type === \"decl\") {\n return `\\t${node.prop}: ${node.value};`;\n }\n})\n.join(\"\\n\")}\n}`\n );\n }\n\n return list.join(\"\\n\");\n })\n .join(\"\\n\");\n\n // console.log(\"[rootToCss] result\", { nodes, result });\n return result;\n}\n\nexport { astToCss, rootToCss };\n","import { HasItems, HasName, HasParams, HasSelector, type AstNode, type HasNodes } from \"./ast\";\nimport { parseClassName } from \"./parser\";\nimport { astCache, parseResultCache } from \"../utils/cache\";\nimport { getUtility, getModifier } from \"./registry\";\nimport { Context } from \"./context\";\nimport { astToCss, rootToCss } from \"./astToCss\";\nimport { clearAllCaches } from \"../utils/cache\";\nimport { clearContextCaches, getContextState } from './contextState';\n\n// Failure cache for invalid class names\nconst failureCache = new Set<string>();\n\n/**\n * decl-to-root path collection function (reused in normalizeAstOrder, etc.)\n */\nexport type PathNode = Partial<AstNode>;\nexport type DeclPath = PathNode[];\n\n/**\n * collectDeclPaths\n * Collects all paths from AST tree to decl(leaf) (including variant chains).\n * - Input: AST node array\n * - Output: decl-to-root path(variant chain) array\n * - Usage: Used for path extraction for AST optimization/merging in optimizeAst, declPathToAst, etc.\n *\n * @param nodes AstNode[] - AST tree\n * @param path PathNode[] - Recursive use (initial value omitted)\n * @returns DeclPath[] - Array of paths to decl (variant chains)\n */\nexport function collectDeclPaths(\n nodes: AstNode[] = [],\n path: PathNode[] = []\n): DeclPath[] {\n let result: DeclPath[] = [];\n for (const node of nodes) {\n const curr = { ...node} as HasNodes;\n delete curr.nodes;\n\n const nodes = (node as HasNodes).nodes;\n if (node.type === \"decl\") {\n result.push([...path, curr]);\n } else if (nodes && nodes.length > 0) {\n result = result.concat(\n collectDeclPaths(nodes, [...path, curr])\n );\n }\n }\n return result;\n}\n\n// Sort criteria: at-rule > style-rule > rule > decl, depth first, sibling order preserved\nfunction getPriority(type: string): number {\n if (type === \"at-root\") return -1;\n if (type === \"at-rule\") return 0;\n if (type === \"style-rule\") return 10;\n if (type === \"rule\") return 20;\n return 30; // decl\n}\n\nconst sourcePriority: Record<string, number> = {\n media: 0, // @media\n supports: 1, // @supports\n container: 2, // @container\n responsive: 10, // sm:, md: etc.\n group: 20, // .group:hover &\n peer: 30, // .peer:focus ~ &\n dark: 40, // dark:\n universal: 50, // :is(), :where()\n data: 60, // [data-state=...]\n aria: 70, // [aria-pressed=...]\n attribute: 80, // [type=...]\n pseudo: 90, // :hover, :focus\n base: 100, // &\n starting: 110, // (root)\n};\n\nfunction getRulePriority(rule: Partial<AstNode>): number {\n return sourcePriority[rule.source || \"base\"] || 100;\n}\n\nconst mergeSelectorsBySource = (source: string, nodes: Partial<AstNode>[]) => {\n if (source === \"pseudo\") {\n // Inside → outside (reduce)\n return nodes.reduce((acc, sel) => {\n const selector = (sel as HasSelector).selector as string;\n if (acc === \"\") return selector;\n if (selector?.includes(\"&\")) return selector.replace(/&/, acc);\n return selector + \" \" + acc;\n }, \"\");\n } else {\n // Outside → inside (reduceRight)\n return nodes.reduceRight((acc, sel) => {\n const selector = (sel as HasSelector).selector as string;\n if (acc === \"\") return selector;\n if (selector?.includes(\"&\")) return selector.replace(/&/, acc);\n return selector + \" \" + acc;\n }, \"\");\n }\n};\n\n/**\n * declPathToAst\n * Converts decl-to-root path(variant chain) to actual nested AST.\n * - Input: DeclPath(variant chain)\n * - Output: Nested AstNode[]\n * - Consecutive same variants (same key) are merged, nested in outside→inside order\n *\n * @param declPath DeclPath\n * @returns AstNode[]\n */\nexport function declPathToAst(declPath: DeclPath): AstNode[] {\n if (!declPath || declPath.length === 0) return [];\n // Log type/selector/source for each node in declPath\n // 1. Separate decl (leaf) and variant chain\n const variants = declPath.slice(0, -1);\n const decl = declPath[declPath.length - 1];\n\n // 2. Keep existing sort/merge (hoist) logic\n const sortedVariants = [...variants].sort(\n (a, b) => getPriority(a.type!) - getPriority(b.type!)\n );\n\n // Add default rule handling for decl\n // 1. If first element is decl, add rule('&', [decl])\n // 2. If rule lacks '&' while child is decl, add current rule and rule('&', [decl])\n if (sortedVariants.length === 0) {\n if (decl.type === \"decl\") {\n // If first element is decl, add rule('&', [decl])\n sortedVariants.push({\n type: \"rule\",\n selector: \"&\",\n source: \"base\",\n });\n }\n } else {\n const last = sortedVariants[sortedVariants.length - 1];\n if (\n (last.type == \"at-rule\" && last.name !== \"property\") ||\n last.type == \"style-rule\" ||\n (last.type === \"rule\" && last.selector?.includes(\"&\") === false)\n ) {\n // console.log(\"[declPathToAst] add rule\", last);\n sortedVariants.push({\n type: \"rule\",\n selector: \"&\",\n source: \"base\",\n });\n }\n }\n\n const mergedVariants: typeof sortedVariants = [];\n for (const v of sortedVariants) {\n if (mergedVariants.length === 0) {\n mergedVariants.push(v);\n } else {\n const prev = mergedVariants[mergedVariants.length - 1];\n const isSame =\n v.type === prev.type &&\n ((v.type === \"at-rule\" &&\n prev.type === \"at-rule\" &&\n v.name === prev.name &&\n v.params === prev.params) ||\n ((v.type === \"rule\" || v.type === \"style-rule\") &&\n v.selector === (prev as HasSelector).selector));\n if (!isSame) {\n mergedVariants.push(v);\n }\n // else: skip(merge)\n }\n }\n // 3. Gather only rule nodes (consecutive rules only)\n const ruleSelectors: Partial<AstNode>[] = [];\n const nonRuleVariants: Partial<AstNode>[] = [];\n for (const v of mergedVariants) {\n if (v.type === \"rule\") ruleSelectors.push(v);\n else nonRuleVariants.push(v);\n }\n\n // 5. Compose selector and create a single rule\n let node: Partial<AstNode> = { ...decl };\n const sortedRuleSelectors = [...ruleSelectors].sort(\n (a, b) => getRulePriority(a) - getRulePriority(b)\n );\n if (sortedRuleSelectors.length > 0) {\n const grouped = sortedRuleSelectors.reduce((acc, rule) => {\n const key = rule.source || \"base\";\n if (!acc[key]) acc[key] = [];\n acc[key].push(rule);\n return acc;\n }, {} as Record<string, Partial<AstNode>[]>);\n // Detailed grouped log\n\n // 1. Sort by sourcePriority\n const mergedBySource = Object.entries(grouped)\n .sort(\n ([a], [b]) => (sourcePriority[a] ?? 999) - (sourcePriority[b] ?? 999)\n )\n .map(([source, nodes]) => {\n const merged = mergeSelectorsBySource(source, nodes);\n return merged;\n });\n\n // 2. Reduce from outside→inside (pseudo is always innermost)\n let acc = \"\";\n for (let i = 0; i < mergedBySource.length; i++) {\n const sel = mergedBySource[i];\n if (acc === \"\") acc = sel;\n else if (sel.includes(\"&\")) acc = sel.replace(/&/, acc);\n else acc = sel + \" \" + acc;\n }\n const finalSelector = acc;\n node = { type: \"rule\", selector: finalSelector, nodes: [node as AstNode] };\n }\n\n // 6. Nest remaining variants (e.g., at-rule) outside\n for (let i = nonRuleVariants.length - 1; i >= 0; i--) {\n node = { ...nonRuleVariants[i], nodes: [node as AstNode] };\n }\n\n return [node as AstNode];\n}\n\n/**\n * extractAtRootNodes\n * Extracts at-root nodes from AST tree and returns them as an array.\n * - Input: AstNode[]\n * - Output: AstNode[]\n * - Usage: Used in parseClassToAst for at-root node extraction\n *\n * @param nodes AstNode[]\n * @param parent AstNode\n * @param atRootNodes AstNode[]\n */\nfunction extractAtRootNodes(\n nodes: AstNode[],\n parent?: AstNode,\n atRootNodes: AstNode[] = []\n) {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (node.type === \"at-root\") {\n atRootNodes.push(node);\n delete nodes[i];\n } else if (node.type === \"rule\" || node.type === \"style-rule\") {\n extractAtRootNodes(node.nodes, node, atRootNodes);\n }\n }\n\n if (parent) {\n (parent as HasNodes).nodes = nodes.filter(Boolean) as AstNode[];\n }\n}\n\n/**\n * parseClassToAst\n * Parses className(including variant chain) to generate AST tree.\n * - Input: className(string), Context\n * - Output: AstNode[] (multiple roots possible for variant wrapping path)\n * - Perfectly supports variant wrapping structure (Cartesian product, nesting, siblings, etc.)\n * - Accumulates wrappers in wrappers and applies them from right to left.\n * - Can return multiple root asts.\n *\n * @param fullClassName string (e.g., 'sm:dark:hover:bg-red-500')\n * @param ctx Context\n * @returns AstNode[]\n *\n * @example\n * const ast = parseClassToAst('sm:dark:hover:bg-red-500', ctx);\n * // ast is an AST tree with sm, dark, hover variants nested\n */\nexport function parseClassToAst(\n fullClassName: string,\n ctx: Context\n): AstNode[] {\n const state = getContextState(ctx);\n const failures = state?.failures || failureCache;\n const cache = state?.astCache || astCache;\n // Check failure cache first\n if (failures.has(fullClassName)) {\n return [];\n }\n\n // Check AST cache first\n if (cache.has(fullClassName)) {\n return cache.get(fullClassName)!;\n }\n\n const { modifiers, utility } = parseClassName(fullClassName, ctx);\n\n // console.log('[parseClassToAst] modifiers', modifiers, utility);\n\n if (!utility) {\n // eslint-disable-next-line no-console\n console.warn(`[BAROCSS] Invalid class name format: \"${fullClassName}\"`);\n failures.add(fullClassName);\n return [];\n }\n\n const utilReg = getUtility(ctx).find((u) => {\n const fullClassName = utility.value\n ? `${utility.prefix}-${utility.value}`\n : utility.prefix;\n return u.match(fullClassName);\n });\n // console.log('[parseClassToAst] utilReg', utilReg);\n if (!utilReg) {\n const utilityName = utility.value\n ? `${utility.prefix}-${utility.value}`\n : utility.prefix;\n // eslint-disable-next-line no-console\n console.warn(`[BAROCSS] Unknown utility class: \"${utilityName}\" in \"${fullClassName}\"`);\n failures.add(fullClassName);\n return [];\n }\n\n let value = utility.value;\n if (utility.negative && value) value = \"-\" + value;\n // console.log('[parseClassToAst] value', value, utility);\n let ast = utilReg.handler(value!, ctx, utility, utilReg) || [];\n\n // console.log('[parseClassToAst] ast', ast);\n\n const wrappers = [];\n const selector = \"&\";\n\n for (let i = 0; i < modifiers.length; i++) {\n const variant = modifiers[i];\n\n const plugin = getModifier(ctx).find((p) => p.match(variant.type, ctx));\n\n if (!plugin) {\n // eslint-disable-next-line no-console\n console.warn(`[BAROCSS] Unknown variant: \"${variant.type}\" in \"${fullClassName}\"`);\n failures.add(fullClassName);\n return [];\n }\n\n if (plugin.wrap) {\n const items = plugin.wrap(variant, ctx);\n wrappers.push({\n type: \"wrap\",\n items: items,\n });\n }\n if (plugin.modifySelector) {\n const result = plugin.modifySelector({\n selector,\n fullClassName,\n mod: variant,\n context: ctx,\n variantChain: modifiers,\n index: i,\n });\n // A wrapped identity selector adds no rule. Media-only modifiers use it.\n if (plugin.wrap && (\n result === '&' ||\n (typeof result === 'object' && !Array.isArray(result) && result.selector === '&') ||\n (Array.isArray(result) && result.length === 1 && result[0].selector === '&')\n )) continue;\n if (typeof result === \"string\" && result.includes(\"&\")) {\n wrappers.push({ type: \"rule\", selector: result });\n } else if (typeof result === \"object\" && !Array.isArray(result) && result.selector) {\n const wrappingType = result.wrappingType || \"rule\";\n wrappers.push({\n type: wrappingType,\n selector: result.selector,\n flatten: result.flatten,\n source: result.source,\n });\n } else if (Array.isArray(result)) {\n wrappers.push({\n type: \"wrap\",\n items: result.map((r) => ({\n type: r.wrappingType || \"rule\",\n selector: r.selector,\n source: r.source,\n flatten: r.flatten,\n })),\n });\n }\n }\n }\n\n // Nest wrappers in N→0 (right→left) order\n for (let i = wrappers.length - 1; i >= 0; i--) {\n const wrap = wrappers[i];\n\n if (wrap.type === \"wrap\") {\n ast = ((wrap as HasItems).items as AstNode[]).map((item) => (\n item.type === 'rule' || item.type === 'style-rule' || item.type === 'at-rule' || item.type === 'at-root'\n ? { ...item, nodes: [...(item.nodes || []), ...ast] }\n : item\n ));\n } else if (wrap.type === \"style-rule\") {\n ast = [\n {\n type: \"style-rule\",\n selector: wrap.selector!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n } else if (wrap.type === \"at-rule\") {\n ast = [\n {\n type: \"at-rule\",\n name: (wrap as HasName).name || \"media\",\n params: (wrap as HasParams).params!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n } else if (wrap.type === \"rule\") {\n ast = [\n {\n type: \"rule\",\n selector: wrap.selector!,\n source: wrap.source,\n nodes: Array.isArray(ast) ? ast : [ast],\n },\n ];\n }\n }\n\n // console.log(\"[parseClassToAst] ast\", ast);\n\n // ast 에서 at-root 노드만 추출해서 ast 앞으로 추가\n // ast 내부에서는 at-root 노드를 제거\n // 재귀적으로 실행되어야 함\n const atRootNodes: AstNode[] = [];\n\n extractAtRootNodes(ast, undefined, atRootNodes);\n\n ast = [...atRootNodes, ...ast].filter(Boolean);\n\n // console.log(\"[parseClassToAst] ast\", ast);\n // Cache the result\n cache.set(fullClassName, ast);\n\n return ast;\n}\n\n/**\n * Clear all AST caches (mainly for testing)\n */\nexport function clearAstCache(ctx?: Context): void {\n if (ctx) {\n clearContextCaches(ctx);\n } else {\n clearAllCaches();\n failureCache.clear();\n }\n}\n\n/** Read AST cache statistics for one context, or the legacy global cache. */\nexport function getAstCacheStats(ctx?: Context) {\n return (ctx && getContextState(ctx)?.astCache || astCache).getStats();\n}\n\n/**\n * generateCss\n * Takes multiple classNames and generates CSS for each, joining them.\n * - Input: classList(string), Context, options\n * - Output: string (result of joining multiple CSS blocks)\n * - Processes internally parseClassToAst → optimizeAst → astToCss in sequence\n * - Supports options like dedup, minify\n *\n * @param classList string (e.g., 'bg-red-500 text-lg hover:bg-blue-500')\n * @param ctx Context\n * @param opts { minify?: boolean, dedup?: boolean }\n * @returns string\n *\n * @example\n * const css = generateCss('sm:dark:hover:bg-red-500 sm:focus:bg-blue-500', ctx);\n */\nexport function generateCss(\n classList: string,\n ctx: Context,\n opts?: { minify?: boolean; dedup?: boolean }\n): string {\n const seen = new Set<string>();\n const allAtRootNodes: AstNode[] = [];\n\n const results = classList\n .split(/\\s+/)\n .filter((cls) => {\n if (!cls) return false;\n if (opts?.dedup) {\n if (seen.has(cls)) return false;\n seen.add(cls);\n }\n return true;\n })\n .map((cls) => {\n const ast = parseClassToAst(cls, ctx);\n const parsedResult = (getContextState(ctx)?.parseResultCache || parseResultCache).get(cls);\n const cleanAst = optimizeAst(ast);\n\n cleanAst.forEach((node) => {\n if (node.type === \"at-root\") {\n allAtRootNodes.push(...node.nodes);\n }\n });\n\n // If style-rule already has a complete selector, do not pass baseSelector\n const hasStyleRule = cleanAst.some((node) => node.type === \"style-rule\");\n const css = astToCss(cleanAst.filter((node) => node.type !== \"at-root\"), hasStyleRule ? undefined : cls, {\n minify: opts?.minify,\n important: parsedResult?.utility?.important ?? false,\n }); // Conditional baseSelector\n\n const result = css;\n\n // Debug logging for empty CSS\n if (!result || result.trim() === \"\") {\n // eslint-disable-next-line no-console\n console.warn(\"[generateCss] Empty CSS generated for class:\", {\n class: cls,\n ast: cleanAst,\n hasStyleRule,\n css,\n result,\n });\n }\n\n return result;\n })\n .join(opts?.minify ? \"\" : \"\\n\");\n\n const rootRules = [...new Set(allAtRootNodes\n .filter((node) => node.type === \"at-rule\")\n .map((node) => rootToCss([node])))];\n const rootDeclarations = [...new Set(allAtRootNodes\n .filter((node) => node.type === \"decl\")\n .map((node) => rootToCss([node])))];\n const rootCss = [\n ...rootRules,\n ...(rootDeclarations.length ? [`:root,:host {${rootDeclarations.join(\"\\n\")}}`] : []),\n ].join(opts?.minify ? \"\" : \"\\n\");\n\n if (allAtRootNodes.length > 0) {\n // eslint-disable-next-line no-console\n console.log(\"[generateCss] All collected atRoot nodes:\", allAtRootNodes);\n }\n\n // Debug logging for final result\n if (!results || results.trim() === \"\") {\n // eslint-disable-next-line no-console\n console.warn(\"[generateCss] Empty final result:\", {\n classList,\n results,\n allAtRootNodes,\n });\n }\n\n return `${rootCss}${rootCss && results ? (opts?.minify ? \"\" : \"\\n\") : \"\"}${results}`;\n}\n\nexport type GenerateCssRulesResult = {\n cls: string;\n ast: AstNode[];\n css: string;\n cssList: string[];\n rootCss: string;\n rootCssList: string[];\n};\n\n/**\n * Returns an array of optimized results for multiple class names with dedup/filter.\n * - Each object: { cls, ast, css }\n * - Supports minify, dedup options\n * - Applies astToCss(cleanAst, cls, opts) per class\n * @param classList string (space-separated)\n * @param ctx Context\n * @param opts { minify?: boolean; dedup?: boolean }\n * @returns Array<{ cls: string; ast: AstNode[]; css: string }>\n */\nexport function generateCssRules(\n classList: string,\n ctx: Context,\n opts?: { minify?: boolean; dedup?: boolean }\n): Array<GenerateCssRulesResult> {\n const seen = new Set<string>();\n return classList\n .split(/\\s+/)\n .filter((cls) => {\n if (!cls) return false;\n if (opts?.dedup) {\n if (seen.has(cls)) return false;\n seen.add(cls);\n }\n return true;\n })\n .map((cls) => {\n // console.log(\"[generateCssRules] cls\", cls);\n const ast = parseClassToAst(cls, ctx);\n const parsedResult = (getContextState(ctx)?.parseResultCache || parseResultCache).get(cls);\n const options = {\n minify: opts?.minify,\n important: parsedResult?.utility?.important ?? false,\n };\n const cleanAst = optimizeAst(ast);\n\n // console.log(\"[generateCssRules] cleanAst\", cleanAst);\n\n const allAtRootNodes: AstNode[] = cleanAst\n .filter(\n (node) => node.type === \"at-root\" && !node.source\n )\n .map((node) => (node as HasNodes).nodes || [])\n .flat();\n const allCleanAst: AstNode[] = cleanAst.filter(\n (node) =>\n node.type !== \"at-root\" ||\n (node.type === \"at-root\" && node.source)\n );\n\n\n const cssList = [];\n for (const node of allCleanAst) {\n if (node.type === \"at-root\") {\n node.nodes.forEach((node) => {\n const css = astToCss([node], \"\", options);\n cssList.push(css);\n });\n } else {\n const css = astToCss([node], cls, options);\n cssList.push(css);\n }\n }\n // console.log('[generateCssRules] css', cls);\n const rootCssList = [];\n for (const node of allAtRootNodes) {\n const css = rootToCss([node]);\n rootCssList.push(css);\n }\n // console.log(\"[generateCssRules] rootCss\", rootCssList, allAtRootNodes);\n return {\n cls,\n ast: allCleanAst,\n css: cssList.join(options.minify ? \"\" : \"\\n\"),\n cssList,\n rootCss: rootCssList.join(options.minify ? \"\" : \"\\n\"),\n rootCssList,\n };\n });\n}\n\n/**\n * mergeAstTreeList\n * Takes a list of declPathToAst results (AstNode[][]), merges same at-rule(name, params) etc., and returns the final AST tree.\n * - Input: AstNode[][] (nested ASTs of multiple decl-to-root paths)\n * @returns AstNode[]\n * - Usage: Used in optimizeAst for final AST merging/optimization\n *\n * @param astList AstNode[][]\n * @returns AstNode[]\n */\nexport function mergeAstTreeList(astList: AstNode[][]): AstNode[] {\n // AstNode[][] → DeclPath[]\n const declPaths: DeclPath[] = astList.map((ast) => {\n // declPathToAst always returns [rootNode]\n const path: AstNode[] = [];\n let node = ast[0];\n while (node) {\n path.push({ ...node, nodes: undefined } as AstNode & HasNodes);\n if ((node as HasNodes).nodes && (node as HasNodes)?.nodes?.length === 1)\n node = (node as HasNodes).nodes?.[0] as AstNode;\n else break;\n }\n return path;\n });\n // Recursive merge\n function merge(declPaths: DeclPath[], depth = 0): AstNode[] {\n if (declPaths.length === 0) return [];\n if (declPaths[0].length === depth + 1) {\n // All decls remain\n return declPaths.map((path) => path[depth]) as AstNode[];\n }\n // Group by variant(type+key) at current depth\n const groupMap = new Map<string, DeclPath[]>();\n for (const path of declPaths) {\n const node = path[depth];\n let key = node.type;\n if (node.type === \"at-rule\") key += \":\" + node.name + \":\" + node.params;\n else if (node.type === \"rule\" || node.type === \"style-rule\")\n key += \":\" + node.selector;\n else key += \":\" + JSON.stringify(node);\n if (!groupMap.has(key!)) groupMap.set(key!, []);\n groupMap.get(key!)!.push(path);\n }\n // Recursive merge for each group\n const result: AstNode[] = [];\n for (const [, group] of groupMap.entries()) {\n const node = group[0][depth];\n const children = merge(group, depth + 1);\n result.push(\n children.length\n ? ({ ...node, nodes: children as AstNode[] } as AstNode & HasNodes)\n : ({ ...node } as AstNode & HasNodes)\n );\n }\n return result;\n }\n const merged = merge(declPaths);\n return merged;\n}\n/**\n * optimizeAst\n * Merges/organizes AST generated by parseClassToAst into an optimized AST tree based on decl-to-root path.\n * - Input: AstNode[] (result of parseClassToAst)\n * - Output: Optimized AST tree (AstNode[])\n * - Uses collectDeclPaths, declPathToAst, mergeAstTreeList internally\n * - Reflects all variant wrapping structures (nesting, siblings, merging, etc.)\n *\n * @param ast AstNode[]\n * @returns AstNode[]\n */\nexport function optimizeAst(ast: AstNode[]): AstNode[] {\n // console.log(\"[optimizeAst] ast\", ast);\n const declPaths = collectDeclPaths(ast);\n // console.log(\"[optimizeAst] declPaths\", declPaths);\n const astList = declPaths.map(declPathToAst);\n // console.log(\"[optimizeAst] astList\", astList);\n const merged = mergeAstTreeList(astList);\n // console.log(\"[optimizeAst] merged\", merged);\n\n return merged;\n}\n","import { parseClassName } from './parser';\nimport { parseClassToAst, generateCssRules, GenerateCssRulesResult } from './engine';\nimport type { Context } from './context';\nimport { astCache } from '../utils/cache';\nimport { getContextState } from './contextState';\n\n/**\n * Incremental parsing system for efficient class processing\n * \n * This class provides an optimized approach to CSS class processing by:\n * - Tracking processed classes to avoid redundant work\n * - Batching multiple class operations for better performance\n * - Supporting both synchronous and asynchronous processing modes\n * \n * ## Usage Patterns\n * \n * ### Universal Usage (Node.js & Browser)\n * ```typescript\n * const parser = new IncrementalParser(ctx);\n * \n * // Process classes synchronously\n * const results = parser.processClasses(['bg-blue-500', 'text-lg']);\n * \n * // Process single class\n * const result = parser.processClass('bg-red-500');\n * \n * // Get statistics\n * const stats = parser.getStats();\n * ```\n * \n * ### Browser Integration\n * ```typescript\n * const parser = new IncrementalParser(ctx);\n * const BrowserRuntime = new BrowserRuntime();\n * \n * // Process classes and manually inject CSS\n * const results = parser.processClasses(['bg-blue-500', 'text-lg']);\n * results.forEach(result => {\n * if (result.css) {\n * BrowserRuntime.insertRule(result.css);\n * }\n * });\n * \n * // Use with ChangeDetector for automatic DOM monitoring\n * const detector = new ChangeDetector(parser);\n * detector.observe(document.body, { scan: true });\n * ```\n * \n * ## Architecture\n * \n * - **IncrementalParser**: Pure CSS processing (works in Node.js and browser)\n * - **ChangeDetector**: Browser-only DOM monitoring (uses MutationObserver)\n * - **BrowserRuntime**: Browser-only CSS injection (uses DOM APIs)\n */\nexport class IncrementalParser {\n /** Set of class names that have already been processed to avoid duplicates */\n private processedClasses = new Set<string>();\n \n /** BAROCSS context for theme and utility resolution */\n private ctx: Context;\n \n /** Maximum number of classes to process in a single batch */\n private batchSize = 50;\n \n /** Debounce delay for batch processing in milliseconds */\n private debounceMs = 16;\n \n /** Set of classes waiting to be processed */\n private pendingClasses = new Set<string>();\n \n /** Timer for debounced batch processing */\n private batchTimer: number | null = null;\n\n /**\n * Create a new IncrementalParser instance\n * \n * @param ctx - BAROCSS context for theme and utility resolution\n */\n constructor(ctx: Context) {\n this.ctx = ctx;\n }\n\n /**\n * Processes a single CSS class and generates its AST and CSS representation\n * \n * This method performs the complete pipeline for a single class:\n * 1. Checks if the class has already been processed\n * 2. Parses the class name to extract utility information\n * 3. Generates the Abstract Syntax Tree (AST)\n * 4. Converts the AST to CSS rules\n * 5. Marks the class as processed to avoid future duplicates\n * \n * @param className - The CSS class name to process (e.g., 'bg-blue-500')\n * @returns Object containing AST and CSS, or null if processing failed or class was already processed\n */\n processClass(className: string): GenerateCssRulesResult | null {\n // Check if already processed\n if (this.processedClasses.has(className)) {\n // console.log('[IncrementalParser] Class already processed:', className);\n return null; // Already processed\n }\n\n try { \n // Parse class\n const parseResult = parseClassName(className, this.ctx);\n \n if (!parseResult.utility) {\n return null;\n }\n\n // Generate AST\n const ast = parseClassToAst(className, this.ctx);\n\n // console.log('[IncrementalParser] ast', className, ast);\n \n if (ast.length === 0) {\n // eslint-disable-next-line no-console\n console.warn('[IncrementalParser] ast is empty', className);\n return null;\n }\n\n // Generate CSS using the same method as runtime\n const rules = generateCssRules(className, this.ctx, { dedup: false });\n \n if (rules.length === 0) {\n return null;\n }\n\n const rule = rules[0];\n if (!rule.css) {\n return null;\n }\n\n // Mark as processed\n this.processedClasses.add(className);\n\n return { \n cls: className, \n ast, \n css: rule.css, \n cssList: rule.cssList, \n rootCss: rule.rootCss,\n rootCssList: rule.rootCssList\n };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('[IncrementalParser] Failed to process class:', className, error);\n return null;\n }\n }\n\n /**\n * Processes multiple CSS classes in batches for optimal performance\n * \n * This method handles multiple classes efficiently by:\n * - Filtering out already processed classes to avoid redundant work\n * - Processing classes in configurable batch sizes\n * - Returning comprehensive results for each processed class\n * \n * @param classes - Array of CSS class names to process\n * @returns Array of processing results, each containing className, AST, and CSS\n */\n processClasses(classes: string[]): Array<GenerateCssRulesResult> {\n const results: Array<GenerateCssRulesResult> = [];\n const newClasses = classes.filter(cls => !this.processedClasses.has(cls));\n\n if (newClasses.length === 0) {\n return results; // All classes already processed\n }\n\n // Process in batches for better performance\n for (let i = 0; i < newClasses.length; i += this.batchSize) {\n const batch = newClasses.slice(i, i + this.batchSize);\n \n for (const className of batch) {\n const result = this.processClass(className);\n if (result) {\n results.push(result);\n }\n };\n }\n\n return results;\n }\n\n /**\n * Adds classes to the pending queue for asynchronous batch processing\n * \n * This method is used by the ChangeDetector when new classes are discovered\n * in the DOM. Classes are queued and processed together to minimize\n * performance impact from frequent DOM mutations.\n * \n * @param classes - Array of CSS class names to queue for processing\n */\n addToPending(classes: string[]): void {\n classes.forEach(cls => this.pendingClasses.add(cls));\n this.scheduleBatchProcessing();\n }\n\n /**\n * Schedule batch processing with debouncing\n * \n * This method uses setTimeout to debounce rapid class additions\n * and process them in batches for better performance.\n */\n private scheduleBatchProcessing(): void {\n if (this.batchTimer) {\n clearTimeout(this.batchTimer);\n }\n\n if (typeof window !== 'undefined') {\n this.batchTimer = window.setTimeout(() => {\n this.processPendingClasses();\n }, this.debounceMs);\n } else {\n // In server environment, process immediately\n this.processPendingClasses();\n }\n }\n\n /**\n * Process pending classes from the queue\n * \n * This method is called by the debounced timer to process\n * all classes that have been added to the pending queue.\n */\n private processPendingClasses(): void {\n if (this.pendingClasses.size === 0) return;\n\n const classesToProcess = Array.from(this.pendingClasses);\n this.pendingClasses.clear();\n\n // Use common method for processing\n this.applyClasses(classesToProcess);\n }\n\n /**\n * Core method that processes classes and marks them as processed\n * \n * This is the common processing logic used by both pending and synchronous\n * processing methods. It:\n * 1. Processes the provided classes using the batch processor\n * 2. Marks classes as processed to prevent duplicates\n * \n * @param classes - Array of CSS class names to process\n */\n private applyClasses(classes: string[]): void {\n this.processClasses(classes);\n \n // Mark classes as processed\n classes.forEach(cls => {\n this.markProcessed(cls);\n });\n }\n\n /**\n * Returns comprehensive statistics about the incremental parser's state\n * \n * This method provides detailed metrics including:\n * - Number of processed classes\n * - Number of pending classes\n * - Cache statistics from AST and CSS caches\n * \n * @returns Object containing processing statistics and cache information\n */\n getStats() {\n return {\n processedClasses: this.processedClasses.size,\n pendingClasses: this.pendingClasses.size,\n cacheStats: {\n ast: (getContextState(this.ctx)?.astCache || astCache).getStats(),\n css: {} // No CSS cache, so return empty object\n }\n };\n }\n\n /**\n * Clears all processed classes and pending queue\n * \n * This method is useful when the theme or configuration changes,\n * requiring all classes to be reprocessed. It:\n * - Clears the processed classes set\n * - Clears the pending classes queue\n * - Cancels any pending batch processing timer\n */\n clearProcessed(): void {\n this.processedClasses.clear();\n this.pendingClasses.clear();\n if (this.batchTimer && typeof window !== 'undefined') {\n clearTimeout(this.batchTimer);\n this.batchTimer = null;\n }\n }\n\n /**\n * Checks if a specific class has been processed\n * \n * @param cls - The CSS class name to check\n * @returns True if the class has been processed, false otherwise\n */\n isProcessed(cls: string): boolean {\n return this.processedClasses.has(cls);\n }\n\n /**\n * Marks a class as processed to prevent future duplicate processing\n * \n * @param cls - The CSS class name to mark as processed\n */\n markProcessed(cls: string): void {\n this.processedClasses.add(cls);\n }\n\n /**\n * Process classes synchronously and update BrowserRuntime cache\n * This method is used by ChangeDetector for scan operations\n */\n processClassesSync(classes: string[]): void {\n this.applyClasses(classes);\n }\n\n /**\n * Returns all currently processed class names\n * \n * This method is useful for debugging and monitoring purposes,\n * providing visibility into which classes have been processed.\n * \n * @returns Array of all processed class names\n */\n getProcessedClasses(): string[] {\n return Array.from(this.processedClasses);\n }\n}\n","// complete color palette (OKLCH/HEX, etc.)\n// Default theme reference\n\nexport const colors = {\n inherit: 'inherit',\n current: 'currentcolor',\n transparent: 'transparent',\n black: '#000',\n white: '#fff',\n slate: {\n '50': 'oklch(98.4% 0.003 247.858)',\n '100': 'oklch(96.8% 0.007 247.896)',\n '200': 'oklch(92.9% 0.013 255.508)',\n '300': 'oklch(86.9% 0.022 252.894)',\n '400': 'oklch(70.4% 0.04 256.788)',\n '500': 'oklch(55.4% 0.046 257.417)',\n '600': 'oklch(44.6% 0.043 257.281)',\n '700': 'oklch(37.2% 0.044 257.287)',\n '800': 'oklch(27.9% 0.041 260.031)',\n '900': 'oklch(20.8% 0.042 265.755)',\n '950': 'oklch(12.9% 0.042 264.695)',\n },\n gray: {\n '50': 'oklch(98.5% 0.002 247.839)',\n '100': 'oklch(96.7% 0.003 264.542)',\n '200': 'oklch(92.8% 0.006 264.531)',\n '300': 'oklch(87.2% 0.01 258.338)',\n '400': 'oklch(70.7% 0.022 261.325)',\n '500': 'oklch(55.1% 0.027 264.364)',\n '600': 'oklch(44.6% 0.03 256.802)',\n '700': 'oklch(37.3% 0.034 259.733)',\n '800': 'oklch(27.8% 0.033 256.848)',\n '900': 'oklch(21% 0.034 264.665)',\n '950': 'oklch(13% 0.028 261.692)',\n },\n zinc: {\n '50': 'oklch(98.5% 0 0)',\n '100': 'oklch(96.7% 0.001 286.375)',\n '200': 'oklch(92% 0.004 286.32)',\n '300': 'oklch(87.1% 0.006 286.286)',\n '400': 'oklch(70.5% 0.015 286.067)',\n '500': 'oklch(55.2% 0.016 285.938)',\n '600': 'oklch(44.2% 0.017 285.786)',\n '700': 'oklch(37% 0.013 285.805)',\n '800': 'oklch(27.4% 0.006 286.033)',\n '900': 'oklch(21% 0.006 285.885)',\n '950': 'oklch(14.1% 0.005 285.823)',\n },\n neutral: {\n '50': 'oklch(98.5% 0 0)',\n '100': 'oklch(97% 0 0)',\n '200': 'oklch(92.2% 0 0)',\n '300': 'oklch(87% 0 0)',\n '400': 'oklch(70.8% 0 0)',\n '500': 'oklch(55.6% 0 0)',\n '600': 'oklch(43.9% 0 0)',\n '700': 'oklch(37.1% 0 0)',\n '800': 'oklch(26.9% 0 0)',\n '900': 'oklch(20.5% 0 0)',\n '950': 'oklch(14.5% 0 0)',\n },\n stone: {\n '50': 'oklch(98.5% 0.001 106.423)',\n '100': 'oklch(97% 0.001 106.424)',\n '200': 'oklch(92.3% 0.003 48.717)',\n '300': 'oklch(86.9% 0.005 56.366)',\n '400': 'oklch(70.9% 0.01 56.259)',\n '500': 'oklch(55.3% 0.013 58.071)',\n '600': 'oklch(44.4% 0.011 73.639)',\n '700': 'oklch(37.4% 0.01 67.558)',\n '800': 'oklch(26.8% 0.007 34.298)',\n '900': 'oklch(21.6% 0.006 56.043)',\n '950': 'oklch(14.7% 0.004 49.25)',\n },\n red: {\n '50': 'oklch(97.1% 0.013 17.38)',\n '100': 'oklch(93.6% 0.032 17.717)',\n '200': 'oklch(88.5% 0.062 18.334)',\n '300': 'oklch(80.8% 0.114 19.571)',\n '400': 'oklch(70.4% 0.191 22.216)',\n '500': 'oklch(63.7% 0.237 25.331)',\n '600': 'oklch(57.7% 0.245 27.325)',\n '700': 'oklch(50.5% 0.213 27.518)',\n '800': 'oklch(44.4% 0.177 26.899)',\n '900': 'oklch(39.6% 0.141 25.723)',\n '950': 'oklch(25.8% 0.092 26.042)',\n },\n orange: {\n '50': 'oklch(98% 0.016 73.684)',\n '100': 'oklch(95.4% 0.038 75.164)',\n '200': 'oklch(90.1% 0.076 70.697)',\n '300': 'oklch(83.7% 0.128 66.29)',\n '400': 'oklch(75% 0.183 55.934)',\n '500': 'oklch(70.5% 0.213 47.604)',\n '600': 'oklch(64.6% 0.222 41.116)',\n '700': 'oklch(55.3% 0.195 38.402)',\n '800': 'oklch(47% 0.157 37.304)',\n '900': 'oklch(40.8% 0.123 38.172)',\n '950': 'oklch(26.6% 0.079 36.259)',\n },\n amber: {\n '50': 'oklch(98.7% 0.022 95.277)',\n '100': 'oklch(96.2% 0.059 95.617)',\n '200': 'oklch(92.4% 0.12 95.746)',\n '300': 'oklch(87.9% 0.169 91.605)',\n '400': 'oklch(82.8% 0.189 84.429)',\n '500': 'oklch(76.9% 0.188 70.08)',\n '600': 'oklch(66.6% 0.179 58.318)',\n '700': 'oklch(55.5% 0.163 48.998)',\n '800': 'oklch(47.3% 0.137 46.201)',\n '900': 'oklch(41.4% 0.112 45.904)',\n '950': 'oklch(27.9% 0.077 45.635)',\n },\n yellow: {\n '50': 'oklch(98.7% 0.026 102.212)',\n '100': 'oklch(97.3% 0.071 103.193)',\n '200': 'oklch(94.5% 0.129 101.54)',\n '300': 'oklch(90.5% 0.182 98.111)',\n '400': 'oklch(85.2% 0.199 91.936)',\n '500': 'oklch(79.5% 0.184 86.047)',\n '600': 'oklch(68.1% 0.162 75.834)',\n '700': 'oklch(55.4% 0.135 66.442)',\n '800': 'oklch(47.6% 0.114 61.907)',\n '900': 'oklch(42.1% 0.095 57.708)',\n '950': 'oklch(28.6% 0.066 53.813)',\n },\n lime: {\n '50': 'oklch(98.6% 0.031 120.757)',\n '100': 'oklch(96.7% 0.067 122.328)',\n '200': 'oklch(93.8% 0.127 124.321)',\n '300': 'oklch(89.7% 0.196 126.665)',\n '400': 'oklch(84.1% 0.238 128.85)',\n '500': 'oklch(76.8% 0.233 130.85)',\n '600': 'oklch(64.8% 0.2 131.684)',\n '700': 'oklch(53.2% 0.157 131.589)',\n '800': 'oklch(45.3% 0.124 130.933)',\n '900': 'oklch(40.5% 0.101 131.063)',\n '950': 'oklch(27.4% 0.072 132.109)',\n },\n green: {\n '50': 'oklch(98.2% 0.018 155.826)',\n '100': 'oklch(96.2% 0.044 156.743)',\n '200': 'oklch(92.5% 0.084 155.995)',\n '300': 'oklch(87.1% 0.15 154.449)',\n '400': 'oklch(79.2% 0.209 151.711)',\n '500': 'oklch(72.3% 0.219 149.579)',\n '600': 'oklch(62.7% 0.194 149.214)',\n '700': 'oklch(52.7% 0.154 150.069)',\n '800': 'oklch(44.8% 0.119 151.328)',\n '900': 'oklch(39.3% 0.095 152.535)',\n '950': 'oklch(26.6% 0.065 152.934)',\n },\n emerald: {\n '50': 'oklch(97.9% 0.021 166.113)',\n '100': 'oklch(95% 0.052 163.051)',\n '200': 'oklch(90.5% 0.093 164.15)',\n '300': 'oklch(84.5% 0.143 164.978)',\n '400': 'oklch(76.5% 0.177 163.223)',\n '500': 'oklch(69.6% 0.17 162.48)',\n '600': 'oklch(59.6% 0.145 163.225)',\n '700': 'oklch(50.8% 0.118 165.612)',\n '800': 'oklch(43.2% 0.095 166.913)',\n '900': 'oklch(37.8% 0.077 168.94)',\n '950': 'oklch(26.2% 0.051 172.552)',\n },\n teal: {\n '50': 'oklch(98.4% 0.014 180.72)',\n '100': 'oklch(95.3% 0.051 180.801)',\n '200': 'oklch(91% 0.096 180.426)',\n '300': 'oklch(85.5% 0.138 181.071)',\n '400': 'oklch(77.7% 0.152 181.912)',\n '500': 'oklch(70.4% 0.14 182.503)',\n '600': 'oklch(60% 0.118 184.704)',\n '700': 'oklch(51.1% 0.096 186.391)',\n '800': 'oklch(43.7% 0.078 188.216)',\n '900': 'oklch(38.6% 0.063 188.416)',\n '950': 'oklch(27.7% 0.046 192.524)',\n },\n cyan: {\n '50': 'oklch(98.4% 0.019 200.873)',\n '100': 'oklch(95.6% 0.045 203.388)',\n '200': 'oklch(91.7% 0.08 205.041)',\n '300': 'oklch(86.5% 0.127 207.078)',\n '400': 'oklch(78.9% 0.154 211.53)',\n '500': 'oklch(71.5% 0.143 215.221)',\n '600': 'oklch(60.9% 0.126 221.723)',\n '700': 'oklch(52% 0.105 223.128)',\n '800': 'oklch(45% 0.085 224.283)',\n '900': 'oklch(39.8% 0.07 227.392)',\n '950': 'oklch(30.2% 0.056 229.695)',\n },\n sky: {\n '50': 'oklch(97.7% 0.013 236.62)',\n '100': 'oklch(95.1% 0.026 236.824)',\n '200': 'oklch(90.1% 0.058 230.902)',\n '300': 'oklch(82.8% 0.111 230.318)',\n '400': 'oklch(74.6% 0.16 232.661)',\n '500': 'oklch(68.5% 0.169 237.323)',\n '600': 'oklch(58.8% 0.158 241.966)',\n '700': 'oklch(50% 0.134 242.749)',\n '800': 'oklch(44.3% 0.11 240.79)',\n '900': 'oklch(39.1% 0.09 240.876)',\n '950': 'oklch(29.3% 0.066 243.157)',\n },\n blue: {\n '50': 'oklch(97% 0.014 254.604)',\n '100': 'oklch(93.2% 0.032 255.585)',\n '200': 'oklch(88.2% 0.059 254.128)',\n '300': 'oklch(80.9% 0.105 251.813)',\n '400': 'oklch(70.7% 0.165 254.624)',\n '500': 'oklch(62.3% 0.214 259.815)',\n '600': 'oklch(54.6% 0.245 262.881)',\n '700': 'oklch(48.8% 0.243 264.376)',\n '800': 'oklch(42.4% 0.199 265.638)',\n '900': 'oklch(37.9% 0.146 265.522)',\n '950': 'oklch(28.2% 0.091 267.935)',\n },\n indigo: {\n '50': 'oklch(96.2% 0.018 272.314)',\n '100': 'oklch(93% 0.034 272.788)',\n '200': 'oklch(87% 0.065 274.039)',\n '300': 'oklch(78.5% 0.115 274.713)',\n '400': 'oklch(67.3% 0.182 276.935)',\n '500': 'oklch(58.5% 0.233 277.117)',\n '600': 'oklch(51.1% 0.262 276.966)',\n '700': 'oklch(45.7% 0.24 277.023)',\n '800': 'oklch(39.8% 0.195 277.366)',\n '900': 'oklch(35.9% 0.144 278.697)',\n '950': 'oklch(25.7% 0.09 281.288)',\n },\n violet: {\n '50': 'oklch(96.9% 0.016 293.756)',\n '100': 'oklch(94.3% 0.029 294.588)',\n '200': 'oklch(89.4% 0.057 293.283)',\n '300': 'oklch(81.1% 0.111 293.571)',\n '400': 'oklch(70.2% 0.183 293.541)',\n '500': 'oklch(60.6% 0.25 292.717)',\n '600': 'oklch(54.1% 0.281 293.009)',\n '700': 'oklch(49.1% 0.27 292.581)',\n '800': 'oklch(43.2% 0.232 292.759)',\n '900': 'oklch(38% 0.189 293.745)',\n '950': 'oklch(28.3% 0.141 291.089)',\n },\n purple: {\n '50': 'oklch(97.7% 0.014 308.299)',\n '100': 'oklch(94.6% 0.033 307.174)',\n '200': 'oklch(90.2% 0.063 306.703)',\n '300': 'oklch(82.7% 0.119 306.383)',\n '400': 'oklch(71.4% 0.203 305.504)',\n '500': 'oklch(62.7% 0.265 303.9)',\n '600': 'oklch(55.8% 0.288 302.321)',\n '700': 'oklch(49.6% 0.265 301.924)',\n '800': 'oklch(43.8% 0.218 303.724)',\n '900': 'oklch(38.1% 0.176 304.987)',\n '950': 'oklch(29.1% 0.149 302.717)',\n },\n fuchsia: {\n '50': 'oklch(97.7% 0.017 320.058)',\n '100': 'oklch(95.2% 0.037 318.852)',\n '200': 'oklch(90.3% 0.076 319.62)',\n '300': 'oklch(83.3% 0.145 321.434)',\n '400': 'oklch(74% 0.238 322.16)',\n '500': 'oklch(66.7% 0.295 322.15)',\n '600': 'oklch(59.1% 0.293 322.896)',\n '700': 'oklch(51.8% 0.253 323.949)',\n '800': 'oklch(45.2% 0.211 324.591)',\n '900': 'oklch(40.1% 0.17 325.612)',\n '950': 'oklch(29.3% 0.136 325.661)',\n },\n pink: {\n '50': 'oklch(97.1% 0.014 343.198)',\n '100': 'oklch(94.8% 0.028 342.258)',\n '200': 'oklch(89.9% 0.061 343.231)',\n '300': 'oklch(82.3% 0.12 346.018)',\n '400': 'oklch(71.8% 0.202 349.761)',\n '500': 'oklch(65.6% 0.241 354.308)',\n '600': 'oklch(59.2% 0.249 0.584)',\n '700': 'oklch(52.5% 0.223 3.958)',\n '800': 'oklch(45.9% 0.187 3.815)',\n '900': 'oklch(40.8% 0.153 2.432)',\n '950': 'oklch(28.4% 0.109 3.907)',\n },\n rose: {\n '50': 'oklch(96.9% 0.015 12.422)',\n '100': 'oklch(94.1% 0.03 12.58)',\n '200': 'oklch(89.2% 0.058 10.001)',\n '300': 'oklch(81% 0.117 11.638)',\n '400': 'oklch(71.2% 0.194 13.428)',\n '500': 'oklch(64.5% 0.246 16.439)',\n '600': 'oklch(58.6% 0.253 17.585)',\n '700': 'oklch(51.4% 0.222 16.935)',\n '800': 'oklch(45.5% 0.188 13.697)',\n '900': 'oklch(41% 0.159 10.272)',\n '950': 'oklch(27.1% 0.105 12.094)',\n },\n}; ","// complete spacing scale\n// Default theme reference\n\nexport const spacing = {\n px: '1px',\n 0: '0px',\n 0.5: '0.125rem',\n 1: '0.25rem',\n 1.5: '0.375rem',\n 2: '0.5rem',\n 2.5: '0.625rem',\n 3: '0.75rem',\n 3.5: '0.875rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n 14: '3.5rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 28: '7rem',\n 32: '8rem',\n 36: '9rem',\n 40: '10rem',\n 44: '11rem',\n 48: '12rem',\n 52: '13rem',\n 56: '14rem',\n 60: '15rem',\n 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n 112: '28rem',\n 128: '32rem',\n}; ","// complete borderRadius scale\n// Default theme reference\n\nexport const borderRadius = {\n none: '0px',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n}; ","// Complete fontSize scale\n// Default theme reference\n\nexport const fontSize = {\n xs: ['0.75rem', 'calc(1 / 0.75)'],\n sm: ['0.875rem', 'calc(1.25 / 0.875)'],\n base: ['1rem', 'calc(1.5 / 1)'],\n lg: ['1.125rem', 'calc(1.75 / 1.125)'],\n xl: ['1.25rem', 'calc(1.75 / 1.25)'],\n '2xl': ['1.5rem', 'calc(2 / 1.5)'],\n '3xl': ['1.875rem', 'calc(2.25 / 1.875)'],\n '4xl': ['2.25rem', 'calc(2.5 / 2.25)'],\n '5xl': ['3rem', '1'],\n '6xl': ['3.75rem', '1'],\n '7xl': ['4.5rem', '1'],\n '8xl': ['6rem', '1'],\n '9xl': ['8rem', '1'],\n}; ","// complete fontFamily list\n// Default theme reference\n\nexport const fontFamily = {\n sans: [\n 'ui-sans-serif',\n 'system-ui',\n 'sans-serif',\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol',\n 'Noto Color Emoji',\n ],\n serif: [\n 'ui-serif',\n 'Georgia',\n 'Cambria',\n 'Times New Roman',\n 'Times',\n 'serif',\n ],\n mono: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n 'Liberation Mono',\n 'Courier New',\n 'monospace',\n ],\n}; ","// complete fontWeight scale\n// Default theme reference\n\nexport const fontWeight = {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n}; ","// complete lineHeight scale\n// Default theme reference\n\nexport const lineHeight = {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n 3: '.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n}; ","// Complete boxShadow map\n// Default theme reference\n\nexport const boxShadow = {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px 0 rgb(0 0 0 / 0.06)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -1px rgb(0 0 0 / 0.06)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -2px rgb(0 0 0 / 0.05)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 10px 10px -5px rgb(0 0 0 / 0.04)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n}; ","// complete zIndex scale\n// Default theme reference\n\nexport const zIndex = {\n auto: 'auto',\n 0: '0',\n 10: '10',\n 20: '20',\n 30: '30',\n 40: '40',\n 50: '50',\n}; ","// complete opacity scale\n// Default theme reference\n\nexport const opacity = {\n 0: '0',\n 5: '0.05',\n 10: '0.1',\n 20: '0.2',\n 25: '0.25',\n 30: '0.3',\n 40: '0.4',\n 50: '0.5',\n 60: '0.6',\n 70: '0.7',\n 75: '0.75',\n 80: '0.8',\n 90: '0.9',\n 95: '0.95',\n 100: '1',\n}; ","// complete transitionProperty map\n// Default theme reference\n\nexport const transitionProperty = {\n none: 'none',\n all: 'all',\n DEFAULT: 'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n opacity: 'opacity',\n shadow: 'box-shadow',\n transform: 'transform',\n}; ","// complete transitionTimingFunction scale\n// Default theme reference\n\nexport const transitionTimingFunction = {\n DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n 'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n}; ","// complete transitionDuration scale\n// Default theme reference\n\nexport const transitionDuration = {\n DEFAULT: '150ms',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n}; ","// complete transitionDelay scale\n// Default theme reference\n\nexport const transitionDelay = {\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n}; ","// animation preset\n// default theme reference\n\nexport const animations = {\n spin: 'spin 1s linear infinite',\n ping: 'ping 1s cubic-bezier(0,0,0.2,1) infinite',\n pulse: 'pulse 2s cubic-bezier(0.4,0,0.6,1) infinite',\n bounce: 'bounce 1s infinite',\n}; ","// keyframes preset\n// default theme reference\n\nexport const keyframes = {\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n ping: {\n \"75%\": {\n transform: 'scale(2)',\n opacity: '0',\n },\n \"100%\": {\n transform: 'scale(2)',\n opacity: '0',\n },\n },\n pulse: {\n \"50%\": {\n opacity: '0.5',\n },\n },\n bounce: {\n \"0%\": {\n transform: 'translateY(-25%)',\n 'animation-timing-function': 'cubic-bezier(0.8,0,1,1)',\n },\n \"100%\": {\n transform: 'none',\n 'animation-timing-function': 'cubic-bezier(0,0,0.2,1)',\n },\n },\n}; ","// animationVars preset\n// default theme reference\nimport { animations } from './animations';\n\nexport const animationVars = {\n '--animate-spin': animations.spin,\n '--animate-ping': animations.ping,\n '--animate-pulse': animations.pulse,\n '--animate-bounce': animations.bounce,\n}; ","// responsive design documentation\n\nexport const breakpoints = {\n sm: '40rem',\n md: '48rem',\n lg: '64rem',\n xl: '80rem',\n '2xl': '96rem',\n};","// responsive design documentation\n\nexport const container = {\n '3xs': '16rem',\n '2xs': '18rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n};","// complete letterSpacing scale\n// Default theme reference\n\nexport const letterSpacing = {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0em',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n}; ","export const blur = {\n DEFAULT: '0px',\n sm: '4px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n '2xl': '24px',\n '3xl': '32px',\n '4xl': '40px',\n '5xl': '48px',\n};","// default theme structure implemented to closely match reference\n// Default theme reference\n\nimport { colors } from './colors';\nimport { spacing } from './spacing';\nimport { borderRadius } from './border-radius';\nimport { fontSize } from './font-size';\nimport { fontFamily } from './font-family';\nimport { fontWeight } from './font-weight';\nimport { lineHeight } from './line-height';\nimport { boxShadow } from './box-shadow';\nimport { zIndex } from './z-index';\nimport { opacity } from './opacity';\nimport { transitionProperty } from './transition-property';\nimport { transitionTimingFunction } from './transition-timing-function';\nimport { transitionDuration } from './transition-duration';\nimport { transitionDelay } from './transition-delay';\nimport { animations } from './animations';\nimport { keyframes } from './keyframes';\nimport { animationVars } from './animation-vars';\nimport { breakpoints } from './breakpoints';\nimport { container } from './container';\nimport { letterSpacing } from './letter-spacing';\nimport { blur } from './blur';\n\nexport interface UserTheme {\n [key: string]: unknown;\n}\n\nexport const defaultTheme = {\n colors,\n spacing,\n borderRadius,\n breakpoints,\n container,\n fontSize,\n fontFamily,\n fontWeight,\n letterSpacing,\n lineHeight,\n boxShadow,\n zIndex,\n opacity,\n transitionProperty,\n transitionTimingFunction,\n transitionDuration,\n transitionDelay,\n animations,\n keyframes,\n animationVars,\n blur,\n} as UserTheme; ","// Collection of converters from theme categories to CSS variables (v4 style)\n// Each function takes a category theme object and returns Record<string, string>\n// Namespace/naming rules aligned with v4\n\nimport type { Context, Theme } from './context';\n\n// Global CSS variable prefix helper\nlet CSS_VAR_PREFIX = '--bcss-';\n\nfunction normalizePrefix(prefix: string): string {\n let p = prefix.trim();\n if (!p.startsWith('--')) p = `--${p}`;\n if (!p.endsWith('-')) p = `${p}-`;\n return p;\n}\n\nexport function setVarPrefix(prefix: string | undefined): void {\n if (typeof prefix !== 'string' || prefix.trim() === '') {\n CSS_VAR_PREFIX = '--bcss-';\n return;\n }\n CSS_VAR_PREFIX = normalizePrefix(prefix);\n}\n\nexport function getVarName(key: string, ctx?: Context): string {\n const configured = ctx?.config('cssVarPrefix');\n const prefix = typeof configured === 'string' && configured.trim()\n ? normalizePrefix(configured)\n : ctx ? '--bcss-' : CSS_VAR_PREFIX;\n return `${prefix}${key}`;\n}\n\n// Aliases for brevity\nexport const varName = getVarName;\nexport function v(key: string, ctx?: Context): string { return getVarName(key, ctx); }\n\nfunction escapeKey(key: string): string {\n return key.replace('.', '\\\\.');\n}\n\n/**\n * colors: { blue: { 500: '#123456' }, red: { 500: '#ff0000' } }\n * → { '--color-blue-500': '#123456', '--color-red-500': '#ff0000' }\n */\nexport function colorsToCssVars(colors?: Record<string, unknown>): Record<string, string> {\n if (!colors) return {};\n const result: Record<string, string> = {};\n function walk(obj: Record<string, unknown>, prefix: string[] = []) {\n for (const key in obj) {\n const value = obj[key] as unknown;\n if (typeof value === 'object' && value !== null) {\n walk(value as Record<string, unknown>, [...prefix, key]);\n } else {\n const varName = '--color-' + [...prefix, key].join('-');\n result[varName] = value as string;\n }\n }\n }\n walk(colors);\n return result;\n}\n\n/**\n * boxShadow: { lg: '0 10px 15px ...', ... }\n * → { '--shadow-lg': '...' }\n */\nexport function boxShadowToCssVars(boxShadow?: Record<string, unknown>): Record<string, string> {\n if (!boxShadow) return {};\n const result: Record<string, string> = {};\n for (const key in boxShadow) {\n result[`--shadow-${key}`] = boxShadow[key] as string;\n }\n return result;\n}\n\n/**\n * fontSize: { xs: ['0.75rem', '1rem'], ... }\n * → { '--text-xs': '0.75rem', '--text-xs--line-height': '1rem' }\n */\nexport function fontSizeToCssVars(fontSize?: Record<string, unknown>): Record<string, string> {\n if (!fontSize) return {};\n const result: Record<string, string> = {};\n for (const key in fontSize) {\n const value = fontSize[key] as unknown;\n if (Array.isArray(value)) {\n result[`--text-${key}`] = value[0] as string;\n if (value[1]) result[`--text-${key}--line-height`] = value[1];\n } else {\n result[`--text-${key}`] = value as string;\n }\n }\n // console.log('[fontSizeToCssVars] result', result);\n return result;\n}\n\n/**\n * fontWeight: { normal: '400', ... }\n * → { '--font-weight-normal': '400' }\n */\nexport function fontWeightToCssVars(fontWeight?: Record<string, unknown>): Record<string, string> {\n if (!fontWeight) return {};\n const result: Record<string, string> = {};\n for (const key in fontWeight) {\n result[`--font-weight-${key}`] = fontWeight[key] as string;\n }\n return result;\n}\n\n/**\n * fontFamily: { sans: ['ui-sans-serif', ...], ... }\n * → { '--font-sans-0': 'ui-sans-serif', ... }\n */\nexport function fontFamilyToCssVars(fontFamily?: Record<string, unknown>): Record<string, string> {\n if (!fontFamily) return {};\n const result: Record<string, string> = {};\n for (const key in fontFamily) {\n const value = fontFamily[key] as unknown;\n if (Array.isArray(value)) {\n result[`--font-${key}`] = value.join(', ');\n } else {\n result[`--font-${key}`] = value as string;\n }\n }\n return result;\n}\n\n/**\n * letterSpacing: { tight: '0.05em', ... }\n * → { '--letter-spacing-tight': '0.05em' }\n */\nexport function letterSpacingToCssVars(letterSpacing?: Record<string, unknown>): Record<string, string> {\n if (!letterSpacing) return {};\n const result: Record<string, string> = {};\n for (const key in letterSpacing) {\n result[`--letter-spacing-${key}`] = letterSpacing[key] as string;\n }\n return result;\n}\n\n/**\n * spacing: { 0: '0px', 1: '0.25rem', ... }\n * → { '--spacing-0': '0px', '--spacing-1': '0.25rem', ... }\n */\nexport function spacingToCssVars(spacing?: Record<string, unknown>): Record<string, string> {\n if (!spacing) return {};\n const result: Record<string, string> = {};\n for (const key in spacing) {\n result[`--spacing-${escapeKey(key)}`] = spacing[key] as string;\n }\n return result;\n}\n\n/**\n * borderRadius: { xl: '0.75rem', ... }\n * → { '--radius-xl': '0.75rem' }\n */\nexport function borderRadiusToCssVars(borderRadius?: Record<string, unknown>): Record<string, string> {\n if (!borderRadius) return {};\n const result: Record<string, string> = {};\n for (const key in borderRadius) {\n result[`--radius-${escapeKey(key)}`] = borderRadius[key] as string;\n }\n return result;\n}\n\n/**\n * zIndex: { 10: '10', ... }\n * → { '--z-10': '10' }\n */\nexport function zIndexToCssVars(zIndex?: Record<string, unknown>): Record<string, string> {\n if (!zIndex) return {};\n const result: Record<string, string> = {};\n for (const key in zIndex) {\n result[`--z-${escapeKey(key)}`] = String(zIndex[key] as number);\n }\n return result;\n}\n\n/**\n * opacity: { 50: '0.5', ... }\n * → { '--opacity-50': '0.5' }\n */\nexport function opacityToCssVars(opacity?: Record<string, unknown>): Record<string, string> {\n if (!opacity) return {};\n const result: Record<string, string> = {};\n for (const key in opacity) {\n result[`--opacity-${escapeKey(key)}`] = String(opacity[key] as number);\n }\n return result;\n}\n\n/**\n * animations: { spin: 'spin 1s linear infinite', ... }\n * → { '--animate-spin': 'spin 1s linear infinite' }\n */\nexport function animationToCssVars(animations?: Record<string, unknown>): Record<string, string> {\n if (!animations) return {};\n const result: Record<string, string> = {};\n for (const key in animations) {\n result[`--animate-${escapeKey(key)}`] = animations[key] as string;\n }\n return result;\n}\n\n/**\n * keyframes: { spin: { 'to': { transform: 'rotate(360deg)' } }, ... }\n * → Requires separate @keyframes block generation (variable conversion omitted here)\n */\nexport function keyframesToCss(keyframes?: Record<string, unknown>): string {\n if (!keyframes) return '';\n let css = '';\n for (const name in keyframes) {\n const frames = keyframes[name] as unknown;\n css += `@keyframes ${name} {\\n`;\n for (const step in frames as Record<string, unknown>) {\n css += ` ${step} {`;\n const props = (frames as Record<string, unknown>)[step] as Record<string, unknown>;\n for (const prop in props) {\n css += ` ${prop}: ${props[prop] as string};`;\n }\n css += ' }\\n';\n }\n css += '}\\n';\n }\n return css;\n}\n\n/**\n * transition: { duration: '150ms', ... }\n * → { '--transition-duration': '150ms' }\n */\nexport function transitionTimingFunctionToCssVars(transition: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in transition) {\n\n if (key === 'DEFAULT') {\n result[`--default-transition-timing-function`] = transition[key];\n } else {\n result[`--transition-timing-function-${escapeKey(key)}`] = transition[key];\n }\n }\n return result;\n}\n\n/**\n * transitionDuration: { DEFAULT: '150ms', ... }\n * → { '--default-transition-duration': '150ms' }\n */\nexport function transitionDurationToCssVars(transitionDuration: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in transitionDuration) {\n if (key === 'DEFAULT') {\n result[`--default-transition-duration`] = transitionDuration[key];\n } else {\n result[`--transition-duration-${escapeKey(key)}`] = transitionDuration[key];\n }\n }\n return result;\n}\n\n\n/**\n * transitionDelay: { DEFAULT: '0ms', ... }\n * → { '--default-transition-delay': '0ms' }\n */\nexport function transitionDelayToCssVars(transitionDelay: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const key in transitionDelay) {\n if (key === 'DEFAULT') {\n result[`--default-transition-delay`] = transitionDelay[key];\n } else {\n result[`--transition-delay-${escapeKey(key)}`] = transitionDelay[key];\n }\n } \n return result;\n}\n\n/**\n * blur: { DEFAULT: '0px', ... }\n * → { '--default-blur': '0px' }\n */\nexport function blurToCssVars(blur: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in blur) {\n if (key === 'DEFAULT') {\n result[`--default-blur`] = blur[key];\n } else {\n result[`--blur-${escapeKey(key)}`] = blur[key];\n }\n }\n return result;\n}\n\n/**\n * container: { 1: '1rem', ... }\n * → { '--container-1': '1rem' }\n */\nexport function containerToCssVars(container: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key in container) {\n result[`--container-${escapeKey(key)}`] = container[key];\n }\n return result;\n}\n\n/**\n * themeToCssVarsAll: merge CSS variables from major theme categories\n */\nexport function themeToCssVarsAll(theme: Theme): Record<string, string> {\n return {\n ...colorsToCssVars(theme.colors! as Record<string, unknown>),\n ...boxShadowToCssVars(theme.boxShadow! as Record<string, unknown>),\n ...fontSizeToCssVars(theme.fontSize! as Record<string, unknown>),\n ...fontWeightToCssVars(theme.fontWeight! as Record<string, unknown>),\n ...fontFamilyToCssVars(theme.fontFamily! as Record<string, unknown>),\n ...letterSpacingToCssVars(theme.letterSpacing! as Record<string, unknown>),\n '--spacing': (theme.spacing! as Record<string, unknown>)['1'] as string,\n ...spacingToCssVars(theme.spacing! as Record<string, unknown>),\n ...containerToCssVars(theme.container! as Record<string, string>),\n ...borderRadiusToCssVars(theme.borderRadius! as Record<string, unknown>),\n ...zIndexToCssVars(theme.zIndex! as Record<string, unknown>),\n ...opacityToCssVars(theme.opacity! as Record<string, unknown>),\n ...animationToCssVars(theme.animations! as Record<string, unknown>),\n ...transitionTimingFunctionToCssVars(theme.transitionTimingFunction! as Record<string, string>),\n ...transitionDurationToCssVars(theme.transitionDuration! as Record<string, string>),\n ...transitionDelayToCssVars(theme.transitionDelay! as Record<string, string>),\n ...blurToCssVars(theme.blur! as Record<string, string>),\n // keyframes handled separately\n };\n}\n\n/**\n * toCssVarsBlock: convert Record<string, string> → :root { ... } CSS block string\n */\nexport function toCssVarsBlock(vars: Record<string, string>, extra: string = ''): string {\n return ':root,:host {\\n' + Object.entries(vars).map(([k, v]) => ` ${k}: ${v};`).join('\\n') + '\\n}\\n' + extra + '\\n';\n}\n","// BaroCSS Preflight CSS as TypeScript variables\n// This eliminates the need for ?raw imports and improves compatibility\n\nexport const preflightMinimalCSS = `\n/* BaroCSS Preflight - Minimal Reset */\n/* ================================= */\n\n/* Box sizing rules */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Remove default margin and padding */\n* {\n margin: 0;\n padding: 0;\n}\n\n/* Set core body defaults */\nbody {\n min-height: 100vh;\n scroll-behavior: smooth;\n text-rendering: optimizeSpeed;\n line-height: 1.5;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n list-style: none;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n max-width: 100%;\n display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n \n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n`;\n\nexport const preflightStandardCSS = `\n/* BaroCSS Preflight - Standard Reset */\n/* ================================== */\n\n/* Box sizing rules */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Remove default margin and padding */\n* {\n margin: 0;\n padding: 0;\n}\n\n/* Set core body defaults */\nbody {\n min-height: 100vh;\n scroll-behavior: smooth;\n text-rendering: optimizeSpeed;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n list-style: none;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n max-width: 100%;\n display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n \n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* Additional standard resets */\nhtml {\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n}\n\n/* Remove the gray background on active links in IE 10 */\na {\n background-color: transparent;\n}\n\n/* Add the correct font weight in Chrome, Edge, and Safari */\nb,\nstrong {\n font-weight: bolder;\n}\n\n/* Prevent sub and sup elements from affecting the line height */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Improve media defaults */\nsvg {\n vertical-align: middle;\n}\n\n/* Remove border on iframe */\niframe {\n border: 0;\n}\n\n/* Table defaults */\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n/* Form element defaults */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Remove the inner border and padding in Firefox */\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/* Restore the focus styles unset by the previous rule */\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Correct the padding in Firefox */\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/* Remove padding so developers aren't caught out when they zero out fieldset elements */\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\n/* Add the correct vertical alignment in Chrome, Firefox, and Opera */\nprogress {\n vertical-align: baseline;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n`;\n\nexport const preflightFullCSS = `\n/* BaroCSS Preflight - Full Reset */\n/* =============================== */\n\n/* Box sizing rules */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Remove default margin and padding */\n* {\n margin: 0;\n padding: 0;\n}\n\n/* Set core body defaults */\nbody {\n min-height: 100vh;\n scroll-behavior: smooth;\n text-rendering: optimizeSpeed;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n list-style: none;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n max-width: 100%;\n display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n \n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure, \nfooter, header, hgroup, menu, nav, section {\n display: block;\n}\n\n/* Additional full resets */\nhtml {\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n}\n\n/* Remove the gray background on active links in IE 10 */\na {\n background-color: transparent;\n text-decoration: none;\n color: inherit;\n}\n\n/* Add the correct font weight in Chrome, Edge, and Safari */\nb,\nstrong {\n font-weight: bolder;\n}\n\n/* Prevent sub and sup elements from affecting the line height */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Improve media defaults */\nsvg {\n vertical-align: middle;\n}\n\n/* Remove border on iframe */\niframe {\n border: 0;\n}\n\n/* Table defaults */\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n/* Form element defaults */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Remove the inner border and padding in Firefox */\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/* Restore the focus styles unset by the previous rule */\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/* Correct the padding in Firefox */\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/* Remove padding so developers aren't caught out when they zero out fieldset elements */\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\n/* Add the correct vertical alignment in Chrome, Firefox, and Opera */\nprogress {\n vertical-align: baseline;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/* Remove the default vertical scrollbar in IE */\ntextarea {\n overflow: auto;\n}\n\n/* Correct the cursor style of increment and decrement buttons in Chrome */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* Remove the inner padding in Chrome and Safari on macOS */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/* Additional full reset styles */\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\n/* Add the correct font size in all browsers */\nsmall {\n font-size: 80%;\n}\n\n/* Prevent overflow of the container in all browsers */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Add the correct display in IE 9 */\naudio,\nvideo {\n display: inline-block;\n}\n\n/* Add the correct display in IE */\ntemplate {\n display: none;\n}\n\n/* Hidden attribute */\n[hidden] {\n display: none;\n}\n\n/* Focus styles */\n:focus {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n}\n\n/* Skip link for accessibility */\n.skip-link {\n position: absolute;\n top: -40px;\n left: 6px;\n background: #000;\n color: white;\n padding: 8px;\n text-decoration: none;\n z-index: 100;\n}\n\n.skip-link:focus {\n top: 6px;\n}\n\n/* Print styles */\n@media print {\n *,\n *::before,\n *::after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n \n a,\n a:visited {\n text-decoration: underline;\n }\n \n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n \n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n \n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n \n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n \n thead {\n display: table-header-group;\n }\n \n tr,\n img {\n page-break-inside: avoid;\n }\n \n img {\n max-width: 100% !important;\n }\n \n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n \n h2,\n h3 {\n page-break-after: avoid;\n }\n}\n`;\n","import { defaultTheme } from \"../theme\";\nimport { keyframesToCss, themeToCssVarsAll, toCssVarsBlock } from \"./cssVars\";\nimport { getModifier, getUtility } from './registry';\nimport { clearContextCaches, initializeContextState } from './contextState';\nimport { preflightMinimalCSS, preflightStandardCSS, preflightFullCSS } from \"../css/preflight\";\n\ntype PreflightLevel = 'minimal' | 'standard' | 'full' | true | false;\n\ntype Function = (...args: unknown[]) => unknown;\ntype ContextRecord = Record<string, unknown>;\n\nexport function getPreflightCSS(level: PreflightLevel = true): string {\n if (level === 'minimal') {\n return preflightMinimalCSS;\n } else if (level === 'standard') {\n return preflightStandardCSS;\n } else if (level === 'full') {\n return preflightFullCSS;\n } else if (level === true) {\n return preflightFullCSS;\n } else if (level === false) {\n return '';\n }\n return '';\n}\n\n// Types for theme/config/context\nexport interface Theme {\n extend?: Theme;\n [namespace: string]: unknown;\n}\n\nexport interface Config {\n prefix?: string; // prefix for class names, default is 'barocss-'\n cssVarPrefix?: string; // prefix for generated CSS custom properties, default '--bcss-'\n /**\n * Modern dark mode strategy\n * - 'media': uses @media (prefers-color-scheme: dark)\n * - 'class': uses .dark selector\n * - string[]: custom selectors (e.g. ['class', '[data-theme=\"dark\"]'])\n */\n darkMode?: 'media' | 'class' | string[];\n theme?: Theme;\n presets?: { theme: Theme }[];\n\n /**\n * Whether to include preflight CSS\n * - 'minimal': Minimal preflight CSS\n * - 'standard': Standard preflight CSS\n * - 'full': Full preflight CSS\n * - true: Full preflight CSS (default)\n * - false: No preflight CSS\n * \n * default: true (full preflight)\n */\n preflight?: PreflightLevel;\n /**\n * @deprecated Contexts now own their caches. Creating a context does not\n * clear caches that belong to another context.\n */\n clearCacheOnContextChange?: boolean;\n [key: string]: unknown;\n}\n\nexport const defaultConfig: Config = {\n prefix: 'barocss-',\n darkMode: 'media', // same as default\n};\n\nexport interface Context {\n hasPreset: (category: string, preset: string) => boolean;\n theme: (...path: (string|number)[]) => unknown;\n config: (...path: (string|number)[]) => unknown;\n themeToCssVars: (prefix?: string) => string;\n // Safe API for extending theme from plugins\n extendTheme: (category: string, values: Record<string, unknown> | Function) => void;\n getPreflightCSS: (level?: PreflightLevel) => string;\n}\n\n// Deep merge utility\nexport function deepMerge<T extends Record<string, unknown>>(base: T, override: Partial<T>): T {\n const result: Record<string, unknown> = {};\n const keys = new Set([\n ...Object.keys(base || {}),\n ...Object.keys(override || {}),\n ]);\n for (const key of keys) {\n const skey = String(key);\n const baseVal = base && typeof base === 'object' ? (base as T)[skey] : undefined;\n const overrideVal = override && typeof override === 'object' ? (override as T)[skey] : undefined;\n if (\n overrideVal &&\n typeof overrideVal === 'object' &&\n !Array.isArray(overrideVal)\n ) {\n result[skey] = deepMerge(\n (typeof baseVal === 'object' && baseVal !== null) ? baseVal as T : {} as T,\n overrideVal\n );\n } else if (overrideVal !== undefined) {\n result[skey] = overrideVal;\n } else {\n result[skey] = baseVal;\n }\n }\n return result as T;\n}\n\nexport type ThemeGetter = (...path: (string|number)[]) => unknown;\n\nconst themeLookupsInProgress = new WeakMap<Theme, Set<string>>();\n\n/**\n * Modern theme getter for BAROCSS\n *\n * - Supports category-level (first path segment) function values only.\n * - If the category (e.g., 'spacing', 'colors') is a function, it will be executed with the theme getter as argument.\n * - This allows dynamic theme extension and plugin-style patterns, e.g.:\n * spacing: (theme) => ({ ...theme('spacing'), '72': '18rem' })\n * - Leaf (property) functions are NOT supported and will be ignored (returns undefined).\n * - Infinite recursion is prevented: If the exact same path is being resolved recursively (directly or indirectly), undefined is returned for that call.\n * - Category-level functions can safely call theme('category.otherKey') for dynamic references.\n * - Only true recursion on the same path is blocked.\n * - All theme lookups (theme('category.key')) will always re-execute the category function if present, ensuring dynamic resolution.\n *\n * @param themeObj - The theme object (possibly with category functions)\n * @param path - Path segments (string or number), or dot-path string (e.g. 'colors.red.500')\n * @returns The resolved theme value, or undefined if not found or if a leaf function is encountered\n *\n * @example\n * const theme = {\n * spacing: (theme) => ({ 1: '0.25rem', 2: theme('spacing.1') }),\n * };\n * themeGetter(theme, 'spacing.2'); // '0.25rem'\n *\n * @example\n * // Infinite recursion is prevented:\n * const theme = {\n * spacing: (theme) => theme('spacing.1'),\n * };\n * themeGetter(theme, 'spacing.1'); // undefined\n */\nexport function themeGetter(themeObj: Theme, ...path: (string | number)[]): unknown {\n // The theme getter function itself, passed to category functions for dynamic resolution\n const theme: ThemeGetter = (...args: (string | number)[]) => themeGetter(themeObj, ...args);\n\n // Parse the path: support both dot-path string and array of segments\n let keys: (string | number)[] = [];\n if (path.length === 1 && typeof path[0] === 'string' && path[0].includes('.')) {\n keys = path[0].split('.');\n } else {\n if (path[0] === 'colors' && typeof path[1] === 'string' && path[1].includes('-')) {\n // colors.red-500 → colors.red.500 (only for color names with numbers)\n // But custom-blue should remain as custom-blue\n const colorKey = path[1] as string;\n if (colorKey.match(/^[a-zA-Z]+-\\d+$/)) {\n // Only split if it's a pattern like \"red-500\", \"blue-600\", etc.\n keys = colorKey.split('-');\n keys = [path[0], ...keys];\n } else {\n // For custom keys like \"custom-blue\", keep as is\n keys = path;\n }\n } else {\n keys = path;\n }\n }\n if (keys.length === 0) return undefined;\n\n // Infinite recursion protection: track currently resolving full paths\n // If the exact same path is being resolved recursively, return undefined\n let inProgress = themeLookupsInProgress.get(themeObj);\n if (!inProgress) {\n inProgress = new Set();\n themeLookupsInProgress.set(themeObj, inProgress);\n }\n const pathKey = keys.join('.');\n if (inProgress.has(pathKey)) return undefined;\n inProgress.add(pathKey);\n\n try {\n // Get the category value (could be a function or object)\n let value = themeObj[keys[0]];\n // If the category is a function, execute it with the theme getter.\n if (typeof value === 'function') {\n value = value(theme);\n }\n\n for (let i = 1; i < keys.length; i++) {\n if (value == null) return undefined;\n value = (value as Record<string, unknown>)[keys[i]];\n }\n\n // Leaf functions are not supported.\n if (typeof value === 'function') return undefined;\n return value;\n } finally {\n inProgress.delete(pathKey);\n }\n}\n\n// config getter\nexport function configGetter(config: ContextRecord, ...path: (string|number)[]): unknown {\n let keys: (string|number)[] = [];\n if (path.length === 1 && typeof path[0] === 'string' && path[0].includes('.')) {\n keys = path[0].split('.');\n } else {\n keys = path;\n }\n return keys.reduce((acc: unknown, key) => (acc ? (acc as Record<string, unknown>)[key] : undefined), config) as unknown as ContextRecord;\n}\n\n// hasPreset\nexport function hasPreset(themeObj: Theme, category: string, preset: string): boolean {\n return (themeObj[category] as string[])?.includes?.(preset) as boolean;\n}\n\n// resolveTheme\nexport function resolveTheme(config: Config): Theme {\n let theme: Theme = {};\n if (config.presets) {\n for (const preset of config.presets) {\n if (preset.theme) {\n theme = deepMerge(theme, preset.theme);\n }\n }\n }\n if (config.theme) {\n const { extend, ...overrideTheme } = config.theme as Theme;\n theme = deepMerge(theme, overrideTheme); // switch from shallowMerge to deepMerge\n if (extend) {\n theme = deepMerge(theme, extend);\n }\n }\n return theme;\n}\n\n\nexport function themeToCssVars(theme: Theme): string {\n const vars = themeToCssVarsAll(theme);\n // console.log('[themeToCssVars] vars', vars);\n const result = toCssVarsBlock(vars, `\n${keyframesToCss((theme.keyframes || {}) as Record<string, unknown>)}\n`);\n\n// console.log('[themeToCssVars] result', result);\n\n return result;\n}\n\n// createContext\nexport function createContext(configObj: Config): Context {\n // Automatically include defaultTheme as the base preset\n const configWithDefaults = {\n presets: [\n { theme: defaultTheme }, // always include defaultTheme as base preset\n ...(configObj.presets || [])\n ],\n ...configObj\n };\n const themeObj = resolveTheme(configWithDefaults);\n\n // 1. Declare ctx first as an object\n const ctx: Context = {\n hasPreset: (category: string, preset: string): boolean => {\n const result = hasPreset(themeObj, category, preset);\n // console.log(`[hasPreset] category: ${category}, preset: ${preset} =>`, result);\n return result as boolean;\n },\n theme: (...args) => {\n const result = themeGetter(themeObj, ...args);\n // console.log(`[theme] path:`, args, `=>`, result);\n return result;\n },\n config: (...args) => {\n const result = configGetter(configWithDefaults, ...args);\n // console.log(`[config] path:`, args, `=>`, result);\n return result;\n },\n themeToCssVars: () => themeToCssVars(themeObj),\n // Safe API for theme extension from plugins\n extendTheme: (category: string, values: Record<string, unknown> | Function) => {\n // console.log(`[extendTheme] category: ${category}, values:`, values);\n \n if (typeof values === 'function') {\n // If it's a function, execute with theme getter\n const themeFunction = values as (theme: ThemeGetter) => unknown;\n const result = themeFunction(ctx.theme);\n if (result && typeof result === 'object') {\n // Merge with existing values\n const existingValues = themeObj[category] || {} as Record<string, unknown>;\n themeObj[category] = {\n ...existingValues,\n ...result\n };\n // console.log(`[extendTheme] function result merged for ${category}:`, themeObj[category]);\n }\n } else if (typeof values === 'object' && values !== null && !Array.isArray(values)) {\n // Get existing category values\n const existingValues = themeObj[category] || {} as Record<string, unknown>;\n \n // Merge existing and new values\n themeObj[category] = {\n ...existingValues,\n ...values\n };\n // console.log(`[extendTheme] merged ${category}:`, themeObj[category]);\n } else {\n // console.warn(`[extendTheme] Invalid values for category ${category}:`, values);\n }\n clearContextCaches(ctx);\n },\n getPreflightCSS: (level: PreflightLevel = true) => {\n return getPreflightCSS(level);\n }\n };\n\n // 2. Property assignment (functions reference themeObj, configWithDefaults, etc.)\n // ctx.hasPreset = (category: string, preset: string) => {\n // const result = hasPreset(themeObj, category, preset);\n // console.log(`[hasPreset] category: ${category}, preset: ${preset} =>`, result);\n // return result;\n // };\n // ctx.theme = (...args) => {\n // const value = themeGetter(themeObj, ...args);\n // console.log(`[theme] path:`, args, '=>', value);\n // return value;\n // };\n // ctx.config = (...args) => {\n // const value = configGetter(configWithDefaults, ...args);\n // console.log(`[config] path:`, args, '=>', value);\n // return value;\n // };\n // ctx.plugins = configWithDefaults.plugins ?? [];\n // ctx.themeToCssVars = () => themeToCssVars(themeObj);\n\n initializeContextState(ctx, getUtility(), getModifier());\n return ctx;\n}\n","// Value parsing helpers inspired by value-parser.ts\n\n/**\n * Extracts the value from [arbitrary] syntax, or returns null if not arbitrary.\n */\nexport function parseArbitraryValue(input: string): string | null {\n return input.startsWith('[') && input.endsWith(']') ? input.slice(1, -1) : null;\n}\n\n/**\n * Parses a fraction string (e.g., '1/2') and returns a percentage string (e.g., '50%'), or null if not a valid fraction.\n */\nexport function parseFraction(input: string): string | null {\n if (input.includes('/')) {\n const [num, denom] = input.split('/').map(Number);\n if (!isNaN(num) && !isNaN(denom) && denom !== 0) {\n return `${(num / denom) * 100}%`;\n }\n }\n return null;\n}\n\n/**\n * Returns the input if it is a valid non-negative integer string, else null.\n * \n * @example\n * parseNumber(\"10\") // \"10\"\n * parseNumber(\"-10\") // \"-10\"\n * parseNumber(\"10.5\") // \"10.5\"\n */\nexport function parseNumber(input: string): string | null {\n // Accept integers and decimals (e.g., 1, -2, 1.5, -0.25)\n return /^-?\\d+(?:\\.\\d+)?$/.test(input) ? input : null;\n}\n\n/**\n * Returns the input if it is a valid non-negative integer string, else null.\n * \n * @example\n * parseInteger(\"10\") // \"10\"\n * parseInteger(\"-10\") // null\n * parseInteger(\"10.5\") // null\n */\nexport function parseInteger(input: string): string | null {\n return /^-?\\d+$/.test(input) ? input : null;\n}\n\n/**\n * Returns the input if it is a valid length string, else null.\n */\nexport function parseLength(input: string): string | null {\n return /^\\d+(px|em|rem|vh|vw|vmin|vmax|%|in|cm|mm|pt|pc|ex|ch|fr)$/.test(input) ? input : null;\n}\n\n/**\n * Returns the input without a leading '-' if negative, else null.\n */\nexport function parseNegative(input: string): string | null {\n return input.startsWith('-') ? input.slice(1) : null;\n}\n\n/**\n * Returns the input if it is a valid CSS var() expression, else null.\n */\nexport function parseVar(input: string): string | null {\n return input.startsWith('var(') && input.endsWith(')') ? input : null;\n}\n\n/**\n * Unified parser for fraction or number, with options for percent or repeat syntax.\n * - percent: if true, returns percentage for fraction (e.g., '1/2' -> '50%')\n * - repeat: if true, returns repeat() for number (e.g., '3' -> 'repeat(3, minmax(0, 1fr))')\n */\nexport function parseFractionOrNumber(value: string, opts: { percent?: boolean; repeat?: boolean } = {}): string | null {\n if (/^\\d+$/.test(value)) {\n if (opts.repeat) return `repeat(${value}, minmax(0, 1fr))`;\n return value;\n }\n if (value.includes('/')) {\n const [numerator, denominator] = value.split('/').map(Number);\n if (!isNaN(numerator) && !isNaN(denominator) && denominator !== 0) {\n const result = numerator / denominator;\n if (opts.percent) return `${result * 100}%`;\n return result.toString();\n }\n }\n return null;\n} \n\nconst CSS_COLOR_NAMES = new Set([\n \"aliceblue\",\n \"antiquewhite\",\n \"aqua\",\n \"aquamarine\",\n \"azure\",\n \"beige\",\n \"bisque\",\n \"black\",\n \"blanchedalmond\",\n \"blue\",\n \"blueviolet\",\n \"brown\",\n \"burlywood\",\n \"cadetblue\",\n \"chartreuse\",\n \"chocolate\",\n \"coral\",\n \"cornflowerblue\",\n \"cornsilk\",\n \"crimson\",\n \"cyan\",\n \"darkblue\",\n \"darkcyan\",\n \"darkgoldenrod\",\n \"darkgray\",\n \"darkgreen\",\n \"darkgrey\",\n \"darkkhaki\",\n \"darkmagenta\",\n \"darkolivegreen\",\n \"darkorange\",\n \"darkorchid\",\n \"darkred\",\n \"darksalmon\",\n \"darkseagreen\",\n \"darkslateblue\",\n \"darkslategray\",\n \"darkslategrey\",\n \"darkturquoise\",\n \"darkviolet\",\n \"deeppink\",\n \"deepskyblue\",\n \"dimgray\",\n \"dimgrey\",\n \"dodgerblue\",\n \"firebrick\",\n \"floralwhite\",\n \"forestgreen\",\n \"fuchsia\",\n \"gainsboro\",\n \"ghostwhite\",\n \"gold\",\n \"goldenrod\",\n \"gray\",\n \"grey\",\n \"green\",\n \"greenyellow\",\n \"honeydew\",\n \"hotpink\",\n \"indianred\",\n \"indigo\",\n \"ivory\",\n \"khaki\",\n \"lavender\",\n \"lavenderblush\",\n \"lawngreen\",\n \"lemonchiffon\",\n \"lightblue\",\n \"lightcoral\",\n \"lightcyan\",\n \"lightgoldenrodyellow\",\n \"lightgray\",\n \"lightgreen\",\n \"lightgrey\",\n \"lightpink\",\n \"lightsalmon\",\n \"lightseagreen\",\n \"lightskyblue\",\n \"lightslategray\",\n \"lightslategrey\",\n \"lightsteelblue\",\n \"lightyellow\",\n \"lime\",\n \"limegreen\",\n \"linen\",\n \"magenta\",\n \"maroon\",\n \"mediumaquamarine\",\n \"mediumblue\",\n \"mediumorchid\",\n \"mediumpurple\",\n \"mediumseagreen\",\n \"mediumslateblue\",\n \"mediumspringgreen\",\n \"mediumturquoise\",\n \"mediumvioletred\",\n \"midnightblue\",\n \"mintcream\",\n \"mistyrose\",\n \"moccasin\",\n \"navajowhite\",\n \"navy\",\n \"oldlace\",\n \"olive\",\n \"olivedrab\",\n \"orange\",\n \"orangered\",\n \"orchid\",\n \"palegoldenrod\",\n \"palegreen\",\n \"paleturquoise\",\n \"palevioletred\",\n \"papayawhip\",\n \"peachpuff\",\n \"peru\",\n \"pink\",\n \"plum\",\n \"powderblue\",\n \"purple\",\n \"red\",\n \"rosybrown\",\n \"royalblue\",\n \"saddlebrown\",\n \"salmon\",\n \"sandybrown\",\n \"seagreen\",\n \"seashell\",\n \"sienna\",\n \"silver\",\n \"skyblue\",\n \"slateblue\",\n \"slategray\",\n \"slategrey\",\n \"snow\",\n \"springgreen\",\n \"steelblue\",\n \"tan\",\n \"teal\",\n \"thistle\",\n \"tomato\",\n \"turquoise\",\n \"violet\",\n \"wheat\",\n \"white\",\n \"whitesmoke\",\n \"yellow\",\n \"yellowgreen\",\n]);\n\n/**\n * Returns the input if it is a valid color string, else null.\n *\n * #rgb, #rgba, #rrggbb, #rrggbbaa, rgb(r, g, b), rgb(r, g, b, a), hsl(h, s, l), hsl(h, s, l, a), hwb(h, w, b), hwb(h, w, b, a), lab(l, a, b), lab(l, a, b, a), lch(l, c, h), lch(l, c, h, a), oklab(l, a, b), oklab(l, a, b, a), oklch(l, c, h), oklch(l, c, h, a), color-mix(in oklab, var(--color-blue-500) 60%, transparent)\n */\nexport function parseColor(input: string): string | null {\n\n // CSS named colors\n if (CSS_COLOR_NAMES.has(input.toLowerCase())) {\n return input;\n }\n\n if (input.startsWith('color:var(')) {\n return input.slice(6);\n }\n\n if (input.startsWith('color:')) {\n return parseColor(input.slice(6));\n }\n\n // hex\n if (input.startsWith('#') && input.length === 4) {\n return `#${input.slice(1)}`;\n }\n if (input.startsWith('#') && input.length === 5) {\n return `#${input.slice(1)}`;\n }\n if (input.startsWith('#') && input.length === 7) {\n return `#${input.slice(1)}`;\n }\n if (input.startsWith('#') && input.length === 9) {\n return `#${input.slice(1)}`;\n }\n\n\n // rgb\n if (input.startsWith('rgb(')) {\n return input.slice(4, -1);\n }\n\n // rgba\n if (input.startsWith('rgba(')) {\n return input.slice(5, -1);\n }\n\n // hsl\n if (input.startsWith('hsl(')) {\n return input.slice(4, -1);\n }\n\n // hsla\n if (input.startsWith('hsla(')) {\n return input.slice(5, -1);\n }\n\n // hwb\n if (input.startsWith('hwb(')) {\n return input.slice(4, -1);\n }\n\n // lab\n if (input.startsWith('lab(')) {\n return input.slice(4, -1);\n }\n\n // lch\n if (input.startsWith('lch(')) {\n return input.slice(4, -1);\n }\n\n // oklab\n if (input.startsWith('oklab(')) {\n return input.slice(5, -1);\n }\n\n // oklch\n if (input.startsWith('oklch(')) {\n return input.slice(6, -1);\n }\n\n // color-mix\n if (input.startsWith('color-mix(')) {\n return input.slice(9, -1);\n }\n\n\n return null;\n}","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Accent Color Utilities ---\n// accent-color documentation\n\n// Theme color utilities (e.g. accent-inherit, accent-blue-500)\n// (Assume theme color registration is handled elsewhere, or extend as needed)\n\nstaticUtility(\"accent-inherit\", [[\"accent-color\", \"inherit\"]], { category: 'interactivity' });\nstaticUtility(\"accent-current\", [[\"accent-color\", \"currentColor\"]], { category: 'interactivity' });\nstaticUtility(\"accent-transparent\", [[\"accent-color\", \"transparent\"]], { category: 'interactivity' });\n\n// Functional: arbitrary value (accent-[value])\nfunctionalUtility({\n name: \"accent\",\n themeKeys: [\"colors\"],\n supportsOpacity: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\n \"accent-color\",\n `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`\n ),\n ]),\n decl(\"accent-color\", value),\n ];\n }\n\n return [decl(\"accent-color\", `var(--color-${extra.realThemeValue})`)];\n }\n\n return [decl(\"accent-color\", value)];\n },\n handleCustomProperty: (value) => [decl(\"accent-color\", `var(${value})`)],\n description: \"accent-color utility (static, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n\n// --- Appearance Utilities ---\n// appearance documentation\n\n// appearance-none: removes native form control styling\nstaticUtility(\"appearance-none\", [[\"appearance\", \"none\"]], { category: 'interactivity' });\n// appearance-auto: restores default browser styling\nstaticUtility(\"appearance-auto\", [[\"appearance\", \"auto\"]], { category: 'interactivity' });\n\n// --- Caret Color Utilities ---\n// caret-color documentation\n\n// Static caret colors\nstaticUtility(\"caret-inherit\", [[\"caret-color\", \"inherit\"]], { category: 'interactivity' });\nstaticUtility(\"caret-current\", [[\"caret-color\", \"currentColor\"]], { category: 'interactivity' });\nstaticUtility(\"caret-transparent\", [[\"caret-color\", \"transparent\"]], { category: 'interactivity' });\n\n// Theme color utilities (e.g. caret-blue-500)\n// (Assume theme color registration is handled elsewhere)\n\n// Functional: arbitrary value (caret-[value]) and custom property (caret-(--my-caret))\nfunctionalUtility({\n name: \"caret\",\n themeKeys: [\"colors\"],\n supportsOpacity: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\n \"caret-color\",\n `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`\n ),\n ]),\n decl(\"caret-color\", value),\n ];\n }\n\n return [decl(\"caret-color\", `var(--color-${extra.realThemeValue})`)];\n }\n return [decl(\"caret-color\", value)];\n },\n handleCustomProperty: (value) => [decl(\"caret-color\", `var(${value})`)],\n description:\n \"caret-color utility (static, theme, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n\n// --- Color Scheme Utilities ---\n// color-scheme documentation\n\n// scheme-normal: color-scheme: normal;\nstaticUtility(\"scheme-normal\", [[\"color-scheme\", \"normal\"]], { category: 'interactivity' });\n// scheme-dark: color-scheme: dark;\nstaticUtility(\"scheme-dark\", [[\"color-scheme\", \"dark\"]], { category: 'interactivity' });\n// scheme-light: color-scheme: light;\nstaticUtility(\"scheme-light\", [[\"color-scheme\", \"light\"]], { category: 'interactivity' });\n// scheme-light-dark: color-scheme: light dark;\nstaticUtility(\"scheme-light-dark\", [[\"color-scheme\", \"light dark\"]], { category: 'interactivity' });\n// scheme-only-dark: color-scheme: only dark;\nstaticUtility(\"scheme-only-dark\", [[\"color-scheme\", \"only dark\"]], { category: 'interactivity' });\n// scheme-only-light: color-scheme: only light;\nstaticUtility(\"scheme-only-light\", [[\"color-scheme\", \"only light\"]], { category: 'interactivity' });\n\n// --- Cursor Utilities ---\n// cursor documentation\n\n// Static cursor values\n[\n \"auto\",\n \"default\",\n \"pointer\",\n \"wait\",\n \"text\",\n \"move\",\n \"help\",\n \"not-allowed\",\n \"none\",\n \"context-menu\",\n \"progress\",\n \"cell\",\n \"crosshair\",\n \"vertical-text\",\n \"alias\",\n \"copy\",\n \"no-drop\",\n \"grab\",\n \"grabbing\",\n \"all-scroll\",\n \"col-resize\",\n \"row-resize\",\n \"n-resize\",\n \"e-resize\",\n \"s-resize\",\n \"w-resize\",\n \"ne-resize\",\n \"nw-resize\",\n \"se-resize\",\n \"sw-resize\",\n \"ew-resize\",\n \"ns-resize\",\n \"nesw-resize\",\n \"nwse-resize\",\n \"zoom-in\",\n \"zoom-out\",\n].forEach((cursor) => {\n staticUtility(`cursor-${cursor}`, [[\"cursor\", cursor]], { category: 'interactivity' });\n});\n\n// Functional: custom property (cursor-(--my-cursor)) and arbitrary value (cursor-[value])\nfunctionalUtility({\n name: \"cursor\",\n prop: \"cursor\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"cursor utility (static, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n\n// --- Field Sizing Utilities ---\n// field-sizing documentation\n\n// field-sizing-fixed: field-sizing: fixed;\nstaticUtility(\"field-sizing-fixed\", [[\"field-sizing\", \"fixed\"]], { category: 'interactivity' });\n// field-sizing-content: field-sizing: content;\nstaticUtility(\"field-sizing-content\", [[\"field-sizing\", \"content\"]], { category: 'interactivity' });\n\n// --- Pointer Events Utilities ---\n// pointer-events documentation\n\n// pointer-events-auto: pointer-events: auto;\nstaticUtility(\"pointer-events-auto\", [[\"pointer-events\", \"auto\"]], { category: 'interactivity' });\n// pointer-events-none: pointer-events: none;\nstaticUtility(\"pointer-events-none\", [[\"pointer-events\", \"none\"]], { category: 'interactivity' });\n\n// --- Resize Utilities ---\n// resize documentation\n\n// resize: resize: both;\nstaticUtility(\"resize\", [[\"resize\", \"both\"]], { category: 'interactivity' });\n// resize-x: resize: horizontal;\nstaticUtility(\"resize-x\", [[\"resize\", \"horizontal\"]], { category: 'interactivity' });\n// resize-y: resize: vertical;\nstaticUtility(\"resize-y\", [[\"resize\", \"vertical\"]], { category: 'interactivity' });\n// resize-none: resize: none;\nstaticUtility(\"resize-none\", [[\"resize\", \"none\"]], { category: 'interactivity' });\n\n// --- Scroll Behavior Utilities ---\n// scroll-behavior documentation\n\n// scroll-auto: scroll-behavior: auto;\nstaticUtility(\"scroll-auto\", [[\"scroll-behavior\", \"auto\"]], { category: 'interactivity' });\n// scroll-smooth: scroll-behavior: smooth;\nstaticUtility(\"scroll-smooth\", [[\"scroll-behavior\", \"smooth\"]], { category: 'interactivity' });\n\n// --- Scroll Snap Align Utilities ---\n// scroll-snap-align documentation\nstaticUtility(\"snap-start\", [[\"scroll-snap-align\", \"start\"]], { category: 'interactivity' });\nstaticUtility(\"snap-end\", [[\"scroll-snap-align\", \"end\"]], { category: 'interactivity' });\nstaticUtility(\"snap-center\", [[\"scroll-snap-align\", \"center\"]], { category: 'interactivity' });\nstaticUtility(\"snap-align-none\", [[\"scroll-snap-align\", \"none\"]], { category: 'interactivity' });\n\n// --- Scroll Snap Stop Utilities ---\n// scroll-snap-stop documentation\nstaticUtility(\"snap-normal\", [[\"scroll-snap-stop\", \"normal\"]], { category: 'interactivity' });\nstaticUtility(\"snap-always\", [[\"scroll-snap-stop\", \"always\"]], { category: 'interactivity' });\n\n// --- Scroll Snap Type Utilities ---\n// scroll-snap-type documentation\nstaticUtility(\"snap-none\", [[\"scroll-snap-type\", \"none\"]], { category: 'interactivity' });\nstaticUtility(\"snap-x\", [[\"scroll-snap-type\", \"x var(--baro-scroll-snap-strictness)\"]], { category: 'interactivity' });\nstaticUtility(\"snap-y\", [[\"scroll-snap-type\", \"y var(--baro-scroll-snap-strictness)\"]], { category: 'interactivity' });\nstaticUtility(\"snap-both\", [[\"scroll-snap-type\", \"both var(--baro-scroll-snap-strictness)\"]], { category: 'interactivity' });\nstaticUtility(\"snap-mandatory\", [[\"--baro-scroll-snap-strictness\", \"mandatory\"]], { category: 'interactivity' });\nstaticUtility(\"snap-proximity\", [[\"--baro-scroll-snap-strictness\", \"proximity\"]], { category: 'interactivity' });\n\n\n[\n [\"mt\", \"scroll-margin-top\"],\n [\"mr\", \"scroll-margin-right\"],\n [\"mb\", \"scroll-margin-bottom\"],\n [\"ml\", \"scroll-margin-left\"],\n [\"mx\", \"scroll-margin-inline\"],\n [\"my\", \"scroll-margin-block\"],\n [\"ms\", \"scroll-margin-inline-start\"],\n [\"me\", \"scroll-margin-inline-end\"],\n [\"m\", \"scroll-margin\"],\n].forEach(([name, prop]) => {\n functionalUtility({\n name: `scroll-${name}`,\n prop,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token, _extra) => {\n if (parseNumber(value) || token.negative) {\n return [decl(prop, `calc(var(--spacing) * ${value})`)];\n }\n return [decl(prop, value)];\n },\n handleCustomProperty: (value) => [decl(prop, `var(${value})`)],\n description: `${name} utility (static, arbitrary, custom property supported)`,\n category: \"interactivity\",\n });\n});\n\n\n\n\n\n[\n [\"pt\", \"scroll-padding-top\"],\n [\"pr\", \"scroll-padding-right\"],\n [\"pb\", \"scroll-padding-bottom\"],\n [\"pl\", \"scroll-padding-left\"],\n [\"px\", \"scroll-padding-inline\"],\n [\"py\", \"scroll-padding-block\"],\n [\"ps\", \"scroll-padding-inline-start\"],\n [\"pe\", \"scroll-padding-inline-end\"],\n [\"p\", \"scroll-padding\"],\n].forEach(([name, prop]) => {\n functionalUtility({\n name: `scroll-${name}`,\n prop,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token, _extra) => {\n if (parseNumber(value) || token.negative) {\n return [decl(prop, `calc(var(--spacing) * ${value})`)];\n }\n return [decl(prop, value)];\n },\n handleCustomProperty: (value) => [decl(prop, `var(${value})`)],\n description: `scroll-${name} utility (static, arbitrary, custom property supported)`,\n category: \"interactivity\",\n });\n});\n\n// --- Touch Action Utilities ---\n// touch-action documentation\nstaticUtility(\"touch-auto\", [[\"touch-action\", \"auto\"]], { category: 'interactivity' });\nstaticUtility(\"touch-none\", [[\"touch-action\", \"none\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-x\", [[\"touch-action\", \"pan-x\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-left\", [[\"touch-action\", \"pan-left\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-right\", [[\"touch-action\", \"pan-right\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-y\", [[\"touch-action\", \"pan-y\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-up\", [[\"touch-action\", \"pan-up\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pan-down\", [[\"touch-action\", \"pan-down\"]], { category: 'interactivity' });\nstaticUtility(\"touch-pinch-zoom\", [[\"touch-action\", \"pinch-zoom\"]], { category: 'interactivity' });\nstaticUtility(\"touch-manipulation\", [[\"touch-action\", \"manipulation\"]], { category: 'interactivity' });\n\n// --- User Select Utilities ---\n// user-select documentation\nstaticUtility(\"select-none\", [[\"user-select\", \"none\"]], { category: 'interactivity' });\nstaticUtility(\"select-text\", [[\"user-select\", \"text\"]], { category: 'interactivity' });\nstaticUtility(\"select-all\", [[\"user-select\", \"all\"]], { category: 'interactivity' });\nstaticUtility(\"select-auto\", [[\"user-select\", \"auto\"]], { category: 'interactivity' });\n\n// --- Will Change Utilities ---\n// will-change documentation\nstaticUtility(\"will-change-auto\", [[\"will-change\", \"auto\"]], { category: 'interactivity' });\nstaticUtility(\"will-change-scroll\", [[\"will-change\", \"scroll-position\"]], { category: 'interactivity' });\nstaticUtility(\"will-change-contents\", [[\"will-change\", \"contents\"]], { category: 'interactivity' });\nstaticUtility(\"will-change-transform\", [[\"will-change\", \"transform\"]], { category: 'interactivity' });\n\n// Functional: will-change-[value], will-change-(--custom-property)\nfunctionalUtility({\n name: \"will-change\",\n prop: \"will-change\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"will-change utility (static, arbitrary, custom property supported)\",\n category: \"interactivity\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Transition Property Utilities ---\n// transition-property documentation\n\n// Default variable\nconst defaultTiming = \"var(--default-transition-timing-function)\"; // cubic-bezier(0.4, 0, 0.2, 1)\nconst defaultDuration = \"var(--default-transition-duration)\"; // 150ms\n\n// transition\nstaticUtility(\"transition\", [\n [\n \"transition-property\",\n \"color, background-color, border-color, text-decoration-color, fill, stroke, --baro-gradient-from, --baro-gradient-via, --baro-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter\",\n ],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-all\nstaticUtility(\"transition-all\", [\n [\"transition-property\", \"all\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-colors\nstaticUtility(\"transition-colors\", [\n [\n \"transition-property\",\n \"color, background-color, border-color, text-decoration-color, fill, stroke, --baro-gradient-from, --baro-gradient-via, --baro-gradient-to\",\n ],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-opacity\nstaticUtility(\"transition-opacity\", [\n [\"transition-property\", \"opacity\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-shadow\nstaticUtility(\"transition-shadow\", [\n [\"transition-property\", \"box-shadow\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' });\n\n// transition-transform\nstaticUtility(\"transition-transform\", [\n [\"transition-property\", \"transform, translate, scale, rotate\"],\n [\"transition-timing-function\", defaultTiming],\n [\"transition-duration\", defaultDuration],\n], { category: 'transitions' } );\n\n\n// --- Transition Behavior ---\nstaticUtility(\"transition-normal\", [[\"transition-behavior\", \"normal\"]], { category: 'transitions' });\nstaticUtility(\"transition-discrete\", [[\"transition-behavior\", \"allow-discrete\"]], { category: 'transitions' }); \n\n// transition-none\nstaticUtility(\"transition-none\", [[\"transition-property\", \"none\"]], { category: 'transitions' });\n\n// transition-[value] (arbitrary value)\nfunctionalUtility({\n name: \"transition\",\n prop: \"transition-property\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n return [\n decl(\"transition-property\", value),\n decl(\"transition-timing-function\", defaultTiming),\n decl(\"transition-duration\", defaultDuration),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"transition-property\", `var(${value})`),\n decl(\"transition-timing-function\", defaultTiming),\n decl(\"transition-duration\", defaultDuration),\n ],\n description:\n \"transition-property utility (static, arbitrary value, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Transition Duration ---\nstaticUtility(\"duration-initial\", [[\"transition-duration\", \"initial\"]], { category: 'transitions' });\n\nfunctionalUtility({\n name: \"duration\",\n prop: \"transition-duration\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"transition-duration\", `${value}ms`)];\n }\n return [decl(\"transition-duration\", value)];\n },\n handleCustomProperty: (value) => [decl(\"transition-duration\", `var(${value})`)],\n description: \"transition-duration utility (static, number, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Transition Timing Function ---\nstaticUtility(\"ease-linear\", [[\"transition-timing-function\", \"linear\"]], { category: 'transitions' });\nstaticUtility(\"ease-in\", [[\"transition-timing-function\", \"var(--ease-in)\"]], { category: 'transitions' });\nstaticUtility(\"ease-out\", [[\"transition-timing-function\", \"var(--ease-out)\"]], { category: 'transitions' });\nstaticUtility(\"ease-in-out\", [[\"transition-timing-function\", \"var(--ease-in-out)\"]], { category: 'transitions' });\nstaticUtility(\"ease-initial\", [[\"transition-timing-function\", \"initial\"]], { category: 'transitions' });\n\nfunctionalUtility({\n name: \"ease\",\n prop: \"transition-timing-function\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n return [decl(\"transition-timing-function\", value)];\n },\n handleCustomProperty: (value) => [decl(\"transition-timing-function\", `var(${value})`)],\n description: \"transition-timing-function utility (static, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Transition Delay ---\nfunctionalUtility({\n name: \"delay\",\n prop: \"transition-delay\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"transition-delay\", `${value}ms`)];\n }\n return [decl(\"transition-delay\", value)];\n },\n handleCustomProperty: (value) => [decl(\"transition-delay\", `var(${value})`)],\n description: \"transition-delay utility (number, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n\n// --- Animation ---\nstaticUtility(\"animate-spin\", [\n [\"animation\", \"var(--animate-spin)\"],\n], { category: 'transitions' });\nstaticUtility(\"animate-ping\", [[\"animation\", \"var(--animate-ping)\"]], { category: 'transitions' });\nstaticUtility(\"animate-pulse\", [[\"animation\", \"var(--animate-pulse)\"]], { category: 'transitions' });\nstaticUtility(\"animate-bounce\", [[\"animation\", \"var(--animate-bounce)\"]], { category: 'transitions' });\nstaticUtility(\"animate-none\", [[\"animation\", \"none\"]], { category: 'transitions' } );\n\nfunctionalUtility({\n name: \"animate\",\n prop: \"animation\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (token.customProperty) {\n return [decl(\"animation\", `var(${value})`)];\n }\n return [decl(\"animation\", value)];\n },\n handleCustomProperty: (value) => [decl(\"animation\", `var(${value})`)],\n description: \"animation utility (static, arbitrary, custom property supported)\",\n category: \"transitions\",\n});\n","import { staticUtility } from \"../core/registry\";\nimport { functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Table Layout Utilities (border-collapse, border-separate) ---\nstaticUtility(\"border-collapse\", [[\"border-collapse\", \"collapse\"]], { category: 'table' });\nstaticUtility(\"border-separate\", [[\"border-collapse\", \"separate\"]], { category: 'table' });\n\n// --- Table Layout ---\nstaticUtility(\"table-auto\", [[\"table-layout\", \"auto\"]], { category: 'table' });\nstaticUtility(\"table-fixed\", [[\"table-layout\", \"fixed\"]], { category: 'table' });\n\n// --- Border Spacing ---\nfunctionalUtility({\n name: \"border-spacing-x\",\n prop: \"border-spacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"border-spacing\", `calc(var(--spacing) * ${value}) var(--baro-border-spacing-y)`)]\n }\n return [decl(\"border-spacing\", `${value} var(--baro-border-spacing-y)`)]\n },\n handleCustomProperty: (value) => [decl(\"border-spacing\", `var(${value}) var(--baro-border-spacing-y)`)],\n description: \"border-spacing-x utility (static, number, arbitrary, custom property supported)\",\n category: \"table\",\n});\n\nfunctionalUtility({\n name: \"border-spacing-y\",\n prop: \"border-spacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"border-spacing\", `var(--baro-border-spacing-x) calc(var(--spacing) * ${value})`)]\n }\n return [decl(\"border-spacing\", `var(--baro-border-spacing-x) ${value}`)]\n },\n handleCustomProperty: (value) => [decl(\"border-spacing\", `var(--baro-border-spacing-x) var(${value})`)],\n description: \"border-spacing-y utility (static, number, arbitrary, custom property supported)\",\n category: \"table\",\n}); \n\nfunctionalUtility({\n name: \"border-spacing\",\n prop: \"border-spacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"border-spacing\", `calc(var(--spacing) * ${value})`)];\n }\n return [decl(\"border-spacing\", value)];\n },\n handleCustomProperty: (value) => [decl(\"border-spacing\", `var(${value})`)],\n description: \"border-spacing utility (static, number, arbitrary, custom property supported)\",\n category: \"table\",\n });\n\n// --- Caption Side ---\nstaticUtility(\"caption-top\", [[\"caption-side\", \"top\"]], { category: 'table' });\nstaticUtility(\"caption-bottom\", [[\"caption-side\", \"bottom\"]], { category: 'table' });","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\nimport { parseColor } from \"../core/utils\";\n\n// --- Filter ---\nstaticUtility(\"filter-none\", [[\"filter\", \"none\"]], { category: 'effects' });\n\nfunctionalUtility({\n name: \"filter\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\nconst filters = () => {\n return decl(\"filter\", \"var(--baro-blur, ) var(--baro-brightness, ) var(--baro-contrast, ) var(--baro-grayscale, ) var(--baro-hue-rotate, ) var(--baro-invert, ) var(--baro-saturate, ) var(--baro-sepia, ) var(--baro-drop-shadow, )\");\n}\n\n// --- Blur ---\n[\n [\"blur-xs\", \"var(--blur-xs)\"],\n [\"blur-sm\", \"var(--blur-sm)\"],\n [\"blur-md\", \"var(--blur-md)\"],\n [\"blur-lg\", \"var(--blur-lg)\"],\n [\"blur-xl\", \"var(--blur-xl)\"],\n [\"blur-2xl\", \"var(--blur-2xl)\"],\n [\"blur-3xl\", \"var(--blur-3xl)\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [\n decl(\"--baro-blur\", `blur(${value})`),\n filters()\n ], { category: 'effects' });\n});\nstaticUtility(\"blur-none\", [decl(\"--baro-blur\", \"\"), filters()], { category: 'effects' });\n\nfunctionalUtility({\n name: \"blur\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.customProperty) return [decl(\"--baro-blur\", `blur(var(${value}))`), filters()];\n return [decl(\"--baro-blur\", `blur(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-blur\", `blur(var(${value}))`), filters()],\n description: \"blur filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Brightness ---\n\nfunctionalUtility({\n name: \"brightness\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (token.arbitrary) {\n return [decl(\"--baro-brightness\", `brightness(${value})`), filters()];\n }\n if (parseNumber(value)) {\n return [decl(\"--baro-brightness\", `brightness(${value}%)`), filters()];\n }\n if (token.customProperty)\n return [decl(\"--baro-brightness\", `brightness(var(${value}))`), filters()];\n return [decl(\"--baro-brightness\", `brightness(${value})`), filters()];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-brightness\", `brightness(var(${value}))`),\n filters()\n ],\n description:\n \"brightness filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Contrast ---\nfunctionalUtility({\n name: \"contrast\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.arbitrary) {\n return [decl(\"--baro-contrast\", `contrast(${value})`), filters()];\n }\n if (parseNumber(value)) {\n return [decl(\"--baro-contrast\", `contrast(${value}%)`), filters()];\n }\n if (token.customProperty)\n return [decl(\"--baro-contrast\", `contrast(var(${value}))`), filters()];\n return [decl(\"--baro-contrast\", `contrast(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-contrast\", `contrast(var(${value}))`), filters()],\n description:\n \"contrast filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Drop Shadow ---\n[\n [\"drop-shadow-xs\", \"xs\", '0 1px 1px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-sm\", \"sm\", '0 1px 2px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-md\", \"md\", '0 3px 3px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-lg\", \"lg\", '0 4px 4px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-xl\", \"xl\", '0 9px 7px var(--baro-drop-shadow-color, #0000001a)'],\n [\"drop-shadow-2xl\", \"2xl\", '0 25px 25px var(--baro-drop-shadow-color, #0000001a)'],\n].forEach(([name, size, sizeValue]) => {\n staticUtility(name as string, [\n decl(\"--baro-drop-shadow-size\", `drop-shadow(${sizeValue})`),\n decl(\"--baro-drop-shadow\", `var(--drop-shadow-${size})`),\n filters()\n ]);\n});\nstaticUtility(\"drop-shadow-none\", [decl(\"--baro-drop-shadow\", \"drop-shadow(0 0 #0000)\"), filters()]);\n\n// --- Drop Shadow Color ---\n// drop-shadow-inherit, drop-shadow-current, drop-shadow-transparent\n[\"inherit\", \"current\", \"transparent\"].forEach((name) => {\n staticUtility(`drop-shadow-${name}`, [\n decl(\"--baro-drop-shadow-color\", name === \"current\" ? \"currentColor\" : name),\n ]);\n});\n\n// drop-shadow-black, drop-shadow-white, drop-shadow-{color}-{shade}\n[\"black\", \"white\"].forEach((name) => {\n staticUtility(`drop-shadow-${name}`, [\n decl(\"--baro-drop-shadow-color\", `var(--color-${name})`),\n ]);\n});\n\n// drop-shadow-(color:--my-color)\nfunctionalUtility({\n name: \"drop-shadow\",\n themeKeys: ['colors'],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token, extra) => {\n if (extra?.realThemeValue) {\n return [decl(\"--baro-drop-shadow-color\", `var(--color-${extra.realThemeValue})`)];\n }\n\n if (parseColor(value)) {\n return [decl(\"--baro-drop-shadow-color\", value)];\n }\n\n return [\n decl(\"--baro-drop-shadow-size\", `drop-shadow(${value})`),\n decl(\"--baro-drop-shadow\", `var(--baro-drop-shadow-size)`),\n ];\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n return [\n decl(\"--baro-drop-shadow-color\", `var(${value.replace(\"color:\", \"\")})`),\n ];\n }\n\n return [\n decl(\"--baro-drop-shadow-size\", `drop-shadow(var(${value}))`),\n decl(\"--baro-drop-shadow\", `var(--baro-drop-shadow-size)`),\n ];\n },\n description:\n \"drop-shadow filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Grayscale ---\nstaticUtility(\"grayscale\", [decl(\"--baro-grayscale\", \"grayscale(100%)\"), filters()], { category: \"effects\" });\n\nfunctionalUtility({\n name: \"grayscale\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-grayscale\", `grayscale(${value}%)`), filters()];\n }\n return [decl(\"--baro-grayscale\", `grayscale(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-grayscale\", `grayscale(var(${value}))`), filters()],\n description: \"grayscale filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Hue Rotate ---\n\nfunctionalUtility({\n name: \"hue-rotate\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, _ctx, token) => {\n if (token.negative && parseNumber(token.value!)) {\n return [decl(\"--baro-hue-rotate\", `hue-rotate(calc(${token.value}deg * -1))`), filters()];\n }\n if (parseNumber(value)) {\n return [decl(\"--baro-hue-rotate\", `hue-rotate(${value}deg)`), filters()];\n }\n if (token.customProperty) return [decl(\"--baro-hue-rotate\", `hue-rotate(var(${value}))`), filters()];\n return [decl(\"--baro-hue-rotate\", `hue-rotate(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-hue-rotate\", `hue-rotate(var(${value}))`), filters()],\n description: \"hue-rotate filter utility (static, negative, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Invert ---\nstaticUtility(\"invert\", [decl(\"--baro-invert\", \"invert(100%)\"), filters()], { category: \"effects\" });\n\nfunctionalUtility({\n name: \"invert\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-invert\", `invert(${value}%)`), filters()];\n }\n\n return [decl(\"--baro-invert\", `invert(${value})`), filters()];\n },\n description: \"invert filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Saturate ---\nfunctionalUtility({\n name: \"saturate\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-saturate\", `saturate(${value}%)`), filters()];\n }\n return [decl(\"--baro-saturate\", `saturate(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-saturate\", `saturate(var(${value}))`), filters()],\n description: \"saturate filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Sepia ---\nstaticUtility(\"sepia\", [decl(\"--baro-sepia\", \"sepia(100%)\"), filters()], { category: \"effects\" });\n\nfunctionalUtility({\n name: \"sepia\",\n prop: \"filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-sepia\", `sepia(${value}%)`), filters()];\n }\n return [decl(\"--baro-sepia\", `sepia(${value})`), filters()];\n },\n handleCustomProperty: (value) => [decl(\"--baro-sepia\", `sepia(var(${value}))`), filters()],\n description: \"sepia filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport { parseNumber } from \"../core/utils\";\n\nconst filters = () => {\n return [\n decl(\n \"-webkit-backdrop-filter\",\n \"var(--baro-backdrop-blur, ) var(--baro-backdrop-brightness, ) var(--baro-backdrop-contrast, ) var(--baro-backdrop-grayscale, ) var(--baro-backdrop-hue-rotate, ) var(--baro-backdrop-invert, ) var(--baro-backdrop-saturate, ) var(--baro-backdrop-sepia, )\"\n ),\n decl(\n \"backdrop-filter\",\n \"var(--baro-backdrop-blur, ) var(--baro-backdrop-brightness, ) var(--baro-backdrop-contrast, ) var(--baro-backdrop-grayscale, ) var(--baro-backdrop-hue-rotate, ) var(--baro-backdrop-invert, ) var(--baro-backdrop-saturate, ) var(--baro-backdrop-sepia, )\"\n ),\n ];\n};\n\n// --- Backdrop Filter ---\nstaticUtility(\n \"backdrop-filter\",\n [[\"backdrop-filter\", \"var(--baro-backdrop-filter)\"]],\n { category: \"effects\" }\n);\nstaticUtility(\"backdrop-filter-none\", [[\"backdrop-filter\", \"none\"]], {\n category: \"effects\",\n});\n\nfunctionalUtility({\n name: \"backdrop-filter\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Blur ---\n[\n [\"backdrop-blur-xs\", \"var(--blur-xs)\"],\n [\"backdrop-blur-sm\", \"var(--blur-sm)\"],\n [\"backdrop-blur-md\", \"var(--blur-md)\"],\n [\"backdrop-blur-lg\", \"var(--blur-lg)\"],\n [\"backdrop-blur-xl\", \"var(--blur-xl)\"],\n [\"backdrop-blur-2xl\", \"var(--blur-2xl)\"],\n [\"backdrop-blur-3xl\", \"var(--blur-3xl)\"],\n].forEach(([name, value]) => {\n staticUtility(\n name as string,\n [decl(\"--baro-backdrop-blur\", `blur(${value})`), ...filters()],\n { category: \"effects\" }\n );\n});\nstaticUtility(\n \"backdrop-blur-none\",\n [decl(\"--baro-backdrop-blur\", \"\"), ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-blur\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.customProperty)\n return [\n decl(\"--baro-backdrop-blur\", `blur(var(${value}))`),\n ...filters(),\n ];\n return [decl(\"--baro-backdrop-blur\", `blur(${value})`), ...filters()];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-blur\", `blur(var(${value}))`),\n ...filters(),\n ],\n description:\n \"blur filter utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Brightness ---\n\nfunctionalUtility({\n name: \"backdrop-brightness\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, token) => {\n if (token.arbitrary) {\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(${value})`),\n ...filters(),\n ];\n }\n\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(${value}%)`),\n ...filters(),\n ];\n }\n if (token.customProperty)\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(var(${value}))`),\n ...filters(),\n ];\n return [\n decl(\"--baro-backdrop-brightness\", `brightness(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-brightness\", `brightness(var(${value}))`),\n ...filters(),\n ],\n description:\n \"brightness filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Contrast ---\nfunctionalUtility({\n name: \"backdrop-contrast\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handle: (value, _ctx, token) => {\n if (token.arbitrary) {\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(${value})`),\n ...filters(),\n ];\n }\n\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(${value}%)`),\n ...filters(),\n ];\n }\n if (token.customProperty)\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(var(${value}))`),\n ...filters(),\n ];\n return [\n decl(\"--baro-backdrop-contrast\", `contrast(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-contrast\", `contrast(var(${value}))`),\n ...filters(),\n ],\n description:\n \"contrast filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Grayscale ---\nstaticUtility(\n \"backdrop-grayscale\",\n [[\"--baro-backdrop-grayscale\", \"grayscale(100%)\"], ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-grayscale\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-grayscale\", `grayscale(${value}%)`),\n ...filters(),\n ];\n }\n return [\n decl(\"--baro-backdrop-grayscale\", `grayscale(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-grayscale\", `grayscale(var(${value}))`),\n ...filters(),\n ],\n description:\n \"grayscale filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Hue Rotate ---\n\nfunctionalUtility({\n name: \"backdrop-hue-rotate\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, _ctx, token) => {\n if (token.negative && parseNumber(token.value!)) {\n return [\n decl(\n \"--baro-backdrop-hue-rotate\",\n `hue-rotate(calc(${token.value}deg * -1))`\n ),\n ...filters(),\n ];\n }\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-hue-rotate\", `hue-rotate(${value}deg)`),\n ...filters(),\n ];\n }\n return [\n decl(\"--baro-backdrop-hue-rotate\", `hue-rotate(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-hue-rotate\", `hue-rotate(var(${value}))`),\n ...filters(),\n ],\n description:\n \"hue-rotate filter utility (static, negative, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Invert ---\nstaticUtility(\n \"backdrop-invert\",\n [[\"--baro-backdrop-invert\", \"invert(100%)\"], ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-invert\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-invert\", `invert(${value}%)`),\n ...filters(),\n ];\n }\n\n return [decl(\"--baro-backdrop-invert\", `invert(${value})`), ...filters()];\n },\n description:\n \"invert filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Saturate ---\nfunctionalUtility({\n name: \"backdrop-saturate\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [\n decl(\"--baro-backdrop-saturate\", `saturate(${value}%)`),\n ...filters(),\n ];\n }\n return [\n decl(\"--baro-backdrop-saturate\", `saturate(${value})`),\n ...filters(),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-saturate\", `saturate(var(${value}))`),\n ...filters(),\n ],\n description:\n \"saturate filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Sepia ---\nstaticUtility(\n \"backdrop-sepia\",\n [[\"--baro-backdrop-sepia\", \"sepia(100%)\"], ...filters()],\n { category: \"effects\" }\n);\n\nfunctionalUtility({\n name: \"backdrop-sepia\",\n prop: \"backdrop-filter\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, _ctx, _token) => {\n if (parseNumber(value)) {\n return [decl(\"--baro-backdrop-sepia\", `sepia(${value}%)`), ...filters()];\n }\n return [decl(\"--baro-backdrop-sepia\", `sepia(${value})`), ...filters()];\n },\n handleCustomProperty: (value) => [\n decl(\"--baro-backdrop-sepia\", `sepia(var(${value}))`),\n ...filters(),\n ],\n description:\n \"sepia filter utility (static, number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport { parseColor, parseNumber } from \"../core/utils\";\n\n// --- Box Shadow ---\n// box-shadow documentation\n\n// Static shadow levels\n[\n [\"shadow-2xs\", \"var(--shadow-2xs)\"],\n [\"shadow-xs\", \"var(--shadow-xs)\"],\n [\"shadow-sm\", \"var(--shadow-sm)\"],\n [\"shadow\", \"var(--shadow-default)\"],\n [\"shadow-md\", \"var(--shadow-md)\"],\n [\"shadow-lg\", \"var(--shadow-lg)\"],\n [\"shadow-xl\", \"var(--shadow-xl)\"],\n [\"shadow-2xl\", \"var(--shadow-2xl)\"],\n [\"shadow-none\", \"0 0 #0000\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"box-shadow\", value as string]], { category: 'effects' });\n});\n\n// Static inset shadow levels\n[\n [\n \"inset-shadow-2xs\",\n \"inset 0 1px 2px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-xs\",\n \"inset 0 2px 4px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-sm\",\n \"inset 0 2px 4px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-md\",\n \"inset 0 4px 6px -1px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-lg\",\n \"inset 0 10px 15px -3px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-xl\",\n \"inset 0 20px 25px -5px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\n \"inset-shadow-2xl\",\n \"inset 0 25px 50px -12px var(--baro-inset-shadow-color, #0000000d)\",\n ],\n [\"inset-shadow-none\", \"0 0 #0000\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [\n [\"--baro-inset-shadow\", value as string],\n [\n \"box-shadow\",\n \"var(--baro-inset-shadow), var(--baro-inset-ring-shadow), var(--baro-ring-offset-shadow), var(--baro-ring-shadow), var(--baro-shadow)\",\n ],\n ], { category: 'effects' });\n});\n\n// --- Box Shadow Color (with opacity, custom property, arbitrary) ---\n// shadow-red-500, shadow-red-500/50, shadow-[#bada55]/80, shadow-(color:--my-shadow), shadow-inherit, etc.\n\nfunction createShadowThemeColor(\n key: string,\n main: string,\n opacity: string | undefined,\n realThemeValue: string\n) {\n let fallbackColor = main;\n const colorVar = `var(--color-${realThemeValue})`;\n let colorValue = colorVar;\n if (opacity) {\n colorValue = `color-mix(in oklab, color-mix(in oklab, ${colorVar} ${opacity}%, transparent) var(--baro-shadow-alpha),transparent)`;\n if (parseColor(main)) {\n if (main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallbackColor = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallbackColor = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n }\n }\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(key, colorValue),\n ]),\n decl(key, fallbackColor),\n ];\n}\n\n// shadow-color utilities\nfunctionalUtility({\n name: \"shadow\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\", \"shadows\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n\n // 1. Theme color (e.g. shadow-red-500/60)\n if (realThemeValue) {\n return createShadowThemeColor(\n \"--baro-shadow-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n\n // Custom property color: shadow-(color:--my-shadow)\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n if (opacity) {\n return [\n decl(\n \"--baro-shadow-color\",\n `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`\n ),\n ];\n }\n return [decl(\"--baro-shadow-color\", `var(${cp})`)];\n }\n\n // Arbitrary color: shadow-[#bada55] or shadow-[oklch(...)]\n if (token.arbitrary) {\n if (parseColor(main)) {\n if (opacity) {\n return [\n decl(\n \"--baro-shadow-color\",\n `color-mix(in oklab, ${main} ${opacity}%, transparent)`\n ),\n ];\n }\n\n return [decl(\"box-shadow\", main)];\n }\n\n return [decl(\"box-shadow\", main)];\n }\n\n // Special cases\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\"--baro-shadow-color\", main === \"current\" ? \"currentColor\" : main),\n ];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"box-shadow\", `var(${value})`)],\n});\n\n// inset-shadow-color utilities\nfunctionalUtility({\n name: \"inset-shadow\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\", \"shadows\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n\n // 1. Theme color (e.g. inset-shadow-red-500/60)\n if (realThemeValue) {\n return createShadowThemeColor(\n \"--baro-inset-shadow-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n\n // 2. Custom property color: inset-shadow-(color:--my-shadow)\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n let colorValue = `var(${cp})`;\n if (opacity) {\n colorValue = `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`;\n }\n return [decl(\"--baro-inset-shadow-color\", colorValue)];\n }\n\n // 3. Arbitrary color: inset-shadow-[#bada55] or inset-shadow-[oklch(...)]\n if (token.arbitrary) {\n if (parseColor(main)) {\n let colorValue = main;\n if (opacity) {\n colorValue = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n }\n return [decl(\"--baro-inset-shadow-color\", colorValue)];\n }\n\n return [decl(\"box-shadow\", `inset ${main}`)];\n }\n\n // 4. Special cases\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\n \"--baro-inset-shadow-color\",\n main === \"current\" ? \"currentColor\" : main\n ),\n ];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"box-shadow\", `var(${value})`)],\n});\n\n// --- Ring ( multi-variable) ---\n// ring-width documentation\n\n// Static ring width utilities\n[\n [\"ring\", \"1px\"],\n [\"ring-0\", \"0px\"],\n [\"ring-1\", \"1px\"],\n [\"ring-2\", \"2px\"],\n [\"ring-4\", \"4px\"],\n [\"ring-8\", \"8px\"],\n].forEach(([name, px]) => {\n staticUtility(name as string, [\n [\"--baro-ring-inset\", \"\"],\n [\"--baro-ring-offset-width\", \"0px\"],\n [\"--baro-ring-offset-color\", \"#fff\"],\n [\"--baro-ring-color\", \"rgb(59 130 246 / 0.5)\"], // default blue-500/50\n [\n \"--baro-ring-shadow\",\n `var(--baro-ring-inset) 0 0 0 calc(${px} + var(--baro-ring-offset-width)) var(--baro-ring-color, currentcolor)`,\n ],\n [\"--baro-ring-offset-shadow\", `0 0 #0000`],\n [\n \"box-shadow\",\n \"var(--baro-inset-shadow), var(--baro-inset-ring-shadow), var(--baro-ring-offset-shadow), var(--baro-ring-shadow), var(--baro-shadow)\",\n ],\n ]);\n});\n\n// Inset ring width utilities\n[\n [\"inset-ring\", \"1px\"],\n [\"inset-ring-0\", \"0px\"],\n [\"inset-ring-1\", \"1px\"],\n [\"inset-ring-2\", \"2px\"],\n [\"inset-ring-4\", \"4px\"],\n [\"inset-ring-8\", \"8px\"],\n].forEach(([name, px]) => {\n staticUtility(name as string, [\n [\"--baro-ring-inset\", \"inset\"],\n [\"--baro-ring-offset-width\", \"0px\"],\n [\"--baro-ring-offset-color\", \"#fff\"],\n [\"--baro-inset-ring-color\", \"currentcolor\"],\n [\n \"--baro-inset-ring-shadow\",\n `var(--baro-ring-inset) 0 0 0 calc(${px} + var(--baro-ring-offset-width)) var(--baro-inset-ring-color, currentcolor)`,\n ],\n [\"--baro-ring-offset-shadow\", `0 0 #0000`],\n [\n \"box-shadow\",\n \"var(--baro-inset-shadow, 0 0 #0000), var(--baro-inset-ring-shadow), var(--baro-ring-offset-shadow, 0 0 #0000), var(--baro-ring-shadow, 0 0 #0000), var(--baro-shadow, 0 0 #0000)\",\n ],\n ]);\n});\n\n// Ring inset\nstaticUtility(\"ring-inset\", [[\"--baro-ring-inset\", \"inset\"]], { category: 'effects' });\n\n// --- Ring color/opacity/arbitrary/custom property ( supports+fallback) ---\nfunction createRingColorDecls(\n key: string,\n main: string,\n opacity: string | undefined,\n realThemeValue: string\n) {\n const colorVar = `var(--color-${realThemeValue})`;\n let colorMix = colorVar;\n let fallback = colorVar;\n if (opacity) {\n colorMix = `color-mix(in oklab, ${colorVar} ${opacity}%, transparent)`;\n if (parseColor(main) && main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallback = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallback = colorMix;\n }\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(key, colorMix),\n ]),\n decl(key, fallback),\n ];\n}\n\n// Ring color/opacity/arbitrary/custom property\nfunctionalUtility({\n name: \"ring\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n if (realThemeValue) {\n return createRingColorDecls(\n \"--baro-ring-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n let colorMix = `var(${cp})`;\n let fallback = colorMix;\n if (opacity) {\n colorMix = `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`;\n fallback = colorMix;\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-ring-color\", colorMix),\n ]),\n decl(\"--baro-ring-color\", fallback),\n ];\n }\n if (token.arbitrary) {\n let colorMix = main;\n let fallback = main;\n if (opacity) {\n colorMix = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n if (parseColor(main) && main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallback = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallback = colorMix;\n }\n\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-ring-color\", colorMix),\n ]),\n decl(\"--baro-ring-color\", fallback),\n ];\n }\n\n return [decl(\"box-shadow\", main)];\n }\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\"--baro-ring-color\", main === \"current\" ? \"currentColor\" : main),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n const cp = value.replace(\"color:\", \"\");\n return [decl(\"--baro-ring-color\", `var(${cp})`)];\n }\n return [decl(\"--baro-ring-color\", `var(${value})`)];\n },\n});\n\n// Inset ring color/opacity/arbitrary/custom property ( supports+fallback)\nfunctionalUtility({\n name: \"inset-ring\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n themeKeys: [\"colors\", \"shadows\"],\n handle: (value, ctx, token, extra) => {\n const main = value;\n const opacity = extra?.opacity;\n const realThemeValue = extra?.realThemeValue;\n if (realThemeValue) {\n return createRingColorDecls(\n \"--baro-inset-ring-color\",\n main,\n opacity,\n realThemeValue\n );\n }\n if (main.startsWith(\"color:\")) {\n const cp = main.replace(\"color:\", \"\");\n let colorMix = `var(${cp})`;\n let fallback = colorMix;\n if (opacity) {\n colorMix = `color-mix(in oklab, var(${cp}) ${opacity}%, transparent)`;\n fallback = colorMix;\n }\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-inset-ring-color\", colorMix),\n ]),\n decl(\"--baro-inset-ring-color\", fallback),\n ];\n }\n if (token.arbitrary) {\n let colorMix = main;\n let fallback = main;\n if (opacity) {\n colorMix = `color-mix(in oklab, ${main} ${opacity}%, transparent)`;\n if (parseColor(main) && main.startsWith(\"#\")) {\n const opacityValue = Math.round((Number(opacity) / 100) * 255);\n fallback = `${main}${opacityValue.toString(16).padStart(2, \"0\")}`;\n } else {\n fallback = colorMix;\n }\n\n return [\n atRule(\"supports\", \"(color:color-mix(in lab, red, red))\", [\n decl(\"--baro-inset-ring-color\", colorMix),\n ]),\n decl(\"--baro-inset-ring-color\", fallback),\n ];\n }\n\n return [decl(\"box-shadow\", `inset ${main}`)];\n }\n\n if (main === \"inherit\" || main === \"current\" || main === \"transparent\") {\n return [\n decl(\n \"--baro-inset-ring-color\",\n main === \"current\" ? \"currentColor\" : main\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n const cp = value.replace(\"color:\", \"\");\n return [decl(\"--baro-inset-ring-color\", `var(${cp})`)];\n }\n return [decl(\"--baro-inset-ring-color\", `var(${value})`)];\n },\n});\n\n// --- Opacity ---\n\nfunctionalUtility({\n name: \"opacity\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n // opacity-100, opacity-75, etc.\n if (parseNumber(value)) {\n let num = Number(value);\n if (num > 1) num = num / 100;\n return [decl(\"opacity\", String(num))];\n }\n // opacity-[.67] → .67\n if (token.arbitrary) {\n return [decl(\"opacity\", value)];\n }\n return null;\n },\n handleCustomProperty: (value) => [decl(\"opacity\", `var(${value})`)],\n description: \"opacity utility (number, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Mix Blend Mode ---\n[\n [\"mix-blend-normal\", \"normal\"],\n [\"mix-blend-multiply\", \"multiply\"],\n [\"mix-blend-screen\", \"screen\"],\n [\"mix-blend-overlay\", \"overlay\"],\n [\"mix-blend-darken\", \"darken\"],\n [\"mix-blend-lighten\", \"lighten\"],\n [\"mix-blend-color-dodge\", \"color-dodge\"],\n [\"mix-blend-color-burn\", \"color-burn\"],\n [\"mix-blend-hard-light\", \"hard-light\"],\n [\"mix-blend-soft-light\", \"soft-light\"],\n [\"mix-blend-difference\", \"difference\"],\n [\"mix-blend-exclusion\", \"exclusion\"],\n [\"mix-blend-hue\", \"hue\"],\n [\"mix-blend-saturation\", \"saturation\"],\n [\"mix-blend-color\", \"color\"],\n [\"mix-blend-luminosity\", \"luminosity\"],\n [\"mix-blend-plus-darker\", \"plus-darker\"],\n [\"mix-blend-plus-lighter\", \"plus-lighter\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mix-blend-mode\", value as string]]);\n});\n\n// --- Background Blend Mode ---\n[\n [\"bg-blend-normal\", \"normal\"],\n [\"bg-blend-multiply\", \"multiply\"],\n [\"bg-blend-screen\", \"screen\"],\n [\"bg-blend-overlay\", \"overlay\"],\n [\"bg-blend-darken\", \"darken\"],\n [\"bg-blend-lighten\", \"lighten\"],\n [\"bg-blend-color-dodge\", \"color-dodge\"],\n [\"bg-blend-color-burn\", \"color-burn\"],\n [\"bg-blend-hard-light\", \"hard-light\"],\n [\"bg-blend-soft-light\", \"soft-light\"],\n [\"bg-blend-difference\", \"difference\"],\n [\"bg-blend-exclusion\", \"exclusion\"],\n [\"bg-blend-hue\", \"hue\"],\n [\"bg-blend-saturation\", \"saturation\"],\n [\"bg-blend-color\", \"color\"],\n [\"bg-blend-luminosity\", \"luminosity\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"background-blend-mode\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Clip ---\n[\n [\"mask-clip-border\", \"border-box\"],\n [\"mask-clip-padding\", \"padding-box\"],\n [\"mask-clip-content\", \"content-box\"],\n [\"mask-clip-fill\", \"fill-box\"],\n [\"mask-clip-stroke\", \"stroke-box\"],\n [\"mask-clip-view\", \"view-box\"],\n [\"mask-no-clip\", \"no-clip\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-clip\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Composite ---\n[\n [\"mask-add\", \"add\"],\n [\"mask-subtract\", \"subtract\"],\n [\"mask-intersect\", \"intersect\"],\n [\"mask-exclude\", \"exclude\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-composite\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Mode ---\n[\n [\"mask-alpha\", \"alpha\"],\n [\"mask-luminance\", \"luminance\"],\n [\"mask-match\", \"match-source\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-mode\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Origin ---\n[\n [\"mask-origin-border\", \"border-box\"],\n [\"mask-origin-padding\", \"padding-box\"],\n [\"mask-origin-content\", \"content-box\"],\n [\"mask-origin-fill\", \"fill-box\"],\n [\"mask-origin-stroke\", \"stroke-box\"],\n [\"mask-origin-view\", \"view-box\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-origin\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Position ---\n[\n [\"mask-top-left\", \"top left\"],\n [\"mask-top\", \"top\"],\n [\"mask-top-right\", \"top right\"],\n [\"mask-left\", \"left\"],\n [\"mask-center\", \"center\"],\n [\"mask-right\", \"right\"],\n [\"mask-bottom-left\", \"bottom left\"],\n [\"mask-bottom\", \"bottom\"],\n [\"mask-bottom-right\", \"bottom right\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-position\", value as string]], { category: 'effects' });\n});\nfunctionalUtility({\n name: \"mask-position\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (token.arbitrary) return [decl(\"mask-position\", value)];\n if (token.customProperty) return [decl(\"mask-position\", `var(${value})`)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"mask-position\", `var(${value})`)],\n description:\n \"mask-position utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Mask Repeat ---\n[\n [\"mask-repeat\", \"repeat\"],\n [\"mask-no-repeat\", \"no-repeat\"],\n [\"mask-repeat-x\", \"repeat-x\"],\n [\"mask-repeat-y\", \"repeat-y\"],\n [\"mask-repeat-space\", \"space\"],\n [\"mask-repeat-round\", \"round\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-repeat\", value as string]], { category: 'effects' });\n});\n\n// --- Mask Size ---\n[\n [\"mask-auto\", \"auto\"],\n [\"mask-cover\", \"cover\"],\n [\"mask-contain\", \"contain\"],\n].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-size\", value as string]], { category: 'effects' });\n});\n\n\n// --- Mask Type ---\n[\n [\"mask-type-alpha\", \"alpha\"],\n [\"mask-type-luminance\", \"luminance\"],\n ].forEach(([name, value]) => {\n staticUtility(name as string, [[\"mask-type\", value as string]], { category: 'effects' });\n });\n\n// mask-size-[value] (arbitrary) & mask-size-(--custom-property)\nfunctionalUtility({\n name: \"mask-size\",\n prop: \"mask-size\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"mask-size utility (static, arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n// --- Mask Image ---\n// Tailwind's mask gradient variables normally have @property defaults.\n// Give them fallbacks here because BaroCSS emits each utility on its own.\nfunctionalUtility({\n name: \"mask-linear-from\",\n handleBareValue: ({ value }) => /^(?:100|[1-9]?\\d)%$/.test(value) ? value : null,\n handle: (value) => [\n decl(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial, linear-gradient(#fff, #fff)), var(--tw-mask-conic, linear-gradient(#fff, #fff))\"),\n decl(\"mask-composite\", \"intersect\"),\n decl(\"--tw-mask-linear-stops\", \"var(--tw-mask-linear-position, 0deg), var(--tw-mask-linear-from-color, black) var(--tw-mask-linear-from-position, 0%), var(--tw-mask-linear-to-color, transparent) var(--tw-mask-linear-to-position, 100%)\"),\n decl(\"--tw-mask-linear\", \"linear-gradient(var(--tw-mask-linear-stops))\"),\n decl(\"--tw-mask-linear-from-position\", value),\n ],\n category: \"effects\",\n});\n\nfunctionalUtility({\n name: \"mask\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n if (value === \"none\") return [decl(\"mask-image\", \"none\")];\n if (token.arbitrary) return [decl(\"mask-image\", value)];\n if (token.customProperty) return [decl(\"mask-image\", `var(${value})`)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"mask-image\", `var(${value})`)],\n description: \"mask-image utility (arbitrary, custom property supported)\",\n category: \"effects\",\n});\n\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport {\n parseNumber,\n parseFraction,\n} from \"../core/utils\";\n\n// --- Layout: Isolation ---\nstaticUtility(\"isolate\", [[\"isolation\", \"isolate\"]], { category: 'layout' });\nstaticUtility(\"isolation-auto\", [[\"isolation\", \"auto\"]], { category: 'layout' });\n\n// --- Layout: Z-Index ---\nstaticUtility(\"z-auto\", [[\"z-index\", \"auto\"]], { category: 'layout' });\nfunctionalUtility({\n name: \"z\",\n prop: \"z-index\",\n themeKey: \"zIndex\",\n supportsNegative: true,\n supportsFraction: true,\n supportsArbitrary: true, // z-[999], z-[calc(var(--index)+1)] 등 지원\n supportsCustomProperty: true, // z-(--my-z) supported\n // but actual theme lookup is handled in ctx.theme\n handleBareValue: ({ value }) => {\n return parseNumber(value); // only allow integers\n },\n description: \"z-index utility\",\n category: \"layout\",\n});\n\n// --- Layout: Aspect Ratio ---\nstaticUtility(\"aspect-square\", [[\"aspect-ratio\", \"1 / 1\"]], { category: 'layout' });\nstaticUtility(\"aspect-video\", [[\"aspect-ratio\", \"var(--aspect-ratio-video)\"]], { category: 'layout' });\nstaticUtility(\"aspect-auto\", [[\"aspect-ratio\", \"auto\"]], { category: 'layout' });\nfunctionalUtility({\n name: \"aspect\",\n prop: \"aspect-ratio\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n description:\n \"aspect-ratio utility (theme, arbitrary, custom property, fraction supported)\",\n category: \"layout\",\n});\n\n// --- Layout: Columns ---\nstaticUtility(\"columns-auto\", [[\"columns\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"columns-3xs\", [[\"columns\", \"var(--container-3xs)\"]], { category: 'layout' });\nstaticUtility(\"columns-2xs\", [[\"columns\", \"var(--container-2xs)\"]], { category: 'layout' });\nstaticUtility(\"columns-xs\", [[\"columns\", \"var(--container-xs)\"]], { category: 'layout' });\nstaticUtility(\"columns-sm\", [[\"columns\", \"var(--container-sm)\"]], { category: 'layout' });\nstaticUtility(\"columns-md\", [[\"columns\", \"var(--container-md)\"]], { category: 'layout' });\nstaticUtility(\"columns-lg\", [[\"columns\", \"var(--container-lg)\"]], { category: 'layout' });\nstaticUtility(\"columns-xl\", [[\"columns\", \"var(--container-xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-2xl\", [[\"columns\", \"var(--container-2xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-3xl\", [[\"columns\", \"var(--container-3xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-4xl\", [[\"columns\", \"var(--container-4xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-5xl\", [[\"columns\", \"var(--container-5xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-6xl\", [[\"columns\", \"var(--container-6xl)\"]], { category: 'layout' });\nstaticUtility(\"columns-7xl\", [[\"columns\", \"var(--container-7xl)\"]], { category: 'layout' });\nfunctionalUtility({\n name: \"columns\",\n prop: \"columns\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => parseNumber(value),\n description:\n \"columns utility (theme, arbitrary, custom property, fraction supported)\",\n category: \"layout\",\n});\n\n// --- Layout: Break After ---\nstaticUtility(\"break-after-auto\", [[\"break-after\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"break-after-avoid\", [[\"break-after\", \"avoid\"]], { category: 'layout' });\nstaticUtility(\"break-after-all\", [[\"break-after\", \"all\"]], { category: 'layout' });\nstaticUtility(\"break-after-avoid-page\", [[\"break-after\", \"avoid-page\"]], { category: 'layout' });\nstaticUtility(\"break-after-page\", [[\"break-after\", \"page\"]], { category: 'layout' });\nstaticUtility(\"break-after-left\", [[\"break-after\", \"left\"]], { category: 'layout' });\nstaticUtility(\"break-after-right\", [[\"break-after\", \"right\"]], { category: 'layout' });\nstaticUtility(\"break-after-column\", [[\"break-after\", \"column\"]], { category: 'layout' });\n\n// --- Layout: Break Before ---\nstaticUtility(\"break-before-auto\", [[\"break-before\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"break-before-avoid\", [[\"break-before\", \"avoid\"]], { category: 'layout' });\nstaticUtility(\"break-before-all\", [[\"break-before\", \"all\"]], { category: 'layout' });\nstaticUtility(\"break-before-avoid-page\", [[\"break-before\", \"avoid-page\"]], { category: 'layout' });\nstaticUtility(\"break-before-page\", [[\"break-before\", \"page\"]], { category: 'layout' });\nstaticUtility(\"break-before-left\", [[\"break-before\", \"left\"]], { category: 'layout' });\nstaticUtility(\"break-before-right\", [[\"break-before\", \"right\"]], { category: 'layout' });\nstaticUtility(\"break-before-column\", [[\"break-before\", \"column\"]], { category: 'layout' });\n\n// --- Layout: Break Inside ---\nstaticUtility(\"break-inside-auto\", [[\"break-inside\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"break-inside-avoid\", [[\"break-inside\", \"avoid\"]], { category: 'layout' });\nstaticUtility(\"break-inside-avoid-page\", [[\"break-inside\", \"avoid-page\"]], { category: 'layout' });\nstaticUtility(\"break-inside-avoid-column\", [[\"break-inside\", \"avoid-column\"]], { category: 'layout' });\n\n// --- Layout: Box Decoration Break ---\nstaticUtility(\"box-decoration-slice\", [[\"box-decoration-break\", \"slice\"]], { category: 'layout' });\nstaticUtility(\"box-decoration-clone\", [[\"box-decoration-break\", \"clone\"]], { category: 'layout' });\n\n// --- Layout: Box Sizing ---\n staticUtility(\"box-border\", [[\"box-sizing\", \"border-box\"]], { category: 'layout' });\nstaticUtility(\"box-content\", [[\"box-sizing\", \"content-box\"]], { category: 'layout' });\n\n// --- Layout: Display ---\nstaticUtility(\"block\", [[\"display\", \"block\"]], { category: 'layout' });\nstaticUtility(\"inline\", [[\"display\", \"inline\"]], { category: 'layout' });\nstaticUtility(\"inline-block\", [[\"display\", \"inline-block\"]], { category: 'layout' });\nstaticUtility(\"flow-root\", [[\"display\", \"flow-root\"]], { category: 'layout' });\nstaticUtility(\"flex\", [[\"display\", \"flex\"]], { category: 'layout' });\nstaticUtility(\"inline-flex\", [[\"display\", \"inline-flex\"]], { category: 'layout' });\nstaticUtility(\"grid\", [[\"display\", \"grid\"]], { category: 'layout' });\nstaticUtility(\"inline-grid\", [[\"display\", \"inline-grid\"]], { category: 'layout' });\nstaticUtility(\"contents\", [[\"display\", \"contents\"]], { category: 'layout' });\nstaticUtility(\"table\", [[\"display\", \"table\"]], { category: 'layout' });\nstaticUtility(\"inline-table\", [[\"display\", \"inline-table\"]], { category: 'layout' });\nstaticUtility(\"table-caption\", [[\"display\", \"table-caption\"]], { category: 'layout' });\nstaticUtility(\"table-cell\", [[\"display\", \"table-cell\"]], { category: 'layout' });\nstaticUtility(\"table-column\", [[\"display\", \"table-column\"]], { category: 'layout' });\nstaticUtility(\"table-column-group\", [[\"display\", \"table-column-group\"]], { category: 'layout' });\nstaticUtility(\"table-footer-group\", [[\"display\", \"table-footer-group\"]], { category: 'layout' });\nstaticUtility(\"table-header-group\", [[\"display\", \"table-header-group\"]], { category: 'layout' });\nstaticUtility(\"table-row-group\", [[\"display\", \"table-row-group\"]], { category: 'layout' });\nstaticUtility(\"table-row\", [[\"display\", \"table-row\"]], { category: 'layout' });\nstaticUtility(\"list-item\", [[\"display\", \"list-item\"]], { category: 'layout' });\nstaticUtility(\"hidden\", [[\"display\", \"none\"]], { category: 'layout' });\nstaticUtility(\"sr-only\", [\n [\"position\", \"absolute\"],\n [\"width\", \"1px\"],\n [\"height\", \"1px\"],\n [\"margin\", \"-1px\"],\n [\"padding\", \"0\"],\n [\"overflow\", \"hidden\"],\n [\"clip\", \"rect(0, 0, 0, 0)\"],\n [\"white-space\", \"nowrap\"],\n [\"border-width\", \"0\"],\n], { category: 'layout' });\n\nstaticUtility(\"not-sr-only\", [\n [\"position\", \"static\"],\n [\"width\", \"auto\"],\n [\"height\", \"auto\"],\n [\"margin\", \"0\"],\n [\"padding\", \"0\"],\n [\"overflow\", \"visible\"],\n [\"clip\", \"auto\"],\n [\"white-space\", \"normal\"],\n], { category: 'layout' });\n\n// --- Layout: Float ---\nstaticUtility(\"float-right\", [[\"float\", \"right\"]], { category: 'layout' });\nstaticUtility(\"float-left\", [[\"float\", \"left\"]], { category: 'layout' });\nstaticUtility(\"float-start\", [[\"float\", \"inline-start\"]], { category: 'layout' });\nstaticUtility(\"float-end\", [[\"float\", \"inline-end\"]], { category: 'layout' });\nstaticUtility(\"float-none\", [[\"float\", \"none\"]], { category: 'layout' });\n\n// --- Layout: Clear ---\nstaticUtility(\"clear-left\", [[\"clear\", \"left\"]], { category: 'layout' });\nstaticUtility(\"clear-right\", [[\"clear\", \"right\"]], { category: 'layout' });\nstaticUtility(\"clear-both\", [[\"clear\", \"both\"]], { category: 'layout' });\nstaticUtility(\"clear-start\", [[\"clear\", \"inline-start\"]], { category: 'layout' });\nstaticUtility(\"clear-end\", [[\"clear\", \"inline-end\"]], { category: 'layout' });\nstaticUtility(\"clear-none\", [[\"clear\", \"none\"]], { category: 'layout' });\n\n// --- Layout: Object Fit ---\nstaticUtility(\"object-contain\", [[\"object-fit\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"object-cover\", [[\"object-fit\", \"cover\"]], { category: 'layout' });\nstaticUtility(\"object-fill\", [[\"object-fit\", \"fill\"]], { category: 'layout' });\nstaticUtility(\"object-none\", [[\"object-fit\", \"none\"]], { category: 'layout' });\nstaticUtility(\"object-scale-down\", [[\"object-fit\", \"scale-down\"]], { category: 'layout' });\n\n// --- Layout: Object Position ---\nstaticUtility(\"object-top-left\", [[\"object-position\", \"top left\"]], { category: 'layout' });\nstaticUtility(\"object-top\", [[\"object-position\", \"top\"]], { category: 'layout' });\nstaticUtility(\"object-top-right\", [[\"object-position\", \"top right\"]], { category: 'layout' });\nstaticUtility(\"object-left\", [[\"object-position\", \"left\"]], { category: 'layout' });\nstaticUtility(\"object-center\", [[\"object-position\", \"center\"]], { category: 'layout' });\nstaticUtility(\"object-right\", [[\"object-position\", \"right\"]], { category: 'layout' });\nstaticUtility(\"object-bottom-left\", [[\"object-position\", \"bottom left\"]], { category: 'layout' });\nstaticUtility(\"object-bottom\", [[\"object-position\", \"bottom\"]], { category: 'layout' });\nstaticUtility(\"object-bottom-right\", [[\"object-position\", \"bottom right\"]], { category: 'layout' });\n\nfunctionalUtility({\n name: \"object\",\n prop: \"object-position\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description:\n \"object-position utility (arbitrary value, custom property supported)\",\n category: \"layout\",\n});\n\n// --- Layout: Overflow ---\n staticUtility(\"overflow-auto\", [[\"overflow\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overflow-hidden\", [[\"overflow\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"overflow-clip\", [[\"overflow\", \"clip\"]], { category: 'layout' });\nstaticUtility(\"overflow-visible\", [[\"overflow\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"overflow-scroll\", [[\"overflow\", \"scroll\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-auto\", [[\"overflow-x\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-auto\", [[\"overflow-y\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-hidden\", [[\"overflow-x\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-hidden\", [[\"overflow-y\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-clip\", [[\"overflow-x\", \"clip\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-clip\", [[\"overflow-y\", \"clip\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-visible\", [[\"overflow-x\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-visible\", [[\"overflow-y\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"overflow-x-scroll\", [[\"overflow-x\", \"scroll\"]], { category: 'layout' });\nstaticUtility(\"overflow-y-scroll\", [[\"overflow-y\", \"scroll\"]], { category: 'layout' });\n\n// --- Layout: Overscroll Behavior ---\nstaticUtility(\"overscroll-auto\", [[\"overscroll-behavior\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overscroll-contain\", [[\"overscroll-behavior\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"overscroll-none\", [[\"overscroll-behavior\", \"none\"]], { category: 'layout' });\nstaticUtility(\"overscroll-x-auto\", [[\"overscroll-behavior-x\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overscroll-x-contain\", [[\"overscroll-behavior-x\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"overscroll-x-none\", [[\"overscroll-behavior-x\", \"none\"]], { category: 'layout' });\nstaticUtility(\"overscroll-y-auto\", [[\"overscroll-behavior-y\", \"auto\"]], { category: 'layout' });\nstaticUtility(\"overscroll-y-contain\", [[\"overscroll-behavior-y\", \"contain\"]], { category: 'layout' });\nstaticUtility(\"overscroll-y-none\", [[\"overscroll-behavior-y\", \"none\"]], { category: 'layout' });\n\n// --- Layout: Position ---\nstaticUtility(\"static\", [[\"position\", \"static\"]], { category: 'layout' });\nstaticUtility(\"fixed\", [[\"position\", \"fixed\"]], { category: 'layout' });\nstaticUtility(\"absolute\", [[\"position\", \"absolute\"]], { category: 'layout' });\nstaticUtility(\"relative\", [[\"position\", \"relative\"]], { category: 'layout' });\nstaticUtility(\"sticky\", [[\"position\", \"sticky\"]], { category: 'layout' });\n\n// --- Layout: Inset/Top/Right/Bottom/Left ---\n[\n [\"inset-x\", \"inset-inline\"],\n [\"inset-y\", \"inset-block\"],\n [\"inset\", \"inset\"],\n [\"start\", \"inset-inline-start\"],\n [\"end\", \"inset-inline-end\"],\n [\"top\", \"top\"],\n [\"right\", \"right\"],\n [\"bottom\", \"bottom\"],\n [\"left\", \"left\"],\n].forEach(([name, prop]) => {\n // inset\n staticUtility(`${name}-auto`, [[prop, \"auto\"]], { category: 'layout' });\n staticUtility(`${name}-full`, [[prop, \"100%\"]], { category: 'layout' });\n staticUtility(`-${name}-full`, [[prop, \"-100%\"]], { category: 'layout' });\n staticUtility(`${name}-px`, [[prop, \"1px\"]], { category: 'layout' });\n staticUtility(`-${name}-px`, [[prop, \"-1px\"]], { category: 'layout' });\n functionalUtility({\n name: name,\n prop: prop,\n supportsNegative: true,\n supportsFraction: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n const frac = parseFraction(value);\n if (frac) return frac;\n return null;\n },\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * -${value})`;\n }\n const frac = parseFraction(value);\n if (frac) return `-${frac}`;\n return null;\n },\n description: `${name} utility (spacing, fraction, px, full, auto, custom property, arbitrary, negative supported)`,\n category: \"layout\",\n });\n});\n\n// --- Layout: Visibility ---\nstaticUtility(\"visible\", [[\"visibility\", \"visible\"]], { category: 'layout' });\nstaticUtility(\"invisible\", [[\"visibility\", \"hidden\"]], { category: 'layout' });\nstaticUtility(\"collapse\", [[\"visibility\", \"collapse\"]], { category: 'layout' });\n\n// --- Layout: Gap ---\nfunctionalUtility({\n name: \"gap-x\",\n prop: \"column-gap\",\n supportsArbitrary: true, // gap-x-[10vw]\n supportsCustomProperty: true, // gap-x-(--my-gap-x)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"column-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"column-gap\", `var(${value})`)],\n description: \"gap-x utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap-y\",\n prop: \"row-gap\",\n supportsArbitrary: true, // gap-y-[10vw]\n supportsCustomProperty: true, // gap-y-(--my-gap-y)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"row-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"row-gap\", `var(${value})`)],\n description: \"gap-y utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap\",\n prop: \"gap\",\n supportsArbitrary: true, // gap-[10vw]\n supportsCustomProperty: true, // gap-(--my-gap)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"gap\", `var(${value})`)],\n description: \"gap utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport {\n parseFractionOrNumber,\n parseNumber,\n parseFraction,\n} from \"../core/utils\";\n\n\n// --- Flexbox & Grid: flex-basis ---\nstaticUtility(\"basis-full\", [[\"flex-basis\", \"100%\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-auto\", [[\"flex-basis\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-3xs\", [[\"flex-basis\", \"var(--container-3xs)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-2xs\", [[\"flex-basis\", \"var(--container-2xs)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-xs\", [[\"flex-basis\", \"var(--container-xs)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-sm\", [[\"flex-basis\", \"var(--container-sm)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-md\", [[\"flex-basis\", \"var(--container-md)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-lg\", [[\"flex-basis\", \"var(--container-lg)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-xl\", [[\"flex-basis\", \"var(--container-xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-2xl\", [[\"flex-basis\", \"var(--container-2xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-3xl\", [[\"flex-basis\", \"var(--container-3xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-4xl\", [[\"flex-basis\", \"var(--container-4xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-5xl\", [[\"flex-basis\", \"var(--container-5xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-6xl\", [[\"flex-basis\", \"var(--container-6xl)\"]], { category: 'flex-grid' });\nstaticUtility(\"basis-7xl\", [[\"flex-basis\", \"var(--container-7xl)\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"basis\",\n prop: \"flex-basis\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--container-${value}) * 1px)`;\n }\n const frac = parseFraction(value);\n if (frac) return frac;\n return null;\n },\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--container-${value}) * -1px)`;\n }\n const frac = parseFraction(value);\n if (frac) return `-${frac}`;\n return null;\n },\n description:\n \"flex-basis utility (theme, arbitrary, custom property, fraction supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: flex-direction ---\nstaticUtility(\"flex-row\", [[\"flex-direction\", \"row\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-row-reverse\", [[\"flex-direction\", \"row-reverse\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-col\", [[\"flex-direction\", \"column\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-col-reverse\", [[\"flex-direction\", \"column-reverse\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: flex-wrap ---\nstaticUtility(\"flex-wrap\", [[\"flex-wrap\", \"wrap\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-wrap-reverse\", [[\"flex-wrap\", \"wrap-reverse\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-nowrap\", [[\"flex-wrap\", \"nowrap\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Flex ---\nstaticUtility(\"flex-auto\", [[\"flex\", \"1 1 auto\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-initial\", [[\"flex\", \"0 1 auto\"]], { category: 'flex-grid' });\nstaticUtility(\"flex-none\", [[\"flex\", \"none\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"flex\",\n supportsArbitrary: true, // flex-[3_1_auto], flex-[2], flex-[0_0_100%], etc.\n supportsCustomProperty: true, // flex-(--my-flex)\n supportsFraction: true, // flex-1/2 → flex: 50%;\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) return value;\n const frac = parseFraction(value);\n if (frac) return `calc(${frac})`;\n return null;\n },\n handle: (value) => [decl(\"flex\", value)],\n description:\n \"flex shorthand utility (number, fraction, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Flex Grow ---\nstaticUtility(\"grow\", [[\"flex-grow\", \"1\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"grow\",\n prop: \"flex-grow\",\n supportsArbitrary: true, // grow-[25vw], grow-[2], grow-[var(--factor)], etc.\n supportsCustomProperty: true, // grow-(--my-grow)\n handleBareValue: ({ value }) => parseNumber(value),\n handle: (value) => [decl(\"flex-grow\", value)],\n description: \"flex-grow utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Flex Shrink ---\nstaticUtility(\"shrink\", [[\"flex-shrink\", \"1\"]], { category: 'flex-grid' });\nstaticUtility(\"shrink-0\", [[\"flex-shrink\", \"0\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"shrink\",\n prop: \"flex-shrink\",\n supportsArbitrary: true, // shrink-[2], shrink-[calc(100vw-var(--sidebar))], etc.\n supportsCustomProperty: true, // shrink-(--my-shrink)\n handleBareValue: ({ value }) => parseNumber(value),\n description: \"flex-shrink utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Order ---\nstaticUtility(\"order-first\", [[\"order\", \"calc(-infinity)\"]], { category: 'flex-grid' });\nstaticUtility(\"order-last\", [[\"order\", \"calc(infinity)\"]], { category: 'flex-grid' });\nstaticUtility(\"order-none\", [[\"order\", \"0\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"order\",\n prop: \"order\",\n supportsNegative: true, // -order-1 → order: calc(1 * -1)\n supportsArbitrary: true, // order-[min(var(--total-items),10)], etc.\n supportsCustomProperty: true, // order-(--my-order)\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"order utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Template Columns ---\nstaticUtility(\"grid-cols-none\", [[\"grid-template-columns\", \"none\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-cols-subgrid\", [[\"grid-template-columns\", \"subgrid\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"grid-cols\",\n prop: \"grid-template-columns\",\n supportsArbitrary: true, // grid-cols-[200px_minmax(900px,_1fr)_100px], etc.\n supportsCustomProperty: true, // grid-cols-(--my-grid-cols)\n handleBareValue: ({ value }) =>\n parseFractionOrNumber(value, { repeat: true }),\n description:\n \"grid-template-columns utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Template Rows ---\nstaticUtility(\"grid-rows-none\", [[\"grid-template-rows\", \"none\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-rows-subgrid\", [[\"grid-template-rows\", \"subgrid\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"grid-rows\",\n prop: \"grid-template-rows\",\n supportsArbitrary: true, // grid-rows-[200px_minmax(900px,_1fr)_100px], etc.\n supportsCustomProperty: true, // grid-rows-(--my-grid-rows)\n handleBareValue: ({ value }) =>\n parseFractionOrNumber(value, { repeat: true }),\n handle: (value) => {\n // grid-rows-[200px_minmax(900px,_1fr)_100px]\n // Just output as-is (spaces instead of underscores)\n if (typeof value === \"string\") {\n return [decl(\"grid-template-rows\", value.replace(/_/g, \" \"))];\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\"grid-template-rows\", `var(${value})`),\n ],\n description:\n \"grid-template-rows utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Row ---\n// row-span utilities\nstaticUtility(\"row-span-full\", [[\"grid-row\", \"1 / -1\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row-span\",\n prop: \"grid-row\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) return `span ${value} / span ${value}`;\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\"grid-row\", `span var(${value}) / span var(${value})`),\n ],\n handle: (value) => {\n if (parseNumber(value))\n return [decl(\"grid-row\", `span ${value} / span ${value}`)];\n // arbitrary value: row-span-[5] → span 5 / span 5\n return null;\n },\n description:\n \"grid-row span utility (number, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n// row-start utilities\nstaticUtility(\"row-start-auto\", [[\"grid-row-start\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row-start\",\n prop: \"grid-row-start\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-row-start\", `var(${value})`)],\n handle: (value) => {\n if (parseNumber(value)) return [decl(\"grid-row-start\", value)];\n if (typeof value === \"string\") return [decl(\"grid-row-start\", value)];\n return null;\n },\n description:\n \"grid-row-start utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n// row-end utilities\nstaticUtility(\"row-end-auto\", [[\"grid-row-end\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row-end\",\n prop: \"grid-row-end\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-row-end\", `var(${value})`)],\n handle: (value) => {\n if (parseNumber(value)) return [decl(\"grid-row-end\", value)];\n if (typeof value === \"string\") return [decl(\"grid-row-end\", value)];\n return null;\n },\n description:\n \"grid-row-end utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n// row-auto, row-<number>, -row-<number>, row-(<custom-property>), row-[value]\nstaticUtility(\"row-auto\", [[\"grid-row\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"row\",\n prop: \"grid-row\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-row\", `var(${value})`)],\n handle: (value) => {\n if (parseNumber(value)) return [decl(\"grid-row\", value)];\n if (typeof value === \"string\") return [decl(\"grid-row\", value)];\n return null;\n },\n description:\n \"grid-row utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Auto Flow ---\n staticUtility(\"grid-flow-row\", [[\"grid-auto-flow\", \"row\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-col\", [[\"grid-auto-flow\", \"column\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-dense\", [[\"grid-auto-flow\", \"dense\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-row-dense\", [[\"grid-auto-flow\", \"row dense\"]], { category: 'flex-grid' });\nstaticUtility(\"grid-flow-col-dense\", [[\"grid-auto-flow\", \"column dense\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Grid Auto Columns ---\nstaticUtility(\"auto-cols-auto\", [[\"grid-auto-columns\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-cols-min\", [[\"grid-auto-columns\", \"min-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-cols-max\", [[\"grid-auto-columns\", \"max-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-cols-fr\", [[\"grid-auto-columns\", \"minmax(0, 1fr)\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"auto-cols\",\n prop: \"grid-auto-columns\",\n supportsArbitrary: true, // auto-cols-[minmax(0,2fr)]\n supportsCustomProperty: true, // auto-cols-(--my-auto-cols)\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"grid-auto-columns\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-auto-columns\", `var(${value})`)],\n description:\n \"grid-auto-columns utility (static, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Grid Auto Rows ---\nstaticUtility(\"auto-rows-auto\", [[\"grid-auto-rows\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-rows-min\", [[\"grid-auto-rows\", \"min-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-rows-max\", [[\"grid-auto-rows\", \"max-content\"]], { category: 'flex-grid' });\nstaticUtility(\"auto-rows-fr\", [[\"grid-auto-rows\", \"minmax(0, 1fr)\"]], { category: 'flex-grid' });\n\nfunctionalUtility({\n name: \"auto-rows\",\n prop: \"grid-auto-rows\",\n supportsArbitrary: true, // auto-rows-[minmax(0,2fr)]\n supportsCustomProperty: true, // auto-rows-(--my-auto-rows)\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"grid-auto-rows\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"grid-auto-rows\", `var(${value})`)],\n description:\n \"grid-auto-rows utility (static, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});\n\n// --- Flexbox & Grid: Gap ---\nfunctionalUtility({\n name: \"gap-x\",\n prop: \"column-gap\",\n supportsArbitrary: true, // gap-x-[10vw]\n supportsCustomProperty: true, // gap-x-(--my-gap-x)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"column-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"column-gap\", `var(${value})`)],\n description: \"gap-x utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap-y\",\n prop: \"row-gap\",\n supportsArbitrary: true, // gap-y-[10vw]\n supportsCustomProperty: true, // gap-y-(--my-gap-y)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"row-gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"row-gap\", `var(${value})`)],\n description: \"gap-y utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\nfunctionalUtility({\n name: \"gap\",\n prop: \"gap\",\n supportsArbitrary: true, // gap-[10vw]\n supportsCustomProperty: true, // gap-(--my-gap)\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handle: (value) => {\n if (typeof value === \"string\") return [decl(\"gap\", value)];\n return null;\n },\n handleCustomProperty: (value) => [decl(\"gap\", `var(${value})`)],\n description: \"gap utility (number, arbitrary, custom property supported)\",\n category: \"layout\",\n});\n\n// --- Flexbox & Grid: Justify Content ---\nstaticUtility(\"justify-start\", [[\"justify-content\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-end\", [[\"justify-content\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-end-safe\", [[\"justify-content\", \"safe flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-center\", [[\"justify-content\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-center-safe\", [[\"justify-content\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-between\", [[\"justify-content\", \"space-between\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-around\", [[\"justify-content\", \"space-around\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-evenly\", [[\"justify-content\", \"space-evenly\"]], { category: 'flex-grid' });\n staticUtility(\"justify-stretch\", [[\"justify-content\", \"stretch\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-baseline\", [[\"justify-content\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-normal\", [[\"justify-content\", \"normal\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Justify Items ---\nstaticUtility(\"justify-items-start\", [[\"justify-items\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-end\", [[\"justify-items\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-end-safe\", [[\"justify-items\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-center\", [[\"justify-items\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-center-safe\", [[\"justify-items\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-stretch\", [[\"justify-items\", \"stretch\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-items-normal\", [[\"justify-items\", \"normal\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Justify Self ---\nstaticUtility(\"justify-self-auto\", [[\"justify-self\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-start\", [[\"justify-self\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-center\", [[\"justify-self\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-center-safe\", [[\"justify-self\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-end\", [[\"justify-self\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-end-safe\", [[\"justify-self\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"justify-self-stretch\", [[\"justify-self\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Align Content ---\n staticUtility(\"content-normal\", [[\"align-content\", \"normal\"]], { category: 'flex-grid' });\nstaticUtility(\"content-center\", [[\"align-content\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"content-start\", [[\"align-content\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"content-end\", [[\"align-content\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"content-between\", [[\"align-content\", \"space-between\"]], { category: 'flex-grid' });\nstaticUtility(\"content-around\", [[\"align-content\", \"space-around\"]], { category: 'flex-grid' });\nstaticUtility(\"content-evenly\", [[\"align-content\", \"space-evenly\"]], { category: 'flex-grid' });\nstaticUtility(\"content-baseline\", [[\"align-content\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"content-stretch\", [[\"align-content\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Align Items ---\nstaticUtility(\"items-start\", [[\"align-items\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"items-end\", [[\"align-items\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"items-end-safe\", [[\"align-items\", \"safe flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"items-center\", [[\"align-items\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"items-center-safe\", [[\"align-items\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"items-baseline\", [[\"align-items\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"items-baseline-last\", [[\"align-items\", \"last baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"items-stretch\", [[\"align-items\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Align Self ---\nstaticUtility(\"self-auto\", [[\"align-self\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"self-start\", [[\"align-self\", \"flex-start\"]], { category: 'flex-grid' });\nstaticUtility(\"self-end\", [[\"align-self\", \"flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"self-end-safe\", [[\"align-self\", \"safe flex-end\"]], { category: 'flex-grid' });\nstaticUtility(\"self-center\", [[\"align-self\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"self-center-safe\", [[\"align-self\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"self-stretch\", [[\"align-self\", \"stretch\"]], { category: 'flex-grid' });\nstaticUtility(\"self-baseline\", [[\"align-self\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"self-baseline-last\", [[\"align-self\", \"last baseline\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Place Content ---\nstaticUtility(\"place-content-center\", [[\"place-content\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-center-safe\", [[\"place-content\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-start\", [[\"place-content\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-end\", [[\"place-content\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-end-safe\", [[\"place-content\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-between\", [[\"place-content\", \"space-between\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-around\", [[\"place-content\", \"space-around\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-evenly\", [[\"place-content\", \"space-evenly\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-baseline\", [[\"place-content\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"place-content-stretch\", [[\"place-content\", \"stretch\"]], { category: 'flex-grid' } );\n\n// --- Flexbox & Grid: Place Items ---\nstaticUtility(\"place-items-start\", [[\"place-items\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-end\", [[\"place-items\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-end-safe\", [[\"place-items\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-center\", [[\"place-items\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-center-safe\", [[\"place-items\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-baseline\", [[\"place-items\", \"baseline\"]], { category: 'flex-grid' });\nstaticUtility(\"place-items-stretch\", [[\"place-items\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Place Self ---\nstaticUtility(\"place-self-auto\", [[\"place-self\", \"auto\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-start\", [[\"place-self\", \"start\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-end\", [[\"place-self\", \"end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-end-safe\", [[\"place-self\", \"safe end\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-center\", [[\"place-self\", \"center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-center-safe\", [[\"place-self\", \"safe center\"]], { category: 'flex-grid' });\nstaticUtility(\"place-self-stretch\", [[\"place-self\", \"stretch\"]], { category: 'flex-grid' });\n\n// --- Flexbox & Grid: Grid Column ---\n// col-span utilities\nstaticUtility(\"col-span-full\", [[\"grid-column\", \"1 / -1\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col-span\",\n prop: \"grid-column\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) return `span ${value} / span ${value}`;\n return null;\n },\n handleCustomProperty: (value, _ctx, _token) => {\n return [decl(\"grid-column\", `span var(${value}) / span var(${value})`)];\n },\n handle: (value, _ctx, _token) => {\n if (parseNumber(value))\n return [decl(\"grid-column\", `span ${value} / span ${value}`)];\n return null;\n },\n description:\n \"grid-column span utility (number, arbitrary, custom property supported)\",\n category: \"grid\",\n});\n\n// col-start utilities\nstaticUtility(\"col-start-auto\", [[\"grid-column-start\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col-start\",\n prop: \"grid-column-start\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"grid-column-start utility (number, negative, arbitrary, custom property supported)\",\n category: \"grid\",\n});\n\n// col-end utilities\nstaticUtility(\"col-end-auto\", [[\"grid-column-end\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col-end\",\n prop: \"grid-column-end\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"grid-column-end utility (number, negative, arbitrary, custom property supported)\",\n category: \"grid\",\n});\n\n// col-auto, col-<number>, -col-<number>, col-(<custom-property>), col-[value]\nstaticUtility(\"col-auto\", [[\"grid-column\", \"auto\"]], { category: 'flex-grid' });\nfunctionalUtility({\n name: \"col\",\n prop: \"grid-column\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handleNegativeBareValue: ({ value }) => {\n if (parseNumber(value)) return `calc(${value} * -1)`;\n return null;\n },\n description:\n \"grid-column utility (number, negative, arbitrary, custom property supported)\",\n category: \"flex-grid\",\n});","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl, rule } from \"../core/ast\";\n\n// Padding utilities (p-*, px-*, py-*, ps-*, pe-*, pt-*, pr-*, pb-*, pl-*)\n[\n [\"px\", \"padding-inline\"],\n [\"py\", \"padding-block\"],\n [\"ps\", \"padding-inline-start\"],\n [\"pe\", \"padding-inline-end\"],\n [\"pt\", \"padding-top\"],\n [\"pr\", \"padding-right\"],\n [\"pb\", \"padding-bottom\"],\n [\"pl\", \"padding-left\"],\n [\"p\", \"padding\"],\n].forEach(([name, prop]) => {\n staticUtility(`${name}-px`, [[prop, \"1px\"]], { category: 'spacing' });\n functionalUtility({\n name,\n prop,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n description: `${name} utility (number, arbitrary, custom property supported)`,\n category: \"spacing\",\n });\n});\n\n// Margin utilities (m-*, mx-*, my-*, ms-*, me-*, mt-*, mr-*, mb-*, ml-*)\n[\n [\"mx\", \"margin-inline\"],\n [\"my\", \"margin-block\"],\n [\"ms\", \"margin-inline-start\"],\n [\"me\", \"margin-inline-end\"],\n [\"mt\", \"margin-top\"],\n [\"mr\", \"margin-right\"],\n [\"mb\", \"margin-bottom\"],\n [\"ml\", \"margin-left\"],\n [\"m\", \"margin\"],\n].forEach(([name, prop]) => {\n staticUtility(`${name}-auto`, [[prop, \"auto\"]], { category: 'spacing' });\n staticUtility(`${name}-px`, [[prop, \"1px\"]], { category: 'spacing' });\n staticUtility(`-${name}-px`, [[prop, \"-1px\"]], { category: 'spacing' });\n functionalUtility({\n name,\n prop,\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n description: `${name} margin utility (number, negative, arbitrary, custom property, auto, px supported)`,\n category: \"spacing\",\n });\n});\n\n// --- Spacing: space-x, space-y, space-x-reverse, space-y-reverse ---\n// spacing utilities reference\n\n// space-x-*, -space-x-*, space-x-px, -space-x-px, space-x-[...], space-x-(...)\n\nstaticUtility(\"space-x-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-x-reverse\", \"0\"],\n [\n \"margin-inline-start\",\n \"calc(1px * calc(1 - var(--baro-space-x-reverse)))\",\n ],\n [\"margin-inline-end\", \"calc(1px * var(--baro-space-x-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"-space-x-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-x-reverse\", \"0\"],\n [\n \"margin-inline-start\",\n \"calc(-1px * calc(1 - var(--baro-space-x-reverse)))\",\n ],\n [\"margin-inline-end\", \"calc(-1px * var(--baro-space-x-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"space-x-reverse\", [\n [\"& > :not([hidden]) ~ :not([hidden])\", [[\"--baro-space-x-reverse\", \"1\"]]],\n], { category: 'spacing' });\n\nfunctionalUtility({\n name: \"space-x\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n handle: (value, ctx, token) => {\n let v = value;\n if (typeof v === \"number\" || /^-?\\d+(\\.\\d+)?$/.test(v)) {\n v = `calc(var(--spacing) * ${token.negative ? \"-\" : \"\"}${v})`;\n }\n return [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-x-reverse\", \"0\"),\n decl(\n \"margin-inline-start\",\n `calc(${v} * calc(1 - var(--baro-space-x-reverse)))`\n ),\n decl(\"margin-inline-end\", `calc(${v} * var(--baro-space-x-reverse))`),\n ]),\n ];\n },\n handleCustomProperty: (value) => [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-x-reverse\", \"0\"),\n decl(\n \"margin-inline-start\",\n `calc(var(${value}) * calc(1 - var(--baro-space-x-reverse)))`\n ),\n decl(\n \"margin-inline-end\",\n `calc(var(${value}) * var(--baro-space-x-reverse))`\n ),\n ]),\n ],\n description:\n \"space-x utility (number, negative, px, arbitrary, custom property, reverse supported)\",\n category: \"spacing\",\n});\n\n// space-y-*, -space-y-*, space-y-px, -space-y-px, space-y-[...], space-y-(...)\n\nstaticUtility(\"space-y-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-y-reverse\", \"0\"],\n [\"margin-block-start\", \"calc(1px * calc(1 - var(--baro-space-y-reverse)))\"],\n [\"margin-block-end\", \"calc(1px * var(--baro-space-y-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"-space-y-px\", [\n [\n \"& > :not([hidden]) ~ :not([hidden])\",\n [\n [\"--baro-space-y-reverse\", \"0\"],\n [\n \"margin-block-start\",\n \"calc(-1px * calc(1 - var(--baro-space-y-reverse)))\",\n ],\n [\"margin-block-end\", \"calc(-1px * var(--baro-space-y-reverse))\"],\n ],\n ],\n], { category: 'spacing' });\nstaticUtility(\"space-y-reverse\", [\n [\"& > :not([hidden]) ~ :not([hidden])\", [[\"--baro-space-y-reverse\", \"1\"]]],\n], { category: 'spacing' });\n\nfunctionalUtility({\n name: \"space-y\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n handle: (value, ctx, token) => {\n let v = value;\n if (typeof v === \"number\" || /^-?\\d+(\\.\\d+)?$/.test(v)) {\n v = `calc(var(--spacing) * ${token.negative ? \"-\" : \"\"}${v})`;\n }\n return [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-y-reverse\", \"0\"),\n decl(\n \"margin-block-start\",\n `calc(${v} * calc(1 - var(--baro-space-y-reverse)))`\n ),\n decl(\"margin-block-end\", `calc(${v} * var(--baro-space-y-reverse))`),\n ]),\n ];\n },\n handleCustomProperty: (value) => [\n rule(\"& > :not([hidden]) ~ :not([hidden])\", [\n decl(\"--baro-space-y-reverse\", \"0\"),\n decl(\n \"margin-block-start\",\n `calc(var(${value}) * calc(1 - var(--baro-space-y-reverse)))`\n ),\n decl(\n \"margin-block-end\",\n `calc(var(${value}) * var(--baro-space-y-reverse))`\n ),\n ]),\n ],\n description:\n \"space-y utility (number, negative, px, arbitrary, custom property, reverse supported)\",\n category: \"spacing\",\n});","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { decl } from \"../core/ast\";\nimport {\n parseFractionOrNumber,\n parseNumber,\n} from \"../core/utils\";\n\n// Import layout utilities\nimport \"./layout\";\nimport \"./flexbox-grid\";\nimport \"./spacing\";\n\n\n// --- Sizing: width (w-*) and size (size-*) ---\n// width documentation\n\n// w-* static values\n[\n ['w-auto', 'auto'],\n ['w-px', '1px'],\n ['w-full', '100%'],\n ['w-screen', '100vw'],\n ['w-dvw', '100dvw'],\n ['w-dvh', '100dvh'],\n ['w-lvw', '100lvw'],\n ['w-lvh', '100lvh'],\n ['w-svw', '100svw'],\n ['w-svh', '100svh'],\n ['w-min', 'min-content'],\n ['w-max', 'max-content'],\n ['w-fit', 'fit-content'],\n ['w-3xs', 'var(--container-3xs)'],\n ['w-2xs', 'var(--container-2xs)'],\n ['w-xs', 'var(--container-xs)'],\n ['w-sm', 'var(--container-sm)'],\n ['w-md', 'var(--container-md)'],\n ['w-lg', 'var(--container-lg)'],\n ['w-xl', 'var(--container-xl)'],\n ['w-2xl', 'var(--container-2xl)'],\n ['w-3xl', 'var(--container-3xl)'],\n ['w-4xl', 'var(--container-4xl)'],\n ['w-5xl', 'var(--container-5xl)'],\n ['w-6xl', 'var(--container-6xl)'],\n ['w-7xl', 'var(--container-7xl)'],\n].forEach(([name, value]) => {\n staticUtility(name, [['width', value]]);\n});\n\n// w-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'w',\n prop: 'width',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n \n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'width utility (spacing, fraction, arbitrary, custom property, container scale, static supported)',\n category: 'sizing',\n});\n\n// size-* static values\n[\n ['size-auto', ['auto', 'auto']],\n ['size-px', ['1px', '1px']],\n ['size-full', ['100%', '100%']],\n ['size-dvw', ['100dvw', '100dvw']],\n ['size-dvh', ['100dvh', '100dvh']],\n ['size-lvw', ['100lvw', '100lvw']],\n ['size-lvh', ['100lvh', '100lvh']],\n ['size-svw', ['100svw', '100svw']],\n ['size-svh', ['100svh', '100svh']],\n ['size-min', ['min-content', 'min-content']],\n ['size-max', ['max-content', 'max-content']],\n ['size-fit', ['fit-content', 'fit-content']],\n].forEach(([name, [w, h]]) => {\n staticUtility(name as string, [['width', w], ['height', h]]);\n});\n\n// size-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'size',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n handle: (value) => {\n // arbitrary, custom property, etc.\n return [\n decl('width', value),\n decl('height', value),\n ];\n },\n handleCustomProperty: (value) => [\n decl('width', `var(${value})`),\n decl('height', `var(${value})`),\n ],\n description: 'size utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: height (h-*) ---\n// height documentation\n\n// h-* static values\n[\n ['h-auto', 'auto'],\n ['h-px', '1px'],\n ['h-full', '100%'],\n ['h-screen', '100vh'],\n ['h-dvh', '100dvh'],\n ['h-lvh', '100lvh'],\n ['h-svh', '100svh'],\n ['h-min', 'min-content'],\n ['h-max', 'max-content'],\n ['h-fit', 'fit-content'],\n].forEach(([name, value]) => {\n staticUtility(name, [['height', value]]);\n});\n\n// h-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'h',\n prop: 'height',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'height utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: min-height (min-h-*) ---\n// min-height documentation\n\n// min-h-* static values\n[\n ['min-h-0', '0px'],\n ['min-h-px', '1px'],\n ['min-h-full', '100%'],\n ['min-h-screen', '100vh'],\n ['min-h-dvh', '100dvh'],\n ['min-h-lvh', '100lvh'],\n ['min-h-svh', '100svh'],\n ['min-h-min', 'min-content'],\n ['min-h-max', 'max-content'],\n ['min-h-fit', 'fit-content'],\n].forEach(([name, value]) => {\n staticUtility(name, [['min-height', value]], { category: 'sizing' });\n});\n\n// min-h-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'min-h',\n prop: 'min-height',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'min-height utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: max-height (max-h-*) ---\n// max-height documentation\n\n// max-h-* static values\n[\n ['max-h-px', '1px'],\n ['max-h-full', '100%'],\n ['max-h-screen', '100vh'],\n ['max-h-dvh', '100dvh'],\n ['max-h-lvh', '100lvh'],\n ['max-h-svh', '100svh'],\n ['max-h-min', 'min-content'],\n ['max-h-max', 'max-content'],\n ['max-h-fit', 'fit-content'],\n ['max-h-none', 'none'],\n].forEach(([name, value]) => {\n staticUtility(name, [['max-height', value]], { category: 'sizing' });\n});\n\n// max-h-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'max-h',\n prop: 'max-height',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'max-height utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n// --- Sizing: min-width (min-w-*) ---\n// min-width documentation\n\n// min-w-* static values\n[\n ['min-w-auto', 'auto'],\n ['min-w-px', '1px'],\n ['min-w-full', '100%'],\n ['min-w-screen', '100vw'],\n ['min-w-dvw', '100dvw'],\n ['min-w-dvh', '100dvh'],\n ['min-w-lvw', '100lvw'],\n ['min-w-lvh', '100lvh'],\n ['min-w-svw', '100svw'],\n ['min-w-svh', '100svh'],\n ['min-w-min', 'min-content'],\n ['min-w-max', 'max-content'],\n ['min-w-fit', 'fit-content'],\n ['min-w-3xs', 'var(--container-3xs)'],\n ['min-w-2xs', 'var(--container-2xs)'],\n ['min-w-xs', 'var(--container-xs)'],\n ['min-w-sm', 'var(--container-sm)'],\n ['min-w-md', 'var(--container-md)'],\n ['min-w-lg', 'var(--container-lg)'],\n ['min-w-xl', 'var(--container-xl)'],\n ['min-w-2xl', 'var(--container-2xl)'],\n ['min-w-3xl', 'var(--container-3xl)'],\n ['min-w-4xl', 'var(--container-4xl)'],\n ['min-w-5xl', 'var(--container-5xl)'],\n ['min-w-6xl', 'var(--container-6xl)'],\n ['min-w-7xl', 'var(--container-7xl)'],\n].forEach(([name, value]) => {\n staticUtility(name, [['min-width', value]], { category: 'sizing' });\n});\n\n// min-w-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'min-w',\n prop: 'min-width',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'min-width utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});\n\n\n// --- Sizing: max-width (max-w-*) ---\n// max-width documentation\n\n// max-w-* static values\n[\n ['max-w-none', 'none'],\n ['max-w-xs', 'var(--container-xs)'],\n ['max-w-sm', 'var(--container-sm)'],\n ['max-w-md', 'var(--container-md)'],\n ['max-w-lg', 'var(--container-lg)'],\n ['max-w-xl', 'var(--container-xl)'],\n ['max-w-2xl', 'var(--container-2xl)'],\n ['max-w-3xl', 'var(--container-3xl)'],\n ['max-w-4xl', 'var(--container-4xl)'],\n ['max-w-5xl', 'var(--container-5xl)'],\n ['max-w-6xl', 'var(--container-6xl)'],\n ['max-w-7xl', 'var(--container-7xl)'],\n].forEach(([name, value]) => {\n staticUtility(name, [['max-width', value]], { category: 'sizing' });\n});\n\n// max-w-* functional: spacing scale, fraction, arbitrary, custom property\nfunctionalUtility({\n name: 'max-w',\n prop: 'max-width',\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsFraction: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n if (parseFractionOrNumber(value)) return `calc(${value} * 100%)`;\n return null;\n },\n description: 'max-width utility (spacing, fraction, arbitrary, custom property, static supported)',\n category: 'sizing',\n});","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport {\n parseNumber,\n parseLength,\n} from \"../core/utils\";\n\n// --- Typography: Font Family ---\nstaticUtility(\"font-sans\", [[\"font-family\", \"var(--font-family-sans)\"]], { category: 'typography' });\nstaticUtility(\"font-serif\", [[\"font-family\", \"var(--font-family-serif)\"]], { category: 'typography' });\nstaticUtility(\"font-mono\", [[\"font-family\", \"var(--font-family-mono)\"]], { category: 'typography' });\n\n// --- Typography: Font Size ---\nstaticUtility(\"text-xs\", [[\"font-size\", \"var(--text-xs)\"], [\"line-height\", \"var(--text-xs--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-sm\", [[\"font-size\", \"var(--text-sm)\"], [\"line-height\", \"var(--text-sm--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-base\", [[\"font-size\", \"var(--text-base)\"], [\"line-height\", \"var(--text-base--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-lg\", [[\"font-size\", \"var(--text-lg)\"], [\"line-height\", \"var(--text-lg--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-xl\", [[\"font-size\", \"var(--text-xl)\"], [\"line-height\", \"var(--text-xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-2xl\", [[\"font-size\", \"var(--text-2xl)\"], [\"line-height\", \"var(--text-2xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-3xl\", [[\"font-size\", \"var(--text-3xl)\"], [\"line-height\", \"var(--text-3xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-4xl\", [[\"font-size\", \"var(--text-4xl)\"], [\"line-height\", \"var(--text-4xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-5xl\", [[\"font-size\", \"var(--text-5xl)\"], [\"line-height\", \"var(--text-5xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-6xl\", [[\"font-size\", \"var(--text-6xl)\"], [\"line-height\", \"var(--text-6xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-7xl\", [[\"font-size\", \"var(--text-7xl)\"], [\"line-height\", \"var(--text-7xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-8xl\", [[\"font-size\", \"var(--text-8xl)\"], [\"line-height\", \"var(--text-8xl--line-height)\"]], { category: 'typography' });\nstaticUtility(\"text-9xl\", [[\"font-size\", \"var(--text-9xl)\"], [\"line-height\", \"var(--text-9xl--line-height)\"]], { category: 'typography' });\n\n\n// --- Typography: Font Weight ---\nstaticUtility(\"font-thin\", [[\"font-weight\", \"var(--font-weight-thin)\"]], { category: 'typography' });\nstaticUtility(\"font-extralight\", [[\"font-weight\", \"var(--font-weight-extralight)\"]], { category: 'typography' });\nstaticUtility(\"font-light\", [[\"font-weight\", \"var(--font-weight-light)\"]], { category: 'typography' });\nstaticUtility(\"font-normal\", [[\"font-weight\", \"var(--font-weight-normal)\"]], { category: 'typography' });\nstaticUtility(\"font-medium\", [[\"font-weight\", \"var(--font-weight-medium)\"]], { category: 'typography' });\nstaticUtility(\"font-semibold\", [[\"font-weight\", \"var(--font-weight-semibold)\"]], { category: 'typography' });\nstaticUtility(\"font-bold\", [[\"font-weight\", \"var(--font-weight-bold)\"]], { category: 'typography' });\nstaticUtility(\"font-extrabold\", [[\"font-weight\", \"var(--font-weight-extrabold)\"]], { category: 'typography' });\nstaticUtility(\"font-black\", [[\"font-weight\", \"var(--font-weight-black)\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"font\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n if (parseNumber(value)) {\n return [decl(\"font-weight\", value)];\n }\n return [decl(\"font-family\", value)];\n },\n handleCustomProperty: (value) => {\n\n if (value.startsWith(\"font-name:\")) {\n return [decl(\"font-family\", `var(${value.replace(\"font-name:\", \"\")})`)];\n }\n return [decl(\"font-weight\", `var(${value})`)];\n },\n description: \"font-weight utility (theme, number, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Font Style ---\nstaticUtility(\"italic\", [[\"font-style\", \"italic\"]], { category: 'typography' });\nstaticUtility(\"not-italic\", [[\"font-style\", \"normal\"]], { category: 'typography' });\n\n// --- Typography: Letter Spacing ---\nstaticUtility(\"tracking-tighter\", [[\"letter-spacing\", \"var(--letter-spacing-tighter)\"]], { category: 'typography' });\nstaticUtility(\"tracking-tight\", [[\"letter-spacing\", \"var(--letter-spacing-tight)\"]], { category: 'typography' });\nstaticUtility(\"tracking-normal\", [[\"letter-spacing\", \"var(--letter-spacing-normal)\"]], { category: 'typography' });\nstaticUtility(\"tracking-wide\", [[\"letter-spacing\", \"var(--letter-spacing-wide)\"]], { category: 'typography' });\nstaticUtility(\"tracking-wider\", [[\"letter-spacing\", \"var(--letter-spacing-wider)\"]], { category: 'typography' });\nstaticUtility(\"tracking-widest\", [[\"letter-spacing\", \"var(--letter-spacing-widest)\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"tracking\",\n prop: \"letter-spacing\",\n themeKey: \"letterSpacing\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"letter-spacing utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Line Height ---\nstaticUtility(\"leading-none\", [[\"line-height\", \"var(--line-height-none)\"]], { category: 'typography' });\nstaticUtility(\"leading-tight\", [[\"line-height\", \"var(--line-height-tight)\"]], { category: 'typography' });\nstaticUtility(\"leading-snug\", [[\"line-height\", \"var(--line-height-snug)\"]], { category: 'typography' });\nstaticUtility(\"leading-normal\", [[\"line-height\", \"var(--line-height-normal)\"]], { category: 'typography' });\nstaticUtility(\"leading-relaxed\", [[\"line-height\", \"var(--line-height-relaxed)\"]], { category: 'typography' });\nstaticUtility(\"leading-loose\", [[\"line-height\", \"var(--line-height-loose)\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"leading\",\n prop: \"line-height\",\n themeKey: \"lineHeight\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n description: \"line-height utility (theme, number, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Align ---\nstaticUtility(\"text-left\", [[\"text-align\", \"left\"]], { category: 'typography' });\nstaticUtility(\"text-center\", [[\"text-align\", \"center\"]], { category: 'typography' });\nstaticUtility(\"text-right\", [[\"text-align\", \"right\"]], { category: 'typography' });\nstaticUtility(\"text-justify\", [[\"text-align\", \"justify\"]], { category: 'typography' });\nstaticUtility(\"text-start\", [[\"text-align\", \"start\"]], { category: 'typography' });\nstaticUtility(\"text-end\", [[\"text-align\", \"end\"]], { category: 'typography' });\n\n// --- Typography: Text Color ---\nstaticUtility(\"text-inherit\", [[\"color\", \"inherit\"]], { category: 'typography' });\nstaticUtility(\"text-current\", [[\"color\", \"currentColor\"]], { category: 'typography' });\nstaticUtility(\"text-transparent\", [[\"color\", \"transparent\"]], { category: 'typography' });\n\n// --- Typography: Text Overflow ---\nstaticUtility(\"truncate\", [[\"overflow\", \"hidden\"], [\"text-overflow\", \"ellipsis\"], [\"white-space\", \"nowrap\"]], { category: 'typography' });\nstaticUtility(\"text-ellipsis\", [[\"text-overflow\", \"ellipsis\"]], { category: 'typography' });\nstaticUtility(\"text-clip\", [[\"text-overflow\", \"clip\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"text\", \n themeKey: \"colors\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\"color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ]),\n decl(\"color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ];\n }\n\n return [decl(\"color\", value)];\n }\n\n if (parseLength(value)) {\n return [decl(\"font-size\", value)];\n }\n return [decl(\"color\", value)];\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"color:\")) {\n return [decl(\"color\", `var(${value.replace(\"color:\", \"\")})`)];\n }\n return [decl(\"font-size\", `var(${value})`)];\n },\n description: \"text color utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n\nfunctionalUtility({\n name: \"text\",\n themeKey: \"fontSize\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n // Check if it's a theme value first\n const themeValue = ctx.theme(\"fontSize\", value) as string | [string, string];\n if (themeValue) {\n if (Array.isArray(themeValue)) {\n // [fontSize, lineHeight] format\n return [\n decl(\"font-size\", themeValue[0]),\n decl(\"line-height\", themeValue[1])\n ];\n } else {\n return [decl(\"font-size\", themeValue as string)];\n }\n }\n\n // Handle arbitrary values\n if (token.arbitrary) {\n return [decl(\"font-size\", value)];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"font-size\", `var(${value})`)],\n description: \"font-size utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Transform ---\nstaticUtility(\"uppercase\", [[\"text-transform\", \"uppercase\"]], { category: 'typography' });\nstaticUtility(\"lowercase\", [[\"text-transform\", \"lowercase\"]], { category: 'typography' });\nstaticUtility(\"capitalize\", [[\"text-transform\", \"capitalize\"]], { category: 'typography' });\nstaticUtility(\"normal-case\", [[\"text-transform\", \"none\"]], { category: 'typography' });\n\n// --- Typography: Text Decoration ---\nstaticUtility(\"underline\", [[\"text-decoration-line\", \"underline\"]], { category: 'typography' });\nstaticUtility(\"overline\", [[\"text-decoration-line\", \"overline\"]], { category: 'typography' });\nstaticUtility(\"line-through\", [[\"text-decoration-line\", \"line-through\"]], { category: 'typography' });\nstaticUtility(\"no-underline\", [[\"text-decoration-line\", \"none\"]], { category: 'typography' });\n\n\n\n// --- Typography: Whitespace ---\nstaticUtility(\"whitespace-normal\", [[\"white-space\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"whitespace-nowrap\", [[\"white-space\", \"nowrap\"]], { category: 'typography' });\nstaticUtility(\"whitespace-pre\", [[\"white-space\", \"pre\"]], { category: 'typography' });\nstaticUtility(\"whitespace-pre-line\", [[\"white-space\", \"pre-line\"]], { category: 'typography' });\nstaticUtility(\"whitespace-pre-wrap\", [[\"white-space\", \"pre-wrap\"]], { category: 'typography' });\nstaticUtility(\"whitespace-break-spaces\", [[\"white-space\", \"break-spaces\"]], { category: 'typography' });\n\n// --- Typography: Word Break ---\nstaticUtility(\"break-normal\", [[\"overflow-wrap\", \"normal\"], [\"word-break\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"break-words\", [[\"overflow-wrap\", \"break-word\"]], { category: 'typography' });\nstaticUtility(\"break-all\", [[\"word-break\", \"break-all\"]], { category: 'typography' });\nstaticUtility(\"break-keep\", [[\"word-break\", \"keep-all\"]], { category: 'typography' });\n\n// --- Typography: Font Smoothing ---\nstaticUtility(\"antialiased\", [[\"-webkit-font-smoothing\", \"antialiased\"], [\"-moz-osx-font-smoothing\", \"grayscale\"]], { category: 'typography' });\nstaticUtility(\"subpixel-antialiased\", [[\"-webkit-font-smoothing\", \"auto\"], [\"-moz-osx-font-smoothing\", \"auto\"]], { category: 'typography' });\n\n// --- Typography: Font Stretch ---\nstaticUtility(\"font-stretch-normal\", [[\"font-stretch\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-ultra-condensed\", [[\"font-stretch\", \"ultra-condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-extra-condensed\", [[\"font-stretch\", \"extra-condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-condensed\", [[\"font-stretch\", \"condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-semi-condensed\", [[\"font-stretch\", \"semi-condensed\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-semi-expanded\", [[\"font-stretch\", \"semi-expanded\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-expanded\", [[\"font-stretch\", \"expanded\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-extra-expanded\", [[\"font-stretch\", \"extra-expanded\"]], { category: 'typography' });\nstaticUtility(\"font-stretch-ultra-expanded\", [[\"font-stretch\", \"ultra-expanded\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"font-stretch\",\n prop: \"font-stretch\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"font-stretch utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Font Variant Numeric ---\nstaticUtility(\"normal-nums\", [[\"font-variant-numeric\", \"normal\"]], { category: 'typography' });\nstaticUtility(\"ordinal\", [[\"font-variant-numeric\", \"ordinal\"]], { category: 'typography' });\nstaticUtility(\"slashed-zero\", [[\"font-variant-numeric\", \"slashed-zero\"]], { category: 'typography' });\nstaticUtility(\"lining-nums\", [[\"font-variant-numeric\", \"lining-nums\"]], { category: 'typography' });\nstaticUtility(\"oldstyle-nums\", [[\"font-variant-numeric\", \"oldstyle-nums\"]], { category: 'typography' });\nstaticUtility(\"proportional-nums\", [[\"font-variant-numeric\", \"proportional-nums\"]], { category: 'typography' });\nstaticUtility(\"tabular-nums\", [[\"font-variant-numeric\", \"tabular-nums\"]], { category: 'typography' });\nstaticUtility(\"diagonal-fractions\", [[\"font-variant-numeric\", \"diagonal-fractions\"]], { category: 'typography' });\nstaticUtility(\"stacked-fractions\", [[\"font-variant-numeric\", \"stacked-fractions\"]], { category: 'typography' });\n\n// --- Typography: Line Clamp ---\nstaticUtility(\"line-clamp-none\", [[\"-webkit-line-clamp\", \"none\"]], { category: 'typography' });\nfunctionalUtility({\n name: \"line-clamp\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => parseNumber(value),\n handle: (value) => [\n decl(\"overflow\", \"hidden\"),\n decl(\"display\", \"-webkit-box\"),\n decl(\"-webkit-box-orient\", \"vertical\"),\n decl(\"-webkit-line-clamp\", value)\n ],\n handleCustomProperty: (value) => [\n decl(\"overflow\", \"hidden\"),\n decl(\"display\", \"-webkit-box\"),\n decl(\"-webkit-box-orient\", \"vertical\"),\n decl(\"-webkit-line-clamp\", `var(${value})`)\n ],\n description: \"line-clamp utility (number, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: List Style Type ---\nstaticUtility(\"list-none\", [[\"list-style-type\", \"none\"]], { category: 'typography' });\nstaticUtility(\"list-disc\", [[\"list-style-type\", \"disc\"]], { category: 'typography' });\nstaticUtility(\"list-decimal\", [[\"list-style-type\", \"decimal\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"list\",\n prop: \"list-style-type\",\n themeKey: \"listStyleType\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"list-style-type utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: List Style Position ---\nstaticUtility(\"list-inside\", [[\"list-style-position\", \"inside\"]], { category: 'typography' });\nstaticUtility(\"list-outside\", [[\"list-style-position\", \"outside\"]], { category: 'typography' });\n\n// --- Typography: List Style Image ---\nstaticUtility(\"list-image-none\", [[\"list-style-image\", \"none\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"list-image\",\n prop: \"list-style-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(\"list-style-image\", `url(${value})`)],\n handleCustomProperty: (value) => [decl(\"list-style-image\", `var(${value})`)],\n description: \"list-style-image utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Decoration Color ---\nfunctionalUtility({\n name: \"decoration\",\n themeKey: \"colors\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\"text-decoration-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ]),\n decl(\"text-decoration-color\", value),\n ];\n }\n return [decl(\"text-decoration-color\", value)];\n }\n return [decl(\"text-decoration-color\", value)];\n },\n handleCustomProperty: (value) => [decl(\"text-decoration-color\", `var(${value})`)],\n description: \"text-decoration-color utility (theme, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Decoration Style ---\n staticUtility(\"decoration-solid\", [[\"text-decoration-style\", \"solid\"]], { category: 'typography' });\nstaticUtility(\"decoration-double\", [[\"text-decoration-style\", \"double\"]], { category: 'typography' });\nstaticUtility(\"decoration-dotted\", [[\"text-decoration-style\", \"dotted\"]], { category: 'typography' });\nstaticUtility(\"decoration-dashed\", [[\"text-decoration-style\", \"dashed\"]], { category: 'typography' });\nstaticUtility(\"decoration-wavy\", [[\"text-decoration-style\", \"wavy\"]], { category: 'typography' });\n\n// --- Typography: Text Decoration Thickness ---\nstaticUtility(\"decoration-auto\", [[\"text-decoration-thickness\", \"auto\"]], { category: 'typography' });\nstaticUtility(\"decoration-from-font\", [[\"text-decoration-thickness\", \"from-font\"]], { category: 'typography' });\nstaticUtility(\"decoration-0\", [[\"text-decoration-thickness\", \"0px\"]], { category: 'typography' });\nstaticUtility(\"decoration-1\", [[\"text-decoration-thickness\", \"1px\"]], { category: 'typography' });\nstaticUtility(\"decoration-2\", [[\"text-decoration-thickness\", \"2px\"]], { category: 'typography' });\nstaticUtility(\"decoration-4\", [[\"text-decoration-thickness\", \"4px\"]], { category: 'typography' });\nstaticUtility(\"decoration-8\", [[\"text-decoration-thickness\", \"8px\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"decoration\",\n prop: \"text-decoration-thickness\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `${value}px`,\n description: \"text-decoration-thickness utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Underline Offset ---\nstaticUtility(\"underline-offset-auto\", [[\"text-underline-offset\", \"auto\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-0\", [[\"text-underline-offset\", \"0px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-1\", [[\"text-underline-offset\", \"1px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-2\", [[\"text-underline-offset\", \"2px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-4\", [[\"text-underline-offset\", \"4px\"]], { category: 'typography' });\nstaticUtility(\"underline-offset-8\", [[\"text-underline-offset\", \"8px\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"underline-offset\",\n prop: \"text-underline-offset\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `${value}px`,\n description: \"text-underline-offset utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Text Wrap ---\nstaticUtility(\"text-wrap\", [[\"text-wrap\", \"wrap\"]], { category: 'typography' });\nstaticUtility(\"text-nowrap\", [[\"text-wrap\", \"nowrap\"]], { category: 'typography' });\nstaticUtility(\"text-balance\", [[\"text-wrap\", \"balance\"]], { category: 'typography' });\nstaticUtility(\"text-pretty\", [[\"text-wrap\", \"pretty\"]], { category: 'typography' });\n\n// --- Typography: Text Indent ---\nfunctionalUtility({\n name: \"indent\",\n prop: \"text-indent\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => `calc(var(--spacing) * ${value})`,\n handleNegativeBareValue: ({ value }) => `calc(var(--spacing) * -${value})`,\n description: \"text-indent utility (spacing, negative, arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Vertical Align ---\nstaticUtility(\"align-baseline\", [[\"vertical-align\", \"baseline\"]], { category: 'typography' });\nstaticUtility(\"align-top\", [[\"vertical-align\", \"top\"]], { category: 'typography' });\nstaticUtility(\"align-middle\", [[\"vertical-align\", \"middle\"]], { category: 'typography' });\nstaticUtility(\"align-bottom\", [[\"vertical-align\", \"bottom\"]], { category: 'typography' });\nstaticUtility(\"align-text-top\", [[\"vertical-align\", \"text-top\"]], { category: 'typography' });\nstaticUtility(\"align-text-bottom\", [[\"vertical-align\", \"text-bottom\"]], { category: 'typography' });\nstaticUtility(\"align-sub\", [[\"vertical-align\", \"sub\"]], { category: 'typography' });\nstaticUtility(\"align-super\", [[\"vertical-align\", \"super\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"align\",\n prop: \"vertical-align\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"vertical-align utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n\n// --- Typography: Hyphens ---\nstaticUtility(\"hyphens-none\", [[\"hyphens\", \"none\"]], { category: 'typography' });\nstaticUtility(\"hyphens-manual\", [[\"hyphens\", \"manual\"]], { category: 'typography' });\nstaticUtility(\"hyphens-auto\", [[\"hyphens\", \"auto\"]], { category: 'typography' });\n\n// --- Typography: Content ---\nstaticUtility(\"content-none\", [[\"content\", \"none\"]], { category: 'typography' });\n\nfunctionalUtility({\n name: \"content\",\n prop: \"content\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(\"content\", `\"${value}\"`)],\n handleCustomProperty: (value) => [decl(\"content\", `var(${value})`)],\n description: \"content utility (arbitrary, custom property supported)\",\n category: \"typography\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { AstNode, atRoot, atRule, decl, property, styleRule } from \"../core/ast\";\nimport { parseColor, parseLength, parseNumber } from \"../core/utils\";\n\nconst gradientStopProperties = () => {\n return atRoot([\n property('--baro-gradient-position'),\n property('--baro-gradient-from', '#0000', '<color>'),\n property('--baro-gradient-via', '#0000', '<color>'),\n property('--baro-gradient-to', '#0000', '<color>'),\n property('--baro-gradient-stops', \"transparent\"),\n property('--baro-gradient-from-position', '0%', '<length-percentage>'),\n property('--baro-gradient-via-position', '50%', '<length-percentage>'),\n property('--baro-gradient-to-position', '100%', '<length-percentage>'),\n ], \"background\")\n}\n\n\n// --- Background Attachment ---\nstaticUtility(\"bg-fixed\", [[\"background-attachment\", \"fixed\"]], { category: 'background' });\nstaticUtility(\"bg-local\", [[\"background-attachment\", \"local\"]], { category: 'background' });\nstaticUtility(\"bg-scroll\", [[\"background-attachment\", \"scroll\"]], { category: 'background' });\n\n// --- Background Clip ---\nstaticUtility(\"bg-clip-border\", [[\"background-clip\", \"border-box\"]], { category: 'background' });\nstaticUtility(\"bg-clip-padding\", [[\"background-clip\", \"padding-box\"]], { category: 'background' });\nstaticUtility(\"bg-clip-content\", [[\"background-clip\", \"content-box\"]], { category: 'background' });\nstaticUtility(\"bg-clip-text\", [[\"background-clip\", \"text\"]], { category: 'background' });\n\n// --- Background Color ---\nstaticUtility(\"bg-inherit\", [[\"background-color\", \"inherit\"]], { category: 'background' });\nstaticUtility(\"bg-current\", [[\"background-color\", \"currentColor\"]], { category: 'background' });\nstaticUtility(\"bg-transparent\", [[\"background-color\", \"transparent\"]], { category: 'background' });\n\n// --- Background Image ---\nstaticUtility(\"bg-none\", [[\"background-image\", \"none\"]], { category: 'background' });\n\n// --- Background Origin ---\nstaticUtility(\"bg-origin-border\", [[\"background-origin\", \"border-box\"]], { category: 'background' });\nstaticUtility(\"bg-origin-padding\", [[\"background-origin\", \"padding-box\"]], { category: 'background' });\nstaticUtility(\"bg-origin-content\", [[\"background-origin\", \"content-box\"]], { category: 'background' });\n\n// --- Background Position ---\n[\n [\"bg-bottom\", \"bottom\"],\n [\"bg-center\", \"center\"],\n [\"bg-left\", \"left\"],\n [\"bg-left-bottom\", \"left bottom\"],\n [\"bg-left-top\", \"left top\"],\n [\"bg-right\", \"right\"],\n [\"bg-right-bottom\", \"right bottom\"],\n [\"bg-right-top\", \"right top\"],\n [\"bg-top\", \"top\"],\n].forEach(([name, value]) => {\n staticUtility(name, [[\"background-position\", value]], { category: 'background' });\n});\n\n/**\n * background-position utility (arbitrary, custom property supported)\n *\n * bg-position-[length] → background-position: [length]\n * bg-position-[length] → background-position: [length]\n */\nfunctionalUtility({\n name: \"bg-position\",\n prop: \"background-position\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"background-position utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Repeat ---\nstaticUtility(\"bg-repeat\", [[\"background-repeat\", \"repeat\"]], { category: 'background' });\nstaticUtility(\"bg-no-repeat\", [[\"background-repeat\", \"no-repeat\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-x\", [[\"background-repeat\", \"repeat-x\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-y\", [[\"background-repeat\", \"repeat-y\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-round\", [[\"background-repeat\", \"round\"]], { category: 'background' });\nstaticUtility(\"bg-repeat-space\", [[\"background-repeat\", \"space\"]], { category: 'background' });\n\n// --- Background Size ---\nstaticUtility(\"bg-auto\", [[\"background-size\", \"auto\"]], { category: 'background' });\nstaticUtility(\"bg-cover\", [[\"background-size\", \"cover\"]], { category: 'background' });\nstaticUtility(\"bg-contain\", [[\"background-size\", \"contain\"]], { category: 'background' });\n\nfunctionalUtility({\n name: \"bg-size\",\n prop: \"background-size\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n description: \"background-size utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Gradients: Linear ---\nconst positionValue = (position: string) => {\n return [\n decl(\"--baro-gradient-position\", position), \n styleRule(\"@supports (background-image: linear-gradient(in lab, red, red))\", [\n decl(\"--baro-gradient-position\", `${position} in oklab`),\n ]),\n decl(\n \"background-image\",\n `linear-gradient(${position}, var(--baro-gradient-stops))`\n ),\n ];\n};\n\n[\n [\"bg-linear-to-t\", positionValue(\"to top\")],\n [\"bg-linear-to-tr\", positionValue(\"to top right\")],\n [\"bg-linear-to-r\", positionValue(\"to right\")],\n [\"bg-linear-to-br\", positionValue(\"to bottom right\")],\n [\"bg-linear-to-b\", positionValue(\"to bottom\")],\n [\"bg-linear-to-bl\", positionValue(\"to bottom left\")],\n [\"bg-linear-to-l\", positionValue(\"to left\")],\n [\"bg-linear-to-tl\", positionValue(\"to top left\")],\n\n // fallback , legacy CSS compatibility\n [\"bg-gradient-to-t\", positionValue(\"to top\")],\n [\"bg-gradient-to-tr\", positionValue(\"to top right\")],\n [\"bg-gradient-to-r\", positionValue(\"to right\")],\n [\"bg-gradient-to-br\", positionValue(\"to bottom right\")],\n [\"bg-gradient-to-b\", positionValue(\"to bottom\")],\n [\"bg-gradient-to-bl\", positionValue(\"to bottom left\")],\n [\"bg-gradient-to-l\", positionValue(\"to left\")],\n [\"bg-gradient-to-tl\", positionValue(\"to top left\")],\n].forEach(([name, value]) => {\n staticUtility(name as string, value as AstNode[], { category: 'background', priority: 1000 });\n});\n// bg-linear-<angle> (e.g., bg-linear-45)\nfunctionalUtility({\n name: \"bg-linear\",\n prop: \"background-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, context, token) => {\n if (parseNumber(value)) {\n // bg-linear-45 → linear-gradient(45deg in oklab, var(--baro-gradient-stops))\n return [\n decl(\n \"background-image\",\n `linear-gradient(${value}deg in oklab, var(--baro-gradient-stops))`\n ),\n ];\n }\n if (token.arbitrary) {\n // bg-linear-[25deg,red_5%,yellow_60%,lime_90%,teal]\n return [\n decl(\n \"background-image\",\n `linear-gradient(var(--baro-gradient-stops, ${value}))`\n ),\n ];\n }\n if (token.customProperty) {\n // bg-linear-(--my-gradient)\n return [\n decl(\n \"background-image\",\n `linear-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\n \"background-image\",\n `linear-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ],\n description:\n \"linear-gradient background-image utility (angle, arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Gradients: Radial ---\nstaticUtility(\"bg-radial\", [\n [\"background-image\", \"radial-gradient(in oklab, var(--baro-gradient-stops))\"],\n], { category: 'background' });\nfunctionalUtility({\n name: \"bg-radial\",\n prop: \"background-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, context, token) => {\n if (token.arbitrary) {\n // bg-radial-[at_50%_75%]\n return [\n decl(\n \"background-image\",\n `radial-gradient(var(--baro-gradient-stops, ${value}))`\n ),\n ];\n }\n if (token.customProperty) {\n // bg-radial-(--my-gradient)\n return [\n decl(\n \"background-image\",\n `radial-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(\n \"background-image\",\n `radial-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ],\n description:\n \"radial-gradient background-image utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Background Gradients: Conic ---\nstaticUtility(\"bg-conic\", [\n [\n \"background-image\",\n \"conic-gradient(from 0deg in oklab, var(--baro-gradient-stops))\",\n ],\n], { category: 'background' });\nfunctionalUtility({\n name: \"bg-conic\",\n prop: \"background-image\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, context, token) => {\n if (parseNumber(value)) {\n // bg-conic-180 → conic-gradient(from 180deg in oklab, var(--baro-gradient-stops))\n return [\n decl(\n \"background-image\",\n `conic-gradient(from ${value}deg in oklab, var(--baro-gradient-stops))`\n ),\n ];\n }\n if (token.arbitrary) {\n // bg-conic-[at_50%_75%]\n return [decl(\"background-image\", `${value}`)];\n }\n if (token.customProperty) {\n // bg-conic-(--my-gradient)\n return [\n decl(\n \"background-image\",\n `conic-gradient(var(--baro-gradient-stops, var(${value})))`\n ),\n ];\n }\n return null;\n },\n handleCustomProperty: (value) => [decl(\"background-image\", `var(${value})`)],\n description:\n \"conic-gradient background-image utility (angle, arbitrary, custom property supported)\",\n category: \"background\",\n});\n\n// --- Gradient Stops ---\n\n\n\n// from-*, via-*, to-* (color, percentage, custom property, arbitrary)\n[\"from\", \"via\", \"to\"].forEach((stop) => {\n functionalUtility({\n name: stop,\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, context, token, extra) => {\n // console.log('[gradient stop] value', value, context, token, extra);\n if (extra?.realThemeValue) {\n if (stop === \"from\") {\n\n let color = value; \n if (extra?.opacity) {\n color = `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`;\n }\n\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-from`, color),\n // decl(`--baro-gradient-to`, \"var(--baro-gradient-to, transparent)\"),\n decl(`--baro-gradient-stops`, \"var(--baro-gradient-from),var(--baro-gradient-to)\")\n ];\n }\n\n if (stop === \"via\") {\n let color = value; \n if (extra?.opacity) {\n color = `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`;\n }\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, color),\n decl(`--baro-gradient-stops`, `var(--baro-gradient-from), ${value} var(--baro-gradient-via-position), var(--baro-gradient-to)`) // via 포함 stops\n ];\n }\n\n if (stop === \"to\") {\n let color = value; \n if (extra?.opacity) {\n color = `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`;\n }\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, color),\n ];\n }\n }\n\n // to-50% → --baro-gradient-to-position: 50%\n if (parseLength(value)) {\n return [decl(`--baro-gradient-${stop}-position`, value)];\n }\n\n // to-50% → --baro-gradient-to-position: 50%\n if (parseNumber(value)) {\n return [decl(`--baro-gradient-${stop}-position`, `${value}%`)];\n }\n\n // to-red-500 → --baro-gradient-to: red-500\n if (parseColor(value)) {\n\n if (stop === \"from\") {\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-from`, value),\n decl(`--baro-gradient-to`, \"transparent\"),\n decl(`--baro-gradient-stops`, \"var(--baro-gradient-from),var(--baro-gradient-to)\")\n ];\n }\n\n if (stop === \"via\") {\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, value),\n decl(`--baro-gradient-stops`, `var(--baro-gradient-from), ${value} var(--baro-gradient-via-position), var(--baro-gradient-to)`) // via 포함 stops\n ];\n }\n\n if (stop === \"to\") {\n return [\n gradientStopProperties(),\n decl(`--baro-gradient-to`, value),\n ];\n }\n }\n return null;\n },\n handleCustomProperty: (value) => [\n decl(`--baro-gradient-${stop}`, `var(${value})`),\n ],\n description: `${stop} gradient stop utility (color, percent, custom property, arbitrary supported)`,\n category: \"background\",\n });\n // position variant: from-10%, via-30%, to-90%\n functionalUtility({\n name: `${stop}-position`,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(`--baro-gradient-${stop}-position`, value)],\n handleCustomProperty: (value) => [\n decl(`--baro-gradient-${stop}-position`, `var(${value})`),\n ],\n description: `${stop}-position gradient stop position utility (percent, custom property, arbitrary supported)`,\n category: \"background\",\n });\n});\n\n/**\n * background-size utility (arbitrary, custom property supported)\n * bg-[length] → background-size: [length]\n * bg-[length] → background-size: [length]\n * bg-[color] → background-color: [color]\n * bg-[url] → background-image: [url]\n * bg-[radial-gradient()] → background-image: radial-gradient(var(--baro-gradient-stops))\n * bg-red-500 → background-color: var(--color-red-500)\n */\nfunctionalUtility({\n name: \"bg\",\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, context, token, extra) => {\n if (value.startsWith(\"url(\")) {\n return [decl(\"background-image\", value)];\n }\n\n // if (value.startsWith(\"radial-gradient(\")) {\n // return [decl(\"background-image\", value)];\n // }\n\n if (value.startsWith(\"length:\")) {\n return [decl(\"background-size\", value.replace(\"length:\", \"\"))];\n }\n\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\n \"background-color\",\n `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`\n ),\n ]),\n decl(\"background-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ];\n }\n return [decl(\"background-color\", value)];\n }\n\n if (parseColor(value)) {\n const parsedColor = parseColor(value);\n\n if (value.startsWith(\"color:\")) {\n return [decl(\"background-color\", parsedColor || value)];\n }\n\n return [decl(\"background-color\", value)];\n }\n\n if (parseLength(value)) {\n return [decl(\"background-size\", value)];\n }\n\n return null;\n },\n handleCustomProperty: (value) => [decl(\"background-size\", `var(${value})`)],\n description: \"background-size utility (arbitrary, custom property supported)\",\n category: \"background\",\n});\n","import { staticUtility, functionalUtility } from \"../core/registry\";\nimport { atRule, decl } from \"../core/ast\";\nimport { parseNumber, parseLength, parseColor } from \"../core/utils\";\n\n// --- Border Radius ---\n// border-radius documentation\n\n// Static border radius utilities\nstaticUtility(\"rounded-none\", [[\"border-radius\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"rounded-sm\", [[\"border-radius\", \"var(--radius-sm)\"]], { category: 'borders' });\nstaticUtility(\"rounded\", [[\"border-radius\", \"var(--radius)\"]], { category: 'borders' });\nstaticUtility(\"rounded-md\", [[\"border-radius\", \"var(--radius-md)\"]], { category: 'borders' });\nstaticUtility(\"rounded-lg\", [[\"border-radius\", \"var(--radius-lg)\"]], { category: 'borders' });\nstaticUtility(\"rounded-xl\", [[\"border-radius\", \"var(--radius-xl)\"]], { category: 'borders' });\nstaticUtility(\"rounded-2xl\", [[\"border-radius\", \"var(--radius-2xl)\"]], { category: 'borders' });\nstaticUtility(\"rounded-3xl\", [[\"border-radius\", \"var(--radius-3xl)\"]], { category: 'borders' });\nstaticUtility(\"rounded-full\", [[\"border-radius\", \"9999px\"]], { category: 'borders' });\n\n\n// Individual corner radius utilities\n[\n [\"rounded-t\", [\"border-top-left-radius\", \"border-top-right-radius\"]],\n [\"rounded-r\", [\"border-top-right-radius\", \"border-bottom-right-radius\"]],\n [\"rounded-b\", [\"border-bottom-right-radius\", \"border-bottom-left-radius\"]],\n [\"rounded-l\", [\"border-top-left-radius\", \"border-bottom-left-radius\"]],\n [\"rounded-tl\", [\"border-top-left-radius\"]],\n [\"rounded-tr\", [\"border-top-right-radius\"]],\n [\"rounded-br\", [\"border-bottom-right-radius\"]],\n [\"rounded-bl\", [\"border-bottom-left-radius\"]],\n].forEach(([name, props]) => {\n const propList = props as string[];\n // Static utilities\n staticUtility(`${name}-none`, propList.map(prop => [prop, \"0px\"]), { category: 'borders' });\n staticUtility(`${name}-sm`, propList.map(prop => [prop, \"var(--radius-sm)\"]), { category: 'borders' });\n staticUtility(`${name}`, propList.map(prop => [prop, \"var(--radius)\"]), { category: 'borders' });\n staticUtility(`${name}-md`, propList.map(prop => [prop, \"var(--radius-md)\"]), { category: 'borders' });\n staticUtility(`${name}-lg`, propList.map(prop => [prop, \"var(--radius-lg)\"]), { category: 'borders' });\n staticUtility(`${name}-xl`, propList.map(prop => [prop, \"var(--radius-xl)\"]), { category: 'borders' });\n staticUtility(`${name}-2xl`, propList.map(prop => [prop, \"var(--radius-2xl)\"]), { category: 'borders' });\n staticUtility(`${name}-3xl`, propList.map(prop => [prop, \"var(--radius-3xl)\"]), { category: 'borders' });\n staticUtility(`${name}-full`, propList.map(prop => [prop, \"9999px\"]), { category: 'borders' });\n\n // Functional utility\n functionalUtility({\n name: name as string,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n return null;\n },\n handle: (value) => propList.map(prop => decl(prop, value)),\n description: `${name} utility (spacing, arbitrary, custom property support)`,\n category: \"borders\",\n });\n});\n\n\n// Functional border radius utility\nfunctionalUtility({\n name: \"rounded\",\n prop: \"border-radius\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `calc(var(--spacing) * ${value})`;\n }\n return null;\n },\n description: \"border-radius utility (spacing, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n// --- Border Width ---\n// border-width documentation\n\n// Static border width utilities\nstaticUtility(\"border-0\", [[\"border-width\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"border-2\", [[\"border-width\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"border-4\", [[\"border-width\", \"4px\"]], { category: 'borders' });\nstaticUtility(\"border-8\", [[\"border-width\", \"8px\"]], { category: 'borders' });\nstaticUtility(\"border\", [[\"border-width\", \"1px\"]], { category: 'borders' });\n\n\n\n// Individual side border width utilities\n[\n [\"border-x\", [\"border-left-width\", \"border-right-width\"]],\n [\"border-y\", [\"border-top-width\", \"border-bottom-width\"]],\n [\"border-t\", [\"border-top-width\"]],\n [\"border-r\", [\"border-right-width\"]],\n [\"border-b\", [\"border-bottom-width\"]],\n [\"border-l\", [\"border-left-width\"]],\n].forEach(([name, props]) => {\n const propList = props as string[];\n // Static utilities\n staticUtility(`${name}-0`, propList.map(prop => [prop, \"0px\"]));\n staticUtility(`${name}-2`, propList.map(prop => [prop, \"2px\"]));\n staticUtility(`${name}-4`, propList.map(prop => [prop, \"4px\"]));\n staticUtility(`${name}-8`, propList.map(prop => [prop, \"8px\"]));\n staticUtility(`${name}`, propList.map(prop => [prop, \"1px\"]));\n\n // Functional utility\n functionalUtility({\n name: name as string,\n themeKeys: [\"borderWidth\", \"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `${value}px`;\n }\n return null;\n },\n handle: (value, ctx, token) => {\n if (parseColor(value)) {\n return propList.map(prop => decl(prop.replace(\"width\", \"color\"), value));\n }\n if (token.arbitrary) {\n return propList.map(prop => decl(prop, value));\n }\n return null;\n },\n handleCustomProperty: (value) => {\n\n if (value.startsWith(\"length:\")) {\n return propList.map(prop => decl(prop, `var(${value.replace(\"length:\", \"\")})`));\n }\n\n return propList.map(prop => decl(prop.replace(\"width\", \"color\"), `var(${value})`));\n },\n description: `${name} utility (number, arbitrary, custom property support)`,\n category: \"borders\",\n });\n});\n\n// --- Border Color ---\n// border-color documentation\n\n// Static border color utilities\nstaticUtility(\"border-inherit\", [[\"border-color\", \"inherit\"]], { category: 'borders' });\nstaticUtility(\"border-current\", [[\"border-color\", \"currentColor\"]], { category: 'borders' });\nstaticUtility(\"border-transparent\", [[\"border-color\", \"transparent\"]], { category: 'borders' });\n\n// --- Border Style ---\n// border-style documentation\n\n// Static border style utilities\nstaticUtility(\"border-solid\", [[\"border-style\", \"solid\"]], { category: 'borders' });\nstaticUtility(\"border-dashed\", [[\"border-style\", \"dashed\"]], { category: 'borders' });\nstaticUtility(\"border-dotted\", [[\"border-style\", \"dotted\"]], { category: 'borders' });\nstaticUtility(\"border-double\", [[\"border-style\", \"double\"]], { category: 'borders' });\nstaticUtility(\"border-hidden\", [[\"border-style\", \"hidden\"]], { category: 'borders' });\nstaticUtility(\"border-none\", [[\"border-style\", \"none\"]], { category: 'borders' });\n\n\n// Functional border width utility\nfunctionalUtility({\n name: \"border\",\n themeKeys: [\"colors\", \"borderWidth\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsOpacity: true,\n handle: (value, ctx, token, extra) => {\n\n if (extra?.realThemeValue) {\n if (extra.opacity) {\n return [\n atRule(\"supports\", `(color:color-mix(in lab, red, red))`, [\n decl(\"border-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ]),\n decl(\"border-color\", `color-mix(in lab, ${value} ${extra.opacity}%, transparent)`),\n ];\n }\n return [decl(\"border-color\", value)];\n }\n\n if (token.arbitrary) {\n if (parseLength(value)) {\n return [decl(\"border-width\", value)];\n }\n return [decl(\"border-color\", value)];\n }\n\n if (parseNumber(value)) {\n return [decl(\"border-width\", `${value}px`)];\n }\n if (parseColor(value)) {\n return [decl(\"border-color\", value)];\n }\n return null;\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"length:\")) {\n return [decl(\"border-width\", `var(${value.replace(\"length:\", \"\")})`)];\n }\n return [decl(\"border-color\", `var(${value})`)];\n },\n description: \"border-width utility (number, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n// --- Outline Width ---\n// outline-width documentation\n\n// Static outline width utilities\nstaticUtility(\"outline-0\", [[\"outline-width\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"outline-1\", [[\"outline-width\", \"1px\"]], { category: 'borders' });\nstaticUtility(\"outline-2\", [[\"outline-width\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"outline-4\", [[\"outline-width\", \"4px\"]], { category: 'borders' });\nstaticUtility(\"outline-8\", [[\"outline-width\", \"8px\"]], { category: 'borders' });\n\n// --- Outline Color ---\n// outline-color documentation\n\n// Static outline color utilities\nstaticUtility(\"outline-inherit\", [[\"outline-color\", \"inherit\"]], { category: 'borders' });\nstaticUtility(\"outline-current\", [[\"outline-color\", \"currentColor\"]], { category: 'borders' });\nstaticUtility(\"outline-transparent\", [[\"outline-color\", \"transparent\"]], { category: 'borders' });\n\n\n// --- Outline Style ---\n// outline-style documentation\n\n// Static outline style utilities\nstaticUtility(\"outline-none\", [[\"outline\", \"2px solid transparent\"], [\"outline-offset\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"outline\", [[\"outline-style\", \"solid\"]], { category: 'borders' });\nstaticUtility(\"outline-dashed\", [[\"outline-style\", \"dashed\"]], { category: 'borders' });\nstaticUtility(\"outline-dotted\", [[\"outline-style\", \"dotted\"]], { category: 'borders' });\nstaticUtility(\"outline-double\", [[\"outline-style\", \"double\"]], { category: 'borders' });\n\n// --- Outline Offset ---\n// outline-offset documentation\n\n// Static outline offset utilities\nstaticUtility(\"outline-offset-0\", [[\"outline-offset\", \"0px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-1\", [[\"outline-offset\", \"1px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-2\", [[\"outline-offset\", \"2px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-4\", [[\"outline-offset\", \"4px\"]], { category: 'borders' });\nstaticUtility(\"outline-offset-8\", [[\"outline-offset\", \"8px\"]], { category: 'borders' });\n\n// Functional outline offset utility\nfunctionalUtility({\n name: \"outline-offset\",\n prop: \"outline-offset\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `${value}px`;\n }\n return null;\n },\n description: \"outline-offset utility (number, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n\n// Functional outline color utility\nfunctionalUtility({\n name: \"outline\",\n themeKeys: [\"colors\", \"borderWidth\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token) => {\n\n if (parseColor(value)) {\n return [decl(\"outline-color\", value)];\n }\n\n if (parseNumber(value)) {\n return [decl(\"outline-width\", `${value}px`)];\n }\n\n // Handle arbitrary values\n if (token.arbitrary) {\n\n if (parseLength(value)) {\n return [decl(\"outline-width\", value)];\n }\n\n return [decl(\"outline-color\", value)];\n }\n\n\n\n return null;\n },\n handleCustomProperty: (value) => {\n\n if (value.startsWith(\"color:\")) {\n return [decl(\"outline-color\", value.replace(\"color:\", \"\"))];\n }\n\n if (value.startsWith(\"length:\")) {\n return [decl(\"outline-width\", `var(${value.replace(\"length:\", \"\")})`)];\n }\n\n return [decl(\"outline-color\", `var(${value})`)];\n },\n description: \"outline-color utility (theme colors, arbitrary, custom property support)\",\n category: \"borders\",\n});\n\n\n// Functional outline width utility\nfunctionalUtility({\n name: \"outline\",\n prop: \"outline-width\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handleBareValue: ({ value }) => {\n if (parseNumber(value)) {\n return `${value}px`;\n }\n return null;\n },\n description: \"outline-width utility (number, arbitrary, custom property support)\",\n category: \"borders\",\n});\n","// --- Transform Utilities ---\nimport { atRoot, decl, property } from \"../core/ast\";\nimport { staticUtility, functionalUtility } from \"../core/registry\";\nimport { parseFractionOrNumber, parseNumber } from \"../core/utils\";\n\n// --- Transform ---\n// transform-none: disables all transforms\nstaticUtility(\"transform-none\", [[\"transform\", \"none\"]], {\n category: \"transform\",\n});\n\n// transform-gpu: enables GPU acceleration for transforms\n// Output: transform: translateZ(0) var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y);\nstaticUtility(\n \"transform-gpu\",\n [\n [\n \"transform\",\n \"translateZ(0) var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y)\",\n ],\n ],\n { category: \"transform\" }\n);\n\n// transform-cpu: disables GPU acceleration, uses only CPU transforms\n// Output: transform: var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y);\nstaticUtility(\"transform-cpu\", [\n [\n \"transform\",\n \"var(--baro-rotate-x) var(--baro-rotate-y) var(--baro-rotate-z) var(--baro-skew-x) var(--baro-skew-y)\",\n ],\n]);\n\n// --- Transform Style ---\n// transform-style documentation\n\n// transform-3d: transform-style: preserve-3d;\nstaticUtility(\"transform-3d\", [[\"transform-style\", \"preserve-3d\"]], {\n category: \"transform\",\n});\n// transform-flat: transform-style: flat;\nstaticUtility(\"transform-flat\", [[\"transform-style\", \"flat\"]], {\n category: \"transform\",\n});\n\n// transform-(<custom-property>): sets transform to a CSS custom property value\n// Example: transform-(--my-transform) → transform: var(--my-transform);\nfunctionalUtility({\n name: \"transform\",\n prop: \"transform\",\n supportsCustomProperty: true,\n handleCustomProperty: (value) => [decl(\"transform\", `var(${value})`)],\n description:\n \"transform utility for custom property (transform-(--my-transform))\",\n category: \"transform\",\n});\n\n// transform-[<value>]: sets transform to an arbitrary value\n// Example: transform-[matrix(1,2,3,4,5,6)] → transform: matrix(1,2,3,4,5,6);\nfunctionalUtility({\n name: \"transform\",\n prop: \"transform\",\n supportsArbitrary: true,\n handle: (value) => [decl(\"transform\", value)],\n description: \"transform utility for arbitrary value (transform-[...])\",\n category: \"transform\",\n});\n\n// --- Backface Visibility ---\n// backface-visibility documentation\nstaticUtility(\"backface-hidden\", [[\"backface-visibility\", \"hidden\"]], {\n category: \"transform\",\n});\nstaticUtility(\"backface-visible\", [[\"backface-visibility\", \"visible\"]], {\n category: \"transform\",\n});\n\n// --- Perspective ---\n// perspective documentation\nstaticUtility(\n \"perspective-dramatic\",\n [[\"perspective\", \"var(--perspective-dramatic)\"]],\n { category: \"transform\" }\n); // 100px\nstaticUtility(\n \"perspective-near\",\n [[\"perspective\", \"var(--perspective-near)\"]],\n { category: \"transform\" }\n); // 300px\nstaticUtility(\n \"perspective-normal\",\n [[\"perspective\", \"var(--perspective-normal)\"]],\n { category: \"transform\" }\n); // 500px\nstaticUtility(\n \"perspective-midrange\",\n [[\"perspective\", \"var(--perspective-midrange)\"]],\n { category: \"transform\" }\n); // 800px\nstaticUtility(\n \"perspective-distant\",\n [[\"perspective\", \"var(--perspective-distant)\"]],\n { category: \"transform\" }\n); // 1200px\nstaticUtility(\"perspective-none\", [[\"perspective\", \"none\"]], {\n category: \"transform\",\n});\n\n// --- Perspective Origin ---\n// perspective-origin documentation\nstaticUtility(\"perspective-origin-center\", [[\"perspective-origin\", \"center\"]], {\n category: \"transform\",\n});\nstaticUtility(\"perspective-origin-top\", [[\"perspective-origin\", \"top\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-top-right\",\n [[\"perspective-origin\", \"top right\"]],\n { category: \"transform\" }\n);\nstaticUtility(\"perspective-origin-right\", [[\"perspective-origin\", \"right\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-bottom-right\",\n [[\"perspective-origin\", \"bottom right\"]],\n { category: \"transform\" }\n);\nstaticUtility(\"perspective-origin-bottom\", [[\"perspective-origin\", \"bottom\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-bottom-left\",\n [[\"perspective-origin\", \"bottom left\"]],\n { category: \"transform\" }\n);\nstaticUtility(\"perspective-origin-left\", [[\"perspective-origin\", \"left\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"perspective-origin-top-left\",\n [[\"perspective-origin\", \"top left\"]],\n { category: \"transform\" }\n);\n\nfunctionalUtility({\n name: \"perspective-origin\",\n prop: \"perspective-origin\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => [decl(\"perspective-origin\", value)],\n handleCustomProperty: (value) => [\n decl(\"perspective-origin\", `var(${value})`),\n ],\n description:\n \"perspective-origin utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// perspective-(<custom-property>) → perspective: var(--custom-property)\nfunctionalUtility({\n name: \"perspective\",\n prop: \"perspective\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value) => {\n // perspective-[750px] → perspective: 750px\n return [decl(\"perspective\", value)];\n },\n handleCustomProperty: (value) => [decl(\"perspective\", `var(${value})`)],\n description:\n \"perspective utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Rotate ---\n// rotate documentation\n\n// rotate-none\nstaticUtility(\"rotate-none\", [[\"rotate\", \"none\"]], { category: \"transform\" });\n\n// rotate-x-<number>, -rotate-x-<number>, rotate-x-(<custom-property>), rotate-x-[<value>]\nfunctionalUtility({\n name: \"rotate-x\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-x-45 → transform: rotateX(45deg) var(--baro-rotate-y)\n // -rotate-x-45 → transform: rotateX(-45deg) var(--baro-rotate-y)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `rotateX(${sign}${deg}) var(--baro-rotate-y)`)];\n }\n // rotate-x-[3.142rad] → transform: rotateX(3.142rad) var(--baro-rotate-y)\n return [decl(\"transform\", `rotateX(${value}) var(--baro-rotate-y)`)];\n },\n handleCustomProperty: (value) => [\n decl(\"transform\", `rotateX(var(${value})) var(--baro-rotate-y)`),\n ],\n description: \"rotate-x utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// rotate-y-<number>, -rotate-y-<number>, rotate-y-(<custom-property>), rotate-y-[<value>]\nfunctionalUtility({\n name: \"rotate-y\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-y-45 → transform: var(--baro-rotate-x) rotateY(45deg)\n // -rotate-y-45 → transform: var(--baro-rotate-x) rotateY(-45deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `var(--baro-rotate-x) rotateY(${sign}${deg})`)];\n }\n // rotate-y-[3.142rad] → transform: var(--baro-rotate-x) rotateY(3.142rad)\n return [decl(\"transform\", `var(--baro-rotate-x) rotateY(${value})`)];\n },\n handleCustomProperty: (value) => [\n decl(\"transform\", `var(--baro-rotate-x) rotateY(var(${value}))`),\n ],\n description: \"rotate-y utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// rotate-z-<number>, -rotate-z-<number>, rotate-z-(<custom-property>), rotate-z-[<value>]\nfunctionalUtility({\n name: \"rotate-z\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-z-45 → transform: var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(45deg)\n // -rotate-z-45 → transform: var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(-45deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [\n decl(\n \"transform\",\n `var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(${sign}${deg})`\n ),\n ];\n }\n // rotate-z-[3.142rad] → transform: var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(3.142rad)\n return [\n decl(\n \"transform\",\n `var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(${value})`\n ),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\n \"transform\",\n `var(--baro-rotate-x) var(--baro-rotate-y) rotateZ(var(${value}))`\n ),\n ],\n description: \"rotate-z utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// rotate-<number>, -rotate-<number>, rotate-(<custom-property>), rotate-[<value>]\nfunctionalUtility({\n name: \"rotate\",\n prop: \"rotate\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // rotate-45 → rotate: 45deg\n // -rotate-45 → rotate: calc(45deg * -1)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n if (negative || String(value).startsWith(\"-\")) {\n return [decl(\"rotate\", `calc(${deg} * -1)`)];\n }\n\n return [decl(\"rotate\", deg)];\n }\n // rotate-[3.142rad] → rotate: 3.142rad\n return [decl(\"rotate\", value)];\n },\n handleCustomProperty: (value) => [decl(\"rotate\", `var(${value})`)],\n description: \"rotate utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Scale ---\n// scale documentation\n\n// scale-none\nstaticUtility(\"scale-none\", [[\"scale\", \"none\"]], { category: \"transform\" });\n// scale-3d\nstaticUtility(\n \"scale-3d\",\n [[\"scale\", \"var(--baro-scale-x) var(--baro-scale-y) var(--baro-scale-z)\"]],\n { category: \"transform\" }\n);\n\n// scale-x-<number>, -scale-x-<number>, scale-x-(<custom-property>), scale-x-[<value>]\nfunctionalUtility({\n name: \"scale-x\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [decl(\"scale\", `${value}`)];\n }\n\n // scale-x-75 → scale: 75% var(--baro-scale-y)\n // -scale-x-75 → scale: calc(75% * -1) var(--baro-scale-y)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"scale\", `calc(${pct} * ${sign}1) var(--baro-scale-y)`)];\n }\n // scale-x-[1.7] → scale: 1.7 var(--baro-scale-y)\n return [decl(\"scale\", `${value} var(--baro-scale-y)`)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(${value}) var(--baro-scale-y)`),\n ],\n description: \"scale-x utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// scale-y-<number>, -scale-y-<number>, scale-y-(<custom-property>), scale-y-[<value>]\nfunctionalUtility({\n name: \"scale-y\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [decl(\"scale\", `var(--baro-scale-x) ${value}`)];\n }\n\n // scale-y-75 → scale: var(--baro-scale-x) 75%\n // -scale-y-75 → scale: var(--baro-scale-x) calc(75% * -1)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"scale\", `var(--baro-scale-x) calc(${pct} * ${sign}1)`)];\n }\n // scale-y-[1.7] → scale: var(--baro-scale-x) 1.7\n return [decl(\"scale\", `var(--baro-scale-x) ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(--baro-scale-x) var(${value})`),\n ],\n description: \"scale-y utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// scale-z-<number>, -scale-z-<number>, scale-z-(<custom-property>), scale-z-[<value>]\nfunctionalUtility({\n name: \"scale-z\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [\n decl(\"scale\", `var(--baro-scale-x) var(--baro-scale-y) ${value}`),\n ];\n }\n\n // scale-z-75 → scale: var(--baro-scale-x) var(--baro-scale-y) 75%\n // -scale-z-75 → scale: var(--baro-scale-x) var(--baro-scale-y) calc(75% * -1)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [\n decl(\n \"scale\",\n `var(--baro-scale-x) var(--baro-scale-y) calc(${pct} * ${sign}1)`\n ),\n ];\n }\n // scale-z-[1.7] → scale: var(--baro-scale-x) var(--baro-scale-y) 1.7\n return [decl(\"scale\", `var(--baro-scale-x) var(--baro-scale-y) ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(--baro-scale-x) var(--baro-scale-y) var(${value})`),\n ],\n description: \"scale-z utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// scale-<number>, -scale-<number>, scale-(<custom-property>), scale-[<value>]\nfunctionalUtility({\n name: \"scale\",\n prop: \"scale\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative, arbitrary }) => {\n if (arbitrary) {\n return [decl(\"scale\", `${value}`)];\n }\n\n // scale-75 → scale: 75% 75%\n // -scale-75 → scale: calc(75% * -1) calc(75% * -1)\n if (parseNumber(value) || negative) {\n const pct = `${Math.abs(Number(value))}%`;\n if (negative || String(value).startsWith(\"-\")) {\n return [decl(\"scale\", `calc(${pct} * -1) calc(${pct} * -1)`)];\n }\n return [decl(\"scale\", `${pct} ${pct}`)];\n }\n // scale-[1.7] → scale: 1.7\n return [decl(\"scale\", value)];\n },\n handleCustomProperty: (value) => [\n decl(\"scale\", `var(${value}) var(${value})`),\n ],\n description: \"scale utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Skew ---\n// skew documentation\n\n// skew-x-<number>, -skew-x-<number>, skew-x-(<custom-property>), skew-x-[<value>]\nfunctionalUtility({\n name: \"skew-x\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // skew-x-4 → transform: skewX(4deg)\n // -skew-x-4 → transform: skewX(-4deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `skewX(${sign}${deg})`)];\n }\n // skew-x-[3.142rad] → transform: skewX(3.142rad)\n return [decl(\"transform\", `skewX(${value})`)];\n },\n handleCustomProperty: (value) => [decl(\"transform\", `skewX(var(${value}))`)],\n description: \"skew-x utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// skew-y-<number>, -skew-y-<number>, skew-y-(<custom-property>), skew-y-[<value>]\nfunctionalUtility({\n name: \"skew-y\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // skew-y-4 → transform: skewY(4deg)\n // -skew-y-4 → transform: skewY(-4deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `skewY(${sign}${deg})`)];\n }\n // skew-y-[3.142rad] → transform: skewY(3.142rad)\n return [decl(\"transform\", `skewY(${value})`)];\n },\n handleCustomProperty: (value) => [decl(\"transform\", `skewY(var(${value}))`)],\n description: \"skew-y utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// skew-<number>, -skew-<number>, skew-(<custom-property>), skew-[<value>]\nfunctionalUtility({\n name: \"skew\",\n prop: \"transform\",\n supportsArbitrary: true,\n supportsCustomProperty: true,\n supportsNegative: true,\n handle: (value, ctx, { negative }) => {\n // skew-4 → transform: skewX(4deg) skewY(4deg)\n // -skew-4 → transform: skewX(-4deg) skewY(-4deg)\n if (parseNumber(value) || negative) {\n const deg = `${Math.abs(Number(value))}deg`;\n const sign = negative || String(value).startsWith(\"-\") ? \"-\" : \"\";\n return [decl(\"transform\", `skewX(${sign}${deg}) skewY(${sign}${deg})`)];\n }\n // skew-[3.142rad] → transform: skewX(3.142rad) skewY(3.142rad)\n return [decl(\"transform\", `skewX(${value}) skewY(${value})`)];\n },\n handleCustomProperty: (value) => [\n decl(\"transform\", `skewX(var(${value})) skewY(var(${value}))`),\n ],\n description: \"skew utility (named, arbitrary, custom property supported)\",\n category: \"transform\",\n});\n\n// --- Transform Origin ---\n// transform-origin documentation\n\n// origin-center: transform-origin: center;\nstaticUtility(\"origin-center\", [[\"transform-origin\", \"center\"]], {\n category: \"transform\",\n});\n// origin-top: transform-origin: top;\nstaticUtility(\"origin-top\", [[\"transform-origin\", \"top\"]], {\n category: \"transform\",\n});\n// origin-top-right: transform-origin: top right;\nstaticUtility(\"origin-top-right\", [[\"transform-origin\", \"top right\"]], {\n category: \"transform\",\n});\n// origin-right: transform-origin: right;\nstaticUtility(\"origin-right\", [[\"transform-origin\", \"right\"]], {\n category: \"transform\",\n});\n// origin-bottom-right: transform-origin: bottom right;\nstaticUtility(\"origin-bottom-right\", [[\"transform-origin\", \"bottom right\"]], {\n category: \"transform\",\n});\n// origin-bottom: transform-origin: bottom;\nstaticUtility(\"origin-bottom\", [[\"transform-origin\", \"bottom\"]], {\n category: \"transform\",\n});\n// origin-bottom-left: transform-origin: bottom left;\nstaticUtility(\"origin-bottom-left\", [[\"transform-origin\", \"bottom left\"]], {\n category: \"transform\",\n});\n// origin-left: transform-origin: left;\nstaticUtility(\"origin-left\", [[\"transform-origin\", \"left\"]], {\n category: \"transform\",\n});\n// origin-top-left: transform-origin: top left;\nstaticUtility(\"origin-top-left\", [[\"transform-origin\", \"top left\"]], {\n category: \"transform\",\n});\n\n// origin-(<custom-property>): transform-origin: var(--custom-property);\nfunctionalUtility({\n name: \"origin\",\n prop: \"transform-origin\",\n supportsCustomProperty: true,\n supportsArbitrary: true,\n description:\n \"transform-origin utility for custom property (origin-(--my-transform-origin))\",\n category: \"transform\",\n});\n\n// --- Translate ---\n// translate documentation\n\nconst translateProperties = () =>\n atRoot([\n property(\"--baro-translate-x\", \"0\"),\n property(\"--baro-translate-y\", \"0\"),\n property(\"--baro-translate-z\", \"0\"),\n ]);\n\n// --- Static translate utilities ---\n// translate-none: disables all translation\nstaticUtility(\"translate-none\", [[\"translate\", \"none\"]], {\n category: \"transform\",\n});\n\n// translate-px, -translate-px, translate-full, -translate-full\nstaticUtility(\"translate-px\", [[\"translate\", \"1px 1px\"]], {\n category: \"transform\",\n});\nstaticUtility(\"-translate-px\", [[\"translate\", \"-1px -1px\"]], {\n category: \"transform\",\n});\nstaticUtility(\n \"translate-full\",\n [\n translateProperties,\n [\"--baro-translate-x\", \"100%\"],\n [\"--baro-translate-y\", \"100%\"],\n [\"translate\", \"var(--baro-translate-x) var(--baro-translate-y)\"],\n ],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-full\",\n [\n translateProperties,\n [\"--baro-translate-x\", \"-100%\"],\n [\"--baro-translate-y\", \"-100%\"],\n [\"translate\", \"var(--baro-translate-x) var(--baro-translate-y)\"],\n ],\n { category: \"transform\" }\n);\n\n// translate-x-px, -translate-x-px, translate-x-full, -translate-x-full\nstaticUtility(\n \"translate-x-px\",\n [[\"translate\", \"1px var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-x-px\",\n [[\"translate\", \"-1px var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"translate-x-full\",\n [[\"translate\", \"100% var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-x-full\",\n [[\"translate\", \"-100% var(--baro-translate-y)\"]],\n { category: \"transform\" }\n);\n\n// translate-y-px, -translate-y-px, translate-y-full, -translate-y-full\nstaticUtility(\n \"translate-y-px\",\n [[\"translate\", \"var(--baro-translate-x) 1px\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-y-px\",\n [[\"translate\", \"var(--baro-translate-x) -1px\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"translate-y-full\",\n [[\"translate\", \"var(--baro-translate-x) 100%\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-y-full\",\n [[\"translate\", \"var(--baro-translate-x) -100%\"]],\n { category: \"transform\" }\n);\n\n// translate-z-px, -translate-z-px\nstaticUtility(\n \"translate-z-px\",\n [[\"translate\", \"var(--baro-translate-x) var(--baro-translate-y) 1px\"]],\n { category: \"transform\" }\n);\nstaticUtility(\n \"-translate-z-px\",\n [[\"translate\", \"var(--baro-translate-x) var(--baro-translate-y) -1px\"]],\n { category: \"transform\" }\n);\n\n// --- Functional translate utilities ---\n\n// translate-x-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate-x\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [decl(\"translate\", `${v} var(--baro-translate-y)`)];\n }\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [decl(\"translate\", `${v} var(--baro-translate-y)`)];\n }\n return [decl(\"translate\", `${value} var(--baro-translate-y)`)];\n },\n handleCustomProperty: (value) => [\n decl(\"translate\", `var(${value}) var(--baro-translate-y)`),\n ],\n description:\n \"translate-x utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n\n// translate-y-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate-y\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [decl(\"translate\", `var(--baro-translate-x) ${v}`)];\n }\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [decl(\"translate\", `var(--baro-translate-x) ${v}`)];\n }\n return [decl(\"translate\", `var(--baro-translate-x) ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"translate\", `var(--baro-translate-x) var(${value})`),\n ],\n description:\n \"translate-y utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n\n// translate-z-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate-z\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) ${v}`\n ),\n ];\n }\n\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) ${v}`\n ),\n ];\n }\n\n return [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) ${value}`\n ),\n ];\n },\n handleCustomProperty: (value) => [\n decl(\n \"translate\",\n `var(--baro-translate-x) var(--baro-translate-y) var(${value})`\n ),\n ],\n description:\n \"translate-z utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n\n// translate-<number|fraction|arbitrary|custom>, negative supported\nfunctionalUtility({\n name: \"translate\",\n prop: \"translate\",\n supportsNegative: true,\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, { negative }) => {\n // Fraction\n if (parseFractionOrNumber(value)) {\n const v = `calc(${value} * 100%)`;\n return [decl(\"translate\", `${v} ${v}`)];\n }\n // Number (spacing scale)\n if (parseNumber(value) || negative) {\n const v = `calc(var(--spacing) * ${value})`;\n return [decl(\"translate\", `${v} ${v}`)];\n }\n // Arbitrary value\n return [decl(\"translate\", `${value} ${value}`)];\n },\n handleCustomProperty: (value) => [\n decl(\"translate\", `var(${value}) var(${value})`),\n ],\n description:\n \"translate utility (spacing, fraction, arbitrary, custom property, negative)\",\n category: \"transform\",\n});\n","import { decl } from \"../core/ast\";\nimport { staticUtility, functionalUtility } from \"../core/registry\";\nimport { parseNumber } from \"../core/utils\";\n\n// --- Fill Utilities ---\n// fill documentation\n\n// Static fill values\nstaticUtility(\"fill-inherit\", [[\"fill\", \"inherit\"]], { category: 'svg' });\nstaticUtility(\"fill-current\", [[\"fill\", \"currentColor\"]], { category: 'svg' });\nstaticUtility(\"fill-transparent\", [[\"fill\", \"transparent\"]], { category: 'svg' });\nstaticUtility(\"fill-black\", [[\"fill\", \"#000\"]], { category: 'svg' });\nstaticUtility(\"fill-white\", [[\"fill\", \"#fff\"]], { category: 'svg' });\n\n// Functional: theme color, arbitrary, custom property\nfunctionalUtility({\n name: \"fill\",\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token, extra) => {\n if (extra?.realThemeValue) {\n return [decl(\"fill\", `var(--color-${extra.realThemeValue})`)];\n }\n return [decl(\"fill\", value)];\n },\n description: \"fill utility (static, theme, arbitrary, custom property supported)\",\n category: \"svg\",\n});\n\n// --- Stroke Utilities ---\n// stroke documentation\nstaticUtility(\"stroke-inherit\", [[\"stroke\", \"inherit\"]], { category: 'svg' });\nstaticUtility(\"stroke-current\", [[\"stroke\", \"currentColor\"]], { category: 'svg' });\nstaticUtility(\"stroke-transparent\", [[\"stroke\", \"transparent\"]], { category: 'svg' });\nstaticUtility(\"stroke-black\", [[\"stroke\", \"#000\"]], { category: 'svg' });\nstaticUtility(\"stroke-white\", [[\"stroke\", \"#fff\"]], { category: 'svg' });\n\nfunctionalUtility({\n name: \"stroke\",\n themeKeys: [\"colors\"],\n supportsArbitrary: true,\n supportsCustomProperty: true,\n handle: (value, ctx, token, extra) => {\n\n if (parseNumber(value)) {\n return [decl(\"stroke-width\", value)];\n }\n\n if (extra?.realThemeValue) {\n return [decl(\"stroke\", `var(--color-${extra.realThemeValue})`)];\n }\n return [decl(\"stroke\", value)];\n },\n handleCustomProperty: (value) => {\n if (value.startsWith(\"length:\")) {\n const cp = value.replace(\"length:\", \"\");\n return [decl(\"stroke-width\", `var(${cp})`)];\n }\n return [decl(\"stroke\", `var(${value})`)];\n },\n description: \"stroke utility (static, theme, arbitrary, custom property supported)\",\n category: \"svg\",\n});\n\n","import { staticUtility } from \"../core/registry\";\n\n// --- Forced Color Adjust Utilities ---\n// forced-color-adjust documentation\nstaticUtility(\"forced-color-adjust-auto\", [[\"forced-color-adjust\", \"auto\"]], { category: 'accessibility' });\nstaticUtility(\"forced-color-adjust-none\", [[\"forced-color-adjust\", \"none\"]], { category: 'accessibility' }); ","import { staticModifier } from \"../../core/registry\";\nimport { atRule } from '../../core/ast';\n\n// --- Basic pseudo-class variants ---\nstaticModifier('hover', ['&:hover'], {\n order: 50,\n source: 'pseudo',\n wrap: () => [atRule('media', '(hover: hover)', [])],\n});\nstaticModifier('focus', ['&:focus'], { order: 50, source: 'pseudo' });\nstaticModifier('active', ['&:active'], { order: 50, source: 'pseudo' });\nstaticModifier('visited', ['&:visited'], { order: 50, source: 'pseudo' });\nstaticModifier('focus-visible', ['&:focus-visible'], { order: 50, source: 'pseudo' });\nstaticModifier('focus-within', ['&:focus-within'], { order: 50, source: 'pseudo' });\n","import { staticModifier } from \"../../core/registry\";\n\n// --- Form state variants ---\nstaticModifier('disabled', ['&:disabled'], { source: 'pseudo' });\nstaticModifier('checked', ['&:checked'], { source: 'pseudo' });\nstaticModifier('required', ['&:required'], { source: 'pseudo' });\nstaticModifier('invalid', ['&:invalid'], { source: 'pseudo' });\nstaticModifier('enabled', ['&:enabled'], { source: 'pseudo' });\nstaticModifier('indeterminate', ['&:indeterminate'], { source: 'pseudo' });\nstaticModifier('default', ['&:default'], { source: 'pseudo' });\nstaticModifier('optional', ['&:optional'], { source: 'pseudo' });\nstaticModifier('valid', ['&:valid'], { source: 'pseudo' });\nstaticModifier('user-valid', ['&:user-valid'], { source: 'pseudo' });\nstaticModifier('user-invalid', ['&:user-invalid'], { source: 'pseudo' });\nstaticModifier('in-range', ['&:in-range'], { source: 'pseudo' });\nstaticModifier('out-of-range', ['&:out-of-range'], { source: 'pseudo' });\nstaticModifier('placeholder-shown', ['&:placeholder-shown'], { source: 'pseudo' });\nstaticModifier('autofill', ['&:autofill'], { source: 'pseudo' });\nstaticModifier('read-only', ['&:read-only'], { source: 'pseudo' }); ","import { staticModifier } from \"../../core/registry\";\n\n// --- Structural selector variants ---\nstaticModifier('first', ['&:first-child'], { source: 'pseudo' });\nstaticModifier('last', ['&:last-child'], { source: 'pseudo' });\nstaticModifier('only', ['&:only-child'], { source: 'pseudo' });\nstaticModifier('odd', ['&:nth-child(odd)'], { source: 'pseudo' });\nstaticModifier('even', ['&:nth-child(even)'], { source: 'pseudo' });\nstaticModifier('first-of-type', ['&:first-of-type'], { source: 'pseudo' });\nstaticModifier('last-of-type', ['&:last-of-type'], { source: 'pseudo' });\nstaticModifier('only-of-type', ['&:only-of-type'], { source: 'pseudo' });\nstaticModifier('empty', ['&:empty'], { source: 'pseudo' }); ","import { staticModifier } from \"../../core/registry\";\nimport { AstNode, atRule } from \"../../core/ast\";\n\n// --- Media feature variants ---\nstaticModifier('prefers-contrast-more', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-contrast: more)', [], 'media')],\n source: 'media'\n});\nstaticModifier('prefers-contrast-less', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-contrast: less)', [], 'media')],\n source: 'media'\n});\nstaticModifier('forced-colors', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(forced-colors: active)', [], 'media')],\n source: 'media'\n});\nstaticModifier('pointer-coarse', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(pointer: coarse)', [], 'media')],\n source: 'media'\n});\nstaticModifier('pointer-fine', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(pointer: fine)', [], 'media')],\n source: 'media'\n});\nstaticModifier('any-pointer-coarse', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(any-pointer: coarse)', [], 'media')],\n source: 'media'\n});\nstaticModifier('any-pointer-fine', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(any-pointer: fine)', [], 'media')],\n source: 'media'\n});\n\n// Motion variants\nstaticModifier('motion-safe', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-reduced-motion: no-preference)', [], 'media')],\n source: 'media'\n});\nstaticModifier('motion-reduce', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(prefers-reduced-motion: reduce)', [], 'media')],\n source: 'media'\n});\n\n// Print and orientation variants\nstaticModifier('print', ['&'], {\n order: 5,\n wrap: () => [atRule('media', 'print', [], 'media')],\n source: 'media'\n});\nstaticModifier('portrait', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(orientation: portrait)', [], 'media')],\n source: 'media'\n});\nstaticModifier('landscape', ['&'], {\n order: 5,\n wrap: () => [atRule('media', '(orientation: landscape)', [], 'media')],\n source: 'media'\n}); ","import { staticModifier } from \"../../core/registry\";\n \n// --- Attribute selector variants ---\nstaticModifier('rtl', ['&[dir=rtl]'], { order: 20, source: 'attribute' });\nstaticModifier('ltr', ['&[dir=ltr]'], { order: 20, source: 'attribute' });\nstaticModifier('inert', ['&[inert]'], { order: 40, source: 'attribute' });\nstaticModifier('open', ['&:is([open], :popover-open, :open)'], { order: 40, source: 'attribute' }); ","import { staticModifier } from \"../../core/registry\";\nimport { AstNode, atRule } from \"../../core/ast\";\n\n// Import separated variant modules\nimport \"./pseudo-classes\";\nimport \"./form-states\";\nimport \"./structural-selectors\";\nimport \"./media-features\";\nimport \"./attribute-selectors\";\n\n// --- Pseudo-elements (cross-browser) ---\nstaticModifier('before', ['&::before'], { source: 'pseudo' });\nstaticModifier('after', ['&::after'], { source: 'pseudo' });\nstaticModifier('placeholder', [\n '&::placeholder',\n '&::-webkit-input-placeholder',\n '&::-moz-placeholder',\n '&:-ms-input-placeholder',\n], { source: 'pseudo' });\nstaticModifier('selection', [\n '&::selection',\n '&::-moz-selection',\n], { source: 'pseudo' });\nstaticModifier('file', [\n '&::file-selector-button',\n '&::-webkit-file-upload-button',\n], { source: 'pseudo' });\nstaticModifier('marker', [\n '&::marker',\n '&::-webkit-details-marker',\n '&::-moz-list-bullet',\n '&::-moz-list-number',\n], { source: 'pseudo' });\nstaticModifier('details-content', ['&::details-content'], { source: 'pseudo' });\nstaticModifier('first-line', ['&::first-line'], { source: 'pseudo' });\nstaticModifier('first-letter', ['&::first-letter'], { source: 'pseudo' });\nstaticModifier('backdrop', ['&::backdrop'], { source: 'pseudo' });\n\n// --- starting: variant (maps to @starting-style) ---\nstaticModifier('starting', ['&'], {\n wrap: () => [atRule('starting-style', '', [], 'starting')],\n source: 'starting'\n}); ","import { AstNode } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\n\n/**\n * Create container query parameters\n */\nexport function createContainerParams(type: 'min' | 'max', value: string, name?: string): string {\n const condition = type === 'min' ? 'width >=' : 'width <';\n return name ? `${name} (${condition} ${value})` : `(${condition} ${value})`;\n}\n\n/**\n * Create media query parameters\n */\nexport function createMediaParams(type: 'min' | 'max', value: string): string {\n return type === 'min' ? `(min-width: ${value})` : `(width < ${value})`;\n}\n\n/**\n * Get size value from theme\n */\nexport function getThemeSize(ctx: Context, key: string): string | undefined {\n return ctx.theme('container.' + key) as string || ctx.theme('breakpoint.' + key) as string;\n}\n\n/**\n * Create container query AST\n */\nexport function createContainerRule(params: string, ast: AstNode | AstNode[]): AstNode {\n return {\n type: 'at-rule',\n name: 'container',\n params,\n nodes: Array.isArray(ast) ? ast : [ast],\n source: 'container'\n };\n}\n\n/**\n * Create media query AST\n */\nexport function createMediaRule(params: string, ast: AstNode | AstNode[]): AstNode {\n return {\n type: 'at-rule',\n name: 'media',\n params,\n nodes: Array.isArray(ast) ? ast : [ast],\n };\n}\n\n// Default breakpoint values (fallback)\nexport function getDefaultBreakpoint(breakpoint: string): string {\n const defaults: Record<string, string> = {\n 'sm': '(min-width: 640px)',\n 'md': '(min-width: 768px)', \n 'lg': '(min-width: 1024px)',\n 'xl': '(min-width: 1280px)',\n '2xl': '(min-width: 1536px)'\n };\n return defaults[breakpoint] || `(min-width: ${breakpoint})`;\n} ","import { functionalModifier } from \"../../core/registry\";\nimport { atRule } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\nimport { ParsedModifier } from \"../../core/parser\";\nimport { getDefaultBreakpoint } from \"./utils\";\n\n// responsive (media queries) - dynamic breakpoint support\nfunctionalModifier(\n (mod: string, context: Context) => {\n // 1. Check breakpoints defined in config (matches actual implementation)\n const breakpoints = context.theme('breakpoints') || context.config('theme.breakpoints') || {};\n const breakpointKeys = Object.keys(breakpoints);\n \n // 2. Check basic breakpoints (all breakpoints defined in config)\n if (breakpointKeys.includes(mod)) {\n return true;\n }\n \n // 3. Check max-width breakpoint (max-{breakpoint})\n if (mod.startsWith('max-')) {\n const baseBreakpoint = mod.replace('max-', '');\n // 3-1. When it is a defined breakpoint\n if (breakpointKeys.includes(baseBreakpoint)) {\n return true;\n }\n // 3-2. When it is an arbitrary max-width (max-[960px])\n if (/^\\[.*\\]$/.test(baseBreakpoint)) {\n return true;\n }\n }\n \n // 4. Check arbitrary min-width (min-[600px])\n if (/^min-\\[.*\\]$/.test(mod)) {\n return true; // arbitrary values are always valid\n }\n \n // 5. Check arbitrary max-width (max-[960px])\n if (/^max-\\[.*\\]$/.test(mod)) {\n return true; // arbitrary values are always valid\n }\n \n return false;\n },\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const breakpoint = mod.type;\n \n // 1. Handle breakpoints defined in config (v4.1 standard)\n const breakpoints = context.theme('breakpoints') || context.config('theme.breakpoints') || {};\n \n // 2. Handle basic breakpoints (all breakpoints defined in config)\n if (Object.keys(breakpoints).includes(breakpoint)) {\n let mediaQuery: string = context.theme(`breakpoints.${breakpoint}`) as string || \n getDefaultBreakpoint(breakpoint);\n // If only a number (px/em/rem etc.) is provided, wrap with (min-width: ...)\n if (/^\\d+(px|em|rem)?$/.test(mediaQuery)) {\n mediaQuery = `(min-width: ${mediaQuery})`;\n }\n return [atRule('media', mediaQuery, [], 'responsive')];\n }\n \n // 3. Handle max-width breakpoint (max-{breakpoint})\n if (breakpoint.startsWith('max-')) {\n const baseBreakpoint = breakpoint.replace('max-', '');\n \n // 3-1. When it is a defined breakpoint (max-sm, max-md, etc.)\n if (Object.keys(breakpoints).includes(baseBreakpoint)) {\n let mediaQuery = context.theme(`breakpoints.${baseBreakpoint}`) as string || \n getDefaultBreakpoint(baseBreakpoint);\n \n // Convert min-width to max-width\n if (mediaQuery.includes('min-width:')) {\n const value = mediaQuery.match(/min-width:\\s*([^)]+)/)?.[1];\n if (value) {\n mediaQuery = `(width < ${value})`;\n }\n } else if (mediaQuery.includes('width >=')) {\n const value = mediaQuery.match(/width >=\\s*([^)]+)/)?.[1];\n if (value) {\n mediaQuery = `(width < ${value})`;\n }\n }\n \n return [atRule('media', mediaQuery, [], 'responsive')];\n }\n \n // 3-2. When it is an arbitrary max-width (max-[960px])\n if (/^\\[(.*)\\]$/.test(baseBreakpoint)) {\n const value = baseBreakpoint.match(/^\\[(.*)\\]$/)?.[1];\n if (value) {\n return [atRule('media', `(width < ${value})`, [], 'responsive')];\n }\n }\n }\n \n // 4. Handle arbitrary min-width (min-[600px])\n if (/^min-\\[(.*)\\]$/.test(breakpoint)) {\n const value = breakpoint.match(/^min-\\[(.*)\\]$/)?.[1];\n if (value) {\n return [atRule('media', `(width >= ${value})`, [], 'responsive')];\n }\n }\n \n // 5. Handle arbitrary max-width (max-[960px])\n if (/^max-\\[(.*)\\]$/.test(breakpoint)) {\n const value = breakpoint.match(/^max-\\[(.*)\\]$/)?.[1];\n if (value) {\n return [atRule('media', `(width < ${value})`, [], 'responsive')];\n }\n }\n return [];\n }\n); ","import { functionalModifier } from \"../../core/registry\";\nimport { AstNode, atRule, rule } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\nimport { ParsedModifier } from \"../../core/parser\";\n\n// Dark variant plugin\nconst getDarkSelectors = (ctx: Context) => {\n const mode = ctx.config(\"darkMode\") || \"media\";\n const custom = ctx.config(\"darkModeSelector\");\n const selectors: { type: \"media\" | \"selector\"; value: string }[] = [];\n\n if (mode === \"media\") {\n selectors.push({ type: \"media\", value: \"(prefers-color-scheme: dark)\" });\n if (custom) {\n const joined = Array.isArray(custom) ? custom.join(\", \") : custom;\n selectors.push({ type: \"selector\", value: joined as string });\n }\n return selectors;\n }\n if (mode === \"class\") {\n if (custom) {\n const joined = Array.isArray(custom) ? custom.join(\", \") : custom;\n selectors.push({ type: \"selector\", value: joined as string });\n return selectors;\n }\n selectors.push({ type: \"selector\", value: \".dark\" });\n return selectors;\n }\n selectors.push({ type: \"selector\", value: \".dark\" });\n return selectors;\n};\n\nfunctionalModifier(\n (mod: string) => mod === \"dark\",\n undefined, // modifySelector is not used\n (_mod: ParsedModifier, ctx: Context) => {\n const selectors = getDarkSelectors(ctx);\n \n const result: AstNode[] = [];\n\n selectors.forEach((sel) => {\n if (sel.type === \"media\") {\n const atRuleNode = atRule(\"media\", sel.value, [], 'dark');\n result.push(atRuleNode);\n } else {\n const ruleNode = rule(sel.value, [], 'dark');\n result.push(ruleNode);\n }\n });\n\n return result;\n }\n); \n","import { functionalModifier } from \"../../core/registry\";\nimport { AstNode, atRule } from \"../../core/ast\";\nimport { Context } from \"../../core/context\";\nimport { ParsedModifier } from \"../../core/parser\";\nimport { createContainerRule, createContainerParams, getThemeSize } from \"./utils\";\n\n// --- @container query variants ---\n\n// 1. @container/main - named container\nfunctionalModifier(\n (mod: string) => /^@container\\/([a-zA-Z0-9_-]+)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const containerMatch = /^@container\\/([a-zA-Z0-9_-]+)$/.exec(mod.type);\n if (containerMatch) {\n const name = containerMatch[1];\n const params = name; // Just the name, no condition\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 2. @container/size - named container with arbitrary size\nfunctionalModifier(\n (mod: string) => /^@container\\/([a-zA-Z0-9_-]+)\\s+\\(([^)]+)\\)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const containerSizeMatch = /^@container\\/([a-zA-Z0-9_-]+)\\s+\\(([^)]+)\\)$/.exec(mod.type);\n if (containerSizeMatch) {\n const [, name, size] = containerSizeMatch;\n const params = createContainerParams('min', size, name);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 3. @container/size - theme size with named container\nfunctionalModifier(\n (mod: string) => /^@(sm|md|lg|xl|2xl)\\/([a-zA-Z0-9_-]+)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const namedSizeMatch = /^@(sm|md|lg|xl|2xl)\\/([a-zA-Z0-9_-]+)$/.exec(mod.type);\n if (namedSizeMatch) {\n const [, size, name] = namedSizeMatch;\n const sizeValue = getThemeSize(context, size) || size;\n const params = createContainerParams('min', sizeValue, name);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 4. @container/size - theme size without named container\nfunctionalModifier(\n (mod: string) => /^@(sm|md|lg|xl|2xl)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const themeSizeMatch = /^@(sm|md|lg|xl|2xl)$/.exec(mod.type);\n if (themeSizeMatch) {\n const size = themeSizeMatch[1];\n const sizeValue = getThemeSize(context, size) || size;\n const params = createContainerParams('min', sizeValue);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 4.5. @max-container/size - max theme size without named container\nfunctionalModifier(\n (mod: string) => /^@max-(sm|md|lg|xl|2xl)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const themeSizeMatch = /^@max-(sm|md|lg|xl|2xl)$/.exec(mod.type);\n if (themeSizeMatch) {\n const size = themeSizeMatch[1];\n const sizeValue = getThemeSize(context, size) || size;\n const params = createContainerParams('max', sizeValue);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 5. @container/size - arbitrary size\nfunctionalModifier(\n (mod: string) => /^@(min|max)-\\[.*\\]$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const arbitraryMatch = /^@(min|max)-\\[(.+)\\]$/.exec(mod.type);\n if (arbitraryMatch) {\n const [, type, value] = arbitraryMatch;\n const params = createContainerParams(type as 'min' | 'max', value);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n);\n\n// 6. @container/size - arbitrary size with named container\nfunctionalModifier(\n (mod: string) => /^@(min|max)-\\[.*\\]\\/([a-zA-Z0-9_-]+)$/.test(mod),\n undefined,\n (mod: ParsedModifier, context: Context) => {\n const arbitraryNamedMatch = /^@(min|max)-\\[(.+)\\]\\/([a-zA-Z0-9_-]+)$/.exec(mod.type);\n if (arbitraryNamedMatch) {\n const [, type, value, name] = arbitraryNamedMatch;\n const params = createContainerParams(type as 'min' | 'max', value, name);\n return [createContainerRule(params, [])];\n }\n return [];\n }\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// has-[]: functionalModifier\nfunctionalModifier(\n (mod: string) => /^has-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^has-\\[(.+)\\]$/.exec(mod.type);\n\n if (m && m[1].startsWith('.')) {\n return {\n selector: `&:has(${m[1]})`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n\n return m ? {\n selector: `&:has(${m[1]})`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined,\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// not-[]: functionalModifier for arbitrary negation\nfunctionalModifier(\n (mod: string) => /^not-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^not-\\[(.+)\\]$/.exec(mod.type);\n if (m) {\n\n if (m[1].startsWith('.')) {\n return {\n selector: `&:not(${m[1]})`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n\n return {\n selector: `&:not([${m[1]}])`,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n \n return {\n selector,\n source: 'attribute'\n };\n }\n);\n\n// not-: functionalModifier for pseudo-class negation\nfunctionalModifier(\n (mod: string) => /^not-/.test(mod),\n ({ selector, mod }) => {\n const m = /^not-(.+)$/.exec(mod.type);\n return {\n selector: m ? `&:not(:${m[1]})` : selector,\n flatten: false,\n wrappingType: 'rule',\n source: 'attribute'\n };\n }\n); ","import { functionalModifier, escapeClassName } from \"../../core/registry\";\n\n// --- Universal selector variants ( 4.x style, supports chaining/:is wrapping) ---\nfunctionalModifier(\n (mod) => mod === '*',\n ({ selector, fullClassName, variantChain }) => {\n const isSingle = !variantChain || variantChain.length === 1;\n return {\n selector: `:is(.${escapeClassName(fullClassName)} > *)`,\n flatten: true,\n wrappingType: isSingle ? 'rule' : 'style-rule',\n source: 'universal'\n };\n },\n undefined,\n);\n\nfunctionalModifier(\n (mod) => mod === '**',\n ({ selector, fullClassName }) => {\n return {\n selector: `:is(.${escapeClassName(fullClassName)} *)`,\n flatten: false,\n wrappingType: 'style-rule',\n source: 'universal'\n };\n },\n undefined,\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// Master CSS-style arbitrary variant ([...]) support (order: 999, always last)\nfunctionalModifier(\n (mod: string) => /^\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^\\[(.+)\\]$/.exec(mod.type);\n if (!m) return { selector };\n const inner = m[1].trim();\n // For attribute selectors (attr=val) or simple attributes ([open]), wrap with brackets\n if (/^[a-zA-Z0-9_-]+(=.+)?$/.test(inner)) {\n return { selector: `&[${inner}]`, wrappingType: 'rule', source: 'attribute' };\n }\n\n if (inner === '&>*') {\n return { selector: `${inner}`, wrappingType: 'style-rule', source: 'peer' };\n }\n\n if (inner.startsWith('&')) {\n return { selector: `${inner}`, wrappingType: 'rule', source: 'pseudo' };\n }\n\n return { selector: `${inner} &`.trim(), wrappingType: 'rule', source: 'base' };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- Standard aria and not- variants ---\nfunctionalModifier(\n (mod: string) => /^aria-/.test(mod),\n ({ selector, mod }) => {\n // aria-[expanded=true] → &[aria-expanded=\"true\"] { ... }\n const bracket = /^aria-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(mod.type);\n if (bracket) {\n const key = bracket[1];\n const value = bracket[2] ?? 'true';\n return {\n selector: `&[aria-${key}=\"${value}\"]`,\n source: 'aria'\n };\n }\n // aria-pressed → &[aria-pressed=\"true\"] { ... }\n const m2 = /^aria-([a-zA-Z0-9_]+)$/.exec(mod.type);\n if (m2) {\n const key = m2[1];\n return {\n selector: `&[aria-${key}=\"true\"]`,\n source: 'aria'\n };\n }\n return {\n selector,\n source: 'aria'\n };\n },\n undefined\n);\n\nfunctionalModifier(\n (mod: string) => mod.startsWith('not-'),\n ({ selector, mod }) => {\n const pseudo = mod.type.replace('not-', '');\n if (pseudo.startsWith('[')) {\n const inner = pseudo.slice(1, -1);\n // Attribute pattern: identifier(=value)? (e.g., open, dir=rtl, aria-pressed=true)\n if (/^[a-zA-Z0-9_-]+(=.+)?$/.test(inner)) {\n return {\n selector: `&:not([${inner}])`,\n source: 'attribute'\n };\n } else {\n // Otherwise, treat as a selector\n return {\n selector: `&:not(${inner})`,\n source: 'attribute'\n };\n }\n } else {\n // not-hover → :not(:hover)\n return {\n selector: `&:not(:${pseudo})`,\n source: 'attribute'\n };\n }\n },\n undefined\n);\n\n// --- Standard data- variants (similar to aria-) ---\nfunctionalModifier(\n (mod: string) => /^data-/.test(mod),\n ({ selector, mod }) => {\n \n // data-[state=open] → [data-state=\"open\"] & { ... }\n const bracket = /^data-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(mod.type);\n if (bracket) {\n const key = bracket[1];\n const value = bracket[2] ?? 'true';\n return {\n selector: `&[data-${key}=\"${value}\"]`,\n source: 'data'\n };\n }\n // data-avatar → [data-avatar] & { ... }\n const m2 = /^data-([a-zA-Z0-9_]+)$/.exec(mod.type);\n if (m2) {\n const key = m2[1];\n return {\n selector: `&[data-${key}]`,\n source: 'data'\n };\n }\n return {\n selector,\n source: 'attribute'\n };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- Nth-child, nth-last-child, nth-of-type, nth-last-of-type (숫자/패턴 기반) ---\nfunctionalModifier(\n (mod: string) => /^nth-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-child(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^nth-last-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-last-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-last-child(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^nth-of-type-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-of-type-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-of-type(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^nth-last-of-type-(\\d+)$/.test(mod),\n ({ selector, mod }) => {\n const n = mod.type.match(/^nth-last-of-type-(\\d+)$/)?.[1];\n return n ? {\n selector: `&:nth-last-of-type(${n})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- Functional selector variants ---\nfunctionalModifier(\n (mod: string) => /^is-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^is-\\[(.+)\\]$/.exec(mod.type);\n return m ? {\n selector: `&:is(${m[1]})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n);\nfunctionalModifier(\n (mod: string) => /^where-\\[.*\\]$/.test(mod),\n ({ selector, mod }) => {\n const m = /^where-\\[(.+)\\]$/.exec(mod.type);\n return m ? {\n selector: `&:where(${m[1]})`,\n source: 'attribute'\n } : {\n selector,\n source: 'attribute'\n };\n },\n undefined\n); ","import { functionalModifier } from \"../../core/registry\";\nimport { atRule } from \"../../core/ast\";\n\n// --- At-rule variants ---\n\n// supports-[]: functionalModifier\nfunctionalModifier(\n (mod: string) => /^supports-\\[.*\\]$/.test(mod),\n undefined,\n (mod) => {\n const m = /^supports-\\[(.+)\\]$/.exec(mod.type);\n if (m) {\n return [atRule('supports', `(${m[1]})`, [], 'supports')];\n }\n return [];\n }\n);\n\n// --- layer-[]: @layer 쿼리 variant ---\nfunctionalModifier(\n (mod: string) => /^layer-\\[.*\\]$/.test(mod),\n undefined,\n (mod) => {\n const m = /^layer-\\[(.+)\\]$/.exec(mod.type);\n return m ? [atRule('layer', m[1], [])] : [];\n }\n);\n\n// --- scope-[]: @scope 쿼리 variant ---\nfunctionalModifier(\n (mod: string) => /^scope-\\[.*\\]$/.test(mod),\n undefined,\n (mod) => {\n const m = /^scope-\\[(.+)\\]$/.exec(mod.type);\n return m ? [atRule('scope', m[1], [])] : [];\n }\n); ","import { functionalModifier } from \"../../core/registry\";\n\n// --- group/peer/parent/child extensions (examples: group-focus, peer-active, etc.) ---\nfunctionalModifier(\n (mod: string) => /^group-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^group-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n const value = m?.[1].slice(1, -1).replace(/_/g, '');\n return {\n selector: `&:is(:where(.group):is(${value}) *)`,\n wrappingType: 'rule',\n source: 'group'\n };\n }\n\n if (m?.[1]?.startsWith('has-')) {\n const pattern = /^has-\\[([a-zA-Z0-9_-]+)\\]$/.exec(m?.[1]);\n if (pattern) {\n const value = pattern[1];\n return {\n selector: `&:is(:where(.group):has(:is(${value})) *)`,\n source: 'group'\n };\n }\n return {\n selector: `&:is(:where(.group):has(:is(${m?.[1].slice(4, -1)})) *)`,\n source: 'group'\n };\n }\n\n if (m?.[1]?.startsWith('aria-')) {\n const pattern = /^aria-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(m?.[1]);\n if (pattern) {\n const value = pattern[1];\n if (pattern[2]) {\n return {\n selector: `&:is(:where(.group)[aria-${value}=\"${pattern[2]}\"] *)`,\n source: 'group'\n };\n } else {\n return {\n selector: `&:is(:where(.group)[aria-${value}] *)`,\n source: 'group'\n };\n }\n }\n }\n\n return m ? {\n selector: `&:is(:where(.group):${m[1]} *)`,\n wrappingType: 'rule',\n source: 'group'\n } : {\n selector,\n source: 'group'\n };\n },\n undefined,\n);\n\nfunctionalModifier(\n (mod: string) => /^peer-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^peer-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n const value = m?.[1].slice(1, -1).replace(/_/g, '');\n return {\n selector: `&:is(:where(.peer):is(${value})~*)`,\n wrappingType: 'rule',\n source: 'peer'\n };\n }\n\n const value = m?.[1];\n\n // has-xxxx, not-xxxx, aria-xxxx\n\n if (value?.startsWith('has-')) {\n return {\n selector: `&:is(:where(.peer):has(:${value.slice(4)})~*)`,\n source: 'peer'\n };\n }\n\n if (value?.startsWith('not-')) {\n return {\n selector: `&:is(:where(.peer):not(:${value.slice(4)})~*)`,\n source: 'peer'\n };\n }\n \n if (value?.startsWith('aria-')) {\n\n let pattern = /^aria-([a-zA-Z0-9_]+)$/.exec(value);\n if (pattern) {\n const key = pattern[1];\n return {\n selector: `&:is(:where(.peer)[aria-${key}]~*)`,\n source: 'peer'\n };\n }\n\n pattern = /^aria-\\[([a-zA-Z0-9_-]+)(?:=([^\\]]+))?\\]$/.exec(value);\n if (pattern) {\n const key = pattern[1];\n const value = pattern[2];\n\n if (pattern[2]) {\n return {\n selector: `&:is(:where(.peer)[aria-${key}=\"${value}\"]~*)`,\n source: 'peer'\n };\n } else {\n return {\n selector: `&:is(:where(.peer)[aria-${key}]~*)`,\n source: 'peer'\n };\n }\n }\n }\n\n return m ? {\n selector: `&:is(:where(.peer):${value}~*)`,\n source: 'peer'\n } : {\n selector,\n source: 'peer'\n };\n },\n undefined,\n);\n\n// --- parent/child extensions (not in the actual spec, but extensibility example) ---\nfunctionalModifier(\n (mod: string) => /^parent-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^parent-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n return {\n selector: `.parent\\\\:\\\\[${m[1].slice(1, -1)}\\\\] &`,\n wrappingType: 'rule',\n source: 'parent'\n };\n }\n\n return m ? {\n selector: `.parent:${m[1]} &`,\n source: 'parent'\n } : {\n selector,\n source: 'parent'\n };\n },\n undefined,\n);\nfunctionalModifier(\n (mod: string) => /^child-(.+)$/.test(mod),\n ({ selector, mod }) => {\n const m = /^child-(.+)$/.exec(mod.type);\n\n if (m?.[1].startsWith('[') && m?.[1].endsWith(']')) {\n return {\n selector: `& > .child\\\\:\\\\[${m[1].slice(1, -1)}\\\\]`,\n wrappingType: 'rule',\n source: 'child'\n };\n }\n return m ? {\n selector: `& > .child:${m[1]}`,\n source: 'child'\n } : {\n selector,\n source: 'child'\n };\n },\n undefined,\n); ","/**\n * StylePartitionManager\n *\n * StylePartitionManager is a singleton class that manages the partition of styles into different parts.\n * It is used to manage the partition of styles into different parts.\n *\n */\n\nimport { GenerateCssRulesResult } from \"@barocss/kit\";\nimport { parseResultCache } from \"@barocss/kit\";\n\nexport interface StylePartition {\n id: string;\n styles: string[];\n styleElement: HTMLStyleElement;\n}\n\nexport class StylePartitionManager {\n private partitions: StylePartition[] = [];\n private categoryPartitions: Map<string, StylePartition> = new Map();\n private partitionCounter = 0;\n private maxRulesPerPartition = 50;\n private insertionPoint: HTMLElement;\n private classToPartitionMap = new Map<string, number>();\n private classToCategoryPartitionMap = new Map<string, string>();\n private styleIdPrefix = \"barocss-style-partition-\";\n\n constructor(\n insertionPoint: HTMLElement,\n maxRulesPerPartition: number = 50,\n styleIdPrefix: string = \"barocss-style-partition-\"\n ) {\n this.insertionPoint = insertionPoint;\n this.maxRulesPerPartition = maxRulesPerPartition;\n this.styleIdPrefix = styleIdPrefix;\n\n this.initializeDefaultPartition();\n }\n\n private initializeDefaultPartition() {\n this.createNewPartition();\n }\n\n private createNewCategoryPartition(category: string) {\n const newPartition: StylePartition = {\n id: this.styleIdPrefix + `-${category}`,\n styles: [],\n styleElement: document.createElement(\"style\"),\n };\n\n // set id\n newPartition.styleElement.id = newPartition.id;\n newPartition.styleElement.setAttribute(\"data-barocss\", \"partition\");\n newPartition.styleElement.setAttribute(\"data-category\", category);\n\n // set insertion point\n this.insertionPoint.appendChild(newPartition.styleElement);\n\n this.categoryPartitions.set(category, newPartition);\n\n return newPartition;\n }\n\n private createNewPartition() {\n const newPartition: StylePartition = {\n id: this.styleIdPrefix + `-${this.partitionCounter++}`,\n styles: [],\n styleElement: document.createElement(\"style\"),\n };\n this.partitions.push(newPartition);\n\n // set id\n newPartition.styleElement.id = newPartition.id;\n newPartition.styleElement.setAttribute(\"data-barocss\", \"partition\");\n newPartition.styleElement.setAttribute(\n \"data-partition-index\",\n this.partitionCounter.toString()\n );\n\n // set insertion point\n this.insertionPoint.appendChild(newPartition.styleElement);\n\n return newPartition;\n }\n\n hasRule(rule: string) {\n return this.classToPartitionMap.has(rule);\n }\n\n hasCategoryRule(rule: string, category: string) {\n return this.classToCategoryPartitionMap.get(rule) === category;\n }\n\n setRuleCache(rule: string, partitionIndex: number) {\n this.classToPartitionMap.set(rule, partitionIndex);\n }\n\n setCategoryRuleCache(rule: string, category: string) {\n this.classToCategoryPartitionMap.set(rule, category);\n }\n\n get currentPartition() {\n return this.partitions[this.partitions.length - 1];\n }\n\n getCategoryPartition(category: string) {\n return this.categoryPartitions.get(category);\n }\n\n hasDetachedPartitions(): boolean {\n return [...this.partitions, ...this.categoryPartitions.values()]\n .some(partition => !partition.styleElement.isConnected);\n }\n\n /**\n * Escape CSS rule text\n * - Properly escape special characters\n * - Prevent CSS syntax errors\n */\n private escapeCssRule(rule: string): string {\n // Basic CSS string normalization\n const escaped = rule.replace(/\\\\\\//g, '\\\\/');\n\n return escaped;\n }\n\n addRule(rule: string) {\n if (this.hasRule(rule)) {\n return false;\n }\n\n if (this.currentPartition.styles.length >= this.maxRulesPerPartition) {\n this.createNewPartition();\n }\n\n const currentPartition = this.currentPartition;\n const partitionIndex = this.partitions.length - 1;\n\n try {\n // CSS 규칙 삽입\n const sheet = currentPartition.styleElement.sheet;\n if (sheet) {\n sheet.insertRule(this.escapeCssRule(rule), sheet.cssRules.length);\n } else {\n // sheet가 없는 경우 textContent로 폴백\n currentPartition.styleElement.textContent += rule + \"\\n\";\n }\n\n // 성공적으로 삽입된 경우에만 캐시 업데이트\n this.setRuleCache(rule, partitionIndex);\n currentPartition.styles.push(rule);\n\n return true;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(\n `[StylePartitionManager] Failed to insert rule: ${rule}`,\n error\n );\n return false;\n }\n }\n\n addCategoryRule(rule: string, category: string) {\n if (this.hasCategoryRule(rule, category)) {\n return false;\n }\n\n let categoryPartition = this.getCategoryPartition(category);\n if (!categoryPartition) {\n categoryPartition = this.createNewCategoryPartition(category);\n }\n\n try {\n const sheet = categoryPartition.styleElement.sheet;\n if (sheet) {\n sheet.insertRule(this.escapeCssRule(rule), sheet.cssRules.length);\n } else {\n categoryPartition.styleElement.textContent += rule + \"\\n\";\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(\n `[StylePartitionManager] Failed to insert rule in category: ${category} ${rule}`,\n error\n );\n return false;\n }\n\n this.setCategoryRuleCache(rule, category);\n categoryPartition.styles.push(rule);\n\n return true;\n }\n \n addRootRules(rules: string[]) {\n let categoryPartition = this.getCategoryPartition(\"root\");\n if (!categoryPartition) {\n categoryPartition = this.createNewCategoryPartition(\"root\");\n } \n\n try {\n\n const sheet = categoryPartition.styleElement.sheet;\n\n for (const rule of rules) {\n if (sheet) {\n sheet.insertRule(this.escapeCssRule(rule), sheet.cssRules.length);\n } else {\n categoryPartition.styleElement.textContent += rule + \"\\n\";\n }\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(\n `[StylePartitionManager] Failed to insert rule in category: root ${rules.join(\"\\n\")}`,\n error\n );\n return { success: 0, failed: rules.length };\n }\n\n return { success: rules.length, failed: 0 };\n }\n\n addRules(rules: GenerateCssRulesResult[]) {\n let success = 0;\n let failed = 0;\n\n // rules.sort((a, b) => {\n // const aPriority = parseResultCache.get(a.cls)?.utility?.priority;\n // const bPriority = parseResultCache.get(b.cls)?.utility?.priority;\n // return (aPriority ?? 0) - (bPriority ?? 0);\n // });\n\n for (const rule of rules) {\n const parsedResult = parseResultCache.get(rule.cls);\n const category = parsedResult?.utility?.category;\n\n if (category) {\n for (const css of rule.cssList) {\n this.addCategoryRule(css, category);\n }\n } else {\n for (const css of rule.cssList) {\n if (this.addRule(css)) {\n success++;\n } else {\n failed++;\n }\n }\n }\n }\n\n return { success, failed };\n }\n\n /**\n * 특정 규칙이 어느 파티션에 있는지 찾기\n */\n findRulePartition(rule: string): StylePartition | null {\n const partitionIndex = this.classToPartitionMap.get(rule);\n if (partitionIndex !== undefined && this.partitions[partitionIndex]) {\n return this.partitions[partitionIndex];\n }\n\n const categoryPartition = this.classToCategoryPartitionMap.get(rule);\n if (categoryPartition !== undefined) {\n return this.categoryPartitions.get(categoryPartition) || null;\n }\n\n return null;\n }\n\n\n updateRuleContent(category: string, ruleContent: string) {\n const partition = this.getCategoryPartition(category);\n if (partition) {\n partition.styleElement.textContent = ruleContent;\n } else {\n const newPartition = this.createNewCategoryPartition(category);\n // eslint-disable-next-line no-console\n console.log(`[StylePartitionManager] Created new partition for category: ${category}`);\n newPartition.styleElement.textContent = ruleContent;\n }\n }\n\n /**\n * 모든 파티션 정리\n */\n cleanup(): void {\n // DOM에서 모든 스타일 엘리먼트 제거\n this.partitions.forEach((partition) => {\n if (partition.styleElement.parentNode) {\n partition.styleElement.parentNode.removeChild(partition.styleElement);\n }\n });\n\n this.categoryPartitions.forEach((partition) => {\n if (partition.styleElement.parentNode) {\n partition.styleElement.parentNode.removeChild(partition.styleElement);\n }\n });\n\n // 상태 초기화\n this.partitions = [];\n this.categoryPartitions.clear();\n this.partitionCounter = 0;\n this.classToPartitionMap.clear();\n this.classToCategoryPartitionMap.clear();\n }\n}\n","export function normalizeClassName(className: any): string {\n if (!className) return '';\n \n if (className instanceof SVGAnimatedString) {\n return className.baseVal.toString();\n }\n \n return className.toString();\n }\n \nexport function normalizeClassNameList(className: any): string[] {\n if (!className) return [];\n return normalizeClassName(className).split(/\\s+/).filter(Boolean);\n}","import { IncrementalParser, parseResultCache } from \"@barocss/kit\";\nimport { BrowserRuntime } from \"./browser-runtime\";\nimport { normalizeClassNameList } from \"./utils\";\n\n/**\n * Change detection system for DOM mutations\n * \n * ⚠️ BROWSER-ONLY: This class is designed for browser environments only.\n * It uses MutationObserver and DOM APIs that are not available in Node.js.\n * \n * This class monitors DOM changes and automatically processes new CSS classes\n * that are added to elements. It uses MutationObserver to detect:\n * - Class attribute changes on existing elements\n * - New elements being added to the DOM\n * - Changes in child elements\n * \n * For server-side usage, use IncrementalParser directly with processClassesSync()\n * or processClasses() methods.\n */\nexport class ChangeDetector {\n /** MutationObserver instance for DOM change detection */\n private observer: MutationObserver | null = null;\n \n /** Reference to IncrementalParser for class processing */\n private incrementalParser: IncrementalParser;\n \n /** Reference to BrowserRuntime for CSS injection (optional) */\n private BrowserRuntime?: BrowserRuntime;\n \n /**\n * Create a new ChangeDetector instance\n * \n * @param incrementalParser - IncrementalParser instance for class processing\n * @param BrowserRuntime - Optional BrowserRuntime instance for CSS injection\n */\n constructor(incrementalParser: IncrementalParser, BrowserRuntime?: BrowserRuntime) {\n this.incrementalParser = incrementalParser;\n this.BrowserRuntime = BrowserRuntime;\n }\n\n setParser(parser: IncrementalParser): void {\n this.incrementalParser = parser;\n }\n \n /**\n * Starts observing DOM changes for new CSS classes\n * \n * This method sets up a MutationObserver that monitors:\n * - Attribute changes (specifically class attribute modifications)\n * - Child list changes (new elements being added)\n * - Subtree changes (changes in descendant elements)\n * \n * The observer automatically processes any new classes it discovers\n * by adding them to the IncrementalParser's pending queue.\n * \n * @param root - The root element to observe (defaults to document.body)\n * @param options - Configuration options including initial scan and onReady callback\n * @returns The MutationObserver instance for external control\n */\n observe(root: HTMLElement = document.body, options?: { scan?: boolean; onReady?: () => void }): MutationObserver {\n if (typeof window === 'undefined') {\n // Return dummy observer for Node.js environment\n return new MutationObserver(() => {});\n }\n \n if (this.observer) {\n this.observer.disconnect();\n }\n \n this.observer = new MutationObserver((mutations) => {\n const newClasses = new Set<string>();\n \n mutations.forEach(mutation => {\n // Handle attribute changes (class modifications)\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n const target = mutation.target as HTMLElement;\n if (target.className) {\n // SVG className is SVGAnimatedString; convert to string with toString()\n // HTMLElement className is string; use as-is\n const classes = normalizeClassNameList(target.className);\n classes.forEach(cls => {\n if (!this.incrementalParser.isProcessed(cls)) {\n newClasses.add(cls);\n }\n });\n }\n }\n \n // Handle new nodes\n if (mutation.type === 'childList') {\n mutation.addedNodes.forEach(node => {\n if (node instanceof Element) {\n this.processElement(node, newClasses);\n // Process child elements\n node.querySelectorAll('[class]').forEach(el => {\n this.processElement(el, newClasses);\n });\n }\n });\n }\n });\n \n // Process new classes in batch\n if (newClasses.size > 0) {\n const classesArray = Array.from(newClasses);\n \n // Process classes directly and update BrowserRuntime cache\n const results = this.incrementalParser.processClasses(classesArray);\n // If BrowserRuntime is available, apply results via public API\n this.BrowserRuntime?.applyParseResults(results);\n }\n });\n \n this.observer.observe(root, {\n attributes: true,\n subtree: true,\n attributeFilter: ['class'],\n childList: true\n });\n \n // Handle scan option - process existing classes\n if (options?.scan) {\n this.scanExistingClasses(root, options);\n }\n \n return this.observer;\n }\n \n /**\n * Scan existing classes in the DOM and process them\n */\n private scanExistingClasses(root: HTMLElement, options?: { onReady?: () => void }): void {\n const existingClasses = new Set<string>();\n \n // Include root itself\n if (root.className) {\n const classes = normalizeClassNameList(root.className);\n classes.forEach(cls => {\n if (!this.incrementalParser.isProcessed(cls)) {\n existingClasses.add(cls);\n }\n });\n }\n \n // Scan all child elements\n const elementsWithClass = root.querySelectorAll('[class]') as unknown as HTMLElement[];\n // console.log('[BrowserRuntime] scanExistingClasses', elementsWithClass);\n for (const el of elementsWithClass) {\n if (el.className) {\n // SVG className is SVGAnimatedString; convert to string with toString()\n // HTMLElement className is string; use as-is\n const classes = normalizeClassNameList(el.className);\n // console.log('[BrowserRuntime] scanExistingClasses', classes);\n \n for (const cls of classes) {\n if (!this.incrementalParser.isProcessed(cls)) {\n existingClasses.add(cls);\n }\n };\n }\n }\n \n // console.log('[BrowserRuntime] scanExistingClasses', existingClasses);\n \n if (existingClasses.size > 0) {\n // Process classes using IncrementalParser\n const classes = Array.from(existingClasses);\n const results = this.incrementalParser.processClasses(classes);\n \n const layoutResults = results.filter(result => parseResultCache.get(result.cls)?.utility?.category === 'layout');\n const nonLayoutResults = results.filter(result => parseResultCache.get(result.cls)?.utility?.category !== 'layout');\n \n \n // Apply layout results\n this.BrowserRuntime?.applyParseResults(layoutResults);\n options?.onReady?.();\n \n // Apply non-layout results\n this.BrowserRuntime?.applyParseResults(nonLayoutResults);\n }\n }\n \n /**\n * Processes an individual element and extracts new classes\n * \n * This method is called for each element discovered during DOM mutations.\n * It:\n * - Extracts all class names from the element's className\n * - Filters out already processed classes\n * - Adds new classes to the collection for batch processing\n * \n * @param element - The HTML element to process\n * @param newClasses - Set to collect newly discovered class names\n */\n private processElement(element: Element, newClasses: Set<string>): void {\n if (element.className) {\n // SVG className is SVGAnimatedString; convert to string with toString()\n // HTMLElement className is string; use as-is\n const classes = normalizeClassNameList(element.className);\n classes.forEach(cls => {\n if (!this.incrementalParser.isProcessed(cls)) {\n newClasses.add(cls);\n }\n });\n }\n \n }\n \n /**\n * Stops observing DOM changes and cleans up resources\n * \n * This method disconnects the MutationObserver and clears the\n * observer reference to prevent memory leaks and allow the\n * ChangeDetector to be properly garbage collected.\n */\n disconnect(): void {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n }\n }\n","import { GenerateCssRulesResult } from '@barocss/kit';\nimport { createContext, clearAstCache, IncrementalParser } from '@barocss/kit';\nimport type { Config, Context } from '@barocss/kit';\nimport { StylePartitionManager } from './style-partition-manager';\nimport { ChangeDetector } from './change-detector';\n\nexport interface BrowserRuntimeOptions {\n config?: Config; // full config object\n styleId?: string;\n insertionPoint?: 'head' | 'body' | HTMLElement;\n maxRulesPerPartition?: number;\n}\n\nexport class BrowserRuntime {\n private cache: Map<string, GenerateCssRulesResult> = new Map(); // class name -> generated CSS mapping\n private rootCache: Set<string> = new Set(); // class name -> generated CSS mapping\n private context: Context;\n private options: Required<BrowserRuntimeOptions>;\n private isDestroyed = false;\n\n private incrementalParser: IncrementalParser;\n private changeDetector: ChangeDetector;\n private stylePartitionManager: StylePartitionManager;\n\n constructor(options: BrowserRuntimeOptions = {}) {\n // Default config - createContext handles defaultTheme automatically\n const defaultConfig: Config = {};\n\n this.options = {\n config: options.config || defaultConfig,\n styleId: options.styleId || 'barocss-runtime',\n insertionPoint: options.insertionPoint || 'head',\n maxRulesPerPartition: options.maxRulesPerPartition || 50,\n };\n\n // Pass full config to createContext (defaultTheme auto-included)\n this.context = createContext(this.options.config);\n\n this.incrementalParser = new IncrementalParser(this.context);\n this.changeDetector = new ChangeDetector(this.incrementalParser, this);\n\n this.stylePartitionManager = new StylePartitionManager(this.getInsertionPoint(), this.options.maxRulesPerPartition, `${this.options.styleId}-partition`);\n\n this.init();\n }\n\n // Debugging and logging helpers\n \n /**\n * Add debug logs (by level)\n */\n private debugLog(level: 'info' | 'warn' | 'error' | 'debug', message: string, data?: unknown): void {\n // Console output\n // eslint-disable-next-line no-console\n const consoleMethod = console[level] || console.log;\n consoleMethod(`[BrowserRuntime:${level.toUpperCase()}] ${message}`, data || '');\n }\n\n private init() {\n // eslint-disable-next-line no-console\n console.log('[BrowserRuntime] init');\n this.injectPreflightCSS();\n this.ensureCssVars();\n }\n\n private injectPreflightCSS() {\n if (this.options.config.preflight) {\n const preflightCSS = this.context.getPreflightCSS(this.options.config.preflight);\n this.stylePartitionManager.updateRuleContent(\"preflight\", preflightCSS);\n }\n }\n\n private ensureCssVars() {\n if (this.isDestroyed) return;\n\n const cssVars = this.context.themeToCssVars ? this.context.themeToCssVars() : ':root { /* CSS Variables will be generated here */ }';\n this.stylePartitionManager.updateRuleContent(\"css-vars\", cssVars);\n }\n\n private getInsertionPoint(): HTMLElement {\n if (this.options.insertionPoint instanceof HTMLElement) {\n return this.options.insertionPoint;\n }\n switch (this.options.insertionPoint) {\n case 'body':\n return document.body || document.head;\n case 'head':\n default:\n return document.head;\n }\n }\n\n /**\n * Dynamically add one or more class names and generate/insert CSS\n */\n addClass(classes: string | string[]): void {\n if (this.isDestroyed) return;\n \n const classList = this.normalizeClasses(classes);\n \n this.processClasses(classList);\n }\n\n /**\n * Process classes\n */\n private processClasses(classList: string[]): void { \n // Use incremental parsing by default (always enabled)\n \n this.processClassesIncremental(classList);\n }\n\n /**\n * Process classes using incremental parsing\n */\n private processClassesIncremental(classList: string[]): void {\n const isBrowser = typeof window !== 'undefined';\n \n // Process classes immediately for testing environment\n const results = this.incrementalParser.processClasses(classList);\n \n // eslint-disable-next-line no-console\n console.log('[BrowserRuntime] results', results, ...classList);\n // Apply results and inject CSS\n this.applyParseResults(results, { isBrowser });\n }\n\n /**\n * Public method to apply parser results, update internal caches, and inject CSS\n */\n public applyParseResults(results: Array<GenerateCssRulesResult>, _opts?: { isBrowser?: boolean }): void {\n if (this.isDestroyed) return;\n if (this.getInsertionPoint().isConnected && this.stylePartitionManager.hasDetachedPartitions()) {\n const existingResults = Array.from(this.cache.values());\n this.reset();\n results = [...existingResults, ...results];\n results.forEach(result => this.incrementalParser.markProcessed(result.cls));\n }\n const cssRules: GenerateCssRulesResult[] = [];\n const rootCssRules: string[] = [];\n\n for (const result of results) {\n if (result.css && Array.isArray(result.cssList)) {\n cssRules.push(result);\n this.cache.set(result.cls, result);\n }\n\n if (result.rootCss && Array.isArray(result.rootCssList)) {\n for (const rootCss of result.rootCssList) {\n if (!this.rootCache.has(rootCss)) {\n this.rootCache.add(rootCss);\n rootCssRules.push(rootCss);\n }\n }\n }\n }\n\n if (rootCssRules.length > 0) {\n this.stylePartitionManager.addRootRules(rootCssRules.filter(Boolean));\n }\n\n if (cssRules.length > 0) {\n this.stylePartitionManager.addRules(cssRules);\n }\n\n this.debugLog('info', `Applied ${results.length} parser results`, {\n cssRuleCount: cssRules.length,\n rootCssCount: rootCssRules.length,\n });\n }\n\n /**\n * MutationObserver instance method to automatically call addClass when class attributes change in DOM\n */\n observe(root: HTMLElement = document.body, options?: { scan?: boolean; onReady?: () => void }): MutationObserver {\n return this.changeDetector.observe(root, options);\n }\n\n private normalizeClasses(classes: string | string[]): string[] {\n return Array.isArray(classes)\n ? classes.flatMap(cls => cls.split(/\\s+/))\n : classes.split(/\\s+/);\n }\n\n has(cls: string): boolean {\n const result = this.cache.has(cls);\n return result;\n }\n\n getCss(cls: string): string | undefined {\n const css = this.cache.get(cls)?.cssList.join('\\n');\n return css;\n }\n\n getAllCss(): string {\n const all = Array.from(this.cache.values()).flatMap(result => result.cssList).join('\\n');\n return all;\n }\n\n getClasses(): string[] {\n const keys = Array.from(this.cache.keys());\n return keys;\n }\n\n /**\n * Get comprehensive cache statistics\n */\n getCacheStats() {\n const incremental = this.incrementalParser.getStats();\n return {\n runtime: {\n cachedClasses: this.cache.size,\n rootCacheSize: this.rootCache.size\n },\n ast: incremental.cacheStats.ast,\n incremental,\n };\n }\n\n /**\n * Clear all caches (useful for debugging or memory management)\n */\n clearCaches(): void {\n if (this.isDestroyed) return;\n this.cache.clear();\n this.rootCache.clear();\n clearAstCache(this.context);\n this.incrementalParser.clearProcessed();\n this.stylePartitionManager.cleanup();\n this.stylePartitionManager = new StylePartitionManager(this.getInsertionPoint(), this.options.maxRulesPerPartition, `${this.options.styleId}-partition`);\n this.injectPreflightCSS();\n this.ensureCssVars();\n }\n\n\n reset(): void {\n if (this.isDestroyed) return;\n this.cache.clear();\n this.rootCache.clear();\n this.incrementalParser.clearProcessed();\n this.stylePartitionManager.cleanup();\n this.stylePartitionManager = new StylePartitionManager(this.getInsertionPoint(), this.options.maxRulesPerPartition, `${this.options.styleId}-partition`);\n this.injectPreflightCSS();\n this.ensureCssVars();\n }\n\n updateConfig(newConfig: Config): void {\n if (this.isDestroyed) return;\n const existingClasses = Array.from(this.cache.keys());\n this.options.config = newConfig;\n this.context = createContext(newConfig);\n this.incrementalParser = new IncrementalParser(this.context);\n this.changeDetector.setParser(this.incrementalParser);\n this.reset();\n if (existingClasses.length > 0) {\n this.addClass(existingClasses);\n }\n }\n\n removeClass(classes: string | string[]): void {\n if (this.isDestroyed) return;\n const classList = new Set(this.normalizeClasses(classes));\n const retainedResults = Array.from(this.cache.values()).filter(result => !classList.has(result.cls));\n if (retainedResults.length === this.cache.size) return;\n\n this.reset();\n retainedResults.forEach(result => this.incrementalParser.markProcessed(result.cls));\n this.applyParseResults(retainedResults);\n }\n\n destroy(): void {\n if (this.isDestroyed) return;\n this.changeDetector.disconnect();\n this.stylePartitionManager.cleanup();\n\n this.cache.clear();\n this.rootCache.clear();\n this.isDestroyed = true;\n\n }\n\n getStats() {\n const stats = {\n cachedClasses: this.cache.size,\n styleElementId: this.options.styleId,\n isDestroyed: this.isDestroyed,\n config: this.options.config,\n cacheStats: this.getCacheStats(),\n };\n return stats;\n }\n}\n","import { BrowserRuntime, BrowserRuntimeOptions } from \"./browser-runtime\";\n\nlet runtime: BrowserRuntime | null = null;\n\nexport function getRuntime(options: BrowserRuntimeOptions) {\n if (!runtime) {\n runtime = new BrowserRuntime(options);\n }\n return runtime;\n}\n\ntype BaroBootOptions = BrowserRuntimeOptions & { loadingClassName?: string };\n\nexport function baroBoot({ loadingClassName = 'baro-boot', ...options }: BaroBootOptions = {}) {\n const startClassName = `${loadingClassName}-doing`;\n const endClassName = `${loadingClassName}-done`;\n try { \n\n document.body.classList.add(startClassName);\n\n const runtime = getRuntime(options);\n runtime.observe(document.body, { scan: true, onReady: () => {\n document.body.classList.remove(startClassName);\n document.body.classList.add(endClassName);\n }});\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('BaroCSS boot failed:', error);\n }\n}\n\nexport const baroStart = baroBoot;"],"names":["value","ctx","opacity","node","nodes","rule","decl","acc","fullClassName","declPaths","colors","varName","boxShadow","fontSize","fontWeight","fontFamily","letterSpacing","spacing","borderRadius","zIndex","animations","keyframes","transitionDuration","transitionDelay","blur","container","v","filters","breakpoints","BrowserRuntime","runtime"],"mappings":"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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2O7B,MAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AClSzB,SAAS,gBAAgB,QAAwB,MAAc;AACpE,MAAI,UAAU,WAAW;AACvB,WAAO;AAAA,EACT,WAAW,UAAU,YAAY;AAC/B,WAAO;AAAA,EACT,WAAW,UAAU,QAAQ;AAC3B,WAAO;AAAA,EACT,WAAW,UAAU,MAAM;AACzB,WAAO;AAAA,EACT,WAAW,UAAU,OAAO;AAC1B,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAwDO,SAAS,UAA6C,MAAS,UAAyB;AAC7F,QAAM,SAAkC,CAAA;AACxC,QAAM,2BAAW,IAAI;AAAA,IACnB,GAAG,OAAO,KAAK,QAAQ,EAAE;AAAA,IACzB,GAAG,OAAO,KAAK,YAAY,CAAA,CAAE;AAAA,EAAA,CAC9B;AACD,aAAW,OAAO,MAAM;AACtB,UAAM,OAAO,OAAO,GAAG;AACvB,UAAM,UAAU,QAAQ,OAAO,SAAS,WAAY,KAAW,IAAI,IAAI;AACvE,UAAM,cAAc,YAAY,OAAO,aAAa,WAAY,SAAe,IAAI,IAAI;AACvF,QACE,eACA,OAAO,gBAAgB,YACvB,CAAC,MAAM,QAAQ,WAAW,GAC1B;AACA,aAAO,IAAI,IAAI;AAAA,QACZ,OAAO,YAAY,YAAY,YAAY,OAAQ,UAAe,CAAA;AAAA,QACnE;AAAA,MAAA;AAAA,IAEJ,WAAW,gBAAgB,QAAW;AACpC,aAAO,IAAI,IAAI;AAAA,IACjB,OAAO;AACL,aAAO,IAAI,IAAI;AAAA,IACjB;AAAA,EACF;AACA,SAAO;AACT;AAIA,MAAM,6CAA6B,QAAA;AAgC5B,SAAS,YAAY,aAAoB,MAAoC;AAElF,QAAM,QAAqB,IAAI,SAA8B,YAAY,UAAU,GAAG,IAAI;AAG1F,MAAI,OAA4B,CAAA;AAChC,MAAI,KAAK,WAAW,KAAK,OAAO,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,EAAE,SAAS,GAAG,GAAG;AAC7E,WAAO,KAAK,CAAC,EAAE,MAAM,GAAG;AAAA,EAC1B,OAAO;AACL,QAAI,KAAK,CAAC,MAAM,YAAY,OAAO,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,EAAE,SAAS,GAAG,GAAG;AAGhF,YAAM,WAAW,KAAK,CAAC;AACvB,UAAI,SAAS,MAAM,iBAAiB,GAAG;AAErC,eAAO,SAAS,MAAM,GAAG;AACzB,eAAO,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI;AAAA,MAC1B,OAAO;AAEL,eAAO;AAAA,MACT;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,KAAK,WAAW,EAAG,QAAO;AAI9B,MAAI,aAAa,uBAAuB,IAAI,QAAQ;AACpD,MAAI,CAAC,YAAY;AACf,qCAAiB,IAAA;AACjB,2BAAuB,IAAI,UAAU,UAAU;AAAA,EACjD;AACA,QAAM,UAAU,KAAK,KAAK,GAAG;AAC7B,MAAI,WAAW,IAAI,OAAO,EAAG,QAAO;AACpC,aAAW,IAAI,OAAO;AAEtB,MAAI;AAEF,QAAI,QAAQ,SAAS,KAAK,CAAC,CAAC;AAE5B,QAAI,OAAO,UAAU,YAAY;AAC/B,cAAQ,MAAM,KAAK;AAAA,IACrB;AAEA,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAI,SAAS,KAAM,QAAO;AAC1B,cAAS,MAAkC,KAAK,CAAC,CAAC;AAAA,IACpD;AAGA,QAAI,OAAO,UAAU,WAAY,QAAO;AACxC,WAAO;AAAA,EACT,UAAA;AACE,eAAW,OAAO,OAAO;AAAA,EAC3B;AACF;AAGO,SAAS,aAAa,WAA0B,MAAkC;AACvF,MAAI,OAA0B,CAAA;AAC9B,MAAI,KAAK,WAAW,KAAK,OAAO,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,EAAE,SAAS,GAAG,GAAG;AAC7E,WAAO,KAAK,CAAC,EAAE,MAAM,GAAG;AAAA,EAC1B,OAAO;AACL,WAAO;AAAA,EACT;AACA,SAAO,KAAK,OAAO,CAAC,KAAc,QAAS,MAAO,IAAgC,GAAG,IAAI,QAAY,MAAM;AAC7G;AAGO,SAAS,UAAU,UAAiB,UAAkB,QAAyB;AACpF,SAAQ,SAAS,QAAQ,GAAgB,WAAW,MAAM;AAC5D;AAGO,SAAS,aAAa,QAAuB;AAClD,MAAI,QAAe,CAAA;AACnB,MAAI,OAAO,SAAS;AAClB,eAAW,UAAU,OAAO,SAAS;AACnC,UAAI,OAAO,OAAO;AAChB,gBAAQ,UAAU,OAAO,OAAO,KAAK;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AACA,MAAI,OAAO,OAAO;AAChB,UAAM,EAAE,QAAQ,GAAG,cAAA,IAAkB,OAAO;AAC5C,YAAQ,UAAU,OAAO,aAAa;AACtC,QAAI,QAAQ;AACV,cAAQ,UAAU,OAAO,MAAM;AAAA,IACjC;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,eAAe,OAAsB;AACnD,QAAM,OAAO,kBAAkB,KAAK;AAEpC,QAAM,SAAS,eAAe,MAAM;AAAA,EACpC,eAAgB,MAAM,aAAa,EAA8B,CAAC;AAAA,CACnE;AAIC,SAAO;AACT;AAGO,SAAS,cAAc,WAA4B;AAExD,QAAM,qBAAqB;AAAA,IACzB,SAAS;AAAA,MACP,EAAE,OAAO,aAAA;AAAA;AAAA,MACT,GAAI,UAAU,WAAW,CAAA;AAAA,IAAC;AAAA,IAE5B,GAAG;AAAA,EAAA;AAEL,QAAM,WAAW,aAAa,kBAAkB;AAGhD,QAAM,MAAe;AAAA,IACnB,WAAW,CAAC,UAAkB,WAA4B;AACxD,YAAM,SAAS,UAAU,UAAU,UAAU,MAAM;AAEnD,aAAO;AAAA,IACT;AAAA,IACA,OAAO,IAAI,SAAS;AAClB,YAAM,SAAS,YAAY,UAAU,GAAG,IAAI;AAE5C,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,IAAI,SAAS;AACnB,YAAM,SAAS,aAAa,oBAAoB,GAAG,IAAI;AAEvD,aAAO;AAAA,IACT;AAAA,IACA,gBAAgB,MAAM,eAAe,QAAQ;AAAA;AAAA,IAE7C,aAAa,CAAC,UAAkB,WAA+C;AAG7E,UAAI,OAAO,WAAW,YAAY;AAEhC,cAAM,gBAAgB;AACtB,cAAM,SAAS,cAAc,IAAI,KAAK;AACtC,YAAI,UAAU,OAAO,WAAW,UAAU;AAExC,gBAAM,iBAAiB,SAAS,QAAQ,KAAK,CAAA;AAC7C,mBAAS,QAAQ,IAAI;AAAA,YACnB,GAAG;AAAA,YACH,GAAG;AAAA,UAAA;AAAA,QAGP;AAAA,MACF,WAAW,OAAO,WAAW,YAAY,WAAW,QAAQ,CAAC,MAAM,QAAQ,MAAM,GAAG;AAElF,cAAM,iBAAiB,SAAS,QAAQ,KAAK,CAAA;AAG7C,iBAAS,QAAQ,IAAI;AAAA,UACnB,GAAG;AAAA,UACH,GAAG;AAAA,QAAA;AAAA,MAGP,MAAO;AAGP,yBAAmB,GAAG;AAAA,IACxB;AAAA,IACA,iBAAiB,CAAC,QAAwB,SAAS;AACjD,aAAO,gBAAgB,KAAK;AAAA,IAC9B;AAAA,EAAA;AAsBF,yBAAuB,KAAK,WAAA,GAAc,YAAA,CAAa;AACvD,SAAO;AACT;ACtUO,SAAS,cAAc,OAA8B;AAC1D,MAAI,MAAM,SAAS,GAAG,GAAG;AACvB,UAAM,CAAC,KAAK,KAAK,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,MAAM;AAChD,QAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,UAAU,GAAG;AAC/C,aAAO,GAAI,MAAM,QAAS,GAAG;AAAA,IAC/B;AAAA,EACF;AACA,SAAO;AACT;AAUO,SAAS,YAAY,OAA8B;AAExD,SAAO,oBAAoB,KAAK,KAAK,IAAI,QAAQ;AACnD;AAiBO,SAAS,YAAY,OAA8B;AACxD,SAAO,6DAA6D,KAAK,KAAK,IAAI,QAAQ;AAC5F;AAqBO,SAAS,sBAAsB,OAAe,OAAgD,IAAmB;AACtH,MAAI,QAAQ,KAAK,KAAK,GAAG;AACvB,QAAI,KAAK,OAAQ,QAAO,UAAU,KAAK;AACvC,WAAO;AAAA,EACT;AACA,MAAI,MAAM,SAAS,GAAG,GAAG;AACvB,UAAM,CAAC,WAAW,WAAW,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,MAAM;AAC5D,QAAI,CAAC,MAAM,SAAS,KAAK,CAAC,MAAM,WAAW,KAAK,gBAAgB,GAAG;AACjE,YAAM,SAAS,YAAY;AAC3B,UAAI,KAAK,QAAS,QAAO,GAAG,SAAS,GAAG;AACxC,aAAO,OAAO,SAAA;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;AAEA,MAAM,sCAAsB,IAAI;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAOM,SAAS,WAAW,OAA8B;AAGvD,MAAI,gBAAgB,IAAI,MAAM,YAAA,CAAa,GAAG;AAC5C,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,WAAW,YAAY,GAAG;AAClC,WAAO,MAAM,MAAM,CAAC;AAAA,EACtB;AAEA,MAAI,MAAM,WAAW,QAAQ,GAAG;AAC9B,WAAO,WAAW,MAAM,MAAM,CAAC,CAAC;AAAA,EAClC;AAGA,MAAI,MAAM,WAAW,GAAG,KAAK,MAAM,WAAW,GAAG;AAC/C,WAAO,IAAI,MAAM,MAAM,CAAC,CAAC;AAAA,EAC3B;AACA,MAAI,MAAM,WAAW,GAAG,KAAK,MAAM,WAAW,GAAG;AAC/C,WAAO,IAAI,MAAM,MAAM,CAAC,CAAC;AAAA,EAC3B;AACA,MAAI,MAAM,WAAW,GAAG,KAAK,MAAM,WAAW,GAAG;AAC/C,WAAO,IAAI,MAAM,MAAM,CAAC,CAAC;AAAA,EAC3B;AACA,MAAI,MAAM,WAAW,GAAG,KAAK,MAAM,WAAW,GAAG;AAC/C,WAAO,IAAI,MAAM,MAAM,CAAC,CAAC;AAAA,EAC3B;AAIA,MAAI,MAAM,WAAW,MAAM,GAAG;AAC5B,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAGA,MAAI,MAAM,WAAW,OAAO,GAAG;AAC7B,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAGA,MAAI,MAAM,WAAW,MAAM,GAAG;AAC5B,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAGA,MAAI,MAAM,WAAW,OAAO,GAAG;AAC7B,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAGA,MAAI,MAAM,WAAW,MAAM,GAAG;AAC5B,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAGA,MAAI,MAAM,WAAW,MAAM,GAAG;AAC5B,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAGA,MAAI,MAAM,WAAW,MAAM,GAAG;AAC5B,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAGA,MAAI,MAAM,WAAW,QAAQ,GAAG;AAC9B,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAGA,MAAI,MAAM,WAAW,QAAQ,GAAG;AAC9B,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAGA,MAAI,MAAM,WAAW,YAAY,GAAG;AAClC,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAGA,SAAO;AACT;AC5TA,cAAc,kBAAkB,CAAC,CAAC,gBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC5F,cAAc,kBAAkB,CAAC,CAAC,gBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACjG,cAAc,sBAAsB,CAAC,CAAC,gBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAGpG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,WAAW,CAAC,QAAQ;AAAA,EACpB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,QAAQ,UAAU;AACtC,QAAI,OAAO,gBAAgB;AACzB,UAAI,MAAM,SAAS;AACjB,eAAO;AAAA,UACL,OAAO,YAAY,uCAAuC;AAAA,YACxD;AAAA,cACE;AAAA,cACA,qBAAqB,KAAK,IAAI,MAAM,OAAO;AAAA,YAAA;AAAA,UAC7C,CACD;AAAA,UACD,KAAK,gBAAgB,KAAK;AAAA,QAAA;AAAA,MAE9B;AAEA,aAAO,CAAC,KAAK,gBAAgB,eAAe,MAAM,cAAc,GAAG,CAAC;AAAA,IACtE;AAEA,WAAO,CAAC,KAAK,gBAAgB,KAAK,CAAC;AAAA,EACrC;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,gBAAgB,OAAO,KAAK,GAAG,CAAC;AAAA,EACvE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAMD,cAAc,mBAAmB,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAExF,cAAc,mBAAmB,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAMxF,cAAc,iBAAiB,CAAC,CAAC,eAAe,SAAS,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC1F,cAAc,iBAAiB,CAAC,CAAC,eAAe,cAAc,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC/F,cAAc,qBAAqB,CAAC,CAAC,eAAe,aAAa,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAMlG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,WAAW,CAAC,QAAQ;AAAA,EACpB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,OAAO,UAAU;AACpC,QAAI,OAAO,gBAAgB;AACzB,UAAI,MAAM,SAAS;AACjB,eAAO;AAAA,UACL,OAAO,YAAY,uCAAuC;AAAA,YACxD;AAAA,cACE;AAAA,cACA,qBAAqB,KAAK,IAAI,MAAM,OAAO;AAAA,YAAA;AAAA,UAC7C,CACD;AAAA,UACD,KAAK,eAAe,KAAK;AAAA,QAAA;AAAA,MAE7B;AAEA,aAAO,CAAC,KAAK,eAAe,eAAe,MAAM,cAAc,GAAG,CAAC;AAAA,IACrE;AACA,WAAO,CAAC,KAAK,eAAe,KAAK,CAAC;AAAA,EACpC;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,eAAe,OAAO,KAAK,GAAG,CAAC;AAAA,EACtE,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAMD,cAAc,iBAAiB,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAE1F,cAAc,eAAe,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAEtF,cAAc,gBAAgB,CAAC,CAAC,gBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAExF,cAAc,qBAAqB,CAAC,CAAC,gBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAElG,cAAc,oBAAoB,CAAC,CAAC,gBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAEhG,cAAc,qBAAqB,CAAC,CAAC,gBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAMlG;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,QAAQ,CAAC,WAAW;AACpB,gBAAc,UAAU,MAAM,IAAI,CAAC,CAAC,UAAU,MAAM,CAAC,GAAG,EAAE,UAAU,gBAAA,CAAiB;AACvF,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAMD,cAAc,sBAAsB,CAAC,CAAC,gBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAE9F,cAAc,wBAAwB,CAAC,CAAC,gBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAMlG,cAAc,uBAAuB,CAAC,CAAC,kBAAkB,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAEhG,cAAc,uBAAuB,CAAC,CAAC,kBAAkB,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAMhG,cAAc,UAAU,CAAC,CAAC,UAAU,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAE3E,cAAc,YAAY,CAAC,CAAC,UAAU,YAAY,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAEnF,cAAc,YAAY,CAAC,CAAC,UAAU,UAAU,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAEjF,cAAc,eAAe,CAAC,CAAC,UAAU,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAMhF,cAAc,eAAe,CAAC,CAAC,mBAAmB,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAEzF,cAAc,iBAAiB,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAI7F,cAAc,cAAc,CAAC,CAAC,qBAAqB,OAAO,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC3F,cAAc,YAAY,CAAC,CAAC,qBAAqB,KAAK,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACvF,cAAc,eAAe,CAAC,CAAC,qBAAqB,QAAQ,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC7F,cAAc,mBAAmB,CAAC,CAAC,qBAAqB,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAI/F,cAAc,eAAe,CAAC,CAAC,oBAAoB,QAAQ,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC5F,cAAc,eAAe,CAAC,CAAC,oBAAoB,QAAQ,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAI5F,cAAc,aAAa,CAAC,CAAC,oBAAoB,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACxF,cAAc,UAAU,CAAC,CAAC,oBAAoB,sCAAsC,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACrH,cAAc,UAAU,CAAC,CAAC,oBAAoB,sCAAsC,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACrH,cAAc,aAAa,CAAC,CAAC,oBAAoB,yCAAyC,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC3H,cAAc,kBAAkB,CAAC,CAAC,iCAAiC,WAAW,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC/G,cAAc,kBAAkB,CAAC,CAAC,iCAAiC,WAAW,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAG/G;AAAA,EACE,CAAC,MAAM,mBAAmB;AAAA,EAC1B,CAAC,MAAM,qBAAqB;AAAA,EAC5B,CAAC,MAAM,sBAAsB;AAAA,EAC7B,CAAC,MAAM,oBAAoB;AAAA,EAC3B,CAAC,MAAM,sBAAsB;AAAA,EAC7B,CAAC,MAAM,qBAAqB;AAAA,EAC5B,CAAC,MAAM,4BAA4B;AAAA,EACnC,CAAC,MAAM,0BAA0B;AAAA,EACjC,CAAC,KAAK,eAAe;AACvB,EAAE,QAAQ,CAAC,CAAC,MAAM,IAAI,MAAM;AAC1B,oBAAkB;AAAA,IAChB,MAAM,UAAU,IAAI;AAAA,IACpB;AAAA,IACA,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IACxB,QAAQ,CAAC,OAAO,MAAM,OAAO,WAAW;AACtC,UAAI,YAAY,KAAK,KAAK,MAAM,UAAU;AACxC,eAAO,CAAC,KAAK,MAAM,yBAAyB,KAAK,GAAG,CAAC;AAAA,MACvD;AACA,aAAO,CAAC,KAAK,MAAM,KAAK,CAAC;AAAA,IAC3B;AAAA,IACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,MAAM,OAAO,KAAK,GAAG,CAAC;AAAA,IAC7D,aAAa,GAAG,IAAI;AAAA,IACpB,UAAU;AAAA,EAAA,CACX;AACH,CAAC;AAMD;AAAA,EACE,CAAC,MAAM,oBAAoB;AAAA,EAC3B,CAAC,MAAM,sBAAsB;AAAA,EAC7B,CAAC,MAAM,uBAAuB;AAAA,EAC9B,CAAC,MAAM,qBAAqB;AAAA,EAC5B,CAAC,MAAM,uBAAuB;AAAA,EAC9B,CAAC,MAAM,sBAAsB;AAAA,EAC7B,CAAC,MAAM,6BAA6B;AAAA,EACpC,CAAC,MAAM,2BAA2B;AAAA,EAClC,CAAC,KAAK,gBAAgB;AACxB,EAAE,QAAQ,CAAC,CAAC,MAAM,IAAI,MAAM;AAC1B,oBAAkB;AAAA,IAChB,MAAM,UAAU,IAAI;AAAA,IACpB;AAAA,IACA,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IACxB,QAAQ,CAAC,OAAO,MAAM,OAAO,WAAW;AACtC,UAAI,YAAY,KAAK,KAAK,MAAM,UAAU;AACxC,eAAO,CAAC,KAAK,MAAM,yBAAyB,KAAK,GAAG,CAAC;AAAA,MACvD;AACA,aAAO,CAAC,KAAK,MAAM,KAAK,CAAC;AAAA,IAC3B;AAAA,IACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,MAAM,OAAO,KAAK,GAAG,CAAC;AAAA,IAC7D,aAAa,UAAU,IAAI;AAAA,IAC3B,UAAU;AAAA,EAAA,CACX;AACH,CAAC;AAID,cAAc,cAAc,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACrF,cAAc,cAAc,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACrF,cAAc,eAAe,CAAC,CAAC,gBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACvF,cAAc,kBAAkB,CAAC,CAAC,gBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC7F,cAAc,mBAAmB,CAAC,CAAC,gBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC/F,cAAc,eAAe,CAAC,CAAC,gBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACvF,cAAc,gBAAgB,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACzF,cAAc,kBAAkB,CAAC,CAAC,gBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC7F,cAAc,oBAAoB,CAAC,CAAC,gBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACjG,cAAc,sBAAsB,CAAC,CAAC,gBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAIrG,cAAc,eAAe,CAAC,CAAC,eAAe,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACrF,cAAc,eAAe,CAAC,CAAC,eAAe,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACrF,cAAc,cAAc,CAAC,CAAC,eAAe,KAAK,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACnF,cAAc,eAAe,CAAC,CAAC,eAAe,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAIrF,cAAc,oBAAoB,CAAC,CAAC,eAAe,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC1F,cAAc,sBAAsB,CAAC,CAAC,eAAe,iBAAiB,CAAC,GAAG,EAAE,UAAU,iBAAiB;AACvG,cAAc,wBAAwB,CAAC,CAAC,eAAe,UAAU,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAClG,cAAc,yBAAyB,CAAC,CAAC,eAAe,WAAW,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAGpG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;ACvTD,MAAM,gBAAgB;AACtB,MAAM,kBAAkB;AAGxB,cAAc,cAAc;AAAA,EAC1B;AAAA,IACE;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,CAAC,8BAA8B,aAAa;AAAA,EAC5C,CAAC,uBAAuB,eAAe;AACzC,GAAG,EAAE,UAAU,eAAe;AAG9B,cAAc,kBAAkB;AAAA,EAC9B,CAAC,uBAAuB,KAAK;AAAA,EAC7B,CAAC,8BAA8B,aAAa;AAAA,EAC5C,CAAC,uBAAuB,eAAe;AACzC,GAAG,EAAE,UAAU,eAAe;AAG9B,cAAc,qBAAqB;AAAA,EACjC;AAAA,IACE;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,CAAC,8BAA8B,aAAa;AAAA,EAC5C,CAAC,uBAAuB,eAAe;AACzC,GAAG,EAAE,UAAU,eAAe;AAG9B,cAAc,sBAAsB;AAAA,EAClC,CAAC,uBAAuB,SAAS;AAAA,EACjC,CAAC,8BAA8B,aAAa;AAAA,EAC5C,CAAC,uBAAuB,eAAe;AACzC,GAAG,EAAE,UAAU,eAAe;AAG9B,cAAc,qBAAqB;AAAA,EACjC,CAAC,uBAAuB,YAAY;AAAA,EACpC,CAAC,8BAA8B,aAAa;AAAA,EAC5C,CAAC,uBAAuB,eAAe;AACzC,GAAG,EAAE,UAAU,eAAe;AAG9B,cAAc,wBAAwB;AAAA,EACpC,CAAC,uBAAuB,qCAAqC;AAAA,EAC7D,CAAC,8BAA8B,aAAa;AAAA,EAC5C,CAAC,uBAAuB,eAAe;AACzC,GAAG,EAAE,UAAU,eAAiB;AAIhC,cAAc,qBAAqB,CAAC,CAAC,uBAAuB,QAAQ,CAAC,GAAG,EAAE,UAAU,eAAe;AACnG,cAAc,uBAAuB,CAAC,CAAC,uBAAuB,gBAAgB,CAAC,GAAG,EAAE,UAAU,eAAe;AAG7G,cAAc,mBAAmB,CAAC,CAAC,uBAAuB,MAAM,CAAC,GAAG,EAAE,UAAU,eAAe;AAG/F,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,WAAW;AAC/B,WAAO;AAAA,MACL,KAAK,uBAAuB,KAAK;AAAA,MACjC,KAAK,8BAA8B,aAAa;AAAA,MAChD,KAAK,uBAAuB,eAAe;AAAA,IAAA;AAAA,EAE/C;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,uBAAuB,OAAO,KAAK,GAAG;AAAA,IAC3C,KAAK,8BAA8B,aAAa;AAAA,IAChD,KAAK,uBAAuB,eAAe;AAAA,EAAA;AAAA,EAE7C,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,oBAAoB,CAAC,CAAC,uBAAuB,SAAS,CAAC,GAAG,EAAE,UAAU,eAAe;AAEnG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,WAAW;AAC/B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,uBAAuB,GAAG,KAAK,IAAI,CAAC;AAAA,IACnD;AACA,WAAO,CAAC,KAAK,uBAAuB,KAAK,CAAC;AAAA,EAC5C;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,uBAAuB,OAAO,KAAK,GAAG,CAAC;AAAA,EAC9E,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,eAAe,CAAC,CAAC,8BAA8B,QAAQ,CAAC,GAAG,EAAE,UAAU,eAAe;AACpG,cAAc,WAAW,CAAC,CAAC,8BAA8B,gBAAgB,CAAC,GAAG,EAAE,UAAU,eAAe;AACxG,cAAc,YAAY,CAAC,CAAC,8BAA8B,iBAAiB,CAAC,GAAG,EAAE,UAAU,eAAe;AAC1G,cAAc,eAAe,CAAC,CAAC,8BAA8B,oBAAoB,CAAC,GAAG,EAAE,UAAU,eAAe;AAChH,cAAc,gBAAgB,CAAC,CAAC,8BAA8B,SAAS,CAAC,GAAG,EAAE,UAAU,eAAe;AAEtG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,WAAW;AAC/B,WAAO,CAAC,KAAK,8BAA8B,KAAK,CAAC;AAAA,EACnD;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,8BAA8B,OAAO,KAAK,GAAG,CAAC;AAAA,EACrF,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,WAAW;AAC/B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,oBAAoB,GAAG,KAAK,IAAI,CAAC;AAAA,IAChD;AACA,WAAO,CAAC,KAAK,oBAAoB,KAAK,CAAC;AAAA,EACzC;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,oBAAoB,OAAO,KAAK,GAAG,CAAC;AAAA,EAC3E,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,gBAAgB;AAAA,EAC1B,CAAC,aAAa,qBAAqB;AACvC,GAAG,EAAE,UAAU,eAAe;AAC9B,cAAc,gBAAgB,CAAC,CAAC,aAAa,qBAAqB,CAAC,GAAG,EAAE,UAAU,eAAe;AACjG,cAAc,iBAAiB,CAAC,CAAC,aAAa,sBAAsB,CAAC,GAAG,EAAE,UAAU,eAAe;AACnG,cAAc,kBAAkB,CAAC,CAAC,aAAa,uBAAuB,CAAC,GAAG,EAAE,UAAU,eAAe;AACrG,cAAc,gBAAgB,CAAC,CAAC,aAAa,MAAM,CAAC,GAAG,EAAE,UAAU,eAAiB;AAEpF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,UAAU;AAC7B,QAAI,MAAM,gBAAgB;AACxB,aAAO,CAAC,KAAK,aAAa,OAAO,KAAK,GAAG,CAAC;AAAA,IAC5C;AACA,WAAO,CAAC,KAAK,aAAa,KAAK,CAAC;AAAA,EAClC;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,aAAa,OAAO,KAAK,GAAG,CAAC;AAAA,EACpE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;ACnKD,cAAc,mBAAmB,CAAC,CAAC,mBAAmB,UAAU,CAAC,GAAG,EAAE,UAAU,SAAS;AACzF,cAAc,mBAAmB,CAAC,CAAC,mBAAmB,UAAU,CAAC,GAAG,EAAE,UAAU,SAAS;AAGzF,cAAc,cAAc,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,SAAS;AAC7E,cAAc,eAAe,CAAC,CAAC,gBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,SAAS;AAG/E,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,WAAW;AAC/B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,kBAAkB,yBAAyB,KAAK,gCAAgC,CAAC;AAAA,IAChG;AACA,WAAO,CAAC,KAAK,kBAAkB,GAAG,KAAK,+BAA+B,CAAC;AAAA,EACzE;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,kBAAkB,OAAO,KAAK,gCAAgC,CAAC;AAAA,EACtG,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAED,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,WAAW;AAC/B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,kBAAkB,sDAAsD,KAAK,GAAG,CAAC;AAAA,IAChG;AACA,WAAO,CAAC,KAAK,kBAAkB,gCAAgC,KAAK,EAAE,CAAC;AAAA,EACzE;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,kBAAkB,oCAAoC,KAAK,GAAG,CAAC;AAAA,EACtG,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAED,kBAAkB;AAAA,EACd,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,WAAW;AAC/B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,kBAAkB,yBAAyB,KAAK,GAAG,CAAC;AAAA,IACnE;AACA,WAAO,CAAC,KAAK,kBAAkB,KAAK,CAAC;AAAA,EACvC;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,kBAAkB,OAAO,KAAK,GAAG,CAAC;AAAA,EACzE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGH,cAAc,eAAe,CAAC,CAAC,gBAAgB,KAAK,CAAC,GAAG,EAAE,UAAU,SAAS;AAC7E,cAAc,kBAAkB,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,SAAS;AC1DnF,cAAc,eAAe,CAAC,CAAC,UAAU,MAAM,CAAC,GAAG,EAAE,UAAU,WAAW;AAE1E,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAED,MAAMC,YAAU,MAAM;AACpB,SAAO,KAAK,UAAU,+MAA+M;AACvO;AAGA;AAAA,EACE,CAAC,WAAW,gBAAgB;AAAA,EAC5B,CAAC,WAAW,gBAAgB;AAAA,EAC5B,CAAC,WAAW,gBAAgB;AAAA,EAC5B,CAAC,WAAW,gBAAgB;AAAA,EAC5B,CAAC,WAAW,gBAAgB;AAAA,EAC5B,CAAC,YAAY,iBAAiB;AAAA,EAC9B,CAAC,YAAY,iBAAiB;AAChC,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB;AAAA,IAC5B,KAAK,eAAe,QAAQ,KAAK,GAAG;AAAA,IACpCA,UAAA;AAAA,EAAQ,GACP,EAAE,UAAU,WAAW;AAC5B,CAAC;AACD,cAAc,aAAa,CAAC,KAAK,eAAe,EAAE,GAAGA,UAAA,CAAS,GAAG,EAAE,UAAU,WAAW;AAExF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,UAAU;AAC9B,QAAI,MAAM,eAAgB,QAAO,CAAC,KAAK,eAAe,YAAY,KAAK,IAAI,GAAGA,UAAA,CAAS;AACvF,WAAO,CAAC,KAAK,eAAe,QAAQ,KAAK,GAAG,GAAGA,WAAS;AAAA,EAC1D;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,eAAe,YAAY,KAAK,IAAI,GAAGA,UAAA,CAAS;AAAA,EACvF,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAID,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,UAAU;AAC7B,QAAI,MAAM,WAAW;AACnB,aAAO,CAAC,KAAK,qBAAqB,cAAc,KAAK,GAAG,GAAGA,WAAS;AAAA,IACtE;AACA,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,qBAAqB,cAAc,KAAK,IAAI,GAAGA,WAAS;AAAA,IACvE;AACA,QAAI,MAAM;AACR,aAAO,CAAC,KAAK,qBAAqB,kBAAkB,KAAK,IAAI,GAAGA,WAAS;AAC3E,WAAO,CAAC,KAAK,qBAAqB,cAAc,KAAK,GAAG,GAAGA,WAAS;AAAA,EACtE;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,qBAAqB,kBAAkB,KAAK,IAAI;AAAA,IACrDA,UAAA;AAAA,EAAQ;AAAA,EAEV,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,UAAU;AAC9B,QAAI,MAAM,WAAW;AACnB,aAAO,CAAC,KAAK,mBAAmB,YAAY,KAAK,GAAG,GAAGA,WAAS;AAAA,IAClE;AACA,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,mBAAmB,YAAY,KAAK,IAAI,GAAGA,WAAS;AAAA,IACnE;AACA,QAAI,MAAM;AACR,aAAO,CAAC,KAAK,mBAAmB,gBAAgB,KAAK,IAAI,GAAGA,WAAS;AACvE,WAAO,CAAC,KAAK,mBAAmB,YAAY,KAAK,GAAG,GAAGA,WAAS;AAAA,EAClE;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,mBAAmB,gBAAgB,KAAK,IAAI,GAAGA,UAAA,CAAS;AAAA,EAC/F,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD;AAAA,EACE,CAAC,kBAAkB,MAAM,oDAAoD;AAAA,EAC7E,CAAC,kBAAkB,MAAM,oDAAoD;AAAA,EAC7E,CAAC,kBAAkB,MAAM,oDAAoD;AAAA,EAC7E,CAAC,kBAAkB,MAAM,oDAAoD;AAAA,EAC7E,CAAC,kBAAkB,MAAM,oDAAoD;AAAA,EAC7E,CAAC,mBAAmB,OAAO,sDAAsD;AACnF,EAAE,QAAQ,CAAC,CAAC,MAAM,MAAM,SAAS,MAAM;AACrC,gBAAc,MAAgB;AAAA,IAC5B,KAAK,2BAA2B,eAAe,SAAS,GAAG;AAAA,IAC3D,KAAK,sBAAsB,qBAAqB,IAAI,GAAG;AAAA,IACvDA,UAAA;AAAA,EAAQ,CACT;AACH,CAAC;AACD,cAAc,oBAAoB,CAAC,KAAK,sBAAsB,wBAAwB,GAAGA,UAAA,CAAS,CAAC;AAInG,CAAC,WAAW,WAAW,aAAa,EAAE,QAAQ,CAAC,SAAS;AACtD,gBAAc,eAAe,IAAI,IAAI;AAAA,IACnC,KAAK,4BAA4B,SAAS,YAAY,iBAAiB,IAAI;AAAA,EAAA,CAC5E;AACH,CAAC;AAGD,CAAC,SAAS,OAAO,EAAE,QAAQ,CAAC,SAAS;AACnC,gBAAc,eAAe,IAAI,IAAI;AAAA,IACnC,KAAK,4BAA4B,eAAe,IAAI,GAAG;AAAA,EAAA,CACxD;AACH,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,WAAW,CAAC,QAAQ;AAAA,EACpB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,QAAQ,UAAU;AACtC,QAAI,OAAO,gBAAgB;AACzB,aAAO,CAAC,KAAK,4BAA4B,eAAe,MAAM,cAAc,GAAG,CAAC;AAAA,IAClF;AAEA,QAAI,WAAW,KAAK,GAAG;AACrB,aAAO,CAAC,KAAK,4BAA4B,KAAK,CAAC;AAAA,IACjD;AAEA,WAAO;AAAA,MACL,KAAK,2BAA2B,eAAe,KAAK,GAAG;AAAA,MACvD,KAAK,sBAAsB,8BAA8B;AAAA,IAAA;AAAA,EAE7D;AAAA,EACA,sBAAsB,CAAC,UAAU;AAC/B,QAAI,MAAM,WAAW,QAAQ,GAAG;AAC9B,aAAO;AAAA,QACL,KAAK,4BAA4B,OAAO,MAAM,QAAQ,UAAU,EAAE,CAAC,GAAG;AAAA,MAAA;AAAA,IAE1E;AAEA,WAAO;AAAA,MACL,KAAK,2BAA2B,mBAAmB,KAAK,IAAI;AAAA,MAC5D,KAAK,sBAAsB,8BAA8B;AAAA,IAAA;AAAA,EAE7D;AAAA,EACA,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,aAAa,CAAC,KAAK,oBAAoB,iBAAiB,GAAGA,UAAA,CAAS,GAAG,EAAE,UAAU,WAAW;AAE5G,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,UAAU;AACjB,QAAI,YAAY,KAAK,GAAG;AACpB,aAAO,CAAC,KAAK,oBAAoB,aAAa,KAAK,IAAI,GAAGA,WAAS;AAAA,IACvE;AACA,WAAO,CAAC,KAAK,oBAAoB,aAAa,KAAK,GAAG,GAAGA,WAAS;AAAA,EACpE;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,oBAAoB,iBAAiB,KAAK,IAAI,GAAGA,UAAA,CAAS;AAAA,EACjG,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAID,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,MAAM,UAAU;AAC9B,QAAI,MAAM,YAAY,YAAY,MAAM,KAAM,GAAG;AAC/C,aAAO,CAAC,KAAK,qBAAqB,mBAAmB,MAAM,KAAK,YAAY,GAAGA,WAAS;AAAA,IAC1F;AACA,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,qBAAqB,cAAc,KAAK,MAAM,GAAGA,WAAS;AAAA,IACzE;AACA,QAAI,MAAM,eAAgB,QAAO,CAAC,KAAK,qBAAqB,kBAAkB,KAAK,IAAI,GAAGA,UAAA,CAAS;AACnG,WAAO,CAAC,KAAK,qBAAqB,cAAc,KAAK,GAAG,GAAGA,WAAS;AAAA,EACtE;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,qBAAqB,kBAAkB,KAAK,IAAI,GAAGA,UAAA,CAAS;AAAA,EACnG,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,UAAU,CAAC,KAAK,iBAAiB,cAAc,GAAGA,UAAA,CAAS,GAAG,EAAE,UAAU,WAAW;AAEnG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,UAAU;AACjB,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,iBAAiB,UAAU,KAAK,IAAI,GAAGA,WAAS;AAAA,IAC/D;AAEA,WAAO,CAAC,KAAK,iBAAiB,UAAU,KAAK,GAAG,GAAGA,WAAS;AAAA,EAC9D;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,UAAU;AACjB,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,mBAAmB,YAAY,KAAK,IAAI,GAAGA,WAAS;AAAA,IACnE;AACA,WAAO,CAAC,KAAK,mBAAmB,YAAY,KAAK,GAAG,GAAGA,WAAS;AAAA,EAClE;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,mBAAmB,gBAAgB,KAAK,IAAI,GAAGA,UAAA,CAAS;AAAA,EAC/F,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,SAAS,CAAC,KAAK,gBAAgB,aAAa,GAAGA,UAAA,CAAS,GAAG,EAAE,UAAU,WAAW;AAEhG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,UAAU;AACjB,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,gBAAgB,SAAS,KAAK,IAAI,GAAGA,WAAS;AAAA,IAC7D;AACA,WAAO,CAAC,KAAK,gBAAgB,SAAS,KAAK,GAAG,GAAGA,WAAS;AAAA,EAC5D;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,gBAAgB,aAAa,KAAK,IAAI,GAAGA,UAAA,CAAS;AAAA,EACzF,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;ACtQD,MAAM,UAAU,MAAM;AACpB,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,MACE;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ;AAGA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,mBAAmB,6BAA6B,CAAC;AAAA,EACnD,EAAE,UAAU,UAAA;AACd;AACA,cAAc,wBAAwB,CAAC,CAAC,mBAAmB,MAAM,CAAC,GAAG;AAAA,EACnE,UAAU;AACZ,CAAC;AAED,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD;AAAA,EACE,CAAC,oBAAoB,gBAAgB;AAAA,EACrC,CAAC,oBAAoB,gBAAgB;AAAA,EACrC,CAAC,oBAAoB,gBAAgB;AAAA,EACrC,CAAC,oBAAoB,gBAAgB;AAAA,EACrC,CAAC,oBAAoB,gBAAgB;AAAA,EACrC,CAAC,qBAAqB,iBAAiB;AAAA,EACvC,CAAC,qBAAqB,iBAAiB;AACzC,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B;AAAA,IACE;AAAA,IACA,CAAC,KAAK,wBAAwB,QAAQ,KAAK,GAAG,GAAG,GAAG,SAAS;AAAA,IAC7D,EAAE,UAAU,UAAA;AAAA,EAAU;AAE1B,CAAC;AACD;AAAA,EACE;AAAA,EACA,CAAC,KAAK,wBAAwB,EAAE,GAAG,GAAG,SAAS;AAAA,EAC/C,EAAE,UAAU,UAAA;AACd;AAEA,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,UAAU;AAC9B,QAAI,MAAM;AACR,aAAO;AAAA,QACL,KAAK,wBAAwB,YAAY,KAAK,IAAI;AAAA,QAClD,GAAG,QAAA;AAAA,MAAQ;AAEf,WAAO,CAAC,KAAK,wBAAwB,QAAQ,KAAK,GAAG,GAAG,GAAG,SAAS;AAAA,EACtE;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,wBAAwB,YAAY,KAAK,IAAI;AAAA,IAClD,GAAG,QAAA;AAAA,EAAQ;AAAA,EAEb,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAID,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,UAAU;AAC9B,QAAI,MAAM,WAAW;AACnB,aAAO;AAAA,QACL,KAAK,8BAA8B,cAAc,KAAK,GAAG;AAAA,QACzD,GAAG,QAAA;AAAA,MAAQ;AAAA,IAEf;AAEA,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO;AAAA,QACL,KAAK,8BAA8B,cAAc,KAAK,IAAI;AAAA,QAC1D,GAAG,QAAA;AAAA,MAAQ;AAAA,IAEf;AACA,QAAI,MAAM;AACR,aAAO;AAAA,QACL,KAAK,8BAA8B,kBAAkB,KAAK,IAAI;AAAA,QAC9D,GAAG,QAAA;AAAA,MAAQ;AAEf,WAAO;AAAA,MACL,KAAK,8BAA8B,cAAc,KAAK,GAAG;AAAA,MACzD,GAAG,QAAA;AAAA,IAAQ;AAAA,EAEf;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,8BAA8B,kBAAkB,KAAK,IAAI;AAAA,IAC9D,GAAG,QAAA;AAAA,EAAQ;AAAA,EAEb,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,MAAM,UAAU;AAC9B,QAAI,MAAM,WAAW;AACnB,aAAO;AAAA,QACL,KAAK,4BAA4B,YAAY,KAAK,GAAG;AAAA,QACrD,GAAG,QAAA;AAAA,MAAQ;AAAA,IAEf;AAEA,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO;AAAA,QACL,KAAK,4BAA4B,YAAY,KAAK,IAAI;AAAA,QACtD,GAAG,QAAA;AAAA,MAAQ;AAAA,IAEf;AACA,QAAI,MAAM;AACR,aAAO;AAAA,QACL,KAAK,4BAA4B,gBAAgB,KAAK,IAAI;AAAA,QAC1D,GAAG,QAAA;AAAA,MAAQ;AAEf,WAAO;AAAA,MACL,KAAK,4BAA4B,YAAY,KAAK,GAAG;AAAA,MACrD,GAAG,QAAA;AAAA,IAAQ;AAAA,EAEf;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,4BAA4B,gBAAgB,KAAK,IAAI;AAAA,IAC1D,GAAG,QAAA;AAAA,EAAQ;AAAA,EAEb,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD;AAAA,EACE;AAAA,EACA,CAAC,CAAC,6BAA6B,iBAAiB,GAAG,GAAG,SAAS;AAAA,EAC/D,EAAE,UAAU,UAAA;AACd;AAEA,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,WAAW;AAC/B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO;AAAA,QACL,KAAK,6BAA6B,aAAa,KAAK,IAAI;AAAA,QACxD,GAAG,QAAA;AAAA,MAAQ;AAAA,IAEf;AACA,WAAO;AAAA,MACL,KAAK,6BAA6B,aAAa,KAAK,GAAG;AAAA,MACvD,GAAG,QAAA;AAAA,IAAQ;AAAA,EAEf;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,6BAA6B,iBAAiB,KAAK,IAAI;AAAA,IAC5D,GAAG,QAAA;AAAA,EAAQ;AAAA,EAEb,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAID,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,MAAM,UAAU;AAC9B,QAAI,MAAM,YAAY,YAAY,MAAM,KAAM,GAAG;AAC/C,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,mBAAmB,MAAM,KAAK;AAAA,QAAA;AAAA,QAEhC,GAAG,QAAA;AAAA,MAAQ;AAAA,IAEf;AACA,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO;AAAA,QACL,KAAK,8BAA8B,cAAc,KAAK,MAAM;AAAA,QAC5D,GAAG,QAAA;AAAA,MAAQ;AAAA,IAEf;AACA,WAAO;AAAA,MACL,KAAK,8BAA8B,cAAc,KAAK,GAAG;AAAA,MACzD,GAAG,QAAA;AAAA,IAAQ;AAAA,EAEf;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,8BAA8B,kBAAkB,KAAK,IAAI;AAAA,IAC9D,GAAG,QAAA;AAAA,EAAQ;AAAA,EAEb,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD;AAAA,EACE;AAAA,EACA,CAAC,CAAC,0BAA0B,cAAc,GAAG,GAAG,SAAS;AAAA,EACzD,EAAE,UAAU,UAAA;AACd;AAEA,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,WAAW;AAC/B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO;AAAA,QACL,KAAK,0BAA0B,UAAU,KAAK,IAAI;AAAA,QAClD,GAAG,QAAA;AAAA,MAAQ;AAAA,IAEf;AAEA,WAAO,CAAC,KAAK,0BAA0B,UAAU,KAAK,GAAG,GAAG,GAAG,SAAS;AAAA,EAC1E;AAAA,EACA,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,WAAW;AAC/B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO;AAAA,QACL,KAAK,4BAA4B,YAAY,KAAK,IAAI;AAAA,QACtD,GAAG,QAAA;AAAA,MAAQ;AAAA,IAEf;AACA,WAAO;AAAA,MACL,KAAK,4BAA4B,YAAY,KAAK,GAAG;AAAA,MACrD,GAAG,QAAA;AAAA,IAAQ;AAAA,EAEf;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,4BAA4B,gBAAgB,KAAK,IAAI;AAAA,IAC1D,GAAG,QAAA;AAAA,EAAQ;AAAA,EAEb,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD;AAAA,EACE;AAAA,EACA,CAAC,CAAC,yBAAyB,aAAa,GAAG,GAAG,SAAS;AAAA,EACvD,EAAE,UAAU,UAAA;AACd;AAEA,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,MAAM,WAAW;AAC/B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,yBAAyB,SAAS,KAAK,IAAI,GAAG,GAAG,SAAS;AAAA,IACzE;AACA,WAAO,CAAC,KAAK,yBAAyB,SAAS,KAAK,GAAG,GAAG,GAAG,SAAS;AAAA,EACxE;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,yBAAyB,aAAa,KAAK,IAAI;AAAA,IACpD,GAAG,QAAA;AAAA,EAAQ;AAAA,EAEb,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AC9SD;AAAA,EACE,CAAC,cAAc,mBAAmB;AAAA,EAClC,CAAC,aAAa,kBAAkB;AAAA,EAChC,CAAC,aAAa,kBAAkB;AAAA,EAChC,CAAC,UAAU,uBAAuB;AAAA,EAClC,CAAC,aAAa,kBAAkB;AAAA,EAChC,CAAC,aAAa,kBAAkB;AAAA,EAChC,CAAC,aAAa,kBAAkB;AAAA,EAChC,CAAC,cAAc,mBAAmB;AAAA,EAClC,CAAC,eAAe,WAAW;AAC7B,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB,CAAC,CAAC,cAAc,KAAe,CAAC,GAAG,EAAE,UAAU,WAAW;AAC1F,CAAC;AAGD;AAAA,EACE;AAAA,IACE;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,CAAC,qBAAqB,WAAW;AACnC,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB;AAAA,IAC5B,CAAC,uBAAuB,KAAe;AAAA,IACvC;AAAA,MACE;AAAA,MACA;AAAA,IAAA;AAAA,EACF,GACC,EAAE,UAAU,WAAW;AAC5B,CAAC;AAKD,SAAS,uBACP,KACA,MACAzB,UACA,gBACA;AACA,MAAI,gBAAgB;AACpB,QAAM,WAAW,eAAe,cAAc;AAC9C,MAAI,aAAa;AACjB,MAAIA,UAAS;AACX,iBAAa,2CAA2C,QAAQ,IAAIA,QAAO;AAC3E,QAAI,WAAW,IAAI,GAAG;AACpB,UAAI,KAAK,WAAW,GAAG,GAAG;AACxB,cAAM,eAAe,KAAK,MAAO,OAAOA,QAAO,IAAI,MAAO,GAAG;AAC7D,wBAAgB,GAAG,IAAI,GAAG,aAAa,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,MACtE,OAAO;AACL,wBAAgB,uBAAuB,IAAI,IAAIA,QAAO;AAAA,MACxD;AAAA,IACF;AAAA,EACF;AACA,SAAO;AAAA,IACL,OAAO,YAAY,uCAAuC;AAAA,MACxD,KAAK,KAAK,UAAU;AAAA,IAAA,CACrB;AAAA,IACD,KAAK,KAAK,aAAa;AAAA,EAAA;AAE3B;AAGA,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,WAAW,CAAC,UAAU,SAAS;AAAA,EAC/B,QAAQ,CAAC,OAAO,KAAK,OAAO,UAAU;AACpC,UAAM,OAAO;AACb,UAAMA,WAAU,OAAO;AACvB,UAAM,iBAAiB,OAAO;AAG9B,QAAI,gBAAgB;AAClB,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACAA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AAGA,QAAI,KAAK,WAAW,QAAQ,GAAG;AAC7B,YAAM,KAAK,KAAK,QAAQ,UAAU,EAAE;AACpC,UAAIA,UAAS;AACX,eAAO;AAAA,UACL;AAAA,YACE;AAAA,YACA,2BAA2B,EAAE,KAAKA,QAAO;AAAA,UAAA;AAAA,QAC3C;AAAA,MAEJ;AACA,aAAO,CAAC,KAAK,uBAAuB,OAAO,EAAE,GAAG,CAAC;AAAA,IACnD;AAGA,QAAI,MAAM,WAAW;AACnB,UAAI,WAAW,IAAI,GAAG;AACpB,YAAIA,UAAS;AACX,iBAAO;AAAA,YACL;AAAA,cACE;AAAA,cACA,uBAAuB,IAAI,IAAIA,QAAO;AAAA,YAAA;AAAA,UACxC;AAAA,QAEJ;AAEA,eAAO,CAAC,KAAK,cAAc,IAAI,CAAC;AAAA,MAClC;AAEA,aAAO,CAAC,KAAK,cAAc,IAAI,CAAC;AAAA,IAClC;AAGA,QAAI,SAAS,aAAa,SAAS,aAAa,SAAS,eAAe;AACtE,aAAO;AAAA,QACL,KAAK,uBAAuB,SAAS,YAAY,iBAAiB,IAAI;AAAA,MAAA;AAAA,IAE1E;AAEA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,cAAc,OAAO,KAAK,GAAG,CAAC;AACvE,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,WAAW,CAAC,UAAU,SAAS;AAAA,EAC/B,QAAQ,CAAC,OAAO,KAAK,OAAO,UAAU;AACpC,UAAM,OAAO;AACb,UAAMA,WAAU,OAAO;AACvB,UAAM,iBAAiB,OAAO;AAG9B,QAAI,gBAAgB;AAClB,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACAA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AAGA,QAAI,KAAK,WAAW,QAAQ,GAAG;AAC7B,YAAM,KAAK,KAAK,QAAQ,UAAU,EAAE;AACpC,UAAI,aAAa,OAAO,EAAE;AAC1B,UAAIA,UAAS;AACX,qBAAa,2BAA2B,EAAE,KAAKA,QAAO;AAAA,MACxD;AACA,aAAO,CAAC,KAAK,6BAA6B,UAAU,CAAC;AAAA,IACvD;AAGA,QAAI,MAAM,WAAW;AACnB,UAAI,WAAW,IAAI,GAAG;AACpB,YAAI,aAAa;AACjB,YAAIA,UAAS;AACX,uBAAa,uBAAuB,IAAI,IAAIA,QAAO;AAAA,QACrD;AACA,eAAO,CAAC,KAAK,6BAA6B,UAAU,CAAC;AAAA,MACvD;AAEA,aAAO,CAAC,KAAK,cAAc,SAAS,IAAI,EAAE,CAAC;AAAA,IAC7C;AAGA,QAAI,SAAS,aAAa,SAAS,aAAa,SAAS,eAAe;AACtE,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,SAAS,YAAY,iBAAiB;AAAA,QAAA;AAAA,MACxC;AAAA,IAEJ;AAEA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,cAAc,OAAO,KAAK,GAAG,CAAC;AACvE,CAAC;AAMD;AAAA,EACE,CAAC,QAAQ,KAAK;AAAA,EACd,CAAC,UAAU,KAAK;AAAA,EAChB,CAAC,UAAU,KAAK;AAAA,EAChB,CAAC,UAAU,KAAK;AAAA,EAChB,CAAC,UAAU,KAAK;AAAA,EAChB,CAAC,UAAU,KAAK;AAClB,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM;AACxB,gBAAc,MAAgB;AAAA,IAC5B,CAAC,qBAAqB,EAAE;AAAA,IACxB,CAAC,4BAA4B,KAAK;AAAA,IAClC,CAAC,4BAA4B,MAAM;AAAA,IACnC,CAAC,qBAAqB,uBAAuB;AAAA;AAAA,IAC7C;AAAA,MACE;AAAA,MACA,qCAAqC,EAAE;AAAA,IAAA;AAAA,IAEzC,CAAC,6BAA6B,WAAW;AAAA,IACzC;AAAA,MACE;AAAA,MACA;AAAA,IAAA;AAAA,EACF,CACD;AACH,CAAC;AAGD;AAAA,EACE,CAAC,cAAc,KAAK;AAAA,EACpB,CAAC,gBAAgB,KAAK;AAAA,EACtB,CAAC,gBAAgB,KAAK;AAAA,EACtB,CAAC,gBAAgB,KAAK;AAAA,EACtB,CAAC,gBAAgB,KAAK;AAAA,EACtB,CAAC,gBAAgB,KAAK;AACxB,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM;AACxB,gBAAc,MAAgB;AAAA,IAC5B,CAAC,qBAAqB,OAAO;AAAA,IAC7B,CAAC,4BAA4B,KAAK;AAAA,IAClC,CAAC,4BAA4B,MAAM;AAAA,IACnC,CAAC,2BAA2B,cAAc;AAAA,IAC1C;AAAA,MACE;AAAA,MACA,qCAAqC,EAAE;AAAA,IAAA;AAAA,IAEzC,CAAC,6BAA6B,WAAW;AAAA,IACzC;AAAA,MACE;AAAA,MACA;AAAA,IAAA;AAAA,EACF,CACD;AACH,CAAC;AAGD,cAAc,cAAc,CAAC,CAAC,qBAAqB,OAAO,CAAC,GAAG,EAAE,UAAU,WAAW;AAGrF,SAAS,qBACP,KACA,MACAA,UACA,gBACA;AACA,QAAM,WAAW,eAAe,cAAc;AAC9C,MAAI,WAAW;AACf,MAAI,WAAW;AACf,MAAIA,UAAS;AACX,eAAW,uBAAuB,QAAQ,IAAIA,QAAO;AACrD,QAAI,WAAW,IAAI,KAAK,KAAK,WAAW,GAAG,GAAG;AAC5C,YAAM,eAAe,KAAK,MAAO,OAAOA,QAAO,IAAI,MAAO,GAAG;AAC7D,iBAAW,GAAG,IAAI,GAAG,aAAa,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,IACjE,OAAO;AACL,iBAAW;AAAA,IACb;AAAA,EACF;AACA,SAAO;AAAA,IACL,OAAO,YAAY,uCAAuC;AAAA,MACxD,KAAK,KAAK,QAAQ;AAAA,IAAA,CACnB;AAAA,IACD,KAAK,KAAK,QAAQ;AAAA,EAAA;AAEtB;AAGA,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,WAAW,CAAC,QAAQ;AAAA,EACpB,QAAQ,CAAC,OAAO,KAAK,OAAO,UAAU;AACpC,UAAM,OAAO;AACb,UAAMA,WAAU,OAAO;AACvB,UAAM,iBAAiB,OAAO;AAC9B,QAAI,gBAAgB;AAClB,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACAA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AACA,QAAI,KAAK,WAAW,QAAQ,GAAG;AAC7B,YAAM,KAAK,KAAK,QAAQ,UAAU,EAAE;AACpC,UAAI,WAAW,OAAO,EAAE;AACxB,UAAI,WAAW;AACf,UAAIA,UAAS;AACX,mBAAW,2BAA2B,EAAE,KAAKA,QAAO;AACpD,mBAAW;AAAA,MACb;AACA,aAAO;AAAA,QACL,OAAO,YAAY,uCAAuC;AAAA,UACxD,KAAK,qBAAqB,QAAQ;AAAA,QAAA,CACnC;AAAA,QACD,KAAK,qBAAqB,QAAQ;AAAA,MAAA;AAAA,IAEtC;AACA,QAAI,MAAM,WAAW;AACnB,UAAI,WAAW;AACf,UAAI,WAAW;AACf,UAAIA,UAAS;AACX,mBAAW,uBAAuB,IAAI,IAAIA,QAAO;AACjD,YAAI,WAAW,IAAI,KAAK,KAAK,WAAW,GAAG,GAAG;AAC5C,gBAAM,eAAe,KAAK,MAAO,OAAOA,QAAO,IAAI,MAAO,GAAG;AAC7D,qBAAW,GAAG,IAAI,GAAG,aAAa,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,QACjE,OAAO;AACL,qBAAW;AAAA,QACb;AAEA,eAAO;AAAA,UACL,OAAO,YAAY,uCAAuC;AAAA,YACxD,KAAK,qBAAqB,QAAQ;AAAA,UAAA,CACnC;AAAA,UACD,KAAK,qBAAqB,QAAQ;AAAA,QAAA;AAAA,MAEtC;AAEA,aAAO,CAAC,KAAK,cAAc,IAAI,CAAC;AAAA,IAClC;AACA,QAAI,SAAS,aAAa,SAAS,aAAa,SAAS,eAAe;AACtE,aAAO;AAAA,QACL,KAAK,qBAAqB,SAAS,YAAY,iBAAiB,IAAI;AAAA,MAAA;AAAA,IAExE;AACA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU;AAC/B,QAAI,MAAM,WAAW,QAAQ,GAAG;AAC9B,YAAM,KAAK,MAAM,QAAQ,UAAU,EAAE;AACrC,aAAO,CAAC,KAAK,qBAAqB,OAAO,EAAE,GAAG,CAAC;AAAA,IACjD;AACA,WAAO,CAAC,KAAK,qBAAqB,OAAO,KAAK,GAAG,CAAC;AAAA,EACpD;AACF,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,WAAW,CAAC,UAAU,SAAS;AAAA,EAC/B,QAAQ,CAAC,OAAO,KAAK,OAAO,UAAU;AACpC,UAAM,OAAO;AACb,UAAMA,WAAU,OAAO;AACvB,UAAM,iBAAiB,OAAO;AAC9B,QAAI,gBAAgB;AAClB,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACAA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AACA,QAAI,KAAK,WAAW,QAAQ,GAAG;AAC7B,YAAM,KAAK,KAAK,QAAQ,UAAU,EAAE;AACpC,UAAI,WAAW,OAAO,EAAE;AACxB,UAAI,WAAW;AACf,UAAIA,UAAS;AACX,mBAAW,2BAA2B,EAAE,KAAKA,QAAO;AACpD,mBAAW;AAAA,MACb;AACA,aAAO;AAAA,QACL,OAAO,YAAY,uCAAuC;AAAA,UACxD,KAAK,2BAA2B,QAAQ;AAAA,QAAA,CACzC;AAAA,QACD,KAAK,2BAA2B,QAAQ;AAAA,MAAA;AAAA,IAE5C;AACA,QAAI,MAAM,WAAW;AACnB,UAAI,WAAW;AACf,UAAI,WAAW;AACf,UAAIA,UAAS;AACX,mBAAW,uBAAuB,IAAI,IAAIA,QAAO;AACjD,YAAI,WAAW,IAAI,KAAK,KAAK,WAAW,GAAG,GAAG;AAC5C,gBAAM,eAAe,KAAK,MAAO,OAAOA,QAAO,IAAI,MAAO,GAAG;AAC7D,qBAAW,GAAG,IAAI,GAAG,aAAa,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,QACjE,OAAO;AACL,qBAAW;AAAA,QACb;AAEA,eAAO;AAAA,UACL,OAAO,YAAY,uCAAuC;AAAA,YACxD,KAAK,2BAA2B,QAAQ;AAAA,UAAA,CACzC;AAAA,UACD,KAAK,2BAA2B,QAAQ;AAAA,QAAA;AAAA,MAE5C;AAEA,aAAO,CAAC,KAAK,cAAc,SAAS,IAAI,EAAE,CAAC;AAAA,IAC7C;AAEA,QAAI,SAAS,aAAa,SAAS,aAAa,SAAS,eAAe;AACtE,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,SAAS,YAAY,iBAAiB;AAAA,QAAA;AAAA,MACxC;AAAA,IAEJ;AACA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU;AAC/B,QAAI,MAAM,WAAW,QAAQ,GAAG;AAC9B,YAAM,KAAK,MAAM,QAAQ,UAAU,EAAE;AACrC,aAAO,CAAC,KAAK,2BAA2B,OAAO,EAAE,GAAG,CAAC;AAAA,IACvD;AACA,WAAO,CAAC,KAAK,2BAA2B,OAAO,KAAK,GAAG,CAAC;AAAA,EAC1D;AACF,CAAC;AAID,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,UAAU;AAE7B,QAAI,YAAY,KAAK,GAAG;AACtB,UAAI,MAAM,OAAO,KAAK;AACtB,UAAI,MAAM,EAAG,OAAM,MAAM;AACzB,aAAO,CAAC,KAAK,WAAW,OAAO,GAAG,CAAC,CAAC;AAAA,IACtC;AAEA,QAAI,MAAM,WAAW;AACnB,aAAO,CAAC,KAAK,WAAW,KAAK,CAAC;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,WAAW,OAAO,KAAK,GAAG,CAAC;AAAA,EAClE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD;AAAA,EACE,CAAC,oBAAoB,QAAQ;AAAA,EAC7B,CAAC,sBAAsB,UAAU;AAAA,EACjC,CAAC,oBAAoB,QAAQ;AAAA,EAC7B,CAAC,qBAAqB,SAAS;AAAA,EAC/B,CAAC,oBAAoB,QAAQ;AAAA,EAC7B,CAAC,qBAAqB,SAAS;AAAA,EAC/B,CAAC,yBAAyB,aAAa;AAAA,EACvC,CAAC,wBAAwB,YAAY;AAAA,EACrC,CAAC,wBAAwB,YAAY;AAAA,EACrC,CAAC,wBAAwB,YAAY;AAAA,EACrC,CAAC,wBAAwB,YAAY;AAAA,EACrC,CAAC,uBAAuB,WAAW;AAAA,EACnC,CAAC,iBAAiB,KAAK;AAAA,EACvB,CAAC,wBAAwB,YAAY;AAAA,EACrC,CAAC,mBAAmB,OAAO;AAAA,EAC3B,CAAC,wBAAwB,YAAY;AAAA,EACrC,CAAC,yBAAyB,aAAa;AAAA,EACvC,CAAC,0BAA0B,cAAc;AAC3C,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB,CAAC,CAAC,kBAAkB,KAAe,CAAC,CAAC;AACrE,CAAC;AAGD;AAAA,EACE,CAAC,mBAAmB,QAAQ;AAAA,EAC5B,CAAC,qBAAqB,UAAU;AAAA,EAChC,CAAC,mBAAmB,QAAQ;AAAA,EAC5B,CAAC,oBAAoB,SAAS;AAAA,EAC9B,CAAC,mBAAmB,QAAQ;AAAA,EAC5B,CAAC,oBAAoB,SAAS;AAAA,EAC9B,CAAC,wBAAwB,aAAa;AAAA,EACtC,CAAC,uBAAuB,YAAY;AAAA,EACpC,CAAC,uBAAuB,YAAY;AAAA,EACpC,CAAC,uBAAuB,YAAY;AAAA,EACpC,CAAC,uBAAuB,YAAY;AAAA,EACpC,CAAC,sBAAsB,WAAW;AAAA,EAClC,CAAC,gBAAgB,KAAK;AAAA,EACtB,CAAC,uBAAuB,YAAY;AAAA,EACpC,CAAC,kBAAkB,OAAO;AAAA,EAC1B,CAAC,uBAAuB,YAAY;AACtC,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB,CAAC,CAAC,yBAAyB,KAAe,CAAC,GAAG,EAAE,UAAU,WAAW;AACrG,CAAC;AAGD;AAAA,EACE,CAAC,oBAAoB,YAAY;AAAA,EACjC,CAAC,qBAAqB,aAAa;AAAA,EACnC,CAAC,qBAAqB,aAAa;AAAA,EACnC,CAAC,kBAAkB,UAAU;AAAA,EAC7B,CAAC,oBAAoB,YAAY;AAAA,EACjC,CAAC,kBAAkB,UAAU;AAAA,EAC7B,CAAC,gBAAgB,SAAS;AAC5B,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB,CAAC,CAAC,aAAa,KAAe,CAAC,GAAG,EAAE,UAAU,WAAW;AACzF,CAAC;AAGD;AAAA,EACE,CAAC,YAAY,KAAK;AAAA,EAClB,CAAC,iBAAiB,UAAU;AAAA,EAC5B,CAAC,kBAAkB,WAAW;AAAA,EAC9B,CAAC,gBAAgB,SAAS;AAC5B,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB,CAAC,CAAC,kBAAkB,KAAe,CAAC,GAAG,EAAE,UAAU,WAAW;AAC9F,CAAC;AAGD;AAAA,EACE,CAAC,cAAc,OAAO;AAAA,EACtB,CAAC,kBAAkB,WAAW;AAAA,EAC9B,CAAC,cAAc,cAAc;AAC/B,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB,CAAC,CAAC,aAAa,KAAe,CAAC,GAAG,EAAE,UAAU,WAAW;AACzF,CAAC;AAGD;AAAA,EACE,CAAC,sBAAsB,YAAY;AAAA,EACnC,CAAC,uBAAuB,aAAa;AAAA,EACrC,CAAC,uBAAuB,aAAa;AAAA,EACrC,CAAC,oBAAoB,UAAU;AAAA,EAC/B,CAAC,sBAAsB,YAAY;AAAA,EACnC,CAAC,oBAAoB,UAAU;AACjC,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB,CAAC,CAAC,eAAe,KAAe,CAAC,GAAG,EAAE,UAAU,WAAW;AAC3F,CAAC;AAGD;AAAA,EACE,CAAC,iBAAiB,UAAU;AAAA,EAC5B,CAAC,YAAY,KAAK;AAAA,EAClB,CAAC,kBAAkB,WAAW;AAAA,EAC9B,CAAC,aAAa,MAAM;AAAA,EACpB,CAAC,eAAe,QAAQ;AAAA,EACxB,CAAC,cAAc,OAAO;AAAA,EACtB,CAAC,oBAAoB,aAAa;AAAA,EAClC,CAAC,eAAe,QAAQ;AAAA,EACxB,CAAC,qBAAqB,cAAc;AACtC,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB,CAAC,CAAC,iBAAiB,KAAe,CAAC,GAAG,EAAE,UAAU,WAAW;AAC7F,CAAC;AACD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,UAAU;AAC7B,QAAI,MAAM,UAAW,QAAO,CAAC,KAAK,iBAAiB,KAAK,CAAC;AACzD,QAAI,MAAM,eAAgB,QAAO,CAAC,KAAK,iBAAiB,OAAO,KAAK,GAAG,CAAC;AACxE,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,iBAAiB,OAAO,KAAK,GAAG,CAAC;AAAA,EACxE,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD;AAAA,EACE,CAAC,eAAe,QAAQ;AAAA,EACxB,CAAC,kBAAkB,WAAW;AAAA,EAC9B,CAAC,iBAAiB,UAAU;AAAA,EAC5B,CAAC,iBAAiB,UAAU;AAAA,EAC5B,CAAC,qBAAqB,OAAO;AAAA,EAC7B,CAAC,qBAAqB,OAAO;AAC/B,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB,CAAC,CAAC,eAAe,KAAe,CAAC,GAAG,EAAE,UAAU,WAAW;AAC3F,CAAC;AAGD;AAAA,EACE,CAAC,aAAa,MAAM;AAAA,EACpB,CAAC,cAAc,OAAO;AAAA,EACtB,CAAC,gBAAgB,SAAS;AAC5B,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB,CAAC,CAAC,aAAa,KAAe,CAAC,GAAG,EAAE,UAAU,WAAW;AACzF,CAAC;AAID;AAAA,EACI,CAAC,mBAAmB,OAAO;AAAA,EAC3B,CAAC,uBAAuB,WAAW;AACrC,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB,CAAC,CAAC,aAAa,KAAe,CAAC,GAAG,EAAE,UAAU,WAAW;AACzF,CAAC;AAGH,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAKD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,iBAAiB,CAAC,EAAE,YAAY,sBAAsB,KAAK,KAAK,IAAI,QAAQ;AAAA,EAC5E,QAAQ,CAAC,UAAU;AAAA,IACjB,KAAK,cAAc,8HAA8H;AAAA,IACjJ,KAAK,kBAAkB,WAAW;AAAA,IAClC,KAAK,0BAA0B,4MAA4M;AAAA,IAC3O,KAAK,oBAAoB,8CAA8C;AAAA,IACvE,KAAK,kCAAkC,KAAK;AAAA,EAAA;AAAA,EAE9C,UAAU;AACZ,CAAC;AAED,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,UAAU;AAC7B,QAAI,UAAU,OAAQ,QAAO,CAAC,KAAK,cAAc,MAAM,CAAC;AACxD,QAAI,MAAM,UAAW,QAAO,CAAC,KAAK,cAAc,KAAK,CAAC;AACtD,QAAI,MAAM,eAAgB,QAAO,CAAC,KAAK,cAAc,OAAO,KAAK,GAAG,CAAC;AACrE,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,cAAc,OAAO,KAAK,GAAG,CAAC;AAAA,EACrE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;ACjpBD,cAAc,WAAW,CAAC,CAAC,aAAa,SAAS,CAAC,GAAG,EAAE,UAAU,UAAU;AAC3E,cAAc,kBAAkB,CAAC,CAAC,aAAa,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAG/E,cAAc,UAAU,CAAC,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACrE,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA;AAAA,EAExB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,WAAO,YAAY,KAAK;AAAA,EAC1B;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,iBAAiB,CAAC,CAAC,gBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AAClF,cAAc,gBAAgB,CAAC,CAAC,gBAAgB,2BAA2B,CAAC,GAAG,EAAE,UAAU,UAAU;AACrG,cAAc,eAAe,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAC/E,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,gBAAgB,CAAC,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAC3E,cAAc,eAAe,CAAC,CAAC,WAAW,sBAAsB,CAAC,GAAG,EAAE,UAAU,UAAU;AAC1F,cAAc,eAAe,CAAC,CAAC,WAAW,sBAAsB,CAAC,GAAG,EAAE,UAAU,UAAU;AAC1F,cAAc,cAAc,CAAC,CAAC,WAAW,qBAAqB,CAAC,GAAG,EAAE,UAAU,UAAU;AACxF,cAAc,cAAc,CAAC,CAAC,WAAW,qBAAqB,CAAC,GAAG,EAAE,UAAU,UAAU;AACxF,cAAc,cAAc,CAAC,CAAC,WAAW,qBAAqB,CAAC,GAAG,EAAE,UAAU,UAAU;AACxF,cAAc,cAAc,CAAC,CAAC,WAAW,qBAAqB,CAAC,GAAG,EAAE,UAAU,UAAU;AACxF,cAAc,cAAc,CAAC,CAAC,WAAW,qBAAqB,CAAC,GAAG,EAAE,UAAU,UAAU;AACxF,cAAc,eAAe,CAAC,CAAC,WAAW,sBAAsB,CAAC,GAAG,EAAE,UAAU,UAAU;AAC1F,cAAc,eAAe,CAAC,CAAC,WAAW,sBAAsB,CAAC,GAAG,EAAE,UAAU,UAAU;AAC1F,cAAc,eAAe,CAAC,CAAC,WAAW,sBAAsB,CAAC,GAAG,EAAE,UAAU,UAAU;AAC1F,cAAc,eAAe,CAAC,CAAC,WAAW,sBAAsB,CAAC,GAAG,EAAE,UAAU,UAAU;AAC1F,cAAc,eAAe,CAAC,CAAC,WAAW,sBAAsB,CAAC,GAAG,EAAE,UAAU,UAAU;AAC1F,cAAc,eAAe,CAAC,CAAC,WAAW,sBAAsB,CAAC,GAAG,EAAE,UAAU,UAAU;AAC1F,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,iBAAiB,CAAC,EAAE,YAAY,YAAY,KAAK;AAAA,EACjD,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,oBAAoB,CAAC,CAAC,eAAe,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACnF,cAAc,qBAAqB,CAAC,CAAC,eAAe,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AACrF,cAAc,mBAAmB,CAAC,CAAC,eAAe,KAAK,CAAC,GAAG,EAAE,UAAU,UAAU;AACjF,cAAc,0BAA0B,CAAC,CAAC,eAAe,YAAY,CAAC,GAAG,EAAE,UAAU,UAAU;AAC/F,cAAc,oBAAoB,CAAC,CAAC,eAAe,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACnF,cAAc,oBAAoB,CAAC,CAAC,eAAe,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACnF,cAAc,qBAAqB,CAAC,CAAC,eAAe,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AACrF,cAAc,sBAAsB,CAAC,CAAC,eAAe,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AAGvF,cAAc,qBAAqB,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACrF,cAAc,sBAAsB,CAAC,CAAC,gBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AACvF,cAAc,oBAAoB,CAAC,CAAC,gBAAgB,KAAK,CAAC,GAAG,EAAE,UAAU,UAAU;AACnF,cAAc,2BAA2B,CAAC,CAAC,gBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,UAAU;AACjG,cAAc,qBAAqB,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACrF,cAAc,qBAAqB,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACrF,cAAc,sBAAsB,CAAC,CAAC,gBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AACvF,cAAc,uBAAuB,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AAGzF,cAAc,qBAAqB,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACrF,cAAc,sBAAsB,CAAC,CAAC,gBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AACvF,cAAc,2BAA2B,CAAC,CAAC,gBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,UAAU;AACjG,cAAc,6BAA6B,CAAC,CAAC,gBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,UAAU;AAGrG,cAAc,wBAAwB,CAAC,CAAC,wBAAwB,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AACjG,cAAc,wBAAwB,CAAC,CAAC,wBAAwB,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AAG/F,cAAc,cAAc,CAAC,CAAC,cAAc,YAAY,CAAC,GAAG,EAAE,UAAU,UAAU;AACpF,cAAc,eAAe,CAAC,CAAC,cAAc,aAAa,CAAC,GAAG,EAAE,UAAU,UAAU;AAGpF,cAAc,SAAS,CAAC,CAAC,WAAW,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AACrE,cAAc,UAAU,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AACvE,cAAc,gBAAgB,CAAC,CAAC,WAAW,cAAc,CAAC,GAAG,EAAE,UAAU,UAAU;AACnF,cAAc,aAAa,CAAC,CAAC,WAAW,WAAW,CAAC,GAAG,EAAE,UAAU,UAAU;AAC7E,cAAc,QAAQ,CAAC,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACnE,cAAc,eAAe,CAAC,CAAC,WAAW,aAAa,CAAC,GAAG,EAAE,UAAU,UAAU;AACjF,cAAc,QAAQ,CAAC,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACnE,cAAc,eAAe,CAAC,CAAC,WAAW,aAAa,CAAC,GAAG,EAAE,UAAU,UAAU;AACjF,cAAc,YAAY,CAAC,CAAC,WAAW,UAAU,CAAC,GAAG,EAAE,UAAU,UAAU;AAC3E,cAAc,SAAS,CAAC,CAAC,WAAW,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AACrE,cAAc,gBAAgB,CAAC,CAAC,WAAW,cAAc,CAAC,GAAG,EAAE,UAAU,UAAU;AACnF,cAAc,iBAAiB,CAAC,CAAC,WAAW,eAAe,CAAC,GAAG,EAAE,UAAU,UAAU;AACrF,cAAc,cAAc,CAAC,CAAC,WAAW,YAAY,CAAC,GAAG,EAAE,UAAU,UAAU;AAC/E,cAAc,gBAAgB,CAAC,CAAC,WAAW,cAAc,CAAC,GAAG,EAAE,UAAU,UAAU;AACnF,cAAc,sBAAsB,CAAC,CAAC,WAAW,oBAAoB,CAAC,GAAG,EAAE,UAAU,UAAU;AAC/F,cAAc,sBAAsB,CAAC,CAAC,WAAW,oBAAoB,CAAC,GAAG,EAAE,UAAU,UAAU;AAC/F,cAAc,sBAAsB,CAAC,CAAC,WAAW,oBAAoB,CAAC,GAAG,EAAE,UAAU,UAAU;AAC/F,cAAc,mBAAmB,CAAC,CAAC,WAAW,iBAAiB,CAAC,GAAG,EAAE,UAAU,UAAU;AACzF,cAAc,aAAa,CAAC,CAAC,WAAW,WAAW,CAAC,GAAG,EAAE,UAAU,UAAU;AAC7E,cAAc,aAAa,CAAC,CAAC,WAAW,WAAW,CAAC,GAAG,EAAE,UAAU,UAAU;AAC7E,cAAc,UAAU,CAAC,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACrE,cAAc,WAAW;AAAA,EACvB,CAAC,YAAY,UAAU;AAAA,EACvB,CAAC,SAAS,KAAK;AAAA,EACf,CAAC,UAAU,KAAK;AAAA,EAChB,CAAC,UAAU,MAAM;AAAA,EACjB,CAAC,WAAW,GAAG;AAAA,EACf,CAAC,YAAY,QAAQ;AAAA,EACrB,CAAC,QAAQ,kBAAkB;AAAA,EAC3B,CAAC,eAAe,QAAQ;AAAA,EACxB,CAAC,gBAAgB,GAAG;AACtB,GAAG,EAAE,UAAU,UAAU;AAEzB,cAAc,eAAe;AAAA,EAC3B,CAAC,YAAY,QAAQ;AAAA,EACrB,CAAC,SAAS,MAAM;AAAA,EAChB,CAAC,UAAU,MAAM;AAAA,EACjB,CAAC,UAAU,GAAG;AAAA,EACd,CAAC,WAAW,GAAG;AAAA,EACf,CAAC,YAAY,SAAS;AAAA,EACtB,CAAC,QAAQ,MAAM;AAAA,EACf,CAAC,eAAe,QAAQ;AAC1B,GAAG,EAAE,UAAU,UAAU;AAGzB,cAAc,eAAe,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AACzE,cAAc,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACvE,cAAc,eAAe,CAAC,CAAC,SAAS,cAAc,CAAC,GAAG,EAAE,UAAU,UAAU;AAChF,cAAc,aAAa,CAAC,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE,UAAU,UAAU;AAC5E,cAAc,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAGvE,cAAc,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACvE,cAAc,eAAe,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AACzE,cAAc,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACvE,cAAc,eAAe,CAAC,CAAC,SAAS,cAAc,CAAC,GAAG,EAAE,UAAU,UAAU;AAChF,cAAc,aAAa,CAAC,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE,UAAU,UAAU;AAC5E,cAAc,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAGvE,cAAc,kBAAkB,CAAC,CAAC,cAAc,SAAS,CAAC,GAAG,EAAE,UAAU,UAAU;AACnF,cAAc,gBAAgB,CAAC,CAAC,cAAc,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AAC/E,cAAc,eAAe,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAC7E,cAAc,eAAe,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAC7E,cAAc,qBAAqB,CAAC,CAAC,cAAc,YAAY,CAAC,GAAG,EAAE,UAAU,UAAU;AAGzF,cAAc,mBAAmB,CAAC,CAAC,mBAAmB,UAAU,CAAC,GAAG,EAAE,UAAU,UAAU;AAC1F,cAAc,cAAc,CAAC,CAAC,mBAAmB,KAAK,CAAC,GAAG,EAAE,UAAU,UAAU;AAChF,cAAc,oBAAoB,CAAC,CAAC,mBAAmB,WAAW,CAAC,GAAG,EAAE,UAAU,UAAU;AAC5F,cAAc,eAAe,CAAC,CAAC,mBAAmB,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAClF,cAAc,iBAAiB,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AACtF,cAAc,gBAAgB,CAAC,CAAC,mBAAmB,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AACpF,cAAc,sBAAsB,CAAC,CAAC,mBAAmB,aAAa,CAAC,GAAG,EAAE,UAAU,UAAU;AAChG,cAAc,iBAAiB,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AACtF,cAAc,uBAAuB,CAAC,CAAC,mBAAmB,cAAc,CAAC,GAAG,EAAE,UAAU,UAAU;AAElG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGC,cAAc,iBAAiB,CAAC,CAAC,YAAY,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAC/E,cAAc,mBAAmB,CAAC,CAAC,YAAY,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AACjF,cAAc,iBAAiB,CAAC,CAAC,YAAY,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAC7E,cAAc,oBAAoB,CAAC,CAAC,YAAY,SAAS,CAAC,GAAG,EAAE,UAAU,UAAU;AACnF,cAAc,mBAAmB,CAAC,CAAC,YAAY,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AACjF,cAAc,mBAAmB,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACjF,cAAc,mBAAmB,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACjF,cAAc,qBAAqB,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AACrF,cAAc,qBAAqB,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AACrF,cAAc,mBAAmB,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACjF,cAAc,mBAAmB,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AACjF,cAAc,sBAAsB,CAAC,CAAC,cAAc,SAAS,CAAC,GAAG,EAAE,UAAU,UAAU;AACvF,cAAc,sBAAsB,CAAC,CAAC,cAAc,SAAS,CAAC,GAAG,EAAE,UAAU,UAAU;AACvF,cAAc,qBAAqB,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AACrF,cAAc,qBAAqB,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AAGrF,cAAc,mBAAmB,CAAC,CAAC,uBAAuB,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAC1F,cAAc,sBAAsB,CAAC,CAAC,uBAAuB,SAAS,CAAC,GAAG,EAAE,UAAU,UAAU;AAChG,cAAc,mBAAmB,CAAC,CAAC,uBAAuB,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAC1F,cAAc,qBAAqB,CAAC,CAAC,yBAAyB,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAC9F,cAAc,wBAAwB,CAAC,CAAC,yBAAyB,SAAS,CAAC,GAAG,EAAE,UAAU,UAAU;AACpG,cAAc,qBAAqB,CAAC,CAAC,yBAAyB,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAC9F,cAAc,qBAAqB,CAAC,CAAC,yBAAyB,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAC9F,cAAc,wBAAwB,CAAC,CAAC,yBAAyB,SAAS,CAAC,GAAG,EAAE,UAAU,UAAU;AACpG,cAAc,qBAAqB,CAAC,CAAC,yBAAyB,MAAM,CAAC,GAAG,EAAE,UAAU,UAAU;AAG9F,cAAc,UAAU,CAAC,CAAC,YAAY,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AACxE,cAAc,SAAS,CAAC,CAAC,YAAY,OAAO,CAAC,GAAG,EAAE,UAAU,UAAU;AACtE,cAAc,YAAY,CAAC,CAAC,YAAY,UAAU,CAAC,GAAG,EAAE,UAAU,UAAU;AAC5E,cAAc,YAAY,CAAC,CAAC,YAAY,UAAU,CAAC,GAAG,EAAE,UAAU,UAAU;AAC5E,cAAc,UAAU,CAAC,CAAC,YAAY,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AAGxE;AAAA,EACE,CAAC,WAAW,cAAc;AAAA,EAC1B,CAAC,WAAW,aAAa;AAAA,EACzB,CAAC,SAAS,OAAO;AAAA,EACjB,CAAC,SAAS,oBAAoB;AAAA,EAC9B,CAAC,OAAO,kBAAkB;AAAA,EAC1B,CAAC,OAAO,KAAK;AAAA,EACb,CAAC,SAAS,OAAO;AAAA,EACjB,CAAC,UAAU,QAAQ;AAAA,EACnB,CAAC,QAAQ,MAAM;AACjB,EAAE,QAAQ,CAAC,CAAC,MAAM,IAAI,MAAM;AAE1B,gBAAc,GAAG,IAAI,SAAS,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,UAAU,SAAA,CAAU;AACtE,gBAAc,GAAG,IAAI,SAAS,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,UAAU,SAAA,CAAU;AACtE,gBAAc,IAAI,IAAI,SAAS,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,EAAE,UAAU,SAAA,CAAU;AACxE,gBAAc,GAAG,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,UAAU,SAAA,CAAU;AACnE,gBAAc,IAAI,IAAI,OAAO,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,UAAU,SAAA,CAAU;AACrE,oBAAkB;AAAA,IAChB;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IACxB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,UAAI,YAAY,KAAK,GAAG;AACtB,eAAO,yBAAyB,KAAK;AAAA,MACvC;AACA,YAAM,OAAO,cAAc,KAAK;AAChC,UAAI,KAAM,QAAO;AACjB,aAAO;AAAA,IACT;AAAA,IACA,yBAAyB,CAAC,EAAE,YAAY;AACtC,UAAI,YAAY,KAAK,GAAG;AACtB,eAAO,0BAA0B,KAAK;AAAA,MACxC;AACA,YAAM,OAAO,cAAc,KAAK;AAChC,UAAI,KAAM,QAAO,IAAI,IAAI;AACzB,aAAO;AAAA,IACT;AAAA,IACA,aAAa,GAAG,IAAI;AAAA,IACpB,UAAU;AAAA,EAAA,CACX;AACH,CAAC;AAGD,cAAc,WAAW,CAAC,CAAC,cAAc,SAAS,CAAC,GAAG,EAAE,UAAU,UAAU;AAC5E,cAAc,aAAa,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,EAAE,UAAU,UAAU;AAC7E,cAAc,YAAY,CAAC,CAAC,cAAc,UAAU,CAAC,GAAG,EAAE,UAAU,UAAU;AAG9E,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,yBAAyB,KAAK;AAAA,EAC9D,QAAQ,CAAC,UAAU;AACjB,QAAI,OAAO,UAAU,SAAU,QAAO,CAAC,KAAK,cAAc,KAAK,CAAC;AAChE,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,cAAc,OAAO,KAAK,GAAG,CAAC;AAAA,EACrE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AACD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,yBAAyB,KAAK;AAAA,EAC9D,QAAQ,CAAC,UAAU;AACjB,QAAI,OAAO,UAAU,SAAU,QAAO,CAAC,KAAK,WAAW,KAAK,CAAC;AAC7D,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,WAAW,OAAO,KAAK,GAAG,CAAC;AAAA,EAClE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AACD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,yBAAyB,KAAK;AAAA,EAC9D,QAAQ,CAAC,UAAU;AACjB,QAAI,OAAO,UAAU,SAAU,QAAO,CAAC,KAAK,OAAO,KAAK,CAAC;AACzD,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,OAAO,OAAO,KAAK,GAAG,CAAC;AAAA,EAC9D,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;ACvTD,cAAc,cAAc,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAC/E,cAAc,cAAc,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAC/E,cAAc,aAAa,CAAC,CAAC,cAAc,sBAAsB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,aAAa,CAAC,CAAC,cAAc,sBAAsB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,YAAY,CAAC,CAAC,cAAc,qBAAqB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC5F,cAAc,YAAY,CAAC,CAAC,cAAc,qBAAqB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC5F,cAAc,YAAY,CAAC,CAAC,cAAc,qBAAqB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC5F,cAAc,YAAY,CAAC,CAAC,cAAc,qBAAqB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC5F,cAAc,YAAY,CAAC,CAAC,cAAc,qBAAqB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC5F,cAAc,aAAa,CAAC,CAAC,cAAc,sBAAsB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,aAAa,CAAC,CAAC,cAAc,sBAAsB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,aAAa,CAAC,CAAC,cAAc,sBAAsB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,aAAa,CAAC,CAAC,cAAc,sBAAsB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,aAAa,CAAC,CAAC,cAAc,sBAAsB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,aAAa,CAAC,CAAC,cAAc,sBAAsB,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,wBAAwB,KAAK;AAAA,IACtC;AACA,UAAM,OAAO,cAAc,KAAK;AAChC,QAAI,KAAM,QAAO;AACjB,WAAO;AAAA,EACT;AAAA,EACA,yBAAyB,CAAC,EAAE,YAAY;AACtC,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,wBAAwB,KAAK;AAAA,IACtC;AACA,UAAM,OAAO,cAAc,KAAK;AAChC,QAAI,KAAM,QAAO,IAAI,IAAI;AACzB,WAAO;AAAA,EACT;AAAA,EACA,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,YAAY,CAAC,CAAC,kBAAkB,KAAK,CAAC,GAAG,EAAE,UAAU,aAAa;AAChF,cAAc,oBAAoB,CAAC,CAAC,kBAAkB,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AAChG,cAAc,YAAY,CAAC,CAAC,kBAAkB,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AACnF,cAAc,oBAAoB,CAAC,CAAC,kBAAkB,gBAAgB,CAAC,GAAG,EAAE,UAAU,aAAa;AAGnG,cAAc,aAAa,CAAC,CAAC,aAAa,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAC7E,cAAc,qBAAqB,CAAC,CAAC,aAAa,cAAc,CAAC,GAAG,EAAE,UAAU,aAAa;AAC7F,cAAc,eAAe,CAAC,CAAC,aAAa,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AAGjF,cAAc,aAAa,CAAC,CAAC,QAAQ,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AAC5E,cAAc,gBAAgB,CAAC,CAAC,QAAQ,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AAC/E,cAAc,aAAa,CAAC,CAAC,QAAQ,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAExE,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,kBAAkB;AAAA;AAAA,EAClB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,EAAG,QAAO;AAC/B,UAAM,OAAO,cAAc,KAAK;AAChC,QAAI,KAAM,QAAO,QAAQ,IAAI;AAC7B,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,CAAC,UAAU,CAAC,KAAK,QAAQ,KAAK,CAAC;AAAA,EACvC,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,QAAQ,CAAC,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,UAAU,aAAa;AAErE,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY,YAAY,KAAK;AAAA,EACjD,QAAQ,CAAC,UAAU,CAAC,KAAK,aAAa,KAAK,CAAC;AAAA,EAC5C,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,UAAU,CAAC,CAAC,eAAe,GAAG,CAAC,GAAG,EAAE,UAAU,aAAa;AACzE,cAAc,YAAY,CAAC,CAAC,eAAe,GAAG,CAAC,GAAG,EAAE,UAAU,aAAa;AAE3E,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY,YAAY,KAAK;AAAA,EACjD,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,eAAe,CAAC,CAAC,SAAS,iBAAiB,CAAC,GAAG,EAAE,UAAU,aAAa;AACtF,cAAc,cAAc,CAAC,CAAC,SAAS,gBAAgB,CAAC,GAAG,EAAE,UAAU,aAAa;AACpF,cAAc,cAAc,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,UAAU,aAAa;AAEvE,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,kBAAkB;AAAA;AAAA,EAClB,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY,YAAY,KAAK;AAAA,EACjD,yBAAyB,CAAC,EAAE,YAAY;AACtC,QAAI,YAAY,KAAK,EAAG,QAAO,QAAQ,KAAK;AAC5C,WAAO;AAAA,EACT;AAAA,EACA,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,kBAAkB,CAAC,CAAC,yBAAyB,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,qBAAqB,CAAC,CAAC,yBAAyB,SAAS,CAAC,GAAG,EAAE,UAAU,aAAa;AAEpG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAClB,sBAAsB,OAAO,EAAE,QAAQ,MAAM;AAAA,EAC/C,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,kBAAkB,CAAC,CAAC,sBAAsB,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAC3F,cAAc,qBAAqB,CAAC,CAAC,sBAAsB,SAAS,CAAC,GAAG,EAAE,UAAU,aAAa;AAEjG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAClB,sBAAsB,OAAO,EAAE,QAAQ,MAAM;AAAA,EAC/C,QAAQ,CAAC,UAAU;AAGjB,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,CAAC,KAAK,sBAAsB,MAAM,QAAQ,MAAM,GAAG,CAAC,CAAC;AAAA,IAC9D;AACA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,sBAAsB,OAAO,KAAK,GAAG;AAAA,EAAA;AAAA,EAE5C,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAID,cAAc,iBAAiB,CAAC,CAAC,YAAY,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AAClF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,UAAU,QAAQ,KAAK,WAAW,KAAK;AAC5D,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,YAAY,YAAY,KAAK,gBAAgB,KAAK,GAAG;AAAA,EAAA;AAAA,EAE5D,QAAQ,CAAC,UAAU;AACjB,QAAI,YAAY,KAAK;AACnB,aAAO,CAAC,KAAK,YAAY,QAAQ,KAAK,WAAW,KAAK,EAAE,CAAC;AAE3D,WAAO;AAAA,EACT;AAAA,EACA,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAED,cAAc,kBAAkB,CAAC,CAAC,kBAAkB,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AACvF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY,YAAY,KAAK;AAAA,EACjD,yBAAyB,CAAC,EAAE,YAAY;AACtC,QAAI,YAAY,KAAK,EAAG,QAAO,QAAQ,KAAK;AAC5C,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,kBAAkB,OAAO,KAAK,GAAG,CAAC;AAAA,EACzE,QAAQ,CAAC,UAAU;AACjB,QAAI,YAAY,KAAK,EAAG,QAAO,CAAC,KAAK,kBAAkB,KAAK,CAAC;AAC7D,QAAI,OAAO,UAAU,SAAU,QAAO,CAAC,KAAK,kBAAkB,KAAK,CAAC;AACpE,WAAO;AAAA,EACT;AAAA,EACA,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAED,cAAc,gBAAgB,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AACnF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY,YAAY,KAAK;AAAA,EACjD,yBAAyB,CAAC,EAAE,YAAY;AACtC,QAAI,YAAY,KAAK,EAAG,QAAO,QAAQ,KAAK;AAC5C,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,gBAAgB,OAAO,KAAK,GAAG,CAAC;AAAA,EACvE,QAAQ,CAAC,UAAU;AACjB,QAAI,YAAY,KAAK,EAAG,QAAO,CAAC,KAAK,gBAAgB,KAAK,CAAC;AAC3D,QAAI,OAAO,UAAU,SAAU,QAAO,CAAC,KAAK,gBAAgB,KAAK,CAAC;AAClE,WAAO;AAAA,EACT;AAAA,EACA,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAED,cAAc,YAAY,CAAC,CAAC,YAAY,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAC3E,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY,YAAY,KAAK;AAAA,EACjD,yBAAyB,CAAC,EAAE,YAAY;AACtC,QAAI,YAAY,KAAK,EAAG,QAAO,QAAQ,KAAK;AAC5C,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,YAAY,OAAO,KAAK,GAAG,CAAC;AAAA,EACnE,QAAQ,CAAC,UAAU;AACjB,QAAI,YAAY,KAAK,EAAG,QAAO,CAAC,KAAK,YAAY,KAAK,CAAC;AACvD,QAAI,OAAO,UAAU,SAAU,QAAO,CAAC,KAAK,YAAY,KAAK,CAAC;AAC9D,WAAO;AAAA,EACT;AAAA,EACA,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGC,cAAc,iBAAiB,CAAC,CAAC,kBAAkB,KAAK,CAAC,GAAG,EAAE,UAAU,aAAa;AACvF,cAAc,iBAAiB,CAAC,CAAC,kBAAkB,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AACxF,cAAc,mBAAmB,CAAC,CAAC,kBAAkB,OAAO,CAAC,GAAG,EAAE,UAAU,aAAa;AACzF,cAAc,uBAAuB,CAAC,CAAC,kBAAkB,WAAW,CAAC,GAAG,EAAE,UAAU,aAAa;AACjG,cAAc,uBAAuB,CAAC,CAAC,kBAAkB,cAAc,CAAC,GAAG,EAAE,UAAU,aAAa;AAGpG,cAAc,kBAAkB,CAAC,CAAC,qBAAqB,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAC1F,cAAc,iBAAiB,CAAC,CAAC,qBAAqB,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AAChG,cAAc,iBAAiB,CAAC,CAAC,qBAAqB,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AAChG,cAAc,gBAAgB,CAAC,CAAC,qBAAqB,gBAAgB,CAAC,GAAG,EAAE,UAAU,aAAa;AAElG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,QAAQ,CAAC,UAAU;AACjB,QAAI,OAAO,UAAU,SAAU,QAAO,CAAC,KAAK,qBAAqB,KAAK,CAAC;AACvE,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,qBAAqB,OAAO,KAAK,GAAG,CAAC;AAAA,EAC5E,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,kBAAkB,CAAC,CAAC,kBAAkB,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AACvF,cAAc,iBAAiB,CAAC,CAAC,kBAAkB,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AAC7F,cAAc,iBAAiB,CAAC,CAAC,kBAAkB,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AAC7F,cAAc,gBAAgB,CAAC,CAAC,kBAAkB,gBAAgB,CAAC,GAAG,EAAE,UAAU,aAAa;AAE/F,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,QAAQ,CAAC,UAAU;AACjB,QAAI,OAAO,UAAU,SAAU,QAAO,CAAC,KAAK,kBAAkB,KAAK,CAAC;AACpE,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,kBAAkB,OAAO,KAAK,GAAG,CAAC;AAAA,EACzE,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,yBAAyB,KAAK;AAAA,EAC9D,QAAQ,CAAC,UAAU;AACjB,QAAI,OAAO,UAAU,SAAU,QAAO,CAAC,KAAK,cAAc,KAAK,CAAC;AAChE,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,cAAc,OAAO,KAAK,GAAG,CAAC;AAAA,EACrE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AACD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,yBAAyB,KAAK;AAAA,EAC9D,QAAQ,CAAC,UAAU;AACjB,QAAI,OAAO,UAAU,SAAU,QAAO,CAAC,KAAK,WAAW,KAAK,CAAC;AAC7D,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,WAAW,OAAO,KAAK,GAAG,CAAC;AAAA,EAClE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AACD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EACnB,wBAAwB;AAAA;AAAA,EACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,yBAAyB,KAAK;AAAA,EAC9D,QAAQ,CAAC,UAAU;AACjB,QAAI,OAAO,UAAU,SAAU,QAAO,CAAC,KAAK,OAAO,KAAK,CAAC;AACzD,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,OAAO,OAAO,KAAK,GAAG,CAAC;AAAA,EAC9D,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,iBAAiB,CAAC,CAAC,mBAAmB,YAAY,CAAC,GAAG,EAAE,UAAU,aAAa;AAC7F,cAAc,eAAe,CAAC,CAAC,mBAAmB,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AACzF,cAAc,oBAAoB,CAAC,CAAC,mBAAmB,eAAe,CAAC,GAAG,EAAE,UAAU,aAAa;AACnG,cAAc,kBAAkB,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AAC1F,cAAc,uBAAuB,CAAC,CAAC,mBAAmB,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AACpG,cAAc,mBAAmB,CAAC,CAAC,mBAAmB,eAAe,CAAC,GAAG,EAAE,UAAU,aAAa;AAClG,cAAc,kBAAkB,CAAC,CAAC,mBAAmB,cAAc,CAAC,GAAG,EAAE,UAAU,aAAa;AAChG,cAAc,kBAAkB,CAAC,CAAC,mBAAmB,cAAc,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,mBAAmB,CAAC,CAAC,mBAAmB,SAAS,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,oBAAoB,CAAC,CAAC,mBAAmB,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,kBAAkB,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AAG1F,cAAc,uBAAuB,CAAC,CAAC,iBAAiB,OAAO,CAAC,GAAG,EAAE,UAAU,aAAa;AAC5F,cAAc,qBAAqB,CAAC,CAAC,iBAAiB,KAAK,CAAC,GAAG,EAAE,UAAU,aAAa;AACxF,cAAc,0BAA0B,CAAC,CAAC,iBAAiB,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AAClG,cAAc,wBAAwB,CAAC,CAAC,iBAAiB,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,6BAA6B,CAAC,CAAC,iBAAiB,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AACxG,cAAc,yBAAyB,CAAC,CAAC,iBAAiB,SAAS,CAAC,GAAG,EAAE,UAAU,aAAa;AAChG,cAAc,wBAAwB,CAAC,CAAC,iBAAiB,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AAG9F,cAAc,qBAAqB,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AACxF,cAAc,sBAAsB,CAAC,CAAC,gBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,aAAa;AAC1F,cAAc,uBAAuB,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AAC5F,cAAc,4BAA4B,CAAC,CAAC,gBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AACtG,cAAc,oBAAoB,CAAC,CAAC,gBAAgB,KAAK,CAAC,GAAG,EAAE,UAAU,aAAa;AACtF,cAAc,yBAAyB,CAAC,CAAC,gBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AAChG,cAAc,wBAAwB,CAAC,CAAC,gBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,aAAa;AAG5F,cAAc,kBAAkB,CAAC,CAAC,iBAAiB,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AAC1F,cAAc,kBAAkB,CAAC,CAAC,iBAAiB,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AACxF,cAAc,iBAAiB,CAAC,CAAC,iBAAiB,YAAY,CAAC,GAAG,EAAE,UAAU,aAAa;AAC3F,cAAc,eAAe,CAAC,CAAC,iBAAiB,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AACvF,cAAc,mBAAmB,CAAC,CAAC,iBAAiB,eAAe,CAAC,GAAG,EAAE,UAAU,aAAa;AAChG,cAAc,kBAAkB,CAAC,CAAC,iBAAiB,cAAc,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,kBAAkB,CAAC,CAAC,iBAAiB,cAAc,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,oBAAoB,CAAC,CAAC,iBAAiB,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AAC5F,cAAc,mBAAmB,CAAC,CAAC,iBAAiB,SAAS,CAAC,GAAG,EAAE,UAAU,aAAa;AAG1F,cAAc,eAAe,CAAC,CAAC,eAAe,YAAY,CAAC,GAAG,EAAE,UAAU,aAAa;AACvF,cAAc,aAAa,CAAC,CAAC,eAAe,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AACnF,cAAc,kBAAkB,CAAC,CAAC,eAAe,eAAe,CAAC,GAAG,EAAE,UAAU,aAAa;AAC7F,cAAc,gBAAgB,CAAC,CAAC,eAAe,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AACpF,cAAc,qBAAqB,CAAC,CAAC,eAAe,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,kBAAkB,CAAC,CAAC,eAAe,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AACxF,cAAc,uBAAuB,CAAC,CAAC,eAAe,eAAe,CAAC,GAAG,EAAE,UAAU,aAAa;AAClG,cAAc,iBAAiB,CAAC,CAAC,eAAe,SAAS,CAAC,GAAG,EAAE,UAAU,aAAa;AAGtF,cAAc,aAAa,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9E,cAAc,cAAc,CAAC,CAAC,cAAc,YAAY,CAAC,GAAG,EAAE,UAAU,aAAa;AACrF,cAAc,YAAY,CAAC,CAAC,cAAc,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AACjF,cAAc,iBAAiB,CAAC,CAAC,cAAc,eAAe,CAAC,GAAG,EAAE,UAAU,aAAa;AAC3F,cAAc,eAAe,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AAClF,cAAc,oBAAoB,CAAC,CAAC,cAAc,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AAC5F,cAAc,gBAAgB,CAAC,CAAC,cAAc,SAAS,CAAC,GAAG,EAAE,UAAU,aAAa;AACpF,cAAc,iBAAiB,CAAC,CAAC,cAAc,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AACtF,cAAc,sBAAsB,CAAC,CAAC,cAAc,eAAe,CAAC,GAAG,EAAE,UAAU,aAAa;AAGhG,cAAc,wBAAwB,CAAC,CAAC,iBAAiB,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,6BAA6B,CAAC,CAAC,iBAAiB,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AACxG,cAAc,uBAAuB,CAAC,CAAC,iBAAiB,OAAO,CAAC,GAAG,EAAE,UAAU,aAAa;AAC5F,cAAc,qBAAqB,CAAC,CAAC,iBAAiB,KAAK,CAAC,GAAG,EAAE,UAAU,aAAa;AACxF,cAAc,0BAA0B,CAAC,CAAC,iBAAiB,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AAClG,cAAc,yBAAyB,CAAC,CAAC,iBAAiB,eAAe,CAAC,GAAG,EAAE,UAAU,aAAa;AACtG,cAAc,wBAAwB,CAAC,CAAC,iBAAiB,cAAc,CAAC,GAAG,EAAE,UAAU,aAAa;AACpG,cAAc,wBAAwB,CAAC,CAAC,iBAAiB,cAAc,CAAC,GAAG,EAAE,UAAU,aAAa;AACpG,cAAc,0BAA0B,CAAC,CAAC,iBAAiB,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AAClG,cAAc,yBAAyB,CAAC,CAAC,iBAAiB,SAAS,CAAC,GAAG,EAAE,UAAU,aAAe;AAGlG,cAAc,qBAAqB,CAAC,CAAC,eAAe,OAAO,CAAC,GAAG,EAAE,UAAU,aAAa;AACxF,cAAc,mBAAmB,CAAC,CAAC,eAAe,KAAK,CAAC,GAAG,EAAE,UAAU,aAAa;AACpF,cAAc,wBAAwB,CAAC,CAAC,eAAe,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,sBAAsB,CAAC,CAAC,eAAe,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AAC1F,cAAc,2BAA2B,CAAC,CAAC,eAAe,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AACpG,cAAc,wBAAwB,CAAC,CAAC,eAAe,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9F,cAAc,uBAAuB,CAAC,CAAC,eAAe,SAAS,CAAC,GAAG,EAAE,UAAU,aAAa;AAG5F,cAAc,mBAAmB,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AACpF,cAAc,oBAAoB,CAAC,CAAC,cAAc,OAAO,CAAC,GAAG,EAAE,UAAU,aAAa;AACtF,cAAc,kBAAkB,CAAC,CAAC,cAAc,KAAK,CAAC,GAAG,EAAE,UAAU,aAAa;AAClF,cAAc,uBAAuB,CAAC,CAAC,cAAc,UAAU,CAAC,GAAG,EAAE,UAAU,aAAa;AAC5F,cAAc,qBAAqB,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AACxF,cAAc,0BAA0B,CAAC,CAAC,cAAc,aAAa,CAAC,GAAG,EAAE,UAAU,aAAa;AAClG,cAAc,sBAAsB,CAAC,CAAC,cAAc,SAAS,CAAC,GAAG,EAAE,UAAU,aAAa;AAI1F,cAAc,iBAAiB,CAAC,CAAC,eAAe,QAAQ,CAAC,GAAG,EAAE,UAAU,aAAa;AACrF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,UAAU,QAAQ,KAAK,WAAW,KAAK;AAC5D,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,OAAO,MAAM,WAAW;AAC7C,WAAO,CAAC,KAAK,eAAe,YAAY,KAAK,gBAAgB,KAAK,GAAG,CAAC;AAAA,EACxE;AAAA,EACA,QAAQ,CAAC,OAAO,MAAM,WAAW;AAC/B,QAAI,YAAY,KAAK;AACnB,aAAO,CAAC,KAAK,eAAe,QAAQ,KAAK,WAAW,KAAK,EAAE,CAAC;AAC9D,WAAO;AAAA,EACT;AAAA,EACA,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,kBAAkB,CAAC,CAAC,qBAAqB,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAC1F,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY,YAAY,KAAK;AAAA,EACjD,yBAAyB,CAAC,EAAE,YAAY;AACtC,QAAI,YAAY,KAAK,EAAG,QAAO,QAAQ,KAAK;AAC5C,WAAO;AAAA,EACT;AAAA,EACA,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,gBAAgB,CAAC,CAAC,mBAAmB,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AACtF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY,YAAY,KAAK;AAAA,EACjD,yBAAyB,CAAC,EAAE,YAAY;AACtC,QAAI,YAAY,KAAK,EAAG,QAAO,QAAQ,KAAK;AAC5C,WAAO;AAAA,EACT;AAAA,EACA,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,YAAY,CAAC,CAAC,eAAe,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAC9E,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY,YAAY,KAAK;AAAA,EACjD,yBAAyB,CAAC,EAAE,YAAY;AACtC,QAAI,YAAY,KAAK,EAAG,QAAO,QAAQ,KAAK;AAC5C,WAAO;AAAA,EACT;AAAA,EACA,aACE;AAAA,EACF,UAAU;AACZ,CAAC;ACnhBD;AAAA,EACE,CAAC,MAAM,gBAAgB;AAAA,EACvB,CAAC,MAAM,eAAe;AAAA,EACtB,CAAC,MAAM,sBAAsB;AAAA,EAC7B,CAAC,MAAM,oBAAoB;AAAA,EAC3B,CAAC,MAAM,aAAa;AAAA,EACpB,CAAC,MAAM,eAAe;AAAA,EACtB,CAAC,MAAM,gBAAgB;AAAA,EACvB,CAAC,MAAM,cAAc;AAAA,EACrB,CAAC,KAAK,SAAS;AACjB,EAAE,QAAQ,CAAC,CAAC,MAAM,IAAI,MAAM;AAC1B,gBAAc,GAAG,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,UAAU,UAAA,CAAW;AACpE,oBAAkB;AAAA,IAChB;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,yBAAyB,KAAK;AAAA,IAC9D,aAAa,GAAG,IAAI;AAAA,IACpB,UAAU;AAAA,EAAA,CACX;AACH,CAAC;AAGD;AAAA,EACE,CAAC,MAAM,eAAe;AAAA,EACtB,CAAC,MAAM,cAAc;AAAA,EACrB,CAAC,MAAM,qBAAqB;AAAA,EAC5B,CAAC,MAAM,mBAAmB;AAAA,EAC1B,CAAC,MAAM,YAAY;AAAA,EACnB,CAAC,MAAM,cAAc;AAAA,EACrB,CAAC,MAAM,eAAe;AAAA,EACtB,CAAC,MAAM,aAAa;AAAA,EACpB,CAAC,KAAK,QAAQ;AAChB,EAAE,QAAQ,CAAC,CAAC,MAAM,IAAI,MAAM;AAC1B,gBAAc,GAAG,IAAI,SAAS,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,UAAU,UAAA,CAAW;AACvE,gBAAc,GAAG,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,UAAU,UAAA,CAAW;AACpE,gBAAc,IAAI,IAAI,OAAO,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,UAAU,UAAA,CAAW;AACtE,oBAAkB;AAAA,IAChB;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,yBAAyB,KAAK;AAAA,IAC9D,yBAAyB,CAAC,EAAE,MAAA,MAAY,0BAA0B,KAAK;AAAA,IACvE,aAAa,GAAG,IAAI;AAAA,IACpB,UAAU;AAAA,EAAA,CACX;AACH,CAAC;AAOD,cAAc,cAAc;AAAA,EAC1B;AAAA,IACE;AAAA,IACA;AAAA,MACE,CAAC,0BAA0B,GAAG;AAAA,MAC9B;AAAA,QACE;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,CAAC,qBAAqB,yCAAyC;AAAA,IAAA;AAAA,EACjE;AAEJ,GAAG,EAAE,UAAU,WAAW;AAC1B,cAAc,eAAe;AAAA,EAC3B;AAAA,IACE;AAAA,IACA;AAAA,MACE,CAAC,0BAA0B,GAAG;AAAA,MAC9B;AAAA,QACE;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,CAAC,qBAAqB,0CAA0C;AAAA,IAAA;AAAA,EAClE;AAEJ,GAAG,EAAE,UAAU,WAAW;AAC1B,cAAc,mBAAmB;AAAA,EAC/B,CAAC,uCAAuC,CAAC,CAAC,0BAA0B,GAAG,CAAC,CAAC;AAC3E,GAAG,EAAE,UAAU,WAAW;AAE1B,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,yBAAyB,KAAK;AAAA,EAC9D,yBAAyB,CAAC,EAAE,MAAA,MAAY,0BAA0B,KAAK;AAAA,EACvE,QAAQ,CAAC,OAAO,KAAK,UAAU;AAC7B,QAAI,IAAI;AACR,QAAI,OAAO,MAAM,YAAY,kBAAkB,KAAK,CAAC,GAAG;AACtD,UAAI,yBAAyB,MAAM,WAAW,MAAM,EAAE,GAAG,CAAC;AAAA,IAC5D;AACA,WAAO;AAAA,MACL,KAAK,uCAAuC;AAAA,QAC1C,KAAK,0BAA0B,GAAG;AAAA,QAClC;AAAA,UACE;AAAA,UACA,QAAQ,CAAC;AAAA,QAAA;AAAA,QAEX,KAAK,qBAAqB,QAAQ,CAAC,iCAAiC;AAAA,MAAA,CACrE;AAAA,IAAA;AAAA,EAEL;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,uCAAuC;AAAA,MAC1C,KAAK,0BAA0B,GAAG;AAAA,MAClC;AAAA,QACE;AAAA,QACA,YAAY,KAAK;AAAA,MAAA;AAAA,MAEnB;AAAA,QACE;AAAA,QACA,YAAY,KAAK;AAAA,MAAA;AAAA,IACnB,CACD;AAAA,EAAA;AAAA,EAEH,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAID,cAAc,cAAc;AAAA,EAC1B;AAAA,IACE;AAAA,IACA;AAAA,MACE,CAAC,0BAA0B,GAAG;AAAA,MAC9B,CAAC,sBAAsB,mDAAmD;AAAA,MAC1E,CAAC,oBAAoB,yCAAyC;AAAA,IAAA;AAAA,EAChE;AAEJ,GAAG,EAAE,UAAU,WAAW;AAC1B,cAAc,eAAe;AAAA,EAC3B;AAAA,IACE;AAAA,IACA;AAAA,MACE,CAAC,0BAA0B,GAAG;AAAA,MAC9B;AAAA,QACE;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,CAAC,oBAAoB,0CAA0C;AAAA,IAAA;AAAA,EACjE;AAEJ,GAAG,EAAE,UAAU,WAAW;AAC1B,cAAc,mBAAmB;AAAA,EAC/B,CAAC,uCAAuC,CAAC,CAAC,0BAA0B,GAAG,CAAC,CAAC;AAC3E,GAAG,EAAE,UAAU,WAAW;AAE1B,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,yBAAyB,KAAK;AAAA,EAC9D,yBAAyB,CAAC,EAAE,MAAA,MAAY,0BAA0B,KAAK;AAAA,EACvE,QAAQ,CAAC,OAAO,KAAK,UAAU;AAC7B,QAAI,IAAI;AACR,QAAI,OAAO,MAAM,YAAY,kBAAkB,KAAK,CAAC,GAAG;AACtD,UAAI,yBAAyB,MAAM,WAAW,MAAM,EAAE,GAAG,CAAC;AAAA,IAC5D;AACA,WAAO;AAAA,MACL,KAAK,uCAAuC;AAAA,QAC1C,KAAK,0BAA0B,GAAG;AAAA,QAClC;AAAA,UACE;AAAA,UACA,QAAQ,CAAC;AAAA,QAAA;AAAA,QAEX,KAAK,oBAAoB,QAAQ,CAAC,iCAAiC;AAAA,MAAA,CACpE;AAAA,IAAA;AAAA,EAEL;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,uCAAuC;AAAA,MAC1C,KAAK,0BAA0B,GAAG;AAAA,MAClC;AAAA,QACE;AAAA,QACA,YAAY,KAAK;AAAA,MAAA;AAAA,MAEnB;AAAA,QACE;AAAA,QACA,YAAY,KAAK;AAAA,MAAA;AAAA,IACnB,CACD;AAAA,EAAA;AAAA,EAEH,aACE;AAAA,EACF,UAAU;AACZ,CAAC;ACtLD;AAAA,EACE,CAAC,UAAU,MAAM;AAAA,EACjB,CAAC,QAAQ,KAAK;AAAA,EACd,CAAC,UAAU,MAAM;AAAA,EACjB,CAAC,YAAY,OAAO;AAAA,EACpB,CAAC,SAAS,QAAQ;AAAA,EAClB,CAAC,SAAS,QAAQ;AAAA,EAClB,CAAC,SAAS,QAAQ;AAAA,EAClB,CAAC,SAAS,QAAQ;AAAA,EAClB,CAAC,SAAS,QAAQ;AAAA,EAClB,CAAC,SAAS,QAAQ;AAAA,EAClB,CAAC,SAAS,aAAa;AAAA,EACvB,CAAC,SAAS,aAAa;AAAA,EACvB,CAAC,SAAS,aAAa;AAAA,EACvB,CAAC,SAAS,sBAAsB;AAAA,EAChC,CAAC,SAAS,sBAAsB;AAAA,EAChC,CAAC,QAAQ,qBAAqB;AAAA,EAC9B,CAAC,QAAQ,qBAAqB;AAAA,EAC9B,CAAC,QAAQ,qBAAqB;AAAA,EAC9B,CAAC,QAAQ,qBAAqB;AAAA,EAC9B,CAAC,QAAQ,qBAAqB;AAAA,EAC9B,CAAC,SAAS,sBAAsB;AAAA,EAChC,CAAC,SAAS,sBAAsB;AAAA,EAChC,CAAC,SAAS,sBAAsB;AAAA,EAChC,CAAC,SAAS,sBAAsB;AAAA,EAChC,CAAC,SAAS,sBAAsB;AAAA,EAChC,CAAC,SAAS,sBAAsB;AAClC,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC;AACxC,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,iBAAiB,CAAC,EAAE,YAAY;AAE9B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,yBAAyB,KAAK;AAAA,IACvC;AAEA,QAAI,sBAAsB,KAAK,EAAG,QAAO,QAAQ,KAAK;AACtD,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD;AAAA,EACE,CAAC,aAAa,CAAC,QAAQ,MAAM,CAAC;AAAA,EAC9B,CAAC,WAAW,CAAC,OAAO,KAAK,CAAC;AAAA,EAC1B,CAAC,aAAa,CAAC,QAAQ,MAAM,CAAC;AAAA,EAC9B,CAAC,YAAY,CAAC,UAAU,QAAQ,CAAC;AAAA,EACjC,CAAC,YAAY,CAAC,UAAU,QAAQ,CAAC;AAAA,EACjC,CAAC,YAAY,CAAC,UAAU,QAAQ,CAAC;AAAA,EACjC,CAAC,YAAY,CAAC,UAAU,QAAQ,CAAC;AAAA,EACjC,CAAC,YAAY,CAAC,UAAU,QAAQ,CAAC;AAAA,EACjC,CAAC,YAAY,CAAC,UAAU,QAAQ,CAAC;AAAA,EACjC,CAAC,YAAY,CAAC,eAAe,aAAa,CAAC;AAAA,EAC3C,CAAC,YAAY,CAAC,eAAe,aAAa,CAAC;AAAA,EAC3C,CAAC,YAAY,CAAC,eAAe,aAAa,CAAC;AAC7C,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM;AAC5B,gBAAc,MAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7D,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,yBAAyB,KAAK;AAAA,IACvC;AACA,QAAI,sBAAsB,KAAK,EAAG,QAAO,QAAQ,KAAK;AACtD,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,CAAC,UAAU;AAEjB,WAAO;AAAA,MACL,KAAK,SAAS,KAAK;AAAA,MACnB,KAAK,UAAU,KAAK;AAAA,IAAA;AAAA,EAExB;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,SAAS,OAAO,KAAK,GAAG;AAAA,IAC7B,KAAK,UAAU,OAAO,KAAK,GAAG;AAAA,EAAA;AAAA,EAEhC,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAMD;AAAA,EACE,CAAC,UAAU,MAAM;AAAA,EACjB,CAAC,QAAQ,KAAK;AAAA,EACd,CAAC,UAAU,MAAM;AAAA,EACjB,CAAC,YAAY,OAAO;AAAA,EACpB,CAAC,SAAS,QAAQ;AAAA,EAClB,CAAC,SAAS,QAAQ;AAAA,EAClB,CAAC,SAAS,QAAQ;AAAA,EAClB,CAAC,SAAS,aAAa;AAAA,EACvB,CAAC,SAAS,aAAa;AAAA,EACvB,CAAC,SAAS,aAAa;AACzB,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAM,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC;AACzC,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,yBAAyB,KAAK;AAAA,IACvC;AACA,QAAI,sBAAsB,KAAK,EAAG,QAAO,QAAQ,KAAK;AACtD,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAMD;AAAA,EACE,CAAC,WAAW,KAAK;AAAA,EACjB,CAAC,YAAY,KAAK;AAAA,EAClB,CAAC,cAAc,MAAM;AAAA,EACrB,CAAC,gBAAgB,OAAO;AAAA,EACxB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,aAAa;AAAA,EAC3B,CAAC,aAAa,aAAa;AAAA,EAC3B,CAAC,aAAa,aAAa;AAC7B,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAM,CAAC,CAAC,cAAc,KAAK,CAAC,GAAG,EAAE,UAAU,UAAU;AACrE,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,yBAAyB,KAAK;AAAA,IACvC;AACA,QAAI,sBAAsB,KAAK,EAAG,QAAO,QAAQ,KAAK;AACtD,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAMD;AAAA,EACE,CAAC,YAAY,KAAK;AAAA,EAClB,CAAC,cAAc,MAAM;AAAA,EACrB,CAAC,gBAAgB,OAAO;AAAA,EACxB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,aAAa;AAAA,EAC3B,CAAC,aAAa,aAAa;AAAA,EAC3B,CAAC,aAAa,aAAa;AAAA,EAC3B,CAAC,cAAc,MAAM;AACvB,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAM,CAAC,CAAC,cAAc,KAAK,CAAC,GAAG,EAAE,UAAU,UAAU;AACrE,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,yBAAyB,KAAK;AAAA,IACvC;AACA,QAAI,sBAAsB,KAAK,EAAG,QAAO,QAAQ,KAAK;AACtD,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAMD;AAAA,EACE,CAAC,cAAc,MAAM;AAAA,EACrB,CAAC,YAAY,KAAK;AAAA,EAClB,CAAC,cAAc,MAAM;AAAA,EACrB,CAAC,gBAAgB,OAAO;AAAA,EACxB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,aAAa;AAAA,EAC3B,CAAC,aAAa,aAAa;AAAA,EAC3B,CAAC,aAAa,aAAa;AAAA,EAC3B,CAAC,aAAa,sBAAsB;AAAA,EACpC,CAAC,aAAa,sBAAsB;AAAA,EACpC,CAAC,YAAY,qBAAqB;AAAA,EAClC,CAAC,YAAY,qBAAqB;AAAA,EAClC,CAAC,YAAY,qBAAqB;AAAA,EAClC,CAAC,YAAY,qBAAqB;AAAA,EAClC,CAAC,YAAY,qBAAqB;AAAA,EAClC,CAAC,aAAa,sBAAsB;AAAA,EACpC,CAAC,aAAa,sBAAsB;AAAA,EACpC,CAAC,aAAa,sBAAsB;AAAA,EACpC,CAAC,aAAa,sBAAsB;AAAA,EACpC,CAAC,aAAa,sBAAsB;AAAA,EACpC,CAAC,aAAa,sBAAsB;AACtC,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAM,CAAC,CAAC,aAAa,KAAK,CAAC,GAAG,EAAE,UAAU,UAAU;AACpE,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,yBAAyB,KAAK;AAAA,IACvC;AACA,QAAI,sBAAsB,KAAK,EAAG,QAAO,QAAQ,KAAK;AACtD,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAOD;AAAA,EACE,CAAC,cAAc,MAAM;AAAA,EACrB,CAAC,YAAY,qBAAqB;AAAA,EAClC,CAAC,YAAY,qBAAqB;AAAA,EAClC,CAAC,YAAY,qBAAqB;AAAA,EAClC,CAAC,YAAY,qBAAqB;AAAA,EAClC,CAAC,YAAY,qBAAqB;AAAA,EAClC,CAAC,aAAa,sBAAsB;AAAA,EACpC,CAAC,aAAa,sBAAsB;AAAA,EACpC,CAAC,aAAa,sBAAsB;AAAA,EACpC,CAAC,aAAa,sBAAsB;AAAA,EACpC,CAAC,aAAa,sBAAsB;AAAA,EACpC,CAAC,aAAa,sBAAsB;AACtC,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAM,CAAC,CAAC,aAAa,KAAK,CAAC,GAAG,EAAE,UAAU,UAAU;AACpE,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,yBAAyB,KAAK;AAAA,IACvC;AACA,QAAI,sBAAsB,KAAK,EAAG,QAAO,QAAQ,KAAK;AACtD,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;ACpTD,cAAc,aAAa,CAAC,CAAC,eAAe,yBAAyB,CAAC,GAAG,EAAE,UAAU,cAAc;AACnG,cAAc,cAAc,CAAC,CAAC,eAAe,0BAA0B,CAAC,GAAG,EAAE,UAAU,cAAc;AACrG,cAAc,aAAa,CAAC,CAAC,eAAe,yBAAyB,CAAC,GAAG,EAAE,UAAU,cAAc;AAGnG,cAAc,WAAW,CAAC,CAAC,aAAa,gBAAgB,GAAG,CAAC,eAAe,6BAA6B,CAAC,GAAG,EAAE,UAAU,cAAc;AACtI,cAAc,WAAW,CAAC,CAAC,aAAa,gBAAgB,GAAG,CAAC,eAAe,6BAA6B,CAAC,GAAG,EAAE,UAAU,cAAc;AACtI,cAAc,aAAa,CAAC,CAAC,aAAa,kBAAkB,GAAG,CAAC,eAAe,+BAA+B,CAAC,GAAG,EAAE,UAAU,cAAc;AAC5I,cAAc,WAAW,CAAC,CAAC,aAAa,gBAAgB,GAAG,CAAC,eAAe,6BAA6B,CAAC,GAAG,EAAE,UAAU,cAAc;AACtI,cAAc,WAAW,CAAC,CAAC,aAAa,gBAAgB,GAAG,CAAC,eAAe,6BAA6B,CAAC,GAAG,EAAE,UAAU,cAAc;AACtI,cAAc,YAAY,CAAC,CAAC,aAAa,iBAAiB,GAAG,CAAC,eAAe,8BAA8B,CAAC,GAAG,EAAE,UAAU,cAAc;AACzI,cAAc,YAAY,CAAC,CAAC,aAAa,iBAAiB,GAAG,CAAC,eAAe,8BAA8B,CAAC,GAAG,EAAE,UAAU,cAAc;AACzI,cAAc,YAAY,CAAC,CAAC,aAAa,iBAAiB,GAAG,CAAC,eAAe,8BAA8B,CAAC,GAAG,EAAE,UAAU,cAAc;AACzI,cAAc,YAAY,CAAC,CAAC,aAAa,iBAAiB,GAAG,CAAC,eAAe,8BAA8B,CAAC,GAAG,EAAE,UAAU,cAAc;AACzI,cAAc,YAAY,CAAC,CAAC,aAAa,iBAAiB,GAAG,CAAC,eAAe,8BAA8B,CAAC,GAAG,EAAE,UAAU,cAAc;AACzI,cAAc,YAAY,CAAC,CAAC,aAAa,iBAAiB,GAAG,CAAC,eAAe,8BAA8B,CAAC,GAAG,EAAE,UAAU,cAAc;AACzI,cAAc,YAAY,CAAC,CAAC,aAAa,iBAAiB,GAAG,CAAC,eAAe,8BAA8B,CAAC,GAAG,EAAE,UAAU,cAAc;AACzI,cAAc,YAAY,CAAC,CAAC,aAAa,iBAAiB,GAAG,CAAC,eAAe,8BAA8B,CAAC,GAAG,EAAE,UAAU,cAAc;AAIzI,cAAc,aAAa,CAAC,CAAC,eAAe,yBAAyB,CAAC,GAAG,EAAE,UAAU,cAAc;AACnG,cAAc,mBAAmB,CAAC,CAAC,eAAe,+BAA+B,CAAC,GAAG,EAAE,UAAU,cAAc;AAC/G,cAAc,cAAc,CAAC,CAAC,eAAe,0BAA0B,CAAC,GAAG,EAAE,UAAU,cAAc;AACrG,cAAc,eAAe,CAAC,CAAC,eAAe,2BAA2B,CAAC,GAAG,EAAE,UAAU,cAAc;AACvG,cAAc,eAAe,CAAC,CAAC,eAAe,2BAA2B,CAAC,GAAG,EAAE,UAAU,cAAc;AACvG,cAAc,iBAAiB,CAAC,CAAC,eAAe,6BAA6B,CAAC,GAAG,EAAE,UAAU,cAAc;AAC3G,cAAc,aAAa,CAAC,CAAC,eAAe,yBAAyB,CAAC,GAAG,EAAE,UAAU,cAAc;AACnG,cAAc,kBAAkB,CAAC,CAAC,eAAe,8BAA8B,CAAC,GAAG,EAAE,UAAU,cAAc;AAC7G,cAAc,cAAc,CAAC,CAAC,eAAe,0BAA0B,CAAC,GAAG,EAAE,UAAU,cAAc;AAErG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,UAAU;AACjB,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,eAAe,KAAK,CAAC;AAAA,IACpC;AACA,WAAO,CAAC,KAAK,eAAe,KAAK,CAAC;AAAA,EACpC;AAAA,EACA,sBAAsB,CAAC,UAAU;AAE/B,QAAI,MAAM,WAAW,YAAY,GAAG;AAClC,aAAO,CAAC,KAAK,eAAe,OAAO,MAAM,QAAQ,cAAc,EAAE,CAAC,GAAG,CAAC;AAAA,IACxE;AACA,WAAO,CAAC,KAAK,eAAe,OAAO,KAAK,GAAG,CAAC;AAAA,EAC9C;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,UAAU,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AAC9E,cAAc,cAAc,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AAGlF,cAAc,oBAAoB,CAAC,CAAC,kBAAkB,+BAA+B,CAAC,GAAG,EAAE,UAAU,cAAc;AACnH,cAAc,kBAAkB,CAAC,CAAC,kBAAkB,6BAA6B,CAAC,GAAG,EAAE,UAAU,cAAc;AAC/G,cAAc,mBAAmB,CAAC,CAAC,kBAAkB,8BAA8B,CAAC,GAAG,EAAE,UAAU,cAAc;AACjH,cAAc,iBAAiB,CAAC,CAAC,kBAAkB,4BAA4B,CAAC,GAAG,EAAE,UAAU,cAAc;AAC7G,cAAc,kBAAkB,CAAC,CAAC,kBAAkB,6BAA6B,CAAC,GAAG,EAAE,UAAU,cAAc;AAC/G,cAAc,mBAAmB,CAAC,CAAC,kBAAkB,8BAA8B,CAAC,GAAG,EAAE,UAAU,cAAc;AAEjH,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,gBAAgB,CAAC,CAAC,eAAe,yBAAyB,CAAC,GAAG,EAAE,UAAU,cAAc;AACtG,cAAc,iBAAiB,CAAC,CAAC,eAAe,0BAA0B,CAAC,GAAG,EAAE,UAAU,cAAc;AACxG,cAAc,gBAAgB,CAAC,CAAC,eAAe,yBAAyB,CAAC,GAAG,EAAE,UAAU,cAAc;AACtG,cAAc,kBAAkB,CAAC,CAAC,eAAe,2BAA2B,CAAC,GAAG,EAAE,UAAU,cAAc;AAC1G,cAAc,mBAAmB,CAAC,CAAC,eAAe,4BAA4B,CAAC,GAAG,EAAE,UAAU,cAAc;AAC5G,cAAc,iBAAiB,CAAC,CAAC,eAAe,0BAA0B,CAAC,GAAG,EAAE,UAAU,cAAc;AAExG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY,YAAY,KAAK;AAAA,EACjD,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,aAAa,CAAC,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAC/E,cAAc,eAAe,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AACnF,cAAc,cAAc,CAAC,CAAC,cAAc,OAAO,CAAC,GAAG,EAAE,UAAU,cAAc;AACjF,cAAc,gBAAgB,CAAC,CAAC,cAAc,SAAS,CAAC,GAAG,EAAE,UAAU,cAAc;AACrF,cAAc,cAAc,CAAC,CAAC,cAAc,OAAO,CAAC,GAAG,EAAE,UAAU,cAAc;AACjF,cAAc,YAAY,CAAC,CAAC,cAAc,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAG7E,cAAc,gBAAgB,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,UAAU,cAAc;AAChF,cAAc,gBAAgB,CAAC,CAAC,SAAS,cAAc,CAAC,GAAG,EAAE,UAAU,cAAc;AACrF,cAAc,oBAAoB,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,UAAU,cAAc;AAGxF,cAAc,YAAY,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,iBAAiB,UAAU,GAAG,CAAC,eAAe,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AACxI,cAAc,iBAAiB,CAAC,CAAC,iBAAiB,UAAU,CAAC,GAAG,EAAE,UAAU,cAAc;AAC1F,cAAc,aAAa,CAAC,CAAC,iBAAiB,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAElF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,QAAQ,CAAC,OAAO,KAAK,OAAO,UAAU;AACpC,QAAI,OAAO,gBAAgB;AACzB,UAAI,MAAM,SAAS;AACjB,eAAO;AAAA,UACL,OAAO,YAAY,uCAAuC;AAAA,YACxD,KAAK,SAAS,qBAAqB,KAAK,IAAI,MAAM,OAAO,iBAAiB;AAAA,UAAA,CAC3E;AAAA,UACD,KAAK,SAAS,qBAAqB,KAAK,IAAI,MAAM,OAAO,iBAAiB;AAAA,QAAA;AAAA,MAE9E;AAEA,aAAO,CAAC,KAAK,SAAS,KAAK,CAAC;AAAA,IAC9B;AAEA,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,aAAa,KAAK,CAAC;AAAA,IAClC;AACA,WAAO,CAAC,KAAK,SAAS,KAAK,CAAC;AAAA,EAC9B;AAAA,EACA,sBAAsB,CAAC,UAAU;AAC/B,QAAI,MAAM,WAAW,QAAQ,GAAG;AAC9B,aAAO,CAAC,KAAK,SAAS,OAAO,MAAM,QAAQ,UAAU,EAAE,CAAC,GAAG,CAAC;AAAA,IAC9D;AACA,WAAO,CAAC,KAAK,aAAa,OAAO,KAAK,GAAG,CAAC;AAAA,EAC5C;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,UAAU;AAE7B,UAAM,aAAa,IAAI,MAAM,YAAY,KAAK;AAC9C,QAAI,YAAY;AACd,UAAI,MAAM,QAAQ,UAAU,GAAG;AAE7B,eAAO;AAAA,UACL,KAAK,aAAa,WAAW,CAAC,CAAC;AAAA,UAC/B,KAAK,eAAe,WAAW,CAAC,CAAC;AAAA,QAAA;AAAA,MAErC,OAAO;AACL,eAAO,CAAC,KAAK,aAAa,UAAoB,CAAC;AAAA,MACjD;AAAA,IACF;AAGA,QAAI,MAAM,WAAW;AACnB,aAAO,CAAC,KAAK,aAAa,KAAK,CAAC;AAAA,IAClC;AAEA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,aAAa,OAAO,KAAK,GAAG,CAAC;AAAA,EACpE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,aAAa,CAAC,CAAC,kBAAkB,WAAW,CAAC,GAAG,EAAE,UAAU,cAAc;AACxF,cAAc,aAAa,CAAC,CAAC,kBAAkB,WAAW,CAAC,GAAG,EAAE,UAAU,cAAc;AACxF,cAAc,cAAc,CAAC,CAAC,kBAAkB,YAAY,CAAC,GAAG,EAAE,UAAU,cAAc;AAC1F,cAAc,eAAe,CAAC,CAAC,kBAAkB,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAGrF,cAAc,aAAa,CAAC,CAAC,wBAAwB,WAAW,CAAC,GAAG,EAAE,UAAU,cAAc;AAC9F,cAAc,YAAY,CAAC,CAAC,wBAAwB,UAAU,CAAC,GAAG,EAAE,UAAU,cAAc;AAC5F,cAAc,gBAAgB,CAAC,CAAC,wBAAwB,cAAc,CAAC,GAAG,EAAE,UAAU,cAAc;AACpG,cAAc,gBAAgB,CAAC,CAAC,wBAAwB,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAK5F,cAAc,qBAAqB,CAAC,CAAC,eAAe,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AAC1F,cAAc,qBAAqB,CAAC,CAAC,eAAe,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AAC1F,cAAc,kBAAkB,CAAC,CAAC,eAAe,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AACpF,cAAc,uBAAuB,CAAC,CAAC,eAAe,UAAU,CAAC,GAAG,EAAE,UAAU,cAAc;AAC9F,cAAc,uBAAuB,CAAC,CAAC,eAAe,UAAU,CAAC,GAAG,EAAE,UAAU,cAAc;AAC9F,cAAc,2BAA2B,CAAC,CAAC,eAAe,cAAc,CAAC,GAAG,EAAE,UAAU,cAAc;AAGtG,cAAc,gBAAgB,CAAC,CAAC,iBAAiB,QAAQ,GAAG,CAAC,cAAc,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AACjH,cAAc,eAAe,CAAC,CAAC,iBAAiB,YAAY,CAAC,GAAG,EAAE,UAAU,cAAc;AAC1F,cAAc,aAAa,CAAC,CAAC,cAAc,WAAW,CAAC,GAAG,EAAE,UAAU,cAAc;AACpF,cAAc,cAAc,CAAC,CAAC,cAAc,UAAU,CAAC,GAAG,EAAE,UAAU,cAAc;AAGpF,cAAc,eAAe,CAAC,CAAC,0BAA0B,aAAa,GAAG,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,UAAU,cAAc;AAC9I,cAAc,wBAAwB,CAAC,CAAC,0BAA0B,MAAM,GAAG,CAAC,2BAA2B,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAG3I,cAAc,uBAAuB,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AAC7F,cAAc,gCAAgC,CAAC,CAAC,gBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,cAAc;AAC/G,cAAc,gCAAgC,CAAC,CAAC,gBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,cAAc;AAC/G,cAAc,0BAA0B,CAAC,CAAC,gBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,cAAc;AACnG,cAAc,+BAA+B,CAAC,CAAC,gBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,cAAc;AAC7G,cAAc,8BAA8B,CAAC,CAAC,gBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,cAAc;AAC3G,cAAc,yBAAyB,CAAC,CAAC,gBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,cAAc;AACjG,cAAc,+BAA+B,CAAC,CAAC,gBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,cAAc;AAC7G,cAAc,+BAA+B,CAAC,CAAC,gBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,cAAc;AAE7G,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,eAAe,CAAC,CAAC,wBAAwB,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AAC7F,cAAc,WAAW,CAAC,CAAC,wBAAwB,SAAS,CAAC,GAAG,EAAE,UAAU,cAAc;AAC1F,cAAc,gBAAgB,CAAC,CAAC,wBAAwB,cAAc,CAAC,GAAG,EAAE,UAAU,cAAc;AACpG,cAAc,eAAe,CAAC,CAAC,wBAAwB,aAAa,CAAC,GAAG,EAAE,UAAU,cAAc;AAClG,cAAc,iBAAiB,CAAC,CAAC,wBAAwB,eAAe,CAAC,GAAG,EAAE,UAAU,cAAc;AACtG,cAAc,qBAAqB,CAAC,CAAC,wBAAwB,mBAAmB,CAAC,GAAG,EAAE,UAAU,cAAc;AAC9G,cAAc,gBAAgB,CAAC,CAAC,wBAAwB,cAAc,CAAC,GAAG,EAAE,UAAU,cAAc;AACpG,cAAc,sBAAsB,CAAC,CAAC,wBAAwB,oBAAoB,CAAC,GAAG,EAAE,UAAU,cAAc;AAChH,cAAc,qBAAqB,CAAC,CAAC,wBAAwB,mBAAmB,CAAC,GAAG,EAAE,UAAU,cAAc;AAG9G,cAAc,mBAAmB,CAAC,CAAC,sBAAsB,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAC7F,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY,YAAY,KAAK;AAAA,EACjD,QAAQ,CAAC,UAAU;AAAA,IACjB,KAAK,YAAY,QAAQ;AAAA,IACzB,KAAK,WAAW,aAAa;AAAA,IAC7B,KAAK,sBAAsB,UAAU;AAAA,IACrC,KAAK,sBAAsB,KAAK;AAAA,EAAA;AAAA,EAElC,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,YAAY,QAAQ;AAAA,IACzB,KAAK,WAAW,aAAa;AAAA,IAC7B,KAAK,sBAAsB,UAAU;AAAA,IACrC,KAAK,sBAAsB,OAAO,KAAK,GAAG;AAAA,EAAA;AAAA,EAE5C,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,aAAa,CAAC,CAAC,mBAAmB,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AACpF,cAAc,aAAa,CAAC,CAAC,mBAAmB,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AACpF,cAAc,gBAAgB,CAAC,CAAC,mBAAmB,SAAS,CAAC,GAAG,EAAE,UAAU,cAAc;AAE1F,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,eAAe,CAAC,CAAC,uBAAuB,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AAC5F,cAAc,gBAAgB,CAAC,CAAC,uBAAuB,SAAS,CAAC,GAAG,EAAE,UAAU,cAAc;AAG9F,cAAc,mBAAmB,CAAC,CAAC,oBAAoB,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAE3F,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,UAAU,CAAC,KAAK,oBAAoB,OAAO,KAAK,GAAG,CAAC;AAAA,EAC7D,sBAAsB,CAAC,UAAU,CAAC,KAAK,oBAAoB,OAAO,KAAK,GAAG,CAAC;AAAA,EAC3E,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,QAAQ,CAAC,OAAO,KAAK,OAAO,UAAU;AACpC,QAAI,OAAO,gBAAgB;AACzB,UAAI,MAAM,SAAS;AACjB,eAAO;AAAA,UACL,OAAO,YAAY,uCAAuC;AAAA,YACxD,KAAK,yBAAyB,qBAAqB,KAAK,IAAI,MAAM,OAAO,iBAAiB;AAAA,UAAA,CAC3F;AAAA,UACD,KAAK,yBAAyB,KAAK;AAAA,QAAA;AAAA,MAEvC;AACA,aAAO,CAAC,KAAK,yBAAyB,KAAK,CAAC;AAAA,IAC9C;AACA,WAAO,CAAC,KAAK,yBAAyB,KAAK,CAAC;AAAA,EAC9C;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,yBAAyB,OAAO,KAAK,GAAG,CAAC;AAAA,EAChF,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGC,cAAc,oBAAoB,CAAC,CAAC,yBAAyB,OAAO,CAAC,GAAG,EAAE,UAAU,cAAc;AACpG,cAAc,qBAAqB,CAAC,CAAC,yBAAyB,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AACpG,cAAc,qBAAqB,CAAC,CAAC,yBAAyB,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AACpG,cAAc,qBAAqB,CAAC,CAAC,yBAAyB,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AACpG,cAAc,mBAAmB,CAAC,CAAC,yBAAyB,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAGhG,cAAc,mBAAmB,CAAC,CAAC,6BAA6B,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AACpG,cAAc,wBAAwB,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,EAAE,UAAU,cAAc;AAC9G,cAAc,gBAAgB,CAAC,CAAC,6BAA6B,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAChG,cAAc,gBAAgB,CAAC,CAAC,6BAA6B,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAChG,cAAc,gBAAgB,CAAC,CAAC,6BAA6B,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAChG,cAAc,gBAAgB,CAAC,CAAC,6BAA6B,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAChG,cAAc,gBAAgB,CAAC,CAAC,6BAA6B,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAEhG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,GAAG,KAAK;AAAA,EACxC,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,yBAAyB,CAAC,CAAC,yBAAyB,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AACtG,cAAc,sBAAsB,CAAC,CAAC,yBAAyB,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAClG,cAAc,sBAAsB,CAAC,CAAC,yBAAyB,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAClG,cAAc,sBAAsB,CAAC,CAAC,yBAAyB,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAClG,cAAc,sBAAsB,CAAC,CAAC,yBAAyB,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAClG,cAAc,sBAAsB,CAAC,CAAC,yBAAyB,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAElG,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,GAAG,KAAK;AAAA,EACxC,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,aAAa,CAAC,CAAC,aAAa,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAC9E,cAAc,eAAe,CAAC,CAAC,aAAa,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AAClF,cAAc,gBAAgB,CAAC,CAAC,aAAa,SAAS,CAAC,GAAG,EAAE,UAAU,cAAc;AACpF,cAAc,eAAe,CAAC,CAAC,aAAa,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AAGlF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,MAAA,MAAY,yBAAyB,KAAK;AAAA,EAC9D,yBAAyB,CAAC,EAAE,MAAA,MAAY,0BAA0B,KAAK;AAAA,EACvE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,kBAAkB,CAAC,CAAC,kBAAkB,UAAU,CAAC,GAAG,EAAE,UAAU,cAAc;AAC5F,cAAc,aAAa,CAAC,CAAC,kBAAkB,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAClF,cAAc,gBAAgB,CAAC,CAAC,kBAAkB,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AACxF,cAAc,gBAAgB,CAAC,CAAC,kBAAkB,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AACxF,cAAc,kBAAkB,CAAC,CAAC,kBAAkB,UAAU,CAAC,GAAG,EAAE,UAAU,cAAc;AAC5F,cAAc,qBAAqB,CAAC,CAAC,kBAAkB,aAAa,CAAC,GAAG,EAAE,UAAU,cAAc;AAClG,cAAc,aAAa,CAAC,CAAC,kBAAkB,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAClF,cAAc,eAAe,CAAC,CAAC,kBAAkB,OAAO,CAAC,GAAG,EAAE,UAAU,cAAc;AAEtF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,gBAAgB,CAAC,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAC/E,cAAc,kBAAkB,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AACnF,cAAc,gBAAgB,CAAC,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAG/E,cAAc,gBAAgB,CAAC,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAE/E,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,UAAU,CAAC,KAAK,WAAW,IAAI,KAAK,GAAG,CAAC;AAAA,EACjD,sBAAsB,CAAC,UAAU,CAAC,KAAK,WAAW,OAAO,KAAK,GAAG,CAAC;AAAA,EAClE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AC3aD,MAAM,yBAAyB,MAAM;AACnC,SAAO,OAAO;AAAA,IACZ,SAAS,0BAA0B;AAAA,IACnC,SAAS,wBAAwB,SAAS,SAAS;AAAA,IACnD,SAAS,uBAAuB,SAAS,SAAS;AAAA,IAClD,SAAS,sBAAsB,SAAS,SAAS;AAAA,IACjD,SAAS,yBAAyB,aAAa;AAAA,IAC/C,SAAS,iCAAiC,MAAM,qBAAqB;AAAA,IACrE,SAAS,gCAAgC,OAAO,qBAAqB;AAAA,IACrE,SAAS,+BAA+B,QAAQ,qBAAqB;AAAA,EAAA,GACpE,YAAY;AACjB;AAIA,cAAc,YAAY,CAAC,CAAC,yBAAyB,OAAO,CAAC,GAAG,EAAE,UAAU,cAAc;AAC1F,cAAc,YAAY,CAAC,CAAC,yBAAyB,OAAO,CAAC,GAAG,EAAE,UAAU,cAAc;AAC1F,cAAc,aAAa,CAAC,CAAC,yBAAyB,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AAG5F,cAAc,kBAAkB,CAAC,CAAC,mBAAmB,YAAY,CAAC,GAAG,EAAE,UAAU,cAAc;AAC/F,cAAc,mBAAmB,CAAC,CAAC,mBAAmB,aAAa,CAAC,GAAG,EAAE,UAAU,cAAc;AACjG,cAAc,mBAAmB,CAAC,CAAC,mBAAmB,aAAa,CAAC,GAAG,EAAE,UAAU,cAAc;AACjG,cAAc,gBAAgB,CAAC,CAAC,mBAAmB,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAGvF,cAAc,cAAc,CAAC,CAAC,oBAAoB,SAAS,CAAC,GAAG,EAAE,UAAU,cAAc;AACzF,cAAc,cAAc,CAAC,CAAC,oBAAoB,cAAc,CAAC,GAAG,EAAE,UAAU,cAAc;AAC9F,cAAc,kBAAkB,CAAC,CAAC,oBAAoB,aAAa,CAAC,GAAG,EAAE,UAAU,cAAc;AAGjG,cAAc,WAAW,CAAC,CAAC,oBAAoB,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAGnF,cAAc,oBAAoB,CAAC,CAAC,qBAAqB,YAAY,CAAC,GAAG,EAAE,UAAU,cAAc;AACnG,cAAc,qBAAqB,CAAC,CAAC,qBAAqB,aAAa,CAAC,GAAG,EAAE,UAAU,cAAc;AACrG,cAAc,qBAAqB,CAAC,CAAC,qBAAqB,aAAa,CAAC,GAAG,EAAE,UAAU,cAAc;AAGrG;AAAA,EACE,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,aAAa,QAAQ;AAAA,EACtB,CAAC,WAAW,MAAM;AAAA,EAClB,CAAC,kBAAkB,aAAa;AAAA,EAChC,CAAC,eAAe,UAAU;AAAA,EAC1B,CAAC,YAAY,OAAO;AAAA,EACpB,CAAC,mBAAmB,cAAc;AAAA,EAClC,CAAC,gBAAgB,WAAW;AAAA,EAC5B,CAAC,UAAU,KAAK;AAClB,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAM,CAAC,CAAC,uBAAuB,KAAK,CAAC,GAAG,EAAE,UAAU,cAAc;AAClF,CAAC;AAQD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,cAAc,aAAa,CAAC,CAAC,qBAAqB,QAAQ,CAAC,GAAG,EAAE,UAAU,cAAc;AACxF,cAAc,gBAAgB,CAAC,CAAC,qBAAqB,WAAW,CAAC,GAAG,EAAE,UAAU,cAAc;AAC9F,cAAc,eAAe,CAAC,CAAC,qBAAqB,UAAU,CAAC,GAAG,EAAE,UAAU,cAAc;AAC5F,cAAc,eAAe,CAAC,CAAC,qBAAqB,UAAU,CAAC,GAAG,EAAE,UAAU,cAAc;AAC5F,cAAc,mBAAmB,CAAC,CAAC,qBAAqB,OAAO,CAAC,GAAG,EAAE,UAAU,cAAc;AAC7F,cAAc,mBAAmB,CAAC,CAAC,qBAAqB,OAAO,CAAC,GAAG,EAAE,UAAU,cAAc;AAG7F,cAAc,WAAW,CAAC,CAAC,mBAAmB,MAAM,CAAC,GAAG,EAAE,UAAU,cAAc;AAClF,cAAc,YAAY,CAAC,CAAC,mBAAmB,OAAO,CAAC,GAAG,EAAE,UAAU,cAAc;AACpF,cAAc,cAAc,CAAC,CAAC,mBAAmB,SAAS,CAAC,GAAG,EAAE,UAAU,cAAc;AAExF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,MAAM,gBAAgB,CAAC,aAAqB;AAC1C,SAAO;AAAA,IACL,KAAK,4BAA4B,QAAQ;AAAA,IACzC,UAAU,mEAAmE;AAAA,MAC3E,KAAK,4BAA4B,GAAG,QAAQ,WAAW;AAAA,IAAA,CACxD;AAAA,IACD;AAAA,MACE;AAAA,MACA,mBAAmB,QAAQ;AAAA,IAAA;AAAA,EAC7B;AAEJ;AAEA;AAAA,EACE,CAAC,kBAAkB,cAAc,QAAQ,CAAC;AAAA,EAC1C,CAAC,mBAAmB,cAAc,cAAc,CAAC;AAAA,EACjD,CAAC,kBAAkB,cAAc,UAAU,CAAC;AAAA,EAC5C,CAAC,mBAAmB,cAAc,iBAAiB,CAAC;AAAA,EACpD,CAAC,kBAAkB,cAAc,WAAW,CAAC;AAAA,EAC7C,CAAC,mBAAmB,cAAc,gBAAgB,CAAC;AAAA,EACnD,CAAC,kBAAkB,cAAc,SAAS,CAAC;AAAA,EAC3C,CAAC,mBAAmB,cAAc,aAAa,CAAC;AAAA;AAAA,EAGhD,CAAC,oBAAoB,cAAc,QAAQ,CAAC;AAAA,EAC5C,CAAC,qBAAqB,cAAc,cAAc,CAAC;AAAA,EACnD,CAAC,oBAAoB,cAAc,UAAU,CAAC;AAAA,EAC9C,CAAC,qBAAqB,cAAc,iBAAiB,CAAC;AAAA,EACtD,CAAC,oBAAoB,cAAc,WAAW,CAAC;AAAA,EAC/C,CAAC,qBAAqB,cAAc,gBAAgB,CAAC;AAAA,EACrD,CAAC,oBAAoB,cAAc,SAAS,CAAC;AAAA,EAC7C,CAAC,qBAAqB,cAAc,aAAa,CAAC;AACpD,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,gBAAc,MAAgB,OAAoB,EAAE,UAAU,cAAc,UAAU,KAAM;AAC9F,CAAC;AAED,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,SAAS,UAAU;AACjC,QAAI,YAAY,KAAK,GAAG;AAEtB,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,mBAAmB,KAAK;AAAA,QAAA;AAAA,MAC1B;AAAA,IAEJ;AACA,QAAI,MAAM,WAAW;AAEnB,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,8CAA8C,KAAK;AAAA,QAAA;AAAA,MACrD;AAAA,IAEJ;AACA,QAAI,MAAM,gBAAgB;AAExB,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,kDAAkD,KAAK;AAAA,QAAA;AAAA,MACzD;AAAA,IAEJ;AACA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B;AAAA,MACE;AAAA,MACA,kDAAkD,KAAK;AAAA,IAAA;AAAA,EACzD;AAAA,EAEF,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,aAAa;AAAA,EACzB,CAAC,oBAAoB,uDAAuD;AAC9E,GAAG,EAAE,UAAU,cAAc;AAC7B,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,SAAS,UAAU;AACjC,QAAI,MAAM,WAAW;AAEnB,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,8CAA8C,KAAK;AAAA,QAAA;AAAA,MACrD;AAAA,IAEJ;AACA,QAAI,MAAM,gBAAgB;AAExB,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,kDAAkD,KAAK;AAAA,QAAA;AAAA,MACzD;AAAA,IAEJ;AACA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B;AAAA,MACE;AAAA,MACA,kDAAkD,KAAK;AAAA,IAAA;AAAA,EACzD;AAAA,EAEF,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,cAAc,YAAY;AAAA,EACxB;AAAA,IACE;AAAA,IACA;AAAA,EAAA;AAEJ,GAAG,EAAE,UAAU,cAAc;AAC7B,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,SAAS,UAAU;AACjC,QAAI,YAAY,KAAK,GAAG;AAEtB,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,uBAAuB,KAAK;AAAA,QAAA;AAAA,MAC9B;AAAA,IAEJ;AACA,QAAI,MAAM,WAAW;AAEnB,aAAO,CAAC,KAAK,oBAAoB,GAAG,KAAK,EAAE,CAAC;AAAA,IAC9C;AACA,QAAI,MAAM,gBAAgB;AAExB,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,iDAAiD,KAAK;AAAA,QAAA;AAAA,MACxD;AAAA,IAEJ;AACA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,oBAAoB,OAAO,KAAK,GAAG,CAAC;AAAA,EAC3E,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAOD,CAAC,QAAQ,OAAO,IAAI,EAAE,QAAQ,CAAC,SAAS;AACtC,oBAAkB;AAAA,IAChB,MAAM;AAAA,IACN,WAAW,CAAC,QAAQ;AAAA,IACpB,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IACxB,iBAAiB;AAAA,IACjB,QAAQ,CAAC,OAAO,SAAS,OAAO,UAAU;AAExC,UAAI,OAAO,gBAAgB;AACzB,YAAI,SAAS,QAAQ;AAEnB,cAAI,QAAQ;AACZ,cAAI,OAAO,SAAS;AAClB,oBAAQ,qBAAqB,KAAK,IAAI,MAAM,OAAO;AAAA,UACrD;AAEA,iBAAO;AAAA,YACL,uBAAA;AAAA,YACA,KAAK,wBAAwB,KAAK;AAAA;AAAA,YAElC,KAAK,yBAAyB,mDAAmD;AAAA,UAAA;AAAA,QAErF;AAEA,YAAI,SAAS,OAAO;AAClB,cAAI,QAAQ;AACZ,cAAI,OAAO,SAAS;AAClB,oBAAQ,qBAAqB,KAAK,IAAI,MAAM,OAAO;AAAA,UACrD;AACA,iBAAO;AAAA,YACL,uBAAA;AAAA,YACA,KAAK,sBAAsB,KAAK;AAAA,YAChC,KAAK,yBAAyB,8BAA8B,KAAK,6DAA6D;AAAA;AAAA,UAAA;AAAA,QAElI;AAEA,YAAI,SAAS,MAAM;AACjB,cAAI,QAAQ;AACZ,cAAI,OAAO,SAAS;AAClB,oBAAQ,qBAAqB,KAAK,IAAI,MAAM,OAAO;AAAA,UACrD;AACA,iBAAO;AAAA,YACL,uBAAA;AAAA,YACA,KAAK,sBAAsB,KAAK;AAAA,UAAA;AAAA,QAEpC;AAAA,MACF;AAGA,UAAI,YAAY,KAAK,GAAG;AACtB,eAAO,CAAC,KAAK,mBAAmB,IAAI,aAAa,KAAK,CAAC;AAAA,MACzD;AAGA,UAAI,YAAY,KAAK,GAAG;AACtB,eAAO,CAAC,KAAK,mBAAmB,IAAI,aAAa,GAAG,KAAK,GAAG,CAAC;AAAA,MAC/D;AAGA,UAAI,WAAW,KAAK,GAAG;AAErB,YAAI,SAAS,QAAQ;AACnB,iBAAO;AAAA,YACL,uBAAA;AAAA,YACA,KAAK,wBAAwB,KAAK;AAAA,YAClC,KAAK,sBAAsB,aAAa;AAAA,YACxC,KAAK,yBAAyB,mDAAmD;AAAA,UAAA;AAAA,QAErF;AAEA,YAAI,SAAS,OAAO;AAClB,iBAAO;AAAA,YACL,uBAAA;AAAA,YACA,KAAK,sBAAsB,KAAK;AAAA,YAChC,KAAK,yBAAyB,8BAA8B,KAAK,6DAA6D;AAAA;AAAA,UAAA;AAAA,QAElI;AAEA,YAAI,SAAS,MAAM;AACjB,iBAAO;AAAA,YACL,uBAAA;AAAA,YACA,KAAK,sBAAsB,KAAK;AAAA,UAAA;AAAA,QAEpC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,sBAAsB,CAAC,UAAU;AAAA,MAC/B,KAAK,mBAAmB,IAAI,IAAI,OAAO,KAAK,GAAG;AAAA,IAAA;AAAA,IAEjD,aAAa,GAAG,IAAI;AAAA,IACpB,UAAU;AAAA,EAAA,CACX;AAED,oBAAkB;AAAA,IAChB,MAAM,GAAG,IAAI;AAAA,IACb,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IACxB,QAAQ,CAAC,UAAU,CAAC,KAAK,mBAAmB,IAAI,aAAa,KAAK,CAAC;AAAA,IACnE,sBAAsB,CAAC,UAAU;AAAA,MAC/B,KAAK,mBAAmB,IAAI,aAAa,OAAO,KAAK,GAAG;AAAA,IAAA;AAAA,IAE1D,aAAa,GAAG,IAAI;AAAA,IACpB,UAAU;AAAA,EAAA,CACX;AACH,CAAC;AAWD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,WAAW,CAAC,QAAQ;AAAA,EACpB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,QAAQ,CAAC,OAAO,SAAS,OAAO,UAAU;AACxC,QAAI,MAAM,WAAW,MAAM,GAAG;AAC5B,aAAO,CAAC,KAAK,oBAAoB,KAAK,CAAC;AAAA,IACzC;AAMA,QAAI,MAAM,WAAW,SAAS,GAAG;AAC/B,aAAO,CAAC,KAAK,mBAAmB,MAAM,QAAQ,WAAW,EAAE,CAAC,CAAC;AAAA,IAC/D;AAEA,QAAI,OAAO,gBAAgB;AACzB,UAAI,MAAM,SAAS;AACjB,eAAO;AAAA,UACL,OAAO,YAAY,uCAAuC;AAAA,YACxD;AAAA,cACE;AAAA,cACA,qBAAqB,KAAK,IAAI,MAAM,OAAO;AAAA,YAAA;AAAA,UAC7C,CACD;AAAA,UACD,KAAK,oBAAoB,qBAAqB,KAAK,IAAI,MAAM,OAAO,iBAAiB;AAAA,QAAA;AAAA,MAEzF;AACA,aAAO,CAAC,KAAK,oBAAoB,KAAK,CAAC;AAAA,IACzC;AAEA,QAAI,WAAW,KAAK,GAAG;AACrB,YAAM,cAAc,WAAW,KAAK;AAEpC,UAAI,MAAM,WAAW,QAAQ,GAAG;AAC9B,eAAO,CAAC,KAAK,oBAAoB,eAAe,KAAK,CAAC;AAAA,MACxD;AAEA,aAAO,CAAC,KAAK,oBAAoB,KAAK,CAAC;AAAA,IACzC;AAEA,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,mBAAmB,KAAK,CAAC;AAAA,IACxC;AAEA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,mBAAmB,OAAO,KAAK,GAAG,CAAC;AAAA,EAC1E,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AC5aD,cAAc,gBAAgB,CAAC,CAAC,iBAAiB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AACjF,cAAc,cAAc,CAAC,CAAC,iBAAiB,kBAAkB,CAAC,GAAG,EAAE,UAAU,WAAW;AAC5F,cAAc,WAAW,CAAC,CAAC,iBAAiB,eAAe,CAAC,GAAG,EAAE,UAAU,WAAW;AACtF,cAAc,cAAc,CAAC,CAAC,iBAAiB,kBAAkB,CAAC,GAAG,EAAE,UAAU,WAAW;AAC5F,cAAc,cAAc,CAAC,CAAC,iBAAiB,kBAAkB,CAAC,GAAG,EAAE,UAAU,WAAW;AAC5F,cAAc,cAAc,CAAC,CAAC,iBAAiB,kBAAkB,CAAC,GAAG,EAAE,UAAU,WAAW;AAC5F,cAAc,eAAe,CAAC,CAAC,iBAAiB,mBAAmB,CAAC,GAAG,EAAE,UAAU,WAAW;AAC9F,cAAc,eAAe,CAAC,CAAC,iBAAiB,mBAAmB,CAAC,GAAG,EAAE,UAAU,WAAW;AAC9F,cAAc,gBAAgB,CAAC,CAAC,iBAAiB,QAAQ,CAAC,GAAG,EAAE,UAAU,WAAW;AAIpF;AAAA,EACE,CAAC,aAAa,CAAC,0BAA0B,yBAAyB,CAAC;AAAA,EACnE,CAAC,aAAa,CAAC,2BAA2B,4BAA4B,CAAC;AAAA,EACvE,CAAC,aAAa,CAAC,8BAA8B,2BAA2B,CAAC;AAAA,EACzE,CAAC,aAAa,CAAC,0BAA0B,2BAA2B,CAAC;AAAA,EACrE,CAAC,cAAc,CAAC,wBAAwB,CAAC;AAAA,EACzC,CAAC,cAAc,CAAC,yBAAyB,CAAC;AAAA,EAC1C,CAAC,cAAc,CAAC,4BAA4B,CAAC;AAAA,EAC7C,CAAC,cAAc,CAAC,2BAA2B,CAAC;AAC9C,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,QAAM,WAAW;AAEjB,gBAAc,GAAG,IAAI,SAAS,SAAS,IAAI,CAAA,SAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AAC1F,gBAAc,GAAG,IAAI,OAAO,SAAS,IAAI,CAAA,SAAQ,CAAC,MAAM,kBAAkB,CAAC,GAAG,EAAE,UAAU,WAAW;AACrG,gBAAc,GAAG,IAAI,IAAI,SAAS,IAAI,CAAA,SAAQ,CAAC,MAAM,eAAe,CAAC,GAAG,EAAE,UAAU,WAAW;AAC/F,gBAAc,GAAG,IAAI,OAAO,SAAS,IAAI,CAAA,SAAQ,CAAC,MAAM,kBAAkB,CAAC,GAAG,EAAE,UAAU,WAAW;AACrG,gBAAc,GAAG,IAAI,OAAO,SAAS,IAAI,CAAA,SAAQ,CAAC,MAAM,kBAAkB,CAAC,GAAG,EAAE,UAAU,WAAW;AACrG,gBAAc,GAAG,IAAI,OAAO,SAAS,IAAI,CAAA,SAAQ,CAAC,MAAM,kBAAkB,CAAC,GAAG,EAAE,UAAU,WAAW;AACrG,gBAAc,GAAG,IAAI,QAAQ,SAAS,IAAI,CAAA,SAAQ,CAAC,MAAM,mBAAmB,CAAC,GAAG,EAAE,UAAU,WAAW;AACvG,gBAAc,GAAG,IAAI,QAAQ,SAAS,IAAI,CAAA,SAAQ,CAAC,MAAM,mBAAmB,CAAC,GAAG,EAAE,UAAU,WAAW;AACvG,gBAAc,GAAG,IAAI,SAAS,SAAS,IAAI,CAAA,SAAQ,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,UAAU,WAAW;AAG7F,oBAAkB;AAAA,IAChB;AAAA,IACA,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IACxB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,UAAI,YAAY,KAAK,GAAG;AACtB,eAAO,yBAAyB,KAAK;AAAA,MACvC;AACA,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,CAAC,UAAU,SAAS,IAAI,CAAA,SAAQ,KAAK,MAAM,KAAK,CAAC;AAAA,IACzD,aAAa,GAAG,IAAI;AAAA,IACpB,UAAU;AAAA,EAAA,CACX;AACH,CAAC;AAID,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,yBAAyB,KAAK;AAAA,IACvC;AACA,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAMD,cAAc,YAAY,CAAC,CAAC,gBAAgB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AAC5E,cAAc,YAAY,CAAC,CAAC,gBAAgB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AAC5E,cAAc,YAAY,CAAC,CAAC,gBAAgB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AAC5E,cAAc,YAAY,CAAC,CAAC,gBAAgB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AAC5E,cAAc,UAAU,CAAC,CAAC,gBAAgB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AAK1E;AAAA,EACE,CAAC,YAAY,CAAC,qBAAqB,oBAAoB,CAAC;AAAA,EACxD,CAAC,YAAY,CAAC,oBAAoB,qBAAqB,CAAC;AAAA,EACxD,CAAC,YAAY,CAAC,kBAAkB,CAAC;AAAA,EACjC,CAAC,YAAY,CAAC,oBAAoB,CAAC;AAAA,EACnC,CAAC,YAAY,CAAC,qBAAqB,CAAC;AAAA,EACpC,CAAC,YAAY,CAAC,mBAAmB,CAAC;AACpC,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC3B,QAAM,WAAW;AAEjB,gBAAc,GAAG,IAAI,MAAM,SAAS,IAAI,UAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;AAC9D,gBAAc,GAAG,IAAI,MAAM,SAAS,IAAI,UAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;AAC9D,gBAAc,GAAG,IAAI,MAAM,SAAS,IAAI,UAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;AAC9D,gBAAc,GAAG,IAAI,MAAM,SAAS,IAAI,UAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;AAC9D,gBAAc,GAAG,IAAI,IAAI,SAAS,IAAI,UAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;AAG5D,oBAAkB;AAAA,IAChB;AAAA,IACA,WAAW,CAAC,eAAe,QAAQ;AAAA,IACnC,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IACxB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,UAAI,YAAY,KAAK,GAAG;AACtB,eAAO,GAAG,KAAK;AAAA,MACjB;AACA,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,CAAC,OAAO,KAAK,UAAU;AAC7B,UAAI,WAAW,KAAK,GAAG;AACrB,eAAO,SAAS,IAAI,CAAA,SAAQ,KAAK,KAAK,QAAQ,SAAS,OAAO,GAAG,KAAK,CAAC;AAAA,MACzE;AACA,UAAI,MAAM,WAAW;AACnB,eAAO,SAAS,IAAI,CAAA,SAAQ,KAAK,MAAM,KAAK,CAAC;AAAA,MAC/C;AACA,aAAO;AAAA,IACT;AAAA,IACA,sBAAsB,CAAC,UAAU;AAE/B,UAAI,MAAM,WAAW,SAAS,GAAG;AAC/B,eAAO,SAAS,IAAI,CAAA,SAAQ,KAAK,MAAM,OAAO,MAAM,QAAQ,WAAW,EAAE,CAAC,GAAG,CAAC;AAAA,MAChF;AAEA,aAAO,SAAS,IAAI,CAAA,SAAQ,KAAK,KAAK,QAAQ,SAAS,OAAO,GAAG,OAAO,KAAK,GAAG,CAAC;AAAA,IACnF;AAAA,IACA,aAAa,GAAG,IAAI;AAAA,IACpB,UAAU;AAAA,EAAA,CACX;AACH,CAAC;AAMD,cAAc,kBAAkB,CAAC,CAAC,gBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,WAAW;AACtF,cAAc,kBAAkB,CAAC,CAAC,gBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,WAAW;AAC3F,cAAc,sBAAsB,CAAC,CAAC,gBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,WAAW;AAM9F,cAAc,gBAAgB,CAAC,CAAC,gBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,WAAW;AAClF,cAAc,iBAAiB,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,WAAW;AACpF,cAAc,iBAAiB,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,WAAW;AACpF,cAAc,iBAAiB,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,WAAW;AACpF,cAAc,iBAAiB,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,WAAW;AACpF,cAAc,eAAe,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,WAAW;AAIhF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,WAAW,CAAC,UAAU,aAAa;AAAA,EACnC,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,QAAQ,CAAC,OAAO,KAAK,OAAO,UAAU;AAEpC,QAAI,OAAO,gBAAgB;AACzB,UAAI,MAAM,SAAS;AACjB,eAAO;AAAA,UACL,OAAO,YAAY,uCAAuC;AAAA,YACxD,KAAK,gBAAgB,qBAAqB,KAAK,IAAI,MAAM,OAAO,iBAAiB;AAAA,UAAA,CAClF;AAAA,UACD,KAAK,gBAAgB,qBAAqB,KAAK,IAAI,MAAM,OAAO,iBAAiB;AAAA,QAAA;AAAA,MAErF;AACA,aAAO,CAAC,KAAK,gBAAgB,KAAK,CAAC;AAAA,IACrC;AAEA,QAAI,MAAM,WAAW;AACnB,UAAI,YAAY,KAAK,GAAG;AACtB,eAAO,CAAC,KAAK,gBAAgB,KAAK,CAAC;AAAA,MACrC;AACA,aAAO,CAAC,KAAK,gBAAgB,KAAK,CAAC;AAAA,IACrC;AAEA,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,gBAAgB,GAAG,KAAK,IAAI,CAAC;AAAA,IAC5C;AACA,QAAI,WAAW,KAAK,GAAG;AACrB,aAAO,CAAC,KAAK,gBAAgB,KAAK,CAAC;AAAA,IACrC;AACA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU;AAC/B,QAAI,MAAM,WAAW,SAAS,GAAG;AAC/B,aAAO,CAAC,KAAK,gBAAgB,OAAO,MAAM,QAAQ,WAAW,EAAE,CAAC,GAAG,CAAC;AAAA,IACtE;AACA,WAAO,CAAC,KAAK,gBAAgB,OAAO,KAAK,GAAG,CAAC;AAAA,EAC/C;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAMD,cAAc,aAAa,CAAC,CAAC,iBAAiB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AAC9E,cAAc,aAAa,CAAC,CAAC,iBAAiB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AAC9E,cAAc,aAAa,CAAC,CAAC,iBAAiB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AAC9E,cAAc,aAAa,CAAC,CAAC,iBAAiB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AAC9E,cAAc,aAAa,CAAC,CAAC,iBAAiB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AAM9E,cAAc,mBAAmB,CAAC,CAAC,iBAAiB,SAAS,CAAC,GAAG,EAAE,UAAU,WAAW;AACxF,cAAc,mBAAmB,CAAC,CAAC,iBAAiB,cAAc,CAAC,GAAG,EAAE,UAAU,WAAW;AAC7F,cAAc,uBAAuB,CAAC,CAAC,iBAAiB,aAAa,CAAC,GAAG,EAAE,UAAU,WAAW;AAOhG,cAAc,gBAAgB,CAAC,CAAC,WAAW,uBAAuB,GAAG,CAAC,kBAAkB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AACxH,cAAc,WAAW,CAAC,CAAC,iBAAiB,OAAO,CAAC,GAAG,EAAE,UAAU,WAAW;AAC9E,cAAc,kBAAkB,CAAC,CAAC,iBAAiB,QAAQ,CAAC,GAAG,EAAE,UAAU,WAAW;AACtF,cAAc,kBAAkB,CAAC,CAAC,iBAAiB,QAAQ,CAAC,GAAG,EAAE,UAAU,WAAW;AACtF,cAAc,kBAAkB,CAAC,CAAC,iBAAiB,QAAQ,CAAC,GAAG,EAAE,UAAU,WAAW;AAMtF,cAAc,oBAAoB,CAAC,CAAC,kBAAkB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AACtF,cAAc,oBAAoB,CAAC,CAAC,kBAAkB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AACtF,cAAc,oBAAoB,CAAC,CAAC,kBAAkB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AACtF,cAAc,oBAAoB,CAAC,CAAC,kBAAkB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AACtF,cAAc,oBAAoB,CAAC,CAAC,kBAAkB,KAAK,CAAC,GAAG,EAAE,UAAU,WAAW;AAGtF,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,GAAG,KAAK;AAAA,IACjB;AACA,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAID,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,WAAW,CAAC,UAAU,aAAa;AAAA,EACnC,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,UAAU;AAE7B,QAAI,WAAW,KAAK,GAAG;AACrB,aAAO,CAAC,KAAK,iBAAiB,KAAK,CAAC;AAAA,IACtC;AAEA,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,iBAAiB,GAAG,KAAK,IAAI,CAAC;AAAA,IAC7C;AAGA,QAAI,MAAM,WAAW;AAEnB,UAAI,YAAY,KAAK,GAAG;AACtB,eAAO,CAAC,KAAK,iBAAiB,KAAK,CAAC;AAAA,MACtC;AAEA,aAAO,CAAC,KAAK,iBAAiB,KAAK,CAAC;AAAA,IACtC;AAIA,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB,CAAC,UAAU;AAE/B,QAAI,MAAM,WAAW,QAAQ,GAAG;AAC9B,aAAO,CAAC,KAAK,iBAAiB,MAAM,QAAQ,UAAU,EAAE,CAAC,CAAC;AAAA,IAC5D;AAEA,QAAI,MAAM,WAAW,SAAS,GAAG;AAC/B,aAAO,CAAC,KAAK,iBAAiB,OAAO,MAAM,QAAQ,WAAW,EAAE,CAAC,GAAG,CAAC;AAAA,IACvE;AAEA,WAAO,CAAC,KAAK,iBAAiB,OAAO,KAAK,GAAG,CAAC;AAAA,EAChD;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAID,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB,CAAC,EAAE,YAAY;AAC9B,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,GAAG,KAAK;AAAA,IACjB;AACA,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AC3TD,cAAc,kBAAkB,CAAC,CAAC,aAAa,MAAM,CAAC,GAAG;AAAA,EACvD,UAAU;AACZ,CAAC;AAID;AAAA,EACE;AAAA,EACA;AAAA,IACE;AAAA,MACE;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAAA,EAEF,EAAE,UAAU,YAAA;AACd;AAIA,cAAc,iBAAiB;AAAA,EAC7B;AAAA,IACE;AAAA,IACA;AAAA,EAAA;AAEJ,CAAC;AAMD,cAAc,gBAAgB,CAAC,CAAC,mBAAmB,aAAa,CAAC,GAAG;AAAA,EAClE,UAAU;AACZ,CAAC;AAED,cAAc,kBAAkB,CAAC,CAAC,mBAAmB,MAAM,CAAC,GAAG;AAAA,EAC7D,UAAU;AACZ,CAAC;AAID,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,wBAAwB;AAAA,EACxB,sBAAsB,CAAC,UAAU,CAAC,KAAK,aAAa,OAAO,KAAK,GAAG,CAAC;AAAA,EACpE,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAID,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,QAAQ,CAAC,UAAU,CAAC,KAAK,aAAa,KAAK,CAAC;AAAA,EAC5C,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAID,cAAc,mBAAmB,CAAC,CAAC,uBAAuB,QAAQ,CAAC,GAAG;AAAA,EACpE,UAAU;AACZ,CAAC;AACD,cAAc,oBAAoB,CAAC,CAAC,uBAAuB,SAAS,CAAC,GAAG;AAAA,EACtE,UAAU;AACZ,CAAC;AAID;AAAA,EACE;AAAA,EACA,CAAC,CAAC,eAAe,6BAA6B,CAAC;AAAA,EAC/C,EAAE,UAAU,YAAA;AACd;AACA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,eAAe,yBAAyB,CAAC;AAAA,EAC3C,EAAE,UAAU,YAAA;AACd;AACA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,eAAe,2BAA2B,CAAC;AAAA,EAC7C,EAAE,UAAU,YAAA;AACd;AACA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,eAAe,6BAA6B,CAAC;AAAA,EAC/C,EAAE,UAAU,YAAA;AACd;AACA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,eAAe,4BAA4B,CAAC;AAAA,EAC9C,EAAE,UAAU,YAAA;AACd;AACA,cAAc,oBAAoB,CAAC,CAAC,eAAe,MAAM,CAAC,GAAG;AAAA,EAC3D,UAAU;AACZ,CAAC;AAID,cAAc,6BAA6B,CAAC,CAAC,sBAAsB,QAAQ,CAAC,GAAG;AAAA,EAC7E,UAAU;AACZ,CAAC;AACD,cAAc,0BAA0B,CAAC,CAAC,sBAAsB,KAAK,CAAC,GAAG;AAAA,EACvE,UAAU;AACZ,CAAC;AACD;AAAA,EACE;AAAA,EACA,CAAC,CAAC,sBAAsB,WAAW,CAAC;AAAA,EACpC,EAAE,UAAU,YAAA;AACd;AACA,cAAc,4BAA4B,CAAC,CAAC,sBAAsB,OAAO,CAAC,GAAG;AAAA,EAC3E,UAAU;AACZ,CAAC;AACD;AAAA,EACE;AAAA,EACA,CAAC,CAAC,sBAAsB,cAAc,CAAC;AAAA,EACvC,EAAE,UAAU,YAAA;AACd;AACA,cAAc,6BAA6B,CAAC,CAAC,sBAAsB,QAAQ,CAAC,GAAG;AAAA,EAC7E,UAAU;AACZ,CAAC;AACD;AAAA,EACE;AAAA,EACA,CAAC,CAAC,sBAAsB,aAAa,CAAC;AAAA,EACtC,EAAE,UAAU,YAAA;AACd;AACA,cAAc,2BAA2B,CAAC,CAAC,sBAAsB,MAAM,CAAC,GAAG;AAAA,EACzE,UAAU;AACZ,CAAC;AACD;AAAA,EACE;AAAA,EACA,CAAC,CAAC,sBAAsB,UAAU,CAAC;AAAA,EACnC,EAAE,UAAU,YAAA;AACd;AAEA,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,UAAU,CAAC,KAAK,sBAAsB,KAAK,CAAC;AAAA,EACrD,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,sBAAsB,OAAO,KAAK,GAAG;AAAA,EAAA;AAAA,EAE5C,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,UAAU;AAEjB,WAAO,CAAC,KAAK,eAAe,KAAK,CAAC;AAAA,EACpC;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,eAAe,OAAO,KAAK,GAAG,CAAC;AAAA,EACtE,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAMD,cAAc,eAAe,CAAC,CAAC,UAAU,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAG5E,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,KAAK,EAAE,eAAe;AAGpC,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AACtC,YAAM,OAAO,YAAY,OAAO,KAAK,EAAE,WAAW,GAAG,IAAI,MAAM;AAC/D,aAAO,CAAC,KAAK,aAAa,WAAW,IAAI,GAAG,GAAG,wBAAwB,CAAC;AAAA,IAC1E;AAEA,WAAO,CAAC,KAAK,aAAa,WAAW,KAAK,wBAAwB,CAAC;AAAA,EACrE;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,aAAa,eAAe,KAAK,yBAAyB;AAAA,EAAA;AAAA,EAEjE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,KAAK,EAAE,eAAe;AAGpC,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AACtC,YAAM,OAAO,YAAY,OAAO,KAAK,EAAE,WAAW,GAAG,IAAI,MAAM;AAC/D,aAAO,CAAC,KAAK,aAAa,gCAAgC,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,IAC1E;AAEA,WAAO,CAAC,KAAK,aAAa,gCAAgC,KAAK,GAAG,CAAC;AAAA,EACrE;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,aAAa,oCAAoC,KAAK,IAAI;AAAA,EAAA;AAAA,EAEjE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,KAAK,EAAE,eAAe;AAGpC,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AACtC,YAAM,OAAO,YAAY,OAAO,KAAK,EAAE,WAAW,GAAG,IAAI,MAAM;AAC/D,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,qDAAqD,IAAI,GAAG,GAAG;AAAA,QAAA;AAAA,MACjE;AAAA,IAEJ;AAEA,WAAO;AAAA,MACL;AAAA,QACE;AAAA,QACA,qDAAqD,KAAK;AAAA,MAAA;AAAA,IAC5D;AAAA,EAEJ;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B;AAAA,MACE;AAAA,MACA,yDAAyD,KAAK;AAAA,IAAA;AAAA,EAChE;AAAA,EAEF,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,KAAK,EAAE,eAAe;AAGpC,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AACtC,UAAI,YAAY,OAAO,KAAK,EAAE,WAAW,GAAG,GAAG;AAC7C,eAAO,CAAC,KAAK,UAAU,QAAQ,GAAG,QAAQ,CAAC;AAAA,MAC7C;AAEA,aAAO,CAAC,KAAK,UAAU,GAAG,CAAC;AAAA,IAC7B;AAEA,WAAO,CAAC,KAAK,UAAU,KAAK,CAAC;AAAA,EAC/B;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,UAAU,OAAO,KAAK,GAAG,CAAC;AAAA,EACjE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAMD,cAAc,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,UAAU,aAAa;AAE1E;AAAA,EACE;AAAA,EACA,CAAC,CAAC,SAAS,6DAA6D,CAAC;AAAA,EACzE,EAAE,UAAU,YAAA;AACd;AAGA,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,KAAK,EAAE,UAAU,gBAAgB;AAC/C,QAAI,WAAW;AACb,aAAO,CAAC,KAAK,SAAS,GAAG,KAAK,EAAE,CAAC;AAAA,IACnC;AAIA,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AACtC,YAAM,OAAO,YAAY,OAAO,KAAK,EAAE,WAAW,GAAG,IAAI,MAAM;AAC/D,aAAO,CAAC,KAAK,SAAS,QAAQ,GAAG,MAAM,IAAI,wBAAwB,CAAC;AAAA,IACtE;AAEA,WAAO,CAAC,KAAK,SAAS,GAAG,KAAK,sBAAsB,CAAC;AAAA,EACvD;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,SAAS,OAAO,KAAK,uBAAuB;AAAA,EAAA;AAAA,EAEnD,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,KAAK,EAAE,UAAU,gBAAgB;AAC/C,QAAI,WAAW;AACb,aAAO,CAAC,KAAK,SAAS,uBAAuB,KAAK,EAAE,CAAC;AAAA,IACvD;AAIA,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AACtC,YAAM,OAAO,YAAY,OAAO,KAAK,EAAE,WAAW,GAAG,IAAI,MAAM;AAC/D,aAAO,CAAC,KAAK,SAAS,4BAA4B,GAAG,MAAM,IAAI,IAAI,CAAC;AAAA,IACtE;AAEA,WAAO,CAAC,KAAK,SAAS,uBAAuB,KAAK,EAAE,CAAC;AAAA,EACvD;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,SAAS,2BAA2B,KAAK,GAAG;AAAA,EAAA;AAAA,EAEnD,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,KAAK,EAAE,UAAU,gBAAgB;AAC/C,QAAI,WAAW;AACb,aAAO;AAAA,QACL,KAAK,SAAS,2CAA2C,KAAK,EAAE;AAAA,MAAA;AAAA,IAEpE;AAIA,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AACtC,YAAM,OAAO,YAAY,OAAO,KAAK,EAAE,WAAW,GAAG,IAAI,MAAM;AAC/D,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,gDAAgD,GAAG,MAAM,IAAI;AAAA,QAAA;AAAA,MAC/D;AAAA,IAEJ;AAEA,WAAO,CAAC,KAAK,SAAS,2CAA2C,KAAK,EAAE,CAAC;AAAA,EAC3E;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,SAAS,+CAA+C,KAAK,GAAG;AAAA,EAAA;AAAA,EAEvE,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,KAAK,EAAE,UAAU,gBAAgB;AAC/C,QAAI,WAAW;AACb,aAAO,CAAC,KAAK,SAAS,GAAG,KAAK,EAAE,CAAC;AAAA,IACnC;AAIA,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AACtC,UAAI,YAAY,OAAO,KAAK,EAAE,WAAW,GAAG,GAAG;AAC7C,eAAO,CAAC,KAAK,SAAS,QAAQ,GAAG,eAAe,GAAG,QAAQ,CAAC;AAAA,MAC9D;AACA,aAAO,CAAC,KAAK,SAAS,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AAAA,IACxC;AAEA,WAAO,CAAC,KAAK,SAAS,KAAK,CAAC;AAAA,EAC9B;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,SAAS,OAAO,KAAK,SAAS,KAAK,GAAG;AAAA,EAAA;AAAA,EAE7C,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAMD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,KAAK,EAAE,eAAe;AAGpC,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AACtC,YAAM,OAAO,YAAY,OAAO,KAAK,EAAE,WAAW,GAAG,IAAI,MAAM;AAC/D,aAAO,CAAC,KAAK,aAAa,SAAS,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,IACnD;AAEA,WAAO,CAAC,KAAK,aAAa,SAAS,KAAK,GAAG,CAAC;AAAA,EAC9C;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,aAAa,aAAa,KAAK,IAAI,CAAC;AAAA,EAC3E,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,KAAK,EAAE,eAAe;AAGpC,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AACtC,YAAM,OAAO,YAAY,OAAO,KAAK,EAAE,WAAW,GAAG,IAAI,MAAM;AAC/D,aAAO,CAAC,KAAK,aAAa,SAAS,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,IACnD;AAEA,WAAO,CAAC,KAAK,aAAa,SAAS,KAAK,GAAG,CAAC;AAAA,EAC9C;AAAA,EACA,sBAAsB,CAAC,UAAU,CAAC,KAAK,aAAa,aAAa,KAAK,IAAI,CAAC;AAAA,EAC3E,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,QAAQ,CAAC,OAAO,KAAK,EAAE,eAAe;AAGpC,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AACtC,YAAM,OAAO,YAAY,OAAO,KAAK,EAAE,WAAW,GAAG,IAAI,MAAM;AAC/D,aAAO,CAAC,KAAK,aAAa,SAAS,IAAI,GAAG,GAAG,WAAW,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,IACxE;AAEA,WAAO,CAAC,KAAK,aAAa,SAAS,KAAK,WAAW,KAAK,GAAG,CAAC;AAAA,EAC9D;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,aAAa,aAAa,KAAK,gBAAgB,KAAK,IAAI;AAAA,EAAA;AAAA,EAE/D,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAMD,cAAc,iBAAiB,CAAC,CAAC,oBAAoB,QAAQ,CAAC,GAAG;AAAA,EAC/D,UAAU;AACZ,CAAC;AAED,cAAc,cAAc,CAAC,CAAC,oBAAoB,KAAK,CAAC,GAAG;AAAA,EACzD,UAAU;AACZ,CAAC;AAED,cAAc,oBAAoB,CAAC,CAAC,oBAAoB,WAAW,CAAC,GAAG;AAAA,EACrE,UAAU;AACZ,CAAC;AAED,cAAc,gBAAgB,CAAC,CAAC,oBAAoB,OAAO,CAAC,GAAG;AAAA,EAC7D,UAAU;AACZ,CAAC;AAED,cAAc,uBAAuB,CAAC,CAAC,oBAAoB,cAAc,CAAC,GAAG;AAAA,EAC3E,UAAU;AACZ,CAAC;AAED,cAAc,iBAAiB,CAAC,CAAC,oBAAoB,QAAQ,CAAC,GAAG;AAAA,EAC/D,UAAU;AACZ,CAAC;AAED,cAAc,sBAAsB,CAAC,CAAC,oBAAoB,aAAa,CAAC,GAAG;AAAA,EACzE,UAAU;AACZ,CAAC;AAED,cAAc,eAAe,CAAC,CAAC,oBAAoB,MAAM,CAAC,GAAG;AAAA,EAC3D,UAAU;AACZ,CAAC;AAED,cAAc,mBAAmB,CAAC,CAAC,oBAAoB,UAAU,CAAC,GAAG;AAAA,EACnE,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,wBAAwB;AAAA,EACxB,mBAAmB;AAAA,EACnB,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAKD,MAAM,sBAAsB,MAC1B,OAAO;AAAA,EACL,SAAS,sBAAsB,GAAG;AAAA,EAClC,SAAS,sBAAsB,GAAG;AAAA,EAClC,SAAS,sBAAsB,GAAG;AACpC,CAAC;AAIH,cAAc,kBAAkB,CAAC,CAAC,aAAa,MAAM,CAAC,GAAG;AAAA,EACvD,UAAU;AACZ,CAAC;AAGD,cAAc,gBAAgB,CAAC,CAAC,aAAa,SAAS,CAAC,GAAG;AAAA,EACxD,UAAU;AACZ,CAAC;AACD,cAAc,iBAAiB,CAAC,CAAC,aAAa,WAAW,CAAC,GAAG;AAAA,EAC3D,UAAU;AACZ,CAAC;AACD;AAAA,EACE;AAAA,EACA;AAAA,IACE;AAAA,IACA,CAAC,sBAAsB,MAAM;AAAA,IAC7B,CAAC,sBAAsB,MAAM;AAAA,IAC7B,CAAC,aAAa,iDAAiD;AAAA,EAAA;AAAA,EAEjE,EAAE,UAAU,YAAA;AACd;AACA;AAAA,EACE;AAAA,EACA;AAAA,IACE;AAAA,IACA,CAAC,sBAAsB,OAAO;AAAA,IAC9B,CAAC,sBAAsB,OAAO;AAAA,IAC9B,CAAC,aAAa,iDAAiD;AAAA,EAAA;AAAA,EAEjE,EAAE,UAAU,YAAA;AACd;AAGA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,aAAa,6BAA6B,CAAC;AAAA,EAC7C,EAAE,UAAU,YAAA;AACd;AACA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,aAAa,8BAA8B,CAAC;AAAA,EAC9C,EAAE,UAAU,YAAA;AACd;AACA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,aAAa,8BAA8B,CAAC;AAAA,EAC9C,EAAE,UAAU,YAAA;AACd;AACA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,aAAa,+BAA+B,CAAC;AAAA,EAC/C,EAAE,UAAU,YAAA;AACd;AAGA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,aAAa,6BAA6B,CAAC;AAAA,EAC7C,EAAE,UAAU,YAAA;AACd;AACA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,aAAa,8BAA8B,CAAC;AAAA,EAC9C,EAAE,UAAU,YAAA;AACd;AACA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,aAAa,8BAA8B,CAAC;AAAA,EAC9C,EAAE,UAAU,YAAA;AACd;AACA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,aAAa,+BAA+B,CAAC;AAAA,EAC/C,EAAE,UAAU,YAAA;AACd;AAGA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,aAAa,qDAAqD,CAAC;AAAA,EACrE,EAAE,UAAU,YAAA;AACd;AACA;AAAA,EACE;AAAA,EACA,CAAC,CAAC,aAAa,sDAAsD,CAAC;AAAA,EACtE,EAAE,UAAU,YAAA;AACd;AAKA,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,EAAE,eAAe;AACpC,QAAI,sBAAsB,KAAK,GAAG;AAChC,YAAM,IAAI,QAAQ,KAAK;AACvB,aAAO,CAAC,KAAK,aAAa,GAAG,CAAC,0BAA0B,CAAC;AAAA,IAC3D;AACA,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,IAAI,yBAAyB,KAAK;AACxC,aAAO,CAAC,KAAK,aAAa,GAAG,CAAC,0BAA0B,CAAC;AAAA,IAC3D;AACA,WAAO,CAAC,KAAK,aAAa,GAAG,KAAK,0BAA0B,CAAC;AAAA,EAC/D;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,aAAa,OAAO,KAAK,2BAA2B;AAAA,EAAA;AAAA,EAE3D,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,EAAE,eAAe;AACpC,QAAI,sBAAsB,KAAK,GAAG;AAChC,YAAM,IAAI,QAAQ,KAAK;AACvB,aAAO,CAAC,KAAK,aAAa,2BAA2B,CAAC,EAAE,CAAC;AAAA,IAC3D;AACA,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,IAAI,yBAAyB,KAAK;AACxC,aAAO,CAAC,KAAK,aAAa,2BAA2B,CAAC,EAAE,CAAC;AAAA,IAC3D;AACA,WAAO,CAAC,KAAK,aAAa,2BAA2B,KAAK,EAAE,CAAC;AAAA,EAC/D;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,aAAa,+BAA+B,KAAK,GAAG;AAAA,EAAA;AAAA,EAE3D,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,EAAE,eAAe;AACpC,QAAI,sBAAsB,KAAK,GAAG;AAChC,YAAM,IAAI,QAAQ,KAAK;AACvB,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,mDAAmD,CAAC;AAAA,QAAA;AAAA,MACtD;AAAA,IAEJ;AAEA,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,IAAI,yBAAyB,KAAK;AACxC,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,mDAAmD,CAAC;AAAA,QAAA;AAAA,MACtD;AAAA,IAEJ;AAEA,WAAO;AAAA,MACL;AAAA,QACE;AAAA,QACA,mDAAmD,KAAK;AAAA,MAAA;AAAA,IAC1D;AAAA,EAEJ;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B;AAAA,MACE;AAAA,MACA,uDAAuD,KAAK;AAAA,IAAA;AAAA,EAC9D;AAAA,EAEF,aACE;AAAA,EACF,UAAU;AACZ,CAAC;AAGD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,EAAE,eAAe;AAEpC,QAAI,sBAAsB,KAAK,GAAG;AAChC,YAAM,IAAI,QAAQ,KAAK;AACvB,aAAO,CAAC,KAAK,aAAa,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAAA,IACxC;AAEA,QAAI,YAAY,KAAK,KAAK,UAAU;AAClC,YAAM,IAAI,yBAAyB,KAAK;AACxC,aAAO,CAAC,KAAK,aAAa,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAAA,IACxC;AAEA,WAAO,CAAC,KAAK,aAAa,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC;AAAA,EAChD;AAAA,EACA,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,aAAa,OAAO,KAAK,SAAS,KAAK,GAAG;AAAA,EAAA;AAAA,EAEjD,aACE;AAAA,EACF,UAAU;AACZ,CAAC;ACzwBD,cAAc,gBAAgB,CAAC,CAAC,QAAQ,SAAS,CAAC,GAAG,EAAE,UAAU,OAAO;AACxE,cAAc,gBAAgB,CAAC,CAAC,QAAQ,cAAc,CAAC,GAAG,EAAE,UAAU,OAAO;AAC7E,cAAc,oBAAoB,CAAC,CAAC,QAAQ,aAAa,CAAC,GAAG,EAAE,UAAU,OAAO;AAChF,cAAc,cAAc,CAAC,CAAC,QAAQ,MAAM,CAAC,GAAG,EAAE,UAAU,OAAO;AACnE,cAAc,cAAc,CAAC,CAAC,QAAQ,MAAM,CAAC,GAAG,EAAE,UAAU,OAAO;AAGnE,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,WAAW,CAAC,QAAQ;AAAA,EACpB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,OAAO,UAAU;AACpC,QAAI,OAAO,gBAAgB;AACzB,aAAO,CAAC,KAAK,QAAQ,eAAe,MAAM,cAAc,GAAG,CAAC;AAAA,IAC9D;AACA,WAAO,CAAC,KAAK,QAAQ,KAAK,CAAC;AAAA,EAC7B;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AAID,cAAc,kBAAkB,CAAC,CAAC,UAAU,SAAS,CAAC,GAAG,EAAE,UAAU,OAAO;AAC5E,cAAc,kBAAkB,CAAC,CAAC,UAAU,cAAc,CAAC,GAAG,EAAE,UAAU,OAAO;AACjF,cAAc,sBAAsB,CAAC,CAAC,UAAU,aAAa,CAAC,GAAG,EAAE,UAAU,OAAO;AACpF,cAAc,gBAAgB,CAAC,CAAC,UAAU,MAAM,CAAC,GAAG,EAAE,UAAU,OAAO;AACvE,cAAc,gBAAgB,CAAC,CAAC,UAAU,MAAM,CAAC,GAAG,EAAE,UAAU,OAAO;AAEvE,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,WAAW,CAAC,QAAQ;AAAA,EACpB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,QAAQ,CAAC,OAAO,KAAK,OAAO,UAAU;AAEpC,QAAI,YAAY,KAAK,GAAG;AACtB,aAAO,CAAC,KAAK,gBAAgB,KAAK,CAAC;AAAA,IACrC;AAEA,QAAI,OAAO,gBAAgB;AACzB,aAAO,CAAC,KAAK,UAAU,eAAe,MAAM,cAAc,GAAG,CAAC;AAAA,IAChE;AACA,WAAO,CAAC,KAAK,UAAU,KAAK,CAAC;AAAA,EAC/B;AAAA,EACA,sBAAsB,CAAC,UAAU;AAC/B,QAAI,MAAM,WAAW,SAAS,GAAG;AAC/B,YAAM,KAAK,MAAM,QAAQ,WAAW,EAAE;AACtC,aAAO,CAAC,KAAK,gBAAgB,OAAO,EAAE,GAAG,CAAC;AAAA,IAC5C;AACA,WAAO,CAAC,KAAK,UAAU,OAAO,KAAK,GAAG,CAAC;AAAA,EACzC;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,CAAC;AC3DD,cAAc,4BAA4B,CAAC,CAAC,uBAAuB,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;AAC1G,cAAc,4BAA4B,CAAC,CAAC,uBAAuB,MAAM,CAAC,GAAG,EAAE,UAAU,iBAAiB;ACD1G,eAAe,SAAS,CAAC,SAAS,GAAG;AAAA,EACnC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM,MAAM,CAAC,OAAO,SAAS,kBAAkB,CAAA,CAAE,CAAC;AACpD,CAAC;AACD,eAAe,SAAS,CAAC,SAAS,GAAG,EAAE,OAAO,IAAI,QAAQ,UAAU;AACpE,eAAe,UAAU,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,QAAQ,UAAU;AACtE,eAAe,WAAW,CAAC,WAAW,GAAG,EAAE,OAAO,IAAI,QAAQ,UAAU;AACxE,eAAe,iBAAiB,CAAC,iBAAiB,GAAG,EAAE,OAAO,IAAI,QAAQ,UAAU;AACpF,eAAe,gBAAgB,CAAC,gBAAgB,GAAG,EAAE,OAAO,IAAI,QAAQ,UAAU;ACVlF,eAAe,YAAY,CAAC,YAAY,GAAG,EAAE,QAAQ,UAAU;AAC/D,eAAe,WAAW,CAAC,WAAW,GAAG,EAAE,QAAQ,UAAU;AAC7D,eAAe,YAAY,CAAC,YAAY,GAAG,EAAE,QAAQ,UAAU;AAC/D,eAAe,WAAW,CAAC,WAAW,GAAG,EAAE,QAAQ,UAAU;AAC7D,eAAe,WAAW,CAAC,WAAW,GAAG,EAAE,QAAQ,UAAU;AAC7D,eAAe,iBAAiB,CAAC,iBAAiB,GAAG,EAAE,QAAQ,UAAU;AACzE,eAAe,WAAW,CAAC,WAAW,GAAG,EAAE,QAAQ,UAAU;AAC7D,eAAe,YAAY,CAAC,YAAY,GAAG,EAAE,QAAQ,UAAU;AAC/D,eAAe,SAAS,CAAC,SAAS,GAAG,EAAE,QAAQ,UAAU;AACzD,eAAe,cAAc,CAAC,cAAc,GAAG,EAAE,QAAQ,UAAU;AACnE,eAAe,gBAAgB,CAAC,gBAAgB,GAAG,EAAE,QAAQ,UAAU;AACvE,eAAe,YAAY,CAAC,YAAY,GAAG,EAAE,QAAQ,UAAU;AAC/D,eAAe,gBAAgB,CAAC,gBAAgB,GAAG,EAAE,QAAQ,UAAU;AACvE,eAAe,qBAAqB,CAAC,qBAAqB,GAAG,EAAE,QAAQ,UAAU;AACjF,eAAe,YAAY,CAAC,YAAY,GAAG,EAAE,QAAQ,UAAU;AAC/D,eAAe,aAAa,CAAC,aAAa,GAAG,EAAE,QAAQ,UAAU;ACfjE,eAAe,SAAS,CAAC,eAAe,GAAG,EAAE,QAAQ,UAAU;AAC/D,eAAe,QAAQ,CAAC,cAAc,GAAG,EAAE,QAAQ,UAAU;AAC7D,eAAe,QAAQ,CAAC,cAAc,GAAG,EAAE,QAAQ,UAAU;AAC7D,eAAe,OAAO,CAAC,kBAAkB,GAAG,EAAE,QAAQ,UAAU;AAChE,eAAe,QAAQ,CAAC,mBAAmB,GAAG,EAAE,QAAQ,UAAU;AAClE,eAAe,iBAAiB,CAAC,iBAAiB,GAAG,EAAE,QAAQ,UAAU;AACzE,eAAe,gBAAgB,CAAC,gBAAgB,GAAG,EAAE,QAAQ,UAAU;AACvE,eAAe,gBAAgB,CAAC,gBAAgB,GAAG,EAAE,QAAQ,UAAU;AACvE,eAAe,SAAS,CAAC,SAAS,GAAG,EAAE,QAAQ,UAAU;ACPzD,eAAe,yBAAyB,CAAC,GAAG,GAAG;AAAA,EAC7C,OAAO;AAAA,EACP,MAAM,MAAM,CAAC,OAAO,SAAS,4BAA4B,CAAA,GAAI,OAAO,CAAC;AAAA,EACrE,QAAQ;AACV,CAAC;AACD,eAAe,yBAAyB,CAAC,GAAG,GAAG;AAAA,EAC7C,OAAO;AAAA,EACP,MAAM,MAAM,CAAC,OAAO,SAAS,4BAA4B,CAAA,GAAI,OAAO,CAAC;AAAA,EACrE,QAAQ;AACV,CAAC;AACD,eAAe,iBAAiB,CAAC,GAAG,GAAG;AAAA,EACrC,OAAO;AAAA,EACP,MAAM,MAAM,CAAC,OAAO,SAAS,2BAA2B,CAAA,GAAI,OAAO,CAAC;AAAA,EACpE,QAAQ;AACV,CAAC;AACD,eAAe,kBAAkB,CAAC,GAAG,GAAG;AAAA,EACtC,OAAO;AAAA,EACP,MAAM,MAAM,CAAC,OAAO,SAAS,qBAAqB,CAAA,GAAI,OAAO,CAAC;AAAA,EAC9D,QAAQ;AACV,CAAC;AACD,eAAe,gBAAgB,CAAC,GAAG,GAAG;AAAA,EACpC,OAAO;AAAA,EACP,MAAM,MAAM,CAAC,OAAO,SAAS,mBAAmB,CAAA,GAAI,OAAO,CAAC;AAAA,EAC5D,QAAQ;AACV,CAAC;AACD,eAAe,sBAAsB,CAAC,GAAG,GAAG;AAAA,EAC1C,OAAO;AAAA,EACP,MAAM,MAAM,CAAC,OAAO,SAAS,yBAAyB,CAAA,GAAI,OAAO,CAAC;AAAA,EAClE,QAAQ;AACV,CAAC;AACD,eAAe,oBAAoB,CAAC,GAAG,GAAG;AAAA,EACxC,OAAO;AAAA,EACP,MAAM,MAAM,CAAC,OAAO,SAAS,uBAAuB,CAAA,GAAI,OAAO,CAAC;AAAA,EAChE,QAAQ;AACV,CAAC;AAGD,eAAe,eAAe,CAAC,GAAG,GAAG;AAAA,EACnC,OAAO;AAAA,EACP,MAAM,MAAM,CAAC,OAAO,SAAS,2CAA2C,CAAA,GAAI,OAAO,CAAC;AAAA,EACpF,QAAQ;AACV,CAAC;AACD,eAAe,iBAAiB,CAAC,GAAG,GAAG;AAAA,EACrC,OAAO;AAAA,EACP,MAAM,MAAM,CAAC,OAAO,SAAS,oCAAoC,CAAA,GAAI,OAAO,CAAC;AAAA,EAC7E,QAAQ;AACV,CAAC;AAGD,eAAe,SAAS,CAAC,GAAG,GAAG;AAAA,EAC7B,OAAO;AAAA,EACP,MAAM,MAAM,CAAC,OAAO,SAAS,SAAS,CAAA,GAAI,OAAO,CAAC;AAAA,EAClD,QAAQ;AACV,CAAC;AACD,eAAe,YAAY,CAAC,GAAG,GAAG;AAAA,EAChC,OAAO;AAAA,EACP,MAAM,MAAM,CAAC,OAAO,SAAS,2BAA2B,CAAA,GAAI,OAAO,CAAC;AAAA,EACpE,QAAQ;AACV,CAAC;AACD,eAAe,aAAa,CAAC,GAAG,GAAG;AAAA,EACjC,OAAO;AAAA,EACP,MAAM,MAAM,CAAC,OAAO,SAAS,4BAA4B,CAAA,GAAI,OAAO,CAAC;AAAA,EACrE,QAAQ;AACV,CAAC;AChED,eAAe,OAAO,CAAC,YAAY,GAAG,EAAE,OAAO,IAAI,QAAQ,aAAa;AACxE,eAAe,OAAO,CAAC,YAAY,GAAG,EAAE,OAAO,IAAI,QAAQ,aAAa;AACxE,eAAe,SAAS,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,QAAQ,aAAa;AACxE,eAAe,QAAQ,CAAC,oCAAoC,GAAG,EAAE,OAAO,IAAI,QAAQ,aAAa;ACKjG,eAAe,UAAU,CAAC,WAAW,GAAG,EAAE,QAAQ,UAAU;AAC5D,eAAe,SAAS,CAAC,UAAU,GAAG,EAAE,QAAQ,UAAU;AAC1D,eAAe,eAAe;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAG,EAAE,QAAQ,UAAU;AACvB,eAAe,aAAa;AAAA,EAC1B;AAAA,EACA;AACF,GAAG,EAAE,QAAQ,UAAU;AACvB,eAAe,QAAQ;AAAA,EACrB;AAAA,EACA;AACF,GAAG,EAAE,QAAQ,UAAU;AACvB,eAAe,UAAU;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAG,EAAE,QAAQ,UAAU;AACvB,eAAe,mBAAmB,CAAC,oBAAoB,GAAG,EAAE,QAAQ,UAAU;AAC9E,eAAe,cAAc,CAAC,eAAe,GAAG,EAAE,QAAQ,UAAU;AACpE,eAAe,gBAAgB,CAAC,iBAAiB,GAAG,EAAE,QAAQ,UAAU;AACxE,eAAe,YAAY,CAAC,aAAa,GAAG,EAAE,QAAQ,UAAU;AAGhE,eAAe,YAAY,CAAC,GAAG,GAAG;AAAA,EAChC,MAAM,MAAM,CAAC,OAAO,kBAAkB,IAAI,CAAA,GAAI,UAAU,CAAC;AAAA,EACzD,QAAQ;AACV,CAAC;ACpCM,SAAS,sBAAsB,MAAqB,OAAe,MAAuB;AAC/F,QAAM,YAAY,SAAS,QAAQ,aAAa;AAChD,SAAO,OAAO,GAAG,IAAI,KAAK,SAAS,IAAI,KAAK,MAAM,IAAI,SAAS,IAAI,KAAK;AAC1E;AAYO,SAAS,aAAa,KAAc,KAAiC;AAC1E,SAAO,IAAI,MAAM,eAAe,GAAG,KAAe,IAAI,MAAM,gBAAgB,GAAG;AACjF;AAKO,SAAS,oBAAoB,QAAgB,KAAmC;AACrF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,OAAO,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;AAAA,IACtC,QAAQ;AAAA,EAAA;AAEZ;AAeO,SAAS,qBAAqB,YAA4B;AAC/D,QAAM,WAAmC;AAAA,IACvC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAET,SAAO,SAAS,UAAU,KAAK,eAAe,UAAU;AAC1D;ACrDA;AAAA,EACE,CAAC,KAAa,YAAqB;AAEjC,UAAM0B,eAAc,QAAQ,MAAM,aAAa,KAAK,QAAQ,OAAO,mBAAmB,KAAK,CAAA;AAC3F,UAAM,iBAAiB,OAAO,KAAKA,YAAW;AAG9C,QAAI,eAAe,SAAS,GAAG,GAAG;AAChC,aAAO;AAAA,IACT;AAGA,QAAI,IAAI,WAAW,MAAM,GAAG;AAC1B,YAAM,iBAAiB,IAAI,QAAQ,QAAQ,EAAE;AAE7C,UAAI,eAAe,SAAS,cAAc,GAAG;AAC3C,eAAO;AAAA,MACT;AAEA,UAAI,WAAW,KAAK,cAAc,GAAG;AACnC,eAAO;AAAA,MACT;AAAA,IACF;AAGA,QAAI,eAAe,KAAK,GAAG,GAAG;AAC5B,aAAO;AAAA,IACT;AAGA,QAAI,eAAe,KAAK,GAAG,GAAG;AAC5B,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EACA;AAAA,EACA,CAAC,KAAqB,YAAqB;AACzC,UAAM,aAAa,IAAI;AAGvB,UAAMA,eAAc,QAAQ,MAAM,aAAa,KAAK,QAAQ,OAAO,mBAAmB,KAAK,CAAA;AAG3F,QAAI,OAAO,KAAKA,YAAW,EAAE,SAAS,UAAU,GAAG;AACjD,UAAI,aAAqB,QAAQ,MAAM,eAAe,UAAU,EAAE,KAClD,qBAAqB,UAAU;AAE/C,UAAI,oBAAoB,KAAK,UAAU,GAAG;AACxC,qBAAa,eAAe,UAAU;AAAA,MACxC;AACA,aAAO,CAAC,OAAO,SAAS,YAAY,CAAA,GAAI,YAAY,CAAC;AAAA,IACvD;AAGA,QAAI,WAAW,WAAW,MAAM,GAAG;AACjC,YAAM,iBAAiB,WAAW,QAAQ,QAAQ,EAAE;AAGpD,UAAI,OAAO,KAAKA,YAAW,EAAE,SAAS,cAAc,GAAG;AACrD,YAAI,aAAa,QAAQ,MAAM,eAAe,cAAc,EAAE,KAC9C,qBAAqB,cAAc;AAGnD,YAAI,WAAW,SAAS,YAAY,GAAG;AACrC,gBAAM,QAAQ,WAAW,MAAM,sBAAsB,IAAI,CAAC;AAC1D,cAAI,OAAO;AACT,yBAAa,YAAY,KAAK;AAAA,UAChC;AAAA,QACF,WAAW,WAAW,SAAS,UAAU,GAAG;AAC1C,gBAAM,QAAQ,WAAW,MAAM,oBAAoB,IAAI,CAAC;AACxD,cAAI,OAAO;AACT,yBAAa,YAAY,KAAK;AAAA,UAChC;AAAA,QACF;AAEA,eAAO,CAAC,OAAO,SAAS,YAAY,CAAA,GAAI,YAAY,CAAC;AAAA,MACvD;AAGA,UAAI,aAAa,KAAK,cAAc,GAAG;AACrC,cAAM,QAAQ,eAAe,MAAM,YAAY,IAAI,CAAC;AACpD,YAAI,OAAO;AACT,iBAAO,CAAC,OAAO,SAAS,YAAY,KAAK,KAAK,IAAI,YAAY,CAAC;AAAA,QACjE;AAAA,MACF;AAAA,IACF;AAGA,QAAI,iBAAiB,KAAK,UAAU,GAAG;AACrC,YAAM,QAAQ,WAAW,MAAM,gBAAgB,IAAI,CAAC;AACpD,UAAI,OAAO;AACT,eAAO,CAAC,OAAO,SAAS,aAAa,KAAK,KAAK,IAAI,YAAY,CAAC;AAAA,MAClE;AAAA,IACF;AAGA,QAAI,iBAAiB,KAAK,UAAU,GAAG;AACrC,YAAM,QAAQ,WAAW,MAAM,gBAAgB,IAAI,CAAC;AACpD,UAAI,OAAO;AACT,eAAO,CAAC,OAAO,SAAS,YAAY,KAAK,KAAK,IAAI,YAAY,CAAC;AAAA,MACjE;AAAA,IACF;AACA,WAAO,CAAA;AAAA,EACT;AACF;AC1GA,MAAM,mBAAmB,CAAC,QAAiB;AACzC,QAAM,OAAO,IAAI,OAAO,UAAU,KAAK;AACvC,QAAM,SAAS,IAAI,OAAO,kBAAkB;AAC5C,QAAM,YAA6D,CAAA;AAEnE,MAAI,SAAS,SAAS;AACpB,cAAU,KAAK,EAAE,MAAM,SAAS,OAAO,gCAAgC;AACvE,QAAI,QAAQ;AACV,YAAM,SAAS,MAAM,QAAQ,MAAM,IAAI,OAAO,KAAK,IAAI,IAAI;AAC3D,gBAAU,KAAK,EAAE,MAAM,YAAY,OAAO,QAAkB;AAAA,IAC9D;AACA,WAAO;AAAA,EACT;AACA,MAAI,SAAS,SAAS;AACpB,QAAI,QAAQ;AACV,YAAM,SAAS,MAAM,QAAQ,MAAM,IAAI,OAAO,KAAK,IAAI,IAAI;AAC3D,gBAAU,KAAK,EAAE,MAAM,YAAY,OAAO,QAAkB;AAC5D,aAAO;AAAA,IACT;AACA,cAAU,KAAK,EAAE,MAAM,YAAY,OAAO,SAAS;AACnD,WAAO;AAAA,EACT;AACA,YAAU,KAAK,EAAE,MAAM,YAAY,OAAO,SAAS;AACnD,SAAO;AACT;AAEA;AAAA,EACE,CAAC,QAAgB,QAAQ;AAAA,EACzB;AAAA;AAAA,EACA,CAAC,MAAsB,QAAiB;AACtC,UAAM,YAAY,iBAAiB,GAAG;AAEtC,UAAM,SAAoB,CAAA;AAE1B,cAAU,QAAQ,CAAC,QAAQ;AACzB,UAAI,IAAI,SAAS,SAAS;AACxB,cAAM,aAAa,OAAO,SAAS,IAAI,OAAO,CAAA,GAAI,MAAM;AACxD,eAAO,KAAK,UAAU;AAAA,MACxB,OAAO;AACL,cAAM,WAAW,KAAK,IAAI,OAAO,CAAA,GAAI,MAAM;AAC3C,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AACF;AC3CA;AAAA,EACE,CAAC,QAAgB,iCAAiC,KAAK,GAAG;AAAA,EAC1D;AAAA,EACA,CAAC,KAAqB,YAAqB;AACzC,UAAM,iBAAiB,iCAAiC,KAAK,IAAI,IAAI;AACrE,QAAI,gBAAgB;AAClB,YAAM,OAAO,eAAe,CAAC;AAC7B,YAAM,SAAS;AACf,aAAO,CAAC,oBAAoB,QAAQ,CAAA,CAAE,CAAC;AAAA,IACzC;AACA,WAAO,CAAA;AAAA,EACT;AACF;AAGA;AAAA,EACE,CAAC,QAAgB,+CAA+C,KAAK,GAAG;AAAA,EACxE;AAAA,EACA,CAAC,KAAqB,YAAqB;AACzC,UAAM,qBAAqB,+CAA+C,KAAK,IAAI,IAAI;AACvF,QAAI,oBAAoB;AACtB,YAAM,CAAA,EAAG,MAAM,IAAI,IAAI;AACvB,YAAM,SAAS,sBAAsB,OAAO,MAAM,IAAI;AACtD,aAAO,CAAC,oBAAoB,QAAQ,CAAA,CAAE,CAAC;AAAA,IACzC;AACA,WAAO,CAAA;AAAA,EACT;AACF;AAGA;AAAA,EACE,CAAC,QAAgB,yCAAyC,KAAK,GAAG;AAAA,EAClE;AAAA,EACA,CAAC,KAAqB,YAAqB;AACzC,UAAM,iBAAiB,yCAAyC,KAAK,IAAI,IAAI;AAC7E,QAAI,gBAAgB;AAClB,YAAM,CAAA,EAAG,MAAM,IAAI,IAAI;AACvB,YAAM,YAAY,aAAa,SAAS,IAAI,KAAK;AACjD,YAAM,SAAS,sBAAsB,OAAO,WAAW,IAAI;AAC3D,aAAO,CAAC,oBAAoB,QAAQ,CAAA,CAAE,CAAC;AAAA,IACzC;AACA,WAAO,CAAA;AAAA,EACT;AACF;AAGA;AAAA,EACE,CAAC,QAAgB,uBAAuB,KAAK,GAAG;AAAA,EAChD;AAAA,EACA,CAAC,KAAqB,YAAqB;AACzC,UAAM,iBAAiB,uBAAuB,KAAK,IAAI,IAAI;AAC3D,QAAI,gBAAgB;AAClB,YAAM,OAAO,eAAe,CAAC;AAC7B,YAAM,YAAY,aAAa,SAAS,IAAI,KAAK;AACjD,YAAM,SAAS,sBAAsB,OAAO,SAAS;AACrD,aAAO,CAAC,oBAAoB,QAAQ,CAAA,CAAE,CAAC;AAAA,IACzC;AACA,WAAO,CAAA;AAAA,EACT;AACF;AAGA;AAAA,EACE,CAAC,QAAgB,2BAA2B,KAAK,GAAG;AAAA,EACpD;AAAA,EACA,CAAC,KAAqB,YAAqB;AACzC,UAAM,iBAAiB,2BAA2B,KAAK,IAAI,IAAI;AAC/D,QAAI,gBAAgB;AAClB,YAAM,OAAO,eAAe,CAAC;AAC7B,YAAM,YAAY,aAAa,SAAS,IAAI,KAAK;AACjD,YAAM,SAAS,sBAAsB,OAAO,SAAS;AACrD,aAAO,CAAC,oBAAoB,QAAQ,CAAA,CAAE,CAAC;AAAA,IACzC;AACA,WAAO,CAAA;AAAA,EACT;AACF;AAGA;AAAA,EACE,CAAC,QAAgB,sBAAsB,KAAK,GAAG;AAAA,EAC/C;AAAA,EACA,CAAC,KAAqB,YAAqB;AACzC,UAAM,iBAAiB,wBAAwB,KAAK,IAAI,IAAI;AAC5D,QAAI,gBAAgB;AAClB,YAAM,CAAA,EAAG,MAAM,KAAK,IAAI;AACxB,YAAM,SAAS,sBAAsB,MAAuB,KAAK;AACjE,aAAO,CAAC,oBAAoB,QAAQ,CAAA,CAAE,CAAC;AAAA,IACzC;AACA,WAAO,CAAA;AAAA,EACT;AACF;AAGA;AAAA,EACE,CAAC,QAAgB,wCAAwC,KAAK,GAAG;AAAA,EACjE;AAAA,EACA,CAAC,KAAqB,YAAqB;AACzC,UAAM,sBAAsB,0CAA0C,KAAK,IAAI,IAAI;AACnF,QAAI,qBAAqB;AACvB,YAAM,GAAG,MAAM,OAAO,IAAI,IAAI;AAC9B,YAAM,SAAS,sBAAsB,MAAuB,OAAO,IAAI;AACvE,aAAO,CAAC,oBAAoB,QAAQ,CAAA,CAAE,CAAC;AAAA,IACzC;AACA,WAAO,CAAA;AAAA,EACT;AACF;AC/GA;AAAA,EACE,CAAC,QAAgB,eAAe,KAAK,GAAG;AAAA,EACxC,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,iBAAiB,KAAK,IAAI,IAAI;AAExC,QAAI,KAAK,EAAE,CAAC,EAAE,WAAW,GAAG,GAAG;AAC7B,aAAO;AAAA,QACL,UAAU,SAAS,EAAE,CAAC,CAAC;AAAA,QACvB,SAAS;AAAA,QACT,cAAc;AAAA,QACd,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAEA,WAAO,IAAI;AAAA,MACT,UAAU,SAAS,EAAE,CAAC,CAAC;AAAA,MACvB,SAAS;AAAA,MACT,cAAc;AAAA,MACd,QAAQ;AAAA,IAAA,IACN;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;ACzBA;AAAA,EACE,CAAC,QAAgB,eAAe,KAAK,GAAG;AAAA,EACxC,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,iBAAiB,KAAK,IAAI,IAAI;AACxC,QAAI,GAAG;AAEL,UAAI,EAAE,CAAC,EAAE,WAAW,GAAG,GAAG;AACxB,eAAO;AAAA,UACL,UAAU,SAAS,EAAE,CAAC,CAAC;AAAA,UACvB,SAAS;AAAA,UACT,cAAc;AAAA,UACd,QAAQ;AAAA,QAAA;AAAA,MAEZ;AAEA,aAAO;AAAA,QACL,UAAU,UAAU,EAAE,CAAC,CAAC;AAAA,QACxB,SAAS;AAAA,QACT,cAAc;AAAA,QACd,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAEA,WAAO;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AACF;AAGA;AAAA,EACE,CAAC,QAAgB,QAAQ,KAAK,GAAG;AAAA,EACjC,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,aAAa,KAAK,IAAI,IAAI;AACpC,WAAO;AAAA,MACL,UAAU,IAAI,UAAU,EAAE,CAAC,CAAC,MAAM;AAAA,MAClC,SAAS;AAAA,MACT,cAAc;AAAA,MACd,QAAQ;AAAA,IAAA;AAAA,EAEZ;AACF;AC1CA;AAAA,EACE,CAAC,QAAQ,QAAQ;AAAA,EACjB,CAAC,EAAE,UAAU,eAAe,mBAAmB;AAC7C,UAAM,WAAW,CAAC,gBAAgB,aAAa,WAAW;AAC1D,WAAO;AAAA,MACL,UAAU,QAAQ,gBAAgB,aAAa,CAAC;AAAA,MAChD,SAAS;AAAA,MACT,cAAc,WAAW,SAAS;AAAA,MAClC,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;AAEA;AAAA,EACE,CAAC,QAAQ,QAAQ;AAAA,EACjB,CAAC,EAAE,UAAU,oBAAoB;AAC/B,WAAO;AAAA,MACL,UAAU,QAAQ,gBAAgB,aAAa,CAAC;AAAA,MAChD,SAAS;AAAA,MACT,cAAc;AAAA,MACd,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;ACzBA;AAAA,EACE,CAAC,QAAgB,WAAW,KAAK,GAAG;AAAA,EACpC,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,aAAa,KAAK,IAAI,IAAI;AACpC,QAAI,CAAC,EAAG,QAAO,EAAE,SAAA;AACjB,UAAM,QAAQ,EAAE,CAAC,EAAE,KAAA;AAEnB,QAAI,yBAAyB,KAAK,KAAK,GAAG;AACxC,aAAO,EAAE,UAAU,KAAK,KAAK,KAAK,cAAc,QAAQ,QAAQ,YAAA;AAAA,IAClE;AAEA,QAAI,UAAU,OAAO;AACnB,aAAO,EAAE,UAAU,GAAG,KAAK,IAAI,cAAc,cAAc,QAAQ,OAAA;AAAA,IACrE;AAEA,QAAI,MAAM,WAAW,GAAG,GAAG;AACzB,aAAO,EAAE,UAAU,GAAG,KAAK,IAAI,cAAc,QAAQ,QAAQ,SAAA;AAAA,IAC/D;AAEA,WAAO,EAAE,UAAU,GAAG,KAAK,KAAK,QAAQ,cAAc,QAAQ,QAAQ,OAAA;AAAA,EACxE;AAAA,EACA;AACF;ACtBA;AAAA,EACE,CAAC,QAAgB,SAAS,KAAK,GAAG;AAAA,EAClC,CAAC,EAAE,UAAU,UAAU;AAErB,UAAM,UAAU,4CAA4C,KAAK,IAAI,IAAI;AACzE,QAAI,SAAS;AACX,YAAM,MAAM,QAAQ,CAAC;AACrB,YAAM,QAAQ,QAAQ,CAAC,KAAK;AAC5B,aAAO;AAAA,QACL,UAAU,UAAU,GAAG,KAAK,KAAK;AAAA,QACjC,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAEA,UAAM,KAAK,yBAAyB,KAAK,IAAI,IAAI;AACjD,QAAI,IAAI;AACN,YAAM,MAAM,GAAG,CAAC;AAChB,aAAO;AAAA,QACL,UAAU,UAAU,GAAG;AAAA,QACvB,QAAQ;AAAA,MAAA;AAAA,IAEZ;AACA,WAAO;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;AAEA;AAAA,EACE,CAAC,QAAgB,IAAI,WAAW,MAAM;AAAA,EACtC,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,SAAS,IAAI,KAAK,QAAQ,QAAQ,EAAE;AAC1C,QAAI,OAAO,WAAW,GAAG,GAAG;AAC1B,YAAM,QAAQ,OAAO,MAAM,GAAG,EAAE;AAEhC,UAAI,yBAAyB,KAAK,KAAK,GAAG;AACxC,eAAO;AAAA,UACL,UAAU,UAAU,KAAK;AAAA,UACzB,QAAQ;AAAA,QAAA;AAAA,MAEZ,OAAO;AAEL,eAAO;AAAA,UACL,UAAU,SAAS,KAAK;AAAA,UACxB,QAAQ;AAAA,QAAA;AAAA,MAEZ;AAAA,IACF,OAAO;AAEL,aAAO;AAAA,QACL,UAAU,UAAU,MAAM;AAAA,QAC1B,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAAA,EACF;AAAA,EACA;AACF;AAGA;AAAA,EACE,CAAC,QAAgB,SAAS,KAAK,GAAG;AAAA,EAClC,CAAC,EAAE,UAAU,UAAU;AAGrB,UAAM,UAAU,4CAA4C,KAAK,IAAI,IAAI;AACzE,QAAI,SAAS;AACX,YAAM,MAAM,QAAQ,CAAC;AACrB,YAAM,QAAQ,QAAQ,CAAC,KAAK;AAC5B,aAAO;AAAA,QACL,UAAU,UAAU,GAAG,KAAK,KAAK;AAAA,QACjC,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAEA,UAAM,KAAK,yBAAyB,KAAK,IAAI,IAAI;AACjD,QAAI,IAAI;AACN,YAAM,MAAM,GAAG,CAAC;AAChB,aAAO;AAAA,QACL,UAAU,UAAU,GAAG;AAAA,QACvB,QAAQ;AAAA,MAAA;AAAA,IAEZ;AACA,WAAO;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;AC1FA;AAAA,EACE,CAAC,QAAgB,cAAc,KAAK,GAAG;AAAA,EACvC,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,IAAI,KAAK,MAAM,aAAa,IAAI,CAAC;AAC3C,WAAO,IAAI;AAAA,MACT,UAAU,eAAe,CAAC;AAAA,MAC1B,QAAQ;AAAA,IAAA,IACN;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;AACA;AAAA,EACE,CAAC,QAAgB,mBAAmB,KAAK,GAAG;AAAA,EAC5C,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,IAAI,KAAK,MAAM,kBAAkB,IAAI,CAAC;AAChD,WAAO,IAAI;AAAA,MACT,UAAU,oBAAoB,CAAC;AAAA,MAC/B,QAAQ;AAAA,IAAA,IACN;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;AACA;AAAA,EACE,CAAC,QAAgB,sBAAsB,KAAK,GAAG;AAAA,EAC/C,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,IAAI,KAAK,MAAM,qBAAqB,IAAI,CAAC;AACnD,WAAO,IAAI;AAAA,MACT,UAAU,iBAAiB,CAAC;AAAA,MAC5B,QAAQ;AAAA,IAAA,IACN;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;AACA;AAAA,EACE,CAAC,QAAgB,2BAA2B,KAAK,GAAG;AAAA,EACpD,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,IAAI,KAAK,MAAM,0BAA0B,IAAI,CAAC;AACxD,WAAO,IAAI;AAAA,MACT,UAAU,sBAAsB,CAAC;AAAA,MACjC,QAAQ;AAAA,IAAA,IACN;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;ACvDA;AAAA,EACE,CAAC,QAAgB,cAAc,KAAK,GAAG;AAAA,EACvC,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,gBAAgB,KAAK,IAAI,IAAI;AACvC,WAAO,IAAI;AAAA,MACT,UAAU,QAAQ,EAAE,CAAC,CAAC;AAAA,MACtB,QAAQ;AAAA,IAAA,IACN;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;AACA;AAAA,EACE,CAAC,QAAgB,iBAAiB,KAAK,GAAG;AAAA,EAC1C,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,mBAAmB,KAAK,IAAI,IAAI;AAC1C,WAAO,IAAI;AAAA,MACT,UAAU,WAAW,EAAE,CAAC,CAAC;AAAA,MACzB,QAAQ;AAAA,IAAA,IACN;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;ACxBA;AAAA,EACE,CAAC,QAAgB,oBAAoB,KAAK,GAAG;AAAA,EAC7C;AAAA,EACA,CAAC,QAAQ;AACP,UAAM,IAAI,sBAAsB,KAAK,IAAI,IAAI;AAC7C,QAAI,GAAG;AACL,aAAO,CAAC,OAAO,YAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAAA,GAAI,UAAU,CAAC;AAAA,IACzD;AACA,WAAO,CAAA;AAAA,EACT;AACF;AAGA;AAAA,EACE,CAAC,QAAgB,iBAAiB,KAAK,GAAG;AAAA,EAC1C;AAAA,EACA,CAAC,QAAQ;AACP,UAAM,IAAI,mBAAmB,KAAK,IAAI,IAAI;AAC1C,WAAO,IAAI,CAAC,OAAO,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA;AAAA,EAC3C;AACF;AAGA;AAAA,EACE,CAAC,QAAgB,iBAAiB,KAAK,GAAG;AAAA,EAC1C;AAAA,EACA,CAAC,QAAQ;AACP,UAAM,IAAI,mBAAmB,KAAK,IAAI,IAAI;AAC1C,WAAO,IAAI,CAAC,OAAO,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA;AAAA,EAC3C;AACF;ACjCA;AAAA,EACE,CAAC,QAAgB,eAAe,KAAK,GAAG;AAAA,EACxC,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,eAAe,KAAK,IAAI,IAAI;AAEtC,QAAI,IAAI,CAAC,EAAE,WAAW,GAAG,KAAK,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AAClD,YAAM,QAAQ,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,MAAM,EAAE;AAClD,aAAO;AAAA,QACL,UAAU,0BAA0B,KAAK;AAAA,QACzC,cAAc;AAAA,QACd,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAEA,QAAI,IAAI,CAAC,GAAG,WAAW,MAAM,GAAG;AAC9B,YAAM,UAAU,6BAA6B,KAAK,IAAI,CAAC,CAAC;AACxD,UAAI,SAAS;AACX,cAAM,QAAQ,QAAQ,CAAC;AACvB,eAAO;AAAA,UACL,UAAU,+BAA+B,KAAK;AAAA,UAC9C,QAAQ;AAAA,QAAA;AAAA,MAEZ;AACA,aAAO;AAAA,QACL,UAAU,+BAA+B,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,QAC5D,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAEA,QAAI,IAAI,CAAC,GAAG,WAAW,OAAO,GAAG;AAC/B,YAAM,UAAU,4CAA4C,KAAK,IAAI,CAAC,CAAC;AACvE,UAAI,SAAS;AACX,cAAM,QAAQ,QAAQ,CAAC;AACvB,YAAI,QAAQ,CAAC,GAAG;AACd,iBAAO;AAAA,YACL,UAAU,4BAA4B,KAAK,KAAK,QAAQ,CAAC,CAAC;AAAA,YAC1D,QAAQ;AAAA,UAAA;AAAA,QAEZ,OAAO;AACL,iBAAO;AAAA,YACL,UAAU,4BAA4B,KAAK;AAAA,YAC3C,QAAQ;AAAA,UAAA;AAAA,QAEZ;AAAA,MACF;AAAA,IACF;AAEA,WAAO,IAAI;AAAA,MACT,UAAU,uBAAuB,EAAE,CAAC,CAAC;AAAA,MACrC,cAAc;AAAA,MACd,QAAQ;AAAA,IAAA,IACN;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;AAEA;AAAA,EACE,CAAC,QAAgB,cAAc,KAAK,GAAG;AAAA,EACvC,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,cAAc,KAAK,IAAI,IAAI;AAErC,QAAI,IAAI,CAAC,EAAE,WAAW,GAAG,KAAK,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AAClD,YAAM5B,SAAQ,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,MAAM,EAAE;AAClD,aAAO;AAAA,QACL,UAAU,yBAAyBA,MAAK;AAAA,QACxC,cAAc;AAAA,QACd,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAEA,UAAM,QAAQ,IAAI,CAAC;AAInB,QAAI,OAAO,WAAW,MAAM,GAAG;AAC7B,aAAO;AAAA,QACL,UAAU,2BAA2B,MAAM,MAAM,CAAC,CAAC;AAAA,QACnD,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAEA,QAAI,OAAO,WAAW,MAAM,GAAG;AAC7B,aAAO;AAAA,QACL,UAAU,2BAA2B,MAAM,MAAM,CAAC,CAAC;AAAA,QACnD,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAEA,QAAI,OAAO,WAAW,OAAO,GAAG;AAE9B,UAAI,UAAU,yBAAyB,KAAK,KAAK;AACjD,UAAI,SAAS;AACX,cAAM,MAAM,QAAQ,CAAC;AACrB,eAAO;AAAA,UACL,UAAU,2BAA2B,GAAG;AAAA,UACxC,QAAQ;AAAA,QAAA;AAAA,MAEZ;AAEA,gBAAU,4CAA4C,KAAK,KAAK;AAChE,UAAI,SAAS;AACX,cAAM,MAAM,QAAQ,CAAC;AACrB,cAAMA,SAAQ,QAAQ,CAAC;AAEvB,YAAI,QAAQ,CAAC,GAAG;AACd,iBAAO;AAAA,YACL,UAAU,2BAA2B,GAAG,KAAKA,MAAK;AAAA,YAClD,QAAQ;AAAA,UAAA;AAAA,QAEZ,OAAO;AACL,iBAAO;AAAA,YACL,UAAU,2BAA2B,GAAG;AAAA,YACxC,QAAQ;AAAA,UAAA;AAAA,QAEZ;AAAA,MACF;AAAA,IACF;AAEA,WAAO,IAAI;AAAA,MACT,UAAU,sBAAsB,KAAK;AAAA,MACrC,QAAQ;AAAA,IAAA,IACN;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;AAGA;AAAA,EACE,CAAC,QAAgB,gBAAgB,KAAK,GAAG;AAAA,EACzC,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,gBAAgB,KAAK,IAAI,IAAI;AAEvC,QAAI,IAAI,CAAC,EAAE,WAAW,GAAG,KAAK,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AAClD,aAAO;AAAA,QACL,UAAU,gBAAgB,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,QAC3C,cAAc;AAAA,QACd,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAEA,WAAO,IAAI;AAAA,MACT,UAAU,WAAW,EAAE,CAAC,CAAC;AAAA,MACzB,QAAQ;AAAA,IAAA,IACN;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;AACA;AAAA,EACE,CAAC,QAAgB,eAAe,KAAK,GAAG;AAAA,EACxC,CAAC,EAAE,UAAU,UAAU;AACrB,UAAM,IAAI,eAAe,KAAK,IAAI,IAAI;AAEtC,QAAI,IAAI,CAAC,EAAE,WAAW,GAAG,KAAK,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AAClD,aAAO;AAAA,QACL,UAAU,mBAAmB,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,QAC9C,cAAc;AAAA,QACd,QAAQ;AAAA,MAAA;AAAA,IAEZ;AACA,WAAO,IAAI;AAAA,MACT,UAAU,cAAc,EAAE,CAAC,CAAC;AAAA,MAC5B,QAAQ;AAAA,IAAA,IACN;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA;AACF;ACnKO,MAAM,sBAAsB;AAAA,EAUjC,YACE,gBACA,uBAA+B,IAC/B,gBAAwB,4BACxB;AAbF,SAAQ,aAA+B,CAAA;AACvC,SAAQ,yCAAsD,IAAA;AAC9D,SAAQ,mBAAmB;AAC3B,SAAQ,uBAAuB;AAE/B,SAAQ,0CAA0B,IAAA;AAClC,SAAQ,kDAAkC,IAAA;AAC1C,SAAQ,gBAAgB;AAOtB,SAAK,iBAAiB;AACtB,SAAK,uBAAuB;AAC5B,SAAK,gBAAgB;AAErB,SAAK,2BAAA;AAAA,EACP;AAAA,EAEQ,6BAA6B;AACnC,SAAK,mBAAA;AAAA,EACP;AAAA,EAEQ,2BAA2B,UAAkB;AACnD,UAAM,eAA+B;AAAA,MACnC,IAAI,KAAK,gBAAgB,IAAI,QAAQ;AAAA,MACrC,QAAQ,CAAA;AAAA,MACR,cAAc,SAAS,cAAc,OAAO;AAAA,IAAA;AAI9C,iBAAa,aAAa,KAAK,aAAa;AAC5C,iBAAa,aAAa,aAAa,gBAAgB,WAAW;AAClE,iBAAa,aAAa,aAAa,iBAAiB,QAAQ;AAGhE,SAAK,eAAe,YAAY,aAAa,YAAY;AAEzD,SAAK,mBAAmB,IAAI,UAAU,YAAY;AAElD,WAAO;AAAA,EACT;AAAA,EAEQ,qBAAqB;AAC3B,UAAM,eAA+B;AAAA,MACnC,IAAI,KAAK,gBAAgB,IAAI,KAAK,kBAAkB;AAAA,MACpD,QAAQ,CAAA;AAAA,MACR,cAAc,SAAS,cAAc,OAAO;AAAA,IAAA;AAE9C,SAAK,WAAW,KAAK,YAAY;AAGjC,iBAAa,aAAa,KAAK,aAAa;AAC5C,iBAAa,aAAa,aAAa,gBAAgB,WAAW;AAClE,iBAAa,aAAa;AAAA,MACxB;AAAA,MACA,KAAK,iBAAiB,SAAA;AAAA,IAAS;AAIjC,SAAK,eAAe,YAAY,aAAa,YAAY;AAEzD,WAAO;AAAA,EACT;AAAA,EAEA,QAAQK,OAAc;AACpB,WAAO,KAAK,oBAAoB,IAAIA,KAAI;AAAA,EAC1C;AAAA,EAEA,gBAAgBA,OAAc,UAAkB;AAC9C,WAAO,KAAK,4BAA4B,IAAIA,KAAI,MAAM;AAAA,EACxD;AAAA,EAEA,aAAaA,OAAc,gBAAwB;AACjD,SAAK,oBAAoB,IAAIA,OAAM,cAAc;AAAA,EACnD;AAAA,EAEA,qBAAqBA,OAAc,UAAkB;AACnD,SAAK,4BAA4B,IAAIA,OAAM,QAAQ;AAAA,EACrD;AAAA,EAEA,IAAI,mBAAmB;AACrB,WAAO,KAAK,WAAW,KAAK,WAAW,SAAS,CAAC;AAAA,EACnD;AAAA,EAEA,qBAAqB,UAAkB;AACrC,WAAO,KAAK,mBAAmB,IAAI,QAAQ;AAAA,EAC7C;AAAA,EAEA,wBAAiC;AAC/B,WAAO,CAAC,GAAG,KAAK,YAAY,GAAG,KAAK,mBAAmB,OAAA,CAAQ,EAC5D,KAAK,CAAA,cAAa,CAAC,UAAU,aAAa,WAAW;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,cAAcA,OAAsB;AAE1C,UAAM,UAAUA,MAAK,QAAQ,SAAS,KAAK;AAE3C,WAAO;AAAA,EACT;AAAA,EAEA,QAAQA,OAAc;AACpB,QAAI,KAAK,QAAQA,KAAI,GAAG;AACtB,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,iBAAiB,OAAO,UAAU,KAAK,sBAAsB;AACpE,WAAK,mBAAA;AAAA,IACP;AAEA,UAAM,mBAAmB,KAAK;AAC9B,UAAM,iBAAiB,KAAK,WAAW,SAAS;AAEhD,QAAI;AAEF,YAAM,QAAQ,iBAAiB,aAAa;AAC5C,UAAI,OAAO;AACT,cAAM,WAAW,KAAK,cAAcA,KAAI,GAAG,MAAM,SAAS,MAAM;AAAA,MAClE,OAAO;AAEL,yBAAiB,aAAa,eAAeA,QAAO;AAAA,MACtD;AAGA,WAAK,aAAaA,OAAM,cAAc;AACtC,uBAAiB,OAAO,KAAKA,KAAI;AAEjC,aAAO;AAAA,IACT,SAAS,OAAO;AAEd,cAAQ;AAAA,QACN,kDAAkDA,KAAI;AAAA,QACtD;AAAA,MAAA;AAEF,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,gBAAgBA,OAAc,UAAkB;AAC9C,QAAI,KAAK,gBAAgBA,OAAM,QAAQ,GAAG;AACxC,aAAO;AAAA,IACT;AAEA,QAAI,oBAAoB,KAAK,qBAAqB,QAAQ;AAC1D,QAAI,CAAC,mBAAmB;AACtB,0BAAoB,KAAK,2BAA2B,QAAQ;AAAA,IAC9D;AAEA,QAAI;AACF,YAAM,QAAQ,kBAAkB,aAAa;AAC7C,UAAI,OAAO;AACT,cAAM,WAAW,KAAK,cAAcA,KAAI,GAAG,MAAM,SAAS,MAAM;AAAA,MAClE,OAAO;AACL,0BAAkB,aAAa,eAAeA,QAAO;AAAA,MACvD;AAAA,IACF,SAAS,OAAO;AAEd,cAAQ;AAAA,QACN,8DAA8D,QAAQ,IAAIA,KAAI;AAAA,QAC9E;AAAA,MAAA;AAEF,aAAO;AAAA,IACT;AAEA,SAAK,qBAAqBA,OAAM,QAAQ;AACxC,sBAAkB,OAAO,KAAKA,KAAI;AAElC,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,OAAiB;AAC5B,QAAI,oBAAoB,KAAK,qBAAqB,MAAM;AACxD,QAAI,CAAC,mBAAmB;AACtB,0BAAoB,KAAK,2BAA2B,MAAM;AAAA,IAC5D;AAEA,QAAI;AAEF,YAAM,QAAQ,kBAAkB,aAAa;AAE7C,iBAAWA,SAAQ,OAAO;AACxB,YAAI,OAAO;AACT,gBAAM,WAAW,KAAK,cAAcA,KAAI,GAAG,MAAM,SAAS,MAAM;AAAA,QAClE,OAAO;AACL,4BAAkB,aAAa,eAAeA,QAAO;AAAA,QACvD;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AAEd,cAAQ;AAAA,QACN,mEAAmE,MAAM,KAAK,IAAI,CAAC;AAAA,QACnF;AAAA,MAAA;AAEF,aAAO,EAAE,SAAS,GAAG,QAAQ,MAAM,OAAA;AAAA,IACrC;AAEA,WAAO,EAAE,SAAS,MAAM,QAAQ,QAAQ,EAAA;AAAA,EAC1C;AAAA,EAEA,SAAS,OAAiC;AACxC,QAAI,UAAU;AACd,QAAI,SAAS;AAQb,eAAWA,SAAQ,OAAO;AACxB,YAAM,eAAe,iBAAiB,IAAIA,MAAK,GAAG;AAClD,YAAM,WAAW,cAAc,SAAS;AAExC,UAAI,UAAU;AACZ,mBAAW,OAAOA,MAAK,SAAS;AAC9B,eAAK,gBAAgB,KAAK,QAAQ;AAAA,QACpC;AAAA,MACF,OAAO;AACL,mBAAW,OAAOA,MAAK,SAAS;AAC9B,cAAI,KAAK,QAAQ,GAAG,GAAG;AACrB;AAAA,UACF,OAAO;AACL;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO,EAAE,SAAS,OAAA;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkBA,OAAqC;AACrD,UAAM,iBAAiB,KAAK,oBAAoB,IAAIA,KAAI;AACxD,QAAI,mBAAmB,UAAa,KAAK,WAAW,cAAc,GAAG;AACnE,aAAO,KAAK,WAAW,cAAc;AAAA,IACvC;AAEA,UAAM,oBAAoB,KAAK,4BAA4B,IAAIA,KAAI;AACnE,QAAI,sBAAsB,QAAW;AACnC,aAAO,KAAK,mBAAmB,IAAI,iBAAiB,KAAK;AAAA,IAC3D;AAEA,WAAO;AAAA,EACT;AAAA,EAGA,kBAAkB,UAAkB,aAAqB;AACvD,UAAM,YAAY,KAAK,qBAAqB,QAAQ;AACpD,QAAI,WAAW;AACb,gBAAU,aAAa,cAAc;AAAA,IACvC,OAAO;AACL,YAAM,eAAe,KAAK,2BAA2B,QAAQ;AAE7D,cAAQ,IAAI,+DAA+D,QAAQ,EAAE;AACrF,mBAAa,aAAa,cAAc;AAAA,IAC1C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,UAAgB;AAEd,SAAK,WAAW,QAAQ,CAAC,cAAc;AACrC,UAAI,UAAU,aAAa,YAAY;AACrC,kBAAU,aAAa,WAAW,YAAY,UAAU,YAAY;AAAA,MACtE;AAAA,IACF,CAAC;AAED,SAAK,mBAAmB,QAAQ,CAAC,cAAc;AAC7C,UAAI,UAAU,aAAa,YAAY;AACrC,kBAAU,aAAa,WAAW,YAAY,UAAU,YAAY;AAAA,MACtE;AAAA,IACF,CAAC;AAGD,SAAK,aAAa,CAAA;AAClB,SAAK,mBAAmB,MAAA;AACxB,SAAK,mBAAmB;AACxB,SAAK,oBAAoB,MAAA;AACzB,SAAK,4BAA4B,MAAA;AAAA,EACnC;AACF;ACtTO,SAAS,mBAAmB,WAAwB;AACvD,MAAI,CAAC,UAAW,QAAO;AAEvB,MAAI,qBAAqB,mBAAmB;AAC1C,WAAO,UAAU,QAAQ,SAAA;AAAA,EAC3B;AAEA,SAAO,UAAU,SAAA;AACnB;AAEK,SAAS,uBAAuB,WAA0B;AAC7D,MAAI,CAAC,UAAW,QAAO,CAAA;AACvB,SAAO,mBAAmB,SAAS,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO;AACpE;ACMO,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBxB,YAAY,mBAAsCwB,iBAAiC;AAdnF,SAAQ,WAAoC;AAe1C,SAAK,oBAAoB;AACzB,SAAK,iBAAiBA;AAAAA,EACxB;AAAA,EAEA,UAAU,QAAiC;AACzC,SAAK,oBAAoB;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,QAAQ,OAAoB,SAAS,MAAM,SAAsE;AAC/G,QAAI,OAAO,WAAW,aAAa;AAEjC,aAAO,IAAI,iBAAiB,MAAM;AAAA,MAAC,CAAC;AAAA,IACtC;AAEA,QAAI,KAAK,UAAU;AACjB,WAAK,SAAS,WAAA;AAAA,IAChB;AAEA,SAAK,WAAW,IAAI,iBAAiB,CAAC,cAAc;AAClD,YAAM,iCAAiB,IAAA;AAEvB,gBAAU,QAAQ,CAAA,aAAY;AAE5B,YAAI,SAAS,SAAS,gBAAgB,SAAS,kBAAkB,SAAS;AACxE,gBAAM,SAAS,SAAS;AACxB,cAAI,OAAO,WAAW;AAGpB,kBAAM,UAAU,uBAAuB,OAAO,SAAS;AACvD,oBAAQ,QAAQ,CAAA,QAAO;AACrB,kBAAI,CAAC,KAAK,kBAAkB,YAAY,GAAG,GAAG;AAC5C,2BAAW,IAAI,GAAG;AAAA,cACpB;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAGA,YAAI,SAAS,SAAS,aAAa;AACjC,mBAAS,WAAW,QAAQ,CAAA,SAAQ;AAClC,gBAAI,gBAAgB,SAAS;AAC3B,mBAAK,eAAe,MAAM,UAAU;AAEpC,mBAAK,iBAAiB,SAAS,EAAE,QAAQ,CAAA,OAAM;AAC7C,qBAAK,eAAe,IAAI,UAAU;AAAA,cACpC,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAGD,UAAI,WAAW,OAAO,GAAG;AACvB,cAAM,eAAe,MAAM,KAAK,UAAU;AAG1C,cAAM,UAAU,KAAK,kBAAkB,eAAe,YAAY;AAElE,aAAK,gBAAgB,kBAAkB,OAAO;AAAA,MAChD;AAAA,IACF,CAAC;AAED,SAAK,SAAS,QAAQ,MAAM;AAAA,MAC1B,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,iBAAiB,CAAC,OAAO;AAAA,MACzB,WAAW;AAAA,IAAA,CACZ;AAGD,QAAI,SAAS,MAAM;AACjB,WAAK,oBAAoB,MAAM,OAAO;AAAA,IACxC;AAEA,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKQ,oBAAoB,MAAmB,SAA0C;AACvF,UAAM,sCAAsB,IAAA;AAG5B,QAAI,KAAK,WAAW;AAClB,YAAM,UAAU,uBAAuB,KAAK,SAAS;AACrD,cAAQ,QAAQ,CAAA,QAAO;AACrB,YAAI,CAAC,KAAK,kBAAkB,YAAY,GAAG,GAAG;AAC5C,0BAAgB,IAAI,GAAG;AAAA,QACzB;AAAA,MACF,CAAC;AAAA,IACH;AAGA,UAAM,oBAAoB,KAAK,iBAAiB,SAAS;AAEzD,eAAW,MAAM,mBAAmB;AAClC,UAAI,GAAG,WAAW;AAGhB,cAAM,UAAU,uBAAuB,GAAG,SAAS;AAGnD,mBAAW,OAAO,SAAS;AACzB,cAAI,CAAC,KAAK,kBAAkB,YAAY,GAAG,GAAG;AAC5C,4BAAgB,IAAI,GAAG;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAIA,QAAI,gBAAgB,OAAO,GAAG;AAE5B,YAAM,UAAU,MAAM,KAAK,eAAe;AAC1C,YAAM,UAAU,KAAK,kBAAkB,eAAe,OAAO;AAE7D,YAAM,gBAAgB,QAAQ,OAAO,CAAA,WAAU,iBAAiB,IAAI,OAAO,GAAG,GAAG,SAAS,aAAa,QAAQ;AAC/G,YAAM,mBAAmB,QAAQ,OAAO,CAAA,WAAU,iBAAiB,IAAI,OAAO,GAAG,GAAG,SAAS,aAAa,QAAQ;AAIlH,WAAK,gBAAgB,kBAAkB,aAAa;AACpD,eAAS,UAAA;AAGT,WAAK,gBAAgB,kBAAkB,gBAAgB;AAAA,IACzD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcQ,eAAe,SAAkB,YAA+B;AACtE,QAAI,QAAQ,WAAW;AAGrB,YAAM,UAAU,uBAAuB,QAAQ,SAAS;AACxD,cAAQ,QAAQ,CAAA,QAAO;AACrB,YAAI,CAAC,KAAK,kBAAkB,YAAY,GAAG,GAAG;AAC5C,qBAAW,IAAI,GAAG;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EAEF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,aAAmB;AACjB,QAAI,KAAK,UAAU;AACjB,WAAK,SAAS,WAAA;AACd,WAAK,WAAW;AAAA,IAClB;AAAA,EACF;AACF;AChNK,MAAM,eAAe;AAAA,EAW1B,YAAY,UAAiC,IAAI;AAVjD,SAAQ,4BAAiD,IAAA;AACzD,SAAQ,gCAA6B,IAAA;AAGrC,SAAQ,cAAc;AAQpB,UAAM,gBAAwB,CAAA;AAE9B,SAAK,UAAU;AAAA,MACb,QAAQ,QAAQ,UAAU;AAAA,MAC1B,SAAS,QAAQ,WAAW;AAAA,MAC5B,gBAAgB,QAAQ,kBAAkB;AAAA,MAC1C,sBAAsB,QAAQ,wBAAwB;AAAA,IAAA;AAIxD,SAAK,UAAU,cAAc,KAAK,QAAQ,MAAM;AAEhD,SAAK,oBAAoB,IAAI,kBAAkB,KAAK,OAAO;AAC3D,SAAK,iBAAiB,IAAI,eAAe,KAAK,mBAAmB,IAAI;AAErE,SAAK,wBAAwB,IAAI,sBAAsB,KAAK,kBAAA,GAAqB,KAAK,QAAQ,sBAAsB,GAAG,KAAK,QAAQ,OAAO,YAAY;AAEvJ,SAAK,KAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,SAAS,OAA4C,SAAiB,MAAsB;AAGlG,UAAM,gBAAgB,QAAQ,KAAK,KAAK,QAAQ;AAChD,kBAAc,mBAAmB,MAAM,YAAA,CAAa,KAAK,OAAO,IAAI,QAAQ,EAAE;AAAA,EAChF;AAAA,EAEQ,OAAO;AAEb,YAAQ,IAAI,uBAAuB;AACnC,SAAK,mBAAA;AACL,SAAK,cAAA;AAAA,EACP;AAAA,EAEQ,qBAAqB;AAC3B,QAAI,KAAK,QAAQ,OAAO,WAAW;AACjC,YAAM,eAAe,KAAK,QAAQ,gBAAgB,KAAK,QAAQ,OAAO,SAAS;AAC/E,WAAK,sBAAsB,kBAAkB,aAAa,YAAY;AAAA,IACxE;AAAA,EACF;AAAA,EAEQ,gBAAgB;AACtB,QAAI,KAAK,YAAa;AAEtB,UAAM,UAAU,KAAK,QAAQ,iBAAiB,KAAK,QAAQ,mBAAmB;AAC9E,SAAK,sBAAsB,kBAAkB,YAAY,OAAO;AAAA,EAClE;AAAA,EAEQ,oBAAiC;AACvC,QAAI,KAAK,QAAQ,0BAA0B,aAAa;AACtD,aAAO,KAAK,QAAQ;AAAA,IACtB;AACA,YAAQ,KAAK,QAAQ,gBAAA;AAAA,MACnB,KAAK;AACH,eAAO,SAAS,QAAQ,SAAS;AAAA,MACnC,KAAK;AAAA,MACL;AACE,eAAO,SAAS;AAAA,IAAA;AAAA,EAEtB;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,SAAkC;AACzC,QAAI,KAAK,YAAa;AAEtB,UAAM,YAAY,KAAK,iBAAiB,OAAO;AAE/C,SAAK,eAAe,SAAS;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKQ,eAAe,WAA2B;AAGhD,SAAK,0BAA0B,SAAS;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKQ,0BAA0B,WAA2B;AAC3D,UAAM,YAAY,OAAO,WAAW;AAGpC,UAAM,UAAU,KAAK,kBAAkB,eAAe,SAAS;AAG/D,YAAQ,IAAI,4BAA4B,SAAS,GAAG,SAAS;AAE7D,SAAK,kBAAkB,SAAS,EAAE,UAAA,CAAW;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA,EAKO,kBAAkB,SAAwC,OAAuC;AACtG,QAAI,KAAK,YAAa;AACtB,QAAI,KAAK,oBAAoB,eAAe,KAAK,sBAAsB,yBAAyB;AAC9F,YAAM,kBAAkB,MAAM,KAAK,KAAK,MAAM,QAAQ;AACtD,WAAK,MAAA;AACL,gBAAU,CAAC,GAAG,iBAAiB,GAAG,OAAO;AACzC,cAAQ,QAAQ,CAAA,WAAU,KAAK,kBAAkB,cAAc,OAAO,GAAG,CAAC;AAAA,IAC5E;AACA,UAAM,WAAqC,CAAA;AAC3C,UAAM,eAAyB,CAAA;AAE/B,eAAW,UAAU,SAAS;AAC5B,UAAI,OAAO,OAAO,MAAM,QAAQ,OAAO,OAAO,GAAG;AAC/C,iBAAS,KAAK,MAAM;AACpB,aAAK,MAAM,IAAI,OAAO,KAAK,MAAM;AAAA,MACnC;AAEA,UAAI,OAAO,WAAW,MAAM,QAAQ,OAAO,WAAW,GAAG;AACvD,mBAAW,WAAW,OAAO,aAAa;AACxC,cAAI,CAAC,KAAK,UAAU,IAAI,OAAO,GAAG;AAChC,iBAAK,UAAU,IAAI,OAAO;AAC1B,yBAAa,KAAK,OAAO;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,aAAa,SAAS,GAAG;AAC3B,WAAK,sBAAsB,aAAa,aAAa,OAAO,OAAO,CAAC;AAAA,IACtE;AAEA,QAAI,SAAS,SAAS,GAAG;AACvB,WAAK,sBAAsB,SAAS,QAAQ;AAAA,IAC9C;AAEA,SAAK,SAAS,QAAQ,WAAW,QAAQ,MAAM,mBAAmB;AAAA,MAChE,cAAc,SAAS;AAAA,MACvB,cAAc,aAAa;AAAA,IAAA,CAC5B;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,OAAoB,SAAS,MAAM,SAAsE;AAC/G,WAAO,KAAK,eAAe,QAAQ,MAAM,OAAO;AAAA,EAClD;AAAA,EAEQ,iBAAiB,SAAsC;AAC7D,WAAO,MAAM,QAAQ,OAAO,IACxB,QAAQ,QAAQ,CAAA,QAAO,IAAI,MAAM,KAAK,CAAC,IACvC,QAAQ,MAAM,KAAK;AAAA,EACzB;AAAA,EAEA,IAAI,KAAsB;AACxB,UAAM,SAAS,KAAK,MAAM,IAAI,GAAG;AACjC,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,KAAiC;AACtC,UAAM,MAAM,KAAK,MAAM,IAAI,GAAG,GAAG,QAAQ,KAAK,IAAI;AAClD,WAAO;AAAA,EACT;AAAA,EAEA,YAAoB;AAClB,UAAM,MAAM,MAAM,KAAK,KAAK,MAAM,OAAA,CAAQ,EAAE,QAAQ,CAAA,WAAU,OAAO,OAAO,EAAE,KAAK,IAAI;AACvF,WAAO;AAAA,EACT;AAAA,EAEA,aAAuB;AACrB,UAAM,OAAO,MAAM,KAAK,KAAK,MAAM,MAAM;AACzC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB;AACd,UAAM,cAAc,KAAK,kBAAkB,SAAA;AAC3C,WAAO;AAAA,MACL,SAAS;AAAA,QACP,eAAe,KAAK,MAAM;AAAA,QAC1B,eAAe,KAAK,UAAU;AAAA,MAAA;AAAA,MAEhC,KAAK,YAAY,WAAW;AAAA,MAC5B;AAAA,IAAA;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKA,cAAoB;AAClB,QAAI,KAAK,YAAa;AACtB,SAAK,MAAM,MAAA;AACX,SAAK,UAAU,MAAA;AACf,kBAAc,KAAK,OAAO;AAC1B,SAAK,kBAAkB,eAAA;AACvB,SAAK,sBAAsB,QAAA;AAC3B,SAAK,wBAAwB,IAAI,sBAAsB,KAAK,kBAAA,GAAqB,KAAK,QAAQ,sBAAsB,GAAG,KAAK,QAAQ,OAAO,YAAY;AACvJ,SAAK,mBAAA;AACL,SAAK,cAAA;AAAA,EACP;AAAA,EAGA,QAAc;AACZ,QAAI,KAAK,YAAa;AACtB,SAAK,MAAM,MAAA;AACX,SAAK,UAAU,MAAA;AACf,SAAK,kBAAkB,eAAA;AACvB,SAAK,sBAAsB,QAAA;AAC3B,SAAK,wBAAwB,IAAI,sBAAsB,KAAK,kBAAA,GAAqB,KAAK,QAAQ,sBAAsB,GAAG,KAAK,QAAQ,OAAO,YAAY;AACvJ,SAAK,mBAAA;AACL,SAAK,cAAA;AAAA,EACP;AAAA,EAEA,aAAa,WAAyB;AACpC,QAAI,KAAK,YAAa;AACtB,UAAM,kBAAkB,MAAM,KAAK,KAAK,MAAM,MAAM;AACpD,SAAK,QAAQ,SAAS;AACtB,SAAK,UAAU,cAAc,SAAS;AACtC,SAAK,oBAAoB,IAAI,kBAAkB,KAAK,OAAO;AAC3D,SAAK,eAAe,UAAU,KAAK,iBAAiB;AACpD,SAAK,MAAA;AACL,QAAI,gBAAgB,SAAS,GAAG;AAC9B,WAAK,SAAS,eAAe;AAAA,IAC/B;AAAA,EACF;AAAA,EAEA,YAAY,SAAkC;AAC5C,QAAI,KAAK,YAAa;AACtB,UAAM,YAAY,IAAI,IAAI,KAAK,iBAAiB,OAAO,CAAC;AACxD,UAAM,kBAAkB,MAAM,KAAK,KAAK,MAAM,OAAA,CAAQ,EAAE,OAAO,YAAU,CAAC,UAAU,IAAI,OAAO,GAAG,CAAC;AACnG,QAAI,gBAAgB,WAAW,KAAK,MAAM,KAAM;AAEhD,SAAK,MAAA;AACL,oBAAgB,QAAQ,CAAA,WAAU,KAAK,kBAAkB,cAAc,OAAO,GAAG,CAAC;AAClF,SAAK,kBAAkB,eAAe;AAAA,EACxC;AAAA,EAEA,UAAgB;AACd,QAAI,KAAK,YAAa;AACtB,SAAK,eAAe,WAAA;AACpB,SAAK,sBAAsB,QAAA;AAE3B,SAAK,MAAM,MAAA;AACX,SAAK,UAAU,MAAA;AACf,SAAK,cAAc;AAAA,EAErB;AAAA,EAEA,WAAW;AACT,UAAM,QAAQ;AAAA,MACZ,eAAe,KAAK,MAAM;AAAA,MAC1B,gBAAgB,KAAK,QAAQ;AAAA,MAC7B,aAAa,KAAK;AAAA,MAClB,QAAQ,KAAK,QAAQ;AAAA,MACrB,YAAY,KAAK,cAAA;AAAA,IAAc;AAEjC,WAAO;AAAA,EACT;AACF;ACjSA,IAAI,UAAiC;AAE9B,SAAS,WAAW,SAAgC;AACzD,MAAI,CAAC,SAAS;AACZ,cAAU,IAAI,eAAe,OAAO;AAAA,EACtC;AACA,SAAO;AACT;AAIO,SAAS,SAAS,EAAE,mBAAmB,aAAa,GAAG,QAAA,IAA6B,CAAA,GAAI;AAC3F,QAAM,iBAAiB,GAAG,gBAAgB;AAC1C,QAAM,eAAe,GAAG,gBAAgB;AACxC,MAAI;AAEA,aAAS,KAAK,UAAU,IAAI,cAAc;AAE1C,UAAMC,WAAU,WAAW,OAAO;AAClCA,aAAQ,QAAQ,SAAS,MAAM,EAAE,MAAM,MAAM,SAAS,MAAM;AACxD,eAAS,KAAK,UAAU,OAAO,cAAc;AAC7C,eAAS,KAAK,UAAU,IAAI,YAAY;AAAA,IAC5C,GAAE;AAAA,EACN,SAAS,OAAO;AAEZ,YAAQ,MAAM,wBAAwB,KAAK;AAAA,EAC/C;AACJ;AAEO,MAAM,YAAY;"}
|