@atelier-ui/angular 0.2.22 → 0.2.23
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atelier-ui-angular.mjs","sources":["../../../../libs/angular/src/lib/button/atl-button.ts","../../../../libs/angular/src/lib/card/atl-card.ts","../../../../libs/angular/src/lib/icons.ts","../../../../libs/angular/src/lib/icon/atl-icon.ts","../../../../libs/angular/src/lib/badge/atl-badge.ts","../../../../libs/angular/src/lib/input/atl-input.ts","../../../../libs/angular/src/lib/textarea/atl-textarea.ts","../../../../libs/angular/src/lib/checkbox/atl-checkbox.ts","../../../../libs/angular/src/lib/radio-group/atl-radio-group.token.ts","../../../../libs/angular/src/lib/radio/atl-radio.ts","../../../../libs/angular/src/lib/radio-group/atl-radio-group.ts","../../../../libs/angular/src/lib/toggle/atl-toggle.ts","../../../../libs/angular/src/lib/alert/atl-alert.ts","../../../../libs/angular/src/lib/select/atl-select.token.ts","../../../../libs/angular/src/lib/select/atl-select.ts","../../../../libs/angular/src/lib/select/atl-option.ts","../../../../libs/angular/src/lib/combobox/atl-combobox.ts","../../../../libs/angular/src/lib/dialog/atl-dialog.token.ts","../../../../libs/angular/src/lib/dialog/atl-dialog.ts","../../../../libs/angular/src/lib/tabs/atl-tabs.token.ts","../../../../libs/angular/src/lib/tabs/atl-tabs.ts","../../../../libs/angular/src/lib/accordion/atl-accordion.token.ts","../../../../libs/angular/src/lib/accordion/atl-accordion.ts","../../../../libs/angular/src/lib/menu/atl-menu.ts","../../../../libs/angular/src/lib/tooltip/atl-tooltip.ts","../../../../libs/angular/src/lib/skeleton/atl-skeleton.ts","../../../../libs/angular/src/lib/toast/atl-toast.ts","../../../../libs/angular/src/lib/avatar/atl-avatar.ts","../../../../libs/angular/src/lib/progress/atl-progress.ts","../../../../libs/angular/src/lib/breadcrumbs/atl-breadcrumbs.token.ts","../../../../libs/angular/src/lib/breadcrumbs/atl-breadcrumbs.ts","../../../../libs/angular/src/lib/pagination/atl-pagination.ts","../../../../libs/angular/src/lib/drawer/atl-drawer.token.ts","../../../../libs/angular/src/lib/drawer/atl-drawer.ts","../../../../libs/angular/src/lib/table/atl-table.ts","../../../../libs/angular/src/lib/stepper/atl-stepper.token.ts","../../../../libs/angular/src/lib/stepper/atl-stepper.ts","../../../../libs/angular/src/lib/code-block/atl-code-block.ts","../../../../libs/angular/src/lib/chat/atl-chat.token.ts","../../../../libs/angular/src/lib/chat/atl-chat.ts","../../../../libs/angular/src/index.ts","../../../../libs/angular/src/atelier-ui-angular.ts"],"sourcesContent":["import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport type { AtlButtonVariant, AtlButtonSize } from '../spec';\n\n/**\n * Accessible button component with visual variants and sizes.\n *\n * Usage:\n * ```html\n * <atl-button variant=\"primary\" size=\"md\" (click)=\"save()\">Save</atl-button>\n * <atl-button variant=\"outline\" [disabled]=\"true\">Cancel</atl-button>\n * <atl-button [loading]=\"isSaving\">Saving…</atl-button>\n * ```\n */\n@Component({\n selector: 'atl-button',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (loading()) {\n <span class=\"spinner\" aria-hidden=\"true\"></span>\n }\n <ng-content />\n `,\n styleUrl: './atl-button.css',\n host: {\n role: 'button',\n '[class]': 'hostClasses()',\n '[attr.aria-disabled]': 'isDisabled()',\n '[attr.disabled]': 'isDisabled() ? true : null',\n },\n})\nexport class AtlButton {\n /** Visual style of the button. */\n readonly variant = input<AtlButtonVariant>('primary');\n\n /** Size of the button. */\n readonly size = input<AtlButtonSize>('md');\n\n /** Disables the button, preventing interaction. */\n readonly disabled = input(false);\n\n /** Shows a loading spinner and disables interaction. */\n readonly loading = input(false);\n\n protected readonly isDisabled = computed(() => this.disabled() || this.loading());\n\n protected readonly hostClasses = computed(\n () =>\n `variant-${this.variant()} size-${this.size()}${this.isDisabled() ? ' is-disabled' : ''}${this.loading() ? ' is-loading' : ''}`\n );\n\n /** @internal — host element ref for the dev-mode a11y check. */\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n // Suppress clicks while disabled/loading. The host is a custom element, so\n // — unlike a native `<button disabled>` — neither the `disabled` attribute\n // nor `pointer-events: none` reliably blocks click dispatch (the latter only\n // affects pointer-driven clicks, not programmatic/keyboard ones). A real\n // click lands on projected content (a descendant), so a capture-phase\n // listener on the host intercepts it before any consumer `(click)` handler\n // bound on the host (which fires in the bubble phase), matching the\n // React/Vue native-disabled behavior.\n const host = this.el.nativeElement;\n const guard = (event: Event): void => {\n if (this.isDisabled()) {\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n };\n host.addEventListener('click', guard, true);\n this.destroyRef.onDestroy(() => host.removeEventListener('click', guard, true));\n\n // Dev-mode warning when a button has no accessible name. Angular's\n // <ng-content> projection means we can't enforce this at the type\n // level (unlike the React adapter), so we check after first render.\n if (typeof ngDevMode !== 'undefined' && ngDevMode) {\n afterNextRender(() => {\n const host = this.el.nativeElement;\n const hasText = host.textContent.trim().length > 0;\n const hasAriaLabel = host.hasAttribute('aria-label')\n || host.hasAttribute('aria-labelledby');\n if (!hasText && !hasAriaLabel) {\n console.warn(\n '[AtlButton] icon-only button is missing an accessible name — '\n + 'add an aria-label attribute so screen readers announce its purpose.',\n host,\n );\n }\n });\n }\n }\n}\n\n// Angular's compiler injects this global; declare so TS doesn't complain.\ndeclare const ngDevMode: unknown;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\n\n/**\n * Card container component supporting elevated, outlined, and flat visual variants.\n * Compose with `atl-card-header`, `atl-card-content`, and `atl-card-footer` sub-components.\n *\n * Usage:\n * ```html\n * <atl-card variant=\"elevated\" padding=\"md\">\n * <atl-card-header>Card Title</atl-card-header>\n * <atl-card-content>Main content goes here.</atl-card-content>\n * <atl-card-footer>\n * <atl-button variant=\"primary\">Save</atl-button>\n * </atl-card-footer>\n * </atl-card>\n * ```\n */\n@Component({\n selector: 'atl-card',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-card.css',\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'role() || null',\n },\n})\nexport class AtlCard {\n /** Visual style of the card. */\n readonly variant = input<'elevated' | 'outlined' | 'flat'>('elevated');\n\n /** Internal padding of the card. */\n readonly padding = input<'none' | 'sm' | 'md' | 'lg'>('md');\n\n /**\n * Opt-in landmark role. Default is no role.\n *\n * - `'article'` — self-contained content (blog post, comment).\n * - `'region'` — perceivable area that needs a screen-reader stop;\n * pair with `aria-label`.\n * - `'section'` — mirrors an HTML `<section>`.\n *\n * Most cards group content visually and shouldn't add a landmark.\n * Leave unset by default.\n */\n readonly role = input<'article' | 'region' | 'section' | undefined>(undefined);\n\n protected readonly hostClasses = computed(\n () => `atl-card variant-${this.variant()} padding-${this.padding()}`\n );\n}\n\n/**\n * Header slot for `atl-card`. Renders above the main content with a bottom separator.\n *\n * Usage:\n * ```html\n * <atl-card-header>Card Title</atl-card-header>\n * ```\n */\n@Component({\n selector: 'atl-card-header',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-card.css',\n host: { class: 'atl-card-header' },\n})\nexport class AtlCardHeader {}\n\n/**\n * Content slot for `atl-card`. Primary content area of the card.\n *\n * Usage:\n * ```html\n * <atl-card-content>Body text here.</atl-card-content>\n * ```\n */\n@Component({\n selector: 'atl-card-content',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-card.css',\n host: { class: 'atl-card-content' },\n})\nexport class AtlCardContent {}\n\n/**\n * Footer slot for `atl-card`. Renders below the main content, typically holds actions.\n *\n * Usage:\n * ```html\n * <atl-card-footer>\n * <atl-button variant=\"primary\">Save</atl-button>\n * </atl-card-footer>\n * ```\n */\n@Component({\n selector: 'atl-card-footer',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-card.css',\n host: { class: 'atl-card-footer' },\n})\nexport class AtlCardFooter {}\n","// AUTO-GENERATED from libs/spec/src/icons.ts — do not edit here.\n// Run `node tools/scripts/sync-spec.mjs` after editing the source of truth.\n// The framework libs inline this so @atelier-ui/spec stays internal.\n\n/**\n * Icon geometry — the single source of truth for what every AtlIcon draws.\n *\n * Before this file, the library had four ways to draw the same thing: AtlIcon\n * rendered Unicode glyphs and no component used it; eleven components drew 14\n * inline `<svg>`s of their own; and two stylesheets put a literal `✕` in a CSS\n * `content:`. The result was one concept with several drawings — `close` existed\n * as an identical two-line SVG in five components, as a *differently drawn* X in\n * AtlStepper, as `'×'` in AtlIcon and as `'✕'` in CSS, and `check` existed as\n * three unrelated paths. Nothing gated it. See ADR-0046.\n *\n * Conventions, which every entry follows so a consumer can scale and colour icons\n * without knowing which one they got:\n *\n * - **One viewBox: `0 0 24 24`.** Rendered size comes from the `size` prop, never\n * from the geometry, so `sm`/`md`/`lg` are the same shape at three scales.\n * - **`stroke` icons** are drawn with `currentColor`, `stroke-width: 2`, round caps\n * and joins, and no fill. **`fill` icons** are solid `currentColor` silhouettes.\n * Mixing the two inside one icon is not allowed — it reads wrong at small sizes.\n * - **Paths only** (no `<line>`/`<rect>`/`<polyline>`), so the renderer in each\n * framework is a single `<path>` loop rather than a per-primitive switch.\n *\n * The seven icons the library itself uses (`close`, `check`, `chevron-down`,\n * `copy`, `person`, `sort-asc`, `sort-desc`) keep the geometry the components\n * already shipped, normalised to the 24 viewBox. The rest are the same idiom.\n */\nexport type AtlIconKind = 'stroke' | 'fill';\n\nexport interface AtlIconGeometry {\n /** How the paths are painted. Never mixed within one icon. */\n kind: AtlIconKind;\n /** Path `d` values, drawn in order, all in the 0 0 24 24 viewBox. */\n paths: string[];\n}\n\n/** viewBox shared by every icon. */\nexport const ATL_ICON_VIEWBOX = '0 0 24 24';\n\n/** Stroke width for `kind: 'stroke'` icons, in viewBox units. */\nexport const ATL_ICON_STROKE_WIDTH = 2;\n\nexport const ATL_ICON_GEOMETRY: Record<string, AtlIconGeometry> = {\n // ── status ────────────────────────────────────────────────────────────────\n // `success` is a status icon and sits beside the circled danger/error/info, so it\n // is a circled check. `check` is the bare mark used inside controls (combobox\n // option, stepper step, copy confirmation) — two names, two shapes, on purpose.\n success: { kind: 'stroke', paths: ['M12 3A9 9 0 1 0 12 21A9 9 0 1 0 12 3', 'M8 12L11 15L16 9'] },\n check: { kind: 'stroke', paths: ['M20 6L9 17L4 12'] },\n warning: { kind: 'stroke', paths: ['M12 3L22 20H2L12 3Z', 'M12 9V14', 'M12 17.5V17.6'] },\n danger: { kind: 'stroke', paths: ['M12 3A9 9 0 1 0 12 21A9 9 0 1 0 12 3', 'M15 9L9 15', 'M9 9L15 15'] },\n error: { kind: 'stroke', paths: ['M12 3A9 9 0 1 0 12 21A9 9 0 1 0 12 3', 'M12 7V13', 'M12 16.5V16.6'] },\n info: { kind: 'stroke', paths: ['M12 3A9 9 0 1 0 12 21A9 9 0 1 0 12 3', 'M12 11V17', 'M12 7.5V7.6'] },\n\n // ── direction ─────────────────────────────────────────────────────────────\n 'chevron-up': { kind: 'stroke', paths: ['M6 15L12 9L18 15'] },\n 'chevron-down': { kind: 'stroke', paths: ['M6 9L12 15L18 9'] },\n 'chevron-left': { kind: 'stroke', paths: ['M15 6L9 12L15 18'] },\n 'chevron-right': { kind: 'stroke', paths: ['M9 6L15 12L9 18'] },\n 'arrow-left': { kind: 'stroke', paths: ['M19 12H5', 'M11 6L5 12L11 18'] },\n 'arrow-right': { kind: 'stroke', paths: ['M5 12H19', 'M13 6L19 12L13 18'] },\n\n // ── sorting — two solid triangles, used separately by AtlTable ────────────\n 'sort-asc': { kind: 'fill', paths: ['M12 4L19 13H5L12 4Z'] },\n 'sort-desc': { kind: 'fill', paths: ['M12 20L5 11H19L12 20Z'] },\n\n // ── actions ───────────────────────────────────────────────────────────────\n close: { kind: 'stroke', paths: ['M18 6L6 18', 'M6 6L18 18'] },\n add: { kind: 'stroke', paths: ['M12 5V19', 'M5 12H19'] },\n more: { kind: 'fill', paths: ['M6 10A2 2 0 1 0 6 14A2 2 0 1 0 6 10', 'M12 10A2 2 0 1 0 12 14A2 2 0 1 0 12 10', 'M18 10A2 2 0 1 0 18 14A2 2 0 1 0 18 10'] },\n copy: { kind: 'stroke', paths: ['M9 9H20V20H9V9Z', 'M15 5H4V16H5'] },\n paste: { kind: 'stroke', paths: ['M8 4H16V7H8V4Z', 'M6 6H5V20H19V6H18'] },\n edit: { kind: 'stroke', paths: ['M4 20H8L19 9L15 5L4 16V20Z', 'M14 6L18 10'] },\n delete: { kind: 'stroke', paths: ['M4 7H20', 'M6 7V20H18V7', 'M10 4H14', 'M10 11V16', 'M14 11V16'] },\n\n // ── content ───────────────────────────────────────────────────────────────\n person: {\n kind: 'fill',\n paths: [\n 'M12 12c2.761 0 5-2.239 5-5s-2.239-5-5-5-5 2.239-5 5 2.239 5 5 5zm0 2c-3.314 0-10 1.343-10 4v2h20v-2c0-2.657-6.686-4-10-4z',\n ],\n },\n 'default-toast': {\n kind: 'stroke',\n paths: ['M4 5H20V16H13L8 20V16H4V5Z'],\n },\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport type { AtlIconName, AtlIconSize } from '../spec';\nimport { ATL_ICON_GEOMETRY, ATL_ICON_STROKE_WIDTH, ATL_ICON_VIEWBOX } from '../icons';\n\n\n/**\n * Vector icon. 23 named variants, drawn from the geometry in `icons.ts` so the\n * same shape is used everywhere it appears. Matches the Figma `AtlIcon`\n * component set. Decorative by default; pass `label` to announce a meaning\n * to assistive tech.\n *\n * Usage:\n * ```html\n * <atl-icon name=\"success\" />\n * <atl-icon name=\"warning\" size=\"lg\" label=\"Warning\" />\n * ```\n */\n@Component({\n selector: 'atl-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.viewBox]=\"viewBox\"\n [attr.fill]=\"isStroke() ? 'none' : 'currentColor'\"\n [attr.stroke]=\"isStroke() ? 'currentColor' : null\"\n [attr.stroke-width]=\"isStroke() ? strokeWidth : null\"\n [attr.stroke-linecap]=\"isStroke() ? 'round' : null\"\n [attr.stroke-linejoin]=\"isStroke() ? 'round' : null\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n @for (d of geometry().paths; track d) {\n <path [attr.d]=\"d\" />\n }\n </svg>\n `,\n styleUrl: './atl-icon.css',\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'label() ? \"img\" : null',\n '[attr.aria-label]': 'label() || null',\n '[attr.aria-hidden]': 'label() ? null : \"true\"',\n },\n})\nexport class AtlIcon {\n readonly name = input.required<AtlIconName>();\n readonly size = input<AtlIconSize>('md');\n readonly label = input<string | undefined>();\n\n protected readonly viewBox = ATL_ICON_VIEWBOX;\n protected readonly strokeWidth = ATL_ICON_STROKE_WIDTH;\n protected readonly geometry = computed(() => ATL_ICON_GEOMETRY[this.name()]);\n protected readonly isStroke = computed(() => this.geometry().kind === 'stroke');\n protected readonly hostClasses = computed(() => `size-${this.size()}`);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport type { AtlIconName, AtlBadgeVariant } from '../spec';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/**\n * Inline status badge for labeling items with semantic color variants.\n *\n * Usage:\n * ```html\n * <atl-badge variant=\"success\">Active</atl-badge>\n * <atl-badge variant=\"danger\" size=\"sm\">Error</atl-badge>\n * <atl-badge variant=\"warning\">Pending</atl-badge>\n * ```\n */\n// Which AtlIcon each variant carries. Names, not glyphs: a glyph in a string map\n// was the fifth way this library drew an icon, and the one check:iconography\n// missed (ADR-0050).\nconst VARIANT_ICON_NAMES: Partial<Record<AtlBadgeVariant, AtlIconName>> = {\n info: 'info',\n success: 'success',\n warning: 'warning',\n danger: 'danger',\n};\n\n@Component({\n selector: 'atl-badge',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (variantIcon(); as icon) {\n <atl-icon class=\"variant-icon\" [name]=\"icon\" size=\"sm\" />\n }\n <ng-content />\n `,\n styleUrl: './atl-badge.css',\n host: {\n '[class]': 'hostClasses()',\n role: 'status',\n },\n})\nexport class AtlBadge {\n /** Semantic color variant of the badge. */\n readonly variant = input<'default' | 'success' | 'warning' | 'danger' | 'info'>('default');\n\n /** Size of the badge. */\n readonly size = input<'sm' | 'md'>('md');\n\n protected readonly hostClasses = computed(\n () => `variant-${this.variant()} size-${this.size()}`\n );\n\n protected readonly variantIcon = computed(() => VARIANT_ICON_NAMES[this.variant()]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Accessible text input component for use with Angular Signal Forms.\n *\n * Usage:\n * ```html\n * <atl-input type=\"email\" placeholder=\"you@example.com\" [(value)]=\"email\" />\n * <atl-input [formField]=\"loginForm.email\" placeholder=\"Email\" />\n * ```\n */\n@Component({\n selector: 'atl-input',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"input-field\">\n <input\n [type]=\"type()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"touched.set(true)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [placeholder]=\"placeholder()\"\n [attr.name]=\"name() || null\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-describedby]=\"showErrors() ? errorId : null\"\n />\n @if (invalid()) {\n <atl-icon name=\"danger\" size=\"sm\" class=\"invalid-icon\" />\n }\n </div>\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-input.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlInput implements FormValueControl<string> {\n /** The current input value. Bound by [formField] directive. Supports [(value)] two-way binding. */\n readonly value = model('');\n\n /** The type of input field. */\n readonly type = input<'text' | 'email' | 'password' | 'number' | 'tel' | 'url'>('text');\n\n /** Placeholder text shown when the input is empty. */\n readonly placeholder = input('');\n\n /** Whether the input is disabled. Bound by [formField] directive. */\n readonly disabled = input(false);\n\n /** Whether the input is read-only. Bound by [formField] directive. */\n readonly readonly = input(false);\n\n /** Whether the input has validation errors. Bound by [formField] directive. */\n readonly invalid = input(false);\n\n /** Validation errors from the form system. Bound by [formField] directive. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** Whether the user has interacted with the input. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Whether the input is required. Bound by [formField] directive. */\n readonly required = input(false);\n\n /** The input's name attribute. Bound by [formField] directive. */\n readonly name = input('');\n\n /** @internal */\n protected readonly errorId = `atl-input-errors-${nextId++}`;\n\n /** @internal */\n protected readonly showErrors = computed(\n () => this.touched() && this.invalid() && this.errors().length > 0\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.disabled()) classes.push('is-disabled');\n if (this.invalid()) classes.push('is-invalid');\n if (this.readonly()) classes.push('is-readonly');\n if (this.touched()) classes.push('is-touched');\n return classes.join(' ');\n });\n\n /** @internal */\n protected onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value.set(target.value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n} from '@angular/core';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Accessible multiline text input component for use with Angular Signal Forms.\n *\n * Usage:\n * ```html\n * <atl-textarea placeholder=\"Enter a description\" [(value)]=\"description\" />\n * <atl-textarea [formField]=\"form.bio\" [rows]=\"4\" />\n * ```\n */\n@Component({\n selector: 'atl-textarea',\n standalone: true,\n imports: [TextFieldModule, AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"textarea-field\">\n <textarea\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"touched.set(true)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [placeholder]=\"placeholder()\"\n [rows]=\"rows()\"\n [attr.name]=\"name() || null\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-describedby]=\"showErrors() ? errorId : null\"\n [cdkTextareaAutosize]=\"autoResize()\"\n [cdkAutosizeMinRows]=\"rows()\"\n ></textarea>\n @if (invalid()) {\n <atl-icon name=\"danger\" size=\"sm\" class=\"invalid-icon\" />\n }\n </div>\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-textarea.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlTextarea implements FormValueControl<string> {\n /** The current textarea value. Supports [(value)] two-way binding. */\n readonly value = model('');\n\n /** Number of visible text rows. */\n readonly rows = input(3);\n\n /** Placeholder text shown when the textarea is empty. */\n readonly placeholder = input('');\n\n /** Whether the textarea is disabled. Bound by [formField] directive. */\n readonly disabled = input(false);\n\n /** Whether the textarea is read-only. Bound by [formField] directive. */\n readonly readonly = input(false);\n\n /** Whether the textarea has validation errors. Bound by [formField] directive. */\n readonly invalid = input(false);\n\n /** Validation errors from the form system. Bound by [formField] directive. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** Whether the user has interacted with the textarea. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Whether the textarea is required. Bound by [formField] directive. */\n readonly required = input(false);\n\n /** The textarea's name attribute. Bound by [formField] directive. */\n readonly name = input('');\n\n /** Whether to auto-resize the textarea height to fit its content. */\n readonly autoResize = input(false);\n\n /** @internal */\n protected readonly errorId = `atl-textarea-errors-${nextId++}`;\n\n /** @internal */\n protected readonly showErrors = computed(\n () => this.touched() && this.invalid() && this.errors().length > 0\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.disabled()) classes.push('is-disabled');\n if (this.invalid()) classes.push('is-invalid');\n if (this.readonly()) classes.push('is-readonly');\n if (this.touched()) classes.push('is-touched');\n if (this.autoResize()) classes.push('is-auto-resize');\n return classes.join(' ');\n });\n\n /** @internal */\n protected onInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this.value.set(target.value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n viewChild,\n} from '@angular/core';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\n\nlet nextId = 0;\n\n/**\n * Accessible checkbox component for use with Angular Signal Forms.\n *\n * Usage:\n * ```html\n * <atl-checkbox [(checked)]=\"accepted\">I agree to the terms</atl-checkbox>\n * <atl-checkbox [formField]=\"form.accepted\">Accept</atl-checkbox>\n * ```\n */\n@Component({\n selector: 'atl-checkbox',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <label [attr.for]=\"inputId\">\n <input\n #nativeInput\n type=\"checkbox\"\n [id]=\"inputId\"\n [checked]=\"checked()\"\n (change)=\"onChange($event)\"\n (blur)=\"touched.set(true)\"\n [disabled]=\"disabled()\"\n [attr.name]=\"name() || null\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-describedby]=\"showErrors() ? errorId : null\"\n />\n <ng-content />\n </label>\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-checkbox.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlCheckbox implements FormCheckboxControl {\n /** The checked state. Bound by [formField] directive. Supports [(checked)] two-way binding. */\n readonly checked = model(false);\n\n /** Whether the user has interacted with the input. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Tri-state indeterminate mode (e.g. \"select all\"). Set via DOM property. */\n readonly indeterminate = input(false);\n\n /** Whether the checkbox is disabled. Bound by [formField] directive. */\n readonly disabled = input(false);\n\n /** Whether the checkbox has validation errors. Bound by [formField] directive. */\n readonly invalid = input(false);\n\n /** Whether the checkbox is required. Bound by [formField] directive. */\n readonly required = input(false);\n\n /** The input's name attribute. Bound by [formField] directive. */\n readonly name = input('');\n\n /** Validation errors from the form system. Bound by [formField] directive. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** @internal */\n protected readonly inputId = `atl-checkbox-${nextId++}`;\n\n /** @internal */\n protected readonly errorId = `atl-checkbox-errors-${nextId++}`;\n\n /** @internal */\n private readonly nativeInput = viewChild<ElementRef<HTMLInputElement>>('nativeInput');\n\n /** @internal */\n protected readonly showErrors = computed(\n () => this.touched() && this.invalid() && this.errors().length > 0\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.checked()) classes.push('is-checked');\n if (this.disabled()) classes.push('is-disabled');\n if (this.invalid()) classes.push('is-invalid');\n if (this.touched()) classes.push('is-touched');\n return classes.join(' ');\n });\n\n constructor() {\n effect(() => {\n const el = this.nativeInput()?.nativeElement;\n if (el) {\n el.indeterminate = this.indeterminate();\n }\n });\n }\n\n /** @internal */\n protected onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.checked.set(target.checked);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { Signal, WritableSignal } from '@angular/core';\nimport type { FocusableOption } from '@angular/cdk/a11y';\n\n/** @internal — shape required by AtlRadioGroup's FocusKeyManager */\nexport interface RadioItem extends FocusableOption {\n focus(): void; // matches FocusableOption\n disabled?: boolean; // matches FocusableOption\n readonly radioValue: Signal<string>;\n}\n\nexport interface AtlRadioGroupContext {\n readonly value: WritableSignal<string>;\n readonly name: Signal<string>;\n readonly disabled: Signal<boolean>;\n readonly readonly: Signal<boolean>;\n select(v: string): void;\n markTouched(): void;\n registerItem(item: RadioItem): void;\n unregisterItem(item: RadioItem): void;\n}\n\nexport const ATL_RADIO_GROUP = new InjectionToken<AtlRadioGroupContext>('ATL_RADIO_GROUP');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { ATL_RADIO_GROUP, type RadioItem } from '../radio-group/atl-radio-group.token';\n\nlet nextId = 0;\n\n/**\n * Individual radio button. Must be placed inside an `atl-radio-group`.\n *\n * Usage:\n * ```html\n * <atl-radio-group [(value)]=\"selected\" name=\"plan\">\n * <atl-radio radioValue=\"free\">Free</atl-radio>\n * <atl-radio radioValue=\"pro\">Pro</atl-radio>\n * </atl-radio-group>\n * ```\n */\n@Component({\n selector: 'atl-radio',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <label [attr.for]=\"inputId\">\n <input\n type=\"radio\"\n [id]=\"inputId\"\n [value]=\"radioValue()\"\n [checked]=\"isChecked()\"\n [disabled]=\"isDisabled()\"\n [attr.name]=\"effectiveName() || null\"\n (click)=\"onClick($event)\"\n (change)=\"onChange()\"\n (blur)=\"onBlur()\"\n />\n <ng-content />\n </label>\n `,\n styleUrl: './atl-radio.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlRadio implements RadioItem, OnInit, OnDestroy {\n /** The value this radio option represents within the group. */\n readonly radioValue = input.required<string>();\n\n /** Whether this specific radio is individually disabled (stacked with group disabled). */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly disabledInput = input(false, { alias: 'disabled' });\n\n /** @internal */\n private readonly group = inject(ATL_RADIO_GROUP, { optional: true });\n\n /** @internal */\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @internal */\n protected readonly inputId = `atl-radio-${nextId++}`;\n\n /** @internal */\n protected readonly isChecked = computed(() => this.group?.value() === this.radioValue());\n\n /** @internal */\n readonly isDisabled = computed(() => this.disabledInput() || (this.group?.disabled() ?? false));\n\n /** @internal */\n protected readonly effectiveName = computed(() => this.group?.name() ?? '');\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.isChecked()) classes.push('is-checked');\n if (this.isDisabled()) classes.push('is-disabled');\n return classes.join(' ');\n });\n\n /** @internal — for FocusKeyManager */\n get disabled(): boolean {\n return this.isDisabled();\n }\n\n /** @internal — for FocusKeyManager */\n focus(): void {\n this.el.nativeElement.querySelector<HTMLInputElement>('input')?.focus();\n }\n\n ngOnInit(): void {\n this.group?.registerItem(this);\n }\n\n ngOnDestroy(): void {\n this.group?.unregisterItem(this);\n }\n\n /** @internal */\n /**\n * readonly is enforced by cancelling the click, not only by the group's\n * `select()` guard: HTML ignores `readonly` on a radio, so the input would flip\n * its own DOM state while the model stayed put — and with OnPush nothing\n * re-renders to correct it. See ADR-0045.\n */\n protected onClick(event: Event): void {\n if (this.group?.readonly()) event.preventDefault();\n }\n\n protected onChange(): void {\n this.group?.select(this.radioValue());\n }\n\n /** @internal */\n protected onBlur(): void {\n this.group?.markTouched();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\nimport { ATL_RADIO_GROUP, type AtlRadioGroupContext, type RadioItem } from './atl-radio-group.token';\n\nlet nextId = 0;\n\n/**\n * Container for a group of radio buttons. Manages keyboard navigation, shared name,\n * and Signal Forms integration.\n *\n * Usage:\n * ```html\n * <atl-radio-group [(value)]=\"size\" name=\"size\">\n * <atl-radio radioValue=\"sm\">Small</atl-radio>\n * <atl-radio radioValue=\"md\">Medium</atl-radio>\n * <atl-radio radioValue=\"lg\">Large</atl-radio>\n * </atl-radio-group>\n *\n * <!-- With Signal Forms -->\n * <atl-radio-group [formField]=\"form.size\">\n * <atl-radio radioValue=\"sm\">Small</atl-radio>\n * </atl-radio-group>\n * ```\n */\n@Component({\n selector: 'atl-radio-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-content />\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-radio-group.css',\n host: {\n role: 'radiogroup',\n '[class]': 'hostClasses()',\n '[attr.aria-invalid]': 'invalid() || null',\n '[attr.aria-required]': 'required() || null',\n '[attr.aria-describedby]': 'showErrors() ? errorId : null',\n '(keydown)': 'onKeydown($event)',\n },\n providers: [{ provide: ATL_RADIO_GROUP, useExisting: AtlRadioGroup }],\n})\nexport class AtlRadioGroup implements FormValueControl<string>, AtlRadioGroupContext {\n /** The selected value. Bound by [formField] directive. Supports [(value)] two-way binding. */\n readonly value = model('');\n\n /** Whether the user has interacted. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Whether the group is disabled. Bound by [formField] directive. */\n readonly disabled = input(false);\n\n /**\n * Whether the selection can be read but not changed. Enforced by the guards in\n * `select()` and `onKeydown()`: HTML ignores `readonly` on a radio input, so the\n * group has to block the change itself. See ADR-0045.\n */\n readonly readonly = input(false);\n\n /** Whether the group has validation errors. Bound by [formField] directive. */\n readonly invalid = input(false);\n\n /** Whether the group is required. Bound by [formField] directive. */\n readonly required = input(false);\n\n /** Shared name attribute propagated to all child radio inputs. Bound by [formField] directive. */\n readonly name = input('');\n\n /** Validation errors from the form system. Bound by [formField] directive. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** @internal */\n protected readonly errorId = `atl-radio-group-errors-${nextId++}`;\n\n /** @internal */\n private readonly items = signal<RadioItem[]>([]);\n\n /** @internal */\n private keyManager: FocusKeyManager<RadioItem> | null = null;\n\n /** @internal */\n protected readonly showErrors = computed(\n () => this.touched() && this.invalid() && this.errors().length > 0\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.disabled()) classes.push('is-disabled');\n if (this.readonly()) classes.push('is-readonly');\n if (this.invalid()) classes.push('is-invalid');\n if (this.touched()) classes.push('is-touched');\n return classes.join(' ');\n });\n\n /** @internal — called by AtlRadio on change */\n select(v: string): void {\n if (!this.disabled() && !this.readonly()) {\n this.value.set(v);\n }\n }\n\n /** @internal — called by AtlRadio on blur */\n markTouched(): void {\n this.touched.set(true);\n }\n\n /** @internal — called by AtlRadio on init */\n registerItem(item: RadioItem): void {\n this.items.update((list) => [...list, item]);\n }\n\n /** @internal — called by AtlRadio on destroy */\n unregisterItem(item: RadioItem): void {\n this.items.update((list) => list.filter((i) => i !== item));\n }\n\n /** @internal */\n protected onKeydown(event: KeyboardEvent): void {\n if (this.disabled() || this.readonly()) return;\n\n if (!this.keyManager) {\n this.keyManager = new FocusKeyManager(this.items())\n .withHorizontalOrientation('ltr')\n .withVerticalOrientation()\n .withWrap();\n }\n\n const currentIdx = this.items().findIndex((i) => i.radioValue() === this.value());\n this.keyManager.setActiveItem(currentIdx);\n this.keyManager.onKeydown(event);\n\n const activeIdx = this.keyManager.activeItemIndex;\n if (activeIdx !== null && activeIdx !== -1 && activeIdx !== currentIdx) {\n const target = this.items()[activeIdx];\n this.value.set(target.radioValue());\n this.touched.set(true);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n} from '@angular/core';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\n\nlet nextId = 0;\n\n/**\n * Accessible toggle (switch) component for use with Angular Signal Forms.\n * Presents as a pill-shaped on/off slider instead of a checkbox box,\n * but has identical boolean semantics and implements FormCheckboxControl.\n *\n * Usage:\n * ```html\n * <atl-toggle [(checked)]=\"enabled\">Enable notifications</atl-toggle>\n * <atl-toggle [formField]=\"form.enabled\">Enable</atl-toggle>\n * ```\n */\n@Component({\n selector: 'atl-toggle',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <label [attr.for]=\"inputId\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n [id]=\"inputId\"\n [checked]=\"checked()\"\n (change)=\"onChange($event)\"\n (blur)=\"touched.set(true)\"\n [disabled]=\"disabled()\"\n [attr.name]=\"name() || null\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-describedby]=\"showErrors() ? errorId : null\"\n />\n <span class=\"track\" aria-hidden=\"true\">\n <span class=\"thumb\"></span>\n </span>\n <ng-content />\n </label>\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-toggle.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlToggle implements FormCheckboxControl {\n /** The checked state. Bound by [formField] directive. Supports [(checked)] two-way binding. */\n readonly checked = model(false);\n\n /** Whether the user has interacted with the input. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Whether the toggle is disabled. Bound by [formField] directive. */\n readonly disabled = input(false);\n\n /** Whether the toggle has validation errors. Bound by [formField] directive. */\n readonly invalid = input(false);\n\n /** Whether the toggle is required. Bound by [formField] directive. */\n readonly required = input(false);\n\n /** The input's name attribute. Bound by [formField] directive. */\n readonly name = input('');\n\n /** Validation errors from the form system. Bound by [formField] directive. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** @internal */\n protected readonly inputId = `atl-toggle-${nextId++}`;\n\n /** @internal */\n protected readonly errorId = `atl-toggle-errors-${nextId++}`;\n\n /** @internal */\n protected readonly showErrors = computed(\n () => this.touched() && this.invalid() && this.errors().length > 0\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.checked()) classes.push('is-checked');\n if (this.disabled()) classes.push('is-disabled');\n if (this.invalid()) classes.push('is-invalid');\n if (this.touched()) classes.push('is-touched');\n return classes.join(' ');\n });\n\n /** @internal */\n protected onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.checked.set(target.checked);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n} from '@angular/core';\nimport type { AtlIconName, AtlAlertVariant } from '../spec';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/**\n * Inline notification banner with semantic color variants and optional dismiss button.\n *\n * Usage:\n * ```html\n * <atl-alert variant=\"success\">Your changes were saved.</atl-alert>\n * <atl-alert variant=\"warning\" [dismissible]=\"true\" (dismissed)=\"onDismiss()\">\n * Your session expires soon.\n * </atl-alert>\n * ```\n */\n// Which AtlIcon each variant carries. Names, not glyphs: a glyph in a string map\n// was the fifth way this library drew an icon, and the one check:iconography\n// missed (ADR-0050).\nconst VARIANT_ICON_NAMES: Partial<Record<AtlAlertVariant, AtlIconName>> = {\n info: 'info',\n success: 'success',\n warning: 'warning',\n danger: 'danger',\n};\n\n@Component({\n selector: 'atl-alert',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span class=\"content\">\n @if (variantIcon(); as icon) {\n <atl-icon class=\"variant-icon\" [name]=\"icon\" size=\"sm\" />\n }\n <ng-content />\n </span>\n @if (isDismissible) {\n <button class=\"dismiss\" type=\"button\" aria-label=\"Dismiss\" (click)=\"dismiss()\">\n <atl-icon name=\"close\" size=\"sm\" />\n </button>\n }\n `,\n styleUrl: './atl-alert.css',\n host: {\n '[class]': 'hostClassesValue',\n role: 'alert',\n '[attr.aria-live]': 'ariaLive',\n },\n})\nexport class AtlAlert {\n /** Semantic color variant of the alert. */\n readonly variant = input<'info' | 'success' | 'warning' | 'danger'>('info');\n\n /** Whether to show a dismiss button. */\n readonly dismissible = input(false);\n\n /** Emitted when the dismiss button is clicked. */\n readonly dismissed = output<void>();\n\n protected readonly hostClasses = computed(() => `variant-${this.variant()}`);\n\n protected readonly variantIcon = computed(() => VARIANT_ICON_NAMES[this.variant()]);\n\n /** @internal */\n get isDismissible(): boolean {\n return this.dismissible();\n }\n\n /** @internal */\n get hostClassesValue(): string {\n return this.hostClasses();\n }\n\n /** @internal */\n get ariaLive(): string {\n return this.variant() === 'danger' ? 'assertive' : 'polite';\n }\n\n protected dismiss(): void {\n this.dismissed.emit();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { Signal, WritableSignal } from '@angular/core';\n\nexport interface AtlSelectContext {\n readonly value: WritableSignal<string>;\n readonly disabled: Signal<boolean>;\n readonly activeOptionId: WritableSignal<string | null>;\n select(v: string): void;\n markTouched(): void;\n registerOption(id: string, value: string, labelText: string, disabled: boolean): void;\n unregisterOption(id: string): void;\n}\n\nexport const ATL_SELECT = new InjectionToken<AtlSelectContext>('ATL_SELECT');\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n OnDestroy,\n computed,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ActiveDescendantKeyManager, Highlightable } from '@angular/cdk/a11y';\nimport {\n createFlexibleConnectedPositionStrategy,\n createOverlayRef,\n createRepositionScrollStrategy,\n type OverlayRef,\n} from '@angular/cdk/overlay';\nimport { DomPortal } from '@angular/cdk/portal';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\nimport { ATL_SELECT, type AtlSelectContext } from './atl-select.token';\n\n/** @internal — Wrapper item for ActiveDescendantKeyManager integration. */\nclass SelectOptionItem implements Highlightable {\n disabled: boolean;\n\n constructor(\n readonly id: string,\n readonly value: string,\n readonly labelText: string,\n disabled: boolean,\n private readonly activeOptionId: import('@angular/core').WritableSignal<string | null>,\n ) {\n this.disabled = disabled;\n }\n\n getLabel(): string {\n return this.labelText;\n }\n\n setActiveStyles(): void {\n this.activeOptionId.set(this.id);\n }\n\n setInactiveStyles(): void {\n // Handled by key manager — no-op here\n }\n}\n\nlet nextId = 0;\n\n/**\n * Accessible dropdown select component for use with Angular Signal Forms.\n * Uses the CDK Overlay for viewport-aware panel positioning.\n *\n * Usage:\n * ```html\n * <atl-select [(value)]=\"country\" placeholder=\"Select a country\">\n * <atl-option optionValue=\"us\">United States</atl-option>\n * <atl-option optionValue=\"ca\">Canada</atl-option>\n * </atl-select>\n *\n * <!-- With Signal Forms -->\n * <atl-select [formField]=\"form.country\" placeholder=\"Select a country\">\n * <atl-option optionValue=\"us\">United States</atl-option>\n * </atl-select>\n * ```\n */\n@Component({\n selector: 'atl-select',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button\n type=\"button\"\n class=\"trigger\"\n [id]=\"triggerId\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.disabled]=\"disabled() || null\"\n (click)=\"onTriggerClick()\"\n (blur)=\"onTriggerBlur()\"\n >\n <span class=\"trigger-text\">{{ selectedLabel() || placeholder() }}</span>\n <span class=\"trigger-icon\" aria-hidden=\"true\">▾</span>\n </button>\n\n <div\n #panel\n [id]=\"panelId\"\n role=\"listbox\"\n class=\"panel\"\n [attr.aria-labelledby]=\"triggerId\"\n >\n <ng-content />\n </div>\n\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-select.css',\n host: {\n role: 'combobox',\n '[class]': 'hostClasses()',\n '(keydown)': 'onKeydown($event)',\n },\n providers: [{ provide: ATL_SELECT, useExisting: AtlSelect }],\n})\nexport class AtlSelect implements FormValueControl<string>, AtlSelectContext, OnDestroy {\n /** The selected value. Bound by [formField] directive. Supports [(value)] two-way binding. */\n readonly value = model('');\n\n /** Whether the user has interacted. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Placeholder text shown when no option is selected. */\n readonly placeholder = input('');\n\n /** Whether the select is disabled. Bound by [formField] directive. */\n readonly disabled = input(false);\n\n /** Whether the select has validation errors. Bound by [formField] directive. */\n readonly invalid = input(false);\n\n /** Whether the select is required. Bound by [formField] directive. */\n readonly required = input(false);\n\n /** The input's name attribute. Bound by [formField] directive. */\n readonly name = input('');\n\n /** Validation errors from the form system. Bound by [formField] directive. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** @internal */\n readonly activeOptionId = signal<string | null>(null);\n\n /** @internal */\n protected readonly isOpen = signal(false);\n\n /** @internal */\n protected readonly optionsList = signal<\n { id: string; value: string; labelText: string; disabled: boolean }[]\n >([]);\n\n /** @internal */\n protected readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n\n /** @internal */\n protected readonly triggerId = `atl-select-trigger-${nextId}`;\n\n /** @internal */\n protected readonly panelId = `atl-select-panel-${nextId}`;\n\n /** @internal */\n protected readonly errorId = `atl-select-errors-${nextId++}`;\n\n /** @internal */\n protected readonly selectedLabel = computed(\n () => this.optionsList().find((o) => o.value === this.value())?.labelText ?? ''\n );\n\n /** @internal */\n protected readonly showErrors = computed(\n () => this.touched() && this.invalid() && this.errors().length > 0\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.isOpen()) classes.push('is-open');\n if (this.disabled()) classes.push('is-disabled');\n if (this.invalid()) classes.push('is-invalid');\n if (this.touched()) classes.push('is-touched');\n return classes.join(' ');\n });\n\n /** @internal */\n private keyManager: ActiveDescendantKeyManager<SelectOptionItem> | null = null;\n\n private overlayRef: OverlayRef | null = null;\n private outsideClickHandler: ((e: MouseEvent) => void) | null = null;\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n\n /** @internal — called by AtlOption on init */\n registerOption(id: string, value: string, labelText: string, disabled: boolean): void {\n this.optionsList.update((list) => [...list, { id, value, labelText, disabled }]);\n }\n\n /** @internal — called by AtlOption on destroy */\n unregisterOption(id: string): void {\n this.optionsList.update((list) => list.filter((o) => o.id !== id));\n }\n\n /** @internal — called by AtlOption on select */\n select(v: string): void {\n if (!this.disabled()) {\n this.value.set(v);\n this.close();\n }\n }\n\n /** @internal — called by AtlOption on interaction */\n markTouched(): void {\n this.touched.set(true);\n }\n\n /** @internal */\n protected onTriggerClick(): void {\n if (this.disabled()) return;\n if (this.isOpen()) { this.close(); } else { this.open(); }\n }\n\n /** @internal */\n protected onTriggerBlur(): void {\n if (!this.isOpen()) {\n this.touched.set(true);\n }\n }\n\n /** @internal */\n protected onKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n\n switch (event.key) {\n case 'Enter':\n case ' ': {\n event.preventDefault();\n if (!this.isOpen()) {\n this.open();\n } else {\n const activeItem = this.keyManager?.activeItem;\n if (activeItem) {\n this.select(activeItem.value);\n }\n }\n break;\n }\n case 'Escape': {\n event.preventDefault();\n this.close();\n break;\n }\n default: {\n const isNav = ['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key);\n const isTypeahead = event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;\n if ((isNav || isTypeahead) && !this.isOpen()) {\n this.open();\n if (isNav) return; // open() already sets active item\n }\n this.keyManager?.onKeydown(event);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n if (this.outsideClickHandler) {\n document.removeEventListener('click', this.outsideClickHandler);\n this.outsideClickHandler = null;\n }\n }\n\n private open(): void {\n const panel = this.panelRef();\n if (!panel) return;\n\n if (!this.overlayRef) {\n this.overlayRef = this.createOverlay();\n }\n\n this.overlayRef.attach(new DomPortal(panel.nativeElement));\n panel.nativeElement.classList.add('is-open');\n this.overlayRef.updatePosition();\n this.isOpen.set(true);\n\n // (Re)create key manager with current options\n const items = this.optionsList().map(\n (o) => new SelectOptionItem(o.id, o.value, o.labelText, o.disabled, this.activeOptionId),\n );\n this.keyManager = new ActiveDescendantKeyManager(items)\n .withWrap()\n .withTypeAhead(500)\n .withHomeAndEnd()\n .withVerticalOrientation();\n\n // Set active option to currently selected or first enabled\n const selectedIdx = items.findIndex((i) => i.value === this.value() && !i.disabled);\n const firstEnabledIdx = items.findIndex((i) => !i.disabled);\n const activeIdx = selectedIdx >= 0 ? selectedIdx : firstEnabledIdx;\n if (activeIdx >= 0) {\n this.keyManager.setActiveItem(activeIdx);\n }\n\n // Outside click — check host AND panel (panel is in overlay container, outside host)\n this.outsideClickHandler = (e: MouseEvent) => {\n const target = e.target as Node;\n if (\n !this.elementRef.nativeElement.contains(target) &&\n !panel.nativeElement.contains(target)\n ) {\n this.close();\n }\n };\n document.addEventListener('click', this.outsideClickHandler);\n }\n\n private close(): void {\n const panel = this.panelRef();\n if (panel) {\n panel.nativeElement.classList.remove('is-open');\n }\n this.overlayRef?.detach();\n this.isOpen.set(false);\n this.activeOptionId.set(null);\n this.keyManager = null;\n\n if (this.outsideClickHandler) {\n document.removeEventListener('click', this.outsideClickHandler);\n this.outsideClickHandler = null;\n }\n }\n\n private createOverlay(): OverlayRef {\n const triggerEl = this.elementRef.nativeElement.querySelector<HTMLElement>('.trigger');\n if (!triggerEl) throw new Error('AtlSelect: trigger element not found');\n\n const positionStrategy = createFlexibleConnectedPositionStrategy(\n this.injector,\n triggerEl,\n )\n .withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ])\n .withFlexibleDimensions(false)\n .withPush(true);\n\n const scrollStrategy = createRepositionScrollStrategy(this.injector);\n\n return createOverlayRef(this.injector, {\n positionStrategy,\n scrollStrategy,\n minWidth: triggerEl.offsetWidth,\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n OnInit,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { ATL_SELECT } from './atl-select.token';\n\nlet nextOptionId = 0;\n\n/**\n * Option item for use inside `<atl-select>`.\n *\n * Usage:\n * ```html\n * <atl-option optionValue=\"us\">United States</atl-option>\n * ```\n */\n@Component({\n selector: 'atl-option',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './atl-option.css',\n template: `\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n role=\"option\"\n [attr.id]=\"optionId\"\n [attr.aria-selected]=\"isSelected()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [class.is-selected]=\"isSelected()\"\n [class.is-active]=\"isActive()\"\n [class.is-disabled]=\"disabled()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n >\n <ng-content />\n </div>\n `,\n})\nexport class AtlOption implements OnInit, OnDestroy {\n /** The value this option represents. Required. */\n readonly optionValue = input.required<string>();\n\n /** Whether this option is disabled. */\n readonly disabled = input(false);\n\n /** @internal */\n protected readonly optionId = `atl-option-${nextOptionId++}`;\n\n /** @internal */\n private readonly context = inject(ATL_SELECT);\n\n /** @internal */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @internal */\n protected readonly isSelected = computed(() => this.context.value() === this.optionValue());\n\n /** @internal */\n protected readonly isActive = computed(() => this.context.activeOptionId() === this.optionId);\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const labelText = (this.elementRef.nativeElement.textContent ?? '').trim();\n this.context.registerOption(this.optionId, this.optionValue(), labelText, this.disabled());\n }\n\n ngOnDestroy(): void {\n this.context.unregisterOption(this.optionId);\n }\n\n /** @internal */\n protected onClick(): void {\n if (this.disabled()) return;\n this.context.select(this.optionValue());\n this.context.markTouched();\n }\n\n /** @internal */\n protected onMouseEnter(): void {\n if (!this.disabled()) {\n this.context.activeOptionId.set(this.optionId);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\nimport type { AtlComboboxOption } from '../spec';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Filterable autocomplete combobox. Accepts an `options` array and emits the\n * selected option's `value`. The user types to narrow the list; selecting an\n * option commits the value and displays its label.\n *\n * Usage:\n * ```html\n * <atl-combobox\n * [(value)]=\"country\"\n * [options]=\"countryOptions\"\n * placeholder=\"Search country…\"\n * />\n *\n * <!-- With Signal Forms -->\n * <atl-combobox [formField]=\"form.country\" [options]=\"countryOptions\" />\n * ```\n */\n@Component({\n selector: 'atl-combobox',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"combobox-wrapper\">\n <input\n #inputEl\n class=\"combobox-input\"\n type=\"text\"\n autocomplete=\"off\"\n role=\"combobox\"\n [id]=\"inputId\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"panelId\"\n aria-autocomplete=\"list\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.disabled]=\"disabled() || null\"\n [attr.required]=\"required() || null\"\n [attr.name]=\"name() || null\"\n [placeholder]=\"placeholder()\"\n [readOnly]=\"readonly()\"\n [value]=\"query()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n <span class=\"combobox-icon\" aria-hidden=\"true\">\n <atl-icon name=\"chevron-down\" size=\"sm\" />\n </span>\n </div>\n\n <ul\n #panel\n [id]=\"panelId\"\n popover=\"manual\"\n role=\"listbox\"\n class=\"panel\"\n [attr.aria-labelledby]=\"inputId\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <li\n [id]=\"optionId(i)\"\n role=\"option\"\n class=\"option\"\n [class.is-active]=\"activeIndex() === i\"\n [class.is-selected]=\"option.value === value()\"\n [class.is-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"option.value === value()\"\n [attr.aria-disabled]=\"option.disabled || null\"\n (mousedown)=\"onOptionSelect(option)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n <span>{{ option.label }}</span>\n @if (option.value === value()) {\n <atl-icon name=\"check\" size=\"sm\" class=\"option-check\" />\n }\n </li>\n }\n @if (filteredOptions().length === 0) {\n <li class=\"no-results\" role=\"option\" aria-selected=\"false\" aria-disabled=\"true\">No results found.</li>\n }\n </ul>\n\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-combobox.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlCombobox implements FormValueControl<string> {\n /** The selected value. Supports [(value)] two-way binding and [formField] directive. */\n readonly value = model('');\n\n /** Whether the user has interacted. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Options to display and filter. */\n readonly options = input<AtlComboboxOption[]>([]);\n\n /** Placeholder text for the input. */\n readonly placeholder = input('');\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false);\n\n /**\n * Whether the value can be read but not changed. Enforced here rather than by\n * the DOM: `readonly` on the text input would stop typing, but nothing stops the\n * panel from opening and an option from being picked. See ADR-0045.\n */\n readonly readonly = input(false);\n\n /** Whether the combobox has validation errors. */\n readonly invalid = input(false);\n\n /** Whether the combobox is required. */\n readonly required = input(false);\n\n /** The input's name attribute. */\n readonly name = input('');\n\n /** Validation errors from the form system. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** @internal */\n protected readonly query = signal('');\n\n /** @internal */\n protected readonly isOpen = signal(false);\n\n /** @internal */\n protected readonly activeIndex = signal(-1);\n\n /** @internal */\n protected readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n\n /** @internal */\n protected readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n /** @internal */\n protected readonly inputId = `atl-combobox-input-${nextId}`;\n\n /** @internal */\n protected readonly panelId = `atl-combobox-panel-${nextId}`;\n\n /** @internal */\n protected readonly errorId = `atl-combobox-errors-${nextId++}`;\n\n /** @internal */\n protected readonly filteredOptions = computed(() => {\n const q = this.query().toLowerCase();\n if (!q) return this.options();\n return this.options().filter((o) => o.label.toLowerCase().includes(q));\n });\n\n /** @internal */\n protected readonly activeOptionId = computed(() => {\n const idx = this.activeIndex();\n return idx >= 0 ? this.optionId(idx) : null;\n });\n\n /** @internal */\n protected readonly showErrors = computed(\n () => this.touched() && this.invalid() && this.errors().length > 0,\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.isOpen()) classes.push('is-open');\n if (this.disabled()) classes.push('is-disabled');\n if (this.readonly()) classes.push('is-readonly');\n if (this.invalid()) classes.push('is-invalid');\n if (this.touched()) classes.push('is-touched');\n return classes.join(' ');\n });\n\n private outsideClickHandler: ((e: MouseEvent) => void) | null = null;\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @internal */\n protected optionId(index: number): string {\n return `${this.panelId}-option-${index}`;\n }\n\n /** @internal */\n protected onInput(event: Event): void {\n const q = (event.target as HTMLInputElement).value;\n this.query.set(q);\n this.activeIndex.set(-1);\n if (q === '') {\n this.value.set('');\n }\n if (!this.isOpen()) this.open();\n }\n\n /** @internal */\n protected onFocus(): void {\n if (!this.disabled() && !this.readonly()) this.open();\n }\n\n /** @internal */\n protected onBlur(): void {\n const selectedOption = this.options().find((o) => o.value === this.value());\n this.query.set(selectedOption?.label ?? '');\n this.touched.set(true);\n }\n\n /** @internal */\n protected onOptionSelect(option: AtlComboboxOption): void {\n if (option.disabled || this.disabled() || this.readonly()) return;\n this.value.set(option.value);\n this.query.set(option.label);\n this.touched.set(true);\n this.close();\n this.inputEl()?.nativeElement.focus();\n }\n\n /** @internal */\n protected onKeydown(event: KeyboardEvent): void {\n if (this.disabled() || this.readonly()) return;\n\n switch (event.key) {\n case 'Enter': {\n const activeIdx = this.activeIndex();\n if (this.isOpen() && activeIdx >= 0) {\n event.preventDefault();\n const option = this.filteredOptions()[activeIdx];\n this.onOptionSelect(option);\n }\n break;\n }\n case 'Escape': {\n event.preventDefault();\n const selectedOption = this.options().find((o) => o.value === this.value());\n this.query.set(selectedOption?.label ?? '');\n this.close();\n break;\n }\n case 'Tab': {\n this.close();\n break;\n }\n case 'ArrowDown':\n case 'ArrowUp': {\n if (!this.isOpen()) {\n this.open();\n break;\n }\n event.preventDefault();\n const opts = this.filteredOptions();\n const enabledIndices = opts.map((_, i) => i).filter((i) => !opts[i].disabled);\n if (enabledIndices.length === 0) break;\n const currentPos = enabledIndices.indexOf(this.activeIndex());\n const len = enabledIndices.length;\n const nextPos =\n event.key === 'ArrowDown'\n ? (currentPos + 1) % len\n : (currentPos - 1 + len) % len;\n this.activeIndex.set(enabledIndices[nextPos]);\n break;\n }\n }\n }\n\n private open(): void {\n const panel = this.panelRef();\n if (!panel || this.isOpen() || this.readonly()) return;\n (panel.nativeElement as HTMLElement & { showPopover(): void }).showPopover();\n this.isOpen.set(true);\n this.activeIndex.set(-1);\n\n this.outsideClickHandler = (e: MouseEvent) => {\n if (!this.elementRef.nativeElement.contains(e.target as Node)) {\n this.close();\n }\n };\n document.addEventListener('click', this.outsideClickHandler);\n }\n\n private close(): void {\n const panel = this.panelRef();\n if (!panel || !this.isOpen()) return;\n try {\n (panel.nativeElement as HTMLElement & { hidePopover(): void }).hidePopover();\n } catch {\n // Panel may already be hidden\n }\n this.isOpen.set(false);\n this.activeIndex.set(-1);\n\n if (this.outsideClickHandler) {\n document.removeEventListener('click', this.outsideClickHandler);\n this.outsideClickHandler = null;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface AtlDialogContext {\n headerId: string;\n close: () => void;\n}\n\nexport const ATL_DIALOG = new InjectionToken<AtlDialogContext>('ATL_DIALOG');\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ATL_DIALOG } from './atl-dialog.token';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Accessible modal dialog using the native `<dialog>` element.\n * Includes focus trap, Escape to close, backdrop click to close, and animation.\n * Compose with `atl-dialog-header`, `atl-dialog-content`, and `atl-dialog-footer`.\n *\n * Usage:\n * ```html\n * <atl-dialog [(open)]=\"isOpen\">\n * <atl-dialog-header>Dialog Title</atl-dialog-header>\n * <atl-dialog-content>Dialog body content.</atl-dialog-content>\n * <atl-dialog-footer>\n * <atl-button variant=\"primary\" (click)=\"isOpen = false\">Confirm</atl-button>\n * </atl-dialog-footer>\n * </atl-dialog>\n * ```\n */\n@Component({\n selector: 'atl-dialog',\n standalone: true,\n imports: [A11yModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ATL_DIALOG,\n useFactory: (dialog: AtlDialog) => ({\n headerId: dialog.headerId,\n close: () => dialog.open.set(false),\n }),\n deps: [AtlDialog],\n },\n ],\n template: `\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <dialog\n #dialogEl\n class=\"atl-dialog\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabel() ? null : (ariaLabelledby() || headerId)\"\n aria-modal=\"true\"\n [cdkTrapFocus]=\"open()\"\n (cancel)=\"onCancel($event)\"\n (click)=\"onBackdropClick($event)\"\n >\n <div [class]=\"panelClass()\">\n <ng-content />\n </div>\n </dialog>\n `,\n styleUrl: './atl-dialog.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlDialog {\n /** Whether the dialog is open. Supports two-way binding: [(open)]=\"isOpen\". */\n readonly open = model(false);\n\n /** Whether clicking the backdrop closes the dialog. */\n readonly closeOnBackdrop = input(true);\n\n /** Size of the dialog panel. */\n readonly size = input<'sm' | 'md' | 'lg' | 'xl' | 'full'>('md');\n\n /** Accessible label for the dialog (use instead of aria-labelledby when no header is present). */\n readonly ariaLabel = input('', { alias: 'aria-label' });\n\n /** ID of the element that labels the dialog (defaults to the atl-dialog-header id). */\n readonly ariaLabelledby = input('', { alias: 'aria-labelledby' });\n\n /** @internal — referenced by AtlDialogHeader via ATL_DIALOG token */\n readonly headerId = `atl-dialog-header-${nextId}`;\n\n protected readonly dialogId = `atl-dialog-${nextId++}`;\n protected readonly dialogRef = viewChild<ElementRef<HTMLDialogElement>>('dialogEl');\n private readonly triggerEl = signal<HTMLElement | null>(null);\n\n protected readonly panelClass = computed(() => `panel size-${this.size()}`);\n protected readonly hostClasses = computed(() => (this.open() ? 'is-open' : ''));\n\n constructor() {\n effect(() => {\n const dialog = this.dialogRef()?.nativeElement;\n if (!dialog) return;\n if (this.open()) {\n this.triggerEl.set(document.activeElement as HTMLElement);\n dialog.showModal();\n } else {\n if (dialog.open) dialog.close();\n this.triggerEl()?.focus();\n this.triggerEl.set(null);\n }\n });\n }\n\n protected onCancel(event: Event): void {\n event.preventDefault();\n this.open.set(false);\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (this.closeOnBackdrop() && event.target === this.dialogRef()?.nativeElement) {\n this.open.set(false);\n }\n }\n\n}\n\n/**\n * Header slot for `atl-dialog`. Renders above content with a bottom separator.\n * Automatically receives the correct `id` for `aria-labelledby` association.\n */\n@Component({\n selector: 'atl-dialog-header',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-content />\n <button\n class=\"close-btn\"\n type=\"button\"\n aria-label=\"Close dialog\"\n (click)=\"context.close()\"\n >\n <atl-icon name=\"close\" size=\"sm\" />\n </button>\n `,\n styleUrl: './atl-dialog.css',\n host: {\n class: 'atl-dialog-header',\n '[attr.id]': 'context.headerId',\n },\n})\nexport class AtlDialogHeader {\n protected readonly context = inject(ATL_DIALOG);\n}\n\n/**\n * Content slot for `atl-dialog`. Scrollable primary content area.\n */\n@Component({\n selector: 'atl-dialog-content',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-dialog.css',\n host: { class: 'atl-dialog-content' },\n})\nexport class AtlDialogContent {}\n\n/**\n * Footer slot for `atl-dialog`. Renders below content, typically holds action buttons.\n */\n@Component({\n selector: 'atl-dialog-footer',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-dialog.css',\n host: { class: 'atl-dialog-footer' },\n})\nexport class AtlDialogFooter {}\n","import { InjectionToken } from '@angular/core';\nimport type { Signal, WritableSignal } from '@angular/core';\n\nexport interface TabInfo {\n id: string;\n label: string;\n disabled: boolean;\n panelId: string;\n tabId: string;\n}\n\nexport interface AtlTabGroupContext {\n readonly selectedIndex: WritableSignal<number>;\n readonly tabs: Signal<TabInfo[]>;\n registerTab(info: TabInfo): void;\n unregisterTab(id: string): void;\n}\n\nexport const ATL_TAB_GROUP = new InjectionToken<AtlTabGroupContext>('ATL_TAB_GROUP');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n OnInit,\n signal,\n viewChildren,\n} from '@angular/core';\nimport { ATL_TAB_GROUP, type AtlTabGroupContext, type TabInfo } from './atl-tabs.token';\n\nlet nextId = 0;\n\n/**\n * Accessible tabbed interface container. Renders a tab list and manages\n * keyboard navigation with roving tabindex.\n *\n * Usage:\n * ```html\n * <atl-tab-group [(selectedIndex)]=\"activeTab\">\n * <atl-tab label=\"Account\">Account settings here.</atl-tab>\n * <atl-tab label=\"Notifications\">Notification prefs here.</atl-tab>\n * <atl-tab label=\"Billing\" [disabled]=\"true\">Billing info here.</atl-tab>\n * </atl-tab-group>\n * ```\n */\n@Component({\n selector: 'atl-tab-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"tablist\" role=\"tablist\">\n @for (tab of tabs(); track tab.id; let i = $index) {\n <button\n #tabBtn\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.tabId\"\n [attr.aria-selected]=\"selectedIndex() === i\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.aria-disabled]=\"tab.disabled || null\"\n [attr.tabindex]=\"selectedIndex() === i ? 0 : -1\"\n [class.is-active]=\"selectedIndex() === i\"\n [class.is-disabled]=\"tab.disabled\"\n (click)=\"selectTab(i)\"\n (keydown)=\"onTabKeydown($event)\"\n >\n {{ tab.label }}\n </button>\n }\n </div>\n <ng-content />\n `,\n styleUrl: './atl-tabs.css',\n host: {\n '[class]': 'hostClasses()',\n },\n providers: [{ provide: ATL_TAB_GROUP, useExisting: AtlTabGroup }],\n})\nexport class AtlTabGroup implements AtlTabGroupContext {\n /** Index of the currently active tab. Supports two-way binding. */\n readonly selectedIndex = model(0);\n\n /** Visual variant. */\n readonly variant = input<'default' | 'pills'>('default');\n\n /** @internal */\n readonly tabs = signal<TabInfo[]>([]);\n\n /** @internal */\n protected readonly tabBtns = viewChildren<ElementRef<HTMLButtonElement>>('tabBtn');\n\n /** @internal */\n protected readonly hostClasses = computed(() => `atl-tab-group variant-${this.variant()}`);\n\n /** @internal — called by AtlTab on init */\n registerTab(info: TabInfo): void {\n this.tabs.update((list) => [...list, info]);\n }\n\n /** @internal — called by AtlTab on destroy */\n unregisterTab(id: string): void {\n this.tabs.update((list) => list.filter((t) => t.id !== id));\n }\n\n /** @internal */\n protected selectTab(index: number): void {\n const tab = this.tabs()[index];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/strict-boolean-expressions\n if (tab && !tab.disabled) {\n this.selectedIndex.set(index);\n }\n }\n\n /** @internal */\n protected onTabKeydown(event: KeyboardEvent): void {\n const allTabs = this.tabs();\n const enabledIndices = allTabs.map((_, i) => i).filter((i) => !allTabs[i].disabled);\n const len = enabledIndices.length;\n if (len === 0) return;\n\n const currentPosInEnabled = enabledIndices.indexOf(this.selectedIndex());\n\n let targetIdx: number | null = null;\n\n switch (event.key) {\n case 'ArrowRight':\n targetIdx = enabledIndices[(currentPosInEnabled + 1) % len];\n break;\n case 'ArrowLeft':\n targetIdx = enabledIndices[(currentPosInEnabled - 1 + len) % len];\n break;\n case 'Home':\n targetIdx = enabledIndices[0];\n break;\n case 'End':\n targetIdx = enabledIndices[len - 1];\n break;\n default:\n return;\n }\n\n event.preventDefault();\n this.selectTab(targetIdx);\n this.tabBtns()[targetIdx]?.nativeElement.focus();\n }\n}\n\n/**\n * Individual tab definition. Place inside `<atl-tab-group>`.\n *\n * Usage:\n * ```html\n * <atl-tab label=\"Settings\">Settings content here.</atl-tab>\n * ```\n */\n@Component({\n selector: 'atl-tab',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (isActive()) {\n <div\n role=\"tabpanel\"\n [id]=\"panelId\"\n [attr.aria-labelledby]=\"tabId\"\n [tabindex]=\"0\"\n >\n <ng-content />\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n }\n\n [role='tabpanel'] {\n padding: var(--ui-spacing-5) 0;\n }\n\n [role='tabpanel']:focus-visible {\n outline: none;\n box-shadow: var(--ui-focus-ring);\n border-radius: var(--ui-radius-md);\n }\n `,\n})\nexport class AtlTab implements OnInit, OnDestroy {\n /** Text displayed on the tab button. Required. */\n readonly label = input.required<string>();\n\n /** Whether this tab is disabled. */\n readonly disabled = input(false);\n\n /** @internal */\n readonly tabId = `atl-tab-${nextId}`;\n\n /** @internal */\n readonly panelId = `atl-tab-panel-${nextId}`;\n\n /** @internal */\n private readonly id = `atl-tab-instance-${nextId++}`;\n\n /** @internal */\n private readonly context = inject(ATL_TAB_GROUP);\n\n /** @internal */\n protected readonly isActive = computed(() => {\n const index = this.context.tabs().findIndex((t) => t.id === this.id);\n return this.context.selectedIndex() === index;\n });\n\n ngOnInit(): void {\n this.context.registerTab({\n id: this.id,\n label: this.label(),\n disabled: this.disabled(),\n panelId: this.panelId,\n tabId: this.tabId,\n });\n }\n\n ngOnDestroy(): void {\n this.context.unregisterTab(this.id);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { FocusableOption } from '@angular/cdk/a11y';\n\n/** @internal — shape required by AtlAccordionGroup's FocusKeyManager */\nexport interface AccordionItem extends FocusableOption {\n readonly id: string;\n focus(): void; // matches FocusableOption\n disabled?: boolean; // matches FocusableOption\n}\n\nexport interface AtlAccordionGroupContext {\n register(item: AccordionItem): void;\n unregister(item: AccordionItem): void;\n handleKeydown(event: KeyboardEvent, item: AccordionItem): void;\n}\n\nexport const ATL_ACCORDION_GROUP = new InjectionToken<AtlAccordionGroupContext>('ATL_ACCORDION_GROUP');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { CdkAccordion, CdkAccordionItem } from '@angular/cdk/accordion';\nimport { ATL_ACCORDION_GROUP, type AccordionItem, type AtlAccordionGroupContext } from './atl-accordion.token';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Container that manages accordion items. Controls single vs multi expansion\n * and provides keyboard navigation across items.\n *\n * Usage:\n * ```html\n * <atl-accordion-group [multi]=\"true\" variant=\"separated\">\n * <atl-accordion-item [(expanded)]=\"open\">\n * <span atlAccordionHeader>Title</span>\n * Body content here.\n * </atl-accordion-item>\n * </atl-accordion-group>\n * ```\n */\n@Component({\n selector: 'atl-accordion-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-accordion.css',\n hostDirectives: [{ directive: CdkAccordion, inputs: ['multi'] }],\n host: {\n '[class]': 'hostClassesValue',\n role: 'presentation',\n },\n providers: [{ provide: ATL_ACCORDION_GROUP, useExisting: AtlAccordionGroup }],\n})\nexport class AtlAccordionGroup implements AtlAccordionGroupContext {\n /** Allow multiple items to be expanded simultaneously. */\n readonly multi = input(false);\n\n /** Visual variant. */\n readonly variant = input<'default' | 'bordered' | 'separated'>('default');\n\n /** @internal */\n protected readonly hostClasses = computed(() => `atl-accordion-group variant-${this.variant()}`);\n\n /** @internal */\n get hostClassesValue(): string {\n return this.hostClasses();\n }\n\n /** @internal */\n private readonly items = signal<AccordionItem[]>([]);\n\n register(item: AccordionItem): void {\n this.items.update((list) => [...list, item]);\n }\n\n unregister(item: AccordionItem): void {\n this.items.update((list) => list.filter((i) => i !== item));\n }\n\n handleKeydown(event: KeyboardEvent, item: AccordionItem): void {\n const enabledItems = this.items().filter((i) => !i.disabled);\n const len = enabledItems.length;\n if (len === 0) return;\n\n const currentIdx = enabledItems.indexOf(item);\n\n let targetItem: AccordionItem | null = null;\n\n switch (event.key) {\n case 'ArrowDown':\n targetItem = enabledItems[(currentIdx + 1) % len];\n break;\n case 'ArrowUp':\n targetItem = enabledItems[(currentIdx - 1 + len) % len];\n break;\n case 'Home':\n targetItem = enabledItems[0];\n break;\n case 'End':\n targetItem = enabledItems[len - 1];\n break;\n default:\n return;\n }\n\n event.preventDefault();\n targetItem.focus();\n }\n}\n\n/**\n * Directive to mark the accordion header content.\n */\n@Directive({\n selector: '[atlAccordionHeader]',\n standalone: true,\n})\nexport class AtlAccordionHeader {}\n\n/**\n * Individual collapsible accordion item. Place inside `<atl-accordion-group>`.\n *\n * Usage:\n * ```html\n * <atl-accordion-item [(expanded)]=\"isOpen\">\n * <span atlAccordionHeader>Section Title</span>\n * Section content goes here.\n * </atl-accordion-item>\n * ```\n */\n@Component({\n selector: 'atl-accordion-item',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CdkAccordionItem],\n template: `\n <div role=\"heading\" [attr.aria-level]=\"headingLevel()\" class=\"accordion-heading\">\n <button\n type=\"button\"\n class=\"accordion-trigger\"\n [id]=\"triggerId\"\n [attr.aria-expanded]=\"isExpandedValue\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-disabled]=\"ariaDisabled\"\n [class.is-disabled]=\"isDisabled\"\n (click)=\"onToggle()\"\n (keydown)=\"onKeydown($event)\"\n >\n <ng-content select=\"[atlAccordionHeader]\" />\n <atl-icon name=\"chevron-down\" size=\"sm\" class=\"chevron\" [class.is-expanded]=\"isExpandedValue\" />\n </button>\n </div>\n <div\n class=\"accordion-panel-wrapper\"\n [class.is-expanded]=\"isExpandedValue\"\n >\n <div\n role=\"region\"\n [id]=\"panelId\"\n [attr.aria-labelledby]=\"triggerId\"\n class=\"accordion-panel\"\n >\n <ng-content />\n </div>\n </div>\n `,\n styleUrl: './atl-accordion.css',\n host: {\n class: 'atl-accordion-item',\n '[attr.data-accordion-id]': 'id',\n },\n})\nexport class AtlAccordionItem implements AccordionItem, OnInit, OnDestroy {\n /** Whether this item is expanded. Supports two-way binding. */\n readonly expanded = model(false);\n\n /** Whether this item is disabled. */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly disabledInput = input(false, { alias: 'disabled' });\n\n /**\n * HTML heading level wrapping the trigger button. Default `3`.\n * Match your page's heading outline so heading order stays valid.\n * Rendered as `<div role=\"heading\" aria-level=\"N\">` so screen\n * readers treat it as a real heading at that level.\n */\n readonly headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(3);\n\n /** @internal — satisfies AccordionItem / FocusableOption interface */\n get disabled(): boolean {\n return this.disabledInput();\n }\n\n /** @internal */\n readonly id = `atl-accordion-item-${nextId++}`;\n\n /** @internal */\n readonly triggerId = `${this.id}-trigger`;\n\n /** @internal */\n readonly panelId = `${this.id}-panel`;\n\n /** @internal */\n private readonly group = inject(AtlAccordionGroup);\n\n /** @internal */\n private readonly cdkItem = inject(CdkAccordionItem);\n\n /** @internal */\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @internal */\n protected readonly isExpanded = signal(false);\n\n /** @internal */\n get isExpandedValue(): boolean {\n return this.isExpanded();\n }\n\n /** @internal */\n get isDisabled(): boolean {\n return this.disabledInput();\n }\n\n /** @internal */\n get ariaDisabled(): boolean | null {\n return this.disabledInput() || null;\n }\n\n constructor() {\n this.cdkItem.expandedChange.subscribe((expanded: boolean) => {\n this.isExpanded.set(expanded);\n this.expanded.set(expanded);\n });\n }\n\n ngOnInit(): void {\n this.group.register(this);\n // Sync initial expanded model\n if (this.expanded()) {\n this.cdkItem.open();\n }\n }\n\n ngOnDestroy(): void {\n this.group.unregister(this);\n }\n\n /** @internal — for FocusKeyManager */\n focus(): void {\n this.el.nativeElement.querySelector<HTMLButtonElement>('.accordion-trigger')?.focus();\n }\n\n /** @internal */\n protected onToggle(): void {\n if (this.disabledInput()) return;\n this.cdkItem.toggle();\n }\n\n /** @internal */\n protected onKeydown(event: KeyboardEvent): void {\n this.group.handleKeydown(event, this);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\n\n/**\n * Trigger directive that opens an `<atl-menu>` dropdown.\n * Apply to any element (typically `<atl-button>`) to wire up click + keyboard open/close.\n *\n * Usage:\n * ```html\n * <atl-button [atlMenuTriggerFor]=\"myMenu\">Open</atl-button>\n * <ng-template #myMenu>\n * <atl-menu>\n * <atl-menu-item (triggered)=\"action()\">Action</atl-menu-item>\n * </atl-menu>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[atlMenuTriggerFor]',\n standalone: true,\n hostDirectives: [\n {\n directive: CdkMenuTrigger,\n inputs: ['cdkMenuTriggerFor: atlMenuTriggerFor'],\n },\n ],\n})\nexport class AtlMenuTrigger {}\n\n/**\n * Accessible dropdown menu panel.\n * Uses `@angular/cdk/menu` for keyboard navigation, focus management, and ARIA.\n *\n * Usage:\n * ```html\n * <atl-button [atlMenuTriggerFor]=\"actions\">Actions</atl-button>\n * <ng-template #actions>\n * <atl-menu>\n * <atl-menu-item (triggered)=\"onCopy()\">Copy</atl-menu-item>\n * <atl-menu-separator />\n * <atl-menu-item [disabled]=\"true\">Paste</atl-menu-item>\n * </atl-menu>\n * </ng-template>\n * ```\n */\n@Component({\n selector: 'atl-menu',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [CdkMenu],\n template: `<ng-content />`,\n styleUrl: './atl-menu.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlMenu {\n /** Visual variant. `compact` reduces font size and padding. */\n readonly variant = input<'default' | 'compact'>('default');\n\n /** @internal */\n protected readonly hostClasses = computed(() => `atl-menu variant-${this.variant()}`);\n}\n\n/**\n * A single item inside an `<atl-menu>`.\n * Supports keyboard navigation, disabled state, and nested submenus via `[atlMenuTriggerFor]`.\n *\n * Usage:\n * ```html\n * <atl-menu-item (triggered)=\"doSomething()\">Label</atl-menu-item>\n * <atl-menu-item [disabled]=\"true\">Disabled</atl-menu-item>\n * ```\n */\n@Component({\n selector: 'atl-menu-item',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: CdkMenuItem,\n inputs: ['cdkMenuItemDisabled: disabled'],\n outputs: ['cdkMenuItemTriggered: triggered'],\n },\n ],\n template: `\n <ng-content />\n @if (hasSubmenu()) {\n <span class=\"atl-menu-item-chevron\" aria-hidden=\"true\">›</span>\n }\n `,\n host: {\n class: 'atl-menu-item',\n '[class.is-disabled]': 'disabled()',\n },\n})\nexport class AtlMenuItem {\n /** Whether this menu item is disabled. */\n readonly disabled = input(false);\n\n /** @internal — detect if this item also triggers a submenu */\n private readonly menuTrigger = inject(CdkMenuTrigger, { optional: true, self: true });\n\n /** @internal */\n protected readonly hasSubmenu = computed(() => !!this.menuTrigger);\n}\n\n/**\n * Visual separator between groups of menu items.\n *\n * Usage:\n * ```html\n * <atl-menu-item>Copy</atl-menu-item>\n * <atl-menu-separator />\n * <atl-menu-item>Delete</atl-menu-item>\n * ```\n */\n@Component({\n selector: 'atl-menu-separator',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ``,\n host: {\n class: 'atl-menu-separator',\n role: 'separator',\n },\n})\nexport class AtlMenuSeparator {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n Injector,\n input,\n OnDestroy,\n signal,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {\n createFlexibleConnectedPositionStrategy,\n createOverlayRef,\n createRepositionScrollStrategy,\n type ConnectedPosition,\n type OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\nlet nextTooltipId = 0;\n\n/** @internal — Rendered inside the CDK overlay when the tooltip is visible. */\n@Component({\n selector: 'atl-tooltip-content',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None,\n template: `{{ text() }}`,\n styleUrl: './atl-tooltip.css',\n host: {\n class: 'atl-tooltip',\n role: 'tooltip',\n '[id]': 'tooltipId()',\n },\n})\nexport class AtlTooltipContent {\n /** @internal */\n readonly text = input('');\n /** @internal */\n readonly tooltipId = input('');\n}\n\nconst POSITIONS: Record<string, ConnectedPosition[]> = {\n above: [\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n ],\n below: [\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n ],\n left: [\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n ],\n right: [\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n ],\n};\n\n/**\n * Attribute directive that displays a text tooltip on hover or focus.\n * Uses `@angular/cdk/overlay` for viewport-aware positioning.\n *\n * Usage:\n * ```html\n * <atl-button atlTooltip=\"Save your changes\">Save</atl-button>\n * <atl-button atlTooltip=\"Copy to clipboard\" atlTooltipPosition=\"right\">Copy</atl-button>\n * ```\n */\n@Directive({\n selector: '[atlTooltip]',\n standalone: true,\n host: {\n '(mouseenter)': 'show()',\n '(mouseleave)': 'hide()',\n '(focusin)': 'show()',\n '(focusout)': 'hide()',\n '(keydown.escape)': 'hide()',\n '[attr.aria-describedby]': 'activeTooltipId()',\n },\n})\nexport class AtlTooltip implements OnDestroy {\n /** The tooltip text. */\n readonly atlTooltip = input.required<string>();\n\n /** Preferred tooltip placement. Falls back to the opposite side if clipped. */\n readonly atlTooltipPosition = input<'above' | 'below' | 'left' | 'right'>('above');\n\n /** Disable the tooltip without removing the directive. */\n readonly atlTooltipDisabled = input(false);\n\n /** Delay in ms before the tooltip appears. */\n readonly atlTooltipShowDelay = input(300);\n\n /** Delay in ms before the tooltip hides. */\n readonly atlTooltipHideDelay = input(0);\n\n private readonly injector = inject(Injector);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private overlayRef: OverlayRef | null = null;\n private showTimer: ReturnType<typeof setTimeout> | null = null;\n private hideTimer: ReturnType<typeof setTimeout> | null = null;\n\n /** @internal — links host aria-describedby to the tooltip element */\n protected readonly activeTooltipId = signal<string | null>(null);\n\n /** @internal */\n protected show(): void {\n if (this.atlTooltipDisabled() || !this.atlTooltip()) return;\n this.clearHideTimer();\n\n if (this.overlayRef?.hasAttached()) return;\n\n this.showTimer = setTimeout(() => {\n this.showTimer = null;\n this.attach();\n }, this.atlTooltipShowDelay());\n }\n\n /** @internal */\n protected hide(): void {\n this.clearShowTimer();\n\n if (!this.overlayRef?.hasAttached()) return;\n\n this.hideTimer = setTimeout(() => {\n this.hideTimer = null;\n this.overlayRef?.detach();\n this.activeTooltipId.set(null);\n }, this.atlTooltipHideDelay());\n }\n\n ngOnDestroy(): void {\n this.clearShowTimer();\n this.clearHideTimer();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n private attach(): void {\n if (!this.overlayRef) {\n this.overlayRef = this.createOverlay();\n }\n\n if (this.overlayRef.hasAttached()) return;\n\n const id = `atl-tooltip-${nextTooltipId++}`;\n const portal = new ComponentPortal(AtlTooltipContent);\n const ref = this.overlayRef.attach(portal);\n ref.setInput('text', this.atlTooltip());\n ref.setInput('tooltipId', id);\n this.activeTooltipId.set(id);\n }\n\n private createOverlay(): OverlayRef {\n const positions = POSITIONS[this.atlTooltipPosition()] ?? POSITIONS['above'];\n\n const positionStrategy = createFlexibleConnectedPositionStrategy(\n this.injector,\n this.elementRef,\n )\n .withPositions(positions)\n .withFlexibleDimensions(false)\n .withPush(true);\n\n const scrollStrategy = createRepositionScrollStrategy(this.injector);\n\n return createOverlayRef(this.injector, {\n positionStrategy,\n scrollStrategy,\n panelClass: 'atl-tooltip-panel',\n });\n }\n\n private clearShowTimer(): void {\n if (this.showTimer !== null) {\n clearTimeout(this.showTimer);\n this.showTimer = null;\n }\n }\n\n private clearHideTimer(): void {\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = null;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\n\n/**\n * Loading placeholder that mimics the shape of content while it loads.\n *\n * Usage:\n * ```html\n * <atl-skeleton />\n * <atl-skeleton variant=\"circular\" width=\"40px\" />\n * <atl-skeleton variant=\"rectangular\" height=\"200px\" />\n * ```\n */\n@Component({\n selector: 'atl-skeleton',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ``,\n styleUrl: './atl-skeleton.css',\n host: {\n '[class]': 'hostClasses()',\n '[style.width]': 'width()',\n '[style.height]': 'computedHeight()',\n 'aria-hidden': 'true',\n },\n})\nexport class AtlSkeleton {\n /** Shape variant of the skeleton placeholder. */\n readonly variant = input<'text' | 'circular' | 'rectangular'>('text');\n\n /** CSS width of the skeleton. */\n readonly width = input('100%');\n\n /** CSS height — when empty, a sensible default is chosen per variant. */\n readonly height = input('');\n\n /** Whether the shimmer animation is active. */\n readonly animated = input(true);\n\n protected readonly computedHeight = computed(() => {\n if (this.height()) return this.height();\n switch (this.variant()) {\n case 'text':\n return '1em';\n case 'circular':\n return this.width();\n case 'rectangular':\n return '100px';\n }\n });\n\n protected readonly hostClasses = computed(() => {\n const classes = [`variant-${this.variant()}`];\n if (this.animated()) classes.push('is-animated');\n return classes.join(' ');\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Injectable,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/** Variant types for toast notifications. */\nexport type ToastVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\n\n/** Options for creating a toast notification. */\nexport interface ToastOptions {\n variant?: ToastVariant;\n /** Duration in ms before auto-dismiss. 0 = no auto-dismiss. Default 5000. */\n duration?: number;\n /** Whether the toast shows a dismiss button. Default true. */\n dismissible?: boolean;\n}\n\n/** Internal data for a toast instance. */\nexport interface ToastData {\n id: string;\n message: string;\n variant: ToastVariant;\n duration: number;\n dismissible: boolean;\n}\n\nlet toastId = 0;\n\n/**\n * Service for showing transient toast notifications.\n *\n * Usage:\n * ```typescript\n * const toast = inject(AtlToastService);\n * toast.show('Saved successfully', { variant: 'success' });\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class AtlToastService {\n readonly toasts = signal<ToastData[]>([]);\n\n private readonly timers = new Map<string, ReturnType<typeof setTimeout>>();\n\n /**\n * Show a toast notification.\n * @returns The unique id of the toast, which can be used with `dismiss()`.\n */\n show(message: string, options?: ToastOptions): string {\n const id = `atl-toast-${toastId++}`;\n const toast: ToastData = {\n id,\n message,\n variant: options?.variant ?? 'default',\n duration: options?.duration ?? 5000,\n dismissible: options?.dismissible ?? true,\n };\n\n this.toasts.update((list) => [...list, toast]);\n\n if (toast.duration > 0) {\n const timer = setTimeout(() => this.dismiss(id), toast.duration);\n this.timers.set(id, timer);\n }\n\n return id;\n }\n\n /** Dismiss a single toast by id. */\n dismiss(id: string): void {\n const timer = this.timers.get(id);\n if (timer !== undefined) {\n clearTimeout(timer);\n this.timers.delete(id);\n }\n this.toasts.update((list) => list.filter((t) => t.id !== id));\n }\n\n /** Clear all active toasts. */\n clear(): void {\n for (const timer of this.timers.values()) {\n clearTimeout(timer);\n }\n this.timers.clear();\n this.toasts.set([]);\n }\n}\n\n/**\n * Individual toast notification.\n *\n * Typically rendered by `atl-toast-container`, but can also be used standalone.\n */\n@Component({\n selector: 'atl-toast',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span class=\"message\">{{ message() }}</span>\n @if (dismissible()) {\n <button class=\"dismiss\" type=\"button\" aria-label=\"Dismiss\" (click)=\"onDismiss()\">\n <atl-icon name=\"close\" size=\"sm\" />\n </button>\n }\n `,\n styleUrl: './atl-toast.css',\n host: {\n '[class]': 'hostClasses()',\n role: 'status',\n },\n})\nexport class AtlToast {\n /** Semantic color variant. */\n readonly variant = input<ToastVariant>('default');\n\n /** Whether to show a dismiss button. */\n readonly dismissible = input(true);\n\n /** The message to display. */\n readonly message = input('');\n\n /** Unique identifier for this toast. */\n readonly toastId = input('');\n\n /** Emitted when the toast is dismissed by the user. */\n readonly dismissed = output<string>();\n\n protected readonly hostClasses = computed(() => `variant-${this.variant()}`);\n\n protected onDismiss(): void {\n this.dismissed.emit(this.toastId());\n }\n}\n\n/**\n * Container that renders the toast stack at a fixed viewport position.\n * Place once in your app root or layout component.\n *\n * Usage:\n * ```html\n * <atl-toast-container position=\"bottom-right\" />\n * ```\n */\n@Component({\n selector: 'atl-toast-container',\n standalone: true,\n imports: [AtlToast],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @for (toast of toastService.toasts(); track toast.id) {\n <atl-toast\n [variant]=\"toast.variant\"\n [dismissible]=\"toast.dismissible\"\n [message]=\"toast.message\"\n [toastId]=\"toast.id\"\n (dismissed)=\"toastService.dismiss($event)\"\n />\n }\n `,\n styleUrl: './atl-toast-container.css',\n host: {\n '[class]': 'hostClasses()',\n 'aria-live': 'polite',\n role: 'status',\n },\n})\nexport class AtlToastContainer {\n protected readonly toastService = inject(AtlToastService);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Position of the toast stack on the viewport. */\n readonly position = input<'top-right' | 'top-center' | 'bottom-right' | 'bottom-center'>('bottom-right');\n\n protected readonly hostClasses = computed(() => `position-${this.position()}`);\n\n constructor() {\n this.destroyRef.onDestroy(() => this.toastService.clear());\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n contentChildren,\n effect,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/**\n * Displays a user avatar with image, initials, or icon fallback.\n *\n * Fallback order: image → initials (from `name`) → generic icon.\n *\n * Usage:\n * ```html\n * <atl-avatar src=\"https://example.com/photo.jpg\" name=\"Jane Doe\" />\n * <atl-avatar name=\"John Smith\" size=\"lg\" status=\"online\" />\n * <atl-avatar size=\"sm\" shape=\"square\" />\n * ```\n */\n@Component({\n selector: 'atl-avatar',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <!-- eslint-disable -->\n @if (src() && showImage()) {\n <img [src]=\"src()\" [alt]=\"alt()\" (error)=\"showImage.set(false)\" />\n } @else if (initials()) {\n <span class=\"initials\" aria-hidden=\"true\">{{ initials() }}</span>\n } @else {\n <atl-icon name=\"person\" size=\"sm\" class=\"icon\" />\n }\n @if (status()) {\n <span [class]=\"'status-dot status-' + status()\" aria-hidden=\"true\"></span>\n }\n `,\n styleUrl: './atl-avatar.css',\n host: {\n '[class]': 'hostClasses()',\n role: 'img',\n '[attr.aria-label]': 'ariaLabel()',\n },\n})\nexport class AtlAvatar {\n /** Image URL. Falls back to initials or icon if empty or fails to load. */\n readonly src = input('');\n\n /** Alt text for the image (also used as aria-label). */\n readonly alt = input('');\n\n /** Full name used to generate initials fallback and default aria-label. */\n readonly name = input('');\n\n /** Size of the avatar. */\n readonly size = input<'xs' | 'sm' | 'md' | 'lg' | 'xl'>('md');\n\n /** Shape of the avatar. */\n readonly shape = input<'circle' | 'square'>('circle');\n\n /** Presence status indicator dot. Empty string hides the dot. */\n readonly status = input<'online' | 'offline' | 'away' | 'busy' | ''>('');\n\n /** @internal — reset to true whenever src changes */\n protected readonly showImage = signal(true);\n\n /** @internal */\n protected readonly initials = computed(() => {\n const name = this.name();\n if (!name) return '';\n return name\n .split(' ')\n .filter(Boolean)\n .slice(0, 2)\n .map((w) => w[0].toUpperCase())\n .join('');\n });\n\n /** @internal */\n protected readonly ariaLabel = computed(\n () => this.alt() || this.name() || 'Avatar'\n );\n\n /** @internal */\n protected readonly hostClasses = computed(\n () => `size-${this.size()} shape-${this.shape()}`\n );\n\n constructor() {\n effect(() => {\n this.src(); // track src changes\n untracked(() => this.showImage.set(true));\n });\n }\n}\n\n/**\n * Groups multiple avatars with overlap and an overflow count badge.\n *\n * Usage:\n * ```html\n * <atl-avatar-group [max]=\"3\" size=\"md\">\n * <atl-avatar name=\"Alice\" />\n * <atl-avatar name=\"Bob\" />\n * <atl-avatar name=\"Charlie\" />\n * <atl-avatar name=\"Dave\" />\n * </atl-avatar-group>\n * ```\n */\n@Component({\n selector: 'atl-avatar-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-content />\n @if (overflowCount() > 0) {\n <span [class]=\"'overflow-badge size-' + size()\">+{{ overflowCount() }}</span>\n }\n `,\n styleUrl: './atl-avatar.css',\n host: {\n class: 'group',\n '[class]': '\"group size-\" + size()',\n },\n})\nexport class AtlAvatarGroup {\n /** Maximum visible avatars before showing an overflow count. */\n readonly max = input(5);\n\n /** Size applied to the overflow badge (match the size used on child avatars). */\n readonly size = input<'xs' | 'sm' | 'md' | 'lg' | 'xl'>('md');\n\n private readonly avatarEls = contentChildren(AtlAvatar, { read: ElementRef });\n\n protected readonly overflowCount = computed(() =>\n Math.max(0, this.avatarEls().length - this.max())\n );\n\n constructor() {\n effect(() => {\n const max = this.max();\n this.avatarEls().forEach((el, i) => {\n (el.nativeElement as HTMLElement).style.display = i >= max ? 'none' : '';\n });\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\n\n/**\n * Progress bar with determinate and indeterminate states.\n *\n * Usage:\n * ```html\n * <atl-progress [value]=\"75\" />\n * <atl-progress variant=\"success\" [value]=\"100\" />\n * <atl-progress [indeterminate]=\"true\" />\n * ```\n */\n@Component({\n selector: 'atl-progress',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"track\">\n <div class=\"fill\" [style.width]=\"fillWidth()\"></div>\n </div>\n `,\n styleUrl: './atl-progress.css',\n host: {\n role: 'progressbar',\n 'aria-valuemin': '0',\n '[attr.aria-valuenow]': 'indeterminate() ? null : clampedValue()',\n '[attr.aria-valuemax]': 'indeterminate() ? null : max()',\n '[attr.aria-label]': 'label() || null',\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlProgress {\n /** Current value of the progress bar. */\n readonly value = input<number>(0);\n\n /** Maximum value. */\n readonly max = input<number>(100);\n\n /** Semantic color variant. */\n readonly variant = input<'default' | 'success' | 'warning' | 'danger'>('default');\n\n /** Height size of the track. */\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n\n /** Shows an animated indeterminate state (loading). */\n readonly indeterminate = input(false);\n\n /**\n * Accessible name — rendered as `aria-label` on the host.\n * Required by ARIA when there is no visible label nearby.\n */\n readonly label = input<string | undefined>(undefined);\n\n protected readonly clampedValue = computed(() =>\n Math.min(Math.max(this.value(), 0), this.max())\n );\n\n protected readonly fillWidth = computed(() =>\n this.indeterminate()\n ? '100%'\n : `${(this.clampedValue() / this.max()) * 100}%`\n );\n\n protected readonly hostClasses = computed(\n () =>\n `variant-${this.variant()} size-${this.size()}${this.indeterminate() ? ' is-indeterminate' : ''}`\n );\n}\n","import { InjectionToken, Signal } from '@angular/core';\n\nexport interface AtlBreadcrumbsContext {\n registerItem(): number;\n unregisterItem(id: number): void;\n readonly lastItemId: Signal<number>;\n}\n\nexport const ATL_BREADCRUMBS = new InjectionToken<AtlBreadcrumbsContext>('ATL_BREADCRUMBS');\n","import {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport type { AtlBreadcrumbsSpec } from '../spec';\nimport { ATL_BREADCRUMBS } from './atl-breadcrumbs.token';\n\n/**\n * Accessible breadcrumb navigation. Wrap `atl-breadcrumb-item` elements inside.\n * The last item is automatically marked as the current page.\n *\n * Usage:\n * ```html\n * <atl-breadcrumbs>\n * <atl-breadcrumb-item href=\"/home\">Home</atl-breadcrumb-item>\n * <atl-breadcrumb-item href=\"/products\">Products</atl-breadcrumb-item>\n * <atl-breadcrumb-item>Widget X</atl-breadcrumb-item>\n * </atl-breadcrumbs>\n * ```\n */\n@Component({\n selector: 'atl-breadcrumbs',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ATL_BREADCRUMBS,\n useFactory: (bc: AtlBreadcrumbs) => ({\n registerItem: () => bc.registerItem(),\n unregisterItem: (id: number) => bc.unregisterItem(id),\n lastItemId: bc.lastItemId,\n }),\n deps: [AtlBreadcrumbs],\n },\n ],\n template: `\n <nav aria-label=\"Breadcrumb\">\n <ol role=\"list\" class=\"list\">\n <ng-content />\n </ol>\n </nav>\n `,\n styleUrl: './atl-breadcrumbs.css',\n host: {\n class: 'atl-breadcrumbs',\n '[style.--atl-separator]': 'separatorCssVar()',\n },\n})\nexport class AtlBreadcrumbs {\n readonly separator = input<AtlBreadcrumbsSpec['separator']>('/');\n\n protected readonly separatorCssVar = computed(() => `'${this.separator()}'`);\n\n private readonly _itemIds = signal<number[]>([]);\n private _nextId = 0;\n\n /** @internal — used by AtlBreadcrumbItem via ATL_BREADCRUMBS token */\n readonly lastItemId = computed(() => {\n const ids = this._itemIds();\n return ids.length > 0 ? ids[ids.length - 1] : -1;\n });\n\n /** @internal */\n registerItem(): number {\n const id = this._nextId++;\n this._itemIds.update((ids) => [...ids, id]);\n return id;\n }\n\n /** @internal */\n unregisterItem(id: number): void {\n this._itemIds.update((ids) => ids.filter((i) => i !== id));\n }\n}\n\n/**\n * A single breadcrumb step. The last item is automatically treated as\n * `aria-current=\"page\"` and rendered as plain text (no link).\n */\n@Component({\n selector: 'atl-breadcrumb-item',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <li class=\"item\">\n <a\n [attr.href]=\"href() && !isCurrent() ? href() : null\"\n [attr.aria-current]=\"isCurrent() ? 'page' : null\"\n ><ng-content /></a>\n </li>\n `,\n styleUrl: './atl-breadcrumbs.css',\n host: {\n class: 'atl-breadcrumb-item',\n '[class.is-current]': 'isCurrent()',\n },\n})\nexport class AtlBreadcrumbItem implements OnInit, OnDestroy {\n /** Optional href for navigation. Ignored on the last (current) item. */\n readonly href = input('');\n\n private readonly context = inject(ATL_BREADCRUMBS);\n private readonly myIndex = signal(-1);\n\n protected readonly isCurrent = computed(\n () => this.myIndex() >= 0 && this.myIndex() === this.context.lastItemId()\n );\n\n ngOnInit(): void {\n this.myIndex.set(this.context.registerItem());\n }\n\n ngOnDestroy(): void {\n if (this.myIndex() >= 0) {\n this.context.unregisterItem(this.myIndex());\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n} from '@angular/core';\n\nexport type PageItem =\n | { type: 'page'; page: number }\n | { type: 'ellipsis'; key: string };\n\n/**\n * Pagination control for navigating multi-page content.\n *\n * Usage:\n * ```html\n * <atl-pagination [(page)]=\"currentPage\" [pageCount]=\"totalPages\" />\n * ```\n */\n@Component({\n selector: 'atl-pagination',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <nav aria-label=\"Pagination\">\n <ul role=\"list\" class=\"page-list\">\n @if (showFirstLast()) {\n <li>\n <button\n class=\"page-btn\"\n [class.is-disabled]=\"page() <= 1\"\n [disabled]=\"page() <= 1\"\n aria-label=\"First page\"\n (click)=\"goFirst()\"\n >«</button>\n </li>\n }\n <li>\n <button\n class=\"page-btn\"\n [class.is-disabled]=\"page() <= 1\"\n [disabled]=\"page() <= 1\"\n aria-label=\"Previous page\"\n (click)=\"goPrev()\"\n >‹</button>\n </li>\n\n @for (item of pageItems(); track $index) {\n @if (item.type === 'page') {\n <li>\n <button\n class=\"page-btn\"\n [class.is-active]=\"item.page === page()\"\n [attr.aria-current]=\"item.page === page() ? 'page' : null\"\n [attr.aria-label]=\"'Page ' + item.page\"\n (click)=\"goTo(item.page)\"\n >{{ item.page }}</button>\n </li>\n } @else {\n <li>\n <span class=\"ellipsis\" aria-hidden=\"true\">…</span>\n </li>\n }\n }\n\n <li>\n <button\n class=\"page-btn\"\n [class.is-disabled]=\"page() >= pageCount()\"\n [disabled]=\"page() >= pageCount()\"\n aria-label=\"Next page\"\n (click)=\"goNext()\"\n >›</button>\n </li>\n @if (showFirstLast()) {\n <li>\n <button\n class=\"page-btn\"\n [class.is-disabled]=\"page() >= pageCount()\"\n [disabled]=\"page() >= pageCount()\"\n aria-label=\"Last page\"\n (click)=\"goLast()\"\n >»</button>\n </li>\n }\n </ul>\n </nav>\n `,\n styleUrl: './atl-pagination.css',\n})\nexport class AtlPagination {\n /** Current page (1-based). Supports two-way binding: [(page)]=\"currentPage\". */\n readonly page = model(1);\n\n /** Total number of pages. */\n readonly pageCount = input(1);\n\n /** Number of page buttons to show on each side of the current page. */\n readonly siblingCount = input(1);\n\n /** Whether to show first/last page jump buttons. */\n readonly showFirstLast = input(true);\n\n protected readonly pageItems = computed((): PageItem[] => {\n const total = this.pageCount();\n const current = this.page();\n const siblings = this.siblingCount();\n\n if (total <= 1) return [{ type: 'page', page: 1 }];\n\n const items: PageItem[] = [];\n\n // Always include first page\n items.push({ type: 'page', page: 1 });\n\n const left = Math.max(2, current - siblings);\n const right = Math.min(total - 1, current + siblings);\n\n // Left ellipsis\n if (left > 2) {\n items.push({ type: 'ellipsis', key: 'ellipsis-start' });\n }\n\n // Middle pages\n for (let p = left; p <= right; p++) {\n items.push({ type: 'page', page: p });\n }\n\n // Right ellipsis\n if (right < total - 1) {\n items.push({ type: 'ellipsis', key: 'ellipsis-end' });\n }\n\n // Always include last page\n items.push({ type: 'page', page: total });\n\n return items;\n });\n\n protected goTo(p: number): void {\n const clamped = Math.min(Math.max(p, 1), this.pageCount());\n this.page.set(clamped);\n }\n\n protected goPrev(): void {\n this.goTo(this.page() - 1);\n }\n\n protected goNext(): void {\n this.goTo(this.page() + 1);\n }\n\n protected goFirst(): void {\n this.goTo(1);\n }\n\n protected goLast(): void {\n this.goTo(this.pageCount());\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface AtlDrawerContext {\n headerId: string;\n close: () => void;\n}\n\nexport const ATL_DRAWER = new InjectionToken<AtlDrawerContext>('ATL_DRAWER');\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ATL_DRAWER } from './atl-drawer.token';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Slide-in drawer panel using the native `<dialog>` element.\n * Supports left, right, top, and bottom positions with focus trap,\n * Escape to close, and backdrop click to close.\n * Compose with `atl-drawer-header`, `atl-drawer-content`, and `atl-drawer-footer`.\n *\n * Usage:\n * ```html\n * <atl-button (click)=\"isOpen = true\">Open</atl-button>\n * <atl-drawer [(open)]=\"isOpen\" position=\"right\">\n * <atl-drawer-header>Settings</atl-drawer-header>\n * <atl-drawer-content>Content here.</atl-drawer-content>\n * <atl-drawer-footer>\n * <atl-button variant=\"primary\" (click)=\"isOpen = false\">Save</atl-button>\n * </atl-drawer-footer>\n * </atl-drawer>\n * ```\n */\n@Component({\n selector: 'atl-drawer',\n standalone: true,\n imports: [A11yModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ATL_DRAWER,\n useFactory: (drawer: AtlDrawer) => ({\n headerId: drawer.headerId,\n close: () => drawer.open.set(false),\n }),\n deps: [AtlDrawer],\n },\n ],\n template: `\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <dialog\n #dialogEl\n [attr.aria-labelledby]=\"headerId\"\n aria-modal=\"true\"\n [cdkTrapFocus]=\"open()\"\n (cancel)=\"onCancel($event)\"\n (close)=\"open.set(false)\"\n (click)=\"onBackdropClick($event)\"\n >\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div class=\"panel\" (click)=\"$event.stopPropagation()\">\n <ng-content />\n </div>\n </dialog>\n `,\n styleUrl: './atl-drawer.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlDrawer {\n /** Whether the drawer is open. Supports two-way binding: [(open)]=\"isOpen\". */\n readonly open = model(false);\n\n /** Which edge the drawer slides in from. */\n readonly position = input<'left' | 'right' | 'top' | 'bottom'>('right');\n\n /** Width (for left/right) or height (for top/bottom) of the panel. */\n readonly size = input<'sm' | 'md' | 'lg' | 'full'>('md');\n\n /** Whether clicking the backdrop closes the drawer. */\n readonly closeOnBackdrop = input(true);\n\n /** @internal — referenced by AtlDrawerHeader via ATL_DRAWER token */\n readonly headerId = `atl-drawer-header-${nextId}`;\n\n protected readonly drawerId = `atl-drawer-${nextId++}`;\n protected readonly dialogRef = viewChild<ElementRef<HTMLDialogElement>>('dialogEl');\n private readonly triggerEl = signal<HTMLElement | null>(null);\n\n protected readonly hostClasses = computed(\n () =>\n `atl-drawer position-${this.position()} size-${this.size()}${this.open() ? ' is-open' : ''}`\n );\n\n constructor() {\n effect(() => {\n const dialog = this.dialogRef()?.nativeElement;\n if (!dialog) return;\n if (this.open()) {\n this.triggerEl.set(document.activeElement as HTMLElement);\n dialog.showModal();\n } else {\n if (dialog.open) dialog.close();\n this.triggerEl()?.focus();\n this.triggerEl.set(null);\n }\n });\n }\n\n protected onCancel(event: Event): void {\n event.preventDefault();\n this.open.set(false);\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (this.closeOnBackdrop() && event.target === this.dialogRef()?.nativeElement) {\n this.open.set(false);\n }\n }\n}\n\n/**\n * Header slot for `atl-drawer`. Contains the title and a close button.\n * Automatically receives the correct `id` for `aria-labelledby` association.\n */\n@Component({\n selector: 'atl-drawer-header',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-content />\n <button\n class=\"close-btn\"\n type=\"button\"\n aria-label=\"Close drawer\"\n (click)=\"context.close()\"\n >\n <atl-icon name=\"close\" size=\"sm\" />\n </button>\n `,\n styleUrl: './atl-drawer.css',\n host: {\n class: 'atl-drawer-header',\n '[attr.id]': 'context.headerId',\n },\n})\nexport class AtlDrawerHeader {\n protected readonly context = inject(ATL_DRAWER);\n}\n\n/**\n * Content slot for `atl-drawer`. Scrollable primary content area.\n */\n@Component({\n selector: 'atl-drawer-content',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-drawer.css',\n host: { class: 'atl-drawer-content' },\n})\nexport class AtlDrawerContent {}\n\n/**\n * Footer slot for `atl-drawer`. Renders at the bottom with action buttons.\n */\n@Component({\n selector: 'atl-drawer-footer',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-drawer.css',\n host: { class: 'atl-drawer-footer' },\n})\nexport class AtlDrawerFooter {}\n","import {\n ChangeDetectionStrategy,\n Component,\n InjectionToken,\n Signal,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { AtlCheckbox } from '../checkbox/atl-checkbox';\nimport { AtlIcon } from '../icon/atl-icon';\n\n// ---------------------------------------------------------------------------\n// Context token\n// ---------------------------------------------------------------------------\n\nexport interface AtlTableContext {\n readonly size: Signal<'sm' | 'md' | 'lg'>;\n readonly variant: Signal<'default' | 'striped' | 'bordered'>;\n}\n\nexport const ATL_TABLE = new InjectionToken<AtlTableContext>('ATL_TABLE');\n\n// ---------------------------------------------------------------------------\n// AtlTable\n// ---------------------------------------------------------------------------\n\n/**\n * Accessible data table with sorting, row selection, sticky header, and empty state.\n * Compose with `atl-thead`, `atl-tbody`, `atl-tr`, `atl-th`, and `atl-td`.\n *\n * Usage:\n * ```html\n * <atl-table variant=\"striped\" [stickyHeader]=\"true\">\n * <atl-thead>\n * <atl-tr>\n * <atl-th sortable [sortDirection]=\"sort\" (sort)=\"sort = $event\">Name</atl-th>\n * <atl-th>Status</atl-th>\n * </atl-tr>\n * </atl-thead>\n * <atl-tbody [empty]=\"rows.length === 0\" [colSpan]=\"2\">\n * @for (row of rows; track row.id) {\n * <atl-tr selectable [selected]=\"selection.has(row.id)\" (selectedChange)=\"toggle(row.id, $event)\">\n * <atl-td>{{ row.name }}</atl-td>\n * <atl-td>{{ row.status }}</atl-td>\n * </atl-tr>\n * }\n * <div atlTableEmpty>No results found.</div>\n * </atl-tbody>\n * </atl-table>\n * ```\n */\n@Component({\n selector: 'atl-table',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <!-- The wrapper is the scrollable region — tabindex=0 lets keyboard\n users scroll horizontally through wide tables. role=region +\n aria-label expose it as a labelled landmark for screen readers\n (axe: scrollable-region-focusable). -->\n <div\n class=\"atl-table-wrapper\"\n tabindex=\"0\"\n role=\"region\"\n [attr.aria-label]=\"ariaLabel() || 'Table'\"\n >\n <table>\n <ng-content />\n </table>\n </div>\n `,\n styleUrl: './atl-table.css',\n host: {\n '[class]': 'hostClasses()',\n },\n providers: [{ provide: ATL_TABLE, useExisting: AtlTable }],\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None\n})\nexport class AtlTable implements AtlTableContext {\n /** Visual style of the table rows. */\n readonly variant = input<'default' | 'striped' | 'bordered'>('default');\n\n /** Row density. */\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n\n /** Whether the header row sticks to the top when the table scrolls. */\n readonly stickyHeader = input(false);\n\n /**\n * Accessible name for the scrollable table region. Surfaces to\n * screen readers as the region's label so keyboard users who\n * scroll the wrapper know what they're scrolling. Defaults to\n * `\"Table\"` if unset.\n */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes = ['atl-table', `variant-${this.variant()}`, `size-${this.size()}`];\n if (this.stickyHeader()) classes.push('is-sticky-header');\n return classes.join(' ');\n });\n}\n\n// ---------------------------------------------------------------------------\n// AtlThead\n// ---------------------------------------------------------------------------\n\n/**\n * Table head section. Contains header rows with `atl-tr` and `atl-th`.\n *\n * Usage:\n * ```html\n * <atl-thead>\n * <atl-tr>\n * <atl-th sortable [sortDirection]=\"sort\" (sort)=\"sort = $event\">Name</atl-th>\n * </atl-tr>\n * </atl-thead>\n * ```\n */\n@Component({\n selector: 'atl-thead',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<thead><ng-content /></thead>`,\n styleUrl: './atl-table.css',\n host: { '[style.display]': '\"contents\"' },\n})\nexport class AtlThead {}\n\n// ---------------------------------------------------------------------------\n// AtlTbody\n// ---------------------------------------------------------------------------\n\n/**\n * Table body section. Shows rows or an empty state.\n *\n * Usage:\n * ```html\n * <atl-tbody [empty]=\"rows.length === 0\" [colSpan]=\"3\">\n * @for (row of rows; track row.id) {\n * <atl-tr><atl-td>{{ row.name }}</atl-td></atl-tr>\n * }\n * <div atlTableEmpty>No results found.</div>\n * </atl-tbody>\n * ```\n */\n@Component({\n selector: 'atl-tbody',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <tbody>\n @if (!empty()) {\n <ng-content />\n } @else {\n <tr>\n <td [attr.colspan]=\"colSpan()\" class=\"atl-tbody-empty-cell\">\n <ng-content select=\"[atlTableEmpty]\" />\n </td>\n </tr>\n }\n </tbody>\n `,\n styleUrl: './atl-table.css',\n host: { '[style.display]': '\"contents\"' },\n})\nexport class AtlTbody {\n /** When true, hides rows and shows the `[atlTableEmpty]` slot content instead. */\n readonly empty = input(false);\n\n /** Number of columns to span in the empty-state row. Should match total column count. */\n readonly colSpan = input(1);\n}\n\n// ---------------------------------------------------------------------------\n// AtlTr\n// ---------------------------------------------------------------------------\n\n/**\n * Table row. Use inside `atl-thead` or `atl-tbody`.\n * Set `selectable` to auto-add a checkbox column for row selection.\n *\n * Usage:\n * ```html\n * <atl-tr selectable [selected]=\"isSelected\" (selectedChange)=\"toggle($event)\">\n * <atl-td>Cell content</atl-td>\n * </atl-tr>\n * ```\n */\n@Component({\n selector: 'atl-tr',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AtlCheckbox],\n template: `\n <tr\n [attr.aria-selected]=\"selectable() ? selected() : null\"\n [class]=\"innerClasses()\"\n >\n @if (selectable()) {\n <td class=\"atl-tr-select-cell\">\n <atl-checkbox [checked]=\"selected()\" (checkedChange)=\"selectedChange.emit($event)\" />\n </td>\n }\n <ng-content />\n </tr>\n `,\n styleUrl: './atl-table.css',\n host: {\n '[class]': 'hostClasses()',\n '[style.display]': '\"contents\"',\n },\n})\nexport class AtlTr {\n /** Whether this row is currently selected. */\n readonly selected = input(false);\n\n /** Whether this row shows a selection checkbox. */\n readonly selectable = input(false);\n\n /** Optional identifier for this row. Useful for tracking selection. */\n readonly rowId = input<string | undefined>(undefined);\n\n /** Emits when the row's checkbox is toggled. */\n readonly selectedChange = output<boolean>();\n\n /** @internal */\n protected readonly hostClasses = computed(() =>\n this.selectable() ? 'is-selectable' : ''\n );\n\n /** @internal — applied to inner <tr> for CSS selection styling */\n protected readonly innerClasses = computed(() =>\n this.selected() ? 'is-selected' : ''\n );\n}\n\n// ---------------------------------------------------------------------------\n// AtlTh\n// ---------------------------------------------------------------------------\n\n/** Sort direction for sortable column headers. */\nexport type AtlSortDirection = 'asc' | 'desc' | null;\n\n/**\n * Table header cell. Set `sortable` to enable sort cycling.\n * The consumer controls `sortDirection` (fully controlled — no internal state).\n *\n * Usage:\n * ```html\n * <atl-th sortable [sortDirection]=\"nameSortDir\" (sort)=\"nameSortDir = $event\">Name</atl-th>\n * ```\n */\n@Component({\n selector: 'atl-th',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <th\n [attr.aria-sort]=\"ariaSort()\"\n [style.width]=\"width() ?? null\"\n [class]=\"cellClasses()\"\n >\n @if (sortable()) {\n <button type=\"button\" class=\"atl-th-sort-btn\" (click)=\"cycleSort()\">\n <ng-content />\n <span class=\"atl-th-sort-icon\" aria-hidden=\"true\">\n <atl-icon name=\"sort-asc\" size=\"sm\" class=\"atl-th-sort-asc-arrow\" />\n <atl-icon name=\"sort-desc\" size=\"sm\" class=\"atl-th-sort-desc-arrow\" />\n </span>\n </button>\n } @else {\n <ng-content />\n }\n </th>\n `,\n styleUrl: './atl-table.css',\n host: { '[style.display]': '\"contents\"' },\n})\nexport class AtlTh {\n /** Whether this column is sortable. Renders a sort button when true. */\n readonly sortable = input(false);\n\n /** Current sort direction. Fully controlled — the consumer owns this state. */\n readonly sortDirection = input<AtlSortDirection>(null);\n\n /** Text alignment of the header cell content. */\n readonly align = input<'start' | 'center' | 'end'>('start');\n\n /** Fixed column width (e.g. `'120px'`, `'10rem'`). */\n readonly width = input<string | undefined>(undefined);\n\n /**\n * Emits when the header is clicked.\n * Cycles: `null` → `'asc'` → `'desc'` → `null`.\n */\n readonly sort = output<AtlSortDirection>();\n\n /** @internal */\n protected readonly ariaSort = computed(() => {\n if (!this.sortable()) return undefined;\n const d = this.sortDirection();\n if (d === 'asc') return 'ascending';\n if (d === 'desc') return 'descending';\n return 'none';\n });\n\n /** @internal */\n protected readonly cellClasses = computed(() => {\n const classes = [`align-${this.align()}`];\n if (this.sortDirection()) classes.push('is-sorted');\n if (this.sortDirection() === 'asc') classes.push('sort-asc');\n if (this.sortDirection() === 'desc') classes.push('sort-desc');\n return classes.join(' ');\n });\n\n /** @internal */\n protected cycleSort(): void {\n const current = this.sortDirection();\n const next: AtlSortDirection =\n current === null ? 'asc' : current === 'asc' ? 'desc' : null;\n this.sort.emit(next);\n }\n}\n\n// ---------------------------------------------------------------------------\n// AtlTd\n// ---------------------------------------------------------------------------\n\n/**\n * Table data cell. Use inside `atl-tr` inside `atl-tbody`.\n *\n * Usage:\n * ```html\n * <atl-td align=\"end\">{{ value }}</atl-td>\n * ```\n */\n@Component({\n selector: 'atl-td',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <td [class]=\"'align-' + align()\">\n <ng-content />\n </td>\n `,\n styleUrl: './atl-table.css',\n host: { '[style.display]': '\"contents\"' },\n})\nexport class AtlTd {\n /** Text alignment of the cell content. */\n readonly align = input<'start' | 'center' | 'end'>('start');\n}\n","import { InjectionToken } from '@angular/core';\nimport type { Signal, WritableSignal } from '@angular/core';\n\nexport interface StepInfo {\n id: string;\n label: string;\n description?: string;\n completed: boolean;\n error: boolean;\n optional: boolean;\n disabled: boolean;\n}\n\nexport interface AtlStepperContext {\n readonly activeStep: WritableSignal<number>;\n readonly steps: Signal<StepInfo[]>;\n readonly linear: Signal<boolean>;\n registerStep(info: StepInfo): void;\n unregisterStep(id: string): void;\n updateStep(id: string, info: Partial<StepInfo>): void;\n goTo(index: number): void;\n next(): void;\n prev(): void;\n}\n\nexport const ATL_STEPPER = new InjectionToken<AtlStepperContext>('ATL_STEPPER');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { ATL_STEPPER, type AtlStepperContext, type StepInfo } from './atl-stepper.token';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Multi-step wizard container.\n *\n * Usage:\n * ```html\n * <atl-stepper [(activeStep)]=\"step\">\n * <atl-step label=\"Account\">Account form here.</atl-step>\n * <atl-step label=\"Profile\">Profile form here.</atl-step>\n * <atl-step label=\"Review\">Review and submit.</atl-step>\n * </atl-stepper>\n * ```\n */\n@Component({\n selector: 'atl-stepper',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"stepper-header\" role=\"tablist\">\n @for (step of steps(); track step.id; let i = $index; let last = $last) {\n <div\n class=\"step-item\"\n [class.is-active]=\"activeStep() === i\"\n [class.is-completed]=\"step.completed && activeStep() !== i\"\n [class.is-error]=\"step.error\"\n [class.is-disabled]=\"step.disabled\"\n >\n <button\n type=\"button\"\n role=\"tab\"\n class=\"step-circle\"\n [id]=\"'atl-step-' + i\"\n [attr.aria-label]=\"step.label\"\n [attr.aria-selected]=\"activeStep() === i\"\n [attr.aria-controls]=\"'atl-step-panel-' + i\"\n [attr.aria-disabled]=\"step.disabled || null\"\n [attr.tabindex]=\"activeStep() === i ? 0 : -1\"\n [disabled]=\"step.disabled || null\"\n (click)=\"goTo(i)\"\n >\n @if (step.completed && !step.error) {\n <atl-icon name=\"check\" size=\"sm\" />\n } @else if (step.error) {\n <atl-icon name=\"close\" size=\"sm\" />\n } @else {\n {{ i + 1 }}\n }\n </button>\n <div class=\"step-text\">\n <span class=\"step-label\">{{ step.label }}</span>\n @if (step.description) {\n <span class=\"step-description\">{{ step.description }}</span>\n }\n @if (step.optional && !step.completed) {\n <span class=\"step-optional\">Optional</span>\n }\n </div>\n </div>\n @if (!last) {\n <div\n class=\"step-connector\"\n [class.is-active]=\"activeStep() > i || step.completed\"\n ></div>\n }\n }\n </div>\n <div class=\"stepper-content\">\n <ng-content />\n </div>\n `,\n styleUrl: './atl-stepper.css',\n host: {\n '[class]': 'hostClasses()',\n },\n providers: [{ provide: ATL_STEPPER, useExisting: AtlStepper }],\n})\nexport class AtlStepper implements AtlStepperContext {\n /** Index of the currently active step. Supports two-way binding. */\n readonly activeStep = model(0);\n\n /** Layout orientation. */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n /**\n * When true, users can only navigate to completed steps or the next pending step.\n * Use `goTo()` / `next()` in your step content to advance programmatically.\n */\n readonly linear = input(false);\n\n /** @internal */\n readonly steps = signal<StepInfo[]>([]);\n\n /** @internal */\n protected readonly hostClasses = computed(\n () => `orientation-${this.orientation()}`\n );\n\n /** @internal — called by AtlStep on init */\n registerStep(info: StepInfo): void {\n this.steps.update((list) => [...list, info]);\n }\n\n /** @internal — called by AtlStep on destroy */\n unregisterStep(id: string): void {\n this.steps.update((list) => list.filter((s) => s.id !== id));\n }\n\n /** @internal — called by AtlStep effect when inputs change */\n updateStep(id: string, info: Partial<StepInfo>): void {\n this.steps.update((list) =>\n list.map((s) => (s.id === id ? { ...s, ...info } : s))\n );\n }\n\n /** Navigate to a specific step index. Respects linear mode. */\n goTo(index: number): void {\n const steps = this.steps();\n if (index < 0 || index >= steps.length) return;\n if (steps[index].disabled) return;\n if (this.linear()) {\n // In linear mode, only allow going back or to the next uncompleted step\n const canGoForward = steps.slice(0, index).every((s) => s.completed || s.optional);\n if (index > this.activeStep() && !canGoForward) return;\n }\n this.activeStep.set(index);\n }\n\n /** Advance to the next step. */\n next(): void {\n this.goTo(this.activeStep() + 1);\n }\n\n /** Go back to the previous step. */\n prev(): void {\n const prev = this.activeStep() - 1;\n if (prev < 0) return;\n const steps = this.steps();\n if (steps[prev]?.disabled) return;\n this.activeStep.set(prev);\n }\n}\n\n/**\n * Individual step. Place inside `<atl-stepper>`.\n *\n * Usage:\n * ```html\n * <atl-step label=\"Account\">Account form here.</atl-step>\n * ```\n */\n@Component({\n selector: 'atl-step',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (isActive()) {\n <div\n role=\"tabpanel\"\n [id]=\"'atl-step-panel-' + myIndex()\"\n [attr.aria-labelledby]=\"'atl-step-' + myIndex()\"\n tabindex=\"0\"\n >\n <ng-content />\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class AtlStep implements OnInit, OnDestroy {\n /** Text displayed on the step indicator. Required. */\n readonly label = input.required<string>();\n\n /** Optional subtitle shown below the label. */\n readonly description = input<string | undefined>(undefined);\n\n /** Mark this step as completed (shows a checkmark). */\n readonly completed = input(false);\n\n /** Mark this step as having an error (shows an X). */\n readonly error = input(false);\n\n /** Mark this step as optional. */\n readonly optional = input(false);\n\n /** Whether this step is disabled. */\n readonly disabled = input(false);\n\n /** @internal */\n private readonly id = `atl-step-instance-${nextId++}`;\n\n /** @internal */\n private readonly context = inject(ATL_STEPPER);\n\n /** @internal */\n protected readonly myIndex = computed(() =>\n this.context.steps().findIndex((s) => s.id === this.id)\n );\n\n /** @internal */\n protected readonly isActive = computed(\n () => this.context.activeStep() === this.myIndex()\n );\n\n constructor() {\n // Keep step info in sync when inputs change\n effect(() => {\n if (this.myIndex() === -1) return;\n this.context.updateStep(this.id, {\n label: this.label(),\n description: this.description(),\n completed: this.completed(),\n error: this.error(),\n optional: this.optional(),\n disabled: this.disabled(),\n });\n });\n }\n\n ngOnInit(): void {\n this.context.registerStep({\n id: this.id,\n label: this.label(),\n description: this.description(),\n completed: this.completed(),\n error: this.error(),\n optional: this.optional(),\n disabled: this.disabled(),\n });\n }\n\n ngOnDestroy(): void {\n this.context.unregisterStep(this.id);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n signal,\n} from '@angular/core';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/**\n * Displays a block of code with an optional header, language label, and copy button.\n * Designed for rendering LLM-generated code output, inline snippets, and API examples.\n *\n * Usage:\n * ```html\n * <atl-code-block code=\"const x = 1;\" language=\"typescript\" />\n * <atl-code-block [code]=\"generatedCode\" filename=\"app.component.ts\" [showLineNumbers]=\"true\" />\n * ```\n */\n@Component({\n selector: 'atl-code-block',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"code-block-header\">\n <span class=\"code-block-label\">{{ displayLabel() }}</span>\n @if (copyable()) {\n <button\n class=\"code-block-copy\"\n type=\"button\"\n [attr.aria-label]=\"copied() ? 'Copied' : 'Copy code'\"\n (click)=\"copy()\"\n >\n @if (copied()) {\n <atl-icon name=\"check\" size=\"sm\" />\n Copied\n } @else {\n <atl-icon name=\"copy\" size=\"sm\" />\n Copy\n }\n </button>\n }\n </div>\n <div class=\"code-block-body\">\n <pre class=\"code-block-pre\"><code>@if (showLineNumbers()) {\n @for (line of lines(); track $index) {\n <span class=\"code-line\">\n <span class=\"code-line-number\">{{ $index + 1 }}</span>\n <span class=\"code-line-text\">{{ line }}</span>\n </span>\n }\n } @else {\n {{ code() }}\n }</code></pre>\n </div>\n `,\n styleUrl: './atl-code-block.css',\n host: {\n '[class]': '\"atl-code-block\"',\n },\n})\nexport class AtlCodeBlock {\n /** The code string to display. */\n readonly code = input<string>('');\n\n /** Language label shown in the header. Ignored if filename is set. */\n readonly language = input<string>('text');\n\n /** Optional filename shown in the header instead of the language label. */\n readonly filename = input<string>('');\n\n /** Whether to show a copy-to-clipboard button. */\n readonly copyable = input<boolean>(true);\n\n /** Whether to display line numbers alongside the code. */\n readonly showLineNumbers = input<boolean>(false);\n\n protected readonly copied = signal(false);\n\n protected readonly displayLabel = computed(() => this.filename() || this.language());\n\n protected readonly lines = computed(() => this.code().split('\\n'));\n\n protected copy(): void {\n void navigator.clipboard.writeText(this.code()).then(() => {\n this.copied.set(true);\n setTimeout(() => this.copied.set(false), 1800);\n });\n }\n}\n","import { InjectionToken, Signal } from '@angular/core';\nimport type { AtlChatStatus, AtlChatVariant } from '../spec';\n\n/**\n * Context token used by `atl-chat` sub-components (header, input) to\n * read parent state and dispatch close/toggle actions without a direct\n * component reference.\n */\nexport interface AtlChatContext {\n readonly headerId: string;\n readonly variant: Signal<AtlChatVariant>;\n readonly status: Signal<AtlChatStatus>;\n close(): void;\n toggle(): void;\n}\n\nexport const ATL_CHAT = new InjectionToken<AtlChatContext>('ATL_CHAT');\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n afterNextRender,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport type {\n AtlChatMessageRole,\n AtlChatStatus,\n AtlChatVariant,\n} from '../spec';\nimport { ATL_CHAT } from './atl-chat.token';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * AI assistant surface. Three layout variants share the same content slots\n * and can be swapped without changing the children.\n *\n * Variants:\n * - `drawer`: Right-anchored slide-in panel, full viewport height.\n * - `popup`: Floating bubble (bottom-right) + compact chat window.\n * - `inline`: Embedded card, sits inline with page content.\n *\n * Compose with `atl-chat-header`, `atl-chat-messages`, `atl-chat-input`.\n *\n * Usage:\n * ```html\n * <atl-chat variant=\"drawer\" [(open)]=\"isOpen\" status=\"idle\">\n * <atl-chat-header>AI Assistant</atl-chat-header>\n * <atl-chat-messages>\n * <atl-chat-message role=\"assistant\">Hi! How can I help?</atl-chat-message>\n * <atl-chat-message role=\"user\">Show me a sorting function.</atl-chat-message>\n * </atl-chat-messages>\n * <atl-chat-input placeholder=\"Ask anything…\" (send)=\"onSend($event)\" />\n * </atl-chat>\n * ```\n */\n@Component({\n selector: 'atl-chat',\n standalone: true,\n imports: [A11yModule, NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ATL_CHAT,\n useFactory: (chat: AtlChat) => ({\n headerId: chat.headerId,\n variant: chat.variant,\n status: chat.status,\n close: () => chat.open.set(false),\n toggle: () => chat.open.set(!chat.open()),\n }),\n deps: [AtlChat],\n },\n ],\n template: `\n <ng-template #content><ng-content /></ng-template>\n @switch (variant()) {\n @case ('drawer') {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <dialog\n #dialogEl\n [attr.aria-labelledby]=\"headerId\"\n aria-modal=\"true\"\n [cdkTrapFocus]=\"open()\"\n (cancel)=\"onCancel($event)\"\n (close)=\"open.set(false)\"\n (click)=\"onBackdropClick($event)\"\n >\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div class=\"surface drawer-surface\" (click)=\"$event.stopPropagation()\">\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n </dialog>\n }\n @case ('popup') {\n @if (open()) {\n <div class=\"surface popup-surface\" [attr.aria-labelledby]=\"headerId\" role=\"dialog\">\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n }\n <button\n type=\"button\"\n class=\"fab-bubble\"\n [attr.aria-label]=\"open() ? 'Close AI assistant' : 'Open AI assistant'\"\n [attr.aria-expanded]=\"open()\"\n (click)=\"open.set(!open())\"\n >\n <span aria-hidden=\"true\">AI</span>\n </button>\n }\n @default {\n <section class=\"surface inline-surface\" [attr.aria-labelledby]=\"headerId\">\n <ng-container [ngTemplateOutlet]=\"content\" />\n </section>\n }\n }\n `,\n styleUrl: './atl-chat.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlChat {\n /** Layout variant. */\n readonly variant = input<AtlChatVariant>('drawer');\n\n /** Whether the chat is open. Used by drawer/popup; ignored by inline. Two-way bindable via [(open)]. */\n readonly open = model(false);\n\n /** Connection / response status. Drives badge color in header and disables input while streaming. */\n readonly status = input<AtlChatStatus>('idle');\n\n /** @internal — referenced by AtlChatHeader via ATL_CHAT token for aria-labelledby. */\n readonly headerId = `atl-chat-header-${nextId++}`;\n\n protected readonly dialogRef = viewChild<ElementRef<HTMLDialogElement>>('dialogEl');\n private readonly host: ElementRef<HTMLElement> = inject(ElementRef);\n private readonly triggerEl = signal<HTMLElement | null>(null);\n\n protected readonly hostClasses = computed(\n () =>\n `variant-${this.variant()} status-${this.status()}${this.open() ? ' is-open' : ''}`\n );\n\n constructor() {\n // Drawer variant uses native <dialog> open/close lifecycle.\n effect(() => {\n if (this.variant() !== 'drawer') return;\n const dialog = this.dialogRef()?.nativeElement;\n if (!dialog) return;\n if (this.open()) {\n this.triggerEl.set(document.activeElement as HTMLElement);\n dialog.showModal();\n } else {\n if (dialog.open) dialog.close();\n this.triggerEl()?.focus();\n this.triggerEl.set(null);\n }\n });\n\n // Auto-focus the input on open for drawer / popup. Inline variant keeps\n // user focus where it was.\n effect(() => {\n if (!this.open()) return;\n if (this.variant() === 'inline') return;\n // Wait for the surface to be in the DOM (showModal / @if (open) render).\n requestAnimationFrame(() => {\n this.host.nativeElement.querySelector<HTMLTextAreaElement>('textarea')?.focus();\n });\n });\n }\n\n protected onCancel(event: Event): void {\n event.preventDefault();\n this.open.set(false);\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (event.target === this.dialogRef()?.nativeElement) {\n this.open.set(false);\n }\n }\n}\n\n/**\n * Header slot for `atl-chat`. Holds the title, status indicator, and close button.\n * Children are projected into the title area; the close button is rendered automatically.\n */\n@Component({\n selector: 'atl-chat-header',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"title-block\">\n <ng-content />\n </div>\n @if (context.variant() !== 'inline') {\n <button\n type=\"button\"\n class=\"close-btn\"\n aria-label=\"Close chat\"\n (click)=\"context.close()\"\n >\n <atl-icon name=\"close\" size=\"sm\" />\n </button>\n }\n `,\n styleUrl: './atl-chat.css',\n host: {\n '[attr.id]': 'context.headerId',\n },\n})\nexport class AtlChatHeader {\n protected readonly context = inject(ATL_CHAT);\n}\n\n/**\n * Scrollable message list for `atl-chat`. Project `atl-chat-message`,\n * `atl-chat-typing`, or `atl-chat-suggestion` children inside. Auto-scrolls\n * to the bottom whenever children are added or content changes — important\n * for streaming responses where new tokens are appended live.\n */\n@Component({\n selector: 'atl-chat-messages',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-chat.css',\n})\nexport class AtlChatMessages {\n private readonly host: ElementRef<HTMLElement> = inject(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n afterNextRender(() => {\n const el = this.host.nativeElement;\n const stickToBottom = (): void => { el.scrollTop = el.scrollHeight; };\n stickToBottom();\n const observer = new MutationObserver(stickToBottom);\n observer.observe(el, { childList: true, subtree: true, characterData: true });\n this.destroyRef.onDestroy(() => observer.disconnect());\n });\n }\n}\n\n/**\n * A single chat message. Role drives bubble alignment and color.\n *\n * Usage:\n * ```html\n * <atl-chat-message role=\"assistant\">Sure, here you go.</atl-chat-message>\n * <atl-chat-message role=\"user\">Thanks!</atl-chat-message>\n * <atl-chat-message role=\"assistant\" [failed]=\"true\">Couldn't reach the assistant.</atl-chat-message>\n * ```\n */\n@Component({\n selector: 'atl-chat-message',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-chat.css',\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"listitem\"',\n },\n})\nexport class AtlChatMessage {\n /** Sender of the message. Drives bubble alignment and color. */\n readonly role = input<AtlChatMessageRole>('assistant');\n\n /** Marks the message as failed (red dashed border, used in error state). */\n readonly failed = input(false);\n\n protected readonly hostClasses = computed(\n () => `role-${this.role()}${this.failed() ? ' is-failed' : ''}`\n );\n}\n\n/**\n * Typing indicator (three animated dots).\n *\n * Two display modes:\n * - **Standalone bubble** (default) — render as the last child of\n * `AtlChatMessages` to show \"the assistant is starting to respond\"\n * before any tokens arrive.\n * - **Inline cursor** (`inline`) — render as the LAST child INSIDE\n * `AtlChatMessage role=\"assistant\"` to show the dots after the\n * currently-streaming text. The bubble background is dropped so the\n * dots read as a typing caret at the end of the partial response.\n */\n@Component({\n selector: 'atl-chat-typing',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span class=\"dot\"></span>\n <span class=\"dot\"></span>\n <span class=\"dot\"></span>\n <span class=\"sr-only\">Assistant is typing</span>\n `,\n styleUrl: './atl-chat.css',\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"status\"',\n '[attr.aria-live]': '\"polite\"',\n },\n})\nexport class AtlChatTyping {\n /** When true, renders as an inline cursor without bubble chrome. */\n readonly inline = input(false);\n\n protected readonly hostClasses = computed(() =>\n this.inline() ? 'is-inline' : ''\n );\n}\n\n/**\n * Tappable suggestion chip used in the empty state to seed a conversation.\n *\n * Usage:\n * ```html\n * <atl-chat-suggestion label=\"Explain a code snippet\" hint=\"Tap to start →\" (selected)=\"prompt.set($event)\" />\n * ```\n */\n@Component({\n selector: 'atl-chat-suggestion',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button type=\"button\" class=\"chip\" (click)=\"selected.emit(label())\">\n <span class=\"chip-label\">{{ label() }}</span>\n @if (hint()) {\n <span class=\"chip-hint\">{{ hint() }}</span>\n }\n </button>\n `,\n styleUrl: './atl-chat.css',\n})\nexport class AtlChatSuggestion {\n /** Primary label of the suggestion. */\n readonly label = input.required<string>();\n\n /** Optional secondary hint text shown below the label. */\n readonly hint = input<string>('');\n\n /** Fires the label string when the chip is activated. */\n readonly selected = output<string>();\n}\n\n/**\n * Composable input footer for `atl-chat`. Wraps a text field and emits\n * `send` (or `stop` while the assistant is streaming).\n *\n * The button automatically switches to a `danger` \"Stop\" button when the\n * parent chat's `status` is `'streaming'`.\n *\n * Usage:\n * ```html\n * <atl-chat-input placeholder=\"Ask anything…\" (send)=\"onSend($event)\" (stop)=\"onStop()\" />\n * ```\n */\n@Component({\n selector: 'atl-chat-input',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <textarea\n class=\"field\"\n [value]=\"value()\"\n [placeholder]=\"effectivePlaceholder()\"\n [disabled]=\"isStreaming()\"\n [attr.aria-label]=\"ariaLabel()\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter($event)\"\n rows=\"1\"\n ></textarea>\n @if (isStreaming()) {\n <button\n type=\"button\"\n class=\"action-btn variant-danger size-md\"\n (click)=\"stop.emit()\"\n >\n Stop\n </button>\n } @else {\n <button\n type=\"button\"\n class=\"action-btn variant-primary size-md\"\n [disabled]=\"!value().trim()\"\n (click)=\"emitSend()\"\n >\n Send\n </button>\n }\n `,\n styleUrl: './atl-chat.css',\n})\nexport class AtlChatInput {\n /** Placeholder shown in the empty input. Defaults change per parent status. */\n readonly placeholder = input<string>('');\n\n /** Accessible label for the input field. */\n readonly ariaLabel = input<string>('Message your AI assistant');\n\n /** Two-way bindable text content. */\n readonly value = model<string>('');\n\n /** Fires when Enter is pressed (without Shift) or the Send button is clicked. */\n readonly send = output<string>();\n\n /** Fires when the Stop button is clicked while the parent chat is streaming. */\n readonly stop = output<void>();\n\n protected readonly context = inject(ATL_CHAT);\n\n protected readonly isStreaming = computed(() => this.context.status() === 'streaming');\n\n protected readonly effectivePlaceholder = computed(() => {\n const explicit = this.placeholder();\n if (explicit) return explicit;\n switch (this.context.status()) {\n case 'streaming':\n return 'Waiting for response…';\n case 'error':\n return 'Try again…';\n default:\n return 'Message your AI assistant…';\n }\n });\n\n protected onInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this.value.set(target.value);\n }\n\n protected onEnter(event: Event): void {\n const ke = event as KeyboardEvent;\n if (ke.shiftKey) return;\n ke.preventDefault();\n this.emitSend();\n }\n\n protected emitSend(): void {\n const text = this.value().trim();\n if (!text || this.isStreaming()) return;\n this.send.emit(text);\n this.value.set('');\n }\n}\n","// Design tokens stylesheet — consumers should import:\n// @import '@atelier-ui/angular/styles/tokens.css';\n\nexport { AtlButton } from './lib/button/atl-button';\nexport {\n AtlCard,\n AtlCardHeader,\n AtlCardContent,\n AtlCardFooter,\n} from './lib/card/atl-card';\nexport { AtlBadge } from './lib/badge/atl-badge';\nexport { AtlIcon } from './lib/icon/atl-icon';\nexport { AtlInput } from './lib/input/atl-input';\nexport { AtlTextarea } from './lib/textarea/atl-textarea';\nexport { AtlCheckbox } from './lib/checkbox/atl-checkbox';\nexport { AtlRadio } from './lib/radio/atl-radio';\nexport { AtlRadioGroup } from './lib/radio-group/atl-radio-group';\nexport { ATL_RADIO_GROUP } from './lib/radio-group/atl-radio-group.token';\nexport type { AtlRadioGroupContext } from './lib/radio-group/atl-radio-group.token';\nexport { AtlToggle } from './lib/toggle/atl-toggle';\nexport { AtlAlert } from './lib/alert/atl-alert';\nexport { AtlSelect } from './lib/select/atl-select';\nexport { AtlOption } from './lib/select/atl-option';\nexport { AtlCombobox } from './lib/combobox/atl-combobox';\nexport { ATL_SELECT } from './lib/select/atl-select.token';\nexport type { AtlSelectContext } from './lib/select/atl-select.token';\nexport {\n AtlDialog,\n AtlDialogHeader,\n AtlDialogContent,\n AtlDialogFooter,\n} from './lib/dialog/atl-dialog';\nexport { ATL_DIALOG } from './lib/dialog/atl-dialog.token';\nexport type { AtlDialogContext } from './lib/dialog/atl-dialog.token';\nexport { AtlTabGroup, AtlTab } from './lib/tabs/atl-tabs';\nexport { ATL_TAB_GROUP } from './lib/tabs/atl-tabs.token';\nexport type { AtlTabGroupContext, TabInfo } from './lib/tabs/atl-tabs.token';\nexport {\n AtlAccordionGroup,\n AtlAccordionItem,\n AtlAccordionHeader,\n} from './lib/accordion/atl-accordion';\nexport { ATL_ACCORDION_GROUP } from './lib/accordion/atl-accordion.token';\nexport type { AtlAccordionGroupContext } from './lib/accordion/atl-accordion.token';\nexport {\n AtlMenu,\n AtlMenuItem,\n AtlMenuSeparator,\n AtlMenuTrigger,\n} from './lib/menu/atl-menu';\nexport { AtlTooltip } from './lib/tooltip/atl-tooltip';\nexport { AtlSkeleton } from './lib/skeleton/atl-skeleton';\nexport {\n AtlToast,\n AtlToastContainer,\n AtlToastService,\n} from './lib/toast/atl-toast';\nexport type { ToastOptions, ToastData } from './lib/toast/atl-toast';\nexport { AtlAvatar, AtlAvatarGroup } from './lib/avatar/atl-avatar';\nexport { AtlProgress } from './lib/progress/atl-progress';\nexport {\n AtlBreadcrumbs,\n AtlBreadcrumbItem,\n} from './lib/breadcrumbs/atl-breadcrumbs';\nexport { ATL_BREADCRUMBS } from './lib/breadcrumbs/atl-breadcrumbs.token';\nexport type { AtlBreadcrumbsContext } from './lib/breadcrumbs/atl-breadcrumbs.token';\nexport { AtlPagination } from './lib/pagination/atl-pagination';\nexport type { PageItem } from './lib/pagination/atl-pagination';\nexport {\n AtlDrawer,\n AtlDrawerHeader,\n AtlDrawerContent,\n AtlDrawerFooter,\n} from './lib/drawer/atl-drawer';\nexport { ATL_DRAWER } from './lib/drawer/atl-drawer.token';\nexport type { AtlDrawerContext } from './lib/drawer/atl-drawer.token';\nexport {\n AtlTable,\n AtlThead,\n AtlTbody,\n AtlTr,\n AtlTh,\n AtlTd,\n ATL_TABLE,\n} from './lib/table/atl-table';\nexport type { AtlTableContext, AtlSortDirection } from './lib/table/atl-table';\nexport { AtlStepper, AtlStep } from './lib/stepper/atl-stepper';\nexport { ATL_STEPPER } from './lib/stepper/atl-stepper.token';\nexport type {\n AtlStepperContext,\n StepInfo,\n} from './lib/stepper/atl-stepper.token';\nexport { AtlCodeBlock } from './lib/code-block/atl-code-block';\nexport {\n AtlChat,\n AtlChatHeader,\n AtlChatMessages,\n AtlChatMessage,\n AtlChatTyping,\n AtlChatSuggestion,\n AtlChatInput,\n} from './lib/chat/atl-chat';\nexport { ATL_CHAT } from './lib/chat/atl-chat.token';\nexport type { AtlChatContext } from './lib/chat/atl-chat.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["VARIANT_ICON_NAMES","nextId","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"atelier-ui-angular.mjs","sources":["../../../../libs/angular/src/lib/button/atl-button.ts","../../../../libs/angular/src/lib/card/atl-card.ts","../../../../libs/angular/src/lib/icons.ts","../../../../libs/angular/src/lib/icon/atl-icon.ts","../../../../libs/angular/src/lib/badge/atl-badge.ts","../../../../libs/angular/src/lib/input/atl-input.ts","../../../../libs/angular/src/lib/textarea/atl-textarea.ts","../../../../libs/angular/src/lib/checkbox/atl-checkbox.ts","../../../../libs/angular/src/lib/radio-group/atl-radio-group.token.ts","../../../../libs/angular/src/lib/radio/atl-radio.ts","../../../../libs/angular/src/lib/radio-group/atl-radio-group.ts","../../../../libs/angular/src/lib/toggle/atl-toggle.ts","../../../../libs/angular/src/lib/alert/atl-alert.ts","../../../../libs/angular/src/lib/select/atl-select.token.ts","../../../../libs/angular/src/lib/select/atl-select.ts","../../../../libs/angular/src/lib/select/atl-option.ts","../../../../libs/angular/src/lib/combobox/atl-combobox.ts","../../../../libs/angular/src/lib/dialog/atl-dialog.token.ts","../../../../libs/angular/src/lib/dialog/atl-dialog.ts","../../../../libs/angular/src/lib/tabs/atl-tabs.token.ts","../../../../libs/angular/src/lib/tabs/atl-tabs.ts","../../../../libs/angular/src/lib/accordion/atl-accordion.token.ts","../../../../libs/angular/src/lib/accordion/atl-accordion.ts","../../../../libs/angular/src/lib/menu/atl-menu.ts","../../../../libs/angular/src/lib/tooltip/atl-tooltip.ts","../../../../libs/angular/src/lib/skeleton/atl-skeleton.ts","../../../../libs/angular/src/lib/toast/atl-toast.ts","../../../../libs/angular/src/lib/avatar/atl-avatar.ts","../../../../libs/angular/src/lib/progress/atl-progress.ts","../../../../libs/angular/src/lib/breadcrumbs/atl-breadcrumbs.token.ts","../../../../libs/angular/src/lib/breadcrumbs/atl-breadcrumbs.ts","../../../../libs/angular/src/lib/pagination/atl-pagination.ts","../../../../libs/angular/src/lib/drawer/atl-drawer.token.ts","../../../../libs/angular/src/lib/drawer/atl-drawer.ts","../../../../libs/angular/src/lib/table/atl-table.ts","../../../../libs/angular/src/lib/stepper/atl-stepper.token.ts","../../../../libs/angular/src/lib/stepper/atl-stepper.ts","../../../../libs/angular/src/lib/code-block/atl-code-block.ts","../../../../libs/angular/src/lib/chat/atl-chat.token.ts","../../../../libs/angular/src/lib/chat/atl-chat.ts","../../../../libs/angular/src/index.ts","../../../../libs/angular/src/atelier-ui-angular.ts"],"sourcesContent":["import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport type { AtlButtonVariant, AtlButtonSize } from '../spec';\n\n/**\n * Accessible button component with visual variants and sizes.\n *\n * Usage:\n * ```html\n * <atl-button variant=\"primary\" size=\"md\" (click)=\"save()\">Save</atl-button>\n * <atl-button variant=\"outline\" [disabled]=\"true\">Cancel</atl-button>\n * <atl-button [loading]=\"isSaving\">Saving…</atl-button>\n * ```\n */\n@Component({\n selector: 'atl-button',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (loading()) {\n <span class=\"spinner\" aria-hidden=\"true\"></span>\n }\n <ng-content />\n `,\n styleUrl: './atl-button.css',\n host: {\n role: 'button',\n '[class]': 'hostClasses()',\n '[attr.aria-disabled]': 'isDisabled()',\n '[attr.disabled]': 'isDisabled() ? true : null',\n },\n})\nexport class AtlButton {\n /** Visual style of the button. */\n readonly variant = input<AtlButtonVariant>('primary');\n\n /** Size of the button. */\n readonly size = input<AtlButtonSize>('md');\n\n /** Disables the button, preventing interaction. */\n readonly disabled = input(false);\n\n /** Shows a loading spinner and disables interaction. */\n readonly loading = input(false);\n\n protected readonly isDisabled = computed(() => this.disabled() || this.loading());\n\n protected readonly hostClasses = computed(\n () =>\n `variant-${this.variant()} size-${this.size()}${this.isDisabled() ? ' is-disabled' : ''}${this.loading() ? ' is-loading' : ''}`\n );\n\n /** @internal — host element ref for the dev-mode a11y check. */\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n // Suppress clicks while disabled/loading. The host is a custom element, so\n // — unlike a native `<button disabled>` — neither the `disabled` attribute\n // nor `pointer-events: none` reliably blocks click dispatch (the latter only\n // affects pointer-driven clicks, not programmatic/keyboard ones). A real\n // click lands on projected content (a descendant), so a capture-phase\n // listener on the host intercepts it before any consumer `(click)` handler\n // bound on the host (which fires in the bubble phase), matching the\n // React/Vue native-disabled behavior.\n const host = this.el.nativeElement;\n const guard = (event: Event): void => {\n if (this.isDisabled()) {\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n };\n host.addEventListener('click', guard, true);\n this.destroyRef.onDestroy(() => host.removeEventListener('click', guard, true));\n\n // Dev-mode warning when a button has no accessible name. Angular's\n // <ng-content> projection means we can't enforce this at the type\n // level (unlike the React adapter), so we check after first render.\n if (typeof ngDevMode !== 'undefined' && ngDevMode) {\n afterNextRender(() => {\n const host = this.el.nativeElement;\n const hasText = host.textContent.trim().length > 0;\n const hasAriaLabel = host.hasAttribute('aria-label')\n || host.hasAttribute('aria-labelledby');\n if (!hasText && !hasAriaLabel) {\n console.warn(\n '[AtlButton] icon-only button is missing an accessible name — '\n + 'add an aria-label attribute so screen readers announce its purpose.',\n host,\n );\n }\n });\n }\n }\n}\n\n// Angular's compiler injects this global; declare so TS doesn't complain.\ndeclare const ngDevMode: unknown;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\n\n/**\n * Card container component supporting elevated, outlined, and flat visual variants.\n * Compose with `atl-card-header`, `atl-card-content`, and `atl-card-footer` sub-components.\n *\n * Usage:\n * ```html\n * <atl-card variant=\"elevated\" padding=\"md\">\n * <atl-card-header>Card Title</atl-card-header>\n * <atl-card-content>Main content goes here.</atl-card-content>\n * <atl-card-footer>\n * <atl-button variant=\"primary\">Save</atl-button>\n * </atl-card-footer>\n * </atl-card>\n * ```\n */\n@Component({\n selector: 'atl-card',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-card.css',\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'role() || null',\n },\n})\nexport class AtlCard {\n /** Visual style of the card. */\n readonly variant = input<'elevated' | 'outlined' | 'flat'>('elevated');\n\n /** Internal padding of the card. */\n readonly padding = input<'none' | 'sm' | 'md' | 'lg'>('md');\n\n /**\n * Opt-in landmark role. Default is no role.\n *\n * - `'article'` — self-contained content (blog post, comment).\n * - `'region'` — perceivable area that needs a screen-reader stop;\n * pair with `aria-label`.\n * - `'section'` — mirrors an HTML `<section>`.\n *\n * Most cards group content visually and shouldn't add a landmark.\n * Leave unset by default.\n */\n readonly role = input<'article' | 'region' | 'section' | undefined>(undefined);\n\n protected readonly hostClasses = computed(\n () => `atl-card variant-${this.variant()} padding-${this.padding()}`\n );\n}\n\n/**\n * Header slot for `atl-card`. Renders above the main content with a bottom separator.\n *\n * Usage:\n * ```html\n * <atl-card-header>Card Title</atl-card-header>\n * ```\n */\n@Component({\n selector: 'atl-card-header',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-card.css',\n host: { class: 'atl-card-header' },\n})\nexport class AtlCardHeader {}\n\n/**\n * Content slot for `atl-card`. Primary content area of the card.\n *\n * Usage:\n * ```html\n * <atl-card-content>Body text here.</atl-card-content>\n * ```\n */\n@Component({\n selector: 'atl-card-content',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-card.css',\n host: { class: 'atl-card-content' },\n})\nexport class AtlCardContent {}\n\n/**\n * Footer slot for `atl-card`. Renders below the main content, typically holds actions.\n *\n * Usage:\n * ```html\n * <atl-card-footer>\n * <atl-button variant=\"primary\">Save</atl-button>\n * </atl-card-footer>\n * ```\n */\n@Component({\n selector: 'atl-card-footer',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-card.css',\n host: { class: 'atl-card-footer' },\n})\nexport class AtlCardFooter {}\n","// AUTO-GENERATED from libs/spec/src/icons.ts — do not edit here.\n// Run `node tools/scripts/sync-spec.mjs` after editing the source of truth.\n// The framework libs inline this so @atelier-ui/spec stays internal.\n\n/**\n * Icon geometry — the single source of truth for what every AtlIcon draws.\n *\n * Before this file, the library had four ways to draw the same thing: AtlIcon\n * rendered Unicode glyphs and no component used it; eleven components drew 14\n * inline `<svg>`s of their own; and two stylesheets put a literal `✕` in a CSS\n * `content:`. The result was one concept with several drawings — `close` existed\n * as an identical two-line SVG in five components, as a *differently drawn* X in\n * AtlStepper, as `'×'` in AtlIcon and as `'✕'` in CSS, and `check` existed as\n * three unrelated paths. Nothing gated it. See ADR-0046.\n *\n * Conventions, which every entry follows so a consumer can scale and colour icons\n * without knowing which one they got:\n *\n * - **One viewBox: `0 0 24 24`.** Rendered size comes from the `size` prop, never\n * from the geometry, so `sm`/`md`/`lg` are the same shape at three scales.\n * - **`stroke` icons** are drawn with `currentColor`, `stroke-width: 2`, round caps\n * and joins, and no fill. **`fill` icons** are solid `currentColor` silhouettes.\n * Mixing the two inside one icon is not allowed — it reads wrong at small sizes.\n * - **Paths only** (no `<line>`/`<rect>`/`<polyline>`), so the renderer in each\n * framework is a single `<path>` loop rather than a per-primitive switch.\n *\n * The seven icons the library itself uses (`close`, `check`, `chevron-down`,\n * `copy`, `person`, `sort-asc`, `sort-desc`) keep the geometry the components\n * already shipped, normalised to the 24 viewBox. The rest are the same idiom.\n */\nexport type AtlIconKind = 'stroke' | 'fill';\n\nexport interface AtlIconGeometry {\n /** How the paths are painted. Never mixed within one icon. */\n kind: AtlIconKind;\n /** Path `d` values, drawn in order, all in the 0 0 24 24 viewBox. */\n paths: string[];\n}\n\n/** viewBox shared by every icon. */\nexport const ATL_ICON_VIEWBOX = '0 0 24 24';\n\n/** Stroke width for `kind: 'stroke'` icons, in viewBox units. */\nexport const ATL_ICON_STROKE_WIDTH = 2;\n\nexport const ATL_ICON_GEOMETRY: Record<string, AtlIconGeometry> = {\n // ── status ────────────────────────────────────────────────────────────────\n // `success` is a status icon and sits beside the circled danger/error/info, so it\n // is a circled check. `check` is the bare mark used inside controls (combobox\n // option, stepper step, copy confirmation) — two names, two shapes, on purpose.\n success: { kind: 'stroke', paths: ['M12 3A9 9 0 1 0 12 21A9 9 0 1 0 12 3', 'M8 12L11 15L16 9'] },\n check: { kind: 'stroke', paths: ['M20 6L9 17L4 12'] },\n warning: { kind: 'stroke', paths: ['M12 3L22 20H2L12 3Z', 'M12 9V14', 'M12 17.5V17.6'] },\n danger: { kind: 'stroke', paths: ['M12 3A9 9 0 1 0 12 21A9 9 0 1 0 12 3', 'M15 9L9 15', 'M9 9L15 15'] },\n error: { kind: 'stroke', paths: ['M12 3A9 9 0 1 0 12 21A9 9 0 1 0 12 3', 'M12 7V13', 'M12 16.5V16.6'] },\n info: { kind: 'stroke', paths: ['M12 3A9 9 0 1 0 12 21A9 9 0 1 0 12 3', 'M12 11V17', 'M12 7.5V7.6'] },\n\n // ── direction ─────────────────────────────────────────────────────────────\n 'chevron-up': { kind: 'stroke', paths: ['M6 15L12 9L18 15'] },\n 'chevron-down': { kind: 'stroke', paths: ['M6 9L12 15L18 9'] },\n 'chevron-left': { kind: 'stroke', paths: ['M15 6L9 12L15 18'] },\n 'chevron-right': { kind: 'stroke', paths: ['M9 6L15 12L9 18'] },\n // Two chevrons, for \"jump to the first / last page\" as against \"one step\".\n // AtlPagination drew these as the guillemets « and », which are quotation marks\n // in typography and were arrows only by resemblance (ADR-0055).\n 'chevron-double-left': { kind: 'stroke', paths: ['M18 6L12 12L18 18', 'M11 6L5 12L11 18'] },\n 'chevron-double-right': { kind: 'stroke', paths: ['M6 6L12 12L6 18', 'M13 6L19 12L13 18'] },\n 'arrow-left': { kind: 'stroke', paths: ['M19 12H5', 'M11 6L5 12L11 18'] },\n 'arrow-right': { kind: 'stroke', paths: ['M5 12H19', 'M13 6L19 12L13 18'] },\n\n // ── sorting — two solid triangles, used separately by AtlTable ────────────\n 'sort-asc': { kind: 'fill', paths: ['M12 4L19 13H5L12 4Z'] },\n 'sort-desc': { kind: 'fill', paths: ['M12 20L5 11H19L12 20Z'] },\n\n // ── actions ───────────────────────────────────────────────────────────────\n close: { kind: 'stroke', paths: ['M18 6L6 18', 'M6 6L18 18'] },\n add: { kind: 'stroke', paths: ['M12 5V19', 'M5 12H19'] },\n more: { kind: 'fill', paths: ['M6 10A2 2 0 1 0 6 14A2 2 0 1 0 6 10', 'M12 10A2 2 0 1 0 12 14A2 2 0 1 0 12 10', 'M18 10A2 2 0 1 0 18 14A2 2 0 1 0 18 10'] },\n copy: { kind: 'stroke', paths: ['M9 9H20V20H9V9Z', 'M15 5H4V16H5'] },\n paste: { kind: 'stroke', paths: ['M8 4H16V7H8V4Z', 'M6 6H5V20H19V6H18'] },\n edit: { kind: 'stroke', paths: ['M4 20H8L19 9L15 5L4 16V20Z', 'M14 6L18 10'] },\n delete: { kind: 'stroke', paths: ['M4 7H20', 'M6 7V20H18V7', 'M10 4H14', 'M10 11V16', 'M14 11V16'] },\n\n // ── content ───────────────────────────────────────────────────────────────\n person: {\n kind: 'fill',\n paths: [\n 'M12 12c2.761 0 5-2.239 5-5s-2.239-5-5-5-5 2.239-5 5 2.239 5 5 5zm0 2c-3.314 0-10 1.343-10 4v2h20v-2c0-2.657-6.686-4-10-4z',\n ],\n },\n 'default-toast': {\n kind: 'stroke',\n paths: ['M4 5H20V16H13L8 20V16H4V5Z'],\n },\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport type { AtlIconName, AtlIconSize } from '../spec';\nimport { ATL_ICON_GEOMETRY, ATL_ICON_STROKE_WIDTH, ATL_ICON_VIEWBOX } from '../icons';\n\n\n/**\n * Vector icon. 23 named variants, drawn from the geometry in `icons.ts` so the\n * same shape is used everywhere it appears. Matches the Figma `AtlIcon`\n * component set. Decorative by default; pass `label` to announce a meaning\n * to assistive tech.\n *\n * Usage:\n * ```html\n * <atl-icon name=\"success\" />\n * <atl-icon name=\"warning\" size=\"lg\" label=\"Warning\" />\n * ```\n */\n@Component({\n selector: 'atl-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.viewBox]=\"viewBox\"\n [attr.fill]=\"isStroke() ? 'none' : 'currentColor'\"\n [attr.stroke]=\"isStroke() ? 'currentColor' : null\"\n [attr.stroke-width]=\"isStroke() ? strokeWidth : null\"\n [attr.stroke-linecap]=\"isStroke() ? 'round' : null\"\n [attr.stroke-linejoin]=\"isStroke() ? 'round' : null\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n @for (d of geometry().paths; track d) {\n <path [attr.d]=\"d\" />\n }\n </svg>\n `,\n styleUrl: './atl-icon.css',\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'label() ? \"img\" : null',\n '[attr.aria-label]': 'label() || null',\n '[attr.aria-hidden]': 'label() ? null : \"true\"',\n },\n})\nexport class AtlIcon {\n readonly name = input.required<AtlIconName>();\n readonly size = input<AtlIconSize>('md');\n readonly label = input<string | undefined>();\n\n protected readonly viewBox = ATL_ICON_VIEWBOX;\n protected readonly strokeWidth = ATL_ICON_STROKE_WIDTH;\n protected readonly geometry = computed(() => ATL_ICON_GEOMETRY[this.name()]);\n protected readonly isStroke = computed(() => this.geometry().kind === 'stroke');\n protected readonly hostClasses = computed(() => `size-${this.size()}`);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport type { AtlIconName, AtlBadgeVariant } from '../spec';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/**\n * Inline status badge for labeling items with semantic color variants.\n *\n * Usage:\n * ```html\n * <atl-badge variant=\"success\">Active</atl-badge>\n * <atl-badge variant=\"danger\" size=\"sm\">Error</atl-badge>\n * <atl-badge variant=\"warning\">Pending</atl-badge>\n * ```\n */\n// Which AtlIcon each variant carries. Names, not glyphs: a glyph in a string map\n// was the fifth way this library drew an icon, and the one check:iconography\n// missed (ADR-0050).\nconst VARIANT_ICON_NAMES: Partial<Record<AtlBadgeVariant, AtlIconName>> = {\n info: 'info',\n success: 'success',\n warning: 'warning',\n danger: 'danger',\n};\n\n@Component({\n selector: 'atl-badge',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (variantIcon(); as icon) {\n <atl-icon class=\"variant-icon\" [name]=\"icon\" size=\"sm\" />\n }\n <ng-content />\n `,\n styleUrl: './atl-badge.css',\n host: {\n '[class]': 'hostClasses()',\n role: 'status',\n },\n})\nexport class AtlBadge {\n /** Semantic color variant of the badge. */\n readonly variant = input<'default' | 'success' | 'warning' | 'danger' | 'info'>('default');\n\n /** Size of the badge. */\n readonly size = input<'sm' | 'md'>('md');\n\n protected readonly hostClasses = computed(\n () => `variant-${this.variant()} size-${this.size()}`\n );\n\n protected readonly variantIcon = computed(() => VARIANT_ICON_NAMES[this.variant()]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Accessible text input component for use with Angular Signal Forms.\n *\n * Usage:\n * ```html\n * <atl-input type=\"email\" placeholder=\"you@example.com\" [(value)]=\"email\" />\n * <atl-input [formField]=\"loginForm.email\" placeholder=\"Email\" />\n * ```\n */\n@Component({\n selector: 'atl-input',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"input-field\">\n <input\n [type]=\"type()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"touched.set(true)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [placeholder]=\"placeholder()\"\n [attr.name]=\"name() || null\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-describedby]=\"showErrors() ? errorId : null\"\n />\n @if (invalid()) {\n <atl-icon name=\"danger\" size=\"sm\" class=\"invalid-icon\" />\n }\n </div>\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-input.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlInput implements FormValueControl<string> {\n /** The current input value. Bound by [formField] directive. Supports [(value)] two-way binding. */\n readonly value = model('');\n\n /** The type of input field. */\n readonly type = input<'text' | 'email' | 'password' | 'number' | 'tel' | 'url'>('text');\n\n /** Placeholder text shown when the input is empty. */\n readonly placeholder = input('');\n\n /** Whether the input is disabled. Bound by [formField] directive. */\n readonly disabled = input(false);\n\n /** Whether the input is read-only. Bound by [formField] directive. */\n readonly readonly = input(false);\n\n /** Whether the input has validation errors. Bound by [formField] directive. */\n readonly invalid = input(false);\n\n /** Validation errors from the form system. Bound by [formField] directive. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** Whether the user has interacted with the input. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Whether the input is required. Bound by [formField] directive. */\n readonly required = input(false);\n\n /** The input's name attribute. Bound by [formField] directive. */\n readonly name = input('');\n\n /** @internal */\n protected readonly errorId = `atl-input-errors-${nextId++}`;\n\n /** @internal */\n /**\n * The message renders when there is a message. Gating it on `touched` as well was\n * an Angular-only rule: `touched` is not in the spec contract and React and Vue have\n * no equivalent, so the same four fields showed their errors at three different\n * moments depending on the framework. Deciding *when* to pass errors belongs to the\n * form layer, which is where `touched` lives (ADR-0055).\n */\n protected readonly showErrors = computed(\n () => this.errors().length > 0\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.disabled()) classes.push('is-disabled');\n if (this.invalid()) classes.push('is-invalid');\n if (this.readonly()) classes.push('is-readonly');\n if (this.touched()) classes.push('is-touched');\n return classes.join(' ');\n });\n\n /** @internal */\n protected onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value.set(target.value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n} from '@angular/core';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Accessible multiline text input component for use with Angular Signal Forms.\n *\n * Usage:\n * ```html\n * <atl-textarea placeholder=\"Enter a description\" [(value)]=\"description\" />\n * <atl-textarea [formField]=\"form.bio\" [rows]=\"4\" />\n * ```\n */\n@Component({\n selector: 'atl-textarea',\n standalone: true,\n imports: [TextFieldModule, AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"textarea-field\">\n <textarea\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"touched.set(true)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [placeholder]=\"placeholder()\"\n [rows]=\"rows()\"\n [attr.name]=\"name() || null\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-describedby]=\"showErrors() ? errorId : null\"\n [cdkTextareaAutosize]=\"autoResize()\"\n [cdkAutosizeMinRows]=\"rows()\"\n ></textarea>\n @if (invalid()) {\n <atl-icon name=\"danger\" size=\"sm\" class=\"invalid-icon\" />\n }\n </div>\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-textarea.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlTextarea implements FormValueControl<string> {\n /** The current textarea value. Supports [(value)] two-way binding. */\n readonly value = model('');\n\n /** Number of visible text rows. */\n readonly rows = input(3);\n\n /** Placeholder text shown when the textarea is empty. */\n readonly placeholder = input('');\n\n /** Whether the textarea is disabled. Bound by [formField] directive. */\n readonly disabled = input(false);\n\n /** Whether the textarea is read-only. Bound by [formField] directive. */\n readonly readonly = input(false);\n\n /** Whether the textarea has validation errors. Bound by [formField] directive. */\n readonly invalid = input(false);\n\n /** Validation errors from the form system. Bound by [formField] directive. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** Whether the user has interacted with the textarea. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Whether the textarea is required. Bound by [formField] directive. */\n readonly required = input(false);\n\n /** The textarea's name attribute. Bound by [formField] directive. */\n readonly name = input('');\n\n /** Whether to auto-resize the textarea height to fit its content. */\n readonly autoResize = input(false);\n\n /** @internal */\n protected readonly errorId = `atl-textarea-errors-${nextId++}`;\n\n /** @internal */\n /**\n * The message renders when there is a message. Gating it on `touched` as well was\n * an Angular-only rule: `touched` is not in the spec contract and React and Vue have\n * no equivalent, so the same four fields showed their errors at three different\n * moments depending on the framework. Deciding *when* to pass errors belongs to the\n * form layer, which is where `touched` lives (ADR-0055).\n */\n protected readonly showErrors = computed(\n () => this.errors().length > 0\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.disabled()) classes.push('is-disabled');\n if (this.invalid()) classes.push('is-invalid');\n if (this.readonly()) classes.push('is-readonly');\n if (this.touched()) classes.push('is-touched');\n if (this.autoResize()) classes.push('is-auto-resize');\n return classes.join(' ');\n });\n\n /** @internal */\n protected onInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this.value.set(target.value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n viewChild,\n} from '@angular/core';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\n\nlet nextId = 0;\n\n/**\n * Accessible checkbox component for use with Angular Signal Forms.\n *\n * Usage:\n * ```html\n * <atl-checkbox [(checked)]=\"accepted\">I agree to the terms</atl-checkbox>\n * <atl-checkbox [formField]=\"form.accepted\">Accept</atl-checkbox>\n * ```\n */\n@Component({\n selector: 'atl-checkbox',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <label [attr.for]=\"inputId\">\n <input\n #nativeInput\n type=\"checkbox\"\n [id]=\"inputId\"\n [checked]=\"checked()\"\n (change)=\"onChange($event)\"\n (blur)=\"touched.set(true)\"\n [disabled]=\"disabled()\"\n [attr.name]=\"name() || null\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-describedby]=\"showErrors() ? errorId : null\"\n />\n <ng-content />\n </label>\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-checkbox.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlCheckbox implements FormCheckboxControl {\n /** The checked state. Bound by [formField] directive. Supports [(checked)] two-way binding. */\n readonly checked = model(false);\n\n /** Whether the user has interacted with the input. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Tri-state indeterminate mode (e.g. \"select all\"). Set via DOM property. */\n readonly indeterminate = input(false);\n\n /** Whether the checkbox is disabled. Bound by [formField] directive. */\n readonly disabled = input(false);\n\n /** Whether the checkbox has validation errors. Bound by [formField] directive. */\n readonly invalid = input(false);\n\n /** Whether the checkbox is required. Bound by [formField] directive. */\n readonly required = input(false);\n\n /** The input's name attribute. Bound by [formField] directive. */\n readonly name = input('');\n\n /** Validation errors from the form system. Bound by [formField] directive. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** @internal */\n protected readonly inputId = `atl-checkbox-${nextId++}`;\n\n /** @internal */\n protected readonly errorId = `atl-checkbox-errors-${nextId++}`;\n\n /** @internal */\n private readonly nativeInput = viewChild<ElementRef<HTMLInputElement>>('nativeInput');\n\n /** @internal */\n /**\n * The message renders when there is a message. Gating it on `touched` as well was\n * an Angular-only rule: `touched` is not in the spec contract and React and Vue have\n * no equivalent, so the same four fields showed their errors at three different\n * moments depending on the framework. Deciding *when* to pass errors belongs to the\n * form layer, which is where `touched` lives (ADR-0055).\n */\n protected readonly showErrors = computed(\n () => this.errors().length > 0\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.checked()) classes.push('is-checked');\n if (this.disabled()) classes.push('is-disabled');\n if (this.invalid()) classes.push('is-invalid');\n if (this.touched()) classes.push('is-touched');\n return classes.join(' ');\n });\n\n constructor() {\n effect(() => {\n const el = this.nativeInput()?.nativeElement;\n if (el) {\n el.indeterminate = this.indeterminate();\n }\n });\n }\n\n /** @internal */\n protected onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.checked.set(target.checked);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { Signal, WritableSignal } from '@angular/core';\nimport type { FocusableOption } from '@angular/cdk/a11y';\n\n/** @internal — shape required by AtlRadioGroup's FocusKeyManager */\nexport interface RadioItem extends FocusableOption {\n focus(): void; // matches FocusableOption\n disabled?: boolean; // matches FocusableOption\n readonly radioValue: Signal<string>;\n}\n\nexport interface AtlRadioGroupContext {\n readonly value: WritableSignal<string>;\n readonly name: Signal<string>;\n readonly disabled: Signal<boolean>;\n readonly readonly: Signal<boolean>;\n select(v: string): void;\n markTouched(): void;\n registerItem(item: RadioItem): void;\n unregisterItem(item: RadioItem): void;\n}\n\nexport const ATL_RADIO_GROUP = new InjectionToken<AtlRadioGroupContext>('ATL_RADIO_GROUP');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { ATL_RADIO_GROUP, type RadioItem } from '../radio-group/atl-radio-group.token';\n\nlet nextId = 0;\n\n/**\n * Individual radio button. Must be placed inside an `atl-radio-group`.\n *\n * Usage:\n * ```html\n * <atl-radio-group [(value)]=\"selected\" name=\"plan\">\n * <atl-radio radioValue=\"free\">Free</atl-radio>\n * <atl-radio radioValue=\"pro\">Pro</atl-radio>\n * </atl-radio-group>\n * ```\n */\n@Component({\n selector: 'atl-radio',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <label [attr.for]=\"inputId\">\n <input\n type=\"radio\"\n [id]=\"inputId\"\n [value]=\"radioValue()\"\n [checked]=\"isChecked()\"\n [disabled]=\"isDisabled()\"\n [attr.name]=\"effectiveName() || null\"\n (click)=\"onClick($event)\"\n (change)=\"onChange()\"\n (blur)=\"onBlur()\"\n />\n <ng-content />\n </label>\n `,\n styleUrl: './atl-radio.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlRadio implements RadioItem, OnInit, OnDestroy {\n /** The value this radio option represents within the group. */\n readonly radioValue = input.required<string>();\n\n /** Whether this specific radio is individually disabled (stacked with group disabled). */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly disabledInput = input(false, { alias: 'disabled' });\n\n /** @internal */\n private readonly group = inject(ATL_RADIO_GROUP, { optional: true });\n\n /** @internal */\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @internal */\n protected readonly inputId = `atl-radio-${nextId++}`;\n\n /** @internal */\n protected readonly isChecked = computed(() => this.group?.value() === this.radioValue());\n\n /** @internal */\n readonly isDisabled = computed(() => this.disabledInput() || (this.group?.disabled() ?? false));\n\n /** @internal */\n protected readonly effectiveName = computed(() => this.group?.name() ?? '');\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.isChecked()) classes.push('is-checked');\n if (this.isDisabled()) classes.push('is-disabled');\n return classes.join(' ');\n });\n\n /** @internal — for FocusKeyManager */\n get disabled(): boolean {\n return this.isDisabled();\n }\n\n /** @internal — for FocusKeyManager */\n focus(): void {\n this.el.nativeElement.querySelector<HTMLInputElement>('input')?.focus();\n }\n\n ngOnInit(): void {\n this.group?.registerItem(this);\n }\n\n ngOnDestroy(): void {\n this.group?.unregisterItem(this);\n }\n\n /** @internal */\n /**\n * readonly is enforced by cancelling the click, not only by the group's\n * `select()` guard: HTML ignores `readonly` on a radio, so the input would flip\n * its own DOM state while the model stayed put — and with OnPush nothing\n * re-renders to correct it. See ADR-0045.\n */\n protected onClick(event: Event): void {\n if (this.group?.readonly()) event.preventDefault();\n }\n\n protected onChange(): void {\n this.group?.select(this.radioValue());\n }\n\n /** @internal */\n protected onBlur(): void {\n this.group?.markTouched();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\nimport { ATL_RADIO_GROUP, type AtlRadioGroupContext, type RadioItem } from './atl-radio-group.token';\n\nlet nextId = 0;\n\n/**\n * Container for a group of radio buttons. Manages keyboard navigation, shared name,\n * and Signal Forms integration.\n *\n * Usage:\n * ```html\n * <atl-radio-group [(value)]=\"size\" name=\"size\">\n * <atl-radio radioValue=\"sm\">Small</atl-radio>\n * <atl-radio radioValue=\"md\">Medium</atl-radio>\n * <atl-radio radioValue=\"lg\">Large</atl-radio>\n * </atl-radio-group>\n *\n * <!-- With Signal Forms -->\n * <atl-radio-group [formField]=\"form.size\">\n * <atl-radio radioValue=\"sm\">Small</atl-radio>\n * </atl-radio-group>\n * ```\n */\n@Component({\n selector: 'atl-radio-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-content />\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-radio-group.css',\n host: {\n role: 'radiogroup',\n '[class]': 'hostClasses()',\n '[attr.aria-invalid]': 'invalid() || null',\n '[attr.aria-required]': 'required() || null',\n '[attr.aria-describedby]': 'showErrors() ? errorId : null',\n '(keydown)': 'onKeydown($event)',\n },\n providers: [{ provide: ATL_RADIO_GROUP, useExisting: AtlRadioGroup }],\n})\nexport class AtlRadioGroup implements FormValueControl<string>, AtlRadioGroupContext {\n /** The selected value. Bound by [formField] directive. Supports [(value)] two-way binding. */\n readonly value = model('');\n\n /** Whether the user has interacted. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Whether the group is disabled. Bound by [formField] directive. */\n readonly disabled = input(false);\n\n /**\n * Whether the selection can be read but not changed. Enforced by the guards in\n * `select()` and `onKeydown()`: HTML ignores `readonly` on a radio input, so the\n * group has to block the change itself. See ADR-0045.\n */\n readonly readonly = input(false);\n\n /** Whether the group has validation errors. Bound by [formField] directive. */\n readonly invalid = input(false);\n\n /** Whether the group is required. Bound by [formField] directive. */\n readonly required = input(false);\n\n /** Shared name attribute propagated to all child radio inputs. Bound by [formField] directive. */\n readonly name = input('');\n\n /** Validation errors from the form system. Bound by [formField] directive. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** @internal */\n protected readonly errorId = `atl-radio-group-errors-${nextId++}`;\n\n /** @internal */\n private readonly items = signal<RadioItem[]>([]);\n\n /** @internal */\n private keyManager: FocusKeyManager<RadioItem> | null = null;\n\n /** @internal */\n /**\n * The message renders when there is a message. Gating it on `touched` as well was\n * an Angular-only rule: `touched` is not in the spec contract and React and Vue have\n * no equivalent, so the same four fields showed their errors at three different\n * moments depending on the framework. Deciding *when* to pass errors belongs to the\n * form layer, which is where `touched` lives (ADR-0055).\n */\n protected readonly showErrors = computed(\n () => this.errors().length > 0\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.disabled()) classes.push('is-disabled');\n if (this.readonly()) classes.push('is-readonly');\n if (this.invalid()) classes.push('is-invalid');\n if (this.touched()) classes.push('is-touched');\n return classes.join(' ');\n });\n\n /** @internal — called by AtlRadio on change */\n select(v: string): void {\n if (!this.disabled() && !this.readonly()) {\n this.value.set(v);\n }\n }\n\n /** @internal — called by AtlRadio on blur */\n markTouched(): void {\n this.touched.set(true);\n }\n\n /** @internal — called by AtlRadio on init */\n registerItem(item: RadioItem): void {\n this.items.update((list) => [...list, item]);\n }\n\n /** @internal — called by AtlRadio on destroy */\n unregisterItem(item: RadioItem): void {\n this.items.update((list) => list.filter((i) => i !== item));\n }\n\n /** @internal */\n protected onKeydown(event: KeyboardEvent): void {\n if (this.disabled() || this.readonly()) return;\n\n if (!this.keyManager) {\n this.keyManager = new FocusKeyManager(this.items())\n .withHorizontalOrientation('ltr')\n .withVerticalOrientation()\n .withWrap();\n }\n\n const currentIdx = this.items().findIndex((i) => i.radioValue() === this.value());\n this.keyManager.setActiveItem(currentIdx);\n this.keyManager.onKeydown(event);\n\n const activeIdx = this.keyManager.activeItemIndex;\n if (activeIdx !== null && activeIdx !== -1 && activeIdx !== currentIdx) {\n const target = this.items()[activeIdx];\n this.value.set(target.radioValue());\n this.touched.set(true);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n} from '@angular/core';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\n\nlet nextId = 0;\n\n/**\n * Accessible toggle (switch) component for use with Angular Signal Forms.\n * Presents as a pill-shaped on/off slider instead of a checkbox box,\n * but has identical boolean semantics and implements FormCheckboxControl.\n *\n * Usage:\n * ```html\n * <atl-toggle [(checked)]=\"enabled\">Enable notifications</atl-toggle>\n * <atl-toggle [formField]=\"form.enabled\">Enable</atl-toggle>\n * ```\n */\n@Component({\n selector: 'atl-toggle',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <label [attr.for]=\"inputId\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n [id]=\"inputId\"\n [checked]=\"checked()\"\n (change)=\"onChange($event)\"\n (blur)=\"touched.set(true)\"\n [disabled]=\"disabled()\"\n [attr.name]=\"name() || null\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-describedby]=\"showErrors() ? errorId : null\"\n />\n <span class=\"track\" aria-hidden=\"true\">\n <span class=\"thumb\"></span>\n </span>\n <ng-content />\n </label>\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-toggle.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlToggle implements FormCheckboxControl {\n /** The checked state. Bound by [formField] directive. Supports [(checked)] two-way binding. */\n readonly checked = model(false);\n\n /** Whether the user has interacted with the input. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Whether the toggle is disabled. Bound by [formField] directive. */\n readonly disabled = input(false);\n\n /** Whether the toggle has validation errors. Bound by [formField] directive. */\n readonly invalid = input(false);\n\n /** Whether the toggle is required. Bound by [formField] directive. */\n readonly required = input(false);\n\n /** The input's name attribute. Bound by [formField] directive. */\n readonly name = input('');\n\n /** Validation errors from the form system. Bound by [formField] directive. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** @internal */\n protected readonly inputId = `atl-toggle-${nextId++}`;\n\n /** @internal */\n protected readonly errorId = `atl-toggle-errors-${nextId++}`;\n\n /** @internal */\n /**\n * The message renders when there is a message. Gating it on `touched` as well was\n * an Angular-only rule: `touched` is not in the spec contract and React and Vue have\n * no equivalent, so the same four fields showed their errors at three different\n * moments depending on the framework. Deciding *when* to pass errors belongs to the\n * form layer, which is where `touched` lives (ADR-0055).\n */\n protected readonly showErrors = computed(\n () => this.errors().length > 0\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.checked()) classes.push('is-checked');\n if (this.disabled()) classes.push('is-disabled');\n if (this.invalid()) classes.push('is-invalid');\n if (this.touched()) classes.push('is-touched');\n return classes.join(' ');\n });\n\n /** @internal */\n protected onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.checked.set(target.checked);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n} from '@angular/core';\nimport type { AtlIconName, AtlAlertVariant } from '../spec';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/**\n * Inline notification banner with semantic color variants and optional dismiss button.\n *\n * Usage:\n * ```html\n * <atl-alert variant=\"success\">Your changes were saved.</atl-alert>\n * <atl-alert variant=\"warning\" [dismissible]=\"true\" (dismissed)=\"onDismiss()\">\n * Your session expires soon.\n * </atl-alert>\n * ```\n */\n// Which AtlIcon each variant carries. Names, not glyphs: a glyph in a string map\n// was the fifth way this library drew an icon, and the one check:iconography\n// missed (ADR-0050).\nconst VARIANT_ICON_NAMES: Partial<Record<AtlAlertVariant, AtlIconName>> = {\n info: 'info',\n success: 'success',\n warning: 'warning',\n danger: 'danger',\n};\n\n@Component({\n selector: 'atl-alert',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span class=\"content\">\n @if (variantIcon(); as icon) {\n <atl-icon class=\"variant-icon\" [name]=\"icon\" size=\"sm\" />\n }\n <ng-content />\n </span>\n @if (isDismissible) {\n <button class=\"dismiss\" type=\"button\" aria-label=\"Dismiss\" (click)=\"dismiss()\">\n <atl-icon name=\"close\" size=\"sm\" />\n </button>\n }\n `,\n styleUrl: './atl-alert.css',\n host: {\n '[class]': 'hostClassesValue',\n role: 'alert',\n '[attr.aria-live]': 'ariaLive',\n },\n})\nexport class AtlAlert {\n /** Semantic color variant of the alert. */\n readonly variant = input<'info' | 'success' | 'warning' | 'danger'>('info');\n\n /** Whether to show a dismiss button. */\n readonly dismissible = input(false);\n\n /** Emitted when the dismiss button is clicked. */\n readonly dismissed = output<void>();\n\n protected readonly hostClasses = computed(() => `variant-${this.variant()}`);\n\n protected readonly variantIcon = computed(() => VARIANT_ICON_NAMES[this.variant()]);\n\n /** @internal */\n get isDismissible(): boolean {\n return this.dismissible();\n }\n\n /** @internal */\n get hostClassesValue(): string {\n return this.hostClasses();\n }\n\n /** @internal */\n get ariaLive(): string {\n return this.variant() === 'danger' ? 'assertive' : 'polite';\n }\n\n protected dismiss(): void {\n this.dismissed.emit();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { Signal, WritableSignal } from '@angular/core';\n\nexport interface AtlSelectContext {\n readonly value: WritableSignal<string>;\n readonly disabled: Signal<boolean>;\n readonly activeOptionId: WritableSignal<string | null>;\n select(v: string): void;\n markTouched(): void;\n registerOption(id: string, value: string, labelText: string, disabled: boolean): void;\n unregisterOption(id: string): void;\n}\n\nexport const ATL_SELECT = new InjectionToken<AtlSelectContext>('ATL_SELECT');\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n OnDestroy,\n computed,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ActiveDescendantKeyManager, Highlightable } from '@angular/cdk/a11y';\nimport {\n createFlexibleConnectedPositionStrategy,\n createOverlayRef,\n createRepositionScrollStrategy,\n type OverlayRef,\n} from '@angular/cdk/overlay';\nimport { DomPortal } from '@angular/cdk/portal';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\nimport { ATL_SELECT, type AtlSelectContext } from './atl-select.token';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/** @internal — Wrapper item for ActiveDescendantKeyManager integration. */\nclass SelectOptionItem implements Highlightable {\n disabled: boolean;\n\n constructor(\n readonly id: string,\n readonly value: string,\n readonly labelText: string,\n disabled: boolean,\n private readonly activeOptionId: import('@angular/core').WritableSignal<string | null>,\n ) {\n this.disabled = disabled;\n }\n\n getLabel(): string {\n return this.labelText;\n }\n\n setActiveStyles(): void {\n this.activeOptionId.set(this.id);\n }\n\n setInactiveStyles(): void {\n // Handled by key manager — no-op here\n }\n}\n\nlet nextId = 0;\n\n/**\n * Accessible dropdown select component for use with Angular Signal Forms.\n * Uses the CDK Overlay for viewport-aware panel positioning.\n *\n * Usage:\n * ```html\n * <atl-select [(value)]=\"country\" placeholder=\"Select a country\">\n * <atl-option optionValue=\"us\">United States</atl-option>\n * <atl-option optionValue=\"ca\">Canada</atl-option>\n * </atl-select>\n *\n * <!-- With Signal Forms -->\n * <atl-select [formField]=\"form.country\" placeholder=\"Select a country\">\n * <atl-option optionValue=\"us\">United States</atl-option>\n * </atl-select>\n * ```\n */\n@Component({\n selector: 'atl-select',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button\n type=\"button\"\n class=\"trigger\"\n [id]=\"triggerId\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-describedby]=\"showErrors() ? errorId : null\"\n [attr.disabled]=\"disabled() || null\"\n (click)=\"onTriggerClick()\"\n (blur)=\"onTriggerBlur()\"\n >\n <span class=\"trigger-text\">{{ selectedLabel() || placeholder() }}</span>\n <!-- The slot is always in the flex row so the label's truncation point does not\n move when the state flips; only its content is conditional. -->\n <span class=\"invalid-slot\" aria-hidden=\"true\">\n @if (invalid()) {\n <atl-icon name=\"danger\" size=\"sm\" class=\"invalid-icon\" />\n }\n </span>\n <span class=\"trigger-icon\" aria-hidden=\"true\"><atl-icon name=\"chevron-down\" size=\"sm\" /></span>\n </button>\n\n <div\n #panel\n [id]=\"panelId\"\n role=\"listbox\"\n class=\"panel\"\n [attr.aria-labelledby]=\"triggerId\"\n >\n <ng-content />\n </div>\n\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-select.css',\n host: {\n role: 'combobox',\n '[class]': 'hostClasses()',\n '(keydown)': 'onKeydown($event)',\n },\n providers: [{ provide: ATL_SELECT, useExisting: AtlSelect }],\n})\nexport class AtlSelect implements FormValueControl<string>, AtlSelectContext, OnDestroy {\n /** The selected value. Bound by [formField] directive. Supports [(value)] two-way binding. */\n readonly value = model('');\n\n /** Whether the user has interacted. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Placeholder text shown when no option is selected. */\n readonly placeholder = input('');\n\n /** Whether the select is disabled. Bound by [formField] directive. */\n readonly disabled = input(false);\n\n /** Whether the select has validation errors. Bound by [formField] directive. */\n readonly invalid = input(false);\n\n /** Whether the select is required. Bound by [formField] directive. */\n readonly required = input(false);\n\n /** The input's name attribute. Bound by [formField] directive. */\n readonly name = input('');\n\n /** Validation errors from the form system. Bound by [formField] directive. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** @internal */\n readonly activeOptionId = signal<string | null>(null);\n\n /** @internal */\n protected readonly isOpen = signal(false);\n\n /** @internal */\n protected readonly optionsList = signal<\n { id: string; value: string; labelText: string; disabled: boolean }[]\n >([]);\n\n /** @internal */\n protected readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n\n /** @internal */\n protected readonly triggerId = `atl-select-trigger-${nextId}`;\n\n /** @internal */\n protected readonly panelId = `atl-select-panel-${nextId}`;\n\n /** @internal */\n protected readonly errorId = `atl-select-errors-${nextId++}`;\n\n /** @internal */\n protected readonly selectedLabel = computed(\n () => this.optionsList().find((o) => o.value === this.value())?.labelText ?? ''\n );\n\n /** @internal */\n /**\n * The message renders when there is a message. Gating it on `touched` as well was\n * an Angular-only rule: `touched` is not in the spec contract and React and Vue have\n * no equivalent, so the same four fields showed their errors at three different\n * moments depending on the framework. Deciding *when* to pass errors belongs to the\n * form layer, which is where `touched` lives (ADR-0055).\n */\n protected readonly showErrors = computed(\n () => this.errors().length > 0\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.isOpen()) classes.push('is-open');\n if (this.disabled()) classes.push('is-disabled');\n if (this.invalid()) classes.push('is-invalid');\n if (this.touched()) classes.push('is-touched');\n return classes.join(' ');\n });\n\n /** @internal */\n private keyManager: ActiveDescendantKeyManager<SelectOptionItem> | null = null;\n\n private overlayRef: OverlayRef | null = null;\n private outsideClickHandler: ((e: MouseEvent) => void) | null = null;\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n\n /** @internal — called by AtlOption on init */\n registerOption(id: string, value: string, labelText: string, disabled: boolean): void {\n this.optionsList.update((list) => [...list, { id, value, labelText, disabled }]);\n }\n\n /** @internal — called by AtlOption on destroy */\n unregisterOption(id: string): void {\n this.optionsList.update((list) => list.filter((o) => o.id !== id));\n }\n\n /** @internal — called by AtlOption on select */\n select(v: string): void {\n if (!this.disabled()) {\n this.value.set(v);\n this.close();\n }\n }\n\n /** @internal — called by AtlOption on interaction */\n markTouched(): void {\n this.touched.set(true);\n }\n\n /** @internal */\n protected onTriggerClick(): void {\n if (this.disabled()) return;\n if (this.isOpen()) { this.close(); } else { this.open(); }\n }\n\n /** @internal */\n protected onTriggerBlur(): void {\n if (!this.isOpen()) {\n this.touched.set(true);\n }\n }\n\n /** @internal */\n protected onKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n\n switch (event.key) {\n case 'Enter':\n case ' ': {\n event.preventDefault();\n if (!this.isOpen()) {\n this.open();\n } else {\n const activeItem = this.keyManager?.activeItem;\n if (activeItem) {\n this.select(activeItem.value);\n }\n }\n break;\n }\n case 'Escape': {\n event.preventDefault();\n this.close();\n break;\n }\n default: {\n const isNav = ['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key);\n const isTypeahead = event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;\n if ((isNav || isTypeahead) && !this.isOpen()) {\n this.open();\n if (isNav) return; // open() already sets active item\n }\n this.keyManager?.onKeydown(event);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n if (this.outsideClickHandler) {\n document.removeEventListener('click', this.outsideClickHandler);\n this.outsideClickHandler = null;\n }\n }\n\n private open(): void {\n const panel = this.panelRef();\n if (!panel) return;\n\n if (!this.overlayRef) {\n this.overlayRef = this.createOverlay();\n }\n\n this.overlayRef.attach(new DomPortal(panel.nativeElement));\n panel.nativeElement.classList.add('is-open');\n this.overlayRef.updatePosition();\n this.isOpen.set(true);\n\n // (Re)create key manager with current options\n const items = this.optionsList().map(\n (o) => new SelectOptionItem(o.id, o.value, o.labelText, o.disabled, this.activeOptionId),\n );\n this.keyManager = new ActiveDescendantKeyManager(items)\n .withWrap()\n .withTypeAhead(500)\n .withHomeAndEnd()\n .withVerticalOrientation();\n\n // Set active option to currently selected or first enabled\n const selectedIdx = items.findIndex((i) => i.value === this.value() && !i.disabled);\n const firstEnabledIdx = items.findIndex((i) => !i.disabled);\n const activeIdx = selectedIdx >= 0 ? selectedIdx : firstEnabledIdx;\n if (activeIdx >= 0) {\n this.keyManager.setActiveItem(activeIdx);\n }\n\n // Outside click — check host AND panel (panel is in overlay container, outside host)\n this.outsideClickHandler = (e: MouseEvent) => {\n const target = e.target as Node;\n if (\n !this.elementRef.nativeElement.contains(target) &&\n !panel.nativeElement.contains(target)\n ) {\n this.close();\n }\n };\n document.addEventListener('click', this.outsideClickHandler);\n }\n\n private close(): void {\n const panel = this.panelRef();\n if (panel) {\n panel.nativeElement.classList.remove('is-open');\n }\n this.overlayRef?.detach();\n this.isOpen.set(false);\n this.activeOptionId.set(null);\n this.keyManager = null;\n\n if (this.outsideClickHandler) {\n document.removeEventListener('click', this.outsideClickHandler);\n this.outsideClickHandler = null;\n }\n }\n\n private createOverlay(): OverlayRef {\n const triggerEl = this.elementRef.nativeElement.querySelector<HTMLElement>('.trigger');\n if (!triggerEl) throw new Error('AtlSelect: trigger element not found');\n\n const positionStrategy = createFlexibleConnectedPositionStrategy(\n this.injector,\n triggerEl,\n )\n .withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ])\n .withFlexibleDimensions(false)\n .withPush(true);\n\n const scrollStrategy = createRepositionScrollStrategy(this.injector);\n\n return createOverlayRef(this.injector, {\n positionStrategy,\n scrollStrategy,\n minWidth: triggerEl.offsetWidth,\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n OnInit,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { ATL_SELECT } from './atl-select.token';\n\nlet nextOptionId = 0;\n\n/**\n * Option item for use inside `<atl-select>`.\n *\n * Usage:\n * ```html\n * <atl-option optionValue=\"us\">United States</atl-option>\n * ```\n */\n@Component({\n selector: 'atl-option',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './atl-option.css',\n template: `\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n role=\"option\"\n [attr.id]=\"optionId\"\n [attr.aria-selected]=\"isSelected()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [class.is-selected]=\"isSelected()\"\n [class.is-active]=\"isActive()\"\n [class.is-disabled]=\"disabled()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n >\n <ng-content />\n </div>\n `,\n})\nexport class AtlOption implements OnInit, OnDestroy {\n /** The value this option represents. Required. */\n readonly optionValue = input.required<string>();\n\n /** Whether this option is disabled. */\n readonly disabled = input(false);\n\n /** @internal */\n protected readonly optionId = `atl-option-${nextOptionId++}`;\n\n /** @internal */\n private readonly context = inject(ATL_SELECT);\n\n /** @internal */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @internal */\n protected readonly isSelected = computed(() => this.context.value() === this.optionValue());\n\n /** @internal */\n protected readonly isActive = computed(() => this.context.activeOptionId() === this.optionId);\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const labelText = (this.elementRef.nativeElement.textContent ?? '').trim();\n this.context.registerOption(this.optionId, this.optionValue(), labelText, this.disabled());\n }\n\n ngOnDestroy(): void {\n this.context.unregisterOption(this.optionId);\n }\n\n /** @internal */\n protected onClick(): void {\n if (this.disabled()) return;\n this.context.select(this.optionValue());\n this.context.markTouched();\n }\n\n /** @internal */\n protected onMouseEnter(): void {\n if (!this.disabled()) {\n this.context.activeOptionId.set(this.optionId);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { type ValidationError, type WithOptionalFieldTree } from '@angular/forms/signals';\nimport type { AtlComboboxOption } from '../spec';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Filterable autocomplete combobox. Accepts an `options` array and emits the\n * selected option's `value`. The user types to narrow the list; selecting an\n * option commits the value and displays its label.\n *\n * Usage:\n * ```html\n * <atl-combobox\n * [(value)]=\"country\"\n * [options]=\"countryOptions\"\n * placeholder=\"Search country…\"\n * />\n *\n * <!-- With Signal Forms -->\n * <atl-combobox [formField]=\"form.country\" [options]=\"countryOptions\" />\n * ```\n */\n@Component({\n selector: 'atl-combobox',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"combobox-wrapper\">\n <input\n #inputEl\n class=\"combobox-input\"\n type=\"text\"\n autocomplete=\"off\"\n role=\"combobox\"\n [id]=\"inputId\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"panelId\"\n aria-autocomplete=\"list\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-invalid]=\"invalid() || null\"\n[attr.aria-describedby]=\"showErrors() ? errorId : null\"\n [attr.disabled]=\"disabled() || null\"\n [attr.required]=\"required() || null\"\n [attr.name]=\"name() || null\"\n [placeholder]=\"placeholder()\"\n [readOnly]=\"readonly()\"\n [value]=\"query()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n <span class=\"combobox-icon\" aria-hidden=\"true\">\n <atl-icon name=\"chevron-down\" size=\"sm\" />\n </span>\n </div>\n\n <ul\n #panel\n [id]=\"panelId\"\n popover=\"manual\"\n role=\"listbox\"\n class=\"panel\"\n [attr.aria-labelledby]=\"inputId\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <li\n [id]=\"optionId(i)\"\n role=\"option\"\n class=\"option\"\n [class.is-active]=\"activeIndex() === i\"\n [class.is-selected]=\"option.value === value()\"\n [class.is-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"option.value === value()\"\n [attr.aria-disabled]=\"option.disabled || null\"\n (mousedown)=\"onOptionSelect(option)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n <span>{{ option.label }}</span>\n @if (option.value === value()) {\n <atl-icon name=\"check\" size=\"sm\" class=\"option-check\" />\n }\n </li>\n }\n @if (filteredOptions().length === 0) {\n <li class=\"no-results\" role=\"option\" aria-selected=\"false\" aria-disabled=\"true\">No results found.</li>\n }\n </ul>\n\n @if (showErrors()) {\n <div class=\"errors\" [id]=\"errorId\" aria-live=\"polite\">\n @for (error of errors(); track error.kind) {\n <p class=\"error-message\">{{ error.message }}</p>\n }\n </div>\n }\n `,\n styleUrl: './atl-combobox.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlCombobox implements FormValueControl<string> {\n /** The selected value. Supports [(value)] two-way binding and [formField] directive. */\n readonly value = model('');\n\n /** Whether the user has interacted. Bound by [formField] directive. */\n readonly touched = model(false);\n\n /** Options to display and filter. */\n readonly options = input<AtlComboboxOption[]>([]);\n\n /** Placeholder text for the input. */\n readonly placeholder = input('');\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false);\n\n /**\n * Whether the value can be read but not changed. Enforced here rather than by\n * the DOM: `readonly` on the text input would stop typing, but nothing stops the\n * panel from opening and an option from being picked. See ADR-0045.\n */\n readonly readonly = input(false);\n\n /** Whether the combobox has validation errors. */\n readonly invalid = input(false);\n\n /** Whether the combobox is required. */\n readonly required = input(false);\n\n /** The input's name attribute. */\n readonly name = input('');\n\n /** Validation errors from the form system. */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n /** @internal */\n protected readonly query = signal('');\n\n /** @internal */\n protected readonly isOpen = signal(false);\n\n /** @internal */\n protected readonly activeIndex = signal(-1);\n\n /** @internal */\n protected readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n\n /** @internal */\n protected readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n /** @internal */\n protected readonly inputId = `atl-combobox-input-${nextId}`;\n\n /** @internal */\n protected readonly panelId = `atl-combobox-panel-${nextId}`;\n\n /** @internal */\n protected readonly errorId = `atl-combobox-errors-${nextId++}`;\n\n /** @internal */\n protected readonly filteredOptions = computed(() => {\n const q = this.query().toLowerCase();\n if (!q) return this.options();\n return this.options().filter((o) => o.label.toLowerCase().includes(q));\n });\n\n /** @internal */\n protected readonly activeOptionId = computed(() => {\n const idx = this.activeIndex();\n return idx >= 0 ? this.optionId(idx) : null;\n });\n\n /** @internal */\n /**\n * The message renders when there is a message. Gating it on `touched` as well was\n * an Angular-only rule: `touched` is not in the spec contract and React and Vue have\n * no equivalent, so the same four fields showed their errors at three different\n * moments depending on the framework. Deciding *when* to pass errors belongs to the\n * form layer, which is where `touched` lives (ADR-0055).\n */\n protected readonly showErrors = computed(\n () => this.errors().length > 0,\n );\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes: string[] = [];\n if (this.isOpen()) classes.push('is-open');\n if (this.disabled()) classes.push('is-disabled');\n if (this.readonly()) classes.push('is-readonly');\n if (this.invalid()) classes.push('is-invalid');\n if (this.touched()) classes.push('is-touched');\n return classes.join(' ');\n });\n\n private outsideClickHandler: ((e: MouseEvent) => void) | null = null;\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @internal */\n protected optionId(index: number): string {\n return `${this.panelId}-option-${index}`;\n }\n\n /** @internal */\n protected onInput(event: Event): void {\n const q = (event.target as HTMLInputElement).value;\n this.query.set(q);\n this.activeIndex.set(-1);\n if (q === '') {\n this.value.set('');\n }\n if (!this.isOpen()) this.open();\n }\n\n /** @internal */\n protected onFocus(): void {\n if (!this.disabled() && !this.readonly()) this.open();\n }\n\n /** @internal */\n protected onBlur(): void {\n const selectedOption = this.options().find((o) => o.value === this.value());\n this.query.set(selectedOption?.label ?? '');\n this.touched.set(true);\n }\n\n /** @internal */\n protected onOptionSelect(option: AtlComboboxOption): void {\n if (option.disabled || this.disabled() || this.readonly()) return;\n this.value.set(option.value);\n this.query.set(option.label);\n this.touched.set(true);\n this.close();\n this.inputEl()?.nativeElement.focus();\n }\n\n /** @internal */\n protected onKeydown(event: KeyboardEvent): void {\n if (this.disabled() || this.readonly()) return;\n\n switch (event.key) {\n case 'Enter': {\n const activeIdx = this.activeIndex();\n if (this.isOpen() && activeIdx >= 0) {\n event.preventDefault();\n const option = this.filteredOptions()[activeIdx];\n this.onOptionSelect(option);\n }\n break;\n }\n case 'Escape': {\n event.preventDefault();\n const selectedOption = this.options().find((o) => o.value === this.value());\n this.query.set(selectedOption?.label ?? '');\n this.close();\n break;\n }\n case 'Tab': {\n this.close();\n break;\n }\n case 'ArrowDown':\n case 'ArrowUp': {\n if (!this.isOpen()) {\n this.open();\n break;\n }\n event.preventDefault();\n const opts = this.filteredOptions();\n const enabledIndices = opts.map((_, i) => i).filter((i) => !opts[i].disabled);\n if (enabledIndices.length === 0) break;\n const currentPos = enabledIndices.indexOf(this.activeIndex());\n const len = enabledIndices.length;\n const nextPos =\n event.key === 'ArrowDown'\n ? (currentPos + 1) % len\n : (currentPos - 1 + len) % len;\n this.activeIndex.set(enabledIndices[nextPos]);\n break;\n }\n }\n }\n\n private open(): void {\n const panel = this.panelRef();\n if (!panel || this.isOpen() || this.readonly()) return;\n (panel.nativeElement as HTMLElement & { showPopover(): void }).showPopover();\n this.isOpen.set(true);\n this.activeIndex.set(-1);\n\n this.outsideClickHandler = (e: MouseEvent) => {\n if (!this.elementRef.nativeElement.contains(e.target as Node)) {\n this.close();\n }\n };\n document.addEventListener('click', this.outsideClickHandler);\n }\n\n private close(): void {\n const panel = this.panelRef();\n if (!panel || !this.isOpen()) return;\n try {\n (panel.nativeElement as HTMLElement & { hidePopover(): void }).hidePopover();\n } catch {\n // Panel may already be hidden\n }\n this.isOpen.set(false);\n this.activeIndex.set(-1);\n\n if (this.outsideClickHandler) {\n document.removeEventListener('click', this.outsideClickHandler);\n this.outsideClickHandler = null;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface AtlDialogContext {\n headerId: string;\n close: () => void;\n}\n\nexport const ATL_DIALOG = new InjectionToken<AtlDialogContext>('ATL_DIALOG');\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ATL_DIALOG } from './atl-dialog.token';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Accessible modal dialog using the native `<dialog>` element.\n * Includes focus trap, Escape to close, backdrop click to close, and animation.\n * Compose with `atl-dialog-header`, `atl-dialog-content`, and `atl-dialog-footer`.\n *\n * Usage:\n * ```html\n * <atl-dialog [(open)]=\"isOpen\">\n * <atl-dialog-header>Dialog Title</atl-dialog-header>\n * <atl-dialog-content>Dialog body content.</atl-dialog-content>\n * <atl-dialog-footer>\n * <atl-button variant=\"primary\" (click)=\"isOpen = false\">Confirm</atl-button>\n * </atl-dialog-footer>\n * </atl-dialog>\n * ```\n */\n@Component({\n selector: 'atl-dialog',\n standalone: true,\n imports: [A11yModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ATL_DIALOG,\n useFactory: (dialog: AtlDialog) => ({\n headerId: dialog.headerId,\n close: () => dialog.open.set(false),\n }),\n deps: [AtlDialog],\n },\n ],\n template: `\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <dialog\n #dialogEl\n class=\"atl-dialog\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabel() ? null : (ariaLabelledby() || headerId)\"\n aria-modal=\"true\"\n [cdkTrapFocus]=\"open()\"\n (cancel)=\"onCancel($event)\"\n (click)=\"onBackdropClick($event)\"\n >\n <div [class]=\"panelClass()\">\n <ng-content />\n </div>\n </dialog>\n `,\n styleUrl: './atl-dialog.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlDialog {\n /** Whether the dialog is open. Supports two-way binding: [(open)]=\"isOpen\". */\n readonly open = model(false);\n\n /** Whether clicking the backdrop closes the dialog. */\n readonly closeOnBackdrop = input(true);\n\n /** Size of the dialog panel. */\n readonly size = input<'sm' | 'md' | 'lg' | 'xl' | 'full'>('md');\n\n /** Accessible label for the dialog (use instead of aria-labelledby when no header is present). */\n readonly ariaLabel = input('', { alias: 'aria-label' });\n\n /** ID of the element that labels the dialog (defaults to the atl-dialog-header id). */\n readonly ariaLabelledby = input('', { alias: 'aria-labelledby' });\n\n /** @internal — referenced by AtlDialogHeader via ATL_DIALOG token */\n readonly headerId = `atl-dialog-header-${nextId}`;\n\n protected readonly dialogId = `atl-dialog-${nextId++}`;\n protected readonly dialogRef = viewChild<ElementRef<HTMLDialogElement>>('dialogEl');\n private readonly triggerEl = signal<HTMLElement | null>(null);\n\n protected readonly panelClass = computed(() => `panel size-${this.size()}`);\n protected readonly hostClasses = computed(() => (this.open() ? 'is-open' : ''));\n\n constructor() {\n effect(() => {\n const dialog = this.dialogRef()?.nativeElement;\n if (!dialog) return;\n if (this.open()) {\n this.triggerEl.set(document.activeElement as HTMLElement);\n dialog.showModal();\n } else {\n if (dialog.open) dialog.close();\n this.triggerEl()?.focus();\n this.triggerEl.set(null);\n }\n });\n }\n\n protected onCancel(event: Event): void {\n event.preventDefault();\n this.open.set(false);\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (this.closeOnBackdrop() && event.target === this.dialogRef()?.nativeElement) {\n this.open.set(false);\n }\n }\n\n}\n\n/**\n * Header slot for `atl-dialog`. Renders above content with a bottom separator.\n * Automatically receives the correct `id` for `aria-labelledby` association.\n */\n@Component({\n selector: 'atl-dialog-header',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-content />\n <button\n class=\"close-btn\"\n type=\"button\"\n aria-label=\"Close dialog\"\n (click)=\"context.close()\"\n >\n <atl-icon name=\"close\" size=\"sm\" />\n </button>\n `,\n styleUrl: './atl-dialog.css',\n host: {\n class: 'atl-dialog-header',\n '[attr.id]': 'context.headerId',\n },\n})\nexport class AtlDialogHeader {\n protected readonly context = inject(ATL_DIALOG);\n}\n\n/**\n * Content slot for `atl-dialog`. Scrollable primary content area.\n */\n@Component({\n selector: 'atl-dialog-content',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-dialog.css',\n host: { class: 'atl-dialog-content' },\n})\nexport class AtlDialogContent {}\n\n/**\n * Footer slot for `atl-dialog`. Renders below content, typically holds action buttons.\n */\n@Component({\n selector: 'atl-dialog-footer',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-dialog.css',\n host: { class: 'atl-dialog-footer' },\n})\nexport class AtlDialogFooter {}\n","import { InjectionToken } from '@angular/core';\nimport type { Signal, WritableSignal } from '@angular/core';\n\nexport interface TabInfo {\n id: string;\n label: string;\n disabled: boolean;\n panelId: string;\n tabId: string;\n}\n\nexport interface AtlTabGroupContext {\n readonly selectedIndex: WritableSignal<number>;\n readonly tabs: Signal<TabInfo[]>;\n registerTab(info: TabInfo): void;\n unregisterTab(id: string): void;\n}\n\nexport const ATL_TAB_GROUP = new InjectionToken<AtlTabGroupContext>('ATL_TAB_GROUP');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n OnInit,\n signal,\n viewChildren,\n} from '@angular/core';\nimport { ATL_TAB_GROUP, type AtlTabGroupContext, type TabInfo } from './atl-tabs.token';\n\nlet nextId = 0;\n\n/**\n * Accessible tabbed interface container. Renders a tab list and manages\n * keyboard navigation with roving tabindex.\n *\n * Usage:\n * ```html\n * <atl-tab-group [(selectedIndex)]=\"activeTab\">\n * <atl-tab label=\"Account\">Account settings here.</atl-tab>\n * <atl-tab label=\"Notifications\">Notification prefs here.</atl-tab>\n * <atl-tab label=\"Billing\" [disabled]=\"true\">Billing info here.</atl-tab>\n * </atl-tab-group>\n * ```\n */\n@Component({\n selector: 'atl-tab-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"tablist\" role=\"tablist\">\n @for (tab of tabs(); track tab.id; let i = $index) {\n <button\n #tabBtn\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.tabId\"\n [attr.aria-selected]=\"selectedIndex() === i\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.aria-disabled]=\"tab.disabled || null\"\n [attr.tabindex]=\"selectedIndex() === i ? 0 : -1\"\n [class.is-active]=\"selectedIndex() === i\"\n [class.is-disabled]=\"tab.disabled\"\n (click)=\"selectTab(i)\"\n (keydown)=\"onTabKeydown($event)\"\n >\n {{ tab.label }}\n </button>\n }\n </div>\n <ng-content />\n `,\n styleUrl: './atl-tabs.css',\n host: {\n '[class]': 'hostClasses()',\n },\n providers: [{ provide: ATL_TAB_GROUP, useExisting: AtlTabGroup }],\n})\nexport class AtlTabGroup implements AtlTabGroupContext {\n /** Index of the currently active tab. Supports two-way binding. */\n readonly selectedIndex = model(0);\n\n /** Visual variant. */\n readonly variant = input<'default' | 'pills'>('default');\n\n /** @internal */\n readonly tabs = signal<TabInfo[]>([]);\n\n /** @internal */\n protected readonly tabBtns = viewChildren<ElementRef<HTMLButtonElement>>('tabBtn');\n\n /** @internal */\n protected readonly hostClasses = computed(() => `atl-tab-group variant-${this.variant()}`);\n\n /** @internal — called by AtlTab on init */\n registerTab(info: TabInfo): void {\n this.tabs.update((list) => [...list, info]);\n }\n\n /** @internal — called by AtlTab on destroy */\n unregisterTab(id: string): void {\n this.tabs.update((list) => list.filter((t) => t.id !== id));\n }\n\n /** @internal */\n protected selectTab(index: number): void {\n const tab = this.tabs()[index];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/strict-boolean-expressions\n if (tab && !tab.disabled) {\n this.selectedIndex.set(index);\n }\n }\n\n /** @internal */\n protected onTabKeydown(event: KeyboardEvent): void {\n const allTabs = this.tabs();\n const enabledIndices = allTabs.map((_, i) => i).filter((i) => !allTabs[i].disabled);\n const len = enabledIndices.length;\n if (len === 0) return;\n\n const currentPosInEnabled = enabledIndices.indexOf(this.selectedIndex());\n\n let targetIdx: number | null = null;\n\n switch (event.key) {\n case 'ArrowRight':\n targetIdx = enabledIndices[(currentPosInEnabled + 1) % len];\n break;\n case 'ArrowLeft':\n targetIdx = enabledIndices[(currentPosInEnabled - 1 + len) % len];\n break;\n case 'Home':\n targetIdx = enabledIndices[0];\n break;\n case 'End':\n targetIdx = enabledIndices[len - 1];\n break;\n default:\n return;\n }\n\n event.preventDefault();\n this.selectTab(targetIdx);\n this.tabBtns()[targetIdx]?.nativeElement.focus();\n }\n}\n\n/**\n * Individual tab definition. Place inside `<atl-tab-group>`.\n *\n * Usage:\n * ```html\n * <atl-tab label=\"Settings\">Settings content here.</atl-tab>\n * ```\n */\n@Component({\n selector: 'atl-tab',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (isActive()) {\n <div\n role=\"tabpanel\"\n [id]=\"panelId\"\n [attr.aria-labelledby]=\"tabId\"\n [tabindex]=\"0\"\n >\n <ng-content />\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n }\n\n [role='tabpanel'] {\n padding: var(--ui-spacing-5) 0;\n }\n\n [role='tabpanel']:focus-visible {\n outline: none;\n box-shadow: var(--ui-focus-ring);\n border-radius: var(--ui-radius-md);\n }\n `,\n})\nexport class AtlTab implements OnInit, OnDestroy {\n /** Text displayed on the tab button. Required. */\n readonly label = input.required<string>();\n\n /** Whether this tab is disabled. */\n readonly disabled = input(false);\n\n /** @internal */\n readonly tabId = `atl-tab-${nextId}`;\n\n /** @internal */\n readonly panelId = `atl-tab-panel-${nextId}`;\n\n /** @internal */\n private readonly id = `atl-tab-instance-${nextId++}`;\n\n /** @internal */\n private readonly context = inject(ATL_TAB_GROUP);\n\n /** @internal */\n protected readonly isActive = computed(() => {\n const index = this.context.tabs().findIndex((t) => t.id === this.id);\n return this.context.selectedIndex() === index;\n });\n\n ngOnInit(): void {\n this.context.registerTab({\n id: this.id,\n label: this.label(),\n disabled: this.disabled(),\n panelId: this.panelId,\n tabId: this.tabId,\n });\n }\n\n ngOnDestroy(): void {\n this.context.unregisterTab(this.id);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { FocusableOption } from '@angular/cdk/a11y';\n\n/** @internal — shape required by AtlAccordionGroup's FocusKeyManager */\nexport interface AccordionItem extends FocusableOption {\n readonly id: string;\n focus(): void; // matches FocusableOption\n disabled?: boolean; // matches FocusableOption\n}\n\nexport interface AtlAccordionGroupContext {\n register(item: AccordionItem): void;\n unregister(item: AccordionItem): void;\n handleKeydown(event: KeyboardEvent, item: AccordionItem): void;\n}\n\nexport const ATL_ACCORDION_GROUP = new InjectionToken<AtlAccordionGroupContext>('ATL_ACCORDION_GROUP');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { CdkAccordion, CdkAccordionItem } from '@angular/cdk/accordion';\nimport { ATL_ACCORDION_GROUP, type AccordionItem, type AtlAccordionGroupContext } from './atl-accordion.token';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Container that manages accordion items. Controls single vs multi expansion\n * and provides keyboard navigation across items.\n *\n * Usage:\n * ```html\n * <atl-accordion-group [multi]=\"true\" variant=\"separated\">\n * <atl-accordion-item [(expanded)]=\"open\">\n * <span atlAccordionHeader>Title</span>\n * Body content here.\n * </atl-accordion-item>\n * </atl-accordion-group>\n * ```\n */\n@Component({\n selector: 'atl-accordion-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-accordion.css',\n hostDirectives: [{ directive: CdkAccordion, inputs: ['multi'] }],\n host: {\n '[class]': 'hostClassesValue',\n role: 'presentation',\n },\n providers: [{ provide: ATL_ACCORDION_GROUP, useExisting: AtlAccordionGroup }],\n})\nexport class AtlAccordionGroup implements AtlAccordionGroupContext {\n /** Allow multiple items to be expanded simultaneously. */\n readonly multi = input(false);\n\n /** Visual variant. */\n readonly variant = input<'default' | 'bordered' | 'separated'>('default');\n\n /** @internal */\n protected readonly hostClasses = computed(() => `atl-accordion-group variant-${this.variant()}`);\n\n /** @internal */\n get hostClassesValue(): string {\n return this.hostClasses();\n }\n\n /** @internal */\n private readonly items = signal<AccordionItem[]>([]);\n\n register(item: AccordionItem): void {\n this.items.update((list) => [...list, item]);\n }\n\n unregister(item: AccordionItem): void {\n this.items.update((list) => list.filter((i) => i !== item));\n }\n\n handleKeydown(event: KeyboardEvent, item: AccordionItem): void {\n const enabledItems = this.items().filter((i) => !i.disabled);\n const len = enabledItems.length;\n if (len === 0) return;\n\n const currentIdx = enabledItems.indexOf(item);\n\n let targetItem: AccordionItem | null = null;\n\n switch (event.key) {\n case 'ArrowDown':\n targetItem = enabledItems[(currentIdx + 1) % len];\n break;\n case 'ArrowUp':\n targetItem = enabledItems[(currentIdx - 1 + len) % len];\n break;\n case 'Home':\n targetItem = enabledItems[0];\n break;\n case 'End':\n targetItem = enabledItems[len - 1];\n break;\n default:\n return;\n }\n\n event.preventDefault();\n targetItem.focus();\n }\n}\n\n/**\n * Directive to mark the accordion header content.\n */\n@Directive({\n selector: '[atlAccordionHeader]',\n standalone: true,\n})\nexport class AtlAccordionHeader {}\n\n/**\n * Individual collapsible accordion item. Place inside `<atl-accordion-group>`.\n *\n * Usage:\n * ```html\n * <atl-accordion-item [(expanded)]=\"isOpen\">\n * <span atlAccordionHeader>Section Title</span>\n * Section content goes here.\n * </atl-accordion-item>\n * ```\n */\n@Component({\n selector: 'atl-accordion-item',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CdkAccordionItem],\n template: `\n <div role=\"heading\" [attr.aria-level]=\"headingLevel()\" class=\"accordion-heading\">\n <button\n type=\"button\"\n class=\"accordion-trigger\"\n [id]=\"triggerId\"\n [attr.aria-expanded]=\"isExpandedValue\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-disabled]=\"ariaDisabled\"\n [class.is-disabled]=\"isDisabled\"\n (click)=\"onToggle()\"\n (keydown)=\"onKeydown($event)\"\n >\n <ng-content select=\"[atlAccordionHeader]\" />\n <atl-icon name=\"chevron-down\" size=\"sm\" class=\"chevron\" [class.is-expanded]=\"isExpandedValue\" />\n </button>\n </div>\n <div\n class=\"accordion-panel-wrapper\"\n [class.is-expanded]=\"isExpandedValue\"\n >\n <div\n role=\"region\"\n [id]=\"panelId\"\n [attr.aria-labelledby]=\"triggerId\"\n class=\"accordion-panel\"\n >\n <ng-content />\n </div>\n </div>\n `,\n styleUrl: './atl-accordion.css',\n host: {\n class: 'atl-accordion-item',\n '[attr.data-accordion-id]': 'id',\n },\n})\nexport class AtlAccordionItem implements AccordionItem, OnInit, OnDestroy {\n /** Whether this item is expanded. Supports two-way binding. */\n readonly expanded = model(false);\n\n /** Whether this item is disabled. */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly disabledInput = input(false, { alias: 'disabled' });\n\n /**\n * HTML heading level wrapping the trigger button. Default `3`.\n * Match your page's heading outline so heading order stays valid.\n * Rendered as `<div role=\"heading\" aria-level=\"N\">` so screen\n * readers treat it as a real heading at that level.\n */\n readonly headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(3);\n\n /** @internal — satisfies AccordionItem / FocusableOption interface */\n get disabled(): boolean {\n return this.disabledInput();\n }\n\n /** @internal */\n readonly id = `atl-accordion-item-${nextId++}`;\n\n /** @internal */\n readonly triggerId = `${this.id}-trigger`;\n\n /** @internal */\n readonly panelId = `${this.id}-panel`;\n\n /** @internal */\n private readonly group = inject(AtlAccordionGroup);\n\n /** @internal */\n private readonly cdkItem = inject(CdkAccordionItem);\n\n /** @internal */\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @internal */\n protected readonly isExpanded = signal(false);\n\n /** @internal */\n get isExpandedValue(): boolean {\n return this.isExpanded();\n }\n\n /** @internal */\n get isDisabled(): boolean {\n return this.disabledInput();\n }\n\n /** @internal */\n get ariaDisabled(): boolean | null {\n return this.disabledInput() || null;\n }\n\n constructor() {\n this.cdkItem.expandedChange.subscribe((expanded: boolean) => {\n this.isExpanded.set(expanded);\n this.expanded.set(expanded);\n });\n }\n\n ngOnInit(): void {\n this.group.register(this);\n // Sync initial expanded model\n if (this.expanded()) {\n this.cdkItem.open();\n }\n }\n\n ngOnDestroy(): void {\n this.group.unregister(this);\n }\n\n /** @internal — for FocusKeyManager */\n focus(): void {\n this.el.nativeElement.querySelector<HTMLButtonElement>('.accordion-trigger')?.focus();\n }\n\n /** @internal */\n protected onToggle(): void {\n if (this.disabledInput()) return;\n this.cdkItem.toggle();\n }\n\n /** @internal */\n protected onKeydown(event: KeyboardEvent): void {\n this.group.handleKeydown(event, this);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\n\n/**\n * Trigger directive that opens an `<atl-menu>` dropdown.\n * Apply to any element (typically `<atl-button>`) to wire up click + keyboard open/close.\n *\n * Usage:\n * ```html\n * <atl-button [atlMenuTriggerFor]=\"myMenu\">Open</atl-button>\n * <ng-template #myMenu>\n * <atl-menu>\n * <atl-menu-item (triggered)=\"action()\">Action</atl-menu-item>\n * </atl-menu>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[atlMenuTriggerFor]',\n standalone: true,\n hostDirectives: [\n {\n directive: CdkMenuTrigger,\n inputs: ['cdkMenuTriggerFor: atlMenuTriggerFor'],\n },\n ],\n})\nexport class AtlMenuTrigger {}\n\n/**\n * Accessible dropdown menu panel.\n * Uses `@angular/cdk/menu` for keyboard navigation, focus management, and ARIA.\n *\n * Usage:\n * ```html\n * <atl-button [atlMenuTriggerFor]=\"actions\">Actions</atl-button>\n * <ng-template #actions>\n * <atl-menu>\n * <atl-menu-item (triggered)=\"onCopy()\">Copy</atl-menu-item>\n * <atl-menu-separator />\n * <atl-menu-item [disabled]=\"true\">Paste</atl-menu-item>\n * </atl-menu>\n * </ng-template>\n * ```\n */\n@Component({\n selector: 'atl-menu',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [CdkMenu],\n template: `<ng-content />`,\n styleUrl: './atl-menu.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlMenu {\n /** Visual variant. `compact` reduces font size and padding. */\n readonly variant = input<'default' | 'compact'>('default');\n\n /** @internal */\n protected readonly hostClasses = computed(() => `atl-menu variant-${this.variant()}`);\n}\n\n/**\n * A single item inside an `<atl-menu>`.\n * Supports keyboard navigation, disabled state, and nested submenus via `[atlMenuTriggerFor]`.\n *\n * Usage:\n * ```html\n * <atl-menu-item (triggered)=\"doSomething()\">Label</atl-menu-item>\n * <atl-menu-item [disabled]=\"true\">Disabled</atl-menu-item>\n * ```\n */\n@Component({\n selector: 'atl-menu-item',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: CdkMenuItem,\n inputs: ['cdkMenuItemDisabled: disabled'],\n outputs: ['cdkMenuItemTriggered: triggered'],\n },\n ],\n template: `\n <ng-content />\n @if (hasSubmenu()) {\n <span class=\"atl-menu-item-chevron\" aria-hidden=\"true\">›</span>\n }\n `,\n host: {\n class: 'atl-menu-item',\n '[class.is-disabled]': 'disabled()',\n },\n})\nexport class AtlMenuItem {\n /** Whether this menu item is disabled. */\n readonly disabled = input(false);\n\n /** @internal — detect if this item also triggers a submenu */\n private readonly menuTrigger = inject(CdkMenuTrigger, { optional: true, self: true });\n\n /** @internal */\n protected readonly hasSubmenu = computed(() => !!this.menuTrigger);\n}\n\n/**\n * Visual separator between groups of menu items.\n *\n * Usage:\n * ```html\n * <atl-menu-item>Copy</atl-menu-item>\n * <atl-menu-separator />\n * <atl-menu-item>Delete</atl-menu-item>\n * ```\n */\n@Component({\n selector: 'atl-menu-separator',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ``,\n host: {\n class: 'atl-menu-separator',\n role: 'separator',\n },\n})\nexport class AtlMenuSeparator {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n Injector,\n input,\n OnDestroy,\n signal,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {\n createFlexibleConnectedPositionStrategy,\n createOverlayRef,\n createRepositionScrollStrategy,\n type ConnectedPosition,\n type OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\nlet nextTooltipId = 0;\n\n/** @internal — Rendered inside the CDK overlay when the tooltip is visible. */\n@Component({\n selector: 'atl-tooltip-content',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None,\n template: `{{ text() }}`,\n styleUrl: './atl-tooltip.css',\n host: {\n class: 'atl-tooltip',\n role: 'tooltip',\n '[id]': 'tooltipId()',\n },\n})\nexport class AtlTooltipContent {\n /** @internal */\n readonly text = input('');\n /** @internal */\n readonly tooltipId = input('');\n}\n\nconst POSITIONS: Record<string, ConnectedPosition[]> = {\n above: [\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n ],\n below: [\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n ],\n left: [\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n ],\n right: [\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n ],\n};\n\n/**\n * Attribute directive that displays a text tooltip on hover or focus.\n * Uses `@angular/cdk/overlay` for viewport-aware positioning.\n *\n * Usage:\n * ```html\n * <atl-button atlTooltip=\"Save your changes\">Save</atl-button>\n * <atl-button atlTooltip=\"Copy to clipboard\" atlTooltipPosition=\"right\">Copy</atl-button>\n * ```\n */\n@Directive({\n selector: '[atlTooltip]',\n standalone: true,\n host: {\n '(mouseenter)': 'show()',\n '(mouseleave)': 'hide()',\n '(focusin)': 'show()',\n '(focusout)': 'hide()',\n '(keydown.escape)': 'hide()',\n '[attr.aria-describedby]': 'activeTooltipId()',\n },\n})\nexport class AtlTooltip implements OnDestroy {\n /** The tooltip text. */\n readonly atlTooltip = input.required<string>();\n\n /** Preferred tooltip placement. Falls back to the opposite side if clipped. */\n readonly atlTooltipPosition = input<'above' | 'below' | 'left' | 'right'>('above');\n\n /** Disable the tooltip without removing the directive. */\n readonly atlTooltipDisabled = input(false);\n\n /** Delay in ms before the tooltip appears. */\n readonly atlTooltipShowDelay = input(300);\n\n /** Delay in ms before the tooltip hides. */\n readonly atlTooltipHideDelay = input(0);\n\n private readonly injector = inject(Injector);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private overlayRef: OverlayRef | null = null;\n private showTimer: ReturnType<typeof setTimeout> | null = null;\n private hideTimer: ReturnType<typeof setTimeout> | null = null;\n\n /** @internal — links host aria-describedby to the tooltip element */\n protected readonly activeTooltipId = signal<string | null>(null);\n\n /** @internal */\n protected show(): void {\n if (this.atlTooltipDisabled() || !this.atlTooltip()) return;\n this.clearHideTimer();\n\n if (this.overlayRef?.hasAttached()) return;\n\n this.showTimer = setTimeout(() => {\n this.showTimer = null;\n this.attach();\n }, this.atlTooltipShowDelay());\n }\n\n /** @internal */\n protected hide(): void {\n this.clearShowTimer();\n\n if (!this.overlayRef?.hasAttached()) return;\n\n this.hideTimer = setTimeout(() => {\n this.hideTimer = null;\n this.overlayRef?.detach();\n this.activeTooltipId.set(null);\n }, this.atlTooltipHideDelay());\n }\n\n ngOnDestroy(): void {\n this.clearShowTimer();\n this.clearHideTimer();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n private attach(): void {\n if (!this.overlayRef) {\n this.overlayRef = this.createOverlay();\n }\n\n if (this.overlayRef.hasAttached()) return;\n\n const id = `atl-tooltip-${nextTooltipId++}`;\n const portal = new ComponentPortal(AtlTooltipContent);\n const ref = this.overlayRef.attach(portal);\n ref.setInput('text', this.atlTooltip());\n ref.setInput('tooltipId', id);\n this.activeTooltipId.set(id);\n }\n\n private createOverlay(): OverlayRef {\n const positions = POSITIONS[this.atlTooltipPosition()] ?? POSITIONS['above'];\n\n const positionStrategy = createFlexibleConnectedPositionStrategy(\n this.injector,\n this.elementRef,\n )\n .withPositions(positions)\n .withFlexibleDimensions(false)\n .withPush(true);\n\n const scrollStrategy = createRepositionScrollStrategy(this.injector);\n\n return createOverlayRef(this.injector, {\n positionStrategy,\n scrollStrategy,\n panelClass: 'atl-tooltip-panel',\n });\n }\n\n private clearShowTimer(): void {\n if (this.showTimer !== null) {\n clearTimeout(this.showTimer);\n this.showTimer = null;\n }\n }\n\n private clearHideTimer(): void {\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = null;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\n\n/**\n * Loading placeholder that mimics the shape of content while it loads.\n *\n * Usage:\n * ```html\n * <atl-skeleton />\n * <atl-skeleton variant=\"circular\" width=\"40px\" />\n * <atl-skeleton variant=\"rectangular\" height=\"200px\" />\n * ```\n */\n@Component({\n selector: 'atl-skeleton',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ``,\n styleUrl: './atl-skeleton.css',\n host: {\n '[class]': 'hostClasses()',\n '[style.width]': 'width()',\n '[style.height]': 'computedHeight()',\n 'aria-hidden': 'true',\n },\n})\nexport class AtlSkeleton {\n /** Shape variant of the skeleton placeholder. */\n readonly variant = input<'text' | 'circular' | 'rectangular'>('text');\n\n /** CSS width of the skeleton. */\n readonly width = input('100%');\n\n /** CSS height — when empty, a sensible default is chosen per variant. */\n readonly height = input('');\n\n /** Whether the shimmer animation is active. */\n readonly animated = input(true);\n\n protected readonly computedHeight = computed(() => {\n if (this.height()) return this.height();\n switch (this.variant()) {\n case 'text':\n return '1em';\n case 'circular':\n return this.width();\n case 'rectangular':\n return '100px';\n }\n });\n\n protected readonly hostClasses = computed(() => {\n const classes = [`variant-${this.variant()}`];\n if (this.animated()) classes.push('is-animated');\n return classes.join(' ');\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Injectable,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/** Variant types for toast notifications. */\nexport type ToastVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\n\n/** Options for creating a toast notification. */\nexport interface ToastOptions {\n variant?: ToastVariant;\n /** Duration in ms before auto-dismiss. 0 = no auto-dismiss. Default 5000. */\n duration?: number;\n /** Whether the toast shows a dismiss button. Default true. */\n dismissible?: boolean;\n}\n\n/** Internal data for a toast instance. */\nexport interface ToastData {\n id: string;\n message: string;\n variant: ToastVariant;\n duration: number;\n dismissible: boolean;\n}\n\nlet toastId = 0;\n\n/**\n * Service for showing transient toast notifications.\n *\n * Usage:\n * ```typescript\n * const toast = inject(AtlToastService);\n * toast.show('Saved successfully', { variant: 'success' });\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class AtlToastService {\n readonly toasts = signal<ToastData[]>([]);\n\n private readonly timers = new Map<string, ReturnType<typeof setTimeout>>();\n\n /**\n * Show a toast notification.\n * @returns The unique id of the toast, which can be used with `dismiss()`.\n */\n show(message: string, options?: ToastOptions): string {\n const id = `atl-toast-${toastId++}`;\n const toast: ToastData = {\n id,\n message,\n variant: options?.variant ?? 'default',\n duration: options?.duration ?? 5000,\n dismissible: options?.dismissible ?? true,\n };\n\n this.toasts.update((list) => [...list, toast]);\n\n if (toast.duration > 0) {\n const timer = setTimeout(() => this.dismiss(id), toast.duration);\n this.timers.set(id, timer);\n }\n\n return id;\n }\n\n /** Dismiss a single toast by id. */\n dismiss(id: string): void {\n const timer = this.timers.get(id);\n if (timer !== undefined) {\n clearTimeout(timer);\n this.timers.delete(id);\n }\n this.toasts.update((list) => list.filter((t) => t.id !== id));\n }\n\n /** Clear all active toasts. */\n clear(): void {\n for (const timer of this.timers.values()) {\n clearTimeout(timer);\n }\n this.timers.clear();\n this.toasts.set([]);\n }\n}\n\n/**\n * Individual toast notification.\n *\n * Typically rendered by `atl-toast-container`, but can also be used standalone.\n */\n@Component({\n selector: 'atl-toast',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span class=\"message\">{{ message() }}</span>\n @if (dismissible()) {\n <button class=\"dismiss\" type=\"button\" aria-label=\"Dismiss\" (click)=\"onDismiss()\">\n <atl-icon name=\"close\" size=\"sm\" />\n </button>\n }\n `,\n styleUrl: './atl-toast.css',\n host: {\n '[class]': 'hostClasses()',\n role: 'status',\n },\n})\nexport class AtlToast {\n /** Semantic color variant. */\n readonly variant = input<ToastVariant>('default');\n\n /** Whether to show a dismiss button. */\n readonly dismissible = input(true);\n\n /** The message to display. */\n readonly message = input('');\n\n /** Unique identifier for this toast. */\n readonly toastId = input('');\n\n /** Emitted when the toast is dismissed by the user. */\n readonly dismissed = output<string>();\n\n protected readonly hostClasses = computed(() => `variant-${this.variant()}`);\n\n protected onDismiss(): void {\n this.dismissed.emit(this.toastId());\n }\n}\n\n/**\n * Container that renders the toast stack at a fixed viewport position.\n * Place once in your app root or layout component.\n *\n * Usage:\n * ```html\n * <atl-toast-container position=\"bottom-right\" />\n * ```\n */\n@Component({\n selector: 'atl-toast-container',\n standalone: true,\n imports: [AtlToast],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @for (toast of toastService.toasts(); track toast.id) {\n <atl-toast\n [variant]=\"toast.variant\"\n [dismissible]=\"toast.dismissible\"\n [message]=\"toast.message\"\n [toastId]=\"toast.id\"\n (dismissed)=\"toastService.dismiss($event)\"\n />\n }\n `,\n styleUrl: './atl-toast-container.css',\n host: {\n '[class]': 'hostClasses()',\n 'aria-live': 'polite',\n role: 'status',\n },\n})\nexport class AtlToastContainer {\n protected readonly toastService = inject(AtlToastService);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Position of the toast stack on the viewport. */\n readonly position = input<'top-right' | 'top-center' | 'bottom-right' | 'bottom-center'>('bottom-right');\n\n protected readonly hostClasses = computed(() => `position-${this.position()}`);\n\n constructor() {\n this.destroyRef.onDestroy(() => this.toastService.clear());\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n contentChildren,\n effect,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/**\n * Displays a user avatar with image, initials, or icon fallback.\n *\n * Fallback order: image → initials (from `name`) → generic icon.\n *\n * Usage:\n * ```html\n * <atl-avatar src=\"https://example.com/photo.jpg\" name=\"Jane Doe\" />\n * <atl-avatar name=\"John Smith\" size=\"lg\" status=\"online\" />\n * <atl-avatar size=\"sm\" shape=\"square\" />\n * ```\n */\n@Component({\n selector: 'atl-avatar',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <!-- eslint-disable -->\n @if (src() && showImage()) {\n <img [src]=\"src()\" [alt]=\"alt()\" (error)=\"showImage.set(false)\" />\n } @else if (initials()) {\n <span class=\"initials\" aria-hidden=\"true\">{{ initials() }}</span>\n } @else {\n <atl-icon name=\"person\" size=\"sm\" class=\"icon\" />\n }\n @if (status()) {\n <span [class]=\"'status-dot status-' + status()\" aria-hidden=\"true\"></span>\n }\n `,\n styleUrl: './atl-avatar.css',\n host: {\n '[class]': 'hostClasses()',\n role: 'img',\n '[attr.aria-label]': 'ariaLabel()',\n },\n})\nexport class AtlAvatar {\n /** Image URL. Falls back to initials or icon if empty or fails to load. */\n readonly src = input('');\n\n /** Alt text for the image (also used as aria-label). */\n readonly alt = input('');\n\n /** Full name used to generate initials fallback and default aria-label. */\n readonly name = input('');\n\n /** Size of the avatar. */\n readonly size = input<'xs' | 'sm' | 'md' | 'lg' | 'xl'>('md');\n\n /** Shape of the avatar. */\n readonly shape = input<'circle' | 'square'>('circle');\n\n /** Presence status indicator dot. Empty string hides the dot. */\n readonly status = input<'online' | 'offline' | 'away' | 'busy' | ''>('');\n\n /** @internal — reset to true whenever src changes */\n protected readonly showImage = signal(true);\n\n /** @internal */\n protected readonly initials = computed(() => {\n const name = this.name();\n if (!name) return '';\n return name\n .split(' ')\n .filter(Boolean)\n .slice(0, 2)\n .map((w) => w[0].toUpperCase())\n .join('');\n });\n\n /** @internal */\n protected readonly ariaLabel = computed(\n () => this.alt() || this.name() || 'Avatar'\n );\n\n /** @internal */\n protected readonly hostClasses = computed(\n () => `size-${this.size()} shape-${this.shape()}`\n );\n\n constructor() {\n effect(() => {\n this.src(); // track src changes\n untracked(() => this.showImage.set(true));\n });\n }\n}\n\n/**\n * Groups multiple avatars with overlap and an overflow count badge.\n *\n * Usage:\n * ```html\n * <atl-avatar-group [max]=\"3\" size=\"md\">\n * <atl-avatar name=\"Alice\" />\n * <atl-avatar name=\"Bob\" />\n * <atl-avatar name=\"Charlie\" />\n * <atl-avatar name=\"Dave\" />\n * </atl-avatar-group>\n * ```\n */\n@Component({\n selector: 'atl-avatar-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-content />\n @if (overflowCount() > 0) {\n <span [class]=\"'overflow-badge size-' + size()\">+{{ overflowCount() }}</span>\n }\n `,\n styleUrl: './atl-avatar.css',\n host: {\n class: 'group',\n '[class]': '\"group size-\" + size()',\n },\n})\nexport class AtlAvatarGroup {\n /** Maximum visible avatars before showing an overflow count. */\n readonly max = input(5);\n\n /** Size applied to the overflow badge (match the size used on child avatars). */\n readonly size = input<'xs' | 'sm' | 'md' | 'lg' | 'xl'>('md');\n\n private readonly avatarEls = contentChildren(AtlAvatar, { read: ElementRef });\n\n protected readonly overflowCount = computed(() =>\n Math.max(0, this.avatarEls().length - this.max())\n );\n\n constructor() {\n effect(() => {\n const max = this.max();\n this.avatarEls().forEach((el, i) => {\n (el.nativeElement as HTMLElement).style.display = i >= max ? 'none' : '';\n });\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\n\n/**\n * Progress bar with determinate and indeterminate states.\n *\n * Usage:\n * ```html\n * <atl-progress [value]=\"75\" />\n * <atl-progress variant=\"success\" [value]=\"100\" />\n * <atl-progress [indeterminate]=\"true\" />\n * ```\n */\n@Component({\n selector: 'atl-progress',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"track\">\n <div class=\"fill\" [style.width]=\"fillWidth()\"></div>\n </div>\n `,\n styleUrl: './atl-progress.css',\n host: {\n role: 'progressbar',\n 'aria-valuemin': '0',\n '[attr.aria-valuenow]': 'indeterminate() ? null : clampedValue()',\n '[attr.aria-valuemax]': 'indeterminate() ? null : max()',\n '[attr.aria-label]': 'label() || null',\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlProgress {\n /** Current value of the progress bar. */\n readonly value = input<number>(0);\n\n /** Maximum value. */\n readonly max = input<number>(100);\n\n /** Semantic color variant. */\n readonly variant = input<'default' | 'success' | 'warning' | 'danger'>('default');\n\n /** Height size of the track. */\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n\n /** Shows an animated indeterminate state (loading). */\n readonly indeterminate = input(false);\n\n /**\n * Accessible name — rendered as `aria-label` on the host.\n * Required by ARIA when there is no visible label nearby.\n */\n readonly label = input<string | undefined>(undefined);\n\n protected readonly clampedValue = computed(() =>\n Math.min(Math.max(this.value(), 0), this.max())\n );\n\n protected readonly fillWidth = computed(() =>\n this.indeterminate()\n ? '100%'\n : `${(this.clampedValue() / this.max()) * 100}%`\n );\n\n protected readonly hostClasses = computed(\n () =>\n `variant-${this.variant()} size-${this.size()}${this.indeterminate() ? ' is-indeterminate' : ''}`\n );\n}\n","import { InjectionToken, Signal } from '@angular/core';\n\nexport interface AtlBreadcrumbsContext {\n registerItem(): number;\n unregisterItem(id: number): void;\n readonly lastItemId: Signal<number>;\n}\n\nexport const ATL_BREADCRUMBS = new InjectionToken<AtlBreadcrumbsContext>('ATL_BREADCRUMBS');\n","import {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport type { AtlBreadcrumbsSpec } from '../spec';\nimport { ATL_BREADCRUMBS } from './atl-breadcrumbs.token';\n\n/**\n * Accessible breadcrumb navigation. Wrap `atl-breadcrumb-item` elements inside.\n * The last item is automatically marked as the current page.\n *\n * Usage:\n * ```html\n * <atl-breadcrumbs>\n * <atl-breadcrumb-item href=\"/home\">Home</atl-breadcrumb-item>\n * <atl-breadcrumb-item href=\"/products\">Products</atl-breadcrumb-item>\n * <atl-breadcrumb-item>Widget X</atl-breadcrumb-item>\n * </atl-breadcrumbs>\n * ```\n */\n@Component({\n selector: 'atl-breadcrumbs',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ATL_BREADCRUMBS,\n useFactory: (bc: AtlBreadcrumbs) => ({\n registerItem: () => bc.registerItem(),\n unregisterItem: (id: number) => bc.unregisterItem(id),\n lastItemId: bc.lastItemId,\n }),\n deps: [AtlBreadcrumbs],\n },\n ],\n template: `\n <nav aria-label=\"Breadcrumb\">\n <ol role=\"list\" class=\"list\">\n <ng-content />\n </ol>\n </nav>\n `,\n styleUrl: './atl-breadcrumbs.css',\n host: {\n class: 'atl-breadcrumbs',\n '[style.--atl-separator]': 'separatorCssVar()',\n },\n})\nexport class AtlBreadcrumbs {\n readonly separator = input<AtlBreadcrumbsSpec['separator']>('/');\n\n protected readonly separatorCssVar = computed(() => `'${this.separator()}'`);\n\n private readonly _itemIds = signal<number[]>([]);\n private _nextId = 0;\n\n /** @internal — used by AtlBreadcrumbItem via ATL_BREADCRUMBS token */\n readonly lastItemId = computed(() => {\n const ids = this._itemIds();\n return ids.length > 0 ? ids[ids.length - 1] : -1;\n });\n\n /** @internal */\n registerItem(): number {\n const id = this._nextId++;\n this._itemIds.update((ids) => [...ids, id]);\n return id;\n }\n\n /** @internal */\n unregisterItem(id: number): void {\n this._itemIds.update((ids) => ids.filter((i) => i !== id));\n }\n}\n\n/**\n * A single breadcrumb step. The last item is automatically treated as\n * `aria-current=\"page\"` and rendered as plain text (no link).\n */\n@Component({\n selector: 'atl-breadcrumb-item',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <li class=\"item\">\n <a\n [attr.href]=\"href() && !isCurrent() ? href() : null\"\n [attr.aria-current]=\"isCurrent() ? 'page' : null\"\n ><ng-content /></a>\n </li>\n `,\n styleUrl: './atl-breadcrumbs.css',\n host: {\n class: 'atl-breadcrumb-item',\n '[class.is-current]': 'isCurrent()',\n },\n})\nexport class AtlBreadcrumbItem implements OnInit, OnDestroy {\n /** Optional href for navigation. Ignored on the last (current) item. */\n readonly href = input('');\n\n private readonly context = inject(ATL_BREADCRUMBS);\n private readonly myIndex = signal(-1);\n\n protected readonly isCurrent = computed(\n () => this.myIndex() >= 0 && this.myIndex() === this.context.lastItemId()\n );\n\n ngOnInit(): void {\n this.myIndex.set(this.context.registerItem());\n }\n\n ngOnDestroy(): void {\n if (this.myIndex() >= 0) {\n this.context.unregisterItem(this.myIndex());\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n} from '@angular/core';\nimport { AtlIcon } from '../icon/atl-icon';\n\nexport type PageItem =\n | { type: 'page'; page: number }\n | { type: 'ellipsis'; key: string };\n\n/**\n * Pagination control for navigating multi-page content.\n *\n * Usage:\n * ```html\n * <atl-pagination [(page)]=\"currentPage\" [pageCount]=\"totalPages\" />\n * ```\n */\n@Component({\n selector: 'atl-pagination',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <nav aria-label=\"Pagination\">\n <ul role=\"list\" class=\"page-list\">\n @if (showFirstLast()) {\n <li>\n <button\n class=\"page-btn\"\n [class.is-disabled]=\"page() <= 1\"\n [disabled]=\"page() <= 1\"\n aria-label=\"First page\"\n (click)=\"goFirst()\"\n ><atl-icon name=\"chevron-double-left\" size=\"sm\" /></button>\n </li>\n }\n <li>\n <button\n class=\"page-btn\"\n [class.is-disabled]=\"page() <= 1\"\n [disabled]=\"page() <= 1\"\n aria-label=\"Previous page\"\n (click)=\"goPrev()\"\n ><atl-icon name=\"chevron-left\" size=\"sm\" /></button>\n </li>\n\n @for (item of pageItems(); track $index) {\n @if (item.type === 'page') {\n <li>\n <button\n class=\"page-btn\"\n [class.is-active]=\"item.page === page()\"\n [attr.aria-current]=\"item.page === page() ? 'page' : null\"\n [attr.aria-label]=\"'Page ' + item.page\"\n (click)=\"goTo(item.page)\"\n >{{ item.page }}</button>\n </li>\n } @else {\n <li>\n <span class=\"ellipsis\" aria-hidden=\"true\">…</span>\n </li>\n }\n }\n\n <li>\n <button\n class=\"page-btn\"\n [class.is-disabled]=\"page() >= pageCount()\"\n [disabled]=\"page() >= pageCount()\"\n aria-label=\"Next page\"\n (click)=\"goNext()\"\n ><atl-icon name=\"chevron-right\" size=\"sm\" /></button>\n </li>\n @if (showFirstLast()) {\n <li>\n <button\n class=\"page-btn\"\n [class.is-disabled]=\"page() >= pageCount()\"\n [disabled]=\"page() >= pageCount()\"\n aria-label=\"Last page\"\n (click)=\"goLast()\"\n ><atl-icon name=\"chevron-double-right\" size=\"sm\" /></button>\n </li>\n }\n </ul>\n </nav>\n `,\n styleUrl: './atl-pagination.css',\n})\nexport class AtlPagination {\n /** Current page (1-based). Supports two-way binding: [(page)]=\"currentPage\". */\n readonly page = model(1);\n\n /** Total number of pages. */\n readonly pageCount = input(1);\n\n /** Number of page buttons to show on each side of the current page. */\n readonly siblingCount = input(1);\n\n /** Whether to show first/last page jump buttons. */\n readonly showFirstLast = input(true);\n\n protected readonly pageItems = computed((): PageItem[] => {\n const total = this.pageCount();\n const current = this.page();\n const siblings = this.siblingCount();\n\n if (total <= 1) return [{ type: 'page', page: 1 }];\n\n const items: PageItem[] = [];\n\n // Always include first page\n items.push({ type: 'page', page: 1 });\n\n const left = Math.max(2, current - siblings);\n const right = Math.min(total - 1, current + siblings);\n\n // Left ellipsis\n if (left > 2) {\n items.push({ type: 'ellipsis', key: 'ellipsis-start' });\n }\n\n // Middle pages\n for (let p = left; p <= right; p++) {\n items.push({ type: 'page', page: p });\n }\n\n // Right ellipsis\n if (right < total - 1) {\n items.push({ type: 'ellipsis', key: 'ellipsis-end' });\n }\n\n // Always include last page\n items.push({ type: 'page', page: total });\n\n return items;\n });\n\n protected goTo(p: number): void {\n const clamped = Math.min(Math.max(p, 1), this.pageCount());\n this.page.set(clamped);\n }\n\n protected goPrev(): void {\n this.goTo(this.page() - 1);\n }\n\n protected goNext(): void {\n this.goTo(this.page() + 1);\n }\n\n protected goFirst(): void {\n this.goTo(1);\n }\n\n protected goLast(): void {\n this.goTo(this.pageCount());\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface AtlDrawerContext {\n headerId: string;\n close: () => void;\n}\n\nexport const ATL_DRAWER = new InjectionToken<AtlDrawerContext>('ATL_DRAWER');\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ATL_DRAWER } from './atl-drawer.token';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Slide-in drawer panel using the native `<dialog>` element.\n * Supports left, right, top, and bottom positions with focus trap,\n * Escape to close, and backdrop click to close.\n * Compose with `atl-drawer-header`, `atl-drawer-content`, and `atl-drawer-footer`.\n *\n * Usage:\n * ```html\n * <atl-button (click)=\"isOpen = true\">Open</atl-button>\n * <atl-drawer [(open)]=\"isOpen\" position=\"right\">\n * <atl-drawer-header>Settings</atl-drawer-header>\n * <atl-drawer-content>Content here.</atl-drawer-content>\n * <atl-drawer-footer>\n * <atl-button variant=\"primary\" (click)=\"isOpen = false\">Save</atl-button>\n * </atl-drawer-footer>\n * </atl-drawer>\n * ```\n */\n@Component({\n selector: 'atl-drawer',\n standalone: true,\n imports: [A11yModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ATL_DRAWER,\n useFactory: (drawer: AtlDrawer) => ({\n headerId: drawer.headerId,\n close: () => drawer.open.set(false),\n }),\n deps: [AtlDrawer],\n },\n ],\n template: `\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <dialog\n #dialogEl\n [attr.aria-labelledby]=\"headerId\"\n aria-modal=\"true\"\n [cdkTrapFocus]=\"open()\"\n (cancel)=\"onCancel($event)\"\n (close)=\"open.set(false)\"\n (click)=\"onBackdropClick($event)\"\n >\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div class=\"panel\" (click)=\"$event.stopPropagation()\">\n <ng-content />\n </div>\n </dialog>\n `,\n styleUrl: './atl-drawer.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlDrawer {\n /** Whether the drawer is open. Supports two-way binding: [(open)]=\"isOpen\". */\n readonly open = model(false);\n\n /** Which edge the drawer slides in from. */\n readonly position = input<'left' | 'right' | 'top' | 'bottom'>('right');\n\n /** Width (for left/right) or height (for top/bottom) of the panel. */\n readonly size = input<'sm' | 'md' | 'lg' | 'full'>('md');\n\n /** Whether clicking the backdrop closes the drawer. */\n readonly closeOnBackdrop = input(true);\n\n /** @internal — referenced by AtlDrawerHeader via ATL_DRAWER token */\n readonly headerId = `atl-drawer-header-${nextId}`;\n\n protected readonly drawerId = `atl-drawer-${nextId++}`;\n protected readonly dialogRef = viewChild<ElementRef<HTMLDialogElement>>('dialogEl');\n private readonly triggerEl = signal<HTMLElement | null>(null);\n\n protected readonly hostClasses = computed(\n () =>\n `atl-drawer position-${this.position()} size-${this.size()}${this.open() ? ' is-open' : ''}`\n );\n\n constructor() {\n effect(() => {\n const dialog = this.dialogRef()?.nativeElement;\n if (!dialog) return;\n if (this.open()) {\n this.triggerEl.set(document.activeElement as HTMLElement);\n dialog.showModal();\n } else {\n if (dialog.open) dialog.close();\n this.triggerEl()?.focus();\n this.triggerEl.set(null);\n }\n });\n }\n\n protected onCancel(event: Event): void {\n event.preventDefault();\n this.open.set(false);\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (this.closeOnBackdrop() && event.target === this.dialogRef()?.nativeElement) {\n this.open.set(false);\n }\n }\n}\n\n/**\n * Header slot for `atl-drawer`. Contains the title and a close button.\n * Automatically receives the correct `id` for `aria-labelledby` association.\n */\n@Component({\n selector: 'atl-drawer-header',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-content />\n <button\n class=\"close-btn\"\n type=\"button\"\n aria-label=\"Close drawer\"\n (click)=\"context.close()\"\n >\n <atl-icon name=\"close\" size=\"sm\" />\n </button>\n `,\n styleUrl: './atl-drawer.css',\n host: {\n class: 'atl-drawer-header',\n '[attr.id]': 'context.headerId',\n },\n})\nexport class AtlDrawerHeader {\n protected readonly context = inject(ATL_DRAWER);\n}\n\n/**\n * Content slot for `atl-drawer`. Scrollable primary content area.\n */\n@Component({\n selector: 'atl-drawer-content',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-drawer.css',\n host: { class: 'atl-drawer-content' },\n})\nexport class AtlDrawerContent {}\n\n/**\n * Footer slot for `atl-drawer`. Renders at the bottom with action buttons.\n */\n@Component({\n selector: 'atl-drawer-footer',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-drawer.css',\n host: { class: 'atl-drawer-footer' },\n})\nexport class AtlDrawerFooter {}\n","import {\n ChangeDetectionStrategy,\n Component,\n InjectionToken,\n Signal,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { AtlCheckbox } from '../checkbox/atl-checkbox';\nimport { AtlIcon } from '../icon/atl-icon';\n\n// ---------------------------------------------------------------------------\n// Context token\n// ---------------------------------------------------------------------------\n\nexport interface AtlTableContext {\n readonly size: Signal<'sm' | 'md' | 'lg'>;\n readonly variant: Signal<'default' | 'striped' | 'bordered'>;\n}\n\nexport const ATL_TABLE = new InjectionToken<AtlTableContext>('ATL_TABLE');\n\n// ---------------------------------------------------------------------------\n// AtlTable\n// ---------------------------------------------------------------------------\n\n/**\n * Accessible data table with sorting, row selection, sticky header, and empty state.\n * Compose with `atl-thead`, `atl-tbody`, `atl-tr`, `atl-th`, and `atl-td`.\n *\n * Usage:\n * ```html\n * <atl-table variant=\"striped\" [stickyHeader]=\"true\">\n * <atl-thead>\n * <atl-tr>\n * <atl-th sortable [sortDirection]=\"sort\" (sort)=\"sort = $event\">Name</atl-th>\n * <atl-th>Status</atl-th>\n * </atl-tr>\n * </atl-thead>\n * <atl-tbody [empty]=\"rows.length === 0\" [colSpan]=\"2\">\n * @for (row of rows; track row.id) {\n * <atl-tr selectable [selected]=\"selection.has(row.id)\" (selectedChange)=\"toggle(row.id, $event)\">\n * <atl-td>{{ row.name }}</atl-td>\n * <atl-td>{{ row.status }}</atl-td>\n * </atl-tr>\n * }\n * <div atlTableEmpty>No results found.</div>\n * </atl-tbody>\n * </atl-table>\n * ```\n */\n@Component({\n selector: 'atl-table',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <!-- The wrapper is the scrollable region — tabindex=0 lets keyboard\n users scroll horizontally through wide tables. role=region +\n aria-label expose it as a labelled landmark for screen readers\n (axe: scrollable-region-focusable). -->\n <div\n class=\"atl-table-wrapper\"\n tabindex=\"0\"\n role=\"region\"\n [attr.aria-label]=\"ariaLabel() || 'Table'\"\n >\n <table>\n <ng-content />\n </table>\n </div>\n `,\n styleUrl: './atl-table.css',\n host: {\n '[class]': 'hostClasses()',\n },\n providers: [{ provide: ATL_TABLE, useExisting: AtlTable }],\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None\n})\nexport class AtlTable implements AtlTableContext {\n /** Visual style of the table rows. */\n readonly variant = input<'default' | 'striped' | 'bordered'>('default');\n\n /** Row density. */\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n\n /** Whether the header row sticks to the top when the table scrolls. */\n readonly stickyHeader = input(false);\n\n /**\n * Accessible name for the scrollable table region. Surfaces to\n * screen readers as the region's label so keyboard users who\n * scroll the wrapper know what they're scrolling. Defaults to\n * `\"Table\"` if unset.\n */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n /** @internal */\n protected readonly hostClasses = computed(() => {\n const classes = ['atl-table', `variant-${this.variant()}`, `size-${this.size()}`];\n if (this.stickyHeader()) classes.push('is-sticky-header');\n return classes.join(' ');\n });\n}\n\n// ---------------------------------------------------------------------------\n// AtlThead\n// ---------------------------------------------------------------------------\n\n/**\n * Table head section. Contains header rows with `atl-tr` and `atl-th`.\n *\n * Usage:\n * ```html\n * <atl-thead>\n * <atl-tr>\n * <atl-th sortable [sortDirection]=\"sort\" (sort)=\"sort = $event\">Name</atl-th>\n * </atl-tr>\n * </atl-thead>\n * ```\n */\n@Component({\n selector: 'atl-thead',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<thead><ng-content /></thead>`,\n styleUrl: './atl-table.css',\n host: { '[style.display]': '\"contents\"' },\n})\nexport class AtlThead {}\n\n// ---------------------------------------------------------------------------\n// AtlTbody\n// ---------------------------------------------------------------------------\n\n/**\n * Table body section. Shows rows or an empty state.\n *\n * Usage:\n * ```html\n * <atl-tbody [empty]=\"rows.length === 0\" [colSpan]=\"3\">\n * @for (row of rows; track row.id) {\n * <atl-tr><atl-td>{{ row.name }}</atl-td></atl-tr>\n * }\n * <div atlTableEmpty>No results found.</div>\n * </atl-tbody>\n * ```\n */\n@Component({\n selector: 'atl-tbody',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <tbody>\n @if (!empty()) {\n <ng-content />\n } @else {\n <tr>\n <td [attr.colspan]=\"colSpan()\" class=\"atl-tbody-empty-cell\">\n <ng-content select=\"[atlTableEmpty]\" />\n </td>\n </tr>\n }\n </tbody>\n `,\n styleUrl: './atl-table.css',\n host: { '[style.display]': '\"contents\"' },\n})\nexport class AtlTbody {\n /** When true, hides rows and shows the `[atlTableEmpty]` slot content instead. */\n readonly empty = input(false);\n\n /** Number of columns to span in the empty-state row. Should match total column count. */\n readonly colSpan = input(1);\n}\n\n// ---------------------------------------------------------------------------\n// AtlTr\n// ---------------------------------------------------------------------------\n\n/**\n * Table row. Use inside `atl-thead` or `atl-tbody`.\n * Set `selectable` to auto-add a checkbox column for row selection.\n *\n * Usage:\n * ```html\n * <atl-tr selectable [selected]=\"isSelected\" (selectedChange)=\"toggle($event)\">\n * <atl-td>Cell content</atl-td>\n * </atl-tr>\n * ```\n */\n@Component({\n selector: 'atl-tr',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AtlCheckbox],\n template: `\n <tr\n [attr.aria-selected]=\"selectable() ? selected() : null\"\n [class]=\"innerClasses()\"\n >\n @if (selectable()) {\n <td class=\"atl-tr-select-cell\">\n <atl-checkbox [checked]=\"selected()\" (checkedChange)=\"selectedChange.emit($event)\" />\n </td>\n }\n <ng-content />\n </tr>\n `,\n styleUrl: './atl-table.css',\n host: {\n '[class]': 'hostClasses()',\n '[style.display]': '\"contents\"',\n },\n})\nexport class AtlTr {\n /** Whether this row is currently selected. */\n readonly selected = input(false);\n\n /** Whether this row shows a selection checkbox. */\n readonly selectable = input(false);\n\n /** Optional identifier for this row. Useful for tracking selection. */\n readonly rowId = input<string | undefined>(undefined);\n\n /** Emits when the row's checkbox is toggled. */\n readonly selectedChange = output<boolean>();\n\n /** @internal */\n protected readonly hostClasses = computed(() =>\n this.selectable() ? 'is-selectable' : ''\n );\n\n /** @internal — applied to inner <tr> for CSS selection styling */\n protected readonly innerClasses = computed(() =>\n this.selected() ? 'is-selected' : ''\n );\n}\n\n// ---------------------------------------------------------------------------\n// AtlTh\n// ---------------------------------------------------------------------------\n\n/** Sort direction for sortable column headers. */\nexport type AtlSortDirection = 'asc' | 'desc' | null;\n\n/**\n * Table header cell. Set `sortable` to enable sort cycling.\n * The consumer controls `sortDirection` (fully controlled — no internal state).\n *\n * Usage:\n * ```html\n * <atl-th sortable [sortDirection]=\"nameSortDir\" (sort)=\"nameSortDir = $event\">Name</atl-th>\n * ```\n */\n@Component({\n selector: 'atl-th',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <th\n [attr.aria-sort]=\"ariaSort()\"\n [style.width]=\"width() ?? null\"\n [class]=\"cellClasses()\"\n >\n @if (sortable()) {\n <button type=\"button\" class=\"atl-th-sort-btn\" (click)=\"cycleSort()\">\n <ng-content />\n <span class=\"atl-th-sort-icon\" aria-hidden=\"true\">\n <atl-icon name=\"sort-asc\" size=\"sm\" class=\"atl-th-sort-asc-arrow\" />\n <atl-icon name=\"sort-desc\" size=\"sm\" class=\"atl-th-sort-desc-arrow\" />\n </span>\n </button>\n } @else {\n <ng-content />\n }\n </th>\n `,\n styleUrl: './atl-table.css',\n host: { '[style.display]': '\"contents\"' },\n})\nexport class AtlTh {\n /** Whether this column is sortable. Renders a sort button when true. */\n readonly sortable = input(false);\n\n /** Current sort direction. Fully controlled — the consumer owns this state. */\n readonly sortDirection = input<AtlSortDirection>(null);\n\n /** Text alignment of the header cell content. */\n readonly align = input<'start' | 'center' | 'end'>('start');\n\n /** Fixed column width (e.g. `'120px'`, `'10rem'`). */\n readonly width = input<string | undefined>(undefined);\n\n /**\n * Emits when the header is clicked.\n * Cycles: `null` → `'asc'` → `'desc'` → `null`.\n */\n readonly sort = output<AtlSortDirection>();\n\n /** @internal */\n protected readonly ariaSort = computed(() => {\n if (!this.sortable()) return undefined;\n const d = this.sortDirection();\n if (d === 'asc') return 'ascending';\n if (d === 'desc') return 'descending';\n return 'none';\n });\n\n /** @internal */\n protected readonly cellClasses = computed(() => {\n const classes = [`align-${this.align()}`];\n if (this.sortDirection()) classes.push('is-sorted');\n if (this.sortDirection() === 'asc') classes.push('sort-asc');\n if (this.sortDirection() === 'desc') classes.push('sort-desc');\n return classes.join(' ');\n });\n\n /** @internal */\n protected cycleSort(): void {\n const current = this.sortDirection();\n const next: AtlSortDirection =\n current === null ? 'asc' : current === 'asc' ? 'desc' : null;\n this.sort.emit(next);\n }\n}\n\n// ---------------------------------------------------------------------------\n// AtlTd\n// ---------------------------------------------------------------------------\n\n/**\n * Table data cell. Use inside `atl-tr` inside `atl-tbody`.\n *\n * Usage:\n * ```html\n * <atl-td align=\"end\">{{ value }}</atl-td>\n * ```\n */\n@Component({\n selector: 'atl-td',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <td [class]=\"'align-' + align()\">\n <ng-content />\n </td>\n `,\n styleUrl: './atl-table.css',\n host: { '[style.display]': '\"contents\"' },\n})\nexport class AtlTd {\n /** Text alignment of the cell content. */\n readonly align = input<'start' | 'center' | 'end'>('start');\n}\n","import { InjectionToken } from '@angular/core';\nimport type { Signal, WritableSignal } from '@angular/core';\n\nexport interface StepInfo {\n id: string;\n label: string;\n description?: string;\n completed: boolean;\n error: boolean;\n optional: boolean;\n disabled: boolean;\n}\n\nexport interface AtlStepperContext {\n readonly activeStep: WritableSignal<number>;\n readonly steps: Signal<StepInfo[]>;\n readonly linear: Signal<boolean>;\n registerStep(info: StepInfo): void;\n unregisterStep(id: string): void;\n updateStep(id: string, info: Partial<StepInfo>): void;\n goTo(index: number): void;\n next(): void;\n prev(): void;\n}\n\nexport const ATL_STEPPER = new InjectionToken<AtlStepperContext>('ATL_STEPPER');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { ATL_STEPPER, type AtlStepperContext, type StepInfo } from './atl-stepper.token';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * Multi-step wizard container.\n *\n * Usage:\n * ```html\n * <atl-stepper [(activeStep)]=\"step\">\n * <atl-step label=\"Account\">Account form here.</atl-step>\n * <atl-step label=\"Profile\">Profile form here.</atl-step>\n * <atl-step label=\"Review\">Review and submit.</atl-step>\n * </atl-stepper>\n * ```\n */\n@Component({\n selector: 'atl-stepper',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"stepper-header\" role=\"tablist\">\n @for (step of steps(); track step.id; let i = $index; let last = $last) {\n <div\n class=\"step-item\"\n [class.is-active]=\"activeStep() === i\"\n [class.is-completed]=\"step.completed && activeStep() !== i\"\n [class.is-error]=\"step.error\"\n [class.is-disabled]=\"step.disabled\"\n >\n <button\n type=\"button\"\n role=\"tab\"\n class=\"step-circle\"\n [id]=\"'atl-step-' + i\"\n [attr.aria-label]=\"step.label\"\n [attr.aria-selected]=\"activeStep() === i\"\n [attr.aria-controls]=\"'atl-step-panel-' + i\"\n [attr.aria-disabled]=\"step.disabled || null\"\n [attr.tabindex]=\"activeStep() === i ? 0 : -1\"\n [disabled]=\"step.disabled || null\"\n (click)=\"goTo(i)\"\n >\n @if (step.completed && !step.error) {\n <atl-icon name=\"check\" size=\"sm\" />\n } @else if (step.error) {\n <atl-icon name=\"close\" size=\"sm\" />\n } @else {\n {{ i + 1 }}\n }\n </button>\n <div class=\"step-text\">\n <span class=\"step-label\">{{ step.label }}</span>\n @if (step.description) {\n <span class=\"step-description\">{{ step.description }}</span>\n }\n @if (step.optional && !step.completed) {\n <span class=\"step-optional\">Optional</span>\n }\n </div>\n </div>\n @if (!last) {\n <div\n class=\"step-connector\"\n [class.is-active]=\"activeStep() > i || step.completed\"\n ></div>\n }\n }\n </div>\n <div class=\"stepper-content\">\n <ng-content />\n </div>\n `,\n styleUrl: './atl-stepper.css',\n host: {\n '[class]': 'hostClasses()',\n },\n providers: [{ provide: ATL_STEPPER, useExisting: AtlStepper }],\n})\nexport class AtlStepper implements AtlStepperContext {\n /** Index of the currently active step. Supports two-way binding. */\n readonly activeStep = model(0);\n\n /** Layout orientation. */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n /**\n * When true, users can only navigate to completed steps or the next pending step.\n * Use `goTo()` / `next()` in your step content to advance programmatically.\n */\n readonly linear = input(false);\n\n /** @internal */\n readonly steps = signal<StepInfo[]>([]);\n\n /** @internal */\n protected readonly hostClasses = computed(\n () => `orientation-${this.orientation()}`\n );\n\n /** @internal — called by AtlStep on init */\n registerStep(info: StepInfo): void {\n this.steps.update((list) => [...list, info]);\n }\n\n /** @internal — called by AtlStep on destroy */\n unregisterStep(id: string): void {\n this.steps.update((list) => list.filter((s) => s.id !== id));\n }\n\n /** @internal — called by AtlStep effect when inputs change */\n updateStep(id: string, info: Partial<StepInfo>): void {\n this.steps.update((list) =>\n list.map((s) => (s.id === id ? { ...s, ...info } : s))\n );\n }\n\n /** Navigate to a specific step index. Respects linear mode. */\n goTo(index: number): void {\n const steps = this.steps();\n if (index < 0 || index >= steps.length) return;\n if (steps[index].disabled) return;\n if (this.linear()) {\n // In linear mode, only allow going back or to the next uncompleted step\n const canGoForward = steps.slice(0, index).every((s) => s.completed || s.optional);\n if (index > this.activeStep() && !canGoForward) return;\n }\n this.activeStep.set(index);\n }\n\n /** Advance to the next step. */\n next(): void {\n this.goTo(this.activeStep() + 1);\n }\n\n /** Go back to the previous step. */\n prev(): void {\n const prev = this.activeStep() - 1;\n if (prev < 0) return;\n const steps = this.steps();\n if (steps[prev]?.disabled) return;\n this.activeStep.set(prev);\n }\n}\n\n/**\n * Individual step. Place inside `<atl-stepper>`.\n *\n * Usage:\n * ```html\n * <atl-step label=\"Account\">Account form here.</atl-step>\n * ```\n */\n@Component({\n selector: 'atl-step',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (isActive()) {\n <div\n role=\"tabpanel\"\n [id]=\"'atl-step-panel-' + myIndex()\"\n [attr.aria-labelledby]=\"'atl-step-' + myIndex()\"\n tabindex=\"0\"\n >\n <ng-content />\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class AtlStep implements OnInit, OnDestroy {\n /** Text displayed on the step indicator. Required. */\n readonly label = input.required<string>();\n\n /** Optional subtitle shown below the label. */\n readonly description = input<string | undefined>(undefined);\n\n /** Mark this step as completed (shows a checkmark). */\n readonly completed = input(false);\n\n /** Mark this step as having an error (shows an X). */\n readonly error = input(false);\n\n /** Mark this step as optional. */\n readonly optional = input(false);\n\n /** Whether this step is disabled. */\n readonly disabled = input(false);\n\n /** @internal */\n private readonly id = `atl-step-instance-${nextId++}`;\n\n /** @internal */\n private readonly context = inject(ATL_STEPPER);\n\n /** @internal */\n protected readonly myIndex = computed(() =>\n this.context.steps().findIndex((s) => s.id === this.id)\n );\n\n /** @internal */\n protected readonly isActive = computed(\n () => this.context.activeStep() === this.myIndex()\n );\n\n constructor() {\n // Keep step info in sync when inputs change\n effect(() => {\n if (this.myIndex() === -1) return;\n this.context.updateStep(this.id, {\n label: this.label(),\n description: this.description(),\n completed: this.completed(),\n error: this.error(),\n optional: this.optional(),\n disabled: this.disabled(),\n });\n });\n }\n\n ngOnInit(): void {\n this.context.registerStep({\n id: this.id,\n label: this.label(),\n description: this.description(),\n completed: this.completed(),\n error: this.error(),\n optional: this.optional(),\n disabled: this.disabled(),\n });\n }\n\n ngOnDestroy(): void {\n this.context.unregisterStep(this.id);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n signal,\n} from '@angular/core';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/**\n * Displays a block of code with an optional header, language label, and copy button.\n * Designed for rendering LLM-generated code output, inline snippets, and API examples.\n *\n * Usage:\n * ```html\n * <atl-code-block code=\"const x = 1;\" language=\"typescript\" />\n * <atl-code-block [code]=\"generatedCode\" filename=\"app.component.ts\" [showLineNumbers]=\"true\" />\n * ```\n */\n@Component({\n selector: 'atl-code-block',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"code-block-header\">\n <span class=\"code-block-label\">{{ displayLabel() }}</span>\n @if (copyable()) {\n <button\n class=\"code-block-copy\"\n type=\"button\"\n [attr.aria-label]=\"copied() ? 'Copied' : 'Copy code'\"\n (click)=\"copy()\"\n >\n @if (copied()) {\n <atl-icon name=\"check\" size=\"sm\" />\n Copied\n } @else {\n <atl-icon name=\"copy\" size=\"sm\" />\n Copy\n }\n </button>\n }\n </div>\n <div class=\"code-block-body\">\n <pre class=\"code-block-pre\"><code>@if (showLineNumbers()) {\n @for (line of lines(); track $index) {\n <span class=\"code-line\">\n <span class=\"code-line-number\">{{ $index + 1 }}</span>\n <span class=\"code-line-text\">{{ line }}</span>\n </span>\n }\n } @else {\n {{ code() }}\n }</code></pre>\n </div>\n `,\n styleUrl: './atl-code-block.css',\n host: {\n '[class]': '\"atl-code-block\"',\n },\n})\nexport class AtlCodeBlock {\n /** The code string to display. */\n readonly code = input<string>('');\n\n /** Language label shown in the header. Ignored if filename is set. */\n readonly language = input<string>('text');\n\n /** Optional filename shown in the header instead of the language label. */\n readonly filename = input<string>('');\n\n /** Whether to show a copy-to-clipboard button. */\n readonly copyable = input<boolean>(true);\n\n /** Whether to display line numbers alongside the code. */\n readonly showLineNumbers = input<boolean>(false);\n\n protected readonly copied = signal(false);\n\n protected readonly displayLabel = computed(() => this.filename() || this.language());\n\n protected readonly lines = computed(() => this.code().split('\\n'));\n\n protected copy(): void {\n void navigator.clipboard.writeText(this.code()).then(() => {\n this.copied.set(true);\n setTimeout(() => this.copied.set(false), 1800);\n });\n }\n}\n","import { InjectionToken, Signal } from '@angular/core';\nimport type { AtlChatStatus, AtlChatVariant } from '../spec';\n\n/**\n * Context token used by `atl-chat` sub-components (header, input) to\n * read parent state and dispatch close/toggle actions without a direct\n * component reference.\n */\nexport interface AtlChatContext {\n readonly headerId: string;\n readonly variant: Signal<AtlChatVariant>;\n readonly status: Signal<AtlChatStatus>;\n close(): void;\n toggle(): void;\n}\n\nexport const ATL_CHAT = new InjectionToken<AtlChatContext>('ATL_CHAT');\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n afterNextRender,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport type {\n AtlChatMessageRole,\n AtlChatStatus,\n AtlChatVariant,\n} from '../spec';\nimport { ATL_CHAT } from './atl-chat.token';\nimport { AtlIcon } from '../icon/atl-icon';\n\nlet nextId = 0;\n\n/**\n * AI assistant surface. Three layout variants share the same content slots\n * and can be swapped without changing the children.\n *\n * Variants:\n * - `drawer`: Right-anchored slide-in panel, full viewport height.\n * - `popup`: Floating bubble (bottom-right) + compact chat window.\n * - `inline`: Embedded card, sits inline with page content.\n *\n * Compose with `atl-chat-header`, `atl-chat-messages`, `atl-chat-input`.\n *\n * Usage:\n * ```html\n * <atl-chat variant=\"drawer\" [(open)]=\"isOpen\" status=\"idle\">\n * <atl-chat-header>AI Assistant</atl-chat-header>\n * <atl-chat-messages>\n * <atl-chat-message role=\"assistant\">Hi! How can I help?</atl-chat-message>\n * <atl-chat-message role=\"user\">Show me a sorting function.</atl-chat-message>\n * </atl-chat-messages>\n * <atl-chat-input placeholder=\"Ask anything…\" (send)=\"onSend($event)\" />\n * </atl-chat>\n * ```\n */\n@Component({\n selector: 'atl-chat',\n standalone: true,\n imports: [A11yModule, NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ATL_CHAT,\n useFactory: (chat: AtlChat) => ({\n headerId: chat.headerId,\n variant: chat.variant,\n status: chat.status,\n close: () => chat.open.set(false),\n toggle: () => chat.open.set(!chat.open()),\n }),\n deps: [AtlChat],\n },\n ],\n template: `\n <ng-template #content><ng-content /></ng-template>\n @switch (variant()) {\n @case ('drawer') {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <dialog\n #dialogEl\n [attr.aria-labelledby]=\"headerId\"\n aria-modal=\"true\"\n [cdkTrapFocus]=\"open()\"\n (cancel)=\"onCancel($event)\"\n (close)=\"open.set(false)\"\n (click)=\"onBackdropClick($event)\"\n >\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div class=\"surface drawer-surface\" (click)=\"$event.stopPropagation()\">\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n </dialog>\n }\n @case ('popup') {\n @if (open()) {\n <div class=\"surface popup-surface\" [attr.aria-labelledby]=\"headerId\" role=\"dialog\">\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n }\n <button\n type=\"button\"\n class=\"fab-bubble\"\n [attr.aria-label]=\"open() ? 'Close AI assistant' : 'Open AI assistant'\"\n [attr.aria-expanded]=\"open()\"\n (click)=\"open.set(!open())\"\n >\n <span aria-hidden=\"true\">AI</span>\n </button>\n }\n @default {\n <section class=\"surface inline-surface\" [attr.aria-labelledby]=\"headerId\">\n <ng-container [ngTemplateOutlet]=\"content\" />\n </section>\n }\n }\n `,\n styleUrl: './atl-chat.css',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class AtlChat {\n /** Layout variant. */\n readonly variant = input<AtlChatVariant>('drawer');\n\n /** Whether the chat is open. Used by drawer/popup; ignored by inline. Two-way bindable via [(open)]. */\n readonly open = model(false);\n\n /** Connection / response status. Drives badge color in header and disables input while streaming. */\n readonly status = input<AtlChatStatus>('idle');\n\n /** @internal — referenced by AtlChatHeader via ATL_CHAT token for aria-labelledby. */\n readonly headerId = `atl-chat-header-${nextId++}`;\n\n protected readonly dialogRef = viewChild<ElementRef<HTMLDialogElement>>('dialogEl');\n private readonly host: ElementRef<HTMLElement> = inject(ElementRef);\n private readonly triggerEl = signal<HTMLElement | null>(null);\n\n protected readonly hostClasses = computed(\n () =>\n `variant-${this.variant()} status-${this.status()}${this.open() ? ' is-open' : ''}`\n );\n\n constructor() {\n // Drawer variant uses native <dialog> open/close lifecycle.\n effect(() => {\n if (this.variant() !== 'drawer') return;\n const dialog = this.dialogRef()?.nativeElement;\n if (!dialog) return;\n if (this.open()) {\n this.triggerEl.set(document.activeElement as HTMLElement);\n dialog.showModal();\n } else {\n if (dialog.open) dialog.close();\n this.triggerEl()?.focus();\n this.triggerEl.set(null);\n }\n });\n\n // Auto-focus the input on open for drawer / popup. Inline variant keeps\n // user focus where it was.\n effect(() => {\n if (!this.open()) return;\n if (this.variant() === 'inline') return;\n // Wait for the surface to be in the DOM (showModal / @if (open) render).\n requestAnimationFrame(() => {\n this.host.nativeElement.querySelector<HTMLTextAreaElement>('textarea')?.focus();\n });\n });\n }\n\n protected onCancel(event: Event): void {\n event.preventDefault();\n this.open.set(false);\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (event.target === this.dialogRef()?.nativeElement) {\n this.open.set(false);\n }\n }\n}\n\n/**\n * Header slot for `atl-chat`. Holds the title, status indicator, and close button.\n * Children are projected into the title area; the close button is rendered automatically.\n */\n@Component({\n selector: 'atl-chat-header',\n standalone: true,\n imports: [AtlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"title-block\">\n <ng-content />\n </div>\n @if (context.variant() !== 'inline') {\n <button\n type=\"button\"\n class=\"close-btn\"\n aria-label=\"Close chat\"\n (click)=\"context.close()\"\n >\n <atl-icon name=\"close\" size=\"sm\" />\n </button>\n }\n `,\n styleUrl: './atl-chat.css',\n host: {\n '[attr.id]': 'context.headerId',\n },\n})\nexport class AtlChatHeader {\n protected readonly context = inject(ATL_CHAT);\n}\n\n/**\n * Scrollable message list for `atl-chat`. Project `atl-chat-message`,\n * `atl-chat-typing`, or `atl-chat-suggestion` children inside. Auto-scrolls\n * to the bottom whenever children are added or content changes — important\n * for streaming responses where new tokens are appended live.\n */\n@Component({\n selector: 'atl-chat-messages',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-chat.css',\n})\nexport class AtlChatMessages {\n private readonly host: ElementRef<HTMLElement> = inject(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n afterNextRender(() => {\n const el = this.host.nativeElement;\n const stickToBottom = (): void => { el.scrollTop = el.scrollHeight; };\n stickToBottom();\n const observer = new MutationObserver(stickToBottom);\n observer.observe(el, { childList: true, subtree: true, characterData: true });\n this.destroyRef.onDestroy(() => observer.disconnect());\n });\n }\n}\n\n/**\n * A single chat message. Role drives bubble alignment and color.\n *\n * Usage:\n * ```html\n * <atl-chat-message role=\"assistant\">Sure, here you go.</atl-chat-message>\n * <atl-chat-message role=\"user\">Thanks!</atl-chat-message>\n * <atl-chat-message role=\"assistant\" [failed]=\"true\">Couldn't reach the assistant.</atl-chat-message>\n * ```\n */\n@Component({\n selector: 'atl-chat-message',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content />`,\n styleUrl: './atl-chat.css',\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"listitem\"',\n },\n})\nexport class AtlChatMessage {\n /** Sender of the message. Drives bubble alignment and color. */\n readonly role = input<AtlChatMessageRole>('assistant');\n\n /** Marks the message as failed (red dashed border, used in error state). */\n readonly failed = input(false);\n\n protected readonly hostClasses = computed(\n () => `role-${this.role()}${this.failed() ? ' is-failed' : ''}`\n );\n}\n\n/**\n * Typing indicator (three animated dots).\n *\n * Two display modes:\n * - **Standalone bubble** (default) — render as the last child of\n * `AtlChatMessages` to show \"the assistant is starting to respond\"\n * before any tokens arrive.\n * - **Inline cursor** (`inline`) — render as the LAST child INSIDE\n * `AtlChatMessage role=\"assistant\"` to show the dots after the\n * currently-streaming text. The bubble background is dropped so the\n * dots read as a typing caret at the end of the partial response.\n */\n@Component({\n selector: 'atl-chat-typing',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span class=\"dot\"></span>\n <span class=\"dot\"></span>\n <span class=\"dot\"></span>\n <span class=\"sr-only\">Assistant is typing</span>\n `,\n styleUrl: './atl-chat.css',\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"status\"',\n '[attr.aria-live]': '\"polite\"',\n },\n})\nexport class AtlChatTyping {\n /** When true, renders as an inline cursor without bubble chrome. */\n readonly inline = input(false);\n\n protected readonly hostClasses = computed(() =>\n this.inline() ? 'is-inline' : ''\n );\n}\n\n/**\n * Tappable suggestion chip used in the empty state to seed a conversation.\n *\n * Usage:\n * ```html\n * <atl-chat-suggestion label=\"Explain a code snippet\" hint=\"Tap to start →\" (selected)=\"prompt.set($event)\" />\n * ```\n */\n@Component({\n selector: 'atl-chat-suggestion',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button type=\"button\" class=\"chip\" (click)=\"selected.emit(label())\">\n <span class=\"chip-label\">{{ label() }}</span>\n @if (hint()) {\n <span class=\"chip-hint\">{{ hint() }}</span>\n }\n </button>\n `,\n styleUrl: './atl-chat.css',\n})\nexport class AtlChatSuggestion {\n /** Primary label of the suggestion. */\n readonly label = input.required<string>();\n\n /** Optional secondary hint text shown below the label. */\n readonly hint = input<string>('');\n\n /** Fires the label string when the chip is activated. */\n readonly selected = output<string>();\n}\n\n/**\n * Composable input footer for `atl-chat`. Wraps a text field and emits\n * `send` (or `stop` while the assistant is streaming).\n *\n * The button automatically switches to a `danger` \"Stop\" button when the\n * parent chat's `status` is `'streaming'`.\n *\n * Usage:\n * ```html\n * <atl-chat-input placeholder=\"Ask anything…\" (send)=\"onSend($event)\" (stop)=\"onStop()\" />\n * ```\n */\n@Component({\n selector: 'atl-chat-input',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <textarea\n class=\"field\"\n [value]=\"value()\"\n [placeholder]=\"effectivePlaceholder()\"\n [disabled]=\"isStreaming()\"\n [attr.aria-label]=\"ariaLabel()\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter($event)\"\n rows=\"1\"\n ></textarea>\n @if (isStreaming()) {\n <button\n type=\"button\"\n class=\"action-btn variant-danger size-md\"\n (click)=\"stop.emit()\"\n >\n Stop\n </button>\n } @else {\n <button\n type=\"button\"\n class=\"action-btn variant-primary size-md\"\n [disabled]=\"!value().trim()\"\n (click)=\"emitSend()\"\n >\n Send\n </button>\n }\n `,\n styleUrl: './atl-chat.css',\n})\nexport class AtlChatInput {\n /** Placeholder shown in the empty input. Defaults change per parent status. */\n readonly placeholder = input<string>('');\n\n /** Accessible label for the input field. */\n readonly ariaLabel = input<string>('Message your AI assistant');\n\n /** Two-way bindable text content. */\n readonly value = model<string>('');\n\n /** Fires when Enter is pressed (without Shift) or the Send button is clicked. */\n readonly send = output<string>();\n\n /** Fires when the Stop button is clicked while the parent chat is streaming. */\n readonly stop = output<void>();\n\n protected readonly context = inject(ATL_CHAT);\n\n protected readonly isStreaming = computed(() => this.context.status() === 'streaming');\n\n protected readonly effectivePlaceholder = computed(() => {\n const explicit = this.placeholder();\n if (explicit) return explicit;\n switch (this.context.status()) {\n case 'streaming':\n return 'Waiting for response…';\n case 'error':\n return 'Try again…';\n default:\n return 'Message your AI assistant…';\n }\n });\n\n protected onInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this.value.set(target.value);\n }\n\n protected onEnter(event: Event): void {\n const ke = event as KeyboardEvent;\n if (ke.shiftKey) return;\n ke.preventDefault();\n this.emitSend();\n }\n\n protected emitSend(): void {\n const text = this.value().trim();\n if (!text || this.isStreaming()) return;\n this.send.emit(text);\n this.value.set('');\n }\n}\n","// Design tokens stylesheet — consumers should import:\n// @import '@atelier-ui/angular/styles/tokens.css';\n\nexport { AtlButton } from './lib/button/atl-button';\nexport {\n AtlCard,\n AtlCardHeader,\n AtlCardContent,\n AtlCardFooter,\n} from './lib/card/atl-card';\nexport { AtlBadge } from './lib/badge/atl-badge';\nexport { AtlIcon } from './lib/icon/atl-icon';\nexport { AtlInput } from './lib/input/atl-input';\nexport { AtlTextarea } from './lib/textarea/atl-textarea';\nexport { AtlCheckbox } from './lib/checkbox/atl-checkbox';\nexport { AtlRadio } from './lib/radio/atl-radio';\nexport { AtlRadioGroup } from './lib/radio-group/atl-radio-group';\nexport { ATL_RADIO_GROUP } from './lib/radio-group/atl-radio-group.token';\nexport type { AtlRadioGroupContext } from './lib/radio-group/atl-radio-group.token';\nexport { AtlToggle } from './lib/toggle/atl-toggle';\nexport { AtlAlert } from './lib/alert/atl-alert';\nexport { AtlSelect } from './lib/select/atl-select';\nexport { AtlOption } from './lib/select/atl-option';\nexport { AtlCombobox } from './lib/combobox/atl-combobox';\nexport { ATL_SELECT } from './lib/select/atl-select.token';\nexport type { AtlSelectContext } from './lib/select/atl-select.token';\nexport {\n AtlDialog,\n AtlDialogHeader,\n AtlDialogContent,\n AtlDialogFooter,\n} from './lib/dialog/atl-dialog';\nexport { ATL_DIALOG } from './lib/dialog/atl-dialog.token';\nexport type { AtlDialogContext } from './lib/dialog/atl-dialog.token';\nexport { AtlTabGroup, AtlTab } from './lib/tabs/atl-tabs';\nexport { ATL_TAB_GROUP } from './lib/tabs/atl-tabs.token';\nexport type { AtlTabGroupContext, TabInfo } from './lib/tabs/atl-tabs.token';\nexport {\n AtlAccordionGroup,\n AtlAccordionItem,\n AtlAccordionHeader,\n} from './lib/accordion/atl-accordion';\nexport { ATL_ACCORDION_GROUP } from './lib/accordion/atl-accordion.token';\nexport type { AtlAccordionGroupContext } from './lib/accordion/atl-accordion.token';\nexport {\n AtlMenu,\n AtlMenuItem,\n AtlMenuSeparator,\n AtlMenuTrigger,\n} from './lib/menu/atl-menu';\nexport { AtlTooltip } from './lib/tooltip/atl-tooltip';\nexport { AtlSkeleton } from './lib/skeleton/atl-skeleton';\nexport {\n AtlToast,\n AtlToastContainer,\n AtlToastService,\n} from './lib/toast/atl-toast';\nexport type { ToastOptions, ToastData } from './lib/toast/atl-toast';\nexport { AtlAvatar, AtlAvatarGroup } from './lib/avatar/atl-avatar';\nexport { AtlProgress } from './lib/progress/atl-progress';\nexport {\n AtlBreadcrumbs,\n AtlBreadcrumbItem,\n} from './lib/breadcrumbs/atl-breadcrumbs';\nexport { ATL_BREADCRUMBS } from './lib/breadcrumbs/atl-breadcrumbs.token';\nexport type { AtlBreadcrumbsContext } from './lib/breadcrumbs/atl-breadcrumbs.token';\nexport { AtlPagination } from './lib/pagination/atl-pagination';\nexport type { PageItem } from './lib/pagination/atl-pagination';\nexport {\n AtlDrawer,\n AtlDrawerHeader,\n AtlDrawerContent,\n AtlDrawerFooter,\n} from './lib/drawer/atl-drawer';\nexport { ATL_DRAWER } from './lib/drawer/atl-drawer.token';\nexport type { AtlDrawerContext } from './lib/drawer/atl-drawer.token';\nexport {\n AtlTable,\n AtlThead,\n AtlTbody,\n AtlTr,\n AtlTh,\n AtlTd,\n ATL_TABLE,\n} from './lib/table/atl-table';\nexport type { AtlTableContext, AtlSortDirection } from './lib/table/atl-table';\nexport { AtlStepper, AtlStep } from './lib/stepper/atl-stepper';\nexport { ATL_STEPPER } from './lib/stepper/atl-stepper.token';\nexport type {\n AtlStepperContext,\n StepInfo,\n} from './lib/stepper/atl-stepper.token';\nexport { AtlCodeBlock } from './lib/code-block/atl-code-block';\nexport {\n AtlChat,\n AtlChatHeader,\n AtlChatMessages,\n AtlChatMessage,\n AtlChatTyping,\n AtlChatSuggestion,\n AtlChatInput,\n} from './lib/chat/atl-chat';\nexport { ATL_CHAT } from './lib/chat/atl-chat.token';\nexport type { AtlChatContext } from './lib/chat/atl-chat.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["VARIANT_ICON_NAMES","nextId","i1"],"mappings":";;;;;;;;;;;;;;AAYA;;;;;;;;;AASG;MAmBU,SAAS,CAAA;;IAEX,OAAO,GAAG,KAAK,CAAmB,SAAS;gFAAC;;IAG5C,IAAI,GAAG,KAAK,CAAgB,IAAI;6EAAC;;IAGjC,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;AAEZ,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;mFAAC;AAE9D,IAAA,WAAW,GAAG,QAAQ,CACvC,MACE,WAAW,IAAI,CAAC,OAAO,EAAE,CAAA,MAAA,EAAS,IAAI,CAAC,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,GAAG,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE,CAAA,CAAE;oFAClI;;AAGgB,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAEhD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD,IAAA,WAAA,GAAA;;;;;;;;;AASE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AAClC,QAAA,MAAM,KAAK,GAAG,CAAC,KAAY,KAAU;AACnC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,KAAK,CAAC,wBAAwB,EAAE;gBAChC,KAAK,CAAC,cAAc,EAAE;YACxB;AACF,QAAA,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;;;;AAK/E,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;YACjD,eAAe,CAAC,MAAK;AACnB,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AAClC,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;AAClD,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY;AAC9C,uBAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC;AACzC,gBAAA,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE;oBAC7B,OAAO,CAAC,IAAI,CACV;0BACI,qEAAqE,EACzE,IAAI,CACL;gBACH;AACF,YAAA,CAAC,CAAC;QACJ;IACF;uGA9DW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdV;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,27GAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FASU,SAAS,EAAA,UAAA,EAAA,CAAA;kBAlBrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cACV,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;GAKT,EAAA,IAAA,EAEK;AACJ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,sBAAsB,EAAE,cAAc;AACtC,wBAAA,iBAAiB,EAAE,4BAA4B;AAChD,qBAAA,EAAA,MAAA,EAAA,CAAA,27GAAA,CAAA,EAAA;;;AC/BH;;;;;;;;;;;;;;AAcG;MAYU,OAAO,CAAA;;IAET,OAAO,GAAG,KAAK,CAAmC,UAAU;gFAAC;;IAG7D,OAAO,GAAG,KAAK,CAA8B,IAAI;gFAAC;AAE3D;;;;;;;;;;AAUG;IACM,IAAI,GAAG,KAAK,CAA+C,SAAS;6EAAC;AAE3D,IAAA,WAAW,GAAG,QAAQ,CACvC,MAAM,CAAA,iBAAA,EAAoB,IAAI,CAAC,OAAO,EAAE,CAAA,SAAA,EAAY,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE;oFACrE;uGAtBU,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,ohBAPR,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wwDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOf,OAAO,EAAA,UAAA,EAAA,CAAA;kBAXnB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,gBAAgB,EAAA,IAAA,EAEpB;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE,gBAAgB;AAChC,qBAAA,EAAA,MAAA,EAAA,CAAA,wwDAAA,CAAA,EAAA;;AA2BH;;;;;;;AAOG;MASU,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,wHAJd,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wwDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIf,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA,cAAA,CAAgB,EAAA,IAAA,EAEpB,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAA,MAAA,EAAA,CAAA,wwDAAA,CAAA,EAAA;;AAIpC;;;;;;;AAOG;MASU,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,0HAJf,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wwDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIf,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA,cAAA,CAAgB,EAAA,IAAA,EAEpB,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAA,MAAA,EAAA,CAAA,wwDAAA,CAAA,EAAA;;AAIrC;;;;;;;;;AASG;MASU,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,wHAJd,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wwDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIf,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA,cAAA,CAAgB,EAAA,IAAA,EAEpB,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAA,MAAA,EAAA,CAAA,wwDAAA,CAAA,EAAA;;;AC9GpC;AACA;AACA;AAqCA;AACO,MAAM,gBAAgB,GAAG,WAAW;AAE3C;AACO,MAAM,qBAAqB,GAAG,CAAC;AAE/B,MAAM,iBAAiB,GAAoC;;;;;AAKhE,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,sCAAsC,EAAE,kBAAkB,CAAC,EAAE;IAChG,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAAE;AACrD,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,qBAAqB,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE;AACxF,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,sCAAsC,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE;AACvG,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,sCAAsC,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE;AACvG,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,sCAAsC,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE;;IAGrG,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE;IAC7D,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAAE;IAC9D,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE;IAC/D,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAAE;;;;AAI/D,IAAA,qBAAqB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,EAAE;AAC3F,IAAA,sBAAsB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,EAAE;AAC3F,IAAA,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE;AACzE,IAAA,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE;;IAG3E,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,qBAAqB,CAAC,EAAE;IAC5D,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,uBAAuB,CAAC,EAAE;;AAG/D,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;AAC9D,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;AACxD,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,qCAAqC,EAAE,wCAAwC,EAAE,wCAAwC,CAAC,EAAE;AAC1J,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAAE;AACpE,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,EAAE;AACzE,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,4BAA4B,EAAE,aAAa,CAAC,EAAE;AAC9E,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE;;AAGpG,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE;YACL,2HAA2H;AAC5H,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,CAAC,4BAA4B,CAAC;AACtC,KAAA;CACF;;ACpFD;;;;;;;;;;;AAWG;MA6BU,OAAO,CAAA;IACT,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAe;IACpC,IAAI,GAAG,KAAK,CAAc,IAAI;6EAAC;AAC/B,IAAA,KAAK,GAAG,KAAK;yFAAsB;IAEzB,OAAO,GAAG,gBAAgB;IAC1B,WAAW,GAAG,qBAAqB;AACnC,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iFAAC;AACzD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAK,QAAQ;iFAAC;IAC5D,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAA,KAAA,EAAQ,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE;oFAAC;uGAT3D,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBR;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iiBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FASU,OAAO,EAAA,UAAA,EAAA,CAAA;kBA5BnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;GAeT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE,wBAAwB;AACvC,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC,wBAAA,oBAAoB,EAAE,yBAAyB;AAChD,qBAAA,EAAA,MAAA,EAAA,CAAA,iiBAAA,CAAA,EAAA;;;ACvCH;;;;;;;;;AASG;AACH;AACA;AACA;AACA,MAAMA,oBAAkB,GAAkD;AACxE,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,QAAQ;CACjB;MAmBY,QAAQ,CAAA;;IAEV,OAAO,GAAG,KAAK,CAAwD,SAAS;gFAAC;;IAGjF,IAAI,GAAG,KAAK,CAAc,IAAI;6EAAC;AAErB,IAAA,WAAW,GAAG,QAAQ,CACvC,MAAM,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,MAAA,EAAS,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE;oFACtD;AAEkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAMA,oBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oFAAC;uGAXxE,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZT;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,++CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAPS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAcN,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAjBpB,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;GAKT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,IAAI,EAAE,QAAQ;AACf,qBAAA,EAAA,MAAA,EAAA,CAAA,++CAAA,CAAA,EAAA;;;ACjCH,IAAIC,QAAM,GAAG,CAAC;AAEd;;;;;;;;AAQG;MAsCU,QAAQ,CAAA;;IAEV,KAAK,GAAG,KAAK,CAAC,EAAE;8EAAC;;IAGjB,IAAI,GAAG,KAAK,CAA2D,MAAM;6EAAC;;IAG9E,WAAW,GAAG,KAAK,CAAC,EAAE;oFAAC;;IAGvB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,MAAM,GAAG,KAAK,CAAoD,EAAE;+EAAC;;IAGrE,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,IAAI,GAAG,KAAK,CAAC,EAAE;6EAAC;;AAGN,IAAA,OAAO,GAAG,CAAA,iBAAA,EAAoBA,QAAM,EAAE,EAAE;;AAG3D;;;;;;AAMG;AACgB,IAAA,UAAU,GAAG,QAAQ,CACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC;mFAC/B;;AAGkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,OAAO,GAAa,EAAE;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC9C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B,CAAC;oFAAC;;AAGQ,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;QAC/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9B;uGA5DW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhCT;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,q2DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA5BS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAkCN,QAAQ,EAAA,UAAA,EAAA,CAAA;kBArCpB,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,q2DAAA,CAAA,EAAA;;;AC7CH,IAAIA,QAAM,GAAG,CAAC;AAEd;;;;;;;;AAQG;MAwCU,WAAW,CAAA;;IAEb,KAAK,GAAG,KAAK,CAAC,EAAE;8EAAC;;IAGjB,IAAI,GAAG,KAAK,CAAC,CAAC;6EAAC;;IAGf,WAAW,GAAG,KAAK,CAAC,EAAE;oFAAC;;IAGvB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,MAAM,GAAG,KAAK,CAAoD,EAAE;+EAAC;;IAGrE,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,IAAI,GAAG,KAAK,CAAC,EAAE;6EAAC;;IAGhB,UAAU,GAAG,KAAK,CAAC,KAAK;mFAAC;;AAGf,IAAA,OAAO,GAAG,CAAA,oBAAA,EAAuBA,QAAM,EAAE,EAAE;;AAG9D;;;;;;AAMG;AACgB,IAAA,UAAU,GAAG,QAAQ,CACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC;mFAC/B;;AAGkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,OAAO,GAAa,EAAE;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACrD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B,CAAC;oFAAC;;AAGQ,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA6B;QAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9B;uGAhEW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlCZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,00DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA9BS,eAAe,8PAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAoCvB,WAAW,EAAA,UAAA,EAAA,CAAA;kBAvCvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,eAAe,EAAE,OAAO,CAAC,EAAA,eAAA,EAClB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,00DAAA,CAAA,EAAA;;;AC/CH,IAAIA,QAAM,GAAG,CAAC;AAEd;;;;;;;;AAQG;MAmCU,WAAW,CAAA;;IAEb,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,aAAa,GAAG,KAAK,CAAC,KAAK;sFAAC;;IAG5B,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,IAAI,GAAG,KAAK,CAAC,EAAE;6EAAC;;IAGhB,MAAM,GAAG,KAAK,CAAoD,EAAE;+EAAC;;AAG3D,IAAA,OAAO,GAAG,CAAA,aAAA,EAAgBA,QAAM,EAAE,EAAE;;AAGpC,IAAA,OAAO,GAAG,CAAA,oBAAA,EAAuBA,QAAM,EAAE,EAAE;;IAG7C,WAAW,GAAG,SAAS,CAA+B,aAAa;oFAAC;;AAGrF;;;;;;AAMG;AACgB,IAAA,UAAU,GAAG,QAAQ,CACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC;mFAC/B;;AAGkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,OAAO,GAAa,EAAE;QAC5B,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC9C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B,CAAC;oFAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa;YAC5C,IAAI,EAAE,EAAE;AACN,gBAAA,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;YACzC;AACF,QAAA,CAAC,CAAC;IACJ;;AAGU,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;QAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IAClC;uGArEW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9BZ;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6lFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAlCvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;GAwBT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,6lFAAA,CAAA,EAAA;u7BAkCsE,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCpEzE,eAAe,GAAG,IAAI,cAAc,CAAuB,iBAAiB;;ACVzF,IAAIA,QAAM,GAAG,CAAC;AAEd;;;;;;;;;;AAUG;MA0BU,QAAQ,CAAA;;IAEV,UAAU,GAAG,KAAK,CAAC,QAAQ;mFAAU;;;IAIrC,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,KAAK,EAAE,UAAU,EAAA,CAAG;;IAG3C,KAAK,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGnD,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;;AAG9C,IAAA,OAAO,GAAG,CAAA,UAAA,EAAaA,QAAM,EAAE,EAAE;;AAGjC,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE;kFAAC;;IAG/E,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC;mFAAC;;AAG5E,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;sFAAC;;AAGxD,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,OAAO,GAAa,EAAE;QAC5B,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAChD,IAAI,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AAClD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B,CAAC;oFAAC;;AAGF,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE;IAC1B;;IAGA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAmB,OAAO,CAAC,EAAE,KAAK,EAAE;IACzE;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;IAChC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC;IAClC;;AAGA;;;;;AAKG;AACO,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;YAAE,KAAK,CAAC,cAAc,EAAE;IACpD;IAEU,QAAQ,GAAA;QAChB,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACvC;;IAGU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE;IAC3B;uGAtEW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBT;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6qDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMU,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAzBpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;GAeT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,6qDAAA,CAAA,EAAA;;;ACnCH,IAAIA,QAAM,GAAG,CAAC;AAEd;;;;;;;;;;;;;;;;;AAiBG;MA0BU,aAAa,CAAA;;IAEf,KAAK,GAAG,KAAK,CAAC,EAAE;8EAAC;;IAGjB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;AAEhC;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,IAAI,GAAG,KAAK,CAAC,EAAE;6EAAC;;IAGhB,MAAM,GAAG,KAAK,CAAoD,EAAE;+EAAC;;AAG3D,IAAA,OAAO,GAAG,CAAA,uBAAA,EAA0BA,QAAM,EAAE,EAAE;;IAGhD,KAAK,GAAG,MAAM,CAAc,EAAE;8EAAC;;IAGxC,UAAU,GAAsC,IAAI;;AAG5D;;;;;;AAMG;AACgB,IAAA,UAAU,GAAG,QAAQ,CACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC;mFAC/B;;AAGkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,OAAO,GAAa,EAAE;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC9C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B,CAAC;oFAAC;;AAGF,IAAA,MAAM,CAAC,CAAS,EAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACnB;IACF;;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;;AAGA,IAAA,YAAY,CAAC,IAAe,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C;;AAGA,IAAA,cAAc,CAAC,IAAe,EAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAC7D;;AAGU,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAExC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE;iBAC/C,yBAAyB,CAAC,KAAK;AAC/B,iBAAA,uBAAuB;AACvB,iBAAA,QAAQ,EAAE;QACf;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;AACjF,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC;AACzC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAEhC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe;AACjD,QAAA,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,UAAU,EAAE;YACtE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB;IACF;uGAvGW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,SAAA,EAFb,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnB3D;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qgBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAYU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAzBzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;GAST,EAAA,IAAA,EAEK;AACJ,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,yBAAyB,EAAE,+BAA+B;AAC1D,wBAAA,WAAW,EAAE,mBAAmB;qBACjC,EAAA,SAAA,EACU,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAA,aAAe,EAAE,CAAC,EAAA,MAAA,EAAA,CAAA,qgBAAA,CAAA,EAAA;;;AC9CvE,IAAIA,QAAM,GAAG,CAAC;AAEd;;;;;;;;;;AAUG;MAuCU,SAAS,CAAA;;IAEX,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,IAAI,GAAG,KAAK,CAAC,EAAE;6EAAC;;IAGhB,MAAM,GAAG,KAAK,CAAoD,EAAE;+EAAC;;AAG3D,IAAA,OAAO,GAAG,CAAA,WAAA,EAAcA,QAAM,EAAE,EAAE;;AAGlC,IAAA,OAAO,GAAG,CAAA,kBAAA,EAAqBA,QAAM,EAAE,EAAE;;AAG5D;;;;;;AAMG;AACgB,IAAA,UAAU,GAAG,QAAQ,CACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC;mFAC/B;;AAGkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,OAAO,GAAa,EAAE;QAC5B,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC9C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B,CAAC;oFAAC;;AAGQ,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;QAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IAClC;uGAtDW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlCV;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+pEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMU,SAAS,EAAA,UAAA,EAAA,CAAA;kBAtCrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cACV,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,+pEAAA,CAAA,EAAA;;;ACjDH;;;;;;;;;;AAUG;AACH;AACA;AACA;AACA,MAAM,kBAAkB,GAAkD;AACxE,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,QAAQ;CACjB;MA2BY,QAAQ,CAAA;;IAEV,OAAO,GAAG,KAAK,CAA4C,MAAM;gFAAC;;IAGlE,WAAW,GAAG,KAAK,CAAC,KAAK;oFAAC;;IAG1B,SAAS,GAAG,MAAM,EAAQ;IAEhB,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE;oFAAC;AAEzD,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oFAAC;;AAGnF,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;IAC3B;;AAGA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;IAC3B;;AAGA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ,GAAG,WAAW,GAAG,QAAQ;IAC7D;IAEU,OAAO,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACvB;uGA/BW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBT;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4pDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAdS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAsBN,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAzBpB,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;GAYT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,kBAAkB,EAAE,UAAU;AAC/B,qBAAA,EAAA,MAAA,EAAA,CAAA,4pDAAA,CAAA,EAAA;;;MCzCU,UAAU,GAAG,IAAI,cAAc,CAAmB,YAAY;;ACa3E;AACA,MAAM,gBAAgB,CAAA;AAIT,IAAA,EAAA;AACA,IAAA,KAAA;AACA,IAAA,SAAA;AAEQ,IAAA,cAAA;AAPnB,IAAA,QAAQ;IAER,WAAA,CACW,EAAU,EACV,KAAa,EACb,SAAiB,EAC1B,QAAiB,EACA,cAAqE,EAAA;QAJ7E,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,SAAS,GAAT,SAAS;QAED,IAAA,CAAA,cAAc,GAAd,cAAc;AAE/B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC1B;IAEA,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC;IAEA,iBAAiB,GAAA;;IAEjB;AACD;AAED,IAAIA,QAAM,GAAG,CAAC;AAEd;;;;;;;;;;;;;;;;AAgBG;MA0DU,SAAS,CAAA;;IAEX,KAAK,GAAG,KAAK,CAAC,EAAE;8EAAC;;IAGjB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,WAAW,GAAG,KAAK,CAAC,EAAE;oFAAC;;IAGvB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,IAAI,GAAG,KAAK,CAAC,EAAE;6EAAC;;IAGhB,MAAM,GAAG,KAAK,CAAoD,EAAE;+EAAC;;IAGrE,cAAc,GAAG,MAAM,CAAgB,IAAI;uFAAC;;IAGlC,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;;IAGtB,WAAW,GAAG,MAAM,CAErC,EAAE;oFAAC;;IAGc,QAAQ,GAAG,SAAS,CAA0B,OAAO;iFAAC;;AAGtD,IAAA,SAAS,GAAG,CAAA,mBAAA,EAAsBA,QAAM,CAAA,CAAE;;AAG1C,IAAA,OAAO,GAAG,CAAA,iBAAA,EAAoBA,QAAM,CAAA,CAAE;;AAGtC,IAAA,OAAO,GAAG,CAAA,kBAAA,EAAqBA,QAAM,EAAE,EAAE;;AAGzC,IAAA,aAAa,GAAG,QAAQ,CACzC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,IAAI,EAAE;sFAChF;;AAGD;;;;;;AAMG;AACgB,IAAA,UAAU,GAAG,QAAQ,CACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC;mFAC/B;;AAGkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,OAAO,GAAa,EAAE;QAC5B,IAAI,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC9C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B,CAAC;oFAAC;;IAGM,UAAU,GAAwD,IAAI;IAEtE,UAAU,GAAsB,IAAI;IACpC,mBAAmB,GAAqC,IAAI;AACnD,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAG5C,IAAA,cAAc,CAAC,EAAU,EAAE,KAAa,EAAE,SAAiB,EAAE,QAAiB,EAAA;QAC5E,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClF;;AAGA,IAAA,gBAAgB,CAAC,EAAU,EAAA;QACzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE;;AAGA,IAAA,MAAM,CAAC,CAAS,EAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;;IAGU,cAAc,GAAA;QACtB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE;QAAE;aAAO;YAAE,IAAI,CAAC,IAAI,EAAE;QAAE;IAC3D;;IAGU,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB;IACF;;AAGU,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;YACZ,KAAK,GAAG,EAAE;gBACR,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,IAAI,EAAE;gBACb;qBAAO;AACL,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU;oBAC9C,IAAI,UAAU,EAAE;AACd,wBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;oBAC/B;gBACF;gBACA;YACF;YACA,KAAK,QAAQ,EAAE;gBACb,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,KAAK,EAAE;gBACZ;YACF;YACA,SAAS;gBACP,MAAM,KAAK,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;gBACpG,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM;AAC/F,gBAAA,IAAI,CAAC,KAAK,IAAI,WAAW,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAC5C,IAAI,CAAC,IAAI,EAAE;AACX,oBAAA,IAAI,KAAK;AAAE,wBAAA,OAAO;gBACpB;AACA,gBAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC;YACnC;;IAEJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;AAC/D,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QACjC;IACF;IAEQ,IAAI,GAAA;AACV,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QACxC;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC1D,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC5C,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAClC,CAAC,CAAC,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CACzF;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,0BAA0B,CAAC,KAAK;AACnD,aAAA,QAAQ;aACR,aAAa,CAAC,GAAG;AACjB,aAAA,cAAc;AACd,aAAA,uBAAuB,EAAE;;QAG5B,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnF,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3D,QAAA,MAAM,SAAS,GAAG,WAAW,IAAI,CAAC,GAAG,WAAW,GAAG,eAAe;AAClE,QAAA,IAAI,SAAS,IAAI,CAAC,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC;QAC1C;;AAGA,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAa,KAAI;AAC3C,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAc;YAC/B,IACE,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC/C,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EACrC;gBACA,IAAI,CAAC,KAAK,EAAE;YACd;AACF,QAAA,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;IAC9D;IAEQ,KAAK,GAAA;AACX,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC7B,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;QACjD;AACA,QAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;AAC/D,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QACjC;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAc,UAAU,CAAC;AACtF,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;QAEvE,MAAM,gBAAgB,GAAG,uCAAuC,CAC9D,IAAI,CAAC,QAAQ,EACb,SAAS;AAER,aAAA,aAAa,CAAC;AACb,YAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;YACvF,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;SACzF;aACA,sBAAsB,CAAC,KAAK;aAC5B,QAAQ,CAAC,IAAI,CAAC;QAEjB,MAAM,cAAc,GAAG,8BAA8B,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEpE,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrC,gBAAgB;YAChB,cAAc;YACd,QAAQ,EAAE,SAAS,CAAC,WAAW;AAChC,SAAA,CAAC;IACJ;uGArPW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAFT,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlDlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iuEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA7CS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAsDN,SAAS,EAAA,UAAA,EAAA,CAAA;kBAzDrB,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CT,EAAA,IAAA,EAEK;AACJ,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,WAAW,EAAE,mBAAmB;qBACjC,EAAA,SAAA,EACU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAA,SAAW,EAAE,CAAC,EAAA,MAAA,EAAA,CAAA,iuEAAA,CAAA,EAAA;g5BAuCK,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC1J1E,IAAI,YAAY,GAAG,CAAC;AAEpB;;;;;;;AAOG;MAuBU,SAAS,CAAA;;IAEX,WAAW,GAAG,KAAK,CAAC,QAAQ;oFAAU;;IAGtC,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;AAGb,IAAA,QAAQ,GAAG,CAAA,WAAA,EAAc,YAAY,EAAE,EAAE;;AAG3C,IAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;;AAG5B,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;;AAGtD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;mFAAC;;AAGxE,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,QAAQ;iFAAC;IAE7F,QAAQ,GAAA;;AAEN,QAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE;QAC1E,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC5F;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC9C;;IAGU,OAAO,GAAA;QACf,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;QACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IAC5B;;IAGU,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChD;IACF;uGA5CW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBV;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iyBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEU,SAAS,EAAA,UAAA,EAAA,CAAA;kBAtBrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cACV,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAErC;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,iyBAAA,CAAA,EAAA;;;AC1BH,IAAIA,QAAM,GAAG,CAAC;AAEd;;;;;;;;;;;;;;;;AAgBG;MAkFU,WAAW,CAAA;;IAEb,KAAK,GAAG,KAAK,CAAC,EAAE;8EAAC;;IAGjB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,OAAO,GAAG,KAAK,CAAsB,EAAE;gFAAC;;IAGxC,WAAW,GAAG,KAAK,CAAC,EAAE;oFAAC;;IAGvB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;AAEhC;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;IAGtB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,IAAI,GAAG,KAAK,CAAC,EAAE;6EAAC;;IAGhB,MAAM,GAAG,KAAK,CAAoD,EAAE;+EAAC;;IAG3D,KAAK,GAAG,MAAM,CAAC,EAAE;8EAAC;;IAGlB,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;;AAGtB,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC;oFAAC;;IAGxB,QAAQ,GAAG,SAAS,CAA0B,OAAO;iFAAC;;IAGtD,OAAO,GAAG,SAAS,CAA+B,SAAS;gFAAC;;AAG5D,IAAA,OAAO,GAAG,CAAA,mBAAA,EAAsBA,QAAM,CAAA,CAAE;;AAGxC,IAAA,OAAO,GAAG,CAAA,mBAAA,EAAsBA,QAAM,CAAA,CAAE;;AAGxC,IAAA,OAAO,GAAG,CAAA,oBAAA,EAAuBA,QAAM,EAAE,EAAE;;AAG3C,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACjD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE;AACpC,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE;QAC7B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;wFAAC;;AAGiB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;AAC9B,QAAA,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI;IAC7C,CAAC;uFAAC;;AAGF;;;;;;AAMG;AACgB,IAAA,UAAU,GAAG,QAAQ,CACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC;mFAC/B;;AAGkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,OAAO,GAAa,EAAE;QAC5B,IAAI,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC9C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B,CAAC;oFAAC;IAEM,mBAAmB,GAAqC,IAAI;AACnD,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;;AAG/D,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC9B,QAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA,QAAA,EAAW,KAAK,EAAE;IAC1C;;AAGU,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,CAAC,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AAClD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,IAAI,EAAE;IACjC;;IAGU,OAAO,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAAE,IAAI,CAAC,IAAI,EAAE;IACvD;;IAGU,MAAM,GAAA;QACd,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;;AAGU,IAAA,cAAc,CAAC,MAAyB,EAAA;AAChD,QAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;QAC3D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IACvC;;AAGU,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAExC,QAAA,QAAQ,KAAK,CAAC,GAAG;YACf,KAAK,OAAO,EAAE;AACZ,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE;gBACpC,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,SAAS,IAAI,CAAC,EAAE;oBACnC,KAAK,CAAC,cAAc,EAAE;oBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC;AAChD,oBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC7B;gBACA;YACF;YACA,KAAK,QAAQ,EAAE;gBACb,KAAK,CAAC,cAAc,EAAE;gBACtB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC3C,IAAI,CAAC,KAAK,EAAE;gBACZ;YACF;YACA,KAAK,KAAK,EAAE;gBACV,IAAI,CAAC,KAAK,EAAE;gBACZ;YACF;AACA,YAAA,KAAK,WAAW;YAChB,KAAK,SAAS,EAAE;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,IAAI,EAAE;oBACX;gBACF;gBACA,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACnC,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7E,gBAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;oBAAE;gBACjC,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC7D,gBAAA,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM;AACjC,gBAAA,MAAM,OAAO,GACX,KAAK,CAAC,GAAG,KAAK;AACZ,sBAAE,CAAC,UAAU,GAAG,CAAC,IAAI;sBACnB,CAAC,UAAU,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG;gBAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC7C;YACF;;IAEJ;IAEQ,IAAI,GAAA;AACV,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC7B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAC/C,QAAA,KAAK,CAAC,aAAuD,CAAC,WAAW,EAAE;AAC5E,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAExB,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAa,KAAI;AAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC,EAAE;gBAC7D,IAAI,CAAC,KAAK,EAAE;YACd;AACF,QAAA,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;IAC9D;IAEQ,KAAK,GAAA;AACX,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE;AAC9B,QAAA,IAAI;AACD,YAAA,KAAK,CAAC,aAAuD,CAAC,WAAW,EAAE;QAC9E;AAAE,QAAA,MAAM;;QAER;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAExB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;AAC/D,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QACjC;IACF;uGArNW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5EZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,shHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAxES,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FA8EN,WAAW,EAAA,UAAA,EAAA,CAAA;kBAjFvB,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsET,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,shHAAA,CAAA,EAAA;AA+CgE,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,OAAO,iEAGH,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MC7JnE,UAAU,GAAG,IAAI,cAAc,CAAmB,YAAY;;ACS3E,IAAIA,QAAM,GAAG,CAAC;AAEd;;;;;;;;;;;;;;;AAeG;MAsCU,SAAS,CAAA;;IAEX,IAAI,GAAG,KAAK,CAAC,KAAK;6EAAC;;IAGnB,eAAe,GAAG,KAAK,CAAC,IAAI;wFAAC;;IAG7B,IAAI,GAAG,KAAK,CAAqC,IAAI;6EAAC;;IAGtD,SAAS,GAAG,KAAK,CAAC,EAAE,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;;IAG9C,cAAc,GAAG,KAAK,CAAC,EAAE,sFAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;;AAGxD,IAAA,QAAQ,GAAG,CAAA,kBAAA,EAAqBA,QAAM,CAAA,CAAE;AAE9B,IAAA,QAAQ,GAAG,CAAA,WAAA,EAAcA,QAAM,EAAE,EAAE;IACnC,SAAS,GAAG,SAAS,CAAgC,UAAU;kFAAC;IAClE,SAAS,GAAG,MAAM,CAAqB,IAAI;kFAAC;IAE1C,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAA,WAAA,EAAc,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE;mFAAC;AACxD,IAAA,WAAW,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,SAAS,GAAG,EAAE,CAAC;oFAAC;AAE/E,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;AAC9C,YAAA,IAAI,CAAC,MAAM;gBAAE;AACb,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,aAA4B,CAAC;gBACzD,MAAM,CAAC,SAAS,EAAE;YACpB;iBAAO;gBACL,IAAI,MAAM,CAAC,IAAI;oBAAE,MAAM,CAAC,KAAK,EAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;AACzB,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B;AACF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,QAAQ,CAAC,KAAY,EAAA;QAC7B,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;AAEU,IAAA,eAAe,CAAC,KAAiB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE;AAC9E,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB;IACF;uGAlDW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAhCT;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,UAAU,EAAE,CAAC,MAAiB,MAAM;oBACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;iBACpC,CAAC;gBACA,IAAI,EAAE,CAAC,SAAS,CAAC;AAClB,aAAA;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8jGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA5BS,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAkCT,SAAS,EAAA,UAAA,EAAA,CAAA;kBArCrB,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,CAAC,EAAA,eAAA,EACJ,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,UAAU;AACnB,4BAAA,UAAU,EAAE,CAAC,MAAiB,MAAM;gCACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gCACzB,KAAK,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;6BACpC,CAAC;AACA,4BAAA,IAAI,EAAE,CAAA,SAAA,CAAW;AAClB,yBAAA;qBACF,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;GAgBT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,8jGAAA,CAAA,EAAA;0nBAsBuE,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAkCpF;;;AAGG;MAuBU,eAAe,CAAA;AACP,IAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;uGADpC,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBhB;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8jGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAZS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAmBN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAtB3B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;GAUT,EAAA,IAAA,EAEK;AACJ,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,WAAW,EAAE,kBAAkB;AAChC,qBAAA,EAAA,MAAA,EAAA,CAAA,8jGAAA,CAAA,EAAA;;AAMH;;AAEG;MASU,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,8HAJjB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8jGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA,cAAA,CAAgB,EAAA,IAAA,EAEpB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAA,MAAA,EAAA,CAAA,8jGAAA,CAAA,EAAA;;AAIvC;;AAEG;MASU,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,4HAJhB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8jGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA,cAAA,CAAgB,EAAA,IAAA,EAEpB,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAA,MAAA,EAAA,CAAA,8jGAAA,CAAA,EAAA;;;MC/JzB,aAAa,GAAG,IAAI,cAAc,CAAqB,eAAe;;ACHnF,IAAID,QAAM,GAAG,CAAC;AAEd;;;;;;;;;;;;AAYG;MAkCU,WAAW,CAAA;;IAEb,aAAa,GAAG,KAAK,CAAC,CAAC;sFAAC;;IAGxB,OAAO,GAAG,KAAK,CAAsB,SAAS;gFAAC;;IAG/C,IAAI,GAAG,MAAM,CAAY,EAAE;6EAAC;;IAGlB,OAAO,GAAG,YAAY,CAAgC,QAAQ;gFAAC;;IAG/D,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAA,sBAAA,EAAyB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE;oFAAC;;AAG1F,IAAA,WAAW,CAAC,IAAa,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C;;AAGA,IAAA,aAAa,CAAC,EAAU,EAAA;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D;;AAGU,IAAA,SAAS,CAAC,KAAa,EAAA;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;;AAE9B,QAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAC/B;IACF;;AAGU,IAAA,YAAY,CAAC,KAAoB,EAAA;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,QAAA,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnF,QAAA,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM;QACjC,IAAI,GAAG,KAAK,CAAC;YAAE;QAEf,MAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAExE,IAAI,SAAS,GAAkB,IAAI;AAEnC,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,YAAY;gBACf,SAAS,GAAG,cAAc,CAAC,CAAC,mBAAmB,GAAG,CAAC,IAAI,GAAG,CAAC;gBAC3D;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,SAAS,GAAG,cAAc,CAAC,CAAC,mBAAmB,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC;gBACjE;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC;gBAC7B;AACF,YAAA,KAAK,KAAK;AACR,gBAAA,SAAS,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC;gBACnC;AACF,YAAA;gBACE;;QAGJ,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;IAClD;uGAlEW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAFX,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3BvD;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,y7EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAjCvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cACb,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;GAsBT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;qBAC3B,EAAA,SAAA,EACU,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAA,WAAa,EAAE,CAAC,EAAA,MAAA,EAAA,CAAA,y7EAAA,CAAA,EAAA;oUAaQ,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AA0DnF;;;;;;;AAOG;MAiCU,MAAM,CAAA;;IAER,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;;IAGhC,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;AAGvB,IAAA,KAAK,GAAG,CAAA,QAAA,EAAWA,QAAM,CAAA,CAAE;;AAG3B,IAAA,OAAO,GAAG,CAAA,cAAA,EAAiBA,QAAM,CAAA,CAAE;;AAG3B,IAAA,EAAE,GAAG,CAAA,iBAAA,EAAoBA,QAAM,EAAE,EAAE;;AAGnC,IAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;;AAG7B,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,KAAK;IAC/C,CAAC;iFAAC;IAEF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YACvB,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,SAAA,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;IACrC;uGArCW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5BP;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sLAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAiBU,MAAM,EAAA,UAAA,EAAA,CAAA;kBAhClB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,cACP,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sLAAA,CAAA,EAAA;;;MC3IU,mBAAmB,GAAG,IAAI,cAAc,CAA2B,qBAAqB;;ACCrG,IAAIA,QAAM,GAAG,CAAC;AAEd;;;;;;;;;;;;;AAaG;MAcU,iBAAiB,CAAA;;IAEnB,KAAK,GAAG,KAAK,CAAC,KAAK;8EAAC;;IAGpB,OAAO,GAAG,KAAK,CAAuC,SAAS;gFAAC;;IAGtD,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAA,4BAAA,EAA+B,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE;oFAAC;;AAGhG,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;IAC3B;;IAGiB,KAAK,GAAG,MAAM,CAAkB,EAAE;8EAAC;AAEpD,IAAA,QAAQ,CAAC,IAAmB,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C;AAEA,IAAA,UAAU,CAAC,IAAmB,EAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAC7D;IAEA,aAAa,CAAC,KAAoB,EAAE,IAAmB,EAAA;AACrD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5D,QAAA,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM;QAC/B,IAAI,GAAG,KAAK,CAAC;YAAE;QAEf,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;QAE7C,IAAI,UAAU,GAAyB,IAAI;AAE3C,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,UAAU,GAAG,YAAY,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC;gBACjD;AACF,YAAA,KAAK,SAAS;AACZ,gBAAA,UAAU,GAAG,YAAY,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC;gBACvD;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC;gBAC5B;AACF,YAAA,KAAK,KAAK;AACR,gBAAA,UAAU,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC;gBAClC;AACF,YAAA;gBACE;;QAGJ,KAAK,CAAC,cAAc,EAAE;QACtB,UAAU,CAAC,KAAK,EAAE;IACpB;uGAtDW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAFjB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,0GAPnE,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,s7EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FASf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA,cAAA,CAAgB,EAAA,cAAA,EAEV,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAA,IAAA,EAC1D;AACJ,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,IAAI,EAAE,cAAc;qBACrB,EAAA,SAAA,EACU,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAA,iBAAmB,EAAE,CAAC,EAAA,MAAA,EAAA,CAAA,s7EAAA,CAAA,EAAA;;AA2D/E;;AAEG;MAKU,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;AAGD;;;;;;;;;;AAUG;MA4CU,gBAAgB,CAAA;;IAElB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;;IAIvB,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,KAAK,EAAE,UAAU,EAAA,CAAG;AAE5D;;;;;AAKG;IACM,YAAY,GAAG,KAAK,CAAwB,CAAC;qFAAC;;AAGvD,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE;IAC7B;;AAGS,IAAA,EAAE,GAAG,CAAA,mBAAA,EAAsBA,QAAM,EAAE,EAAE;;AAGrC,IAAA,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,UAAU;;AAGhC,IAAA,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,QAAQ;;AAGpB,IAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAGjC,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAGlC,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;;IAG9C,UAAU,GAAG,MAAM,CAAC,KAAK;mFAAC;;AAG7C,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE;IAC1B;;AAGA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE;IAC7B;;AAGA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI;IACrC;AAEA,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,QAAiB,KAAI;AAC1D,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAEzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;IAC7B;;IAGA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAoB,oBAAoB,CAAC,EAAE,KAAK,EAAE;IACvF;;IAGU,QAAQ,GAAA;QAChB,IAAI,IAAI,CAAC,aAAa,EAAE;YAAE;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;IACvB;;AAGU,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;IACvC;uGA1FW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArCjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,s7EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAjCS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAwCN,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA3C5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,cAAA,EAC/B,CAAC,gBAAgB,CAAC,EAAA,QAAA,EACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BT,EAAA,IAAA,EAEK;AACJ,wBAAA,KAAK,EAAE,oBAAoB;AAC3B,wBAAA,0BAA0B,EAAE,IAAI;AACjC,qBAAA,EAAA,MAAA,EAAA,CAAA,s7EAAA,CAAA,EAAA;;;ACzJH;;;;;;;;;;;;;AAaG;MAWU,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAV1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,cAAc;4BACzB,MAAM,EAAE,CAAC,sCAAsC,CAAC;AACjD,yBAAA;AACF,qBAAA;AACF,iBAAA;;AAGD;;;;;;;;;;;;;;;AAeG;MAcU,OAAO,CAAA;;IAET,OAAO,GAAG,KAAK,CAAwB,SAAS;gFAAC;;IAGvC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAA,iBAAA,EAAoB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE;oFAAC;uGAL1E,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,iTANR,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+sDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAMf,OAAO,EAAA,UAAA,EAAA,CAAA;kBAbnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAEhC,iBAAiB,CAAC,IAAI,kBACrB,CAAC,OAAO,CAAC,EAAA,QAAA,EACf,gBAAgB,EAAA,IAAA,EAEpB;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,+sDAAA,CAAA,EAAA;;AAUH;;;;;;;;;AASG;MAuBU,WAAW,CAAA;;IAEb,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;AAGf,IAAA,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;IAGlE,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW;mFAAC;uGARvD,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXZ;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAtBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,WAAW;4BACtB,MAAM,EAAE,CAAC,+BAA+B,CAAC;4BACzC,OAAO,EAAE,CAAC,iCAAiC,CAAC;AAC7C,yBAAA;AACF,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;AAKT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,qBAAqB,EAAE,YAAY;AACpC,qBAAA;AACF,iBAAA;;AAYD;;;;;;;;;AASG;MAWU,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,mKANjB,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,CAAA,CAAE;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oBAAoB;AAC3B,wBAAA,IAAI,EAAE,WAAW;AAClB,qBAAA;AACF,iBAAA;;;ACnHD,IAAI,aAAa,GAAG,CAAC;AAErB;MAea,iBAAiB,CAAA;;IAEnB,IAAI,GAAG,KAAK,CAAC,EAAE;6EAAC;;IAEhB,SAAS,GAAG,KAAK,CAAC,EAAE;kFAAC;uGAJnB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,qcARlB,CAAA,YAAA,CAAc,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ukBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAQb,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAEhC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,CAAA,YAAA,CAAc,EAAA,IAAA,EAElB;AACJ,wBAAA,KAAK,EAAE,aAAa;AACpB,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,MAAM,EAAE,aAAa;AACtB,qBAAA,EAAA,MAAA,EAAA,CAAA,ukBAAA,CAAA,EAAA;;AASH,MAAM,SAAS,GAAwC;AACrD,IAAA,KAAK,EAAE;QACL,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;AAC1F,QAAA,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;AAC1F,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;QACzF,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;AAC3F,KAAA;AACD,IAAA,IAAI,EAAE;QACJ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;AACzF,QAAA,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;AACzF,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;QACxF,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;AAC1F,KAAA;CACF;AAED;;;;;;;;;AASG;MAaU,UAAU,CAAA;;IAEZ,UAAU,GAAG,KAAK,CAAC,QAAQ;mFAAU;;IAGrC,kBAAkB,GAAG,KAAK,CAAuC,OAAO;2FAAC;;IAGzE,kBAAkB,GAAG,KAAK,CAAC,KAAK;2FAAC;;IAGjC,mBAAmB,GAAG,KAAK,CAAC,GAAG;4FAAC;;IAGhC,mBAAmB,GAAG,KAAK,CAAC,CAAC;4FAAC;AAEtB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;IACjE,UAAU,GAAsB,IAAI;IACpC,SAAS,GAAyC,IAAI;IACtD,SAAS,GAAyC,IAAI;;IAG3C,eAAe,GAAG,MAAM,CAAgB,IAAI;wFAAC;;IAGtD,IAAI,GAAA;QACZ,IAAI,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;QACrD,IAAI,CAAC,cAAc,EAAE;AAErB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;YAAE;AAEpC,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YACrB,IAAI,CAAC,MAAM,EAAE;AACf,QAAA,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAChC;;IAGU,IAAI,GAAA;QACZ,IAAI,CAAC,cAAc,EAAE;AAErB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;YAAE;AAErC,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,QAAA,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAChC;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACxB;IAEQ,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QACxC;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YAAE;AAEnC,QAAA,MAAM,EAAE,GAAG,CAAA,YAAA,EAAe,aAAa,EAAE,EAAE;AAC3C,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,iBAAiB,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1C,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACvC,QAAA,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9B;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC;QAE5E,MAAM,gBAAgB,GAAG,uCAAuC,CAC9D,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU;aAEd,aAAa,CAAC,SAAS;aACvB,sBAAsB,CAAC,KAAK;aAC5B,QAAQ,CAAC,IAAI,CAAC;QAEjB,MAAM,cAAc,GAAG,8BAA8B,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEpE,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrC,gBAAgB;YAChB,cAAc;AACd,YAAA,UAAU,EAAE,mBAAmB;AAChC,SAAA,CAAC;IACJ;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;AAC3B,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;IACF;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;AAC3B,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;IACF;uGAzGW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAZtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,YAAY,EAAE,QAAQ;AACtB,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,yBAAyB,EAAE,mBAAmB;AAC/C,qBAAA;AACF,iBAAA;;;AC9ED;;;;;;;;;AASG;MAcU,WAAW,CAAA;;IAEb,OAAO,GAAG,KAAK,CAAsC,MAAM;gFAAC;;IAG5D,KAAK,GAAG,KAAK,CAAC,MAAM;8EAAC;;IAGrB,MAAM,GAAG,KAAK,CAAC,EAAE;+EAAC;;IAGlB,QAAQ,GAAG,KAAK,CAAC,IAAI;iFAAC;AAEZ,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QAChD,IAAI,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,EAAE;AACvC,QAAA,QAAQ,IAAI,CAAC,OAAO,EAAE;AACpB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,KAAK;AACd,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,IAAI,CAAC,KAAK,EAAE;AACrB,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAO,OAAO;;IAEpB,CAAC;uFAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,OAAO,GAAG,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AAChD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B,CAAC;oFAAC;uGA7BS,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,+tBATZ,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kxBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FASD,WAAW,EAAA,UAAA,EAAA,CAAA;kBAbvB,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,EAAE,EAAA,IAAA,EAEN;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,eAAe,EAAE,SAAS;AAC1B,wBAAA,gBAAgB,EAAE,kBAAkB;AACpC,wBAAA,aAAa,EAAE,MAAM;AACtB,qBAAA,EAAA,MAAA,EAAA,CAAA,kxBAAA,CAAA,EAAA;;;ACMH,IAAI,OAAO,GAAG,CAAC;AAEf;;;;;;;;AAQG;MAEU,eAAe,CAAA;IACjB,MAAM,GAAG,MAAM,CAAc,EAAE;+EAAC;AAExB,IAAA,MAAM,GAAG,IAAI,GAAG,EAAyC;AAE1E;;;AAGG;IACH,IAAI,CAAC,OAAe,EAAE,OAAsB,EAAA;AAC1C,QAAA,MAAM,EAAE,GAAG,CAAA,UAAA,EAAa,OAAO,EAAE,EAAE;AACnC,QAAA,MAAM,KAAK,GAAc;YACvB,EAAE;YACF,OAAO;AACP,YAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS;AACtC,YAAA,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI;AACnC,YAAA,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI;SAC1C;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;AAE9C,QAAA,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC;QAC5B;AAEA,QAAA,OAAO,EAAE;IACX;;AAGA,IAAA,OAAO,CAAC,EAAU,EAAA;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACjC,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,YAAY,CAAC,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB;QACA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D;;IAGA,KAAK,GAAA;QACH,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YACxC,YAAY,CAAC,KAAK,CAAC;QACrB;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB;uGA9CW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA;;2FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AAkDlC;;;;AAIG;MAoBU,QAAQ,CAAA;;IAEV,OAAO,GAAG,KAAK,CAAe,SAAS;gFAAC;;IAGxC,WAAW,GAAG,KAAK,CAAC,IAAI;oFAAC;;IAGzB,OAAO,GAAG,KAAK,CAAC,EAAE;gFAAC;;IAGnB,OAAO,GAAG,KAAK,CAAC,EAAE;gFAAC;;IAGnB,SAAS,GAAG,MAAM,EAAU;IAElB,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE;oFAAC;IAElE,SAAS,GAAA;QACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrC;uGApBW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdT;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oiEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EATS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAgBN,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAnBpB,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;GAOT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,IAAI,EAAE,QAAQ;AACf,qBAAA,EAAA,MAAA,EAAA,CAAA,oiEAAA,CAAA,EAAA;;AAyBH;;;;;;;;AAQG;MAwBU,iBAAiB,CAAA;AACT,IAAA,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC;AACxC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;IAGvC,QAAQ,GAAG,KAAK,CAAgE,cAAc;iFAAC;IAErF,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAA,SAAA,EAAY,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAE;oFAAC;AAE9E,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5D;uGAXW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBlB;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ymBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA/CU,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAuDR,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAvB7B,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP,CAAC,QAAQ,CAAC,EAAA,eAAA,EACF,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;GAUT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,IAAI,EAAE,QAAQ;AACf,qBAAA,EAAA,MAAA,EAAA,CAAA,ymBAAA,CAAA,EAAA;;;AC/JH;;;;;;;;;;;AAWG;MA0BU,SAAS,CAAA;;IAEX,GAAG,GAAG,KAAK,CAAC,EAAE;4EAAC;;IAGf,GAAG,GAAG,KAAK,CAAC,EAAE;4EAAC;;IAGf,IAAI,GAAG,KAAK,CAAC,EAAE;6EAAC;;IAGhB,IAAI,GAAG,KAAK,CAAmC,IAAI;6EAAC;;IAGpD,KAAK,GAAG,KAAK,CAAsB,QAAQ;8EAAC;;IAG5C,MAAM,GAAG,KAAK,CAA8C,EAAE;+EAAC;;IAGrD,SAAS,GAAG,MAAM,CAAC,IAAI;kFAAC;;AAGxB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;AACpB,QAAA,OAAO;aACJ,KAAK,CAAC,GAAG;aACT,MAAM,CAAC,OAAO;AACd,aAAA,KAAK,CAAC,CAAC,EAAE,CAAC;AACV,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;aAC7B,IAAI,CAAC,EAAE,CAAC;IACb,CAAC;iFAAC;;AAGiB,IAAA,SAAS,GAAG,QAAQ,CACrC,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,QAAQ;kFAC5C;;AAGkB,IAAA,WAAW,GAAG,QAAQ,CACvC,MAAM,CAAA,KAAA,EAAQ,IAAI,CAAC,IAAI,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE;oFAClD;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,GAAG,EAAE,CAAC;AACX,YAAA,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAA,CAAC,CAAC;IACJ;uGAjDW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBV;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ihFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAdS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAsBN,SAAS,EAAA,UAAA,EAAA,CAAA;kBAzBrB,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;GAYT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,mBAAmB,EAAE,aAAa;AACnC,qBAAA,EAAA,MAAA,EAAA,CAAA,ihFAAA,CAAA,EAAA;;AAsDH;;;;;;;;;;;;AAYG;MAiBU,cAAc,CAAA;;IAEhB,GAAG,GAAG,KAAK,CAAC,CAAC;4EAAC;;IAGd,IAAI,GAAG,KAAK,CAAmC,IAAI;6EAAC;IAE5C,SAAS,GAAG,eAAe,CAAC,SAAS,iFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;IAE1D,aAAa,GAAG,QAAQ,CAAC,MAC1C,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;sFAClD;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YACtB,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;AAChC,gBAAA,EAAE,CAAC,aAA6B,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,GAAG,GAAG,MAAM,GAAG,EAAE;AAC1E,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;uGApBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAOoB,SAAS,EAAA,IAAA,EAAU,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBhE;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ihFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAChB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;GAKT,EAAA,IAAA,EAEK;AACJ,wBAAA,KAAK,EAAE,OAAO;AACd,wBAAA,SAAS,EAAE,wBAAwB;AACpC,qBAAA,EAAA,MAAA,EAAA,CAAA,ihFAAA,CAAA,EAAA;AAS4C,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,SAAS,CAAA,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACnI9E;;;;;;;;;AASG;MAoBU,WAAW,CAAA;;IAEb,KAAK,GAAG,KAAK,CAAS,CAAC;8EAAC;;IAGxB,GAAG,GAAG,KAAK,CAAS,GAAG;4EAAC;;IAGxB,OAAO,GAAG,KAAK,CAA+C,SAAS;gFAAC;;IAGxE,IAAI,GAAG,KAAK,CAAqB,IAAI;6EAAC;;IAGtC,aAAa,GAAG,KAAK,CAAC,KAAK;sFAAC;AAErC;;;AAGG;IACM,KAAK,GAAG,KAAK,CAAqB,SAAS;8EAAC;IAElC,YAAY,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;qFAChD;IAEkB,SAAS,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,aAAa;AAChB,UAAE;AACF,UAAE,CAAA,EAAG,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,CAAA,CAAA,CAAG;kFACnD;AAEkB,IAAA,WAAW,GAAG,QAAQ,CACvC,MACE,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,MAAA,EAAS,IAAI,CAAC,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,aAAa,EAAE,GAAG,mBAAmB,GAAG,EAAE,CAAA,CAAE;oFACpG;uGAnCU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,yCAAA,EAAA,oBAAA,EAAA,gCAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfZ;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,shCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAWU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAnBvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;GAIT,EAAA,IAAA,EAEK;AACJ,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,eAAe,EAAE,GAAG;AACpB,wBAAA,sBAAsB,EAAE,yCAAyC;AACjE,wBAAA,sBAAsB,EAAE,gCAAgC;AACxD,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,shCAAA,CAAA,EAAA;;;MC1BU,eAAe,GAAG,IAAI,cAAc,CAAwB,iBAAiB;;ACK1F;;;;;;;;;;;;AAYG;MA6BU,cAAc,CAAA;IAChB,SAAS,GAAG,KAAK,CAAkC,GAAG;kFAAC;IAE7C,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,EAAE,CAAA,CAAA,CAAG;wFAAC;IAE3D,QAAQ,GAAG,MAAM,CAAW,EAAE;iFAAC;IACxC,OAAO,GAAG,CAAC;;AAGV,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC3B,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;mFAAC;;IAGF,YAAY,GAAA;AACV,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;AAC3C,QAAA,OAAO,EAAE;IACX;;AAGA,IAAA,cAAc,CAAC,EAAU,EAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5D;uGAxBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EAxBd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,UAAU,EAAE,CAAC,EAAkB,MAAM;AACnC,oBAAA,YAAY,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE;oBACrC,cAAc,EAAE,CAAC,EAAU,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;oBACrD,UAAU,EAAE,EAAE,CAAC,UAAU;iBAC1B,CAAC;gBACF,IAAI,EAAE,CAAC,cAAc,CAAC;AACvB,aAAA;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACS;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4oCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOU,cAAc,EAAA,UAAA,EAAA,CAAA;kBA5B1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,UAAU,EAAE,CAAC,EAAkB,MAAM;AACnC,gCAAA,YAAY,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE;gCACrC,cAAc,EAAE,CAAC,EAAU,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;gCACrD,UAAU,EAAE,EAAE,CAAC,UAAU;6BAC1B,CAAC;AACF,4BAAA,IAAI,EAAE,CAAA,cAAA,CAAgB;AACvB,yBAAA;qBACF,EAAA,QAAA,EACS;;;;;;GAMT,EAAA,IAAA,EAEK;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,yBAAyB,EAAE,mBAAmB;AAC/C,qBAAA,EAAA,MAAA,EAAA,CAAA,4oCAAA,CAAA,EAAA;;AA6BH;;;AAGG;MAmBU,iBAAiB,CAAA;;IAEnB,IAAI,GAAG,KAAK,CAAC,EAAE;6EAAC;AAER,IAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;AACjC,IAAA,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;gFAAC;IAElB,SAAS,GAAG,QAAQ,CACrC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;kFAC1E;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IAC/C;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7C;IACF;uGAnBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdlB;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4oCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;GAOT,EAAA,IAAA,EAEK;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,oBAAoB,EAAE,aAAa;AACpC,qBAAA,EAAA,MAAA,EAAA,CAAA,4oCAAA,CAAA,EAAA;;;ACxFH;;;;;;;AAOG;MAyEU,aAAa,CAAA;;IAEf,IAAI,GAAG,KAAK,CAAC,CAAC;6EAAC;;IAGf,SAAS,GAAG,KAAK,CAAC,CAAC;kFAAC;;IAGpB,YAAY,GAAG,KAAK,CAAC,CAAC;qFAAC;;IAGvB,aAAa,GAAG,KAAK,CAAC,IAAI;sFAAC;AAEjB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAiB;AACvD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;QAEpC,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAElD,MAAM,KAAK,GAAe,EAAE;;AAG5B,QAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAErC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;;AAGrD,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC;QACzD;;AAGA,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;AAClC,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACvC;;AAGA,QAAA,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE;AACrB,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;QACvD;;AAGA,QAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAEzC,QAAA,OAAO,KAAK;IACd,CAAC;kFAAC;AAEQ,IAAA,IAAI,CAAC,CAAS,EAAA;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IACxB;IAEU,MAAM,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5B;IAEU,MAAM,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5B;IAEU,OAAO,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACd;IAEU,MAAM,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC7B;uGApEW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnEd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gkDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlES,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAqEN,aAAa,EAAA,UAAA,EAAA,CAAA;kBAxEzB,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgET,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gkDAAA,CAAA,EAAA;;;MCnFU,UAAU,GAAG,IAAI,cAAc,CAAmB,YAAY;;ACS3E,IAAID,QAAM,GAAG,CAAC;AAEd;;;;;;;;;;;;;;;;;AAiBG;MAsCU,SAAS,CAAA;;IAEX,IAAI,GAAG,KAAK,CAAC,KAAK;6EAAC;;IAGnB,QAAQ,GAAG,KAAK,CAAsC,OAAO;iFAAC;;IAG9D,IAAI,GAAG,KAAK,CAA8B,IAAI;6EAAC;;IAG/C,eAAe,GAAG,KAAK,CAAC,IAAI;wFAAC;;AAG7B,IAAA,QAAQ,GAAG,CAAA,kBAAA,EAAqBA,QAAM,CAAA,CAAE;AAE9B,IAAA,QAAQ,GAAG,CAAA,WAAA,EAAcA,QAAM,EAAE,EAAE;IACnC,SAAS,GAAG,SAAS,CAAgC,UAAU;kFAAC;IAClE,SAAS,GAAG,MAAM,CAAqB,IAAI;kFAAC;AAE1C,IAAA,WAAW,GAAG,QAAQ,CACvC,MACE,CAAA,oBAAA,EAAuB,IAAI,CAAC,QAAQ,EAAE,CAAA,MAAA,EAAS,IAAI,CAAC,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,GAAG,EAAE,CAAA,CAAE;oFAC/F;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;AAC9C,YAAA,IAAI,CAAC,MAAM;gBAAE;AACb,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,aAA4B,CAAC;gBACzD,MAAM,CAAC,SAAS,EAAE;YACpB;iBAAO;gBACL,IAAI,MAAM,CAAC,IAAI;oBAAE,MAAM,CAAC,KAAK,EAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;AACzB,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B;AACF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,QAAQ,CAAC,KAAY,EAAA;QAC7B,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;AAEU,IAAA,eAAe,CAAC,KAAiB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE;AAC9E,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB;IACF;uGAjDW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAhCT;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,UAAU,EAAE,CAAC,MAAiB,MAAM;oBAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;iBACpC,CAAC;gBACF,IAAI,EAAE,CAAC,SAAS,CAAC;AAClB,aAAA;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8lIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA5BS,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAkCT,SAAS,EAAA,UAAA,EAAA,CAAA;kBArCrB,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,CAAC,EAAA,eAAA,EACJ,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,UAAU;AACnB,4BAAA,UAAU,EAAE,CAAC,MAAiB,MAAM;gCAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gCACzB,KAAK,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;6BACpC,CAAC;AACF,4BAAA,IAAI,EAAE,CAAA,SAAA,CAAW;AAClB,yBAAA;qBACF,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;GAgBT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,8lIAAA,CAAA,EAAA;0gBAmBuE,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAmCpF;;;AAGG;MAuBU,eAAe,CAAA;AACP,IAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;uGADpC,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBhB;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8lIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAZS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAmBN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAtB3B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;GAUT,EAAA,IAAA,EAEK;AACJ,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,WAAW,EAAE,kBAAkB;AAChC,qBAAA,EAAA,MAAA,EAAA,CAAA,8lIAAA,CAAA,EAAA;;AAMH;;AAEG;MASU,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,8HAJjB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8lIAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA,cAAA,CAAgB,EAAA,IAAA,EAEpB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAA,MAAA,EAAA,CAAA,8lIAAA,CAAA,EAAA;;AAIvC;;AAEG;MASU,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,4HAJhB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8lIAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA,cAAA,CAAgB,EAAA,IAAA,EAEpB,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAA,MAAA,EAAA,CAAA,8lIAAA,CAAA,EAAA;;;MC3JzB,SAAS,GAAG,IAAI,cAAc,CAAkB,WAAW;AAExE;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;MA6BU,QAAQ,CAAA;;IAEV,OAAO,GAAG,KAAK,CAAqC,SAAS;gFAAC;;IAG9D,IAAI,GAAG,KAAK,CAAqB,IAAI;6EAAC;;IAGtC,YAAY,GAAG,KAAK,CAAC,KAAK;qFAAC;AAEpC;;;;;AAKG;IACM,SAAS,GAAG,KAAK,CAAqB,SAAS,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;;AAG/D,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,EAAE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,CAAC;QACjF,IAAI,IAAI,CAAC,YAAY,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACzD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B,CAAC;oFAAC;uGAvBS,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAJR,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBhD;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,osGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FASU,QAAQ,EAAA,UAAA,EAAA,CAAA;kBA5BpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;GAeT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,SAAA,EACU,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAA,QAAU,EAAE,CAAC,EAAA,aAAA,EAE3C,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,osGAAA,CAAA,EAAA;;AA4BvC;AACA;AACA;AAEA;;;;;;;;;;;AAWG;MASU,QAAQ,CAAA;uGAAR,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,gIAJT,CAAA,6BAAA,CAA+B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,osGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAI9B,QAAQ,EAAA,UAAA,EAAA,CAAA;kBARpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA,6BAAA,CAA+B,EAAA,IAAA,EAEnC,EAAE,iBAAiB,EAAE,YAAY,EAAE,EAAA,MAAA,EAAA,CAAA,osGAAA,CAAA,EAAA;;AAI3C;AACA;AACA;AAEA;;;;;;;;;;;;AAYG;MAqBU,QAAQ,CAAA;;IAEV,KAAK,GAAG,KAAK,CAAC,KAAK;8EAAC;;IAGpB,OAAO,GAAG,KAAK,CAAC,CAAC;gFAAC;uGALhB,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBT;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,osGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIU,QAAQ,EAAA,UAAA,EAAA,CAAA;kBApBpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,IAAA,EAEK,EAAE,iBAAiB,EAAE,YAAY,EAAE,EAAA,MAAA,EAAA,CAAA,osGAAA,CAAA,EAAA;;AAU3C;AACA;AACA;AAEA;;;;;;;;;;AAUG;MAyBU,KAAK,CAAA;;IAEP,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,UAAU,GAAG,KAAK,CAAC,KAAK;mFAAC;;IAGzB,KAAK,GAAG,KAAK,CAAqB,SAAS;8EAAC;;IAG5C,cAAc,GAAG,MAAM,EAAW;;AAGxB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,IAAI,CAAC,UAAU,EAAE,GAAG,eAAe,GAAG,EAAE;oFACzC;;AAGkB,IAAA,YAAY,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,GAAG,EAAE;qFACrC;uGArBU,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAL,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAK,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBN;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,osGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAoBV,KAAK,EAAA,UAAA,EAAA,CAAA;kBAxBjB,SAAS;+BACE,QAAQ,EAAA,UAAA,EACN,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,WAAW,CAAC,EAAA,QAAA,EACZ;;;;;;;;;;;;GAYT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,iBAAiB,EAAE,YAAY;AAChC,qBAAA,EAAA,MAAA,EAAA,CAAA,osGAAA,CAAA,EAAA;;AAiCH;;;;;;;;AAQG;MA4BU,KAAK,CAAA;;IAEP,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,aAAa,GAAG,KAAK,CAAmB,IAAI;sFAAC;;IAG7C,KAAK,GAAG,KAAK,CAA6B,OAAO;8EAAC;;IAGlD,KAAK,GAAG,KAAK,CAAqB,SAAS;8EAAC;AAErD;;;AAGG;IACM,IAAI,GAAG,MAAM,EAAoB;;AAGvB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,SAAS;AACtC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE;QAC9B,IAAI,CAAC,KAAK,KAAK;AAAE,YAAA,OAAO,WAAW;QACnC,IAAI,CAAC,KAAK,MAAM;AAAE,YAAA,OAAO,YAAY;AACrC,QAAA,OAAO,MAAM;IACf,CAAC;iFAAC;;AAGiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,OAAO,GAAG,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,CAAC;QACzC,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AACnD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,KAAK;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5D,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9D,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B,CAAC;oFAAC;;IAGQ,SAAS,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;QACpC,MAAM,IAAI,GACR,OAAO,KAAK,IAAI,GAAG,KAAK,GAAG,OAAO,KAAK,KAAK,GAAG,MAAM,GAAG,IAAI;AAC9D,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACtB;uGA3CW,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAL,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAK,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBN;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,osGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EApBS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAwBN,KAAK,EAAA,UAAA,EAAA,CAAA;kBA3BjB,SAAS;+BACE,QAAQ,EAAA,UAAA,EACN,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,IAAA,EAEK,EAAE,iBAAiB,EAAE,YAAY,EAAE,EAAA,MAAA,EAAA,CAAA,osGAAA,CAAA,EAAA;;AAgD3C;AACA;AACA;AAEA;;;;;;;AAOG;MAaU,KAAK,CAAA;;IAEP,KAAK,GAAG,KAAK,CAA6B,OAAO;8EAAC;uGAFhD,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAL,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAK,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARN;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,osGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIU,KAAK,EAAA,UAAA,EAAA,CAAA;kBAZjB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAQ,cACN,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;AAIT,EAAA,CAAA,EAAA,IAAA,EAEK,EAAE,iBAAiB,EAAE,YAAY,EAAE,EAAA,MAAA,EAAA,CAAA,osGAAA,CAAA,EAAA;;;MCvU9B,WAAW,GAAG,IAAI,cAAc,CAAoB,aAAa;;ACV9E,IAAID,QAAM,GAAG,CAAC;AAEd;;;;;;;;;;;AAWG;MAiEU,UAAU,CAAA;;IAEZ,UAAU,GAAG,KAAK,CAAC,CAAC;mFAAC;;IAGrB,WAAW,GAAG,KAAK,CAA4B,YAAY;oFAAC;AAErE;;;AAGG;IACM,MAAM,GAAG,KAAK,CAAC,KAAK;+EAAC;;IAGrB,KAAK,GAAG,MAAM,CAAa,EAAE;8EAAC;;IAGpB,WAAW,GAAG,QAAQ,CACvC,MAAM,CAAA,YAAA,EAAe,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE;oFAC1C;;AAGD,IAAA,YAAY,CAAC,IAAc,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C;;AAGA,IAAA,cAAc,CAAC,EAAU,EAAA;QACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D;;IAGA,UAAU,CAAC,EAAU,EAAE,IAAuB,EAAA;AAC5C,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KACrB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CACvD;IACH;;AAGA,IAAA,IAAI,CAAC,KAAa,EAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM;YAAE;AACxC,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ;YAAE;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;;YAEjB,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC;YAClF,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY;gBAAE;QAClD;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC5B;;IAGA,IAAI,GAAA;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAClC;;IAGA,IAAI,GAAA;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;QAClC,IAAI,IAAI,GAAG,CAAC;YAAE;AACd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ;YAAE;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;uGA/DW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAFV,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzDpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,k6FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAtDS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FA6DN,UAAU,EAAA,UAAA,EAAA,CAAA;kBAhEtB,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;qBAC3B,EAAA,SAAA,EACU,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAA,UAAY,EAAE,CAAC,EAAA,MAAA,EAAA,CAAA,k6FAAA,CAAA,EAAA;;AAoEhE;;;;;;;AAOG;MAuBU,OAAO,CAAA;;IAET,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;;IAGhC,WAAW,GAAG,KAAK,CAAqB,SAAS;oFAAC;;IAGlD,SAAS,GAAG,KAAK,CAAC,KAAK;kFAAC;;IAGxB,KAAK,GAAG,KAAK,CAAC,KAAK;8EAAC;;IAGpB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;IAGvB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;AAGf,IAAA,EAAE,GAAG,CAAA,kBAAA,EAAqBA,QAAM,EAAE,EAAE;;AAGpC,IAAA,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;;IAG3B,OAAO,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gFACxD;;AAGkB,IAAA,QAAQ,GAAG,QAAQ,CACpC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE;iFACnD;AAED,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAAE;YAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE;AAC/B,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC1B,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;YACxB,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC1B,SAAA,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC;uGAhEW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBR;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOU,OAAO,EAAA,UAAA,EAAA,CAAA;kBAtBnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AC7KH;;;;;;;;;AASG;MA4CU,YAAY,CAAA;;IAEd,IAAI,GAAG,KAAK,CAAS,EAAE;6EAAC;;IAGxB,QAAQ,GAAG,KAAK,CAAS,MAAM;iFAAC;;IAGhC,QAAQ,GAAG,KAAK,CAAS,EAAE;iFAAC;;IAG5B,QAAQ,GAAG,KAAK,CAAU,IAAI;iFAAC;;IAG/B,eAAe,GAAG,KAAK,CAAU,KAAK;wFAAC;IAE7B,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;AAEtB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;qFAAC;AAEjE,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;8EAAC;IAExD,IAAI,GAAA;AACZ,QAAA,KAAK,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAK;AACxD,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;AAChD,QAAA,CAAC,CAAC;IACJ;uGA3BW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtCb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6gEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlCS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAwCN,YAAY,EAAA,UAAA,EAAA,CAAA;kBA3CxB,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,kBAAkB;AAC9B,qBAAA,EAAA,MAAA,EAAA,CAAA,6gEAAA,CAAA,EAAA;;;MC5CU,QAAQ,GAAG,IAAI,cAAc,CAAiB,UAAU;;ACSrE,IAAI,MAAM,GAAG,CAAC;AAEd;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAmEU,OAAO,CAAA;;IAET,OAAO,GAAG,KAAK,CAAiB,QAAQ;gFAAC;;IAGzC,IAAI,GAAG,KAAK,CAAC,KAAK;6EAAC;;IAGnB,MAAM,GAAG,KAAK,CAAgB,MAAM;+EAAC;;AAGrC,IAAA,QAAQ,GAAG,CAAA,gBAAA,EAAmB,MAAM,EAAE,EAAE;IAE9B,SAAS,GAAG,SAAS,CAAgC,UAAU;kFAAC;AAClE,IAAA,IAAI,GAA4B,MAAM,CAAC,UAAU,CAAC;IAClD,SAAS,GAAG,MAAM,CAAqB,IAAI;kFAAC;AAE1C,IAAA,WAAW,GAAG,QAAQ,CACvC,MACE,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,GAAG,EAAE,CAAA,CAAE;oFACtF;AAED,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ;gBAAE;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;AAC9C,YAAA,IAAI,CAAC,MAAM;gBAAE;AACb,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,aAA4B,CAAC;gBACzD,MAAM,CAAC,SAAS,EAAE;YACpB;iBAAO;gBACL,IAAI,MAAM,CAAC,IAAI;oBAAE,MAAM,CAAC,KAAK,EAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;AACzB,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B;AACF,QAAA,CAAC,CAAC;;;QAIF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE;AAClB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ;gBAAE;;YAEjC,qBAAqB,CAAC,MAAK;AACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAsB,UAAU,CAAC,EAAE,KAAK,EAAE;AACjF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,QAAQ,CAAC,KAAY,EAAA;QAC7B,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;AAEU,IAAA,eAAe,CAAC,KAAiB,EAAA;QACzC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE;AACpD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB;IACF;uGA3DW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EA7DP;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,UAAU,EAAE,CAAC,IAAa,MAAM;oBAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,oBAAA,MAAM,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBAC1C,CAAC;gBACF,IAAI,EAAE,CAAC,OAAO,CAAC;AAChB,aAAA;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAzDS,UAAU,4LAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FA+D3B,OAAO,EAAA,UAAA,EAAA,CAAA;kBAlEnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAA,eAAA,EACtB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,QAAQ;AACjB,4BAAA,UAAU,EAAE,CAAC,IAAa,MAAM;gCAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gCACvB,OAAO,EAAE,IAAI,CAAC,OAAO;gCACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gCACnB,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,gCAAA,MAAM,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;6BAC1C,CAAC;AACF,4BAAA,IAAI,EAAE,CAAA,OAAA,CAAS;AAChB,yBAAA;qBACF,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA;8ZAeuE,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAiDpF;;;AAGG;MA0BU,aAAa,CAAA;AACL,IAAA,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;uGADlC,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBd;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAhBS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAsBN,aAAa,EAAA,UAAA,EAAA,CAAA;kBAzBzB,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EACD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;GAcT,EAAA,IAAA,EAEK;AACJ,wBAAA,WAAW,EAAE,kBAAkB;AAChC,qBAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA;;AAMH;;;;;AAKG;MAQU,eAAe,CAAA;AACT,IAAA,IAAI,GAA4B,MAAM,CAAC,UAAU,CAAC;AAClD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;AAClC,YAAA,MAAM,aAAa,GAAG,QAAc,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AACrE,YAAA,aAAa,EAAE;AACf,YAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,aAAa,CAAC;AACpD,YAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC7E,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AACxD,QAAA,CAAC,CAAC;IACJ;uGAbW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,6EAHhB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,YACrC,CAAA,cAAA,CAAgB,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA;;AAmB5B;;;;;;;;;AASG;MAYU,cAAc,CAAA;;IAEhB,IAAI,GAAG,KAAK,CAAqB,WAAW;6EAAC;;IAG7C,MAAM,GAAG,KAAK,CAAC,KAAK;+EAAC;IAEX,WAAW,GAAG,QAAQ,CACvC,MAAM,CAAA,KAAA,EAAQ,IAAI,CAAC,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,GAAG,EAAE,CAAA,CAAE;oFAChE;uGATU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,yZAPf,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOf,cAAc,EAAA,UAAA,EAAA,CAAA;kBAX1B,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,gBAAgB,EAAA,IAAA,EAEpB;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE,YAAY;AAC5B,qBAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA;;AAcH;;;;;;;;;;;AAWG;MAkBU,aAAa,CAAA;;IAEf,MAAM,GAAG,KAAK,CAAC,KAAK;+EAAC;AAEX,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,GAAG,EAAE;oFACjC;uGANU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbd;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAQU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAjBzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;GAKT,EAAA,IAAA,EAEK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,kBAAkB,EAAE,UAAU;AAC/B,qBAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA;;AAWH;;;;;;;AAOG;MAeU,iBAAiB,CAAA;;IAEnB,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;;IAGhC,IAAI,GAAG,KAAK,CAAS,EAAE;6EAAC;;IAGxB,QAAQ,GAAG,MAAM,EAAU;uGARzB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVlB;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;AAOT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA;;AAcH;;;;;;;;;;;AAWG;MAqCU,YAAY,CAAA;;IAEd,WAAW,GAAG,KAAK,CAAS,EAAE;oFAAC;;IAG/B,SAAS,GAAG,KAAK,CAAS,2BAA2B;kFAAC;;IAGtD,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;;IAGzB,IAAI,GAAG,MAAM,EAAU;;IAGvB,IAAI,GAAG,MAAM,EAAQ;AAEX,IAAA,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE1B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,WAAW;oFAAC;AAEnE,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACtD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,QAAQ;AAAE,YAAA,OAAO,QAAQ;AAC7B,QAAA,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC3B,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,uBAAuB;AAChC,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,YAAY;AACrB,YAAA;AACE,gBAAA,OAAO,4BAA4B;;IAEzC,CAAC;6FAAC;AAEQ,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA6B;QAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9B;AAEU,IAAA,OAAO,CAAC,KAAY,EAAA;QAC5B,MAAM,EAAE,GAAG,KAAsB;QACjC,IAAI,EAAE,CAAC,QAAQ;YAAE;QACjB,EAAE,CAAC,cAAc,EAAE;QACnB,IAAI,CAAC,QAAQ,EAAE;IACjB;IAEU,QAAQ,GAAA;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AAChC,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACpB;uGAlDW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhCb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGU,YAAY,EAAA,UAAA,EAAA,CAAA;kBApCxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cACd,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,84RAAA,CAAA,EAAA;;;ACrYH;AACA;;ACDA;;AAEG;;;;"}
|