@masmarino/gabarit 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"masmarino-gabarit.mjs","sources":["../../../projects/gabarit/src/lib/version.ts","../../../projects/gabarit/src/lib/components/atoms/icon/built-in-icons.ts","../../../projects/gabarit/src/lib/components/atoms/icon/icon-registry.ts","../../../projects/gabarit/src/lib/components/atoms/icon/icon.ts","../../../projects/gabarit/src/lib/components/templates/app-shell/app-shell.ts","../../../projects/gabarit/src/lib/components/templates/app-shell/app-shell.html","../../../projects/gabarit/src/lib/components/atoms/button/button.ts","../../../projects/gabarit/src/lib/components/atoms/button/button.html","../../../projects/gabarit/src/lib/components/atoms/badge/badge.ts","../../../projects/gabarit/src/lib/components/atoms/badge/badge.html","../../../projects/gabarit/src/lib/components/atoms/tag/tag-contrast.ts","../../../projects/gabarit/src/lib/components/atoms/tag/tag.ts","../../../projects/gabarit/src/lib/components/atoms/tag/tag.html","../../../projects/gabarit/src/lib/components/molecules/empty-state/empty-state.ts","../../../projects/gabarit/src/lib/components/molecules/empty-state/empty-state.html","../../../projects/gabarit/src/lib/components/atoms/input/input.ts","../../../projects/gabarit/src/lib/components/atoms/input/input.html","../../../projects/gabarit/src/lib/components/molecules/select/select.ts","../../../projects/gabarit/src/lib/components/molecules/select/select.html","../../../projects/gabarit/src/lib/components/molecules/list-toolbar/list-toolbar.ts","../../../projects/gabarit/src/lib/components/molecules/list-toolbar/list-toolbar.html","../../../projects/gabarit/src/lib/components/molecules/card/card.ts","../../../projects/gabarit/src/lib/components/molecules/card/card.html","../../../projects/gabarit/src/lib/components/atoms/checkbox/checkbox.ts","../../../projects/gabarit/src/lib/components/atoms/checkbox/checkbox.html","../../../projects/gabarit/src/lib/components/organisms/modal/modal.ts","../../../projects/gabarit/src/lib/components/organisms/modal/modal.html","../../../projects/gabarit/src/lib/components/molecules/table/table.ts","../../../projects/gabarit/src/lib/components/molecules/table/table.html","../../../projects/gabarit/src/lib/components/organisms/search-bar/search-bar.ts","../../../projects/gabarit/src/lib/components/organisms/search-bar/search-bar.html","../../../projects/gabarit/src/lib/components/molecules/tab/tab.ts","../../../projects/gabarit/src/lib/components/molecules/tabs/tabs.ts","../../../projects/gabarit/src/lib/components/molecules/tabs/tabs.html","../../../projects/gabarit/src/lib/primitives/scales.ts","../../../projects/gabarit/src/lib/primitives/ticks.ts","../../../projects/gabarit/src/lib/primitives/format.ts","../../../projects/gabarit/src/lib/primitives/path.ts","../../../projects/gabarit/src/lib/primitives/nearest.ts","../../../projects/gabarit/src/lib/primitives/label.ts","../../../projects/gabarit/src/lib/components/organisms/chart-context/chart-context.ts","../../../projects/gabarit/src/lib/components/organisms/chart-frame/chart-frame.ts","../../../projects/gabarit/src/lib/components/organisms/chart-frame/chart-frame.html","../../../projects/gabarit/src/lib/components/organisms/chart-axis/chart-axis.ts","../../../projects/gabarit/src/lib/components/organisms/chart-axis/chart-axis.html","../../../projects/gabarit/src/lib/components/organisms/chart-tooltip/chart-tooltip.ts","../../../projects/gabarit/src/lib/components/organisms/chart-tooltip/chart-tooltip.html","../../../projects/gabarit/src/lib/components/organisms/chart-legend/chart-legend.ts","../../../projects/gabarit/src/lib/components/organisms/chart-legend/chart-legend.html","../../../projects/gabarit/src/lib/components/organisms/chart-empty/chart-empty.ts","../../../projects/gabarit/src/lib/components/organisms/chart-empty/chart-empty.html","../../../projects/gabarit/src/lib/components/organisms/chart-table/chart-table.ts","../../../projects/gabarit/src/lib/components/organisms/chart-table/chart-table.html","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-series.ts","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-series.html","../../../projects/gabarit/src/lib/components/organisms/chart-data/chart-data.ts","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-chart.ts","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-chart.html","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-series.ts","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-series.html","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-chart.ts","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-chart.html","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-series.ts","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-series.html","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-chart.ts","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-chart.html","../../../projects/gabarit/src/lib/components/atoms/sparkline/sparkline.ts","../../../projects/gabarit/src/lib/components/atoms/sparkline/sparkline.html","../../../projects/gabarit/src/lib/components/atoms/gauge-bar/gauge-bar.ts","../../../projects/gabarit/src/lib/components/atoms/gauge-bar/gauge-bar.html","../../../projects/gabarit/src/lib/components/molecules/dimension-card/dimension-card.ts","../../../projects/gabarit/src/lib/components/molecules/dimension-card/dimension-card.html","../../../projects/gabarit/src/lib/components/molecules/funnel-chart/funnel-chart.ts","../../../projects/gabarit/src/lib/components/molecules/funnel-chart/funnel-chart.html","../../../projects/gabarit/src/lib/components/molecules/menu/menu.ts","../../../projects/gabarit/src/lib/components/molecules/menu/menu.html","../../../projects/gabarit/src/lib/components/molecules/pagination/pagination.ts","../../../projects/gabarit/src/lib/components/molecules/pagination/pagination.html","../../../projects/gabarit/src/lib/components/molecules/breadcrumb/breadcrumb.ts","../../../projects/gabarit/src/lib/components/molecules/breadcrumb/breadcrumb.html","../../../projects/gabarit/src/lib/components/organisms/confirm-danger-modal/confirm-danger-modal.ts","../../../projects/gabarit/src/lib/components/organisms/confirm-danger-modal/confirm-danger-modal.html","../../../projects/gabarit/src/lib/components/organisms/toaster/toaster.ts","../../../projects/gabarit/src/lib/components/organisms/toaster/toaster.html","../../../projects/gabarit/src/lib/components/molecules/tooltip/tooltip.ts","../../../projects/gabarit/src/lib/components/molecules/tooltip/tooltip.html","../../../projects/gabarit/src/lib/components/molecules/radio-group/radio-group.ts","../../../projects/gabarit/src/lib/components/molecules/radio-group/radio-group.html","../../../projects/gabarit/src/lib/components/atoms/switch/switch.ts","../../../projects/gabarit/src/lib/components/atoms/switch/switch.html","../../../projects/gabarit/src/lib/components/atoms/textarea/textarea.ts","../../../projects/gabarit/src/lib/components/atoms/textarea/textarea.html","../../../projects/gabarit/src/lib/components/molecules/autocomplete/autocomplete.ts","../../../projects/gabarit/src/lib/components/molecules/autocomplete/autocomplete.html","../../../projects/gabarit/src/masmarino-gabarit.ts"],"sourcesContent":["export const GABARIT_VERSION = '0.6.1'\n","export const BUILT_IN_ICONS: Record<string, string> = {\n search: `<path d=\"m21 21-4.34-4.34\" />\n<circle cx=\"11\" cy=\"11\" r=\"8\" />`,\n x: `<path d=\"M18 6 6 18\" />\n<path d=\"m6 6 12 12\" />`,\n eye: `<path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" />\n<circle cx=\"12\" cy=\"12\" r=\"3\" />`,\n 'eye-off': `<path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\" />\n<path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\" />\n<path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\" />\n<path d=\"m2 2 20 20\" />`,\n 'chevron-down': `<path d=\"m6 9 6 6 6-6\" />`,\n 'chevron-left': `<path d=\"m15 18-6-6 6-6\" />`,\n 'chevron-right': `<path d=\"m9 18 6-6-6-6\" />`,\n 'chevrons-left': `<path d=\"m11 17-5-5 5-5\" />\n<path d=\"m18 17-5-5 5-5\" />`,\n 'chevrons-right': `<path d=\"m6 17 5-5-5-5\" />\n<path d=\"m13 17 5-5-5-5\" />`,\n 'ellipsis-vertical': `<circle cx=\"12\" cy=\"12\" r=\"1\" />\n<circle cx=\"12\" cy=\"5\" r=\"1\" />\n<circle cx=\"12\" cy=\"19\" r=\"1\" />`,\n check: `<path d=\"M20 6 9 17l-5-5\" />`,\n 'check-circle': `<path d=\"m5 12 5 5 9-10\" />`,\n 'alert-circle': `<path d=\"M12 7v6\" />\n<path d=\"M12 17h.01\" />`,\n 'alert-triangle': `<path d=\"m21.73 18-8-14a2 2 0 0 0-3.46 0L2.27 18a2 2 0 0 0 1.73 3h16a2 2 0 0 0 1.73-3Z\" />\n<path d=\"M12 9v4\" />\n<path d=\"M12 17h.01\" />`,\n info: `<path d=\"M12 17v-6\" />\n<path d=\"M12 7h.01\" />`,\n 'arrow-up': `<path d=\"m5 12 7-7 7 7\" />\n<path d=\"M12 19V5\" />`,\n 'arrow-down': `<path d=\"M12 5v14\" />\n<path d=\"m19 12-7 7-7-7\" />`,\n}\n","import { Injectable } from '@angular/core'\nimport { BUILT_IN_ICONS } from './built-in-icons'\n\n@Injectable({ providedIn: 'root' })\nexport class IconRegistry {\n private readonly icons = new Map<string, string>(Object.entries(BUILT_IN_ICONS))\n\n register(name: string, svgInnerMarkup: string): void {\n this.icons.set(name, svgInnerMarkup)\n }\n\n registerAll(icons: Record<string, string>): void {\n for (const [name, markup] of Object.entries(icons)) {\n this.icons.set(name, markup)\n }\n }\n\n get(name: string): string | null {\n return this.icons.get(name) ?? null\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { DomSanitizer } from '@angular/platform-browser'\nimport { IconRegistry } from './icon-registry'\n\n@Component({\n selector: 'gbt-icon',\n standalone: true,\n template: `\n @if (svgContent(); as content) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n [innerHTML]=\"content\"\n ></svg>\n }\n `,\n styles: `\n :host {\n display: inline-flex;\n flex-shrink: 0;\n width: 1.25em;\n height: 1.25em;\n }\n svg {\n width: 100%;\n height: 100%;\n }\n `,\n host: {\n '[attr.aria-hidden]': '\"true\"',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Icon {\n private readonly sanitizer = inject(DomSanitizer)\n private readonly registry = inject(IconRegistry)\n\n name = input.required<string>()\n\n protected readonly svgContent = computed(() => {\n const markup = this.registry.get(this.name())\n return markup ? this.sanitizer.bypassSecurityTrustHtml(markup) : null\n })\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n computed,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-app-shell',\n standalone: true,\n imports: [Icon],\n templateUrl: './app-shell.html',\n styleUrl: './app-shell.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppShell {\n navLabel = input.required<string>()\n skipLabel = input.required<string>()\n openMenuLabel = input.required<string>()\n closeMenuLabel = input.required<string>()\n collapseLabel = input<string>('')\n expandLabel = input<string>('')\n collapsed = input<boolean>(false)\n collapsible = input<boolean>(true)\n collapsedChange = output<boolean>()\n\n private readonly id = ++nextId\n protected readonly mainId = `gbt-app-shell-main-${this.id}`\n protected readonly navId = `gbt-app-shell-nav-${this.id}`\n\n protected readonly menuOpen = signal(false)\n\n protected readonly menuLabel = computed(() =>\n this.menuOpen() ? this.closeMenuLabel() : this.openMenuLabel(),\n )\n\n private readonly toggleButton = viewChild<ElementRef<HTMLButtonElement>>('toggle')\n private readonly nav = viewChild<ElementRef<HTMLElement>>('nav')\n\n protected toggleMenu(): void {\n if (this.menuOpen()) {\n this.close()\n return\n }\n this.menuOpen.set(true)\n queueMicrotask(() => this.nav()?.nativeElement.focus())\n }\n\n protected close(): void {\n if (!this.menuOpen()) return\n this.menuOpen.set(false)\n this.toggleButton()?.nativeElement.focus()\n }\n\n protected toggleCollapsed(): void {\n this.collapsedChange.emit(!this.collapsed())\n }\n\n @HostListener('document:keydown.escape')\n protected onEscape(): void {\n this.close()\n }\n\n protected onNavKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab' || !this.menuOpen()) return\n const nav = this.nav()?.nativeElement\n if (!nav) return\n\n const focusableElements = nav.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n if (focusableElements.length === 0) return\n\n const first = focusableElements[0]\n const last = focusableElements[focusableElements.length - 1]\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n","<div class=\"gbt-app-shell\">\n <a class=\"gbt-app-shell__skip\" [href]=\"'#' + mainId\">{{ skipLabel() }}</a>\n\n <nav\n #nav\n [id]=\"navId\"\n class=\"gbt-app-shell__nav\"\n [class.gbt-app-shell__nav--open]=\"menuOpen()\"\n [class.gbt-app-shell__nav--collapsed]=\"collapsed()\"\n [attr.aria-label]=\"navLabel()\"\n tabindex=\"-1\"\n (keydown)=\"onNavKeydown($event)\"\n >\n <div class=\"gbt-app-shell__brand\">\n <ng-content select=\"[shell-brand]\" />\n </div>\n <ng-content select=\"[shell-nav]\" />\n @if (collapsible()) {\n <button\n type=\"button\"\n class=\"gbt-app-shell__collapse-toggle\"\n [class.gbt-app-shell__collapse-toggle--collapsed]=\"collapsed()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-label]=\"collapsed() ? expandLabel() : collapseLabel()\"\n (click)=\"toggleCollapsed()\"\n >\n <gbt-icon name=\"chevrons-left\" />\n </button>\n }\n </nav>\n\n @if (menuOpen()) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div class=\"gbt-app-shell__scrim\" (click)=\"close()\"></div>\n }\n\n <div class=\"gbt-app-shell__body\">\n <header class=\"gbt-app-shell__header\">\n <button\n #toggle\n type=\"button\"\n class=\"gbt-app-shell__toggle\"\n [attr.aria-expanded]=\"menuOpen()\"\n [attr.aria-controls]=\"navId\"\n [attr.aria-label]=\"menuLabel()\"\n (click)=\"toggleMenu()\"\n >\n <span class=\"gbt-app-shell__burger\" aria-hidden=\"true\"></span>\n </button>\n <ng-content select=\"[shell-header]\" />\n </header>\n\n <main [id]=\"mainId\" class=\"gbt-app-shell__content\" tabindex=\"-1\">\n <ng-content />\n </main>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input, output } from '@angular/core'\nimport { Icon } from '../icon/icon'\n\n@Component({\n selector: 'gbt-button',\n standalone: true,\n imports: [Icon],\n templateUrl: './button.html',\n styleUrl: './button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Button {\n variant = input<'primary' | 'secondary' | 'danger'>('primary')\n size = input<'small' | 'medium' | 'large'>('medium')\n type = input<'button' | 'submit'>('button')\n text = input<string>('')\n iconName = input<string | null>(null)\n ariaLabel = input<string | null>(null)\n loading = input(false, { transform: booleanAttribute })\n loadingLabel = input<string>('Loading')\n disabled = input(false, { transform: booleanAttribute })\n\n clicked = output<void>()\n\n protected handleClick(): void {\n if (!this.disabled() && !this.loading()) {\n this.clicked.emit()\n }\n }\n}\n","<button\n [type]=\"type()\"\n class=\"gbt-button gbt-button--{{ variant() }} gbt-button--{{ size() }}\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n (click)=\"handleClick()\"\n>\n @if (iconName()) {\n <gbt-icon [name]=\"iconName()!\" aria-hidden=\"true\" />\n }\n @if (loading()) {\n <span class=\"gbt-button__spinner\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">{{ loadingLabel() }}</span>\n }\n <span>{{ text() }}</span>\n</button>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\nimport { Icon } from '../icon/icon'\n\nexport type BadgeVariant = 'neutral' | 'success' | 'warning' | 'error' | 'info'\n\n@Component({\n selector: 'gbt-badge',\n standalone: true,\n imports: [Icon],\n templateUrl: './badge.html',\n styleUrl: './badge.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Badge {\n variant = input<BadgeVariant>('neutral')\n icon = input<string>()\n}\n","<span class=\"gbt-badge\" [attr.data-variant]=\"variant()\">\n @if (icon(); as name) {\n <gbt-icon [name]=\"name\" class=\"gbt-badge__icon\" aria-hidden=\"true\" />\n }\n <span class=\"gbt-badge__label\"><ng-content /></span>\n</span>\n","/** A 6-digit hex color, with or without its leading `#`. */\nconst HEX_6 = /^#?[0-9a-fA-F]{6}$/\n\nfunction normalizeHex(hex: string): string {\n if (!HEX_6.test(hex)) {\n throw new Error(\n `getReadableTextColor: expected a 6-digit hex color such as \"#dc2626\" or \"dc2626\", got ${JSON.stringify(hex)}. ` +\n 'Shorthand hex (#abc), CSS named colors, rgb()/hsl() and custom properties are not supported.',\n )\n }\n return hex.replace('#', '')\n}\n\nfunction linearizeChannel(value: number): number {\n const c = value / 255\n return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4)\n}\n\nfunction relativeLuminance(normalizedHex: string): number {\n const r = parseInt(normalizedHex.substring(0, 2), 16)\n const g = parseInt(normalizedHex.substring(2, 4), 16)\n const b = parseInt(normalizedHex.substring(4, 6), 16)\n return 0.2126 * linearizeChannel(r) + 0.7152 * linearizeChannel(g) + 0.0722 * linearizeChannel(b)\n}\n\nfunction contrastRatio(normalizedA: string, normalizedB: string): number {\n const lA = relativeLuminance(normalizedA)\n const lB = relativeLuminance(normalizedB)\n const lighter = Math.max(lA, lB)\n const darker = Math.min(lA, lB)\n return (lighter + 0.05) / (darker + 0.05)\n}\n\n/**\n * Returns `'#ffffff'` or `'#000000'`, whichever reaches a higher WCAG contrast\n * ratio against `backgroundHex`. Used by `Tag` to keep its text readable on\n * an arbitrary caller-supplied background color that isn't one of the\n * design system's own semantic tokens.\n *\n * These two endpoints are not interchangeable with a \"softer\" dark such as\n * `#1a1a1a`: sweeping all 16 777 216 sRGB backgrounds, the worst achievable\n * ratio is **4.58:1** with `#000000` (at `#cf0dcc`) but only **4.17:1** with\n * `#1a1a1a` (at `#da25c3`) — below the 4.5:1 AA threshold that `Tag`'s\n * 12px bold text must meet, since it is not \"large text\".\n *\n * @param backgroundHex a 6-digit hex color, with or without its leading `#`.\n * @throws if `backgroundHex` is not a well-formed 6-digit hex color. Silently\n * guessing would be worse: a malformed value used to produce `NaN` ratios,\n * and `NaN >= NaN` being `false` returned dark text for *any* unparseable\n * input — so `'#000'` got dark text on a black background.\n */\nexport function getReadableTextColor(backgroundHex: string): string {\n const background = normalizeHex(backgroundHex)\n const white = 'ffffff'\n const dark = '000000'\n return contrastRatio(background, white) >= contrastRatio(background, dark) ? '#ffffff' : '#000000'\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core'\nimport { Icon } from '../icon/icon'\nimport { getReadableTextColor } from './tag-contrast'\n\n@Component({\n selector: 'gbt-tag',\n standalone: true,\n imports: [Icon],\n templateUrl: './tag.html',\n styleUrl: './tag.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tag {\n color = input.required<string>()\n removable = input<boolean>(false)\n removeLabel = input<string>('Remove')\n\n removed = output<void>()\n\n protected readonly textColor = computed(() => getReadableTextColor(this.color()))\n\n protected onRemoveClick(event: MouseEvent): void {\n event.stopPropagation()\n this.removed.emit()\n }\n}\n","<span class=\"gbt-tag\" [style.background]=\"color()\" [style.color]=\"textColor()\">\n <span class=\"gbt-tag__label\"><ng-content /></span>\n @if (removable()) {\n <button type=\"button\" class=\"gbt-tag__remove\" [attr.aria-label]=\"removeLabel()\" (click)=\"onRemoveClick($event)\">\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n }\n</span>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\nexport type EmptyStateIllustration = 'folder' | 'star' | 'checklist' | 'merge' | 'pipeline' | 'tag' | 'book'\n\n@Component({\n selector: 'gbt-empty-state',\n standalone: true,\n imports: [],\n templateUrl: './empty-state.html',\n styleUrl: './empty-state.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyState {\n illustration = input.required<EmptyStateIllustration>()\n heading = input.required<string>()\n message = input<string>('')\n}\n","<div class=\"gbt-empty-state\">\n <div class=\"gbt-empty-state__illustration\" aria-hidden=\"true\">\n @switch (illustration()) {\n @case ('folder') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"16\" y=\"38\" width=\"64\" height=\"40\" rx=\"4\" />\n <path d=\"M16 38 v-8a4 4 0 0 1 4-4h16l8 8h28a4 4 0 0 1 4 4\" />\n <rect x=\"34\" y=\"14\" width=\"16\" height=\"20\" rx=\"2\" transform=\"rotate(-8 42 24)\" opacity=\"0.55\" />\n <rect x=\"50\" y=\"16\" width=\"16\" height=\"20\" rx=\"2\" transform=\"rotate(6 58 26)\" opacity=\"0.55\" />\n </svg>\n }\n @case ('star') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M48,18 L55.6,37.5 L76.5,38.7 L60.4,52 L65.6,72.3 L48,61 L30.4,72.3 L35.6,52 L19.5,38.7 L40.4,37.5 Z\" />\n <path d=\"M78,14 L81,20 L78,26 L75,20 Z\" opacity=\"0.55\" />\n <path d=\"M16,64 L19,70 L16,76 L13,70 Z\" opacity=\"0.55\" />\n </svg>\n }\n @case ('checklist') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"24\" y=\"18\" width=\"48\" height=\"64\" rx=\"6\" />\n <rect x=\"38\" y=\"12\" width=\"20\" height=\"10\" rx=\"3\" />\n <line x1=\"34\" y1=\"38\" x2=\"62\" y2=\"38\" />\n <path d=\"M32 50 l4 4 l8-8\" />\n <line x1=\"46\" y1=\"52\" x2=\"62\" y2=\"52\" />\n <line x1=\"34\" y1=\"66\" x2=\"62\" y2=\"66\" opacity=\"0.55\" />\n </svg>\n }\n @case ('merge') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"26\" cy=\"20\" r=\"7\" />\n <circle cx=\"26\" cy=\"76\" r=\"7\" />\n <circle cx=\"70\" cy=\"48\" r=\"7\" />\n <path d=\"M26 27 V60 Q26 68 34 68 H63\" />\n <path d=\"M26 55 Q26 41 40 41 H63\" />\n </svg>\n }\n @case ('pipeline') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"18\" cy=\"48\" r=\"10\" />\n <path d=\"M14 42 L25 48 L14 54 Z\" fill=\"currentColor\" stroke=\"none\" />\n <line x1=\"28\" y1=\"48\" x2=\"42\" y2=\"48\" />\n <circle cx=\"50\" cy=\"48\" r=\"8\" />\n <line x1=\"58\" y1=\"48\" x2=\"72\" y2=\"48\" />\n <circle cx=\"80\" cy=\"48\" r=\"8\" />\n </svg>\n }\n @case ('tag') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M18 20 H54 L82 48 L54 76 H18 Q14 76 14 72 V24 Q14 20 18 20 Z\" />\n <circle cx=\"34\" cy=\"36\" r=\"5\" />\n </svg>\n }\n @case ('book') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M48 26 Q34 16 16 20 V72 Q34 68 48 78 Q62 68 80 72 V20 Q62 16 48 26 Z\" />\n <line x1=\"24\" y1=\"32\" x2=\"40\" y2=\"30\" />\n <line x1=\"24\" y1=\"42\" x2=\"40\" y2=\"40\" />\n <line x1=\"56\" y1=\"30\" x2=\"72\" y2=\"32\" />\n <line x1=\"56\" y1=\"40\" x2=\"72\" y2=\"42\" />\n </svg>\n }\n }\n </div>\n <p class=\"gbt-empty-state__heading\">{{ heading() }}</p>\n @if (message()) {\n <p class=\"gbt-empty-state__message\">{{ message() }}</p>\n }\n <div class=\"gbt-empty-state__action\">\n <ng-content />\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../icon/icon'\n\nlet nextInputId = 0\n\n@Component({\n selector: 'gbt-input',\n standalone: true,\n imports: [Icon],\n templateUrl: './input.html',\n styleUrl: './input.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GbtInput),\n multi: true,\n },\n ],\n})\nexport class GbtInput implements ControlValueAccessor {\n id = input<string>(`gbt-input-${++nextInputId}`)\n label = input<string>('')\n type = input<'text' | 'password' | 'email'>('text')\n required = input(false, { transform: booleanAttribute })\n disabled = input(false, { transform: booleanAttribute })\n placeholder = input<string>('')\n errorMessage = input<string | null>(null)\n autocomplete = input<string>('off')\n\n showPasswordLabel = input<string>('Show password')\n\n hidePasswordLabel = input<string>('Hide password')\n\n committed = output<string>()\n\n protected readonly value = signal('')\n protected readonly passwordVisible = signal(false)\n protected readonly effectiveType = computed(() => {\n if (this.type() !== 'password') {\n return this.type()\n }\n return this.passwordVisible() ? 'text' : 'password'\n })\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: string) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: string): void {\n this.value.set(value ?? '')\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value\n this.value.set(value)\n this.onChange(value)\n }\n\n protected onBlur(): void {\n this.onTouched()\n this.committed.emit(this.value())\n }\n\n protected togglePasswordVisibility(): void {\n this.passwordVisible.update((visible) => !visible)\n }\n}\n","<div class=\"gbt-input\">\n @if (label()) {\n <label [for]=\"id()\">{{ label() }}{{ required() ? ' *' : '' }}</label>\n }\n <div class=\"gbt-input__wrapper\">\n <input\n [id]=\"id()\"\n [type]=\"effectiveType()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [disabled]=\"isDisabled()\"\n [attr.autocomplete]=\"autocomplete()\"\n [value]=\"value()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n @if (type() === 'password') {\n <button\n type=\"button\"\n class=\"gbt-input__toggle\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"passwordVisible() ? hidePasswordLabel() : showPasswordLabel()\"\n >\n <gbt-icon [name]=\"passwordVisible() ? 'eye-off' : 'eye'\" aria-hidden=\"true\" />\n </button>\n }\n </div>\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-input__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\nimport { Tag } from '../../atoms/tag/tag'\n\nexport interface SelectOption<T = string> {\n value: T\n label: string\n icon?: string\n color?: string\n}\n\nlet nextSelectId = 0\n\n@Component({\n selector: 'gbt-select',\n standalone: true,\n imports: [Icon, Tag],\n templateUrl: './select.html',\n styleUrl: './select.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'handleClickOutside($event)',\n '(keydown)': 'onKeydown($event)',\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n '[class.gbt-select--sm]': \"size() === 'sm'\",\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Select),\n multi: true,\n },\n ],\n})\nexport class Select<T = string> implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef)\n\n id = input<string>(`gbt-select-${++nextSelectId}`)\n label = input<string>('')\n size = input<'md' | 'sm'>('md')\n options = input.required<SelectOption<T>[]>()\n multiple = input(false, { transform: booleanAttribute })\n chips = input(false, { transform: booleanAttribute })\n placeholder = input<string>('Select…')\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n selectedCountLabel = input<(count: number) => string>((count) => `${count} selected`)\n chipRemoveLabel = input<(label: string) => string>((label) => `Remove ${label}`)\n\n protected readonly open = signal(false)\n protected readonly activeIndex = signal(-1)\n protected readonly selected = signal<T[]>([])\n protected readonly panelStyle = signal<{ top: string; left: string; width: string } | null>(null)\n private readonly formDisabled = signal(false)\n\n protected readonly labelId = computed(() => `${this.id()}-label`)\n protected readonly chipsId = computed(() => `${this.id()}-chips`)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: T | T[] | null) => void = () => {}\n private onTouched: () => void = () => {}\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n writeValue(value: T | T[] | null): void {\n if (this.multiple()) {\n this.selected.set(Array.isArray(value) ? (value as T[]) : [])\n } else {\n this.selected.set(value === null || value === undefined ? [] : [value as T])\n }\n }\n\n registerOnChange(fn: (value: T | T[] | null) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n protected readonly selectedOptions = computed(() => {\n const selected = this.selected()\n return this.options().filter((option) => selected.includes(option.value))\n })\n\n protected readonly triggerLabel = computed(() => {\n const opts = this.selectedOptions()\n if (opts.length === 0) {\n return this.placeholder()\n }\n if (this.chips() && this.multiple()) {\n return this.placeholder()\n }\n if (this.multiple() && opts.length > 1) {\n return this.selectedCountLabel()(opts.length)\n }\n return opts[0].label\n })\n\n protected readonly chipsVisible = computed(\n () => this.chips() && this.multiple() && this.selectedOptions().length > 0,\n )\n\n /**\n * In chips mode the trigger keeps showing the placeholder, so the selection\n * is conveyed to assistive technology by describing the trigger with the\n * chip row itself. The error message keeps its own id in the list.\n */\n protected readonly describedBy = computed(() => {\n const ids: string[] = []\n if (this.chipsVisible()) {\n ids.push(this.chipsId())\n }\n if (this.errorMessage()) {\n ids.push(`${this.id()}-error`)\n }\n return ids.length > 0 ? ids.join(' ') : null\n })\n\n protected readonly triggerIcon = computed(() => {\n const opts = this.selectedOptions()\n return opts.length === 1 ? opts[0].icon : undefined\n })\n\n protected readonly activeOptionId = computed(() =>\n this.open() && this.activeIndex() >= 0 ? `${this.id()}-option-${this.activeIndex()}` : null,\n )\n\n protected isSelected(value: T): boolean {\n return this.selected().includes(value)\n }\n\n protected toggleOpen(): void {\n if (this.isDisabled()) {\n return\n }\n this.open.update((value) => !value)\n if (this.open()) {\n this.activeIndex.set(\n Math.max(\n 0,\n this.options().findIndex((o) => this.isSelected(o.value)),\n ),\n )\n this.updatePanelPosition()\n } else {\n this.onTouched()\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.open()) {\n return\n }\n const trigger = this.elementRef.nativeElement.querySelector(\n '.gbt-select__trigger',\n ) as HTMLElement | null\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n // In chips mode the chip row sits between the trigger and the panel.\n // Anchoring the panel to the trigger alone would lay it over the chips,\n // whose remove buttons are focusable — WCAG 2.4.11 \"focus not obscured\".\n const chipRow = this.elementRef.nativeElement.querySelector(\n '.gbt-select__chips',\n ) as HTMLElement | null\n const anchorBottom = chipRow\n ? Math.max(rect.bottom, chipRow.getBoundingClientRect().bottom)\n : rect.bottom\n this.panelStyle.set({\n top: `${anchorBottom + 6}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n })\n }\n\n /**\n * Removes the chip at `index`. Refuses to mutate anything while the control\n * is disabled (the remove buttons are not rendered then, but a programmatic\n * caller must not be able to bypass the disabled state either), and moves\n * focus off the button it is about to destroy — otherwise focus falls back\n * to `<body>`.\n */\n protected removeChip(value: T, index: number): void {\n if (this.isDisabled()) {\n return\n }\n const host = this.elementRef.nativeElement as HTMLElement\n const removeButtons = Array.from(\n host.querySelectorAll<HTMLElement>('.gbt-select__chips .gbt-tag__remove'),\n )\n // `@for` tracks options by value, so the surviving chips keep their DOM\n // nodes across this removal — the element resolved here is still the right\n // one once the view updates.\n const nextFocus =\n removeButtons[index + 1] ??\n removeButtons[index - 1] ??\n host.querySelector<HTMLElement>('.gbt-select__trigger')\n this.selectOption(value)\n nextFocus?.focus()\n }\n\n protected selectOption(value: T): void {\n if (this.multiple()) {\n const current = this.selected()\n const next = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value]\n this.selected.set(next)\n this.onChange(next)\n // A chip can be removed without ever opening the panel, so this is the\n // only place that marks the control as touched in that flow.\n this.onTouched()\n } else {\n this.selected.set([value])\n this.onChange(value)\n this.open.set(false)\n this.onTouched()\n }\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (this.open() && !this.elementRef.nativeElement.contains(event.target)) {\n this.open.set(false)\n this.onTouched()\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) {\n return\n }\n if (!this.open()) {\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.toggleOpen()\n }\n return\n }\n const options = this.options()\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n event.stopPropagation()\n this.open.set(false)\n this.onTouched()\n break\n case 'ArrowDown':\n event.preventDefault()\n this.activeIndex.update((i) => Math.min(i + 1, options.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.activeIndex.update((i) => Math.max(i - 1, 0))\n break\n case 'Enter':\n case ' ': {\n event.preventDefault()\n const active = options[this.activeIndex()]\n if (active) {\n this.selectOption(active.value)\n }\n break\n }\n }\n }\n}\n","<div class=\"gbt-select\" [class.gbt-select--disabled]=\"isDisabled()\">\n @if (label()) {\n <label [id]=\"labelId()\" [for]=\"id()\" class=\"gbt-select__label\"\n >{{ label() }}{{ required() ? ' *' : '' }}</label\n >\n }\n\n <button\n type=\"button\"\n [id]=\"id()\"\n class=\"gbt-select__trigger\"\n [class.gbt-select__trigger--open]=\"open()\"\n [disabled]=\"isDisabled()\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? id() + '-listbox' : null\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-labelledby]=\"label() ? labelId() + ' ' + id() : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"describedBy()\"\n (click)=\"toggleOpen()\"\n >\n @if (triggerIcon(); as icon) {\n <gbt-icon [name]=\"icon\" class=\"gbt-select__trigger-icon\" aria-hidden=\"true\" />\n }\n <span\n class=\"gbt-select__trigger-label\"\n [class.gbt-select__trigger-label--placeholder]=\"selectedOptions().length === 0\"\n >\n {{ triggerLabel() }}\n </span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-select__chevron\" aria-hidden=\"true\" />\n </button>\n @if (chipsVisible()) {\n <div class=\"gbt-select__chips\" [id]=\"chipsId()\">\n @for (option of selectedOptions(); track option.value; let i = $index) {\n <gbt-tag\n [color]=\"option.color ?? '#6b7280'\"\n [removable]=\"!isDisabled()\"\n [removeLabel]=\"chipRemoveLabel()(option.label)\"\n (removed)=\"removeChip(option.value, i)\"\n >\n {{ option.label }}\n </gbt-tag>\n }\n </div>\n }\n @if (chips() && multiple()) {\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\n {{ selectedCountLabel()(selectedOptions().length) }}\n </div>\n }\n @if (open() && panelStyle(); as style) {\n <ul\n [id]=\"id() + '-listbox'\"\n class=\"gbt-select__panel\"\n role=\"listbox\"\n [attr.aria-label]=\"label() || placeholder()\"\n [attr.aria-multiselectable]=\"multiple()\"\n [style.top]=\"style.top\"\n [style.left]=\"style.left\"\n [style.width]=\"style.width\"\n >\n @for (option of options(); track option.value; let i = $index) {\n <li role=\"presentation\">\n <button\n [id]=\"id() + '-option-' + i\"\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n class=\"gbt-select__option\"\n [class.gbt-select__option--selected]=\"isSelected(option.value)\"\n [class.gbt-select__option--active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"isSelected(option.value)\"\n (click)=\"selectOption(option.value)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (option.icon) {\n <gbt-icon [name]=\"option.icon\" class=\"gbt-select__option-icon\" aria-hidden=\"true\" />\n }\n <span class=\"gbt-select__option-label\">{{ option.label }}</span>\n @if (isSelected(option.value)) {\n <gbt-icon name=\"check\" class=\"gbt-select__option-check\" aria-hidden=\"true\" />\n }\n </button>\n </li>\n }\n </ul>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-select__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, effect, input, output } from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { FormControl, ReactiveFormsModule } from '@angular/forms'\nimport { GbtInput } from '../../atoms/input/input'\nimport { Select, SelectOption } from '../select/select'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport interface ListToolbarSortOption<T extends string = string> {\n value: T\n label: string\n}\n\n@Component({\n selector: 'gbt-list-toolbar',\n standalone: true,\n imports: [ReactiveFormsModule, GbtInput, Select, Icon],\n templateUrl: './list-toolbar.html',\n styleUrl: './list-toolbar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListToolbar<T extends string = string> {\n searchValue = input<string>('')\n searchLabel = input.required<string>()\n searchPlaceholder = input<string>('')\n sortOptions = input.required<ListToolbarSortOption<T>[]>()\n sortValue = input.required<T>()\n sortDirection = input<'asc' | 'desc'>('asc')\n sortLabel = input<string>('Sort by')\n directionLabel = input<string>('Reverse sort direction')\n\n searchValueChange = output<string>()\n sortValueChange = output<T>()\n sortDirectionChange = output<'asc' | 'desc'>()\n\n // Plain `[ngModel]` bindings on the child `gbt-input`/`gbt-select` defer their\n // initial value to a control-value-accessor writeValue() call scheduled on a\n // microtask (an Angular Forms `NgModel` implementation detail), so the very\n // first render would briefly show the empty/placeholder state. Reactive\n // FormControls propagate `setValue()` to the CVA synchronously, so we mirror\n // the inputs onto internal controls instead and forward user edits back out.\n protected readonly searchControl = new FormControl<string>('', { nonNullable: true })\n protected readonly sortControl = new FormControl<T | null>(null)\n\n constructor() {\n effect(() => this.searchControl.setValue(this.searchValue(), { emitEvent: false }))\n effect(() => this.sortControl.setValue(this.sortValue(), { emitEvent: false }))\n\n this.searchControl.valueChanges\n .pipe(takeUntilDestroyed())\n .subscribe((value) => this.searchValueChange.emit(value))\n\n this.sortControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {\n if (value !== null && value !== this.sortValue()) {\n this.sortValueChange.emit(value)\n }\n })\n }\n\n protected asSelectOptions(options: ListToolbarSortOption<T>[]): SelectOption<T>[] {\n return options\n }\n\n protected toggleDirection(): void {\n this.sortDirectionChange.emit(this.sortDirection() === 'asc' ? 'desc' : 'asc')\n }\n}\n","<div class=\"gbt-list-toolbar\">\n <gbt-input\n class=\"gbt-list-toolbar__search\"\n [label]=\"searchLabel()\"\n [placeholder]=\"searchPlaceholder()\"\n [formControl]=\"searchControl\"\n />\n <gbt-select\n class=\"gbt-list-toolbar__sort\"\n [label]=\"sortLabel()\"\n [options]=\"asSelectOptions(sortOptions())\"\n [formControl]=\"sortControl\"\n />\n <button\n type=\"button\"\n class=\"gbt-list-toolbar__direction\"\n (click)=\"toggleDirection()\"\n [attr.aria-label]=\"directionLabel()\"\n [attr.aria-pressed]=\"sortDirection() === 'desc'\"\n >\n <gbt-icon [name]=\"sortDirection() === 'asc' ? 'arrow-up' : 'arrow-down'\" />\n </button>\n</div>\n","import { NgTemplateOutlet } from '@angular/common'\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\n@Component({\n selector: 'gbt-card',\n standalone: true,\n imports: [Icon, NgTemplateOutlet],\n templateUrl: './card.html',\n styleUrl: './card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Card {\n hoverable = input(false, { transform: booleanAttribute })\n heading = input<string>('')\n icon = input<string>('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n\n protected readonly cardClass = computed(\n () => 'gbt-card' + (this.hoverable() ? ' gbt-card--hoverable' : ''),\n )\n}\n","<div [class]=\"cardClass()\">\n @if (heading()) {\n <div class=\"gbt-card__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h1>\n }\n @case (3) {\n <h3 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h3>\n }\n @case (4) {\n <h4 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h4>\n }\n @case (5) {\n <h5 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h5>\n }\n @case (6) {\n <h6 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h6>\n }\n @default {\n <h2 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h2>\n }\n }\n <ng-content select=\"[card-header-actions]\"></ng-content>\n </div>\n }\n <ng-content></ng-content>\n</div>\n<ng-template #headingContent>\n @if (icon()) {\n <gbt-icon [name]=\"icon()\" aria-hidden=\"true\" />\n }\n {{ heading() }}\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextCheckboxId = 0\n\n@Component({\n selector: 'gbt-checkbox',\n standalone: true,\n templateUrl: './checkbox.html',\n styleUrl: './checkbox.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Checkbox),\n multi: true,\n },\n ],\n})\nexport class Checkbox implements ControlValueAccessor {\n id = input<string>(`gbt-checkbox-${++nextCheckboxId}`)\n label = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n\n protected readonly checked = signal(false)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: boolean) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: boolean): void {\n this.checked.set(!!value)\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected onToggle(event: Event): void {\n const value = (event.target as HTMLInputElement).checked\n this.checked.set(value)\n this.onChange(value)\n this.onTouched()\n }\n}\n","<label class=\"gbt-checkbox\" [class.gbt-checkbox--disabled]=\"isDisabled()\">\n <input\n type=\"checkbox\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onToggle($event)\"\n />\n <span>{{ label() }}</span>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n effect,\n input,\n output,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\n@Component({\n selector: 'gbt-modal',\n standalone: true,\n imports: [Icon],\n templateUrl: './modal.html',\n styleUrl: './modal.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Modal implements OnDestroy {\n isOpen = input.required<boolean>()\n heading = input<string>('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n closeLabel = input<string>('Close')\n\n closed = output<void>()\n\n private readonly dialog = viewChild<ElementRef<HTMLElement>>('dialog')\n\n private previouslyFocused: HTMLElement | null = null\n\n constructor() {\n effect(() => {\n if (this.isOpen()) {\n this.previouslyFocused = document.activeElement as HTMLElement | null\n queueMicrotask(() => this.dialog()?.nativeElement.focus())\n } else if (this.previouslyFocused) {\n const target = this.previouslyFocused\n this.previouslyFocused = null\n target.focus()\n }\n })\n }\n\n ngOnDestroy(): void {\n this.previouslyFocused?.focus()\n }\n\n @HostListener('document:keydown.escape')\n protected onEscape(): void {\n if (this.isOpen()) {\n this.closed.emit()\n }\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (event.target === event.currentTarget) {\n this.closed.emit()\n }\n }\n\n protected onDialogKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab') {\n return\n }\n const dialog = this.dialog()?.nativeElement\n if (!dialog) {\n return\n }\n const focusable = dialog.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n if (focusable.length === 0) {\n return\n }\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n","@if (isOpen()) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div class=\"gbt-modal__backdrop\" (click)=\"onBackdropClick($event)\">\n <div\n class=\"gbt-modal__dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"heading() || null\"\n tabindex=\"-1\"\n #dialog\n (keydown)=\"onDialogKeydown($event)\"\n >\n <header class=\"gbt-modal__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-modal__title\">{{ heading() }}</h1>\n }\n @case (3) {\n <h3 class=\"gbt-modal__title\">{{ heading() }}</h3>\n }\n @case (4) {\n <h4 class=\"gbt-modal__title\">{{ heading() }}</h4>\n }\n @case (5) {\n <h5 class=\"gbt-modal__title\">{{ heading() }}</h5>\n }\n @case (6) {\n <h6 class=\"gbt-modal__title\">{{ heading() }}</h6>\n }\n @default {\n <h2 class=\"gbt-modal__title\">{{ heading() }}</h2>\n }\n }\n <button\n type=\"button\"\n class=\"gbt-modal__close\"\n (click)=\"closed.emit()\"\n [attr.aria-label]=\"closeLabel()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n </header>\n <div class=\"gbt-modal__body\">\n <ng-content />\n </div>\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input, output } from '@angular/core'\n\nexport interface TableColumn<T> {\n key: Extract<keyof T, string>\n label: string\n\n format?: (row: T) => string\n}\n\n@Component({\n selector: 'gbt-table',\n standalone: true,\n templateUrl: './table.html',\n styleUrl: './table.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Table<T extends object> {\n data = input.required<T[]>()\n columns = input.required<TableColumn<T>[]>()\n trackBy = input<((row: T) => unknown) | null>(null)\n emptyMessage = input<string>('No data')\n caption = input.required<string>()\n clickableRows = input(false, { transform: booleanAttribute })\n\n rowClick = output<T>()\n\n protected trackRow = (index: number, row: T): unknown => {\n const identify = this.trackBy()\n return identify ? identify(row) : index\n }\n\n protected onRowKeydown(event: KeyboardEvent, row: T): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.rowClick.emit(row)\n }\n }\n\n protected cellValue(row: T, column: TableColumn<T>): unknown {\n return column.format ? column.format(row) : row[column.key]\n }\n}\n","<table class=\"gbt-table\">\n <caption>\n {{\n caption()\n }}\n </caption>\n <thead>\n <tr>\n @for (column of columns(); track column.key) {\n <th scope=\"col\">{{ column.label }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of data(); track trackRow($index, row)) {\n <tr\n [class.gbt-table__row--clickable]=\"clickableRows()\"\n [attr.tabindex]=\"clickableRows() ? 0 : null\"\n (click)=\"clickableRows() && rowClick.emit(row)\"\n (keydown)=\"clickableRows() && onRowKeydown($event, row)\"\n >\n @for (column of columns(); track column.key) {\n <td>{{ cellValue(row, column) }}</td>\n }\n </tr>\n } @empty {\n <tr class=\"gbt-table__empty\">\n <td [attr.colspan]=\"columns().length\">{{ emptyMessage() }}</td>\n </tr>\n }\n </tbody>\n</table>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core'\nimport { NgTemplateOutlet } from '@angular/common'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport interface SearchResultCategory<T = unknown> {\n label: string\n icon?: string\n items: T[]\n}\n\nlet nextSearchBarId = 0\n\n@Component({\n selector: 'gbt-search-bar',\n standalone: true,\n imports: [Icon, NgTemplateOutlet],\n templateUrl: './search-bar.html',\n styleUrl: './search-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown)': 'onNavigationKeydown($event)',\n '(document:click)': 'handleClickOutside($event)',\n },\n})\nexport class SearchBar<T = unknown> {\n private readonly elementRef = inject(ElementRef)\n\n id = input<string>(`gbt-search-bar-${++nextSearchBarId}`)\n results = input<T[] | null>(null)\n groupedResults = input<SearchResultCategory<T>[] | null>(null)\n placeholder = input<string>('Search…')\n ariaLabel = input<string>('')\n displayFn = input<(item: T) => string>((item) => String(item))\n itemTemplate = input<TemplateRef<unknown>>()\n keepQueryOnSelect = input(false)\n noResultsMessage = input<string>('No results')\n noResultsHint = input<string>('Try a different search.')\n clearLabel = input<string>('Clear search')\n resultsAnnouncement = input<(count: number) => string>(\n (count) => `${count} result${count !== 1 ? 's' : ''}`,\n )\n navigateHint = input<string>('Navigate')\n selectHint = input<string>('Select')\n closeHint = input<string>('Close')\n\n queryChange = output<string>()\n itemSelected = output<T>()\n clear = output<void>()\n\n protected readonly isFocused = signal(false)\n protected readonly showResults = signal(false)\n protected readonly searchQuery = signal('')\n protected readonly activeIndex = signal(0)\n\n protected readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput')\n\n private readonly hasGroupedResultsInput = computed(() => !!this.groupedResults())\n\n protected readonly allVisibleItems = computed<T[]>(() => {\n if (this.groupedResults()) {\n return this.groupedResults()!.flatMap((category) => category.items)\n }\n return this.results() ?? []\n })\n\n protected readonly showOverlay = computed(() => this.showResults())\n\n protected readonly panelId = computed(() => `${this.id()}-panel`)\n\n protected itemDomId(index: number): string {\n return `${this.id()}-item-${index}`\n }\n\n protected readonly indexedGroupedResults = computed(() => {\n const grouped = this.groupedResults()\n if (!grouped) return null\n const format = this.displayFn()\n let index = 0\n return grouped.map((category) => ({\n ...category,\n indexedItems: category.items.map((item) => ({\n item,\n index: index++,\n formatted: format(item),\n })),\n }))\n })\n\n protected readonly indexedResults = computed(() => {\n const format = this.displayFn()\n return (this.results() ?? []).map((item, index) => ({ item, index, formatted: format(item) }))\n })\n\n protected readonly activeItemDomId = computed(() => {\n if (!this.showOverlay()) return null\n const idx = this.activeIndex()\n\n return idx >= 0 && idx < this.allVisibleItems().length ? this.itemDomId(idx) : null\n })\n\n protected readonly resultCount = computed(() =>\n this.showOverlay() ? this.allVisibleItems().length : 0,\n )\n\n protected readonly hasGroupedResults = computed(\n () => this.hasGroupedResultsInput() && !!this.groupedResults()?.some((c) => c.items.length > 0),\n )\n\n protected readonly hasNoResults = computed(() => this.allVisibleItems().length === 0)\n\n protected onNavigationKeydown(event: KeyboardEvent): void {\n if (!this.isFocused() || !this.showOverlay()) return\n\n if (event.key === 'Escape') {\n event.preventDefault()\n this.blurSearch()\n return\n }\n\n const items = this.allVisibleItems()\n if (items.length === 0) return\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n this.activeIndex.update((i) => Math.min(i + 1, items.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.activeIndex.update((i) => Math.max(i - 1, 0))\n break\n case 'Enter': {\n const active = items[this.activeIndex()]\n if (!active) break\n event.preventDefault()\n this.onSelect(active)\n break\n }\n }\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.showResults.set(false)\n }\n }\n\n focusSearch(): void {\n this.searchInput()?.nativeElement.focus()\n }\n\n protected blurSearch(): void {\n this.searchInput()?.nativeElement.blur()\n this.showResults.set(false)\n }\n\n protected onFocus(): void {\n this.isFocused.set(true)\n if (this.searchQuery().length > 0) this.showResults.set(true)\n }\n\n protected onBlur(): void {\n this.isFocused.set(false)\n setTimeout(() => {\n if (!this.elementRef.nativeElement.contains(document.activeElement)) {\n this.showResults.set(false)\n }\n }, 200)\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value\n this.searchQuery.set(value)\n this.activeIndex.set(0)\n this.showResults.set(value.length > 0)\n\n this.queryChange.emit(value)\n }\n\n protected onClear(): void {\n this.searchQuery.set('')\n this.activeIndex.set(0)\n this.showResults.set(false)\n this.clear.emit()\n this.focusSearch()\n }\n\n protected onSelect(item: T): void {\n this.itemSelected.emit(item)\n this.showResults.set(false)\n this.searchQuery.set(this.keepQueryOnSelect() ? this.displayFn()(item) : '')\n }\n}\n","<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n<div class=\"gbt-sb-trigger\" [class.gbt-sb-trigger--open]=\"isFocused()\" (click)=\"focusSearch()\">\n <gbt-icon name=\"search\" class=\"gbt-sb-trigger__icon\" aria-hidden=\"true\" />\n <input\n #searchInput\n type=\"text\"\n role=\"combobox\"\n class=\"gbt-sb-trigger__input\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel() || placeholder()\"\n [value]=\"searchQuery()\"\n [attr.aria-expanded]=\"showOverlay()\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"showOverlay() ? panelId() : null\"\n [attr.aria-activedescendant]=\"activeItemDomId()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (input)=\"onInput($event)\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n @if (searchQuery().length > 0) {\n <button\n type=\"button\"\n class=\"gbt-sb-trigger__clear\"\n (click)=\"onClear()\"\n [attr.aria-label]=\"clearLabel()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n }\n</div>\n@if (showOverlay()) {\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\n {{ resultsAnnouncement()(resultCount()) }}\n </div>\n}\n@if (showOverlay()) {\n <div class=\"gbt-sb-backdrop\" (click)=\"blurSearch()\" aria-hidden=\"true\"></div>\n <ng-template #footer>\n <div class=\"gbt-sb-footer\" aria-hidden=\"true\">\n <span class=\"gbt-sb-footer__hint\">\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">↑</kbd>\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">↓</kbd>\n {{ navigateHint() }}\n </span>\n <span class=\"gbt-sb-footer__hint\">\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">↵</kbd>\n {{ selectHint() }}\n </span>\n <span class=\"gbt-sb-footer__hint\">\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">Esc</kbd>\n {{ closeHint() }}\n </span>\n </div>\n </ng-template>\n @if (hasNoResults()) {\n <div [id]=\"panelId()\" class=\"gbt-sb-panel\">\n <div class=\"gbt-sb-state\" role=\"status\">\n <gbt-icon name=\"search\" class=\"gbt-sb-state__icon\" aria-hidden=\"true\" />\n <span>{{ noResultsMessage() }}</span>\n <p class=\"gbt-sb-state__hint\">{{ noResultsHint() }}</p>\n </div>\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\n </div>\n } @else {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n [id]=\"panelId()\"\n class=\"gbt-sb-panel\"\n role=\"listbox\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (hasGroupedResults()) {\n <div class=\"gbt-sb-list\">\n @for (category of indexedGroupedResults(); track category.label) {\n @if (category.items.length > 0) {\n <div class=\"gbt-sb-group-label\">\n @if (category.icon) {\n <gbt-icon [name]=\"category.icon\" aria-hidden=\"true\" />\n }\n {{ category.label }}\n <span class=\"gbt-sb-group-count\" aria-hidden=\"true\">{{\n category.items.length\n }}</span>\n </div>\n @for (entry of category.indexedItems; track entry.index) {\n <button\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"itemDomId(entry.index)\"\n class=\"gbt-sb-item\"\n [attr.aria-selected]=\"entry.index === activeIndex()\"\n [class.gbt-sb-item--active]=\"entry.index === activeIndex()\"\n (click)=\"onSelect(entry.item)\"\n (mouseenter)=\"activeIndex.set(entry.index)\"\n >\n @if (itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: entry.item }\"\n ></ng-container>\n } @else {\n @if (category.icon) {\n <gbt-icon\n [name]=\"category.icon\"\n class=\"gbt-sb-item__icon\"\n aria-hidden=\"true\"\n />\n }\n <span class=\"gbt-sb-item__label\">{{ entry.formatted }}</span>\n }\n </button>\n }\n }\n }\n </div>\n } @else if (results() && results()!.length > 0) {\n <div class=\"gbt-sb-list\">\n @for (entry of indexedResults(); track entry.index) {\n <button\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"itemDomId(entry.index)\"\n class=\"gbt-sb-item\"\n [attr.aria-selected]=\"entry.index === activeIndex()\"\n [class.gbt-sb-item--active]=\"entry.index === activeIndex()\"\n (click)=\"onSelect(entry.item)\"\n (mouseenter)=\"activeIndex.set(entry.index)\"\n >\n @if (itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: entry.item }\"\n ></ng-container>\n } @else {\n <span class=\"gbt-sb-item__label\">{{ entry.formatted }}</span>\n }\n </button>\n }\n </div>\n }\n\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\n </div>\n }\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core'\n\n@Component({\n selector: 'gbt-tab',\n standalone: true,\n imports: [],\n template: `<ng-content></ng-content>`,\n host: {\n role: 'tabpanel',\n '[style.display]': \"active() ? null : 'none'\",\n '[id]': \"groupId() + '-panel-' + index()\",\n '[attr.aria-labelledby]': \"groupId() + '-trigger-' + index()\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tab {\n label = input.required<string>()\n\n protected readonly active = signal(false)\n protected readonly index = signal(0)\n protected readonly groupId = signal('')\n\n setState(index: number, active: boolean, groupId: string): void {\n this.index.set(index)\n this.active.set(active)\n this.groupId.set(groupId)\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n contentChildren,\n effect,\n input,\n model,\n viewChildren,\n} from '@angular/core'\nimport { Tab } from '../tab/tab'\n\nlet nextTabsId = 0\n\n@Component({\n selector: 'gbt-tabs',\n standalone: true,\n imports: [],\n templateUrl: './tabs.html',\n styleUrl: './tabs.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tabs {\n id = input<string>(`gbt-tabs-${++nextTabsId}`)\n\n protected readonly tabs = contentChildren(Tab)\n private readonly triggers = viewChildren<ElementRef<HTMLButtonElement>>('trigger')\n\n activeIndex = model(0)\n\n constructor() {\n effect(() => {\n const tabs = this.tabs()\n const active = this.activeIndex()\n const groupId = this.id()\n tabs.forEach((tab, i) => tab.setState(i, i === active, groupId))\n })\n\n // Self-heals an out-of-range `activeIndex` — e.g. a consumer binds it to\n // a URL query parameter and the stored value no longer matches any tab —\n // instead of leaving every panel hidden and every trigger out of the\n // keyboard tab order with no way to reach the component at all.\n effect(() => {\n const count = this.tabs().length\n if (count === 0) {\n return\n }\n const current = this.activeIndex()\n const clamped = Math.min(Math.max(current, 0), count - 1)\n if (clamped !== current) {\n this.activeIndex.set(clamped)\n }\n })\n }\n\n protected select(index: number): void {\n this.activeIndex.set(index)\n }\n\n protected onKeydown(event: KeyboardEvent, index: number): void {\n const count = this.tabs().length\n if (count === 0) {\n return\n }\n let next: number | null = null\n if (event.key === 'ArrowRight') {\n next = (index + 1) % count\n } else if (event.key === 'ArrowLeft') {\n next = (index - 1 + count) % count\n }\n if (next === null) {\n return\n }\n event.preventDefault()\n this.select(next)\n this.triggers()[next]?.nativeElement.focus()\n }\n}\n","<div class=\"gbt-tabs\">\n <div class=\"gbt-tabs__list\" role=\"tablist\">\n @for (tab of tabs(); track tab; let i = $index) {\n <button\n #trigger\n type=\"button\"\n class=\"gbt-tabs__trigger\"\n [class.gbt-tabs__trigger--active]=\"activeIndex() === i\"\n role=\"tab\"\n [id]=\"id() + '-trigger-' + i\"\n [attr.aria-selected]=\"activeIndex() === i\"\n [attr.aria-controls]=\"id() + '-panel-' + i\"\n [tabIndex]=\"activeIndex() === i ? 0 : -1\"\n (click)=\"select(i)\"\n (keydown)=\"onKeydown($event, i)\"\n >\n {{ tab.label() }}\n </button>\n }\n </div>\n <div class=\"gbt-tabs__panels\">\n <ng-content></ng-content>\n </div>\n</div>\n","export interface Scale<T> {\n map(value: T): number\n invert(pixel: number): T\n readonly domain: [T, T]\n readonly range: [number, number]\n}\n\nexport function linearScale(domain: [number, number], range: [number, number]): Scale<number> {\n const [d0, d1] = domain\n const [r0, r1] = range\n const span = d1 - d0\n\n const ratio = span === 0 ? 0 : (r1 - r0) / span\n return {\n domain,\n range,\n map: (value) => r0 + (value - d0) * ratio,\n invert: (pixel) => (ratio === 0 ? d0 : d0 + (pixel - r0) / ratio),\n }\n}\n\nexport function timeScale(domain: [Date, Date], range: [number, number]): Scale<Date> {\n const numeric = linearScale([domain[0].getTime(), domain[1].getTime()], range)\n return {\n domain,\n range,\n map: (value) => numeric.map(value.getTime()),\n invert: (pixel) => new Date(numeric.invert(pixel)),\n }\n}\n\nexport interface BandScale {\n map(value: string): number\n invert(pixel: number): string | null\n readonly bandwidth: number\n readonly domain: string[]\n readonly range: [number, number]\n}\n\nexport function bandScale(domain: string[], range: [number, number], padding = 0): BandScale {\n const [r0, r1] = range\n const step = domain.length === 0 ? 0 : (r1 - r0) / domain.length\n\n const gutter = Math.min(Math.max(padding, 0), 1)\n const bandwidth = step * (1 - gutter)\n return {\n domain,\n range,\n bandwidth,\n map: (value) => {\n const index = domain.indexOf(value)\n\n return index === -1 ? Number.NaN : r0 + index * step\n },\n invert: (pixel) => {\n if (step === 0) return null\n const index = Math.floor((pixel - r0) / step)\n return index >= 0 && index < domain.length ? domain[index] : null\n },\n }\n}\n","export function niceTicks(min: number, max: number, count: number): number[] {\n if (!Number.isFinite(min) || !Number.isFinite(max)) return []\n\n if (min === max) return [min]\n\n if (max < min) return niceTicks(max, min, count)\n\n const rawStep = (max - min) / Math.max(1, count)\n const magnitude = 10 ** Math.floor(Math.log10(rawStep))\n const normalized = rawStep / magnitude\n const step = magnitude * (normalized <= 1 ? 1 : normalized <= 2 ? 2 : normalized <= 5 ? 5 : 10)\n\n const first = Math.floor(min / step) * step\n const last = Math.ceil(max / step) * step\n\n const decimals = Math.max(0, -Math.floor(Math.log10(step)))\n\n const ticks: number[] = []\n\n for (let value = first; value <= last + step / 1e9; value += step) {\n ticks.push(Number(value.toFixed(decimals)))\n }\n return ticks\n}\n\nexport type TimeUnit = 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'\n\nexport interface TimeTicks {\n readonly values: Date[]\n readonly unit: TimeUnit\n format(date: Date, locale: string): string\n}\n\nconst SECOND = 1000\nconst MINUTE = 60 * SECOND\nconst HOUR = 60 * MINUTE\nconst DAY = 24 * HOUR\n\nconst STEPS: { ms: number; unit: TimeUnit; months?: number }[] = [\n { ms: SECOND, unit: 'second' },\n { ms: 5 * SECOND, unit: 'second' },\n { ms: 15 * SECOND, unit: 'second' },\n { ms: 30 * SECOND, unit: 'second' },\n { ms: MINUTE, unit: 'minute' },\n { ms: 5 * MINUTE, unit: 'minute' },\n { ms: 15 * MINUTE, unit: 'minute' },\n { ms: 30 * MINUTE, unit: 'minute' },\n { ms: HOUR, unit: 'hour' },\n { ms: 3 * HOUR, unit: 'hour' },\n { ms: 6 * HOUR, unit: 'hour' },\n { ms: 12 * HOUR, unit: 'hour' },\n { ms: DAY, unit: 'day' },\n { ms: 2 * DAY, unit: 'day' },\n { ms: 7 * DAY, unit: 'day' },\n { ms: 30 * DAY, unit: 'month', months: 1 },\n { ms: 90 * DAY, unit: 'month', months: 3 },\n { ms: 365 * DAY, unit: 'year', months: 12 },\n]\n\nconst FORMATS: Record<TimeUnit, Intl.DateTimeFormatOptions> = {\n second: { hour: '2-digit', minute: '2-digit', second: '2-digit' },\n minute: { hour: '2-digit', minute: '2-digit' },\n hour: { hour: '2-digit', minute: '2-digit' },\n day: { day: '2-digit', month: '2-digit' },\n month: { month: 'short', year: 'numeric' },\n year: { year: 'numeric' },\n}\n\nconst MIN_PIXELS_PER_TICK = 60\n\nexport function timeTicks(start: Date, end: Date, pixelWidth: number): TimeTicks {\n const span = end.getTime() - start.getTime()\n const makeFormatter = (unit: TimeUnit) => (date: Date, locale: string) =>\n new Intl.DateTimeFormat(locale, { ...FORMATS[unit], timeZone: 'UTC' }).format(date)\n\n if (span <= 0) {\n return { values: [start], unit: 'day', format: makeFormatter('day') }\n }\n\n const maxTicks = Math.max(2, Math.floor(pixelWidth / MIN_PIXELS_PER_TICK))\n\n const coarsest = STEPS[STEPS.length - 1]\n const chosen = STEPS.find((step) => span / step.ms + 1 <= maxTicks) ?? {\n ...coarsest,\n months: coarsest.months! * Math.max(1, Math.ceil((span / coarsest.ms + 1) / maxTicks)),\n }\n\n const values: Date[] = []\n if (chosen.months) {\n const step = chosen.months\n const cursor =\n step >= 12\n ? new Date(Date.UTC(Math.floor(start.getUTCFullYear() / (step / 12)) * (step / 12), 0, 1))\n : new Date(\n Date.UTC(start.getUTCFullYear(), Math.floor(start.getUTCMonth() / step) * step, 1),\n )\n while (cursor.getTime() < start.getTime()) cursor.setUTCMonth(cursor.getUTCMonth() + step)\n while (cursor.getTime() <= end.getTime()) {\n values.push(new Date(cursor))\n cursor.setUTCMonth(cursor.getUTCMonth() + step)\n }\n } else {\n const first = Math.ceil(start.getTime() / chosen.ms) * chosen.ms\n for (let t = first; t <= end.getTime(); t += chosen.ms) {\n values.push(new Date(t))\n }\n }\n\n if (values.length === 0) values.push(start)\n\n return { values, unit: chosen.unit, format: makeFormatter(chosen.unit) }\n}\n","export function formatNumber(value: number, locale: string, decimals?: number): string {\n return new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value)\n}\n\nexport function formatCompact(value: number, locale: string): string {\n return new Intl.NumberFormat(locale, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(value)\n}\n\nexport function formatDuration(ms: number, locale: string): string {\n if (ms < 1000) return `${formatNumber(Math.round(ms), locale)} ms`\n\n const totalSeconds = Math.round(ms / 1000)\n const hours = Math.floor(totalSeconds / 3600)\n const minutes = Math.floor((totalSeconds % 3600) / 60)\n const seconds = totalSeconds % 60\n const num = (value: number) => formatNumber(value, locale)\n\n if (hours > 0) return minutes > 0 ? `${num(hours)} h ${num(minutes)} min` : `${num(hours)} h`\n if (minutes > 0)\n return seconds > 0 ? `${num(minutes)} min ${num(seconds)} s` : `${num(minutes)} min`\n return `${num(seconds)} s`\n}\n\nexport function formatPercent(ratio: number, locale: string, decimals = 0): string {\n return new Intl.NumberFormat(locale, {\n style: 'percent',\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(ratio)\n}\n","export interface Point {\n x: number\n y: number\n}\n\nconst round = (n: number): number => Number(n.toFixed(2))\n\nexport function linePath(points: Point[]): string {\n if (points.length === 0) return ''\n return points\n .map((point, index) => `${index === 0 ? 'M' : 'L'}${round(point.x)},${round(point.y)}`)\n .join('')\n}\n\nexport function areaPath(points: Point[], baseline: number): string {\n if (points.length === 0) return ''\n const last = points[points.length - 1]\n const first = points[0]\n return `${linePath(points)}L${round(last.x)},${round(baseline)}L${round(first.x)},${round(baseline)}Z`\n}\n","export function nearestIndex(sorted: number[], target: number): number {\n if (sorted.length === 0) return -1\n\n let low = 0\n let high = sorted.length - 1\n while (low < high) {\n const mid = (low + high) >> 1\n if (sorted[mid] < target) low = mid + 1\n else high = mid\n }\n\n const previous = low - 1\n if (previous < 0) return low\n return target - sorted[previous] <= sorted[low] - target ? previous : low\n}\n","export const ESTIMATED_CHAR_WIDTH = 6.5\n\nexport const LABEL_GAP = 8\n\nexport function estimateLabelWidth(label: string): number {\n return label.length * ESTIMATED_CHAR_WIDTH\n}\n","import { Injectable, InjectionToken, computed, signal, type Signal } from '@angular/core'\nimport { bandScale, linearScale, timeScale, type BandScale, type Scale } from '../../../primitives'\n\nexport interface ChartMargin {\n top: number\n right: number\n bottom: number\n left: number\n}\n\nexport interface ChartBox {\n readonly width: number\n readonly height: number\n readonly margin: ChartMargin\n readonly innerWidth: number\n readonly innerHeight: number\n}\n\nexport type LinearAxisSpec = { kind: 'linear'; domain: [number, number] }\n\nexport type PointValue = number | Date | string\n\nexport type AxisSpec =\n | LinearAxisSpec\n | { kind: 'time'; domain: [Date, Date] }\n | { kind: 'band'; domain: string[]; padding?: number }\n\nconst EMPTY_BOX: ChartBox = {\n width: 0,\n height: 0,\n margin: { top: 0, right: 0, bottom: 0, left: 0 },\n innerWidth: 0,\n innerHeight: 0,\n}\n\nexport interface ChartReader {\n readonly box: Signal<ChartBox>\n readonly xSpec: Signal<AxisSpec>\n readonly ySpec: Signal<LinearAxisSpec>\n readonly xScale: Signal<Scale<number> | Scale<Date> | BandScale>\n readonly yScale: Signal<Scale<number>>\n readonly activeIndex: Signal<number | null>\n readonly pointValues: Signal<PointValue[]>\n readonly activePosition: Signal<number | null>\n}\n\nexport const CHART_CONTEXT = new InjectionToken<ChartReader>('gbt-chart-context')\n\n@Injectable()\nexport class ChartContext implements ChartReader {\n private readonly _box = signal<ChartBox>(EMPTY_BOX)\n private readonly _xSpec = signal<AxisSpec>({ kind: 'linear', domain: [0, 1] })\n private readonly _ySpec = signal<LinearAxisSpec>({ kind: 'linear', domain: [0, 1] })\n private readonly _activeIndex = signal<number | null>(null)\n private readonly _pointValues = signal<PointValue[]>([])\n\n readonly box = this._box.asReadonly()\n readonly xSpec = this._xSpec.asReadonly()\n readonly ySpec = this._ySpec.asReadonly()\n readonly activeIndex = this._activeIndex.asReadonly()\n readonly pointValues = this._pointValues.asReadonly()\n\n readonly xScale = computed<Scale<number> | Scale<Date> | BandScale>(() => {\n const spec = this._xSpec()\n const range: [number, number] = [0, this._box().innerWidth]\n if (spec.kind === 'time') return timeScale(spec.domain, range)\n if (spec.kind === 'band') return bandScale(spec.domain, range, spec.padding ?? 0)\n return linearScale(spec.domain, range)\n })\n\n readonly yScale = computed<Scale<number>>(() =>\n linearScale(this._ySpec().domain, [this._box().innerHeight, 0]),\n )\n\n readonly pointPositions = computed<number[]>(() => {\n const kind = this._xSpec().kind\n const scale = this.xScale()\n return this._pointValues().map((value) =>\n kind === 'band'\n ? (scale as BandScale).map(value as string) + (scale as BandScale).bandwidth / 2\n : (scale as Scale<number> | Scale<Date>).map(value as never),\n )\n })\n\n readonly activePosition = computed<number | null>(() => {\n const index = this._activeIndex()\n if (index === null) return null\n return this.pointPositions()[index] ?? null\n })\n\n setPointValues(values: PointValue[]): void {\n this._pointValues.set(values)\n }\n\n setGeometry(box: ChartBox): void {\n this._box.set(box)\n }\n\n setSpecs(x: AxisSpec, y: LinearAxisSpec): void {\n this._xSpec.set(x)\n this._ySpec.set(y)\n }\n\n setActiveIndex(index: number | null): void {\n this._activeIndex.set(index)\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport {\n CHART_CONTEXT,\n ChartContext,\n type AxisSpec,\n type ChartMargin,\n type LinearAxisSpec,\n type PointValue,\n} from '../chart-context/chart-context'\nimport { nearestIndex } from '../../../primitives'\n\nconst DEFAULT_MARGIN: ChartMargin = { top: 16, right: 8, bottom: 32, left: 48 }\n\n@Component({\n selector: 'gbt-chart-frame',\n standalone: true,\n imports: [],\n templateUrl: './chart-frame.html',\n styleUrl: './chart-frame.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ChartContext, { provide: CHART_CONTEXT, useExisting: ChartContext }],\n})\nexport class ChartFrame {\n private readonly context = inject(ChartContext)\n\n label = input.required<string>()\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n x = input.required<AxisSpec>()\n y = input.required<LinearAxisSpec>()\n margin = input<Partial<ChartMargin>>({})\n size = input<{ width: number; height: number } | null>(null)\n pointValues = input<PointValue[]>([])\n\n readonly activeIndexChange = output<number | null>()\n\n private readonly surface = viewChild.required<ElementRef<HTMLElement>>('surface')\n private readonly measured = signal<{ width: number; height: number } | null>(null)\n\n protected readonly ready = computed(() => this.context.box().innerWidth > 0)\n\n protected readonly viewBox = computed(() => {\n const b = this.context.box()\n return `0 0 ${b.width} ${b.height}`\n })\n\n protected readonly innerTransform = computed(() => {\n const m = this.context.box().margin\n return `translate(${m.left},${m.top})`\n })\n\n protected readonly activePosition = computed(() => this.context.activePosition())\n protected readonly innerHeight = computed(() => this.context.box().innerHeight)\n\n constructor() {\n effect(() => this.activeIndexChange.emit(this.context.activeIndex()))\n\n effect(() => {\n const margin = { ...DEFAULT_MARGIN, ...this.margin() }\n const size = this.size() ?? this.measured()\n const width = size?.width ?? 0\n const height = size?.height ?? 0\n this.context.setSpecs(this.x(), this.y())\n this.context.setPointValues(this.pointValues())\n this.context.setGeometry({\n width,\n height,\n margin,\n innerWidth: Math.max(0, width - margin.left - margin.right),\n innerHeight: Math.max(0, height - margin.top - margin.bottom),\n })\n })\n\n effect((onCleanup) => {\n if (this.size() || typeof ResizeObserver === 'undefined') return\n\n const element = this.surface().nativeElement\n const observer = new ResizeObserver((entries) => {\n const rect = entries[0]?.contentRect\n if (rect) this.measured.set({ width: rect.width, height: rect.height })\n })\n observer.observe(element)\n onCleanup(() => observer.disconnect())\n })\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const count = this.pointValues().length\n if (count === 0) return\n\n const current = this.context.activeIndex()\n const last = count - 1\n\n switch (event.key) {\n case 'ArrowRight':\n this.context.setActiveIndex(current === null ? 0 : Math.min(last, current + 1))\n break\n case 'ArrowLeft':\n this.context.setActiveIndex(current === null ? last : Math.max(0, current - 1))\n break\n case 'Home':\n this.context.setActiveIndex(0)\n break\n case 'End':\n this.context.setActiveIndex(last)\n break\n case 'Escape':\n this.context.setActiveIndex(null)\n break\n default:\n return\n }\n\n event.preventDefault()\n }\n\n protected onBlur(): void {\n this.context.setActiveIndex(null)\n }\n\n protected onPointerMove(event: PointerEvent | MouseEvent): void {\n const positions = this.context.pointPositions()\n if (positions.length === 0) return\n\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect()\n const local = event.clientX - rect.left - this.context.box().margin.left\n\n this.context.setActiveIndex(nearestIndex(positions, local))\n }\n\n protected onPointerLeave(event: PointerEvent | MouseEvent): void {\n const surface = event.currentTarget as HTMLElement\n if (surface.ownerDocument.activeElement === surface) return\n this.context.setActiveIndex(null)\n }\n}\n","<div class=\"gbt-chart-frame\">\n @if (heading()) {\n <div class=\"gbt-chart-frame__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-chart-frame__title\">{{ heading() }}</h1>\n }\n @case (3) {\n <h3 class=\"gbt-chart-frame__title\">{{ heading() }}</h3>\n }\n @case (4) {\n <h4 class=\"gbt-chart-frame__title\">{{ heading() }}</h4>\n }\n @case (5) {\n <h5 class=\"gbt-chart-frame__title\">{{ heading() }}</h5>\n }\n @case (6) {\n <h6 class=\"gbt-chart-frame__title\">{{ heading() }}</h6>\n }\n @default {\n <h2 class=\"gbt-chart-frame__title\">{{ heading() }}</h2>\n }\n }\n @if (headline()) {\n <p class=\"gbt-chart-frame__headline\">{{ headline() }}</p>\n }\n @if (trend()) {\n <p class=\"gbt-chart-frame__trend\">{{ trend() }}</p>\n }\n </div>\n }\n\n <div\n #surface\n class=\"gbt-chart-frame__surface\"\n [attr.tabindex]=\"ready() && pointValues().length > 0 ? 0 : null\"\n [attr.role]=\"ready() ? 'group' : null\"\n [attr.aria-label]=\"ready() ? label() : null\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerleave)=\"onPointerLeave($event)\"\n >\n @if (ready()) {\n <svg\n class=\"gbt-chart-frame__svg\"\n [attr.viewBox]=\"viewBox()\"\n role=\"presentation\"\n focusable=\"false\"\n >\n <g [attr.transform]=\"innerTransform()\">\n <ng-content select=\"[gbtChartLayer]\" />\n @if (activePosition() !== null) {\n <line\n class=\"gbt-chart-frame__guide\"\n [attr.x1]=\"activePosition()\"\n [attr.x2]=\"activePosition()\"\n y1=\"0\"\n [attr.y2]=\"innerHeight()\"\n aria-hidden=\"true\"\n />\n }\n </g>\n </svg>\n <ng-content select=\"gbt-chart-tooltip\" />\n }\n </div>\n <ng-content select=\"gbt-chart-empty\" />\n <ng-content select=\"gbt-chart-table\" />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n inject,\n input,\n} from '@angular/core'\nimport { CHART_CONTEXT, type ChartReader } from '../chart-context/chart-context'\nimport {\n LABEL_GAP,\n estimateLabelWidth,\n formatCompact,\n niceTicks,\n timeTicks,\n type BandScale,\n type Scale,\n} from '../../../primitives'\n\ninterface Tick {\n key: string\n x: number\n y: number\n label: string\n\n date: string | null\n anchor: 'start' | 'middle' | 'end'\n}\n\n@Component({\n selector: 'g[gbtChartAxis]',\n standalone: true,\n imports: [],\n templateUrl: './chart-axis.html',\n styleUrl: './chart-axis.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.transform]': 'groupTransform()',\n '[attr.axis]': 'axis()',\n 'aria-hidden': 'true',\n },\n})\nexport class ChartAxis {\n private readonly context: ChartReader = inject(CHART_CONTEXT)\n\n axis = input.required<'x' | 'y'>()\n locale = input.required<string>()\n tickCount = input(5)\n format = input<((value: never) => string) | null>(null)\n grid = input(false, { transform: booleanAttribute })\n\n protected readonly groupTransform = computed(() => {\n const box = this.context.box()\n\n return this.axis() === 'x' ? `translate(0,${box.innerHeight})` : 'translate(0,0)'\n })\n\n protected readonly ticks = computed<Tick[]>(() => {\n if (this.axis() === 'y') return this.yTicks()\n const ticks = this.xTicks()\n\n if (this.context.xSpec().kind === 'band') return ticks\n\n const last = ticks.length - 1\n return ticks.map((tick, index) => ({\n ...tick,\n anchor: index === 0 ? 'start' : index === last ? 'end' : 'middle',\n }))\n })\n\n protected readonly gridLines = computed<number[]>(() => {\n if (!this.grid() || this.axis() !== 'y') return []\n return this.yTicks().map((tick) => tick.y - 4)\n })\n\n protected readonly innerWidth = computed(() => this.context.box().innerWidth)\n\n private yTicks(): Tick[] {\n const spec = this.context.ySpec()\n const scale = this.context.yScale()\n const custom = this.format()\n return niceTicks(spec.domain[0], spec.domain[1], this.tickCount()).map((value) => ({\n key: `y-${value}`,\n x: -8,\n y: scale.map(value) + 4,\n label: custom ? custom(value as never) : formatCompact(value, this.locale()),\n date: null,\n anchor: 'end',\n }))\n }\n\n private xTicks(): Tick[] {\n const spec = this.context.xSpec()\n const box = this.context.box()\n const custom = this.format()\n\n if (spec.kind === 'band') {\n const scale = this.context.xScale() as BandScale\n\n const labels = spec.domain.map((category) => (custom ? custom(category as never) : category))\n const step = spec.domain.length === 0 ? 0 : box.innerWidth / spec.domain.length\n const widest = labels.reduce((large, label) => Math.max(large, estimateLabelWidth(label)), 0)\n const keepEvery = Math.max(1, Math.ceil((widest + LABEL_GAP) / Math.max(step, 1)))\n\n return spec.domain\n .map((category, index) => ({\n key: `x-${category}`,\n x: scale.map(category) + scale.bandwidth / 2,\n y: 20,\n label: labels[index],\n date: null,\n anchor: 'middle' as const,\n }))\n .filter((_, index) => index % keepEvery === 0)\n }\n\n if (spec.kind === 'time') {\n const scale = this.context.xScale() as Scale<Date>\n const result = timeTicks(spec.domain[0], spec.domain[1], box.innerWidth)\n\n const fine = result.unit === 'hour' || result.unit === 'minute' || result.unit === 'second'\n const days = new Set(result.values.map((v) => v.toISOString().slice(0, 10)))\n const multiDay = days.size > 1\n const seen = new Set<string>()\n\n return result.values.map((value) => {\n const day = value.toISOString().slice(0, 10)\n\n const first = fine && multiDay && !seen.has(day)\n seen.add(day)\n\n return {\n key: `x-${value.getTime()}`,\n x: scale.map(value),\n y: first ? 14 : 20,\n label: custom ? custom(value as never) : result.format(value, this.locale()),\n date: first\n ? new Intl.DateTimeFormat(this.locale(), {\n day: '2-digit',\n month: '2-digit',\n timeZone: 'UTC',\n }).format(value)\n : null,\n anchor: 'middle',\n }\n })\n }\n\n const scale = this.context.xScale() as Scale<number>\n return niceTicks(spec.domain[0], spec.domain[1], this.tickCount()).map((value) => ({\n key: `x-${value}`,\n x: scale.map(value),\n y: 20,\n label: custom ? custom(value as never) : formatCompact(value, this.locale()),\n date: null,\n anchor: 'middle',\n }))\n }\n}\n","@for (y of gridLines(); track $index) {\n <svg:line\n class=\"gbt-chart-axis__grid\"\n x1=\"0\"\n [attr.x2]=\"innerWidth()\"\n [attr.y1]=\"y\"\n [attr.y2]=\"y\"\n />\n}\n@for (tick of ticks(); track tick.key) {\n <svg:text\n class=\"gbt-chart-axis__label\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"tick.y\"\n [attr.text-anchor]=\"tick.anchor\"\n >\n @if (tick.date) {\n <svg:tspan [attr.x]=\"tick.x\" dy=\"0\">{{ tick.label }}</svg:tspan>\n <svg:tspan [attr.x]=\"tick.x\" dy=\"1.1em\">{{ tick.date }}</svg:tspan>\n } @else {\n {{ tick.label }}\n }\n </svg:text>\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\n\nexport interface TooltipRow {\n label: string\n value: string\n\n series?: 1 | 2 | 3\n\n pattern?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport interface TooltipPoint<X> {\n x: X\n\n header: string\n rows: TooltipRow[]\n}\n\n@Component({\n selector: 'gbt-chart-tooltip',\n standalone: true,\n imports: [],\n templateUrl: './chart-tooltip.html',\n styleUrl: './chart-tooltip.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartTooltip<X> {\n private readonly context = inject(CHART_CONTEXT)\n\n points = input.required<TooltipPoint<X>[]>()\n\n protected readonly active = computed<TooltipPoint<X> | null>(() => {\n const index = this.context.activeIndex()\n if (index === null) return null\n return this.points()[index] ?? null\n })\n\n protected readonly left = computed(() => {\n const position = this.context.activePosition()\n if (position === null) return 0\n return position + this.context.box().margin.left\n })\n\n protected readonly anchor = computed<'start' | 'middle' | 'end'>(() => {\n const index = this.context.activeIndex()\n if (index === null) return 'middle'\n const last = this.context.pointValues().length - 1\n return index === 0 ? 'start' : index === last ? 'end' : 'middle'\n })\n}\n","<div class=\"gbt-chart-tooltip\" role=\"status\" aria-live=\"polite\">\n @if (active(); as point) {\n <div class=\"gbt-chart-tooltip__panel\" [style.left.px]=\"left()\" [attr.data-anchor]=\"anchor()\">\n <p class=\"gbt-chart-tooltip__header\">{{ point.header }}</p>\n <ul class=\"gbt-chart-tooltip__rows\">\n @for (row of point.rows; track $index) {\n <li>\n <span\n class=\"gbt-chart-tooltip__swatch\"\n [attr.data-series]=\"row.series ?? null\"\n [attr.data-pattern]=\"row.pattern ?? 'solid'\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"gbt-chart-tooltip__label\">{{ row.label }}</span>\n <span class=\"gbt-chart-tooltip__value\">{{ row.value }}</span>\n </li>\n }\n </ul>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\nexport interface LegendEntry {\n label: string\n\n pattern?: 'solid' | 'dashed' | 'dotted'\n\n value?: string\n}\n\nconst DASH_ARRAYS: Record<NonNullable<LegendEntry['pattern']>, string> = {\n solid: 'none',\n dashed: '6 3',\n dotted: '1 3',\n}\n\n@Component({\n selector: 'gbt-chart-legend',\n standalone: true,\n imports: [],\n templateUrl: './chart-legend.html',\n styleUrl: './chart-legend.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartLegend {\n entries = input.required<LegendEntry[]>()\n\n protected dashArray(pattern: LegendEntry['pattern']): string {\n return DASH_ARRAYS[pattern ?? 'solid']\n }\n}\n","<ul class=\"gbt-chart-legend\">\n @for (entry of entries(); track $index) {\n <li class=\"gbt-chart-legend__item\" [attr.data-pattern]=\"entry.pattern ?? 'solid'\">\n <svg class=\"gbt-chart-legend__swatch\" viewBox=\"0 0 24 8\" aria-hidden=\"true\" focusable=\"false\">\n <line\n class=\"gbt-chart-legend__line\"\n x1=\"0\"\n y1=\"4\"\n x2=\"24\"\n y2=\"4\"\n [attr.stroke-dasharray]=\"dashArray(entry.pattern)\"\n stroke-width=\"2\"\n />\n </svg>\n {{ entry.label }}\n @if (entry.value; as value) {\n <span class=\"gbt-chart-legend__value\">{{ value }}</span>\n }\n </li>\n }\n</ul>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core'\n\n@Component({\n selector: 'gbt-chart-empty',\n standalone: true,\n imports: [],\n templateUrl: './chart-empty.html',\n styleUrl: './chart-empty.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartEmpty {\n message = input.required<string>()\n actionLabel = input<string>('')\n\n action = output<void>()\n}\n","<div class=\"gbt-chart-empty\" role=\"status\">\n <p class=\"gbt-chart-empty__message\">{{ message() }}</p>\n @if (actionLabel()) {\n <button type=\"button\" class=\"gbt-chart-empty__action\" (click)=\"action.emit()\">\n {{ actionLabel() }}\n </button>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\n@Component({\n selector: 'gbt-chart-table',\n standalone: true,\n imports: [],\n templateUrl: './chart-table.html',\n styleUrl: './chart-table.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartTable {\n caption = input.required<string>()\n columns = input.required<string[]>()\n rows = input.required<(string | number)[][]>()\n}\n","<div class=\"gbt-sr-only\">\n <table>\n <caption>\n {{\n caption()\n }}\n </caption>\n <thead>\n <tr>\n @for (column of columns(); track column) {\n <th scope=\"col\">{{ column }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows(); track $index) {\n <tr>\n @for (cell of row; track $index) {\n <td>{{ cell }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\nimport { areaPath, linePath, type Scale } from '../../../primitives'\nimport type { ChartSeries } from '../chart-data/chart-data'\n\ninterface RenderedSeries {\n label: string\n strokePath: string\n fillPath: string\n\n colorIndex: number\n dashArray: string\n}\n\ninterface ActiveDot {\n x: number\n y: number\n colorIndex: number\n}\n\nconst DASH_ARRAYS: Record<NonNullable<ChartSeries<unknown>['pattern']>, string> = {\n solid: 'none',\n dashed: '6 3',\n dotted: '1 3',\n}\n\nexport const DEFAULT_PATTERNS: NonNullable<ChartSeries<unknown>['pattern']>[] = [\n 'solid',\n 'dashed',\n 'dotted',\n]\n\n@Component({\n selector: 'g[gbtLineSeries]',\n standalone: true,\n imports: [],\n templateUrl: './line-series.html',\n styleUrl: './line-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class LineSeries<X> {\n series = input.required<ChartSeries<X>[]>()\n area = input(false)\n\n private readonly context = inject(CHART_CONTEXT)\n\n protected readonly renderedLines = computed<RenderedSeries[]>(() => {\n const x = this.context.xScale() as Scale<never>\n const y = this.context.yScale()\n\n const base = Math.min(Math.max(y.map(0), 0), this.context.box().innerHeight)\n\n return this.series().map((oneSeries, index) => {\n const points = oneSeries.points.map((p) => ({\n x: x.map(p.x as never),\n y: y.map(p.y),\n }))\n return {\n label: oneSeries.label,\n strokePath: linePath(points),\n fillPath: areaPath(points, base),\n colorIndex: (index % 3) + 1,\n dashArray:\n DASH_ARRAYS[oneSeries.pattern ?? DEFAULT_PATTERNS[index % DEFAULT_PATTERNS.length]],\n }\n })\n })\n\n protected readonly activeDots = computed<ActiveDot[]>(() => {\n const activeIndex = this.context.activeIndex()\n if (activeIndex === null) return []\n const activeXValue = this.context.pointValues()[activeIndex]\n if (activeXValue === undefined) return []\n\n const key = activeXValue instanceof Date ? activeXValue.getTime() : activeXValue\n const x = this.context.xScale() as Scale<never>\n const y = this.context.yScale()\n\n const dots: ActiveDot[] = []\n this.series().forEach((oneSeries, seriesIndex) => {\n const point = oneSeries.points.find(\n (p) => (p.x instanceof Date ? p.x.getTime() : p.x) === key,\n )\n if (point === undefined) return\n dots.push({\n x: x.map(point.x as never),\n y: y.map(point.y),\n colorIndex: (seriesIndex % 3) + 1,\n })\n })\n return dots\n })\n}\n","@for (renderedLine of renderedLines(); track $index) {\n @if (area()) {\n <svg:path\n class=\"gbt-line-series__area\"\n [attr.d]=\"renderedLine.fillPath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n />\n }\n <svg:path\n class=\"gbt-line-series__line\"\n [attr.d]=\"renderedLine.strokePath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n [attr.stroke-dasharray]=\"renderedLine.dashArray\"\n />\n}\n@for (dot of activeDots(); track $index) {\n <svg:circle\n class=\"gbt-line-series__dot\"\n [attr.cx]=\"dot.x\"\n [attr.cy]=\"dot.y\"\n r=\"4\"\n [attr.data-series]=\"dot.colorIndex\"\n />\n}\n","import { niceTicks } from '../../../primitives'\n\nexport interface ChartPoint<X> {\n x: X\n y: number\n\n display?: string\n}\n\nexport interface ChartSeries<X> {\n label: string\n points: ChartPoint<X>[]\n\n pattern?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport interface ChartInterval {\n start: Date\n end: Date\n label: string\n}\n\nconst DAY = 86400000\n\nexport function yDomain<X>(series: ChartSeries<X>[], includeZero: boolean): [number, number] {\n const values = series.flatMap((s) => s.points.map((p) => p.y))\n\n if (values.length === 0) return [0, 1]\n\n let min = Math.min(...values)\n let max = Math.max(...values)\n if (includeZero) {\n min = Math.min(min, 0)\n max = Math.max(max, 0)\n }\n\n if (min === max) return [min, min + 1]\n return [min, max]\n}\n\nexport function numericXDomain(series: ChartSeries<number>[]): [number, number] {\n const values = series.flatMap((s) => s.points.map((p) => p.x))\n if (values.length === 0) return [0, 1]\n const min = Math.min(...values)\n const max = Math.max(...values)\n return min === max ? [min, min + 1] : [min, max]\n}\n\nexport function timeXDomain(series: ChartSeries<Date>[]): [Date, Date] {\n const values = series.flatMap((s) => s.points.map((p) => p.x.getTime()))\n\n if (values.length === 0) return [new Date(-DAY), new Date(0)]\n const min = Math.min(...values)\n const max = Math.max(...values)\n return min === max ? [new Date(min), new Date(min + DAY)] : [new Date(min), new Date(max)]\n}\n\nexport function longestSeriesLength<X>(series: ChartSeries<X>[]): number {\n return series.reduce((longest, s) => Math.max(longest, s.points.length), 0)\n}\n\nexport function niceYDomain<X>(\n series: ChartSeries<X>[],\n includeZero: boolean,\n tickCount: number,\n): [number, number] {\n const [min, max] = yDomain(series, includeZero)\n const ticks = niceTicks(min, max, tickCount)\n\n if (ticks.length === 0) return [min, max]\n return [ticks[0], ticks[ticks.length - 1]]\n}\n\nexport function niceXDomain(series: ChartSeries<number>[], tickCount: number): [number, number] {\n const [min, max] = numericXDomain(series)\n const ticks = niceTicks(min, max, tickCount)\n if (ticks.length === 0) return [min, max]\n return [ticks[0], ticks[ticks.length - 1]]\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n isDevMode,\n signal,\n} from '@angular/core'\nimport { ChartFrame } from '../chart-frame/chart-frame'\nimport { ChartAxis } from '../chart-axis/chart-axis'\nimport { ChartTooltip, type TooltipPoint } from '../chart-tooltip/chart-tooltip'\nimport { ChartLegend, type LegendEntry } from '../chart-legend/chart-legend'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { DEFAULT_PATTERNS, LineSeries } from './line-series'\nimport { formatCompact, formatNumber } from '../../../primitives'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '../chart-context/chart-context'\nimport {\n niceXDomain,\n niceYDomain,\n timeXDomain,\n type ChartPoint,\n type ChartSeries,\n} from '../chart-data/chart-data'\n\nconst MAX_SERIES = 3\n\nconst ABSENT = '—'\n\n@Component({\n selector: 'gbt-line-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartLegend, ChartEmpty, ChartTable, LineSeries],\n templateUrl: './line-chart.html',\n styleUrl: './line-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LineChart<X extends number | Date> {\n series = input.required<ChartSeries<X>[]>()\n xKind = input.required<'linear' | 'time'>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n area = input(false)\n yZero = input(true)\n yTickCount = input(5)\n xTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly hasData = computed(() => this.series().some((s) => s.points.length > 0))\n\n protected readonly xSpec = computed<AxisSpec>(() =>\n this.xKind() === 'time'\n ? { kind: 'time', domain: timeXDomain(this.series() as ChartSeries<Date>[]) }\n : {\n kind: 'linear',\n domain: niceXDomain(this.series() as ChartSeries<number>[], this.xTickCount()),\n },\n )\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n domain: niceYDomain(this.series(), this.yZero(), this.yTickCount()),\n }))\n\n protected readonly legendEntries = computed<LegendEntry[]>(() => {\n const index = this.activeIndex()\n const xValues = this.xValues()\n\n const x = index === null ? xValues[xValues.length - 1] : xValues[index]\n return this.series().map((s, seriesIndex) => ({\n label: s.label,\n\n pattern: s.pattern ?? DEFAULT_PATTERNS[seriesIndex % DEFAULT_PATTERNS.length],\n value: x === undefined ? ABSENT : this.displayValue(s, x),\n }))\n })\n\n protected readonly publicXValues = computed<PointValue[]>(() => this.xValues())\n\n protected readonly tooltipPoints = computed<TooltipPoint<X>[]>(() =>\n this.xValues().map((x) => ({\n x,\n header: this.formatX(x),\n rows: this.series().map((s, index) => ({\n label: s.label,\n value: this.displayValue(s, x),\n series: ((index % 3) + 1) as 1 | 2 | 3,\n pattern: s.pattern ?? DEFAULT_PATTERNS[index % DEFAULT_PATTERNS.length],\n })),\n })),\n )\n\n protected readonly tableColumns = computed(() => [\n this.xColumn(),\n ...this.series().map((s) => s.label),\n ])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.xValues().map((x) => [\n this.formatX(x),\n ...this.series().map((s) => this.displayValue(s, x)),\n ]),\n )\n\n private readonly formatX = (x: X): string =>\n x instanceof Date\n ? new Intl.DateTimeFormat(this.locale(), {\n dateStyle: 'short',\n timeStyle: 'short',\n timeZone: 'UTC',\n }).format(x)\n : formatCompact(x as number, this.locale())\n\n private readonly xValues = computed<X[]>(() => {\n const seen = new Map<number | string, X>()\n for (const oneSeries of this.series()) {\n for (const point of oneSeries.points) {\n seen.set(point.x instanceof Date ? point.x.getTime() : (point.x as number), point.x)\n }\n }\n return [...seen.entries()]\n .sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0))\n .map(([, x]) => x)\n })\n\n private findPoint(oneSeries: ChartSeries<X>, x: X): ChartPoint<X> | null {\n const key = x instanceof Date ? x.getTime() : x\n return oneSeries.points.find((p) => (p.x instanceof Date ? p.x.getTime() : p.x) === key) ?? null\n }\n\n private displayValue(oneSeries: ChartSeries<X>, x: X): string {\n const point = this.findPoint(oneSeries, x)\n if (point === null) return ABSENT\n return point.display ?? formatNumber(point.y, this.locale())\n }\n\n constructor() {\n if (isDevMode()) {\n effect(() => {\n const count = this.series().length\n if (count > MAX_SERIES) {\n console.warn(\n `gbt-line-chart: ${count} series received for ${MAX_SERIES} distinguishable colors. The palette cycles.`,\n )\n }\n })\n }\n }\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n (activeIndexChange)=\"activeIndex.set($event)\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\" [tickCount]=\"xTickCount()\"></svg:g>\n <svg:g gbtLineSeries [series]=\"series()\" [area]=\"area()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n } @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n@if (series().length > 1) {\n <gbt-chart-legend [entries]=\"legendEntries()\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\nimport type { BandScale } from '../../../primitives'\nimport type { ChartSeries } from '../chart-data/chart-data'\n\ninterface RenderedBar {\n category: string\n x: number\n y: number\n width: number\n height: number\n}\n\n@Component({\n selector: 'g[gbtBarSeries]',\n standalone: true,\n imports: [],\n templateUrl: './bar-series.html',\n styleUrl: './bar-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class BarSeries {\n private readonly context = inject(CHART_CONTEXT)\n\n series = input.required<ChartSeries<string>>()\n\n protected readonly activeIndex = computed(() => this.context.activeIndex())\n\n protected readonly bars = computed<RenderedBar[]>(() => {\n const x = this.context.xScale() as BandScale\n const y = this.context.yScale()\n const base = y.map(0)\n\n return this.series().points.map((point) => {\n const top = y.map(point.y)\n return {\n category: point.x,\n x: x.map(point.x),\n\n y: Math.min(top, base),\n width: x.bandwidth,\n height: Math.abs(base - top),\n }\n })\n })\n}\n","@for (bar of bars(); track bar.category) {\n <svg:rect\n class=\"gbt-bar-series__bar\"\n [attr.x]=\"bar.x\"\n [attr.y]=\"bar.y\"\n [attr.width]=\"bar.width\"\n [attr.height]=\"bar.height\"\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n />\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\nimport { ChartFrame } from '../chart-frame/chart-frame'\nimport { ChartAxis } from '../chart-axis/chart-axis'\nimport { ChartTooltip, type TooltipPoint } from '../chart-tooltip/chart-tooltip'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { BarSeries } from './bar-series'\nimport { formatNumber } from '../../../primitives'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '../chart-context/chart-context'\nimport { niceYDomain, type ChartPoint, type ChartSeries } from '../chart-data/chart-data'\n\nconst BAND_PADDING = 0.2\n\n@Component({\n selector: 'gbt-bar-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartEmpty, ChartTable, BarSeries],\n templateUrl: './bar-chart.html',\n styleUrl: './bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChart {\n series = input.required<ChartSeries<string>>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n yTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly hasData = computed(() => this.series().points.length > 0)\n\n protected readonly publicXValues = computed<PointValue[]>(() =>\n this.series().points.map((p) => p.x),\n )\n\n protected readonly xSpec = computed<AxisSpec>(() => ({\n kind: 'band',\n domain: this.series().points.map((p) => p.x),\n padding: BAND_PADDING,\n }))\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n\n domain: niceYDomain([this.series()], true, this.yTickCount()),\n }))\n\n private displayValue(point: ChartPoint<string>): string {\n return point.display ?? formatNumber(point.y, this.locale())\n }\n\n protected readonly tooltipPoints = computed<TooltipPoint<string>[]>(() =>\n this.series().points.map((point) => ({\n x: point.x,\n header: point.x,\n rows: [{ label: this.series().label, value: this.displayValue(point), series: 1 }],\n })),\n )\n\n protected readonly tableColumns = computed(() => [this.xColumn(), this.series().label])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.series().points.map((point) => [point.x, this.displayValue(point)]),\n )\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\"></svg:g>\n <svg:g gbtBarSeries [series]=\"series()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n } @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\nimport { estimateLabelWidth, linePath, type Scale } from '../../../primitives'\nimport type { ChartInterval, ChartSeries } from '../chart-data/chart-data'\n\nconst LABEL_INSET = 4\n\nconst STROKE_WIDTH = 3\nconst STROKE_WIDTH_ACTIVE = 6\n\ninterface RenderedBand {\n label: string\n x: number\n width: number\n\n labeled: boolean\n\n active: boolean\n strokeWidth: number\n}\n\n@Component({\n selector: 'g[gbtTimelineSeries]',\n standalone: true,\n imports: [],\n templateUrl: './timeline-series.html',\n styleUrl: './timeline-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class TimelineSeries {\n series = input.required<ChartSeries<Date>>()\n intervals = input.required<ChartInterval[]>()\n\n private readonly context = inject(CHART_CONTEXT)\n\n protected readonly height = computed(() => this.context.box().innerHeight)\n\n protected readonly strokePath = computed(() => {\n const x = this.context.xScale() as Scale<Date>\n const y = this.context.yScale()\n return linePath(this.series().points.map((p) => ({ x: x.map(p.x), y: y.map(p.y) })))\n })\n\n private readonly activeInstant = computed<number | null>(() => {\n const index = this.context.activeIndex()\n if (index === null) return null\n const value = this.context.pointValues()[index]\n return value instanceof Date ? value.getTime() : null\n })\n\n protected readonly activePoint = computed<{ x: number; y: number } | null>(() => {\n const time = this.activeInstant()\n if (time === null) return null\n const point = this.series().points.find((p) => p.x.getTime() === time)\n if (point === undefined) return null\n const x = this.context.xScale() as Scale<Date>\n const y = this.context.yScale()\n return { x: x.map(point.x), y: y.map(point.y) }\n })\n\n protected readonly bands = computed<RenderedBand[]>(() => {\n const x = this.context.xScale() as Scale<Date>\n const activeTime = this.activeInstant()\n return this.intervals().map((interval) => {\n const start = x.map(interval.start)\n const end = x.map(interval.end)\n const width = Math.max(1, end - start)\n\n const active =\n activeTime !== null &&\n activeTime >= interval.start.getTime() &&\n activeTime <= interval.end.getTime()\n return {\n label: interval.label,\n x: start,\n width,\n\n labeled: LABEL_INSET + estimateLabelWidth(interval.label) <= width,\n active,\n strokeWidth: active ? STROKE_WIDTH_ACTIVE : STROKE_WIDTH,\n }\n })\n })\n}\n","@for (band of bands(); track $index) {\n <svg:rect\n class=\"gbt-timeline-series__band\"\n [attr.x]=\"band.x\"\n y=\"0\"\n [attr.width]=\"band.width\"\n [attr.height]=\"height()\"\n />\n <svg:rect\n class=\"gbt-timeline-series__band-edge\"\n [attr.x]=\"band.x\"\n y=\"0\"\n [attr.width]=\"band.width\"\n [attr.height]=\"band.strokeWidth\"\n [attr.data-active]=\"band.active ? '' : null\"\n />\n @if (band.labeled) {\n <svg:text class=\"gbt-timeline-series__band-label\" [attr.x]=\"band.x + 4\" y=\"14\">\n {{ band.label }}\n </svg:text>\n }\n}\n@if (strokePath(); as d) {\n <svg:path class=\"gbt-timeline-series__line\" [attr.d]=\"d\" />\n}\n@if (activePoint(); as p) {\n <svg:circle class=\"gbt-timeline-series__dot\" [attr.cx]=\"p.x\" [attr.cy]=\"p.y\" r=\"4\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\nimport { ChartFrame } from '../chart-frame/chart-frame'\nimport { ChartAxis } from '../chart-axis/chart-axis'\nimport { ChartTooltip, type TooltipPoint } from '../chart-tooltip/chart-tooltip'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { TimelineSeries } from './timeline-series'\nimport { formatNumber } from '../../../primitives'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '../chart-context/chart-context'\nimport {\n niceYDomain,\n timeXDomain,\n type ChartInterval,\n type ChartPoint,\n type ChartSeries,\n} from '../chart-data/chart-data'\n\n@Component({\n selector: 'gbt-timeline-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartEmpty, ChartTable, TimelineSeries],\n templateUrl: './timeline-chart.html',\n styleUrl: './timeline-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineChart {\n series = input.required<ChartSeries<Date>>()\n intervals = input.required<ChartInterval[]>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n intervalsCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n yZero = input(true)\n yTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly hasData = computed(() => this.series().points.length > 0)\n\n protected readonly publicXValues = computed<PointValue[]>(() =>\n this.series().points.map((p) => p.x),\n )\n\n protected readonly xSpec = computed<AxisSpec>(() => ({\n kind: 'time',\n domain: timeXDomain([this.series()]),\n }))\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n domain: niceYDomain([this.series()], this.yZero(), this.yTickCount()),\n }))\n\n protected readonly tooltipPoints = computed<TooltipPoint<Date>[]>(() =>\n this.series().points.map((point) => ({\n x: point.x,\n header: this.formatInstant(point.x),\n rows: [{ label: this.series().label, value: this.displayValue(point), series: 1 }],\n })),\n )\n\n protected readonly tableColumns = computed(() => [this.xColumn(), this.series().label])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.series().points.map((point) => [this.formatInstant(point.x), this.displayValue(point)]),\n )\n\n protected readonly intervalColumns = computed(() => [\n this.intervalsCaption(),\n `${this.xColumn()} — start`,\n `${this.xColumn()} — end`,\n ])\n\n protected readonly intervalRows = computed<(string | number)[][]>(() =>\n this.intervals().map((interval) => [\n interval.label,\n this.formatInstant(interval.start),\n this.formatInstant(interval.end),\n ]),\n )\n\n private readonly formatInstant = (d: Date): string =>\n new Intl.DateTimeFormat(this.locale(), {\n dateStyle: 'short',\n timeStyle: 'short',\n timeZone: 'UTC',\n }).format(d)\n\n private displayValue(point: ChartPoint<Date>): string {\n return point.display ?? formatNumber(point.y, this.locale())\n }\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\"></svg:g>\n <svg:g gbtTimelineSeries [series]=\"series()\" [intervals]=\"intervals()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n }\n @if (hasData() && intervals().length > 0) {\n <gbt-chart-table\n [caption]=\"intervalsCaption()\"\n [columns]=\"intervalColumns()\"\n [rows]=\"intervalRows()\"\n />\n }\n @if (!hasData()) {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\nimport { ChartEmpty } from '../../organisms/chart-empty/chart-empty'\nimport { ChartTable } from '../../organisms/chart-table/chart-table'\nimport { formatNumber, linePath, linearScale, nearestIndex } from '../../../primitives'\n\nconst MARGIN = 4\n\n@Component({\n selector: 'gbt-sparkline',\n standalone: true,\n imports: [ChartEmpty, ChartTable],\n templateUrl: './sparkline.html',\n styleUrl: './sparkline.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Sparkline {\n values = input.required<number[]>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n yColumn = input.required<string>()\n locale = input.required<string>()\n emptyMessage = input.required<string>()\n width = input(80)\n height = input(24)\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly viewBox = computed(() => `0 0 ${this.width()} ${this.height()}`)\n\n protected readonly columns = computed(() => [this.xColumn(), this.yColumn()])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.values().map((value, index) => [\n formatNumber(index + 1, this.locale()),\n formatNumber(value, this.locale()),\n ]),\n )\n\n private readonly scales = computed(() => {\n const values = this.values()\n const min = Math.min(...values)\n const max = Math.max(...values)\n return {\n x: linearScale([0, Math.max(values.length - 1, 0)], [MARGIN, this.width() - MARGIN]),\n y: linearScale([min, max], [this.height() - MARGIN, MARGIN]),\n }\n })\n\n protected readonly path = computed(() => {\n const values = this.values()\n if (values.length === 0) return null\n const { x, y } = this.scales()\n return linePath(values.map((value, index) => ({ x: x.map(index), y: y.map(value) })))\n })\n\n protected readonly positions = computed<number[]>(() => {\n const { x } = this.scales()\n return this.values().map((_, index) => x.map(index))\n })\n\n protected readonly dot = computed<{ x: number; y: number } | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n const value = this.values()[index]\n if (value === undefined) return null\n const { x, y } = this.scales()\n return { x: x.map(index), y: y.map(value) }\n })\n\n protected readonly tooltip = computed<string | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n const value = this.values()[index]\n if (value === undefined) return null\n return `${this.xColumn()} ${formatNumber(index + 1, this.locale())} — ${this.yColumn()} ${formatNumber(value, this.locale())}`\n })\n\n protected onPointerMove(event: PointerEvent | MouseEvent): void {\n const positions = this.positions()\n if (positions.length === 0) return\n const rect = (event.currentTarget as Element).getBoundingClientRect()\n this.activeIndex.set(nearestIndex(positions, event.clientX - rect.left))\n }\n\n protected onPointerLeave(event: PointerEvent | MouseEvent): void {\n const target = event.currentTarget as Element\n if (target.ownerDocument.activeElement === target) return\n this.activeIndex.set(null)\n }\n\n protected onBlur(): void {\n this.activeIndex.set(null)\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const lastIndex = this.values().length - 1\n if (lastIndex < 0) return\n const current = this.activeIndex()\n switch (event.key) {\n case 'ArrowRight':\n this.activeIndex.set(current === null ? 0 : Math.min(lastIndex, current + 1))\n break\n case 'ArrowLeft':\n this.activeIndex.set(current === null ? lastIndex : Math.max(0, current - 1))\n break\n case 'Home':\n this.activeIndex.set(0)\n break\n case 'End':\n this.activeIndex.set(lastIndex)\n break\n case 'Escape':\n this.activeIndex.set(null)\n break\n default:\n return\n }\n event.preventDefault()\n }\n}\n","@if (path(); as d) {\n <div class=\"gbt-sparkline\" role=\"status\" aria-live=\"polite\">\n <svg\n class=\"gbt-sparkline__svg\"\n [attr.viewBox]=\"viewBox()\"\n [attr.width]=\"width()\"\n [attr.height]=\"height()\"\n tabindex=\"0\"\n role=\"group\"\n [attr.aria-label]=\"tableCaption()\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerleave)=\"onPointerLeave($event)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n >\n <path class=\"gbt-sparkline__line\" [attr.d]=\"d\" />\n @if (dot(); as p) {\n <circle class=\"gbt-sparkline__dot\" [attr.cx]=\"p.x\" [attr.cy]=\"p.y\" r=\"3\" />\n }\n </svg>\n @if (tooltip(); as text) {\n <span class=\"gbt-sparkline__tooltip\">{{ text }}</span>\n }\n </div>\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"columns()\" [rows]=\"tableRows()\" />\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\n\n@Component({\n selector: 'gbt-gauge-bar',\n standalone: true,\n imports: [],\n templateUrl: './gauge-bar.html',\n styleUrl: './gauge-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaugeBar {\n value = input.required<number>()\n max = input.required<number>()\n label = input.required<string>()\n formattedValue = input.required<string>()\n warningLabel = input.required<string>()\n criticalLabel = input.required<string>()\n thresholds = input<{ warning: number; critical: number }>({ warning: 70, critical: 90 })\n\n protected readonly percentage = computed(() => {\n const max = this.max()\n\n if (max <= 0) return 0\n return Math.max(0, Math.min(100, (this.value() / max) * 100))\n })\n\n protected readonly severity = computed<'warning' | 'critical' | null>(() => {\n const percentage = this.percentage()\n const { warning, critical } = this.thresholds()\n if (percentage >= critical) return 'critical'\n if (percentage >= warning) return 'warning'\n return null\n })\n\n protected readonly severityLabel = computed(() => {\n const severity = this.severity()\n if (severity === 'critical') return this.criticalLabel()\n if (severity === 'warning') return this.warningLabel()\n return null\n })\n}\n","<div class=\"gbt-gauge-bar\">\n <div class=\"gbt-gauge-bar__header\">\n <span class=\"gbt-gauge-bar__label\">{{ label() }}</span>\n <span class=\"gbt-gauge-bar__value\">\n {{ formattedValue() }}\n @if (severityLabel(); as tierLabel) {\n <span class=\"gbt-gauge-bar__tier\" [attr.data-tier]=\"severity()\">{{ tierLabel }}</span>\n }\n </span>\n </div>\n <div\n class=\"gbt-gauge-bar__track\"\n role=\"progressbar\"\n [attr.aria-label]=\"label()\"\n [attr.aria-valuenow]=\"percentage()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuetext]=\"formattedValue()\"\n >\n <div\n class=\"gbt-gauge-bar__fill\"\n [attr.data-tier]=\"severity()\"\n [style.width.%]=\"percentage()\"\n ></div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\nimport { ChartEmpty } from '../../organisms/chart-empty/chart-empty'\nimport { formatNumber } from '../../../primitives'\n\nexport interface DimensionRow {\n label: string\n value: number\n\n display?: string\n}\n\ninterface RenderedRow {\n label: string\n formattedValue: string\n\n part: number\n}\n\n@Component({\n selector: 'gbt-dimension-card',\n standalone: true,\n imports: [ChartEmpty],\n templateUrl: './dimension-card.html',\n styleUrl: './dimension-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DimensionCard {\n rows = input.required<DimensionRow[]>()\n caption = input.required<string>()\n labelColumn = input.required<string>()\n valueColumn = input.required<string>()\n emptyMessage = input.required<string>()\n locale = input.required<string>()\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly renderedRows = computed<RenderedRow[]>(() => {\n const rows = this.rows()\n const maxValue = rows.reduce((max, row) => Math.max(max, row.value), 0)\n return rows.map((row) => ({\n label: row.label,\n formattedValue: row.display ?? formatNumber(row.value, this.locale()),\n\n part: maxValue <= 0 ? 0 : (row.value / maxValue) * 100,\n }))\n })\n}\n","@if (rows().length > 0) {\n <table class=\"gbt-dimension-card\">\n <caption>\n {{\n caption()\n }}\n </caption>\n <thead>\n <tr>\n <th scope=\"col\">{{ labelColumn() }}</th>\n <th scope=\"col\">{{ valueColumn() }}</th>\n </tr>\n </thead>\n <tbody>\n @for (row of renderedRows(); track $index) {\n <tr\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n (mouseenter)=\"activeIndex.set($index)\"\n (mouseleave)=\"activeIndex.set(null)\"\n >\n <th scope=\"row\" class=\"gbt-dimension-card__cell\">\n <span\n class=\"gbt-dimension-card__bar\"\n [style.width.%]=\"row.part\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"gbt-dimension-card__label\">{{ row.label }}</span>\n </th>\n <td class=\"gbt-dimension-card__value\">{{ row.formattedValue }}</td>\n </tr>\n }\n </tbody>\n </table>\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\nimport { ChartEmpty } from '../../organisms/chart-empty/chart-empty'\nimport { ChartTable } from '../../organisms/chart-table/chart-table'\nimport { formatNumber, formatPercent } from '../../../primitives'\n\nexport interface FunnelStep {\n label: string\n value: number\n}\n\ninterface RenderedStep {\n label: string\n formattedValue: string\n\n part: number\n\n conversionFromPrevious: string\n}\n\n@Component({\n selector: 'gbt-funnel-chart',\n standalone: true,\n imports: [ChartTable, ChartEmpty],\n templateUrl: './funnel-chart.html',\n styleUrl: './funnel-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FunnelChart {\n steps = input.required<FunnelStep[]>()\n label = input.required<string>()\n locale = input.required<string>()\n emptyMessage = input.required<string>()\n tableCaption = input.required<string>()\n stepColumn = input.required<string>()\n valueColumn = input.required<string>()\n conversionColumn = input.required<string>()\n stepAnnouncement = input.required<(label: string, conversion: string) => string>()\n\n private readonly reference = computed(() => this.steps()[0]?.value ?? 0)\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected onMouseLeave(event: MouseEvent): void {\n const target = event.currentTarget as HTMLElement\n if (target.ownerDocument.activeElement === target) return\n this.activeIndex.set(null)\n }\n\n protected readonly renderedSteps = computed<RenderedStep[]>(() => {\n const reference = this.reference()\n const steps = this.steps()\n return steps.map((step, index) => {\n const previousValue = index === 0 ? step.value : steps[index - 1].value\n return {\n label: step.label,\n formattedValue: formatNumber(step.value, this.locale()),\n\n part: reference <= 0 ? 0 : (step.value / reference) * 100,\n conversionFromPrevious: formatPercent(\n previousValue <= 0 ? 0 : step.value / previousValue,\n this.locale(),\n ),\n }\n })\n })\n\n protected readonly activeStep = computed<RenderedStep | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n return this.renderedSteps()[index] ?? null\n })\n\n protected readonly columns = computed(() => [\n this.stepColumn(),\n this.valueColumn(),\n this.conversionColumn(),\n ])\n\n protected readonly tableRows = computed<(string | number)[][]>(() => {\n const reference = this.reference()\n return this.steps().map((step) => [\n step.label,\n formatNumber(step.value, this.locale()),\n formatPercent(reference <= 0 ? 0 : step.value / reference, this.locale()),\n ])\n })\n}\n","@if (renderedSteps().length > 0) {\n <ol class=\"gbt-funnel-chart\" [attr.aria-label]=\"label()\">\n @for (step of renderedSteps(); track $index) {\n <li\n class=\"gbt-funnel-chart__step\"\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n tabindex=\"0\"\n (mouseenter)=\"activeIndex.set($index)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (focus)=\"activeIndex.set($index)\"\n (blur)=\"activeIndex.set(null)\"\n >\n <div class=\"gbt-funnel-chart__bar\" [style.width.%]=\"step.part\" aria-hidden=\"true\"></div>\n <span class=\"gbt-funnel-chart__label\">{{ step.label }}</span>\n <span class=\"gbt-funnel-chart__value\">{{ step.formattedValue }}</span>\n @if ($index === activeIndex()) {\n <span class=\"gbt-funnel-chart__tip\" aria-hidden=\"true\">{{\n step.conversionFromPrevious\n }}</span>\n }\n </li>\n }\n </ol>\n <div class=\"gbt-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n @if (activeStep(); as step) {\n {{ stepAnnouncement()(step.label, step.conversionFromPrevious) }}\n }\n </div>\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"columns()\" [rows]=\"tableRows()\" />\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n afterNextRender,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\ninterface PopupPosition {\n top: string\n left: string | null\n right: string | null\n}\n\n@Component({\n selector: 'gbt-menu',\n standalone: true,\n imports: [Icon],\n templateUrl: './menu.html',\n styleUrl: './menu.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'onDocumentClick($event)',\n '(focusout)': 'onFocusOut($event)',\n '(window:scroll)': 'updatePosition()',\n '(window:resize)': 'updatePosition()',\n },\n})\nexport class Menu {\n private readonly elementRef = inject(ElementRef<HTMLElement>)\n private readonly injector = inject(Injector)\n\n label = input.required<string>()\n align = input<'start' | 'end'>('start')\n triggerIcon = input<string | null>(null)\n opened = output<void>()\n\n protected readonly open = signal(false)\n protected readonly position = signal<PopupPosition | null>(null)\n\n private readonly trigger = viewChild<ElementRef<HTMLButtonElement>>('trigger')\n private readonly list = viewChild<ElementRef<HTMLElement>>('list')\n\n protected toggle(): void {\n this.open.update((value) => !value)\n if (this.open()) {\n this.updatePosition()\n this.focusAfterRender('first')\n this.opened.emit()\n }\n }\n\n protected close(returnFocus: boolean): void {\n if (!this.open()) return\n this.open.set(false)\n if (returnFocus) {\n this.trigger()?.nativeElement.focus()\n }\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return\n event.preventDefault()\n const target = event.key === 'ArrowUp' ? 'last' : 'first'\n if (!this.open()) {\n this.open.set(true)\n this.updatePosition()\n this.opened.emit()\n }\n this.focusAfterRender(target)\n }\n\n protected onListKeydown(event: KeyboardEvent): void {\n const items = this.items()\n if (items.length === 0) return\n const index = items.indexOf(document.activeElement as HTMLElement)\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this.close(true)\n break\n case 'ArrowDown':\n event.preventDefault()\n this.focus((index + 1) % items.length)\n break\n case 'ArrowUp':\n event.preventDefault()\n this.focus((index - 1 + items.length) % items.length)\n break\n case 'Home':\n event.preventDefault()\n this.focus(0)\n break\n case 'End':\n event.preventDefault()\n this.focus(items.length - 1)\n break\n }\n }\n\n protected onListClick(): void {\n this.close(false)\n }\n\n protected onDocumentClick(event: MouseEvent): void {\n if (this.open() && !this.elementRef.nativeElement.contains(event.target as Node)) {\n this.close(false)\n }\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const target = event.relatedTarget as Node | null\n if (this.open() && !this.elementRef.nativeElement.contains(target)) {\n this.open.set(false)\n }\n }\n\n protected updatePosition(): void {\n if (!this.open()) return\n const trigger = this.trigger()?.nativeElement\n if (!trigger) return\n const rect = trigger.getBoundingClientRect()\n this.position.set(\n this.align() === 'end'\n ? { top: `${rect.bottom + 6}px`, left: null, right: `${window.innerWidth - rect.right}px` }\n : { top: `${rect.bottom + 6}px`, left: `${rect.left}px`, right: null },\n )\n }\n\n private items(): HTMLElement[] {\n const list = this.list()?.nativeElement\n if (!list) return []\n return [...list.querySelectorAll<HTMLElement>('[role=\"menuitem\"]')]\n }\n\n private focus(index: number): void {\n this.items()[index]?.focus()\n }\n\n private focusAfterRender(target: 'first' | 'last'): void {\n afterNextRender(\n () => {\n const items = this.items()\n this.focus(target === 'last' ? items.length - 1 : 0)\n },\n { injector: this.injector },\n )\n }\n}\n","<div class=\"gbt-menu\">\n <button\n #trigger\n type=\"button\"\n class=\"gbt-menu__trigger\"\n [class.gbt-menu__trigger--open]=\"open()\"\n [class.gbt-menu__trigger--icon-only]=\"triggerIcon()\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-label]=\"triggerIcon() ? label() : null\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n @if (triggerIcon(); as icon) {\n <gbt-icon [name]=\"icon\" aria-hidden=\"true\" />\n } @else {\n <span class=\"gbt-menu__label\">{{ label() }}</span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-menu__chevron\" aria-hidden=\"true\" />\n }\n </button>\n\n @if (open() && position(); as pos) {\n <div\n #list\n class=\"gbt-menu__list\"\n role=\"menu\"\n tabindex=\"-1\"\n [attr.aria-label]=\"label()\"\n [style.top]=\"pos.top\"\n [style.left]=\"pos.left\"\n [style.right]=\"pos.right\"\n (keydown)=\"onListKeydown($event)\"\n (click)=\"onListClick()\"\n >\n <ng-content />\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n effect,\n input,\n output,\n} from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { FormControl, ReactiveFormsModule } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\nimport { Select, SelectOption } from '../select/select'\n\nexport const ELLIPSIS = '…' as const\nexport type PaginationItem = number | typeof ELLIPSIS\n\nfunction range(start: number, end: number): number[] {\n return Array.from({ length: end - start + 1 }, (_, i) => start + i)\n}\n\nexport function paginationRange(page: number, pageCount: number, siblingCount: number): PaginationItem[] {\n const totalPageNumbers = siblingCount + 5\n\n if (totalPageNumbers >= pageCount) {\n return range(1, pageCount)\n }\n\n const leftSiblingIndex = Math.max(page - siblingCount, 1)\n const rightSiblingIndex = Math.min(page + siblingCount, pageCount)\n\n const shouldShowLeftDots = leftSiblingIndex > 2\n // -2, not -1: a lone skipped page right before the last one isn't worth an\n // ellipsis — showing that page costs no more room than the \"…\" would.\n const shouldShowRightDots = rightSiblingIndex < pageCount - 2\n\n if (!shouldShowLeftDots && shouldShowRightDots) {\n const leftItemCount = 3 + siblingCount * 2\n return [...range(1, leftItemCount), ELLIPSIS, pageCount]\n }\n\n if (shouldShowLeftDots && !shouldShowRightDots) {\n const rightItemCount = 3 + siblingCount * 2\n return [1, ELLIPSIS, ...range(pageCount - rightItemCount + 1, pageCount)]\n }\n\n return [1, ELLIPSIS, ...range(leftSiblingIndex, rightSiblingIndex), ELLIPSIS, pageCount]\n}\n\n@Component({\n selector: 'gbt-pagination',\n standalone: true,\n imports: [Icon, Select, ReactiveFormsModule],\n templateUrl: './pagination.html',\n styleUrl: './pagination.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Pagination {\n page = input<number>(1)\n pageSize = input<number>(10)\n totalItems = input.required<number>()\n siblingCount = input<number>(1)\n disabled = input(false, { transform: booleanAttribute })\n ariaLabel = input<string>('Pagination')\n previousLabel = input<string>('Previous page')\n nextLabel = input<string>('Next page')\n pageLabel = input<(page: number) => string>((page) => `Page ${page}`)\n\n pageSizeOptions = input<number[]>([])\n pageSizeLabel = input<(size: number) => string>((size) => `${size} / page`)\n pageSizeSelectLabel = input<string>('Rows per page')\n showItemsSummary = input(false, { transform: booleanAttribute })\n itemsSummaryLabel = input<(shown: number, total: number) => string>(\n (shown, total) => `${shown} of ${total} items`,\n )\n\n pageChange = output<number>()\n pageSizeChange = output<number>()\n\n protected readonly ELLIPSIS = ELLIPSIS\n\n protected readonly pageCount = computed(() =>\n Math.max(1, Math.ceil(this.totalItems() / this.pageSize())),\n )\n\n protected readonly items = computed(() =>\n paginationRange(this.page(), this.pageCount(), this.siblingCount()),\n )\n\n protected readonly itemsShown = computed(() => {\n const start = (this.page() - 1) * this.pageSize()\n return Math.max(0, Math.min(this.pageSize(), this.totalItems() - start))\n })\n\n protected readonly itemsSummary = computed(() =>\n this.itemsSummaryLabel()(this.itemsShown(), this.totalItems()),\n )\n\n protected readonly pageSizeSelectOptions = computed<SelectOption<number>[]>(() =>\n this.pageSizeOptions().map((size) => ({ value: size, label: this.pageSizeLabel()(size) })),\n )\n\n protected readonly pageSizeControl = new FormControl<number>(this.pageSize(), {\n nonNullable: true,\n })\n\n constructor() {\n effect(() => {\n const size = this.pageSize()\n if (this.pageSizeControl.value !== size) {\n this.pageSizeControl.setValue(size, { emitEvent: false })\n }\n })\n\n this.pageSizeControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((size) => {\n this.pageSizeChange.emit(size)\n this.pageChange.emit(1)\n })\n\n // Self-heals a stale `page` — e.g. a filter shrinks `totalItems` while\n // the app was sitting on a now out-of-range page — instead of leaving\n // the pager stuck with no page marked current and a live \"previous\"\n // button pointing at a page that no longer exists.\n effect(() => {\n const count = this.pageCount()\n const current = this.page()\n const clamped = Math.min(Math.max(current, 1), count)\n if (clamped !== current) {\n this.pageChange.emit(clamped)\n }\n })\n }\n\n protected goTo(page: number): void {\n if (this.disabled()) return\n const clamped = Math.min(Math.max(page, 1), this.pageCount())\n if (clamped === this.page()) return\n this.pageChange.emit(clamped)\n }\n}\n","<div class=\"gbt-pagination\">\n <div class=\"gbt-pagination__side gbt-pagination__side--start\">\n @if (showItemsSummary()) {\n <span class=\"gbt-pagination__summary\">{{ itemsSummary() }}</span>\n }\n </div>\n\n <nav [attr.aria-label]=\"ariaLabel()\">\n <ul class=\"gbt-pagination__list\">\n <li>\n <button\n type=\"button\"\n class=\"gbt-pagination__nav\"\n [disabled]=\"disabled() || page() <= 1\"\n [attr.aria-label]=\"previousLabel()\"\n (click)=\"goTo(page() - 1)\"\n >\n <gbt-icon name=\"chevron-left\" aria-hidden=\"true\" />\n </button>\n </li>\n @for (item of items(); track $index) {\n @if (item === ELLIPSIS) {\n <li class=\"gbt-pagination__ellipsis\" aria-hidden=\"true\">{{ ELLIPSIS }}</li>\n } @else {\n <li>\n <button\n type=\"button\"\n class=\"gbt-pagination__page\"\n [class.gbt-pagination__page--current]=\"item === page()\"\n [attr.aria-current]=\"item === page() ? 'page' : null\"\n [attr.aria-label]=\"pageLabel()(item)\"\n [disabled]=\"disabled()\"\n (click)=\"goTo(item)\"\n >\n {{ item }}\n </button>\n </li>\n }\n }\n <li>\n <button\n type=\"button\"\n class=\"gbt-pagination__nav\"\n [disabled]=\"disabled() || page() >= pageCount()\"\n [attr.aria-label]=\"nextLabel()\"\n (click)=\"goTo(page() + 1)\"\n >\n <gbt-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </button>\n </li>\n </ul>\n </nav>\n\n <div class=\"gbt-pagination__side gbt-pagination__side--end\">\n @if (pageSizeOptions().length > 0) {\n <gbt-select\n class=\"gbt-pagination__page-size\"\n size=\"sm\"\n [label]=\"pageSizeSelectLabel()\"\n [options]=\"pageSizeSelectOptions()\"\n [disabled]=\"disabled()\"\n [formControl]=\"pageSizeControl\"\n />\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\n@Component({\n selector: 'gbt-breadcrumb',\n standalone: true,\n imports: [],\n templateUrl: './breadcrumb.html',\n styleUrl: './breadcrumb.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Breadcrumb {\n ariaLabel = input.required<string>()\n}\n","<nav [attr.aria-label]=\"ariaLabel()\" class=\"gbt-breadcrumb\">\n <ol class=\"gbt-breadcrumb__list\">\n <ng-content select=\"[breadcrumb-ancestor]\" />\n <li class=\"gbt-breadcrumb__current\" aria-current=\"page\"><ng-content /></li>\n </ol>\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { FormsModule } from '@angular/forms'\nimport { Button } from '../../atoms/button/button'\nimport { GbtInput } from '../../atoms/input/input'\nimport { Modal } from '../modal/modal'\n\n@Component({\n selector: 'gbt-confirm-danger-modal',\n standalone: true,\n imports: [FormsModule, Modal, GbtInput, Button],\n templateUrl: './confirm-danger-modal.html',\n styleUrl: './confirm-danger-modal.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConfirmDangerModal {\n isOpen = input.required<boolean>()\n heading = input.required<string>()\n message = input.required<string>()\n confirmText = input.required<string>()\n confirmInputLabel = input<string>('Type to confirm')\n confirmLabel = input<string>('Confirm')\n cancelLabel = input<string>('Cancel')\n closeLabel = input<string>('Close')\n\n confirmed = output<void>()\n closed = output<void>()\n\n protected readonly typed = signal('')\n protected readonly canConfirm = computed(\n () => this.typed().length > 0 && this.typed() === this.confirmText(),\n )\n\n constructor() {\n // Cleared whenever the modal transitions to closed (Cancel, Escape,\n // backdrop, or the consumer setting isOpen false after a successful\n // confirm) — a later reopen must never show the previous attempt's text.\n effect(() => {\n if (!this.isOpen()) {\n this.typed.set('')\n }\n })\n }\n\n protected confirm(): void {\n if (this.canConfirm()) {\n this.confirmed.emit()\n }\n }\n\n protected cancel(): void {\n this.closed.emit()\n }\n}\n","<gbt-modal\n [isOpen]=\"isOpen()\"\n [heading]=\"heading()\"\n [closeLabel]=\"closeLabel()\"\n (closed)=\"cancel()\"\n>\n <p class=\"gbt-confirm-danger-modal__message\">{{ message() }}</p>\n <gbt-input\n [label]=\"confirmInputLabel()\"\n [ngModel]=\"typed()\"\n (ngModelChange)=\"typed.set($event)\"\n />\n <div class=\"gbt-confirm-danger-modal__actions\">\n <gbt-button variant=\"secondary\" [text]=\"cancelLabel()\" (clicked)=\"cancel()\" />\n <gbt-button\n variant=\"danger\"\n [text]=\"confirmLabel()\"\n [disabled]=\"!canConfirm()\"\n (clicked)=\"confirm()\"\n />\n </div>\n</gbt-modal>\n","import { ChangeDetectionStrategy, Component, OnDestroy, effect, input, output } from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nconst DEFAULT_DURATION_MS = 5000\n\nexport type ToastVariant = 'success' | 'error' | 'warning' | 'info'\n\nexport type ToasterPosition =\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center'\n\nexport interface ToastItem {\n id: string\n variant: ToastVariant\n message: string\n duration?: number\n}\n\nconst ASSERTIVE_VARIANTS: ReadonlySet<ToastVariant> = new Set(['warning', 'error'])\n\nconst VARIANT_ICONS: Record<ToastVariant, string> = {\n success: 'check-circle',\n error: 'alert-circle',\n warning: 'alert-triangle',\n info: 'info',\n}\n\n@Component({\n selector: 'gbt-toaster',\n standalone: true,\n imports: [Icon],\n templateUrl: './toaster.html',\n styleUrl: './toaster.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Toaster implements OnDestroy {\n toasts = input.required<ToastItem[]>()\n position = input<ToasterPosition>('bottom-right')\n closeLabel = input<string>('Close')\n\n dismissed = output<string>()\n\n private readonly timers = new Map<string, ReturnType<typeof setTimeout>>()\n\n constructor() {\n effect(() => {\n const currentIds = new Set(this.toasts().map((toast) => toast.id))\n\n for (const [id, timer] of this.timers) {\n if (!currentIds.has(id)) {\n clearTimeout(timer)\n this.timers.delete(id)\n }\n }\n\n for (const toast of this.toasts()) {\n if (this.timers.has(toast.id)) {\n continue\n }\n const duration = toast.duration ?? DEFAULT_DURATION_MS\n if (!Number.isFinite(duration) || duration <= 0) {\n continue\n }\n this.timers.set(\n toast.id,\n setTimeout(() => {\n this.timers.delete(toast.id)\n this.dismissed.emit(toast.id)\n }, duration),\n )\n }\n })\n }\n\n ngOnDestroy(): void {\n for (const timer of this.timers.values()) {\n clearTimeout(timer)\n }\n this.timers.clear()\n }\n\n protected roleFor(variant: ToastVariant): 'alert' | 'status' {\n return ASSERTIVE_VARIANTS.has(variant) ? 'alert' : 'status'\n }\n\n protected iconFor(variant: ToastVariant): string {\n return VARIANT_ICONS[variant]\n }\n}\n","<div class=\"gbt-toaster\" [attr.data-position]=\"position()\">\n @for (toast of toasts(); track toast.id) {\n <div\n class=\"gbt-toaster__item\"\n [attr.data-variant]=\"toast.variant\"\n [attr.role]=\"roleFor(toast.variant)\"\n aria-atomic=\"true\"\n >\n <span class=\"gbt-toaster__icon\">\n <gbt-icon [name]=\"iconFor(toast.variant)\" aria-hidden=\"true\" />\n </span>\n <p class=\"gbt-toaster__message\">{{ toast.message }}</p>\n <button\n type=\"button\"\n class=\"gbt-toaster__close\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"dismissed.emit(toast.id)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n inject,\n input,\n signal,\n} from '@angular/core'\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right'\n\ninterface TooltipCoords {\n top: number\n left: number\n}\n\nconst SHOW_DELAY_MS = 400\nconst FADE_MS = 120\nconst GAP_PX = 8\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-tooltip',\n standalone: true,\n exportAs: 'gbtTooltip',\n imports: [],\n templateUrl: './tooltip.html',\n styleUrl: './tooltip.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'gbt-tooltip-host',\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'hide()',\n '(focusin)': 'onFocusIn()',\n '(focusout)': 'hide()',\n '(keydown.escape)': 'hide()',\n '(window:scroll)': 'updatePosition()',\n '(window:resize)': 'updatePosition()',\n },\n})\nexport class Tooltip implements OnDestroy {\n private readonly elementRef = inject(ElementRef<HTMLElement>)\n\n text = input.required<string>()\n position = input<TooltipPosition>('top')\n\n readonly tooltipId = `gbt-tooltip-${++nextId}`\n\n protected readonly visible = signal(false)\n protected readonly closing = signal(false)\n protected readonly coords = signal<TooltipCoords | null>(null)\n\n private showTimer: ReturnType<typeof setTimeout> | null = null\n private hideTimer: ReturnType<typeof setTimeout> | null = null\n\n protected onMouseEnter(): void {\n this.showTimer = setTimeout(() => {\n this.showTimer = null\n this.show()\n }, SHOW_DELAY_MS)\n }\n\n protected onFocusIn(): void {\n this.show()\n }\n\n private show(): void {\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer)\n this.hideTimer = null\n }\n this.closing.set(false)\n this.updatePosition()\n this.visible.set(true)\n }\n\n protected updatePosition(): void {\n const rect = this.elementRef.nativeElement.getBoundingClientRect()\n switch (this.position()) {\n case 'top':\n this.coords.set({ top: rect.top - GAP_PX, left: rect.left + rect.width / 2 })\n break\n case 'bottom':\n this.coords.set({ top: rect.bottom + GAP_PX, left: rect.left + rect.width / 2 })\n break\n case 'left':\n this.coords.set({ top: rect.top + rect.height / 2, left: rect.left - GAP_PX })\n break\n case 'right':\n this.coords.set({ top: rect.top + rect.height / 2, left: rect.right + GAP_PX })\n break\n }\n }\n\n protected hide(): void {\n if (this.showTimer !== null) {\n clearTimeout(this.showTimer)\n this.showTimer = null\n }\n if (!this.visible() || this.closing()) return\n this.closing.set(true)\n this.hideTimer = setTimeout(() => {\n this.hideTimer = null\n this.closing.set(false)\n this.visible.set(false)\n }, FADE_MS)\n }\n\n ngOnDestroy(): void {\n if (this.showTimer !== null) {\n clearTimeout(this.showTimer)\n this.showTimer = null\n }\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer)\n this.hideTimer = null\n }\n }\n}\n","<ng-content />\n@if (visible() && coords(); as pos) {\n <span\n class=\"gbt-tooltip__bubble\"\n [class.gbt-tooltip__bubble--leaving]=\"closing()\"\n role=\"tooltip\"\n [id]=\"tooltipId\"\n [attr.data-position]=\"position()\"\n [style.top.px]=\"pos.top\"\n [style.left.px]=\"pos.left\"\n >\n {{ text() }}\n </span>\n}","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nexport interface RadioOption<T = string> {\n value: T\n label: string\n disabled?: boolean\n}\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-radio-group',\n standalone: true,\n imports: [],\n templateUrl: './radio-group.html',\n styleUrl: './radio-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroup),\n multi: true,\n },\n ],\n})\nexport class RadioGroup<T = string> implements ControlValueAccessor {\n id = input<string>(`gbt-radio-group-${++nextId}`)\n label = input.required<string>()\n options = input.required<RadioOption<T>[]>()\n orientation = input<'vertical' | 'horizontal'>('vertical')\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n\n protected readonly selected = signal<T | null>(null)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: T) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: T | null): void {\n this.selected.set(value)\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected isSelected(value: T): boolean {\n return this.selected() === value\n }\n\n protected selectOption(value: T): void {\n this.selected.set(value)\n this.onChange(value)\n this.onTouched()\n }\n}\n","<fieldset\n class=\"gbt-radio-group\"\n [attr.data-orientation]=\"orientation()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n>\n <legend class=\"gbt-radio-group__legend\">{{ label() }}{{ required() ? ' *' : '' }}</legend>\n <div class=\"gbt-radio-group__options\">\n @for (option of options(); track option.value; let i = $index) {\n <label class=\"gbt-radio-group__option\">\n <input\n type=\"radio\"\n [id]=\"id() + '-' + i\"\n [name]=\"id()\"\n [value]=\"option.value\"\n [checked]=\"isSelected(option.value)\"\n [disabled]=\"isDisabled() || !!option.disabled\"\n (change)=\"selectOption(option.value)\"\n />\n <span>{{ option.label }}</span>\n </label>\n }\n </div>\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-radio-group__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</fieldset>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextSwitchId = 0\n\n@Component({\n selector: 'gbt-switch',\n standalone: true,\n templateUrl: './switch.html',\n styleUrl: './switch.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Switch),\n multi: true,\n },\n ],\n})\nexport class Switch implements ControlValueAccessor {\n id = input<string>(`gbt-switch-${++nextSwitchId}`)\n label = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n\n protected readonly checked = signal(false)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: boolean) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: boolean): void {\n this.checked.set(!!value)\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected onToggle(event: Event): void {\n const value = (event.target as HTMLInputElement).checked\n this.checked.set(value)\n this.onChange(value)\n this.onTouched()\n }\n}\n","<label class=\"gbt-switch\" [class.gbt-switch--disabled]=\"isDisabled()\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n class=\"gbt-switch__input\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onToggle($event)\"\n />\n <span class=\"gbt-switch__track\">\n <span class=\"gbt-switch__thumb\"></span>\n </span>\n <span>{{ label() }}</span>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-textarea',\n standalone: true,\n imports: [],\n templateUrl: './textarea.html',\n styleUrl: './textarea.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Textarea),\n multi: true,\n },\n ],\n})\nexport class Textarea implements ControlValueAccessor {\n id = input<string>(`gbt-textarea-${++nextId}`)\n label = input<string>('')\n required = input(false, { transform: booleanAttribute })\n disabled = input(false, { transform: booleanAttribute })\n placeholder = input<string>('')\n errorMessage = input<string | null>(null)\n rows = input(3)\n\n committed = output<string>()\n\n protected readonly value = signal('')\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: string) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: string): void {\n this.value.set(value ?? '')\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLTextAreaElement).value\n this.value.set(value)\n this.onChange(value)\n }\n\n protected onBlur(): void {\n this.onTouched()\n this.committed.emit(this.value())\n }\n}\n","<div class=\"gbt-textarea\">\n @if (label()) {\n <label [for]=\"id()\">{{ label() }}{{ required() ? ' *' : '' }}</label>\n }\n <textarea\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [disabled]=\"isDisabled()\"\n [rows]=\"rows()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n >{{ value() }}</textarea\n >\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-textarea__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { NgTemplateOutlet } from '@angular/common'\nimport { Subscription, isObservable, type Observable } from 'rxjs'\n\nexport type AutocompleteSearchFn<T> = (query: string) => Observable<T[]> | Promise<T[]>\n\nlet nextAutocompleteId = 0\n\n@Component({\n selector: 'gbt-autocomplete',\n standalone: true,\n imports: [NgTemplateOutlet],\n templateUrl: './autocomplete.html',\n styleUrl: './autocomplete.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Autocomplete),\n multi: true,\n },\n ],\n})\nexport class Autocomplete<T = unknown> implements ControlValueAccessor, OnDestroy {\n private readonly elementRef = inject(ElementRef)\n\n id = input<string>(`gbt-autocomplete-${++nextAutocompleteId}`)\n label = input<string>('')\n placeholder = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n search = input.required<AutocompleteSearchFn<T>>()\n displayFn = input<(item: T) => string>((item) => String(item))\n itemTemplate = input<TemplateRef<unknown>>()\n debounceMs = input<number>(300)\n minLength = input<number>(1)\n loadingMessage = input<string>('Searching…')\n noResultsMessage = input<string>('No results')\n searchErrorMessage = input<string>('Search failed')\n resultsAnnouncement = input<(count: number) => string>(\n (count) => `${count} result${count !== 1 ? 's' : ''}`,\n )\n\n itemSelected = output<T>()\n\n protected readonly query = signal('')\n protected readonly open = signal(false)\n protected readonly results = signal<T[]>([])\n protected readonly loading = signal(false)\n protected readonly searchFailed = signal(false)\n protected readonly activeIndex = signal(0)\n protected readonly selectedItem = signal<T | null>(null)\n protected readonly panelStyle = signal<{ top: string; left: string; width: string } | null>(null)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n protected readonly hasNoResults = computed(\n () => this.open() && !this.loading() && !this.searchFailed() && this.results().length === 0,\n )\n\n protected readonly activeOptionId = computed(() =>\n this.open() && this.results().length > 0 ? `${this.id()}-option-${this.activeIndex()}` : null,\n )\n\n private onChange: (value: T | null) => void = () => {}\n private onTouched: () => void = () => {}\n\n private requestSeq = 0\n private debounceHandle?: ReturnType<typeof setTimeout>\n private subscription?: Subscription\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n writeValue(value: T | null): void {\n this.selectedItem.set(value)\n this.query.set(value === null || value === undefined ? '' : this.displayFn()(value))\n }\n\n registerOnChange(fn: (value: T | null) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value\n this.query.set(value)\n this.activeIndex.set(0)\n if (this.selectedItem() !== null) {\n this.selectedItem.set(null)\n this.onChange(null)\n }\n this.scheduleSearch(value)\n }\n\n protected onFocus(): void {\n if (\n this.query().trim().length >= this.minLength() &&\n (this.results().length > 0 || this.searchFailed())\n ) {\n this.open.set(true)\n this.updatePanelPosition()\n }\n }\n\n protected onBlur(): void {\n this.onTouched()\n setTimeout(() => {\n if (!this.elementRef.nativeElement.contains(document.activeElement)) {\n this.open.set(false)\n }\n }, 200)\n }\n\n private scheduleSearch(value: string): void {\n clearTimeout(this.debounceHandle)\n if (value.trim().length < this.minLength()) {\n this.requestSeq++\n this.subscription?.unsubscribe()\n this.open.set(false)\n this.results.set([])\n this.loading.set(false)\n this.searchFailed.set(false)\n return\n }\n this.debounceHandle = setTimeout(() => this.runSearch(value), this.debounceMs())\n }\n\n private runSearch(query: string): void {\n const seq = ++this.requestSeq\n this.subscription?.unsubscribe()\n this.loading.set(true)\n this.searchFailed.set(false)\n this.open.set(true)\n this.updatePanelPosition()\n\n const applyResults = (items: T[]): void => {\n if (seq !== this.requestSeq) return\n this.results.set(items)\n this.loading.set(false)\n this.activeIndex.set(0)\n this.updatePanelPosition()\n }\n const applyError = (): void => {\n if (seq !== this.requestSeq) return\n this.results.set([])\n this.loading.set(false)\n this.searchFailed.set(true)\n this.updatePanelPosition()\n }\n\n const result = this.search()(query)\n if (isObservable(result)) {\n this.subscription = result.subscribe({ next: applyResults, error: applyError })\n } else {\n result.then(applyResults, applyError)\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.open()) {\n return\n }\n const trigger = this.elementRef.nativeElement.querySelector(\n '.gbt-autocomplete__input',\n ) as HTMLElement | null\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n this.panelStyle.set({\n top: `${rect.bottom + 6}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n })\n }\n\n protected selectOption(item: T): void {\n this.selectedItem.set(item)\n this.query.set(this.displayFn()(item))\n this.results.set([])\n this.open.set(false)\n this.onChange(item)\n this.onTouched()\n this.itemSelected.emit(item)\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) {\n return\n }\n if (event.key === 'Escape') {\n if (this.open()) {\n event.preventDefault()\n event.stopPropagation()\n this.open.set(false)\n }\n return\n }\n if (!this.open() || this.results().length === 0) {\n return\n }\n const results = this.results()\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n this.activeIndex.update((i) => Math.min(i + 1, results.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.activeIndex.update((i) => Math.max(i - 1, 0))\n break\n case 'Enter': {\n event.preventDefault()\n const active = results[this.activeIndex()]\n if (active) {\n this.selectOption(active)\n }\n break\n }\n }\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.debounceHandle)\n this.subscription?.unsubscribe()\n }\n}\n","<div class=\"gbt-autocomplete\" [class.gbt-autocomplete--disabled]=\"isDisabled()\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-autocomplete__label\"\n >{{ label() }}{{ required() ? ' *' : '' }}</label\n >\n }\n\n <input\n [id]=\"id()\"\n type=\"text\"\n class=\"gbt-autocomplete__input\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? id() + '-listbox' : null\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [value]=\"query()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n\n @if (open()) {\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\n @if (loading()) {\n {{ loadingMessage() }}\n } @else if (searchFailed()) {\n {{ searchErrorMessage() }}\n } @else {\n {{ resultsAnnouncement()(results().length) }}\n }\n </div>\n }\n\n @if (open() && panelStyle(); as style) {\n <div\n class=\"gbt-autocomplete__panel\"\n [style.top]=\"style.top\"\n [style.left]=\"style.left\"\n [style.width]=\"style.width\"\n (mousedown)=\"$event.preventDefault()\"\n >\n @if (loading()) {\n <div class=\"gbt-autocomplete__state\" role=\"status\">\n <span>{{ loadingMessage() }}</span>\n </div>\n } @else if (searchFailed()) {\n <div class=\"gbt-autocomplete__state gbt-autocomplete__state--error\" role=\"alert\">\n <span>{{ searchErrorMessage() }}</span>\n </div>\n } @else if (hasNoResults()) {\n <div class=\"gbt-autocomplete__state\" role=\"status\">\n <span>{{ noResultsMessage() }}</span>\n </div>\n } @else {\n <ul\n [id]=\"id() + '-listbox'\"\n class=\"gbt-autocomplete__list\"\n role=\"listbox\"\n [attr.aria-label]=\"label() || placeholder()\"\n >\n @for (item of results(); track $index; let i = $index) {\n <li role=\"presentation\">\n <button\n [id]=\"id() + '-option-' + i\"\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n class=\"gbt-autocomplete__option\"\n [class.gbt-autocomplete__option--active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n (click)=\"selectOption(item)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (itemTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"gbt-autocomplete__option-label\">{{ displayFn()(item) }}</span>\n }\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-autocomplete__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","DAY","DASH_ARRAYS"],"mappings":";;;;;;;;;AAAO,MAAM,eAAe,GAAG;;ACAxB,MAAM,cAAc,GAA2B;AACpD,IAAA,MAAM,EAAE,CAAA;AACuB,gCAAA,CAAA;AAC/B,IAAA,CAAC,EAAE,CAAA;AACmB,uBAAA,CAAA;AACtB,IAAA,GAAG,EAAE,CAAA;AAC0B,gCAAA,CAAA;AAC/B,IAAA,SAAS,EAAE,CAAA;;;AAGW,uBAAA,CAAA;AACtB,IAAA,cAAc,EAAE,CAAA,yBAAA,CAA2B;AAC3C,IAAA,cAAc,EAAE,CAAA,2BAAA,CAA6B;AAC7C,IAAA,eAAe,EAAE,CAAA,0BAAA,CAA4B;AAC7C,IAAA,eAAe,EAAE,CAAA;AACS,2BAAA,CAAA;AAC1B,IAAA,gBAAgB,EAAE,CAAA;AACQ,2BAAA,CAAA;AAC1B,IAAA,mBAAmB,EAAE,CAAA;;AAEU,gCAAA,CAAA;AAC/B,IAAA,KAAK,EAAE,CAAA,4BAAA,CAA8B;AACrC,IAAA,cAAc,EAAE,CAAA,2BAAA,CAA6B;AAC7C,IAAA,cAAc,EAAE,CAAA;AACM,uBAAA,CAAA;AACtB,IAAA,gBAAgB,EAAE,CAAA;;AAEI,uBAAA,CAAA;AACtB,IAAA,IAAI,EAAE,CAAA;AACe,sBAAA,CAAA;AACrB,IAAA,UAAU,EAAE,CAAA;AACQ,qBAAA,CAAA;AACpB,IAAA,YAAY,EAAE,CAAA;AACY,2BAAA,CAAA;CAC3B;;MC9BY,YAAY,CAAA;IACN,KAAK,GAAG,IAAI,GAAG,CAAiB,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAEhF,QAAQ,CAAC,IAAY,EAAE,cAAsB,EAAA;QAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC;IACtC;AAEA,IAAA,WAAW,CAAC,KAA6B,EAAA;AACvC,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;QAC9B;IACF;AAEA,IAAA,GAAG,CAAC,IAAY,EAAA;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI;IACrC;uGAfW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA;;2FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCoCrB,IAAI,CAAA;AACE,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAChC,IAAA,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;IAEhD,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAU;AAEZ,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7C,QAAA,OAAO,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,IAAI;IACvE,CAAC;mFAAC;uGATS,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAJ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAI,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhCL;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAkBU,IAAI,EAAA,UAAA,EAAA,CAAA;kBAnChB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;GAcT,EAAA,IAAA,EAaK;AACJ,wBAAA,oBAAoB,EAAE,QAAQ;qBAC/B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,kGAAA,CAAA,EAAA;;;ACxBjD,IAAIA,QAAM,GAAG,CAAC;MAUD,QAAQ,CAAA;IACnB,QAAQ,GAAG,KAAK,CAAC,QAAQ;iFAAU;IACnC,SAAS,GAAG,KAAK,CAAC,QAAQ;kFAAU;IACpC,aAAa,GAAG,KAAK,CAAC,QAAQ;sFAAU;IACxC,cAAc,GAAG,KAAK,CAAC,QAAQ;uFAAU;IACzC,aAAa,GAAG,KAAK,CAAS,EAAE;sFAAC;IACjC,WAAW,GAAG,KAAK,CAAS,EAAE;oFAAC;IAC/B,SAAS,GAAG,KAAK,CAAU,KAAK;kFAAC;IACjC,WAAW,GAAG,KAAK,CAAU,IAAI;oFAAC;IAClC,eAAe,GAAG,MAAM,EAAW;IAElB,EAAE,GAAG,EAAEA,QAAM;AACX,IAAA,MAAM,GAAG,CAAA,mBAAA,EAAsB,IAAI,CAAC,EAAE,EAAE;AACxC,IAAA,KAAK,GAAG,CAAA,kBAAA,EAAqB,IAAI,CAAC,EAAE,EAAE;IAEtC,QAAQ,GAAG,MAAM,CAAC,KAAK;iFAAC;IAExB,SAAS,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;kFAC/D;IAEgB,YAAY,GAAG,SAAS,CAAgC,QAAQ;qFAAC;IACjE,GAAG,GAAG,SAAS,CAA0B,KAAK;4EAAC;IAEtD,UAAU,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,cAAc,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;IACzD;IAEU,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAAE;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IAC5C;IAEU,eAAe,GAAA;QACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9C;IAGU,QAAQ,GAAA;QAChB,IAAI,CAAC,KAAK,EAAE;IACd;AAEU,IAAA,YAAY,CAAC,KAAoB,EAAA;QACzC,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAAE;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,aAAa;AACrC,QAAA,IAAI,CAAC,GAAG;YAAE;QAEV,MAAM,iBAAiB,GAAG,GAAG,CAAC,gBAAgB,CAC5C,2IAA2I,CAC5I;AACD,QAAA,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE;AAEpC,QAAA,MAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5D,IAAI,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,EAAE;YACtD,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,EAAE;YAC7D,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,KAAK,EAAE;QACf;IACF;uGAnEW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,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,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,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,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,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBrB,u1DAyDA,EAAA,MAAA,EAAA,CAAA,6jGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvCY,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKH,QAAQ,EAAA,UAAA,EAAA,CAAA;kBARpB,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,CAAC,EAAA,eAAA,EAGE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,u1DAAA,EAAA,MAAA,EAAA,CAAA,6jGAAA,CAAA,EAAA;AAuB0B,SAAA,CAAA,EAAA,cAAA,EAAA,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,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,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,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,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,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,QAAQ,6DACvB,KAAK,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA;sBAqB9D,YAAY;uBAAC,yBAAyB;;;MEvD5B,MAAM,CAAA;IACjB,OAAO,GAAG,KAAK,CAAqC,SAAS;gFAAC;IAC9D,IAAI,GAAG,KAAK,CAA+B,QAAQ;6EAAC;IACpD,IAAI,GAAG,KAAK,CAAsB,QAAQ;6EAAC;IAC3C,IAAI,GAAG,KAAK,CAAS,EAAE;6EAAC;IACxB,QAAQ,GAAG,KAAK,CAAgB,IAAI;iFAAC;IACrC,SAAS,GAAG,KAAK,CAAgB,IAAI;kFAAC;IACtC,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACvD,YAAY,GAAG,KAAK,CAAS,SAAS;qFAAC;IACvC,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAExD,OAAO,GAAG,MAAM,EAAQ;IAEd,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;uGAjBW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAN,MAAM,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,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,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,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXnB,wiBAiBA,EAAA,MAAA,EAAA,CAAA,q9CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDXY,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKH,MAAM,EAAA,UAAA,EAAA,CAAA;kBARlB,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,CAAC,EAAA,eAAA,EAGE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wiBAAA,EAAA,MAAA,EAAA,CAAA,q9CAAA,CAAA,EAAA;;;MEIpC,KAAK,CAAA;IAChB,OAAO,GAAG,KAAK,CAAe,SAAS;gFAAC;AACxC,IAAA,IAAI,GAAG,KAAK;wFAAU;uGAFX,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAL,KAAK,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECblB,oPAMA,EAAA,MAAA,EAAA,CAAA,qzBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKH,KAAK,EAAA,UAAA,EAAA,CAAA;kBARjB,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,CAAC,EAAA,eAAA,EAGE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,oPAAA,EAAA,MAAA,EAAA,CAAA,qzBAAA,CAAA,EAAA;;;AEXjD;AACA,MAAM,KAAK,GAAG,oBAAoB;AAElC,SAAS,YAAY,CAAC,GAAW,EAAA;IAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACpB,MAAM,IAAI,KAAK,CACb,CAAA,sFAAA,EAAyF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,EAAA,CAAI;AAC9G,YAAA,8FAA8F,CACjG;IACH;IACA,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AAC7B;AAEA,SAAS,gBAAgB,CAAC,KAAa,EAAA;AACrC,IAAA,MAAM,CAAC,GAAG,KAAK,GAAG,GAAG;IACrB,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC;AACtE;AAEA,SAAS,iBAAiB,CAAC,aAAqB,EAAA;AAC9C,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACrD,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACrD,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACrD,OAAO,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;AACnG;AAEA,SAAS,aAAa,CAAC,WAAmB,EAAE,WAAmB,EAAA;AAC7D,IAAA,MAAM,EAAE,GAAG,iBAAiB,CAAC,WAAW,CAAC;AACzC,IAAA,MAAM,EAAE,GAAG,iBAAiB,CAAC,WAAW,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IAC/B,OAAO,CAAC,OAAO,GAAG,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC;AAC3C;AAEA;;;;;;;;;;;;;;;;;AAiBG;AACG,SAAU,oBAAoB,CAAC,aAAqB,EAAA;AACxD,IAAA,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC;IAC9C,MAAM,KAAK,GAAG,QAAQ;IACtB,MAAM,IAAI,GAAG,QAAQ;IACrB,OAAO,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,SAAS,GAAG,SAAS;AACpG;;MC5Ca,GAAG,CAAA;IACd,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAChC,SAAS,GAAG,KAAK,CAAU,KAAK;kFAAC;IACjC,WAAW,GAAG,KAAK,CAAS,QAAQ;oFAAC;IAErC,OAAO,GAAG,MAAM,EAAQ;AAEL,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;kFAAC;AAEvE,IAAA,aAAa,CAAC,KAAiB,EAAA;QACvC,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;uGAZW,GAAG,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAH,GAAG,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZhB,uXAQA,EAAA,MAAA,EAAA,CAAA,woBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDY,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKH,GAAG,EAAA,UAAA,EAAA,CAAA;kBARf,SAAS;+BACE,SAAS,EAAA,UAAA,EACP,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,CAAC,EAAA,eAAA,EAGE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uXAAA,EAAA,MAAA,EAAA,CAAA,woBAAA,CAAA,EAAA;;;MEEpC,UAAU,CAAA;IACrB,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAA0B;IACvD,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAU;IAClC,OAAO,GAAG,KAAK,CAAS,EAAE;gFAAC;uGAHhB,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,8dCZvB,qjIAwEA,EAAA,MAAA,EAAA,CAAA,mgBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FD5Da,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qjIAAA,EAAA,MAAA,EAAA,CAAA,mgBAAA,CAAA,EAAA;;;AEGjD,IAAI,WAAW,GAAG,CAAC;MAkBN,QAAQ,CAAA;AACnB,IAAA,EAAE,GAAG,KAAK,CAAS,CAAA,UAAA,EAAa,EAAE,WAAW,CAAA,CAAE;2EAAC;IAChD,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,IAAI,GAAG,KAAK,CAAgC,MAAM;6EAAC;IACnD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,WAAW,GAAG,KAAK,CAAS,EAAE;oFAAC;IAC/B,YAAY,GAAG,KAAK,CAAgB,IAAI;qFAAC;IACzC,YAAY,GAAG,KAAK,CAAS,KAAK;qFAAC;IAEnC,iBAAiB,GAAG,KAAK,CAAS,eAAe;0FAAC;IAElD,iBAAiB,GAAG,KAAK,CAAS,eAAe;0FAAC;IAElD,SAAS,GAAG,MAAM,EAAU;IAET,KAAK,GAAG,MAAM,CAAC,EAAE;8EAAC;IAClB,eAAe,GAAG,MAAM,CAAC,KAAK;wFAAC;AAC/B,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;QACpB;AACA,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,MAAM,GAAG,UAAU;IACrD,CAAC;sFAAC;IAEe,YAAY,GAAG,MAAM,CAAC,KAAK;qFAAC;AAC1B,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;mFAAC;AAE9E,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;IACnC;AAEU,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtB;IAEU,MAAM,GAAA;QACd,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACnC;IAEU,wBAAwB,GAAA;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC;IACpD;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,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EARR;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,QAAQ,CAAC;AACvC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7BH,2nCAiCA,+pCDfY,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAaH,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAhBpB,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,CAAC,EAAA,eAAA,EAGE,uBAAuB,CAAC,MAAM,EAAA,SAAA,EAEpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC;AACvC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,2nCAAA,EAAA,MAAA,EAAA,CAAA,umCAAA,CAAA,EAAA;;;AEPH,IAAI,YAAY,GAAG,CAAC;MAwBP,MAAM,CAAA;AACA,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD,IAAA,EAAE,GAAG,KAAK,CAAS,CAAA,WAAA,EAAc,EAAE,YAAY,CAAA,CAAE;2EAAC;IAClD,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,IAAI,GAAG,KAAK,CAAc,IAAI;6EAAC;IAC/B,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAqB;IAC7C,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,KAAK,GAAG,KAAK,CAAC,KAAK,6EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACrD,WAAW,GAAG,KAAK,CAAS,SAAS;oFAAC;IACtC,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,YAAY,GAAG,KAAK,CAAgB,IAAI;qFAAC;IACzC,kBAAkB,GAAG,KAAK,CAA4B,CAAC,KAAK,KAAK,CAAA,EAAG,KAAK,CAAA,SAAA,CAAW;2FAAC;IACrF,eAAe,GAAG,KAAK,CAA4B,CAAC,KAAK,KAAK,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE;wFAAC;IAE7D,IAAI,GAAG,MAAM,CAAC,KAAK;6EAAC;AACpB,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC;oFAAC;IACxB,QAAQ,GAAG,MAAM,CAAM,EAAE;iFAAC;IAC1B,UAAU,GAAG,MAAM,CAAsD,IAAI;mFAAC;IAChF,YAAY,GAAG,MAAM,CAAC,KAAK;qFAAC;IAE1B,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,MAAA,CAAQ;gFAAC;IAC9C,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,MAAA,CAAQ;gFAAC;AAC9C,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;mFAAC;AAE9E,IAAA,QAAQ,GAAoC,MAAK,EAAE,CAAC;AACpD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;IACnC;AAEA,IAAA,UAAU,CAAC,KAAqB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAI,KAAa,GAAG,EAAE,CAAC;QAC/D;aAAO;YACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,GAAG,CAAC,KAAU,CAAC,CAAC;QAC9E;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAmC,EAAA;AAClD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEmB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACjD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;wFAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;QAC3B;QACA,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;QAC3B;QACA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/C;AACA,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;IACtB,CAAC;qFAAC;IAEiB,YAAY,GAAG,QAAQ,CACxC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC;qFAC3E;AAED;;;;AAIG;AACgB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,GAAG,GAAa,EAAE;AACxB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1B;AACA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,GAAG,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,MAAA,CAAQ,CAAC;QAChC;AACA,QAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;IAC9C,CAAC;oFAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS;IACrD,CAAC;oFAAC;AAEiB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAC3C,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE,GAAG,IAAI;uFAC5F;AAES,IAAA,UAAU,CAAC,KAAQ,EAAA;QAC3B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;IACxC;IAEU,UAAU,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAClB,IAAI,CAAC,GAAG,CACN,CAAC,EACD,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAC1D,CACF;YACD,IAAI,CAAC,mBAAmB,EAAE;QAC5B;aAAO;YACL,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;IAEU,mBAAmB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YAChB;QACF;AACA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CACzD,sBAAsB,CACD;QACvB,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AACA,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;;;;AAI5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CACzD,oBAAoB,CACC;QACvB,MAAM,YAAY,GAAG;AACnB,cAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM;AAC9D,cAAE,IAAI,CAAC,MAAM;AACf,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAClB,YAAA,GAAG,EAAE,CAAA,EAAG,YAAY,GAAG,CAAC,CAAA,EAAA,CAAI;AAC5B,YAAA,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI;AACtB,YAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI;AACzB,SAAA,CAAC;IACJ;AAEA;;;;;;AAMG;IACO,UAAU,CAAC,KAAQ,EAAE,KAAa,EAAA;AAC1C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB;QACF;AACA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;AACzD,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9B,IAAI,CAAC,gBAAgB,CAAc,qCAAqC,CAAC,CAC1E;;;;AAID,QAAA,MAAM,SAAS,GACb,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;AACxB,YAAA,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,aAAa,CAAc,sBAAsB,CAAC;AACzD,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QACxB,SAAS,EAAE,KAAK,EAAE;IACpB;AAEU,IAAA,YAAY,CAAC,KAAQ,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK;AACjC,kBAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK;AACnC,kBAAE,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;;;YAGnB,IAAI,CAAC,SAAS,EAAE;QAClB;aAAO;YACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;AAEU,IAAA,kBAAkB,CAAC,KAAiB,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxE,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AAChB,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC3E,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,UAAU,EAAE;YACnB;YACA;QACF;AACA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,eAAe,EAAE;AACvB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBACpB,IAAI,CAAC,SAAS,EAAE;gBAChB;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACnE;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClD;AACF,YAAA,KAAK,OAAO;YACZ,KAAK,GAAG,EAAE;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;gBACjC;gBACA;YACF;;IAEJ;uGA3OW,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,YAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,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,SAAA,EAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EARN;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,MAAM,CAAC;AACrC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5CH,m/GA+FA,EAAA,MAAA,EAAA,CAAA,0oGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpEY,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,GAAG,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAmBR,MAAM,EAAA,UAAA,EAAA,CAAA;kBAtBlB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,EAAE,GAAG,CAAC,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,kBAAkB,EAAE,4BAA4B;AAChD,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,iBAAiB,EAAE,uBAAuB;AAC1C,wBAAA,iBAAiB,EAAE,uBAAuB;AAC1C,wBAAA,wBAAwB,EAAE,iBAAiB;qBAC5C,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC;AACrC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,m/GAAA,EAAA,MAAA,EAAA,CAAA,0oGAAA,CAAA,EAAA;;;MExBU,WAAW,CAAA;IACtB,WAAW,GAAG,KAAK,CAAS,EAAE;oFAAC;IAC/B,WAAW,GAAG,KAAK,CAAC,QAAQ;oFAAU;IACtC,iBAAiB,GAAG,KAAK,CAAS,EAAE;0FAAC;IACrC,WAAW,GAAG,KAAK,CAAC,QAAQ;oFAA8B;IAC1D,SAAS,GAAG,KAAK,CAAC,QAAQ;kFAAK;IAC/B,aAAa,GAAG,KAAK,CAAiB,KAAK;sFAAC;IAC5C,SAAS,GAAG,KAAK,CAAS,SAAS;kFAAC;IACpC,cAAc,GAAG,KAAK,CAAS,wBAAwB;uFAAC;IAExD,iBAAiB,GAAG,MAAM,EAAU;IACpC,eAAe,GAAG,MAAM,EAAK;IAC7B,mBAAmB,GAAG,MAAM,EAAkB;;;;;;;AAQ3B,IAAA,aAAa,GAAG,IAAI,WAAW,CAAS,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAClE,IAAA,WAAW,GAAG,IAAI,WAAW,CAAW,IAAI,CAAC;AAEhE,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAE/E,IAAI,CAAC,aAAa,CAAC;aAChB,IAAI,CAAC,kBAAkB,EAAE;AACzB,aAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE3D,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC3E,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE;AAChD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;YAClC;AACF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,eAAe,CAAC,OAAmC,EAAA;AAC3D,QAAA,OAAO,OAAO;IAChB;IAEU,eAAe,GAAA;QACvB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IAChF;uGA5CW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,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,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBxB,2rBAuBA,EAAA,MAAA,EAAA,CAAA,wsBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDRY,mBAAmB,0TAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAK1C,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAA,eAAA,EAGrC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2rBAAA,EAAA,MAAA,EAAA,CAAA,wsBAAA,CAAA,EAAA;;;MEApC,IAAI,CAAA;IACf,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACzD,OAAO,GAAG,KAAK,CAAS,EAAE;gFAAC;IAC3B,IAAI,GAAG,KAAK,CAAS,EAAE;6EAAC;IACxB,YAAY,GAAG,KAAK,CAAwB,CAAC;qFAAC;IAE3B,SAAS,GAAG,QAAQ,CACrC,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,sBAAsB,GAAG,EAAE,CAAC;kFACpE;uGARU,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAJ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAI,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,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,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBjB,wqCAkCA,EAAA,MAAA,EAAA,CAAA,2qBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrBY,IAAI,uEAAE,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;;2FAKrB,IAAI,EAAA,UAAA,EAAA,CAAA;kBARhB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wqCAAA,EAAA,MAAA,EAAA,CAAA,2qBAAA,CAAA,EAAA;;;AELjD,IAAI,cAAc,GAAG,CAAC;MAiBT,QAAQ,CAAA;AACnB,IAAA,EAAE,GAAG,KAAK,CAAS,CAAA,aAAA,EAAgB,EAAE,cAAc,CAAA,CAAE;2EAAC;IACtD,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAErC,OAAO,GAAG,MAAM,CAAC,KAAK;gFAAC;IAEzB,YAAY,GAAG,MAAM,CAAC,KAAK;qFAAC;AAC1B,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;mFAAC;AAE9E,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3B;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;IACnC;AAEU,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;AACxD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;IAClB;uGAlCW,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,cAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,EAAA,SAAA,EARR;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,QAAQ,CAAC;AACvC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BH,qRAUA,EAAA,MAAA,EAAA,CAAA,maAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDkBa,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAfpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EAAA,SAAA,EAEpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC;AACvC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,qRAAA,EAAA,MAAA,EAAA,CAAA,maAAA,CAAA,EAAA;;;MELU,KAAK,CAAA;IAChB,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAW;IAClC,OAAO,GAAG,KAAK,CAAS,EAAE;gFAAC;IAC3B,YAAY,GAAG,KAAK,CAAwB,CAAC;qFAAC;IAC9C,UAAU,GAAG,KAAK,CAAS,OAAO;mFAAC;IAEnC,MAAM,GAAG,MAAM,EAAQ;IAEN,MAAM,GAAG,SAAS,CAA0B,QAAQ;+EAAC;IAE9D,iBAAiB,GAAuB,IAAI;AAEpD,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,aAAmC;AACrE,gBAAA,cAAc,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;YAC5D;AAAO,iBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACjC,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB;AACrC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;gBAC7B,MAAM,CAAC,KAAK,EAAE;YAChB;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE;IACjC;IAGU,QAAQ,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;IACF;AAEU,IAAA,eAAe,CAAC,KAAiB,EAAA;QACzC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa,EAAE;AACxC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;IACF;AAEU,IAAA,eAAe,CAAC,KAAoB,EAAA;AAC5C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YACvB;QACF;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa;QAC3C,IAAI,CAAC,MAAM,EAAE;YACX;QACF;QACA,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,CACvC,2IAA2I,CAC5I;AACD,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B;QACF;AACA,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,EAAE;YACtD,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,EAAE;YAC7D,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,KAAK,EAAE;QACf;IACF;uGAjEW,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAL,KAAK,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBlB,igDAgDA,EAAA,MAAA,EAAA,CAAA,glCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhCY,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKH,KAAK,EAAA,UAAA,EAAA,CAAA;kBARjB,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,CAAC,EAAA,eAAA,EAGE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,igDAAA,EAAA,MAAA,EAAA,CAAA,glCAAA,CAAA,EAAA;ohBAUc,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA;sBAqBpE,YAAY;uBAAC,yBAAyB;;;MElC5B,KAAK,CAAA;IAChB,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAO;IAC5B,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAoB;IAC5C,OAAO,GAAG,KAAK,CAA+B,IAAI;gFAAC;IACnD,YAAY,GAAG,KAAK,CAAS,SAAS;qFAAC;IACvC,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAU;IAClC,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAE7D,QAAQ,GAAG,MAAM,EAAK;AAEZ,IAAA,QAAQ,GAAG,CAAC,KAAa,EAAE,GAAM,KAAa;AACtD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE;AAC/B,QAAA,OAAO,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK;AACzC,IAAA,CAAC;IAES,YAAY,CAAC,KAAoB,EAAE,GAAM,EAAA;AACjD,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QACzB;IACF;IAEU,SAAS,CAAC,GAAM,EAAE,MAAsB,EAAA;QAChD,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;IAC7D;uGAxBW,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,63BChBlB,o3BAgCA,EAAA,MAAA,EAAA,CAAA,k0BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDhBa,KAAK,EAAA,UAAA,EAAA,CAAA;kBAPjB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,o3BAAA,EAAA,MAAA,EAAA,CAAA,k0BAAA,CAAA,EAAA;;;AEOjD,IAAI,eAAe,GAAG,CAAC;MAcV,SAAS,CAAA;AACH,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD,IAAA,EAAE,GAAG,KAAK,CAAS,CAAA,eAAA,EAAkB,EAAE,eAAe,CAAA,CAAE;2EAAC;IACzD,OAAO,GAAG,KAAK,CAAa,IAAI;gFAAC;IACjC,cAAc,GAAG,KAAK,CAAmC,IAAI;uFAAC;IAC9D,WAAW,GAAG,KAAK,CAAS,SAAS;oFAAC;IACtC,SAAS,GAAG,KAAK,CAAS,EAAE;kFAAC;IAC7B,SAAS,GAAG,KAAK,CAAsB,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;kFAAC;AAC9D,IAAA,YAAY,GAAG,KAAK;gGAAwB;IAC5C,iBAAiB,GAAG,KAAK,CAAC,KAAK;0FAAC;IAChC,gBAAgB,GAAG,KAAK,CAAS,YAAY;yFAAC;IAC9C,aAAa,GAAG,KAAK,CAAS,yBAAyB;sFAAC;IACxD,UAAU,GAAG,KAAK,CAAS,cAAc;mFAAC;IAC1C,mBAAmB,GAAG,KAAK,CACzB,CAAC,KAAK,KAAK,CAAA,EAAG,KAAK,CAAA,OAAA,EAAU,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAA,CAAE;4FACtD;IACD,YAAY,GAAG,KAAK,CAAS,UAAU;qFAAC;IACxC,UAAU,GAAG,KAAK,CAAS,QAAQ;mFAAC;IACpC,SAAS,GAAG,KAAK,CAAS,OAAO;kFAAC;IAElC,WAAW,GAAG,MAAM,EAAU;IAC9B,YAAY,GAAG,MAAM,EAAK;IAC1B,KAAK,GAAG,MAAM,EAAQ;IAEH,SAAS,GAAG,MAAM,CAAC,KAAK;kFAAC;IACzB,WAAW,GAAG,MAAM,CAAC,KAAK;oFAAC;IAC3B,WAAW,GAAG,MAAM,CAAC,EAAE;oFAAC;IACxB,WAAW,GAAG,MAAM,CAAC,CAAC;oFAAC;IAEvB,WAAW,GAAG,SAAS,CAA+B,aAAa;oFAAC;IAEtE,sBAAsB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE;+FAAC;AAE9D,IAAA,eAAe,GAAG,QAAQ,CAAM,MAAK;AACtD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,cAAc,EAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC;QACrE;AACA,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;IAC7B,CAAC;wFAAC;IAEiB,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE;oFAAC;IAEhD,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,MAAA,CAAQ;gFAAC;AAEvD,IAAA,SAAS,CAAC,KAAa,EAAA;QAC/B,OAAO,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,MAAA,EAAS,KAAK,EAAE;IACrC;AAEmB,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;AACvD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;AACrC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;QAC/B,IAAI,KAAK,GAAG,CAAC;QACb,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM;AAChC,YAAA,GAAG,QAAQ;AACX,YAAA,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;gBAC1C,IAAI;gBACJ,KAAK,EAAE,KAAK,EAAE;AACd,gBAAA,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC;AACxB,aAAA,CAAC,CAAC;AACJ,SAAA,CAAC,CAAC;IACL,CAAC;8FAAC;AAEiB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;uFAAC;AAEiB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAAE,YAAA,OAAO,IAAI;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;QAE9B,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI;IACrF,CAAC;wFAAC;IAEiB,WAAW,GAAG,QAAQ,CAAC,MACxC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC;oFACvD;AAEkB,IAAA,iBAAiB,GAAG,QAAQ,CAC7C,MAAM,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;0FAChG;AAEkB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,CAAC;qFAAC;AAE3E,IAAA,mBAAmB,CAAC,KAAoB,EAAA;QAChD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE;AAE9C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,UAAU,EAAE;YACjB;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;AACpC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;AAExB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjE;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClD;YACF,KAAK,OAAO,EAAE;gBACZ,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACxC,gBAAA,IAAI,CAAC,MAAM;oBAAE;gBACb,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACrB;YACF;;IAEJ;AAEU,IAAA,kBAAkB,CAAC,KAAiB,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IAC3C;IAEU,UAAU,GAAA;QAClB,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,IAAI,EAAE;AACxC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7B;IAEU,OAAO,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC/D;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACnE,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B;QACF,CAAC,EAAE,GAAG,CAAC;IACT;AAEU,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B;IAEU,OAAO,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QACjB,IAAI,CAAC,WAAW,EAAE;IACpB;AAEU,IAAA,QAAQ,CAAC,IAAO,EAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9E;uGAvKW,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,gBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,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,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,6BAAA,EAAA,gBAAA,EAAA,4BAAA,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,ECnCtB,kzLAuJA,EAAA,MAAA,EAAA,CAAA,mqKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7HY,IAAI,uEAAE,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;;2FASrB,SAAS,EAAA,UAAA,EAAA,CAAA;kBAZrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,WAAW,EAAE,6BAA6B;AAC1C,wBAAA,kBAAkB,EAAE,4BAA4B;AACjD,qBAAA,EAAA,QAAA,EAAA,kzLAAA,EAAA,MAAA,EAAA,CAAA,mqKAAA,CAAA,EAAA;ovDAgCwE,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MElD3E,GAAG,CAAA;IACd,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAEb,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;IACtB,KAAK,GAAG,MAAM,CAAC,CAAC;8EAAC;IACjB,OAAO,GAAG,MAAM,CAAC,EAAE;gFAAC;AAEvC,IAAA,QAAQ,CAAC,KAAa,EAAE,MAAe,EAAE,OAAe,EAAA;AACtD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IAC3B;uGAXW,GAAG,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAH,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,GAAG,uZATJ,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAS1B,GAAG,EAAA,UAAA,EAAA,CAAA;kBAbf,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,MAAM,EAAE,iCAAiC;AACzC,wBAAA,wBAAwB,EAAE,mCAAmC;AAC9D,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;ACFD,IAAI,UAAU,GAAG,CAAC;MAUL,IAAI,CAAA;AACf,IAAA,EAAE,GAAG,KAAK,CAAS,CAAA,SAAA,EAAY,EAAE,UAAU,CAAA,CAAE;2EAAC;IAE3B,IAAI,GAAG,eAAe,CAAC,GAAG;6EAAC;IAC7B,QAAQ,GAAG,YAAY,CAAgC,SAAS;iFAAC;IAElF,WAAW,GAAG,KAAK,CAAC,CAAC;oFAAC;AAEtB,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC;AAClE,QAAA,CAAC,CAAC;;;;;QAMF,MAAM,CAAC,MAAK;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM;AAChC,YAAA,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf;YACF;AACA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;AACzD,YAAA,IAAI,OAAO,KAAK,OAAO,EAAE;AACvB,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;YAC/B;AACF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,MAAM,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7B;IAEU,SAAS,CAAC,KAAoB,EAAE,KAAa,EAAA;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM;AAChC,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;YACf;QACF;QACA,IAAI,IAAI,GAAkB,IAAI;AAC9B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE;YAC9B,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK;QAC5B;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YACpC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK;QACpC;AACA,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB;QACF;QACA,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;IAC9C;uGAtDW,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAJ,IAAI,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,WAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAG2B,GAAG,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzB/C,+uBAwBA,EAAA,MAAA,EAAA,CAAA,4yBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDFa,IAAI,EAAA,UAAA,EAAA,CAAA;kBARhB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+uBAAA,EAAA,MAAA,EAAA,CAAA,4yBAAA,CAAA,EAAA;AAKL,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,GAAG,sEAC2B,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEnB7E,SAAU,WAAW,CAAC,MAAwB,EAAE,KAAuB,EAAA;AAC3E,IAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM;AACvB,IAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK;AACtB,IAAA,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE;AAEpB,IAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI;IAC/C,OAAO;QACL,MAAM;QACN,KAAK;AACL,QAAA,GAAG,EAAE,CAAC,KAAK,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,KAAK;QACzC,MAAM,EAAE,CAAC,KAAK,MAAM,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,KAAK,CAAC;KAClE;AACH;AAEM,SAAU,SAAS,CAAC,MAAoB,EAAE,KAAuB,EAAA;IACrE,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC;IAC9E,OAAO;QACL,MAAM;QACN,KAAK;AACL,QAAA,GAAG,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5C,QAAA,MAAM,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACnD;AACH;AAUM,SAAU,SAAS,CAAC,MAAgB,EAAE,KAAuB,EAAE,OAAO,GAAG,CAAC,EAAA;AAC9E,IAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK;IACtB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,MAAM,CAAC,MAAM;AAEhE,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC;IACrC,OAAO;QACL,MAAM;QACN,KAAK;QACL,SAAS;AACT,QAAA,GAAG,EAAE,CAAC,KAAK,KAAI;YACb,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAEnC,YAAA,OAAO,KAAK,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI;QACtD,CAAC;AACD,QAAA,MAAM,EAAE,CAAC,KAAK,KAAI;YAChB,IAAI,IAAI,KAAK,CAAC;AAAE,gBAAA,OAAO,IAAI;AAC3B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAAE,IAAI,IAAI,CAAC;YAC7C,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;QACnE,CAAC;KACF;AACH;;SC5DgB,SAAS,CAAC,GAAW,EAAE,GAAW,EAAE,KAAa,EAAA;AAC/D,IAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,EAAE;IAE7D,IAAI,GAAG,KAAK,GAAG;QAAE,OAAO,CAAC,GAAG,CAAC;IAE7B,IAAI,GAAG,GAAG,GAAG;QAAE,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;AAEhD,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;AAChD,IAAA,MAAM,SAAS,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACvD,IAAA,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS;AACtC,IAAA,MAAM,IAAI,GAAG,SAAS,IAAI,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAE/F,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI;AAC3C,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI;IAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3D,MAAM,KAAK,GAAa,EAAE;AAE1B,IAAA,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE;AACjE,QAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C;AACA,IAAA,OAAO,KAAK;AACd;AAUA,MAAM,MAAM,GAAG,IAAI;AACnB,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM;AAC1B,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM;AACxB,MAAMC,KAAG,GAAG,EAAE,GAAG,IAAI;AAErB,MAAM,KAAK,GAAsD;AAC/D,IAAA,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9B,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnC,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AACnC,IAAA,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9B,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnC,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AACnC,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IAC1B,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9B,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9B,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;AAC/B,IAAA,EAAE,EAAE,EAAEA,KAAG,EAAE,IAAI,EAAE,KAAK,EAAE;IACxB,EAAE,EAAE,EAAE,CAAC,GAAGA,KAAG,EAAE,IAAI,EAAE,KAAK,EAAE;IAC5B,EAAE,EAAE,EAAE,CAAC,GAAGA,KAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AAC5B,IAAA,EAAE,EAAE,EAAE,EAAE,GAAGA,KAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;AAC1C,IAAA,EAAE,EAAE,EAAE,EAAE,GAAGA,KAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;AAC1C,IAAA,EAAE,EAAE,EAAE,GAAG,GAAGA,KAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;CAC5C;AAED,MAAM,OAAO,GAAiD;AAC5D,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IACjE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IAC9C,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IAC5C,GAAG,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACzC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;AAC1C,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;CAC1B;AAED,MAAM,mBAAmB,GAAG,EAAE;SAEd,SAAS,CAAC,KAAW,EAAE,GAAS,EAAE,UAAkB,EAAA;IAClE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC5C,IAAA,MAAM,aAAa,GAAG,CAAC,IAAc,KAAK,CAAC,IAAU,EAAE,MAAc,KACnE,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAErF,IAAA,IAAI,IAAI,IAAI,CAAC,EAAE;AACb,QAAA,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE;IACvE;AAEA,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI;AACrE,QAAA,GAAG,QAAQ;QACX,MAAM,EAAE,QAAQ,CAAC,MAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC;KACvF;IAED,MAAM,MAAM,GAAW,EAAE;AACzB,IAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM;AAC1B,QAAA,MAAM,MAAM,GACV,IAAI,IAAI;AACN,cAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACzF,cAAE,IAAI,IAAI,CACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CACnF;QACP,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;YAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;QAC1F,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;YACxC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;QACjD;IACF;SAAO;AACL,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE;AAChE,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE;YACtD,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B;IACF;AAEA,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAE3C,IAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC1E;;SC/GgB,YAAY,CAAC,KAAa,EAAE,MAAc,EAAE,QAAiB,EAAA;AAC3E,IAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AACnC,QAAA,qBAAqB,EAAE,QAAQ;AAC/B,QAAA,qBAAqB,EAAE,QAAQ;AAChC,KAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAClB;AAEM,SAAU,aAAa,CAAC,KAAa,EAAE,MAAc,EAAA;AACzD,IAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AACnC,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,qBAAqB,EAAE,CAAC;AACzB,KAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAClB;AAEM,SAAU,cAAc,CAAC,EAAU,EAAE,MAAc,EAAA;IACvD,IAAI,EAAE,GAAG,IAAI;AAAE,QAAA,OAAO,CAAA,EAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK;IAElE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7C,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;AACtD,IAAA,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE;AACjC,IAAA,MAAM,GAAG,GAAG,CAAC,KAAa,KAAK,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC;IAE1D,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,OAAO,GAAG,CAAC,GAAG,CAAA,EAAG,GAAG,CAAC,KAAK,CAAC,CAAA,GAAA,EAAM,GAAG,CAAC,OAAO,CAAC,CAAA,IAAA,CAAM,GAAG,CAAA,EAAG,GAAG,CAAC,KAAK,CAAC,CAAA,EAAA,CAAI;IAC7F,IAAI,OAAO,GAAG,CAAC;QACb,OAAO,OAAO,GAAG,CAAC,GAAG,CAAA,EAAG,GAAG,CAAC,OAAO,CAAC,CAAA,KAAA,EAAQ,GAAG,CAAC,OAAO,CAAC,CAAA,EAAA,CAAI,GAAG,CAAA,EAAG,GAAG,CAAC,OAAO,CAAC,CAAA,IAAA,CAAM;AACtF,IAAA,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI;AAC5B;AAEM,SAAU,aAAa,CAAC,KAAa,EAAE,MAAc,EAAE,QAAQ,GAAG,CAAC,EAAA;AACvE,IAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AACnC,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,qBAAqB,EAAE,QAAQ;AAC/B,QAAA,qBAAqB,EAAE,QAAQ;AAChC,KAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAClB;;AC9BA,MAAM,KAAK,GAAG,CAAC,CAAS,KAAa,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEnD,SAAU,QAAQ,CAAC,MAAe,EAAA;AACtC,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE;AAClC,IAAA,OAAO;AACJ,SAAA,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,CAAA,EAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA,EAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;SACrF,IAAI,CAAC,EAAE,CAAC;AACb;AAEM,SAAU,QAAQ,CAAC,MAAe,EAAE,QAAgB,EAAA;AACxD,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACtC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,IAAA,OAAO,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,QAAQ,CAAC,GAAG;AACxG;;ACnBM,SAAU,YAAY,CAAC,MAAgB,EAAE,MAAc,EAAA;AAC3D,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAElC,IAAI,GAAG,GAAG,CAAC;AACX,IAAA,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AAC5B,IAAA,OAAO,GAAG,GAAG,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC;AAC7B,QAAA,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;AAAE,YAAA,GAAG,GAAG,GAAG,GAAG,CAAC;;YAClC,IAAI,GAAG,GAAG;IACjB;AAEA,IAAA,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC;IACxB,IAAI,QAAQ,GAAG,CAAC;AAAE,QAAA,OAAO,GAAG;IAC5B,OAAO,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,QAAQ,GAAG,GAAG;AAC3E;;ACdO,MAAM,oBAAoB,GAAG,GAAG;AAEhC,MAAM,SAAS,GAAG,CAAC;AAEpB,SAAU,kBAAkB,CAAC,KAAa,EAAA;AAC9C,IAAA,OAAO,KAAK,CAAC,MAAM,GAAG,oBAAoB;AAC5C;;ACqBA,MAAM,SAAS,GAAa;AAC1B,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;AAChD,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,WAAW,EAAE,CAAC;CACf;MAaY,aAAa,GAAG,IAAI,cAAc,CAAc,mBAAmB;MAGnE,YAAY,CAAA;IACN,IAAI,GAAG,MAAM,CAAW,SAAS;6EAAC;AAClC,IAAA,MAAM,GAAG,MAAM,CAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;+EAAC;AAC7D,IAAA,MAAM,GAAG,MAAM,CAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;+EAAC;IACnE,YAAY,GAAG,MAAM,CAAgB,IAAI;qFAAC;IAC1C,YAAY,GAAG,MAAM,CAAe,EAAE;qFAAC;AAE/C,IAAA,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC5B,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAChC,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAChC,IAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC5C,IAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAE5C,IAAA,MAAM,GAAG,QAAQ,CAA0C,MAAK;AACvE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,QAAA,MAAM,KAAK,GAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC;AAC3D,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAC9D,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;AAAE,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QACjF,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;IACxC,CAAC;+EAAC;IAEO,MAAM,GAAG,QAAQ,CAAgB,MACxC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;+EAChE;AAEQ,IAAA,cAAc,GAAG,QAAQ,CAAW,MAAK;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI;AAC/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;AAC3B,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KACnC,IAAI,KAAK;AACP,cAAG,KAAmB,CAAC,GAAG,CAAC,KAAe,CAAC,GAAI,KAAmB,CAAC,SAAS,GAAG;cAC5E,KAAqC,CAAC,GAAG,CAAC,KAAc,CAAC,CAC/D;IACH,CAAC;uFAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAgB,MAAK;AACrD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;QACjC,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;QAC/B,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI;IAC7C,CAAC;uFAAC;AAEF,IAAA,cAAc,CAAC,MAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;IAC/B;AAEA,IAAA,WAAW,CAAC,GAAa,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACpB;IAEA,QAAQ,CAAC,CAAW,EAAE,CAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB;AAEA,IAAA,cAAc,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;uGAxDW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAZ,YAAY,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;AC1BD,MAAM,cAAc,GAAgB,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;MAWlE,UAAU,CAAA;AACJ,IAAA,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC;IAE/C,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAChC,OAAO,GAAG,KAAK,CAAC,EAAE;gFAAC;IACnB,YAAY,GAAG,KAAK,CAAwB,CAAC;qFAAC;IAC9C,QAAQ,GAAG,KAAK,CAAC,EAAE;iFAAC;IACpB,KAAK,GAAG,KAAK,CAAC,EAAE;8EAAC;IACjB,CAAC,GAAG,KAAK,CAAC,QAAQ;0EAAY;IAC9B,CAAC,GAAG,KAAK,CAAC,QAAQ;0EAAkB;IACpC,MAAM,GAAG,KAAK,CAAuB,EAAE;+EAAC;IACxC,IAAI,GAAG,KAAK,CAA2C,IAAI;6EAAC;IAC5D,WAAW,GAAG,KAAK,CAAe,EAAE;oFAAC;IAE5B,iBAAiB,GAAG,MAAM,EAAiB;AAEnC,IAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAA0B,SAAS;gFAAC;IAChE,QAAQ,GAAG,MAAM,CAA2C,IAAI;iFAAC;AAE/D,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,GAAG,CAAC;8EAAC;AAEzD,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QACzC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5B,OAAO,CAAA,IAAA,EAAO,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAA,CAAE;IACrC,CAAC;gFAAC;AAEiB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QAChD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM;QACnC,OAAO,CAAA,UAAA,EAAa,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAA,CAAA,CAAG;IACxC,CAAC;uFAAC;IAEiB,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;uFAAC;AAC9D,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW;oFAAC;AAE/E,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAErE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3C,YAAA,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC;AAC9B,YAAA,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,CAAC;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/C,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;gBACvB,KAAK;gBACL,MAAM;gBACN,MAAM;AACN,gBAAA,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3D,gBAAA,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9D,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;YACnB,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,OAAO,cAAc,KAAK,WAAW;gBAAE;YAE1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa;YAC5C,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;gBAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW;AACpC,gBAAA,IAAI,IAAI;AAAE,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACzE,YAAA,CAAC,CAAC;AACF,YAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;YACzB,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AACxC,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM;QACvC,IAAI,KAAK,KAAK,CAAC;YAAE;QAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC1C,QAAA,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC;AAEtB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,YAAY;gBACf,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC/E;AACF,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC/E;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC9B;AACF,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;gBACjC;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;gBACjC;AACF,YAAA;gBACE;;QAGJ,KAAK,CAAC,cAAc,EAAE;IACxB;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;IACnC;AAEU,IAAA,aAAa,CAAC,KAAgC,EAAA;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC/C,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE;QAE5B,MAAM,IAAI,GAAI,KAAK,CAAC,aAA6B,CAAC,qBAAqB,EAAE;QACzE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;AAExE,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7D;AAEU,IAAA,cAAc,CAAC,KAAgC,EAAA;AACvD,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,aAA4B;AAClD,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,aAAa,KAAK,OAAO;YAAE;AACrD,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;IACnC;uGAlHW,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,iBAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,CAAA,EAAA,EAAA,iBAAA,EAAA,GAAA,EAAA,UAAA,EAAA,GAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,iBAAA,EAAA,GAAA,EAAA,UAAA,EAAA,GAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,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,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAFV,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,8IC/BlF,4nEAsEA,EAAA,MAAA,EAAA,CAAA,05BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDrCa,UAAU,EAAA,UAAA,EAAA,CAAA;kBATtB,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,EAAE,mBAGM,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,EAAA,QAAA,EAAA,4nEAAA,EAAA,MAAA,EAAA,CAAA,05BAAA,CAAA,EAAA;2jCAkBT,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEPrE,SAAS,CAAA;AACH,IAAA,OAAO,GAAgB,MAAM,CAAC,aAAa,CAAC;IAE7D,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAa;IAClC,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;IACjC,SAAS,GAAG,KAAK,CAAC,CAAC;kFAAC;IACpB,MAAM,GAAG,KAAK,CAAoC,IAAI;+EAAC;IACvD,IAAI,GAAG,KAAK,CAAC,KAAK,4EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEjC,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAE9B,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,GAAG,CAAA,YAAA,EAAe,GAAG,CAAC,WAAW,CAAA,CAAA,CAAG,GAAG,gBAAgB;IACnF,CAAC;uFAAC;AAEiB,IAAA,KAAK,GAAG,QAAQ,CAAS,MAAK;AAC/C,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,EAAE;AAC7C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;QAE3B,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,MAAM;AAAE,YAAA,OAAO,KAAK;AAEtD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC7B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;AACjC,YAAA,GAAG,IAAI;YACP,MAAM,EAAE,KAAK,KAAK,CAAC,GAAG,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,QAAQ;AAClE,SAAA,CAAC,CAAC;IACL,CAAC;8EAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAW,MAAK;QACrD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG;AAAE,YAAA,OAAO,EAAE;AAClD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;kFAAC;AAEiB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU;mFAAC;IAErE,MAAM,GAAA;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;YACjF,GAAG,EAAE,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE;YACjB,CAAC,EAAE,CAAC,CAAC;YACL,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YACvB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,KAAc,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5E,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,KAAK;AACd,SAAA,CAAC,CAAC;IACL;IAEQ,MAAM,GAAA;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC9B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAE5B,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAe;AAEhD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,QAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC7F,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;YAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7F,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAElF,OAAO,IAAI,CAAC;iBACT,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,MAAM;gBACzB,GAAG,EAAE,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE;AACpB,gBAAA,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC;AAC5C,gBAAA,CAAC,EAAE,EAAE;AACL,gBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACpB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,QAAiB;AAC1B,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC;QAClD;AAEA,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAiB;YAClD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;AAExE,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;AAC3F,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5E,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;AAC9B,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU;YAE9B,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AACjC,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAE5C,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAChD,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAEb,OAAO;AACL,oBAAA,GAAG,EAAE,CAAA,EAAA,EAAK,KAAK,CAAC,OAAO,EAAE,CAAA,CAAE;AAC3B,oBAAA,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;oBACnB,CAAC,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE;oBAClB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,KAAc,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5E,oBAAA,IAAI,EAAE;0BACF,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AACrC,4BAAA,GAAG,EAAE,SAAS;AACd,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,QAAQ,EAAE,KAAK;AAChB,yBAAA,CAAC,CAAC,MAAM,CAAC,KAAK;AACjB,0BAAE,IAAI;AACR,oBAAA,MAAM,EAAE,QAAQ;iBACjB;AACH,YAAA,CAAC,CAAC;QACJ;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAmB;AACpD,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;YACjF,GAAG,EAAE,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE;AACjB,YAAA,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACnB,YAAA,CAAC,EAAE,EAAE;YACL,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,KAAc,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5E,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,QAAQ;AACjB,SAAA,CAAC,CAAC;IACL;uGAnHW,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,uzBC1CtB,0mBAwBA,EAAA,MAAA,EAAA,CAAA,+KAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDkBa,SAAS,EAAA,UAAA,EAAA,CAAA;kBAbrB,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,EAAE,mBAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,kBAAkB,EAAE,kBAAkB;AACtC,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,aAAa,EAAE,MAAM;AACtB,qBAAA,EAAA,QAAA,EAAA,0mBAAA,EAAA,MAAA,EAAA,CAAA,+KAAA,CAAA,EAAA;;;MEbU,YAAY,CAAA;AACN,IAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;IAEhD,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAqB;AAEzB,IAAA,MAAM,GAAG,QAAQ,CAAyB,MAAK;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;QACxC,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;QAC/B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI;IACrC,CAAC;+EAAC;AAEiB,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;QAC9C,IAAI,QAAQ,KAAK,IAAI;AAAE,YAAA,OAAO,CAAC;AAC/B,QAAA,OAAO,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;IAClD,CAAC;6EAAC;AAEiB,IAAA,MAAM,GAAG,QAAQ,CAA6B,MAAK;QACpE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;QACxC,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,QAAQ;AACnC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC;QAClD,OAAO,KAAK,KAAK,CAAC,GAAG,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,QAAQ;IAClE,CAAC;+EAAC;uGAtBS,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,mNC3BzB,y1BAqBA,EAAA,MAAA,EAAA,CAAA,6xCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDMa,YAAY,EAAA,UAAA,EAAA,CAAA;kBARxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,y1BAAA,EAAA,MAAA,EAAA,CAAA,6xCAAA,CAAA,EAAA;;;AEfjD,MAAMC,aAAW,GAAwD;AACvE,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,MAAM,EAAE,KAAK;CACd;MAUY,WAAW,CAAA;IACtB,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAiB;AAE/B,IAAA,SAAS,CAAC,OAA+B,EAAA;AACjD,QAAA,OAAOA,aAAW,CAAC,OAAO,IAAI,OAAO,CAAC;IACxC;uGALW,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,qNCxBxB,gsBAqBA,EAAA,MAAA,EAAA,CAAA,+rBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDGa,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAChB,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gsBAAA,EAAA,MAAA,EAAA,CAAA,+rBAAA,CAAA,EAAA;;;MEZpC,UAAU,CAAA;IACrB,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAU;IAClC,WAAW,GAAG,KAAK,CAAS,EAAE;oFAAC;IAE/B,MAAM,GAAG,MAAM,EAAQ;uGAJZ,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,6XCVvB,0RAQA,EAAA,MAAA,EAAA,CAAA,wmBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDEa,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0RAAA,EAAA,MAAA,EAAA,CAAA,wmBAAA,CAAA,EAAA;;;MEEpC,UAAU,CAAA;IACrB,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAU;IAClC,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAY;IACpC,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAyB;uGAHnC,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,qcCVvB,+eAyBA,EAAA,MAAA,EAAA,CAAA,+IAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDfa,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+eAAA,EAAA,MAAA,EAAA,CAAA,+IAAA,CAAA,EAAA;;;AEYjD,MAAM,WAAW,GAAiE;AAChF,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,MAAM,EAAE,KAAK;CACd;AAEM,MAAM,gBAAgB,GAAmD;IAC9E,OAAO;IACP,QAAQ;IACR,QAAQ;CACT;MAWY,UAAU,CAAA;IACrB,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAoB;IAC3C,IAAI,GAAG,KAAK,CAAC,KAAK;6EAAC;AAEF,IAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AAE7B,IAAA,aAAa,GAAG,QAAQ,CAAmB,MAAK;QACjE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAkB;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAE/B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;AAE5E,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,KAAI;AAC5C,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;gBAC1C,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAU,CAAC;gBACtB,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,aAAA,CAAC,CAAC;YACH,OAAO;gBACL,KAAK,EAAE,SAAS,CAAC,KAAK;AACtB,gBAAA,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC5B,gBAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;AAChC,gBAAA,UAAU,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC;AAC3B,gBAAA,SAAS,EACP,WAAW,CAAC,SAAS,CAAC,OAAO,IAAI,gBAAgB,CAAC,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;aACtF;AACH,QAAA,CAAC,CAAC;IACJ,CAAC;sFAAC;AAEiB,IAAA,UAAU,GAAG,QAAQ,CAAc,MAAK;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;QAC9C,IAAI,WAAW,KAAK,IAAI;AAAE,YAAA,OAAO,EAAE;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC;QAC5D,IAAI,YAAY,KAAK,SAAS;AAAE,YAAA,OAAO,EAAE;AAEzC,QAAA,MAAM,GAAG,GAAG,YAAY,YAAY,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,YAAY;QAChF,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAkB;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QAE/B,MAAM,IAAI,GAAgB,EAAE;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,WAAW,KAAI;AAC/C,YAAA,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CACjC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAC3D;YACD,IAAI,KAAK,KAAK,SAAS;gBAAE;YACzB,IAAI,CAAC,IAAI,CAAC;gBACR,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAU,CAAC;gBAC1B,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACjB,gBAAA,UAAU,EAAE,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC;AAClC,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACb,CAAC;mFAAC;uGAnDS,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,wXCzCvB,kpBAwBA,EAAA,MAAA,EAAA,CAAA,+3BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDiBa,UAAU,EAAA,UAAA,EAAA,CAAA;kBATtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,aAAa,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,kpBAAA,EAAA,MAAA,EAAA,CAAA,+3BAAA,CAAA,EAAA;;;AEjBjC,MAAM,GAAG,GAAG,QAAQ;AAEd,SAAU,OAAO,CAAI,MAAwB,EAAE,WAAoB,EAAA;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9D,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAEtC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC7B,IAAI,WAAW,EAAE;QACf,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACtB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACxB;IAEA,IAAI,GAAG,KAAK,GAAG;AAAE,QAAA,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;AACtC,IAAA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACnB;AAEM,SAAU,cAAc,CAAC,MAA6B,EAAA;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC/B,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAClD;AAEM,SAAU,WAAW,CAAC,MAA2B,EAAA;AACrD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAExE,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AAC/B,IAAA,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5F;AAEM,SAAU,mBAAmB,CAAI,MAAwB,EAAA;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7E;SAEgB,WAAW,CACzB,MAAwB,EACxB,WAAoB,EACpB,SAAiB,EAAA;AAEjB,IAAA,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC;IAC/C,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC;AAE5C,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACzC,IAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5C;AAEM,SAAU,WAAW,CAAC,MAA6B,EAAE,SAAiB,EAAA;IAC1E,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;IACzC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC;AAC5C,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACzC,IAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5C;;ACpDA,MAAM,UAAU,GAAG,CAAC;AAEpB,MAAM,MAAM,GAAG,GAAG;MAUL,SAAS,CAAA;IACpB,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAoB;IAC3C,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAqB;IAC3C,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;IACjC,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAChC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAU;IAClC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,IAAI,GAAG,KAAK,CAAC,KAAK;6EAAC;IACnB,KAAK,GAAG,KAAK,CAAC,IAAI;8EAAC;IACnB,UAAU,GAAG,KAAK,CAAC,CAAC;mFAAC;IACrB,UAAU,GAAG,KAAK,CAAC,CAAC;mFAAC;IACrB,IAAI,GAAG,KAAK,CAA2C,IAAI;6EAAC;IAC5D,OAAO,GAAG,KAAK,CAAC,EAAE;gFAAC;IACnB,YAAY,GAAG,KAAK,CAAwB,CAAC;qFAAC;IAC9C,QAAQ,GAAG,KAAK,CAAC,EAAE;iFAAC;IACpB,KAAK,GAAG,KAAK,CAAC,EAAE;8EAAC;IAEE,WAAW,GAAG,MAAM,CAAgB,IAAI;oFAAC;IAEzC,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gFAAC;IAExE,KAAK,GAAG,QAAQ,CAAW,MAC5C,IAAI,CAAC,KAAK,EAAE,KAAK;AACf,UAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAyB,CAAC;AAC3E,UAAE;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAA2B,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAC/E,SAAA;8EACN;AAEkB,IAAA,KAAK,GAAG,QAAQ,CAAiB,OAAO;AACzD,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;KACpE,CAAC;8EAAC;AAEgB,IAAA,aAAa,GAAG,QAAQ,CAAgB,MAAK;AAC9D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAE9B,MAAM,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;AACvE,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,MAAM;YAC5C,KAAK,EAAE,CAAC,CAAC,KAAK;AAEd,YAAA,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC7E,YAAA,KAAK,EAAE,CAAC,KAAK,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1D,SAAA,CAAC,CAAC;IACL,CAAC;sFAAC;IAEiB,aAAa,GAAG,QAAQ,CAAe,MAAM,IAAI,CAAC,OAAO,EAAE;sFAAC;AAE5D,IAAA,aAAa,GAAG,QAAQ,CAAoB,MAC7D,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;QACzB,CAAC;AACD,QAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM;YACrC,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9B,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAc;AACtC,YAAA,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC;AACxE,SAAA,CAAC,CAAC;AACJ,KAAA,CAAC,CAAC;sFACJ;AAEkB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM;QAC/C,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACrC,KAAA;qFAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAwB,MAC7D,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACf,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACrD,CAAC;kFACH;IAEgB,OAAO,GAAG,CAAC,CAAI,KAC9B,CAAC,YAAY;UACT,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AACrC,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA,CAAC,CAAC,MAAM,CAAC,CAAC;UACX,aAAa,CAAC,CAAW,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAE9B,IAAA,OAAO,GAAG,QAAQ,CAAM,MAAK;AAC5C,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAsB;QAC1C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACrC,YAAA,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE;AACpC,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAI,KAAK,CAAC,CAAY,EAAE,KAAK,CAAC,CAAC,CAAC;YACtF;QACF;AACA,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;aACtB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACvD,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;gFAAC;IAEM,SAAS,CAAC,SAAyB,EAAE,CAAI,EAAA;AAC/C,QAAA,MAAM,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;AAC/C,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI;IAClG;IAEQ,YAAY,CAAC,SAAyB,EAAE,CAAI,EAAA;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,MAAM;AACjC,QAAA,OAAO,KAAK,CAAC,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC9D;AAEA,IAAA,WAAA,GAAA;QACE,IAAI,SAAS,EAAE,EAAE;YACf,MAAM,CAAC,MAAK;gBACV,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM;AAClC,gBAAA,IAAI,KAAK,GAAG,UAAU,EAAE;oBACtB,OAAO,CAAC,IAAI,CACV,CAAA,gBAAA,EAAmB,KAAK,CAAA,qBAAA,EAAwB,UAAU,CAAA,4CAAA,CAA8C,CACzG;gBACH;AACF,YAAA,CAAC,CAAC;QACJ;IACF;uGAvHW,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,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCtB,i9BA2BA,EAAA,MAAA,EAAA,CAAA,8EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDMY,UAAU,0MAAE,SAAS,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,oGAAE,UAAU,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKnF,SAAS,EAAA,UAAA,EAAA,CAAA;kBARrB,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAA,eAAA,EAG9E,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,i9BAAA,EAAA,MAAA,EAAA,CAAA,8EAAA,CAAA,EAAA;;;MEdpC,SAAS,CAAA;AACH,IAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;IAEhD,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAuB;IAE3B,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;oFAAC;AAExD,IAAA,IAAI,GAAG,QAAQ,CAAgB,MAAK;QACrD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAe;QAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAErB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;YACxC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,OAAO;gBACL,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACjB,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAEjB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;gBACtB,KAAK,EAAE,CAAC,CAAC,SAAS;gBAClB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;aAC7B;AACH,QAAA,CAAC,CAAC;IACJ,CAAC;6EAAC;uGAvBS,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,kQCtBtB,0RAUA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDYa,SAAS,EAAA,UAAA,EAAA,CAAA;kBATrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,aAAa,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,0RAAA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA;;;AETjC,MAAM,YAAY,GAAG,GAAG;MAUX,QAAQ,CAAA;IACnB,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAuB;IAC9C,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;IACjC,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAChC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAU;IAClC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,UAAU,GAAG,KAAK,CAAC,CAAC;mFAAC;IACrB,IAAI,GAAG,KAAK,CAA2C,IAAI;6EAAC;IAC5D,OAAO,GAAG,KAAK,CAAC,EAAE;gFAAC;IACnB,YAAY,GAAG,KAAK,CAAwB,CAAC;qFAAC;IAC9C,QAAQ,GAAG,KAAK,CAAC,EAAE;iFAAC;IACpB,KAAK,GAAG,KAAK,CAAC,EAAE;8EAAC;AAEE,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gFAAC;IAEzD,aAAa,GAAG,QAAQ,CAAe,MACxD,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;sFACrC;AAEkB,IAAA,KAAK,GAAG,QAAQ,CAAW,OAAO;AACnD,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAA,OAAO,EAAE,YAAY;KACtB,CAAC;8EAAC;AAEgB,IAAA,KAAK,GAAG,QAAQ,CAAiB,OAAO;AACzD,QAAA,IAAI,EAAE,QAAQ;AAEd,QAAA,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;KAC9D,CAAC;8EAAC;AAEK,IAAA,YAAY,CAAC,KAAyB,EAAA;AAC5C,QAAA,OAAO,KAAK,CAAC,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC9D;IAEmB,aAAa,GAAG,QAAQ,CAAyB,MAClE,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;QACnC,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,MAAM,EAAE,KAAK,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACnF,KAAA,CAAC,CAAC;sFACJ;AAEkB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;qFAAC;AAEpE,IAAA,SAAS,GAAG,QAAQ,CAAwB,MAC7D,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;kFACzE;uGAhDU,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,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBrB,wxBAuBA,EAAA,MAAA,EAAA,CAAA,8EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPY,UAAU,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,UAAA,EAAA,OAAA,EAAA,GAAA,EAAA,GAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,oGAAE,SAAS,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKrE,QAAQ,EAAA,UAAA,EAAA,CAAA;kBARpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cACb,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAA,eAAA,EAGhE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wxBAAA,EAAA,MAAA,EAAA,CAAA,8EAAA,CAAA,EAAA;;;AEdjD,MAAM,WAAW,GAAG,CAAC;AAErB,MAAM,YAAY,GAAG,CAAC;AACtB,MAAM,mBAAmB,GAAG,CAAC;MAsBhB,cAAc,CAAA;IACzB,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAqB;IAC5C,SAAS,GAAG,KAAK,CAAC,QAAQ;kFAAmB;AAE5B,IAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AAE7B,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW;+EAAC;AAEvD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAiB;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC/B,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;mFAAC;AAEe,IAAA,aAAa,GAAG,QAAQ,CAAgB,MAAK;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;QACxC,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC;AAC/C,QAAA,OAAO,KAAK,YAAY,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI;IACvD,CAAC;sFAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CAAkC,MAAK;AAC9E,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;QACjC,IAAI,IAAI,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC;QACtE,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAiB;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QAC/B,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACjD,CAAC;oFAAC;AAEiB,IAAA,KAAK,GAAG,QAAQ,CAAiB,MAAK;QACvD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAiB;AAC9C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QACvC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;YACvC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC/B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC;AAEtC,YAAA,MAAM,MAAM,GACV,UAAU,KAAK,IAAI;AACnB,gBAAA,UAAU,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE;AACtC,gBAAA,UAAU,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE;YACtC,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,gBAAA,CAAC,EAAE,KAAK;gBACR,KAAK;gBAEL,OAAO,EAAE,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK;gBAClE,MAAM;gBACN,WAAW,EAAE,MAAM,GAAG,mBAAmB,GAAG,YAAY;aACzD;AACH,QAAA,CAAC,CAAC;IACJ,CAAC;8EAAC;uGArDS,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,0YC9B3B,wzBA4BA,EAAA,MAAA,EAAA,CAAA,qjBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDEa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,aAAa,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,wzBAAA,EAAA,MAAA,EAAA,CAAA,qjBAAA,CAAA,EAAA;;;MEHpB,aAAa,CAAA;IACxB,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAqB;IAC5C,SAAS,GAAG,KAAK,CAAC,QAAQ;kFAAmB;IAC7C,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;IACjC,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAChC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,gBAAgB,GAAG,KAAK,CAAC,QAAQ;yFAAU;IAC3C,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAU;IAClC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,KAAK,GAAG,KAAK,CAAC,IAAI;8EAAC;IACnB,UAAU,GAAG,KAAK,CAAC,CAAC;mFAAC;IACrB,IAAI,GAAG,KAAK,CAA2C,IAAI;6EAAC;IAC5D,OAAO,GAAG,KAAK,CAAC,EAAE;gFAAC;IACnB,YAAY,GAAG,KAAK,CAAwB,CAAC;qFAAC;IAC9C,QAAQ,GAAG,KAAK,CAAC,EAAE;iFAAC;IACpB,KAAK,GAAG,KAAK,CAAC,EAAE;8EAAC;AAEE,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gFAAC;IAEzD,aAAa,GAAG,QAAQ,CAAe,MACxD,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;sFACrC;AAEkB,IAAA,KAAK,GAAG,QAAQ,CAAW,OAAO;AACnD,QAAA,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KACrC,CAAC;8EAAC;AAEgB,IAAA,KAAK,GAAG,QAAQ,CAAiB,OAAO;AACzD,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;KACtE,CAAC;8EAAC;IAEgB,aAAa,GAAG,QAAQ,CAAuB,MAChE,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;QACnC,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACnF,KAAA,CAAC,CAAC;sFACJ;AAEkB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;qFAAC;AAEpE,IAAA,SAAS,GAAG,QAAQ,CAAwB,MAC7D,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;kFAC7F;AAEkB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM;QAClD,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,CAAA,QAAA,CAAU;AAC3B,QAAA,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,CAAA,MAAA,CAAQ;AAC1B,KAAA;wFAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAwB,MAChE,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK;AACjC,QAAA,QAAQ,CAAC,KAAK;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;KACjC,CAAC;qFACH;AAEgB,IAAA,aAAa,GAAG,CAAC,CAAO,KACvC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AACrC,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEN,IAAA,YAAY,CAAC,KAAuB,EAAA;AAC1C,QAAA,OAAO,KAAK,CAAC,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC9D;uGAtEW,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,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECzB1B,ygCA+BA,EAAA,MAAA,EAAA,CAAA,8EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDXY,UAAU,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,UAAA,EAAA,OAAA,EAAA,GAAA,EAAA,GAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,oGAAE,cAAc,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAK1E,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAClB,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,CAAC,EAAA,eAAA,EAGrE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ygCAAA,EAAA,MAAA,EAAA,CAAA,8EAAA,CAAA,EAAA;;;AElBjD,MAAM,MAAM,GAAG,CAAC;MAUH,SAAS,CAAA;IACpB,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAY;IACnC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAU;IAClC,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAU;IAClC,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;IACjC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,KAAK,GAAG,KAAK,CAAC,EAAE;8EAAC;IACjB,MAAM,GAAG,KAAK,CAAC,EAAE;+EAAC;IAEC,WAAW,GAAG,MAAM,CAAgB,IAAI;oFAAC;AAEzC,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAA,IAAA,EAAO,IAAI,CAAC,KAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE;gFAAC;AAEhE,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gFAAC;AAE1D,IAAA,SAAS,GAAG,QAAQ,CAAwB,MAC7D,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;QAClC,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACtC,QAAA,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;KACnC,CAAC;kFACH;AAEgB,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QAC/B,OAAO;AACL,YAAA,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;AACpF,YAAA,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;SAC7D;IACH,CAAC;+EAAC;AAEiB,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;QACpC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;AAC9B,QAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;6EAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAW,MAAK;QACrD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QAC3B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;kFAAC;AAEiB,IAAA,GAAG,GAAG,QAAQ,CAAkC,MAAK;AACtE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI;QACpC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;AAC9B,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;IAC7C,CAAC;4EAAC;AAEiB,IAAA,OAAO,GAAG,QAAQ,CAAgB,MAAK;AACxD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI;AACpC,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,CAAA,CAAA,EAAI,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC,OAAO,EAAE,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;IAChI,CAAC;gFAAC;AAEQ,IAAA,aAAa,CAAC,KAAgC,EAAA;AACtD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE;QAC5B,MAAM,IAAI,GAAI,KAAK,CAAC,aAAyB,CAAC,qBAAqB,EAAE;AACrE,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E;AAEU,IAAA,cAAc,CAAC,KAAgC,EAAA;AACvD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,aAAwB;AAC7C,QAAA,IAAI,MAAM,CAAC,aAAa,CAAC,aAAa,KAAK,MAAM;YAAE;AACnD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC;QAC1C,IAAI,SAAS,GAAG,CAAC;YAAE;AACnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,YAAY;gBACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC7E;AACF,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC7E;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB;AACF,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC/B;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B;AACF,YAAA;gBACE;;QAEJ,KAAK,CAAC,cAAc,EAAE;IACxB;uGAvGW,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,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECftB,m9BA4BA,EAAA,MAAA,EAAA,CAAA,yvBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlBY,UAAU,qHAAE,UAAU,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKrB,SAAS,EAAA,UAAA,EAAA,CAAA;kBARrB,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,EAAE,UAAU,CAAC,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,m9BAAA,EAAA,MAAA,EAAA,CAAA,yvBAAA,CAAA,EAAA;;;MEHpC,QAAQ,CAAA;IACnB,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAChC,GAAG,GAAG,KAAK,CAAC,QAAQ;4EAAU;IAC9B,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAChC,cAAc,GAAG,KAAK,CAAC,QAAQ;uFAAU;IACzC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,aAAa,GAAG,KAAK,CAAC,QAAQ;sFAAU;IACxC,UAAU,GAAG,KAAK,CAAwC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;mFAAC;AAErE,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAEtB,IAAI,GAAG,IAAI,CAAC;AAAE,YAAA,OAAO,CAAC;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;IAC/D,CAAC;mFAAC;AAEiB,IAAA,QAAQ,GAAG,QAAQ,CAAgC,MAAK;AACzE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;QACpC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/C,IAAI,UAAU,IAAI,QAAQ;AAAE,YAAA,OAAO,UAAU;QAC7C,IAAI,UAAU,IAAI,OAAO;AAAE,YAAA,OAAO,SAAS;AAC3C,QAAA,OAAO,IAAI;IACb,CAAC;iFAAC;AAEiB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,IAAI,QAAQ,KAAK,UAAU;AAAE,YAAA,OAAO,IAAI,CAAC,aAAa,EAAE;QACxD,IAAI,QAAQ,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC,YAAY,EAAE;AACtD,QAAA,OAAO,IAAI;IACb,CAAC;sFAAC;uGA7BS,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,w+BCVrB,6xBA0BA,EAAA,MAAA,EAAA,CAAA,4xBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDhBa,QAAQ,EAAA,UAAA,EAAA,CAAA;kBARpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cACb,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6xBAAA,EAAA,MAAA,EAAA,CAAA,4xBAAA,CAAA,EAAA;;;MEkBpC,aAAa,CAAA;IACxB,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAkB;IACvC,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAU;IAClC,WAAW,GAAG,KAAK,CAAC,QAAQ;oFAAU;IACtC,WAAW,GAAG,KAAK,CAAC,QAAQ;oFAAU;IACtC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;IAEd,WAAW,GAAG,MAAM,CAAgB,IAAI;oFAAC;AAEzC,IAAA,YAAY,GAAG,QAAQ,CAAgB,MAAK;AAC7D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;YACxB,KAAK,EAAE,GAAG,CAAC,KAAK;AAChB,YAAA,cAAc,EAAE,GAAG,CAAC,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAErE,YAAA,IAAI,EAAE,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,IAAI,GAAG;AACvD,SAAA,CAAC,CAAC;IACL,CAAC;qFAAC;uGAnBS,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,IAAA,EAAA,iBAAA,EAAA,IAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B1B,4jCAoCA,EAAA,MAAA,EAAA,CAAA,izBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfY,UAAU,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKT,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,CAAC,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4jCAAA,EAAA,MAAA,EAAA,CAAA,izBAAA,CAAA,EAAA;;;MEGpC,WAAW,CAAA;IACtB,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAgB;IACtC,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAChC,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;IACjC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,UAAU,GAAG,KAAK,CAAC,QAAQ;mFAAU;IACrC,WAAW,GAAG,KAAK,CAAC,QAAQ;oFAAU;IACtC,gBAAgB,GAAG,KAAK,CAAC,QAAQ;yFAAU;IAC3C,gBAAgB,GAAG,KAAK,CAAC,QAAQ;yFAAiD;AAEjE,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;kFAAC;IAErD,WAAW,GAAG,MAAM,CAAgB,IAAI;oFAAC;AAElD,IAAA,YAAY,CAAC,KAAiB,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,aAA4B;AACjD,QAAA,IAAI,MAAM,CAAC,aAAa,CAAC,aAAa,KAAK,MAAM;YAAE;AACnD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;AAEmB,IAAA,aAAa,GAAG,QAAQ,CAAiB,MAAK;AAC/D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YAC/B,MAAM,aAAa,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK;YACvE,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,cAAc,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAEvD,gBAAA,IAAI,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,IAAI,GAAG;gBACzD,sBAAsB,EAAE,aAAa,CACnC,aAAa,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,aAAa,EACnD,IAAI,CAAC,MAAM,EAAE,CACd;aACF;AACH,QAAA,CAAC,CAAC;IACJ,CAAC;sFAAC;AAEiB,IAAA,UAAU,GAAG,QAAQ,CAAsB,MAAK;AACjE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;QAC/B,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI;IAC5C,CAAC;mFAAC;AAEiB,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM;QAC1C,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,gBAAgB,EAAE;AACxB,KAAA;gFAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAwB,MAAK;AAClE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAChC,YAAA,IAAI,CAAC,KAAK;YACV,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACvC,aAAa,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1E,SAAA,CAAC;IACJ,CAAC;kFAAC;uGA1DS,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,kBAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BxB,q0CAgCA,EAAA,MAAA,EAAA,CAAA,qgCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVY,UAAU,oGAAE,UAAU,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKrB,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,EAAE,UAAU,CAAC,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,q0CAAA,EAAA,MAAA,EAAA,CAAA,qgCAAA,CAAA,EAAA;;;MESpC,IAAI,CAAA;AACE,IAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;AAC5C,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE5C,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAChC,KAAK,GAAG,KAAK,CAAkB,OAAO;8EAAC;IACvC,WAAW,GAAG,KAAK,CAAgB,IAAI;oFAAC;IACxC,MAAM,GAAG,MAAM,EAAQ;IAEJ,IAAI,GAAG,MAAM,CAAC,KAAK;6EAAC;IACpB,QAAQ,GAAG,MAAM,CAAuB,IAAI;iFAAC;IAE/C,OAAO,GAAG,SAAS,CAAgC,SAAS;gFAAC;IAC7D,IAAI,GAAG,SAAS,CAA0B,MAAM;6EAAC;IAExD,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACf,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;IACF;AAEU,IAAA,KAAK,CAAC,WAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACpB,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;QACvC;IACF;AAEU,IAAA,gBAAgB,CAAC,KAAoB,EAAA;QAC7C,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;YAAE;QAC1D,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,SAAS,GAAG,MAAM,GAAG,OAAO;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACnB,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;AACA,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;IAC/B;AAEU,IAAA,aAAa,CAAC,KAAoB,EAAA;AAC1C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAA4B,CAAC;AAClE,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAChB;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;gBACtC;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;gBACrD;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACb;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC5B;;IAEN;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IACnB;AAEU,IAAA,eAAe,CAAC,KAAiB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;AAChF,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACnB;IACF;AAEU,IAAA,UAAU,CAAC,KAAiB,EAAA;AACpC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,aAA4B;AACjD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAClE,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB;IACF;IAEU,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;AAC7C,QAAA,IAAI,CAAC,OAAO;YAAE;AACd,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;QAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,IAAI,CAAC,KAAK,EAAE,KAAK;cACb,EAAE,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,EAAA,CAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA,EAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI;cACvF,EAAE,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,EAAA,CAAI,EAAE,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CACzE;IACH;IAEQ,KAAK,GAAA;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa;AACvC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;QACpB,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAc,mBAAmB,CAAC,CAAC;IACrE;AAEQ,IAAA,KAAK,CAAC,KAAa,EAAA;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;IAC9B;AAEQ,IAAA,gBAAgB,CAAC,MAAwB,EAAA;QAC/C,eAAe,CACb,MAAK;AACH,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;IACH;uGAvHW,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAJ,IAAI,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClCjB,2kCAsCA,EAAA,MAAA,EAAA,CAAA,uzCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfY,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAWH,IAAI,EAAA,UAAA,EAAA,CAAA;kBAdhB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,CAAC,EAAA,eAAA,EAGE,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,kBAAkB,EAAE,yBAAyB;AAC7C,wBAAA,YAAY,EAAE,oBAAoB;AAClC,wBAAA,iBAAiB,EAAE,kBAAkB;AACrC,wBAAA,iBAAiB,EAAE,kBAAkB;AACtC,qBAAA,EAAA,QAAA,EAAA,2kCAAA,EAAA,MAAA,EAAA,CAAA,uzCAAA,CAAA,EAAA;AAcmE,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,IAAA,EAAA,CAAA,EAAA,CAAA,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,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,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,SAAS,8DAClB,MAAM,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEjC5D,MAAM,QAAQ,GAAG,GAAY;AAGpC,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAA;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;AACrE;SAEgB,eAAe,CAAC,IAAY,EAAE,SAAiB,EAAE,YAAoB,EAAA;AACnF,IAAA,MAAM,gBAAgB,GAAG,YAAY,GAAG,CAAC;AAEzC,IAAA,IAAI,gBAAgB,IAAI,SAAS,EAAE;AACjC,QAAA,OAAO,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;IAC5B;AAEA,IAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC;AACzD,IAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,EAAE,SAAS,CAAC;AAElE,IAAA,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,CAAC;;;AAG/C,IAAA,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,SAAS,GAAG,CAAC;AAE7D,IAAA,IAAI,CAAC,kBAAkB,IAAI,mBAAmB,EAAE;AAC9C,QAAA,MAAM,aAAa,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC;AAC1C,QAAA,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC1D;AAEA,IAAA,IAAI,kBAAkB,IAAI,CAAC,mBAAmB,EAAE;AAC9C,QAAA,MAAM,cAAc,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC;AAC3C,QAAA,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,cAAc,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;IAC3E;AAEA,IAAA,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC1F;MAUa,UAAU,CAAA;IACrB,IAAI,GAAG,KAAK,CAAS,CAAC;6EAAC;IACvB,QAAQ,GAAG,KAAK,CAAS,EAAE;iFAAC;IAC5B,UAAU,GAAG,KAAK,CAAC,QAAQ;mFAAU;IACrC,YAAY,GAAG,KAAK,CAAS,CAAC;qFAAC;IAC/B,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,SAAS,GAAG,KAAK,CAAS,YAAY;kFAAC;IACvC,aAAa,GAAG,KAAK,CAAS,eAAe;sFAAC;IAC9C,SAAS,GAAG,KAAK,CAAS,WAAW;kFAAC;IACtC,SAAS,GAAG,KAAK,CAA2B,CAAC,IAAI,KAAK,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE;kFAAC;IAErE,eAAe,GAAG,KAAK,CAAW,EAAE;wFAAC;IACrC,aAAa,GAAG,KAAK,CAA2B,CAAC,IAAI,KAAK,CAAA,EAAG,IAAI,CAAA,OAAA,CAAS;sFAAC;IAC3E,mBAAmB,GAAG,KAAK,CAAS,eAAe;4FAAC;IACpD,gBAAgB,GAAG,KAAK,CAAC,KAAK,wFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAChE,IAAA,iBAAiB,GAAG,KAAK,CACvB,CAAC,KAAK,EAAE,KAAK,KAAK,CAAA,EAAG,KAAK,CAAA,IAAA,EAAO,KAAK,CAAA,MAAA,CAAQ;0FAC/C;IAED,UAAU,GAAG,MAAM,EAAU;IAC7B,cAAc,GAAG,MAAM,EAAU;IAEd,QAAQ,GAAG,QAAQ;IAEnB,SAAS,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;kFAC5D;IAEkB,KAAK,GAAG,QAAQ,CAAC,MAClC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;8EACpE;AAEkB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC;IAC1E,CAAC;mFAAC;IAEiB,YAAY,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;qFAC/D;AAEkB,IAAA,qBAAqB,GAAG,QAAQ,CAAyB,MAC1E,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;8FAC3F;IAEkB,eAAe,GAAG,IAAI,WAAW,CAAS,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC5E,QAAA,WAAW,EAAE,IAAI;AAClB,KAAA,CAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC5B,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,KAAK,IAAI,EAAE;AACvC,gBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC3D;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC9E,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAA,CAAC,CAAC;;;;;QAMF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC;AACrD,YAAA,IAAI,OAAO,KAAK,OAAO,EAAE;AACvB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAC/B;AACF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,IAAI,CAAC,IAAY,EAAA;QACzB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC7D,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE;YAAE;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;IAC/B;uGAjFW,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,kkECzDvB,skEAkEA,EAAA,MAAA,EAAA,CAAA,q/CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDdY,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,uNAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKhC,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,skEAAA,EAAA,MAAA,EAAA,CAAA,q/CAAA,CAAA,EAAA;;;ME7CpC,UAAU,CAAA;IACrB,SAAS,GAAG,KAAK,CAAC,QAAQ;kFAAU;uGADzB,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,yNCVvB,sQAMA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDIa,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cACd,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,sQAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;MEcpC,kBAAkB,CAAA;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAW;IAClC,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAU;IAClC,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAU;IAClC,WAAW,GAAG,KAAK,CAAC,QAAQ;oFAAU;IACtC,iBAAiB,GAAG,KAAK,CAAS,iBAAiB;0FAAC;IACpD,YAAY,GAAG,KAAK,CAAS,SAAS;qFAAC;IACvC,WAAW,GAAG,KAAK,CAAS,QAAQ;oFAAC;IACrC,UAAU,GAAG,KAAK,CAAS,OAAO;mFAAC;IAEnC,SAAS,GAAG,MAAM,EAAQ;IAC1B,MAAM,GAAG,MAAM,EAAQ;IAEJ,KAAK,GAAG,MAAM,CAAC,EAAE;8EAAC;IAClB,UAAU,GAAG,QAAQ,CACtC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;mFACrE;AAED,IAAA,WAAA,GAAA;;;;QAIE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAClB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB;AACF,QAAA,CAAC,CAAC;IACJ;IAEU,OAAO,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACvB;IACF;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;uGArCW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB/B,koBAsBA,EAAA,MAAA,EAAA,CAAA,+JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLY,WAAW,+VAAE,KAAK,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKnC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAA,eAAA,EAG9B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,koBAAA,EAAA,MAAA,EAAA,CAAA,+JAAA,CAAA,EAAA;;;AEjBjD,MAAM,mBAAmB,GAAG,IAAI;AAmBhC,MAAM,kBAAkB,GAA8B,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAEnF,MAAM,aAAa,GAAiC;AAClD,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,KAAK,EAAE,cAAc;AACrB,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,IAAI,EAAE,MAAM;CACb;MAUY,OAAO,CAAA;IAClB,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAe;IACtC,QAAQ,GAAG,KAAK,CAAkB,cAAc;iFAAC;IACjD,UAAU,GAAG,KAAK,CAAS,OAAO;mFAAC;IAEnC,SAAS,GAAG,MAAM,EAAU;AAEX,IAAA,MAAM,GAAG,IAAI,GAAG,EAAyC;AAE1E,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;YAElE,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;gBACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBACvB,YAAY,CAAC,KAAK,CAAC;AACnB,oBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB;YACF;YAEA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACjC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;oBAC7B;gBACF;AACA,gBAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,mBAAmB;AACtD,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE;oBAC/C;gBACF;AACA,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,KAAK,CAAC,EAAE,EACR,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/B,gBAAA,CAAC,EAAE,QAAQ,CAAC,CACb;YACH;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,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;IACrB;AAEU,IAAA,OAAO,CAAC,OAAqB,EAAA;AACrC,QAAA,OAAO,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,QAAQ;IAC7D;AAEU,IAAA,OAAO,CAAC,OAAqB,EAAA;AACrC,QAAA,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B;uGApDW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,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,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvCpB,ovBAuBA,EAAA,MAAA,EAAA,CAAA,i+EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDWY,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKH,OAAO,EAAA,UAAA,EAAA,CAAA;kBARnB,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,CAAC,EAAA,eAAA,EAGE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ovBAAA,EAAA,MAAA,EAAA,CAAA,i+EAAA,CAAA,EAAA;;;AEpBjD,MAAM,aAAa,GAAG,GAAG;AACzB,MAAM,OAAO,GAAG,GAAG;AACnB,MAAM,MAAM,GAAG,CAAC;AAEhB,IAAIF,QAAM,GAAG,CAAC;MAqBD,OAAO,CAAA;AACD,IAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;IAE7D,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAU;IAC/B,QAAQ,GAAG,KAAK,CAAkB,KAAK;iFAAC;AAE/B,IAAA,SAAS,GAAG,CAAA,YAAA,EAAe,EAAEA,QAAM,EAAE;IAE3B,OAAO,GAAG,MAAM,CAAC,KAAK;gFAAC;IACvB,OAAO,GAAG,MAAM,CAAC,KAAK;gFAAC;IACvB,MAAM,GAAG,MAAM,CAAuB,IAAI;+EAAC;IAEtD,SAAS,GAAyC,IAAI;IACtD,SAAS,GAAyC,IAAI;IAEpD,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YACrB,IAAI,CAAC,IAAI,EAAE;QACb,CAAC,EAAE,aAAa,CAAC;IACnB;IAEU,SAAS,GAAA;QACjB,IAAI,CAAC,IAAI,EAAE;IACb;IAEQ,IAAI,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;AAC3B,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;IAEU,cAAc,GAAA;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAClE,QAAA,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACrB,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC7E;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBAChF;AACF,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC;gBAC9E;AACF,YAAA,KAAK,OAAO;gBACV,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC;gBAC/E;;IAEN;IAEU,IAAI,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;AAC3B,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;QACA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB,CAAC,EAAE,OAAO,CAAC;IACb;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;AAC3B,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;AACA,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;uGA7EW,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,6mBC1CpB,yVAaC,EAAA,MAAA,EAAA,CAAA,m8BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FD6BY,OAAO,EAAA,UAAA,EAAA,CAAA;kBAnBnB,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,QAAA,EACN,YAAY,EAAA,OAAA,EACb,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,cAAc,EAAE,gBAAgB;AAChC,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,YAAY,EAAE,QAAQ;AACtB,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,iBAAiB,EAAE,kBAAkB;AACrC,wBAAA,iBAAiB,EAAE,kBAAkB;AACtC,qBAAA,EAAA,QAAA,EAAA,yVAAA,EAAA,MAAA,EAAA,CAAA,m8BAAA,CAAA,EAAA;;;AEvBH,IAAIA,QAAM,GAAG,CAAC;MAiBD,UAAU,CAAA;AACrB,IAAA,EAAE,GAAG,KAAK,CAAS,CAAA,gBAAA,EAAmB,EAAEA,QAAM,CAAA,CAAE;2EAAC;IACjD,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAChC,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAoB;IAC5C,WAAW,GAAG,KAAK,CAA4B,UAAU;oFAAC;IAC1D,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,YAAY,GAAG,KAAK,CAAgB,IAAI;qFAAC;IAEtB,QAAQ,GAAG,MAAM,CAAW,IAAI;iFAAC;IAEnC,YAAY,GAAG,MAAM,CAAC,KAAK;qFAAC;AAC1B,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;mFAAC;AAE9E,IAAA,QAAQ,GAAuB,MAAK,EAAE,CAAC;AACvC,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAe,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;AAEA,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;IACnC;AAEU,IAAA,UAAU,CAAC,KAAQ,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK;IAClC;AAEU,IAAA,YAAY,CAAC,KAAQ,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;IAClB;uGAzCW,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,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,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,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,SAAA,EARV;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,UAAU,CAAC;AACzC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCH,ohCA4BA,EAAA,MAAA,EAAA,CAAA,q+BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDMa,UAAU,EAAA,UAAA,EAAA,CAAA;kBAftB,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,EAAE,mBAGM,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gBAAgB,CAAC;AACzC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,ohCAAA,EAAA,MAAA,EAAA,CAAA,q+BAAA,CAAA,EAAA;;;AErBH,IAAI,YAAY,GAAG,CAAC;MAgBP,MAAM,CAAA;AACjB,IAAA,EAAE,GAAG,KAAK,CAAS,CAAA,WAAA,EAAc,EAAE,YAAY,CAAA,CAAE;2EAAC;IAClD,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAErC,OAAO,GAAG,MAAM,CAAC,KAAK;gFAAC;IAEzB,YAAY,GAAG,MAAM,CAAC,KAAK;qFAAC;AAC1B,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;mFAAC;AAE9E,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3B;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;IACnC;AAEU,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;AACxD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;IAClB;uGAlCW,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,YAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,EAAA,SAAA,EARN;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,MAAM,CAAC;AACrC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBH,uaAeA,EAAA,MAAA,EAAA,CAAA,krCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDYa,MAAM,EAAA,UAAA,EAAA,CAAA;kBAdlB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cACV,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC;AACrC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,uaAAA,EAAA,MAAA,EAAA,CAAA,krCAAA,CAAA,EAAA;;;AEbH,IAAI,MAAM,GAAG,CAAC;MAiBD,QAAQ,CAAA;AACnB,IAAA,EAAE,GAAG,KAAK,CAAS,CAAA,aAAA,EAAgB,EAAE,MAAM,CAAA,CAAE;2EAAC;IAC9C,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,WAAW,GAAG,KAAK,CAAS,EAAE;oFAAC;IAC/B,YAAY,GAAG,KAAK,CAAgB,IAAI;qFAAC;IACzC,IAAI,GAAG,KAAK,CAAC,CAAC;6EAAC;IAEf,SAAS,GAAG,MAAM,EAAU;IAET,KAAK,GAAG,MAAM,CAAC,EAAE;8EAAC;IAEpB,YAAY,GAAG,MAAM,CAAC,KAAK;qFAAC;AAC1B,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;mFAAC;AAE9E,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;IACnC;AAEU,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA8B,CAAC,KAAK;AACzD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtB;IAEU,MAAM,GAAA;QACd,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACnC;uGA5CW,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,cAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,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,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EARR;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,QAAQ,CAAC;AACvC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BH,+oBAoBA,EAAA,MAAA,EAAA,CAAA,yzBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDSa,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAfpB,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,EAAE,mBAGM,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC;AACvC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,+oBAAA,EAAA,MAAA,EAAA,CAAA,yzBAAA,CAAA,EAAA;;;AEPH,IAAI,kBAAkB,GAAG,CAAC;MAqBb,YAAY,CAAA;AACN,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD,IAAA,EAAE,GAAG,KAAK,CAAS,CAAA,iBAAA,EAAoB,EAAE,kBAAkB,CAAA,CAAE;2EAAC;IAC9D,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,WAAW,GAAG,KAAK,CAAS,EAAE;oFAAC;IAC/B,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,YAAY,GAAG,KAAK,CAAgB,IAAI;qFAAC;IACzC,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAA2B;IAClD,SAAS,GAAG,KAAK,CAAsB,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;kFAAC;AAC9D,IAAA,YAAY,GAAG,KAAK;gGAAwB;IAC5C,UAAU,GAAG,KAAK,CAAS,GAAG;mFAAC;IAC/B,SAAS,GAAG,KAAK,CAAS,CAAC;kFAAC;IAC5B,cAAc,GAAG,KAAK,CAAS,YAAY;uFAAC;IAC5C,gBAAgB,GAAG,KAAK,CAAS,YAAY;yFAAC;IAC9C,kBAAkB,GAAG,KAAK,CAAS,eAAe;2FAAC;IACnD,mBAAmB,GAAG,KAAK,CACzB,CAAC,KAAK,KAAK,CAAA,EAAG,KAAK,CAAA,OAAA,EAAU,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAA,CAAE;4FACtD;IAED,YAAY,GAAG,MAAM,EAAK;IAEP,KAAK,GAAG,MAAM,CAAC,EAAE;8EAAC;IAClB,IAAI,GAAG,MAAM,CAAC,KAAK;6EAAC;IACpB,OAAO,GAAG,MAAM,CAAM,EAAE;gFAAC;IACzB,OAAO,GAAG,MAAM,CAAC,KAAK;gFAAC;IACvB,YAAY,GAAG,MAAM,CAAC,KAAK;qFAAC;IAC5B,WAAW,GAAG,MAAM,CAAC,CAAC;oFAAC;IACvB,YAAY,GAAG,MAAM,CAAW,IAAI;qFAAC;IACrC,UAAU,GAAG,MAAM,CAAsD,IAAI;mFAAC;IAEhF,YAAY,GAAG,MAAM,CAAC,KAAK;qFAAC;AAC1B,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;mFAAC;AAEnE,IAAA,YAAY,GAAG,QAAQ,CACxC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC;qFAC5F;AAEkB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAC3C,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE,GAAG,IAAI;uFAC9F;AAEO,IAAA,QAAQ,GAA8B,MAAK,EAAE,CAAC;AAC9C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAEhC,UAAU,GAAG,CAAC;AACd,IAAA,cAAc;AACd,IAAA,YAAY;AAEpB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;IACnC;AAEA,IAAA,UAAU,CAAC,KAAe,EAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;IACtF;AAEA,IAAA,gBAAgB,CAAC,EAA6B,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEU,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;AAChC,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrB;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAC5B;IAEU,OAAO,GAAA;AACf,QAAA,IACE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC9C,aAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,EAClD;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACnB,IAAI,CAAC,mBAAmB,EAAE;QAC5B;IACF;IAEU,MAAM,GAAA;QACd,IAAI,CAAC,SAAS,EAAE;QAChB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACnE,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB;QACF,CAAC,EAAE,GAAG,CAAC;IACT;AAEQ,IAAA,cAAc,CAAC,KAAa,EAAA;AAClC,QAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,QAAA,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE;YAC1C,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;AAChC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B;QACF;QACA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IAClF;AAEQ,IAAA,SAAS,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,UAAU;AAC7B,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,mBAAmB,EAAE;AAE1B,QAAA,MAAM,YAAY,GAAG,CAAC,KAAU,KAAU;AACxC,YAAA,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU;gBAAE;AAC7B,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,mBAAmB,EAAE;AAC5B,QAAA,CAAC;QACD,MAAM,UAAU,GAAG,MAAW;AAC5B,YAAA,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU;gBAAE;AAC7B,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,mBAAmB,EAAE;AAC5B,QAAA,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QACjF;aAAO;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;QACvC;IACF;IAEU,mBAAmB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YAChB;QACF;AACA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CACzD,0BAA0B,CACL;QACvB,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AACA,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC5C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAClB,YAAA,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,EAAA,CAAI;AAC3B,YAAA,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI;AACtB,YAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI;AACzB,SAAA,CAAC;IACJ;AAEU,IAAA,YAAY,CAAC,IAAO,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB;QACF;AACA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACf,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,eAAe,EAAE;AACvB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB;YACA;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/C;QACF;AACA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACnE;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClD;YACF,KAAK,OAAO,EAAE;gBACZ,KAAK,CAAC,cAAc,EAAE;gBACtB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC3B;gBACA;YACF;;IAEJ;IAEA,WAAW,GAAA;AACT,QAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;IAClC;uGAjNW,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,kBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,IAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,SAAA,EARZ;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC;AAC3C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvCH,46GAoGA,m4ED3EY,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;;2FAgBf,YAAY,EAAA,UAAA,EAAA,CAAA;kBAnBxB,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,iBAAiB,EAAE,uBAAuB;AAC1C,wBAAA,iBAAiB,EAAE,uBAAuB;qBAC3C,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC;AAC3C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,46GAAA,EAAA,MAAA,EAAA,CAAA,20EAAA,CAAA,EAAA;;;AEvCH;;AAEG;;"}
1
+ {"version":3,"file":"masmarino-gabarit.mjs","sources":["../../../projects/gabarit/src/lib/version.ts","../../../projects/gabarit/src/lib/components/atoms/icon/built-in-icons.ts","../../../projects/gabarit/src/lib/components/atoms/icon/icon-registry.ts","../../../projects/gabarit/src/lib/components/atoms/icon/icon.ts","../../../projects/gabarit/src/lib/components/templates/app-shell/app-shell.ts","../../../projects/gabarit/src/lib/components/templates/app-shell/app-shell.html","../../../projects/gabarit/src/lib/components/atoms/button/button.ts","../../../projects/gabarit/src/lib/components/atoms/button/button.html","../../../projects/gabarit/src/lib/components/atoms/badge/badge.ts","../../../projects/gabarit/src/lib/components/atoms/badge/badge.html","../../../projects/gabarit/src/lib/components/molecules/alert/alert.ts","../../../projects/gabarit/src/lib/components/molecules/alert/alert.html","../../../projects/gabarit/src/lib/components/atoms/tag/tag-contrast.ts","../../../projects/gabarit/src/lib/components/atoms/tag/tag.ts","../../../projects/gabarit/src/lib/components/atoms/tag/tag.html","../../../projects/gabarit/src/lib/components/molecules/empty-state/empty-state.ts","../../../projects/gabarit/src/lib/components/molecules/empty-state/empty-state.html","../../../projects/gabarit/src/lib/components/atoms/input/input.ts","../../../projects/gabarit/src/lib/components/atoms/input/input.html","../../../projects/gabarit/src/lib/components/molecules/select/select.ts","../../../projects/gabarit/src/lib/components/molecules/select/select.html","../../../projects/gabarit/src/lib/components/molecules/list-toolbar/list-toolbar.ts","../../../projects/gabarit/src/lib/components/molecules/list-toolbar/list-toolbar.html","../../../projects/gabarit/src/lib/components/molecules/card/card.ts","../../../projects/gabarit/src/lib/components/molecules/card/card.html","../../../projects/gabarit/src/lib/components/atoms/checkbox/checkbox.ts","../../../projects/gabarit/src/lib/components/atoms/checkbox/checkbox.html","../../../projects/gabarit/src/lib/components/organisms/modal/modal.ts","../../../projects/gabarit/src/lib/components/organisms/modal/modal.html","../../../projects/gabarit/src/lib/components/molecules/table/table.ts","../../../projects/gabarit/src/lib/components/molecules/table/table.html","../../../projects/gabarit/src/lib/components/organisms/search-bar/search-bar.ts","../../../projects/gabarit/src/lib/components/organisms/search-bar/search-bar.html","../../../projects/gabarit/src/lib/components/molecules/tab/tab.ts","../../../projects/gabarit/src/lib/components/molecules/tabs/tabs.ts","../../../projects/gabarit/src/lib/components/molecules/tabs/tabs.html","../../../projects/gabarit/src/lib/primitives/scales.ts","../../../projects/gabarit/src/lib/primitives/ticks.ts","../../../projects/gabarit/src/lib/primitives/format.ts","../../../projects/gabarit/src/lib/primitives/path.ts","../../../projects/gabarit/src/lib/primitives/nearest.ts","../../../projects/gabarit/src/lib/primitives/label.ts","../../../projects/gabarit/src/lib/components/organisms/chart-context/chart-context.ts","../../../projects/gabarit/src/lib/components/organisms/chart-frame/chart-frame.ts","../../../projects/gabarit/src/lib/components/organisms/chart-frame/chart-frame.html","../../../projects/gabarit/src/lib/components/organisms/chart-axis/chart-axis.ts","../../../projects/gabarit/src/lib/components/organisms/chart-axis/chart-axis.html","../../../projects/gabarit/src/lib/components/organisms/chart-tooltip/chart-tooltip.ts","../../../projects/gabarit/src/lib/components/organisms/chart-tooltip/chart-tooltip.html","../../../projects/gabarit/src/lib/components/organisms/chart-legend/chart-legend.ts","../../../projects/gabarit/src/lib/components/organisms/chart-legend/chart-legend.html","../../../projects/gabarit/src/lib/components/organisms/chart-empty/chart-empty.ts","../../../projects/gabarit/src/lib/components/organisms/chart-empty/chart-empty.html","../../../projects/gabarit/src/lib/components/organisms/chart-table/chart-table.ts","../../../projects/gabarit/src/lib/components/organisms/chart-table/chart-table.html","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-series.ts","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-series.html","../../../projects/gabarit/src/lib/components/organisms/chart-data/chart-data.ts","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-chart.ts","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-chart.html","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-series.ts","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-series.html","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-chart.ts","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-chart.html","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-series.ts","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-series.html","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-chart.ts","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-chart.html","../../../projects/gabarit/src/lib/components/atoms/sparkline/sparkline.ts","../../../projects/gabarit/src/lib/components/atoms/sparkline/sparkline.html","../../../projects/gabarit/src/lib/components/atoms/gauge-bar/gauge-bar.ts","../../../projects/gabarit/src/lib/components/atoms/gauge-bar/gauge-bar.html","../../../projects/gabarit/src/lib/components/molecules/dimension-card/dimension-card.ts","../../../projects/gabarit/src/lib/components/molecules/dimension-card/dimension-card.html","../../../projects/gabarit/src/lib/components/molecules/funnel-chart/funnel-chart.ts","../../../projects/gabarit/src/lib/components/molecules/funnel-chart/funnel-chart.html","../../../projects/gabarit/src/lib/components/molecules/menu/menu.ts","../../../projects/gabarit/src/lib/components/molecules/menu/menu.html","../../../projects/gabarit/src/lib/components/molecules/pagination/pagination.ts","../../../projects/gabarit/src/lib/components/molecules/pagination/pagination.html","../../../projects/gabarit/src/lib/components/molecules/breadcrumb/breadcrumb.ts","../../../projects/gabarit/src/lib/components/molecules/breadcrumb/breadcrumb.html","../../../projects/gabarit/src/lib/components/organisms/confirm-danger-modal/confirm-danger-modal.ts","../../../projects/gabarit/src/lib/components/organisms/confirm-danger-modal/confirm-danger-modal.html","../../../projects/gabarit/src/lib/components/organisms/toaster/toaster.ts","../../../projects/gabarit/src/lib/components/organisms/toaster/toaster.html","../../../projects/gabarit/src/lib/components/molecules/tooltip/tooltip.ts","../../../projects/gabarit/src/lib/components/molecules/tooltip/tooltip.html","../../../projects/gabarit/src/lib/components/molecules/radio-group/radio-group.ts","../../../projects/gabarit/src/lib/components/molecules/radio-group/radio-group.html","../../../projects/gabarit/src/lib/components/atoms/switch/switch.ts","../../../projects/gabarit/src/lib/components/atoms/switch/switch.html","../../../projects/gabarit/src/lib/components/atoms/textarea/textarea.ts","../../../projects/gabarit/src/lib/components/atoms/textarea/textarea.html","../../../projects/gabarit/src/lib/components/molecules/autocomplete/autocomplete.ts","../../../projects/gabarit/src/lib/components/molecules/autocomplete/autocomplete.html","../../../projects/gabarit/src/masmarino-gabarit.ts"],"sourcesContent":["export const GABARIT_VERSION = '0.7.0'\n","export const BUILT_IN_ICONS: Record<string, string> = {\n search: `<path d=\"m21 21-4.34-4.34\" />\n<circle cx=\"11\" cy=\"11\" r=\"8\" />`,\n x: `<path d=\"M18 6 6 18\" />\n<path d=\"m6 6 12 12\" />`,\n eye: `<path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" />\n<circle cx=\"12\" cy=\"12\" r=\"3\" />`,\n 'eye-off': `<path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\" />\n<path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\" />\n<path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\" />\n<path d=\"m2 2 20 20\" />`,\n 'chevron-down': `<path d=\"m6 9 6 6 6-6\" />`,\n 'chevron-left': `<path d=\"m15 18-6-6 6-6\" />`,\n 'chevron-right': `<path d=\"m9 18 6-6-6-6\" />`,\n 'chevrons-left': `<path d=\"m11 17-5-5 5-5\" />\n<path d=\"m18 17-5-5 5-5\" />`,\n 'chevrons-right': `<path d=\"m6 17 5-5-5-5\" />\n<path d=\"m13 17 5-5-5-5\" />`,\n 'ellipsis-vertical': `<circle cx=\"12\" cy=\"12\" r=\"1\" />\n<circle cx=\"12\" cy=\"5\" r=\"1\" />\n<circle cx=\"12\" cy=\"19\" r=\"1\" />`,\n check: `<path d=\"M20 6 9 17l-5-5\" />`,\n 'check-circle': `<path d=\"m5 12 5 5 9-10\" />`,\n 'alert-circle': `<path d=\"M12 7v6\" />\n<path d=\"M12 17h.01\" />`,\n 'alert-triangle': `<path d=\"m21.73 18-8-14a2 2 0 0 0-3.46 0L2.27 18a2 2 0 0 0 1.73 3h16a2 2 0 0 0 1.73-3Z\" />\n<path d=\"M12 9v4\" />\n<path d=\"M12 17h.01\" />`,\n info: `<path d=\"M12 17v-6\" />\n<path d=\"M12 7h.01\" />`,\n 'arrow-up': `<path d=\"m5 12 7-7 7 7\" />\n<path d=\"M12 19V5\" />`,\n 'arrow-down': `<path d=\"M12 5v14\" />\n<path d=\"m19 12-7 7-7-7\" />`,\n}\n","import { Injectable } from '@angular/core'\nimport { BUILT_IN_ICONS } from './built-in-icons'\n\n@Injectable({ providedIn: 'root' })\nexport class IconRegistry {\n private readonly icons = new Map<string, string>(Object.entries(BUILT_IN_ICONS))\n\n register(name: string, svgInnerMarkup: string): void {\n this.icons.set(name, svgInnerMarkup)\n }\n\n registerAll(icons: Record<string, string>): void {\n for (const [name, markup] of Object.entries(icons)) {\n this.icons.set(name, markup)\n }\n }\n\n get(name: string): string | null {\n return this.icons.get(name) ?? null\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { DomSanitizer } from '@angular/platform-browser'\nimport { IconRegistry } from './icon-registry'\n\n@Component({\n selector: 'gbt-icon',\n standalone: true,\n template: `\n @if (svgContent(); as content) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n [innerHTML]=\"content\"\n ></svg>\n }\n `,\n styles: `\n :host {\n display: inline-flex;\n flex-shrink: 0;\n width: 1.25em;\n height: 1.25em;\n }\n svg {\n width: 100%;\n height: 100%;\n }\n `,\n host: {\n '[attr.aria-hidden]': '\"true\"',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Icon {\n private readonly sanitizer = inject(DomSanitizer)\n private readonly registry = inject(IconRegistry)\n\n name = input.required<string>()\n\n protected readonly svgContent = computed(() => {\n const markup = this.registry.get(this.name())\n return markup ? this.sanitizer.bypassSecurityTrustHtml(markup) : null\n })\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n computed,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-app-shell',\n standalone: true,\n imports: [Icon],\n templateUrl: './app-shell.html',\n styleUrl: './app-shell.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppShell {\n navLabel = input.required<string>()\n skipLabel = input.required<string>()\n openMenuLabel = input.required<string>()\n closeMenuLabel = input.required<string>()\n collapseLabel = input<string>('')\n expandLabel = input<string>('')\n collapsed = input<boolean>(false)\n collapsible = input<boolean>(true)\n collapsedChange = output<boolean>()\n\n private readonly id = ++nextId\n protected readonly mainId = `gbt-app-shell-main-${this.id}`\n protected readonly navId = `gbt-app-shell-nav-${this.id}`\n\n protected readonly menuOpen = signal(false)\n\n protected readonly menuLabel = computed(() =>\n this.menuOpen() ? this.closeMenuLabel() : this.openMenuLabel(),\n )\n\n private readonly toggleButton = viewChild<ElementRef<HTMLButtonElement>>('toggle')\n private readonly nav = viewChild<ElementRef<HTMLElement>>('nav')\n\n protected toggleMenu(): void {\n if (this.menuOpen()) {\n this.close()\n return\n }\n this.menuOpen.set(true)\n queueMicrotask(() => this.nav()?.nativeElement.focus())\n }\n\n protected close(): void {\n if (!this.menuOpen()) return\n this.menuOpen.set(false)\n this.toggleButton()?.nativeElement.focus()\n }\n\n protected toggleCollapsed(): void {\n this.collapsedChange.emit(!this.collapsed())\n }\n\n @HostListener('document:keydown.escape')\n protected onEscape(): void {\n this.close()\n }\n\n protected onNavKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab' || !this.menuOpen()) return\n const nav = this.nav()?.nativeElement\n if (!nav) return\n\n const focusableElements = nav.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n if (focusableElements.length === 0) return\n\n const first = focusableElements[0]\n const last = focusableElements[focusableElements.length - 1]\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n","<div class=\"gbt-app-shell\">\n <a class=\"gbt-app-shell__skip\" [href]=\"'#' + mainId\">{{ skipLabel() }}</a>\n\n <nav\n #nav\n [id]=\"navId\"\n class=\"gbt-app-shell__nav\"\n [class.gbt-app-shell__nav--open]=\"menuOpen()\"\n [class.gbt-app-shell__nav--collapsed]=\"collapsed()\"\n [attr.aria-label]=\"navLabel()\"\n tabindex=\"-1\"\n (keydown)=\"onNavKeydown($event)\"\n >\n <div class=\"gbt-app-shell__brand\">\n <ng-content select=\"[shell-brand]\" />\n </div>\n <ng-content select=\"[shell-nav]\" />\n @if (collapsible()) {\n <button\n type=\"button\"\n class=\"gbt-app-shell__collapse-toggle\"\n [class.gbt-app-shell__collapse-toggle--collapsed]=\"collapsed()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-label]=\"collapsed() ? expandLabel() : collapseLabel()\"\n (click)=\"toggleCollapsed()\"\n >\n <gbt-icon name=\"chevrons-left\" />\n </button>\n }\n </nav>\n\n @if (menuOpen()) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div class=\"gbt-app-shell__scrim\" (click)=\"close()\"></div>\n }\n\n <div class=\"gbt-app-shell__body\">\n <header class=\"gbt-app-shell__header\">\n <button\n #toggle\n type=\"button\"\n class=\"gbt-app-shell__toggle\"\n [attr.aria-expanded]=\"menuOpen()\"\n [attr.aria-controls]=\"navId\"\n [attr.aria-label]=\"menuLabel()\"\n (click)=\"toggleMenu()\"\n >\n <span class=\"gbt-app-shell__burger\" aria-hidden=\"true\"></span>\n </button>\n <ng-content select=\"[shell-header]\" />\n </header>\n\n <main [id]=\"mainId\" class=\"gbt-app-shell__content\" tabindex=\"-1\">\n <ng-content />\n </main>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input, output } from '@angular/core'\nimport { Icon } from '../icon/icon'\n\n@Component({\n selector: 'gbt-button',\n standalone: true,\n imports: [Icon],\n templateUrl: './button.html',\n styleUrl: './button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Button {\n variant = input<'primary' | 'secondary' | 'danger'>('primary')\n size = input<'small' | 'medium' | 'large'>('medium')\n type = input<'button' | 'submit'>('button')\n text = input<string>('')\n iconName = input<string | null>(null)\n ariaLabel = input<string | null>(null)\n loading = input(false, { transform: booleanAttribute })\n loadingLabel = input<string>('Loading')\n disabled = input(false, { transform: booleanAttribute })\n\n clicked = output<void>()\n\n protected handleClick(): void {\n if (!this.disabled() && !this.loading()) {\n this.clicked.emit()\n }\n }\n}\n","<button\n [type]=\"type()\"\n class=\"gbt-button gbt-button--{{ variant() }} gbt-button--{{ size() }}\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n (click)=\"handleClick()\"\n>\n @if (iconName()) {\n <gbt-icon [name]=\"iconName()!\" aria-hidden=\"true\" />\n }\n @if (loading()) {\n <span class=\"gbt-button__spinner\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">{{ loadingLabel() }}</span>\n }\n <span>{{ text() }}</span>\n</button>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\nimport { Icon } from '../icon/icon'\n\nexport type BadgeVariant = 'neutral' | 'success' | 'warning' | 'error' | 'info'\n\n@Component({\n selector: 'gbt-badge',\n standalone: true,\n imports: [Icon],\n templateUrl: './badge.html',\n styleUrl: './badge.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Badge {\n variant = input<BadgeVariant>('neutral')\n icon = input<string>()\n}\n","<span class=\"gbt-badge\" [attr.data-variant]=\"variant()\">\n @if (icon(); as name) {\n <gbt-icon [name]=\"name\" class=\"gbt-badge__icon\" aria-hidden=\"true\" />\n }\n <span class=\"gbt-badge__label\"><ng-content /></span>\n</span>\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input, output } from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error'\n\nconst ASSERTIVE_VARIANTS: ReadonlySet<AlertVariant> = new Set(['warning', 'error'])\n\nconst VARIANT_ICONS: Record<AlertVariant, string> = {\n success: 'check-circle',\n error: 'alert-circle',\n warning: 'alert-triangle',\n info: 'info',\n}\n\n@Component({\n selector: 'gbt-alert',\n standalone: true,\n imports: [Icon],\n templateUrl: './alert.html',\n styleUrl: './alert.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Alert {\n variant = input<AlertVariant>('info')\n dismissible = input(false, { transform: booleanAttribute })\n closeLabel = input<string>('Dismiss')\n\n dismissed = output<void>()\n\n protected readonly role = computed(() => (ASSERTIVE_VARIANTS.has(this.variant()) ? 'alert' : 'status'))\n\n protected readonly icon = computed(() => VARIANT_ICONS[this.variant()])\n}\n","<div class=\"gbt-alert\" [attr.data-variant]=\"variant()\" [attr.role]=\"role()\" aria-atomic=\"true\">\n <span class=\"gbt-alert__icon\">\n <gbt-icon [name]=\"icon()\" aria-hidden=\"true\" />\n </span>\n <div class=\"gbt-alert__content\"><ng-content /></div>\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"gbt-alert__close\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"dismissed.emit()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n }\n</div>\n","/** A 6-digit hex color, with or without its leading `#`. */\nconst HEX_6 = /^#?[0-9a-fA-F]{6}$/\n\nfunction normalizeHex(hex: string): string {\n if (!HEX_6.test(hex)) {\n throw new Error(\n `getReadableTextColor: expected a 6-digit hex color such as \"#dc2626\" or \"dc2626\", got ${JSON.stringify(hex)}. ` +\n 'Shorthand hex (#abc), CSS named colors, rgb()/hsl() and custom properties are not supported.',\n )\n }\n return hex.replace('#', '')\n}\n\nfunction linearizeChannel(value: number): number {\n const c = value / 255\n return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4)\n}\n\nfunction relativeLuminance(normalizedHex: string): number {\n const r = parseInt(normalizedHex.substring(0, 2), 16)\n const g = parseInt(normalizedHex.substring(2, 4), 16)\n const b = parseInt(normalizedHex.substring(4, 6), 16)\n return 0.2126 * linearizeChannel(r) + 0.7152 * linearizeChannel(g) + 0.0722 * linearizeChannel(b)\n}\n\nfunction contrastRatio(normalizedA: string, normalizedB: string): number {\n const lA = relativeLuminance(normalizedA)\n const lB = relativeLuminance(normalizedB)\n const lighter = Math.max(lA, lB)\n const darker = Math.min(lA, lB)\n return (lighter + 0.05) / (darker + 0.05)\n}\n\n/**\n * Returns `'#ffffff'` or `'#000000'`, whichever reaches a higher WCAG contrast\n * ratio against `backgroundHex`. Used by `Tag` to keep its text readable on\n * an arbitrary caller-supplied background color that isn't one of the\n * design system's own semantic tokens.\n *\n * These two endpoints are not interchangeable with a \"softer\" dark such as\n * `#1a1a1a`: sweeping all 16 777 216 sRGB backgrounds, the worst achievable\n * ratio is **4.58:1** with `#000000` (at `#cf0dcc`) but only **4.17:1** with\n * `#1a1a1a` (at `#da25c3`) — below the 4.5:1 AA threshold that `Tag`'s\n * 12px bold text must meet, since it is not \"large text\".\n *\n * @param backgroundHex a 6-digit hex color, with or without its leading `#`.\n * @throws if `backgroundHex` is not a well-formed 6-digit hex color. Silently\n * guessing would be worse: a malformed value used to produce `NaN` ratios,\n * and `NaN >= NaN` being `false` returned dark text for *any* unparseable\n * input — so `'#000'` got dark text on a black background.\n */\nexport function getReadableTextColor(backgroundHex: string): string {\n const background = normalizeHex(backgroundHex)\n const white = 'ffffff'\n const dark = '000000'\n return contrastRatio(background, white) >= contrastRatio(background, dark) ? '#ffffff' : '#000000'\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core'\nimport { Icon } from '../icon/icon'\nimport { getReadableTextColor } from './tag-contrast'\n\n@Component({\n selector: 'gbt-tag',\n standalone: true,\n imports: [Icon],\n templateUrl: './tag.html',\n styleUrl: './tag.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tag {\n color = input.required<string>()\n removable = input<boolean>(false)\n removeLabel = input<string>('Remove')\n\n removed = output<void>()\n\n protected readonly textColor = computed(() => getReadableTextColor(this.color()))\n\n protected onRemoveClick(event: MouseEvent): void {\n event.stopPropagation()\n this.removed.emit()\n }\n}\n","<span class=\"gbt-tag\" [style.background]=\"color()\" [style.color]=\"textColor()\">\n <span class=\"gbt-tag__label\"><ng-content /></span>\n @if (removable()) {\n <button type=\"button\" class=\"gbt-tag__remove\" [attr.aria-label]=\"removeLabel()\" (click)=\"onRemoveClick($event)\">\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n }\n</span>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\nexport type EmptyStateIllustration = 'folder' | 'star' | 'checklist' | 'merge' | 'pipeline' | 'tag' | 'book'\n\n@Component({\n selector: 'gbt-empty-state',\n standalone: true,\n imports: [],\n templateUrl: './empty-state.html',\n styleUrl: './empty-state.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyState {\n illustration = input.required<EmptyStateIllustration>()\n heading = input.required<string>()\n message = input<string>('')\n}\n","<div class=\"gbt-empty-state\">\n <div class=\"gbt-empty-state__illustration\" aria-hidden=\"true\">\n @switch (illustration()) {\n @case ('folder') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"16\" y=\"38\" width=\"64\" height=\"40\" rx=\"4\" />\n <path d=\"M16 38 v-8a4 4 0 0 1 4-4h16l8 8h28a4 4 0 0 1 4 4\" />\n <rect x=\"34\" y=\"14\" width=\"16\" height=\"20\" rx=\"2\" transform=\"rotate(-8 42 24)\" opacity=\"0.55\" />\n <rect x=\"50\" y=\"16\" width=\"16\" height=\"20\" rx=\"2\" transform=\"rotate(6 58 26)\" opacity=\"0.55\" />\n </svg>\n }\n @case ('star') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M48,18 L55.6,37.5 L76.5,38.7 L60.4,52 L65.6,72.3 L48,61 L30.4,72.3 L35.6,52 L19.5,38.7 L40.4,37.5 Z\" />\n <path d=\"M78,14 L81,20 L78,26 L75,20 Z\" opacity=\"0.55\" />\n <path d=\"M16,64 L19,70 L16,76 L13,70 Z\" opacity=\"0.55\" />\n </svg>\n }\n @case ('checklist') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"24\" y=\"18\" width=\"48\" height=\"64\" rx=\"6\" />\n <rect x=\"38\" y=\"12\" width=\"20\" height=\"10\" rx=\"3\" />\n <line x1=\"34\" y1=\"38\" x2=\"62\" y2=\"38\" />\n <path d=\"M32 50 l4 4 l8-8\" />\n <line x1=\"46\" y1=\"52\" x2=\"62\" y2=\"52\" />\n <line x1=\"34\" y1=\"66\" x2=\"62\" y2=\"66\" opacity=\"0.55\" />\n </svg>\n }\n @case ('merge') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"24\" cy=\"22\" r=\"7\" />\n <circle cx=\"72\" cy=\"22\" r=\"7\" />\n <circle cx=\"48\" cy=\"76\" r=\"8\" />\n <path d=\"M24 29 V50 Q24 69 39 72\" />\n <path d=\"M72 29 V50 Q72 69 57 72\" />\n </svg>\n }\n @case ('pipeline') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"22\" cy=\"68\" r=\"12\" />\n <path d=\"M17 60 L29 68 L17 76 Z\" fill=\"currentColor\" stroke=\"none\" />\n <path d=\"M29 58 L44 38\" />\n <circle cx=\"50\" cy=\"30\" r=\"10\" />\n <path d=\"M56 38 L70 54\" />\n <circle cx=\"76\" cy=\"62\" r=\"10\" />\n </svg>\n }\n @case ('tag') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M18 20 H54 L82 48 L54 76 H18 Q14 76 14 72 V24 Q14 20 18 20 Z\" />\n <circle cx=\"34\" cy=\"36\" r=\"5\" />\n </svg>\n }\n @case ('book') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M48 26 Q34 16 16 20 V72 Q34 68 48 78 Q62 68 80 72 V20 Q62 16 48 26 Z\" />\n <line x1=\"24\" y1=\"32\" x2=\"40\" y2=\"30\" />\n <line x1=\"24\" y1=\"42\" x2=\"40\" y2=\"40\" />\n <line x1=\"56\" y1=\"30\" x2=\"72\" y2=\"32\" />\n <line x1=\"56\" y1=\"40\" x2=\"72\" y2=\"42\" />\n </svg>\n }\n }\n </div>\n <p class=\"gbt-empty-state__heading\">{{ heading() }}</p>\n @if (message()) {\n <p class=\"gbt-empty-state__message\">{{ message() }}</p>\n }\n <div class=\"gbt-empty-state__action\">\n <ng-content />\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../icon/icon'\n\nlet nextInputId = 0\n\n@Component({\n selector: 'gbt-input',\n standalone: true,\n imports: [Icon],\n templateUrl: './input.html',\n styleUrl: './input.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GbtInput),\n multi: true,\n },\n ],\n})\nexport class GbtInput implements ControlValueAccessor {\n id = input<string>(`gbt-input-${++nextInputId}`)\n label = input<string>('')\n type = input<'text' | 'password' | 'email'>('text')\n required = input(false, { transform: booleanAttribute })\n disabled = input(false, { transform: booleanAttribute })\n placeholder = input<string>('')\n errorMessage = input<string | null>(null)\n autocomplete = input<string>('off')\n\n showPasswordLabel = input<string>('Show password')\n\n hidePasswordLabel = input<string>('Hide password')\n\n committed = output<string>()\n\n protected readonly value = signal('')\n protected readonly passwordVisible = signal(false)\n protected readonly effectiveType = computed(() => {\n if (this.type() !== 'password') {\n return this.type()\n }\n return this.passwordVisible() ? 'text' : 'password'\n })\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: string) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: string): void {\n this.value.set(value ?? '')\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value\n this.value.set(value)\n this.onChange(value)\n }\n\n protected onBlur(): void {\n this.onTouched()\n this.committed.emit(this.value())\n }\n\n protected togglePasswordVisibility(): void {\n this.passwordVisible.update((visible) => !visible)\n }\n}\n","<div class=\"gbt-input\">\n @if (label()) {\n <label [for]=\"id()\">{{ label() }}{{ required() ? ' *' : '' }}</label>\n }\n <div class=\"gbt-input__wrapper\">\n <input\n [id]=\"id()\"\n [type]=\"effectiveType()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [disabled]=\"isDisabled()\"\n [attr.autocomplete]=\"autocomplete()\"\n [value]=\"value()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n @if (type() === 'password') {\n <button\n type=\"button\"\n class=\"gbt-input__toggle\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"passwordVisible() ? hidePasswordLabel() : showPasswordLabel()\"\n >\n <gbt-icon [name]=\"passwordVisible() ? 'eye-off' : 'eye'\" aria-hidden=\"true\" />\n </button>\n }\n </div>\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-input__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\nimport { Tag } from '../../atoms/tag/tag'\n\nexport interface SelectOption<T = string> {\n value: T\n label: string\n icon?: string\n color?: string\n}\n\nlet nextSelectId = 0\n\n@Component({\n selector: 'gbt-select',\n standalone: true,\n imports: [Icon, Tag],\n templateUrl: './select.html',\n styleUrl: './select.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'handleClickOutside($event)',\n '(keydown)': 'onKeydown($event)',\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n '[class.gbt-select--sm]': \"size() === 'sm'\",\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Select),\n multi: true,\n },\n ],\n})\nexport class Select<T = string> implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef)\n\n id = input<string>(`gbt-select-${++nextSelectId}`)\n label = input<string>('')\n size = input<'md' | 'sm'>('md')\n options = input.required<SelectOption<T>[]>()\n multiple = input(false, { transform: booleanAttribute })\n chips = input(false, { transform: booleanAttribute })\n placeholder = input<string>('Select…')\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n selectedCountLabel = input<(count: number) => string>((count) => `${count} selected`)\n chipRemoveLabel = input<(label: string) => string>((label) => `Remove ${label}`)\n\n protected readonly open = signal(false)\n protected readonly activeIndex = signal(-1)\n protected readonly selected = signal<T[]>([])\n protected readonly panelStyle = signal<{ top: string; left: string; width: string } | null>(null)\n private readonly formDisabled = signal(false)\n\n protected readonly labelId = computed(() => `${this.id()}-label`)\n protected readonly chipsId = computed(() => `${this.id()}-chips`)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: T | T[] | null) => void = () => {}\n private onTouched: () => void = () => {}\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n writeValue(value: T | T[] | null): void {\n if (this.multiple()) {\n this.selected.set(Array.isArray(value) ? (value as T[]) : [])\n } else {\n this.selected.set(value === null || value === undefined ? [] : [value as T])\n }\n }\n\n registerOnChange(fn: (value: T | T[] | null) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n protected readonly selectedOptions = computed(() => {\n const selected = this.selected()\n return this.options().filter((option) => selected.includes(option.value))\n })\n\n protected readonly triggerLabel = computed(() => {\n const opts = this.selectedOptions()\n if (opts.length === 0) {\n return this.placeholder()\n }\n if (this.chips() && this.multiple()) {\n return this.placeholder()\n }\n if (this.multiple() && opts.length > 1) {\n return this.selectedCountLabel()(opts.length)\n }\n return opts[0].label\n })\n\n protected readonly chipsVisible = computed(\n () => this.chips() && this.multiple() && this.selectedOptions().length > 0,\n )\n\n /**\n * In chips mode the trigger keeps showing the placeholder, so the selection\n * is conveyed to assistive technology by describing the trigger with the\n * chip row itself. The error message keeps its own id in the list.\n */\n protected readonly describedBy = computed(() => {\n const ids: string[] = []\n if (this.chipsVisible()) {\n ids.push(this.chipsId())\n }\n if (this.errorMessage()) {\n ids.push(`${this.id()}-error`)\n }\n return ids.length > 0 ? ids.join(' ') : null\n })\n\n protected readonly triggerIcon = computed(() => {\n const opts = this.selectedOptions()\n return opts.length === 1 ? opts[0].icon : undefined\n })\n\n protected readonly activeOptionId = computed(() =>\n this.open() && this.activeIndex() >= 0 ? `${this.id()}-option-${this.activeIndex()}` : null,\n )\n\n protected isSelected(value: T): boolean {\n return this.selected().includes(value)\n }\n\n protected toggleOpen(): void {\n if (this.isDisabled()) {\n return\n }\n this.open.update((value) => !value)\n if (this.open()) {\n this.activeIndex.set(\n Math.max(\n 0,\n this.options().findIndex((o) => this.isSelected(o.value)),\n ),\n )\n this.updatePanelPosition()\n } else {\n this.onTouched()\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.open()) {\n return\n }\n const trigger = this.elementRef.nativeElement.querySelector(\n '.gbt-select__trigger',\n ) as HTMLElement | null\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n // In chips mode the chip row sits between the trigger and the panel.\n // Anchoring the panel to the trigger alone would lay it over the chips,\n // whose remove buttons are focusable — WCAG 2.4.11 \"focus not obscured\".\n const chipRow = this.elementRef.nativeElement.querySelector(\n '.gbt-select__chips',\n ) as HTMLElement | null\n const anchorBottom = chipRow\n ? Math.max(rect.bottom, chipRow.getBoundingClientRect().bottom)\n : rect.bottom\n this.panelStyle.set({\n top: `${anchorBottom + 6}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n })\n }\n\n /**\n * Removes the chip at `index`. Refuses to mutate anything while the control\n * is disabled (the remove buttons are not rendered then, but a programmatic\n * caller must not be able to bypass the disabled state either), and moves\n * focus off the button it is about to destroy — otherwise focus falls back\n * to `<body>`.\n */\n protected removeChip(value: T, index: number): void {\n if (this.isDisabled()) {\n return\n }\n const host = this.elementRef.nativeElement as HTMLElement\n const removeButtons = Array.from(\n host.querySelectorAll<HTMLElement>('.gbt-select__chips .gbt-tag__remove'),\n )\n // `@for` tracks options by value, so the surviving chips keep their DOM\n // nodes across this removal — the element resolved here is still the right\n // one once the view updates.\n const nextFocus =\n removeButtons[index + 1] ??\n removeButtons[index - 1] ??\n host.querySelector<HTMLElement>('.gbt-select__trigger')\n this.selectOption(value)\n nextFocus?.focus()\n }\n\n protected selectOption(value: T): void {\n if (this.multiple()) {\n const current = this.selected()\n const next = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value]\n this.selected.set(next)\n this.onChange(next)\n // A chip can be removed without ever opening the panel, so this is the\n // only place that marks the control as touched in that flow.\n this.onTouched()\n } else {\n this.selected.set([value])\n this.onChange(value)\n this.open.set(false)\n this.onTouched()\n }\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (this.open() && !this.elementRef.nativeElement.contains(event.target)) {\n this.open.set(false)\n this.onTouched()\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) {\n return\n }\n if (!this.open()) {\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.toggleOpen()\n }\n return\n }\n const options = this.options()\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n event.stopPropagation()\n this.open.set(false)\n this.onTouched()\n break\n case 'ArrowDown':\n event.preventDefault()\n this.activeIndex.update((i) => Math.min(i + 1, options.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.activeIndex.update((i) => Math.max(i - 1, 0))\n break\n case 'Enter':\n case ' ': {\n event.preventDefault()\n const active = options[this.activeIndex()]\n if (active) {\n this.selectOption(active.value)\n }\n break\n }\n }\n }\n}\n","<div class=\"gbt-select\" [class.gbt-select--disabled]=\"isDisabled()\">\n @if (label()) {\n <label [id]=\"labelId()\" [for]=\"id()\" class=\"gbt-select__label\"\n >{{ label() }}{{ required() ? ' *' : '' }}</label\n >\n }\n\n <button\n type=\"button\"\n [id]=\"id()\"\n class=\"gbt-select__trigger\"\n [class.gbt-select__trigger--open]=\"open()\"\n [disabled]=\"isDisabled()\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? id() + '-listbox' : null\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-labelledby]=\"label() ? labelId() + ' ' + id() : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"describedBy()\"\n (click)=\"toggleOpen()\"\n >\n @if (triggerIcon(); as icon) {\n <gbt-icon [name]=\"icon\" class=\"gbt-select__trigger-icon\" aria-hidden=\"true\" />\n }\n <span\n class=\"gbt-select__trigger-label\"\n [class.gbt-select__trigger-label--placeholder]=\"selectedOptions().length === 0\"\n >\n {{ triggerLabel() }}\n </span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-select__chevron\" aria-hidden=\"true\" />\n </button>\n @if (chipsVisible()) {\n <div class=\"gbt-select__chips\" [id]=\"chipsId()\">\n @for (option of selectedOptions(); track option.value; let i = $index) {\n <gbt-tag\n [color]=\"option.color ?? '#6b7280'\"\n [removable]=\"!isDisabled()\"\n [removeLabel]=\"chipRemoveLabel()(option.label)\"\n (removed)=\"removeChip(option.value, i)\"\n >\n {{ option.label }}\n </gbt-tag>\n }\n </div>\n }\n @if (chips() && multiple()) {\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\n {{ selectedCountLabel()(selectedOptions().length) }}\n </div>\n }\n @if (open() && panelStyle(); as style) {\n <ul\n [id]=\"id() + '-listbox'\"\n class=\"gbt-select__panel\"\n role=\"listbox\"\n [attr.aria-label]=\"label() || placeholder()\"\n [attr.aria-multiselectable]=\"multiple()\"\n [style.top]=\"style.top\"\n [style.left]=\"style.left\"\n [style.width]=\"style.width\"\n >\n @for (option of options(); track option.value; let i = $index) {\n <li role=\"presentation\">\n <button\n [id]=\"id() + '-option-' + i\"\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n class=\"gbt-select__option\"\n [class.gbt-select__option--selected]=\"isSelected(option.value)\"\n [class.gbt-select__option--active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"isSelected(option.value)\"\n (click)=\"selectOption(option.value)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (option.icon) {\n <gbt-icon [name]=\"option.icon\" class=\"gbt-select__option-icon\" aria-hidden=\"true\" />\n }\n <span class=\"gbt-select__option-label\">{{ option.label }}</span>\n @if (isSelected(option.value)) {\n <gbt-icon name=\"check\" class=\"gbt-select__option-check\" aria-hidden=\"true\" />\n }\n </button>\n </li>\n }\n </ul>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-select__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, effect, input, output } from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { FormControl, ReactiveFormsModule } from '@angular/forms'\nimport { GbtInput } from '../../atoms/input/input'\nimport { Select, SelectOption } from '../select/select'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport interface ListToolbarSortOption<T extends string = string> {\n value: T\n label: string\n}\n\n@Component({\n selector: 'gbt-list-toolbar',\n standalone: true,\n imports: [ReactiveFormsModule, GbtInput, Select, Icon],\n templateUrl: './list-toolbar.html',\n styleUrl: './list-toolbar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListToolbar<T extends string = string> {\n searchValue = input<string>('')\n searchLabel = input.required<string>()\n searchPlaceholder = input<string>('')\n sortOptions = input.required<ListToolbarSortOption<T>[]>()\n sortValue = input.required<T>()\n sortDirection = input<'asc' | 'desc'>('asc')\n sortLabel = input<string>('Sort by')\n directionLabel = input<string>('Reverse sort direction')\n\n searchValueChange = output<string>()\n sortValueChange = output<T>()\n sortDirectionChange = output<'asc' | 'desc'>()\n\n // Plain `[ngModel]` bindings on the child `gbt-input`/`gbt-select` defer their\n // initial value to a control-value-accessor writeValue() call scheduled on a\n // microtask (an Angular Forms `NgModel` implementation detail), so the very\n // first render would briefly show the empty/placeholder state. Reactive\n // FormControls propagate `setValue()` to the CVA synchronously, so we mirror\n // the inputs onto internal controls instead and forward user edits back out.\n protected readonly searchControl = new FormControl<string>('', { nonNullable: true })\n protected readonly sortControl = new FormControl<T | null>(null)\n\n constructor() {\n effect(() => this.searchControl.setValue(this.searchValue(), { emitEvent: false }))\n effect(() => this.sortControl.setValue(this.sortValue(), { emitEvent: false }))\n\n this.searchControl.valueChanges\n .pipe(takeUntilDestroyed())\n .subscribe((value) => this.searchValueChange.emit(value))\n\n this.sortControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {\n if (value !== null && value !== this.sortValue()) {\n this.sortValueChange.emit(value)\n }\n })\n }\n\n protected asSelectOptions(options: ListToolbarSortOption<T>[]): SelectOption<T>[] {\n return options\n }\n\n protected toggleDirection(): void {\n this.sortDirectionChange.emit(this.sortDirection() === 'asc' ? 'desc' : 'asc')\n }\n}\n","<div class=\"gbt-list-toolbar\">\n <gbt-input\n class=\"gbt-list-toolbar__search\"\n [label]=\"searchLabel()\"\n [placeholder]=\"searchPlaceholder()\"\n [formControl]=\"searchControl\"\n />\n <gbt-select\n class=\"gbt-list-toolbar__sort\"\n [label]=\"sortLabel()\"\n [options]=\"asSelectOptions(sortOptions())\"\n [formControl]=\"sortControl\"\n />\n <button\n type=\"button\"\n class=\"gbt-list-toolbar__direction\"\n (click)=\"toggleDirection()\"\n [attr.aria-label]=\"directionLabel()\"\n [attr.aria-pressed]=\"sortDirection() === 'desc'\"\n >\n <gbt-icon [name]=\"sortDirection() === 'asc' ? 'arrow-up' : 'arrow-down'\" />\n </button>\n</div>\n","import { NgTemplateOutlet } from '@angular/common'\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\n@Component({\n selector: 'gbt-card',\n standalone: true,\n imports: [Icon, NgTemplateOutlet],\n templateUrl: './card.html',\n styleUrl: './card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Card {\n hoverable = input(false, { transform: booleanAttribute })\n heading = input<string>('')\n icon = input<string>('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n\n protected readonly cardClass = computed(\n () => 'gbt-card' + (this.hoverable() ? ' gbt-card--hoverable' : ''),\n )\n}\n","<div [class]=\"cardClass()\">\n @if (heading()) {\n <div class=\"gbt-card__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h1>\n }\n @case (3) {\n <h3 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h3>\n }\n @case (4) {\n <h4 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h4>\n }\n @case (5) {\n <h5 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h5>\n }\n @case (6) {\n <h6 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h6>\n }\n @default {\n <h2 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h2>\n }\n }\n <ng-content select=\"[card-header-actions]\"></ng-content>\n </div>\n }\n <ng-content></ng-content>\n</div>\n<ng-template #headingContent>\n @if (icon()) {\n <gbt-icon [name]=\"icon()\" aria-hidden=\"true\" />\n }\n {{ heading() }}\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextCheckboxId = 0\n\n@Component({\n selector: 'gbt-checkbox',\n standalone: true,\n templateUrl: './checkbox.html',\n styleUrl: './checkbox.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Checkbox),\n multi: true,\n },\n ],\n})\nexport class Checkbox implements ControlValueAccessor {\n id = input<string>(`gbt-checkbox-${++nextCheckboxId}`)\n label = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n\n protected readonly checked = signal(false)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: boolean) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: boolean): void {\n this.checked.set(!!value)\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected onToggle(event: Event): void {\n const value = (event.target as HTMLInputElement).checked\n this.checked.set(value)\n this.onChange(value)\n this.onTouched()\n }\n}\n","<label class=\"gbt-checkbox\" [class.gbt-checkbox--disabled]=\"isDisabled()\">\n <input\n type=\"checkbox\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onToggle($event)\"\n />\n <span>{{ label() }}</span>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n effect,\n input,\n output,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\n@Component({\n selector: 'gbt-modal',\n standalone: true,\n imports: [Icon],\n templateUrl: './modal.html',\n styleUrl: './modal.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Modal implements OnDestroy {\n isOpen = input.required<boolean>()\n heading = input<string>('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n closeLabel = input<string>('Close')\n\n closed = output<void>()\n\n private readonly dialog = viewChild<ElementRef<HTMLElement>>('dialog')\n\n private previouslyFocused: HTMLElement | null = null\n\n constructor() {\n effect(() => {\n if (this.isOpen()) {\n this.previouslyFocused = document.activeElement as HTMLElement | null\n queueMicrotask(() => this.dialog()?.nativeElement.focus())\n } else if (this.previouslyFocused) {\n const target = this.previouslyFocused\n this.previouslyFocused = null\n target.focus()\n }\n })\n }\n\n ngOnDestroy(): void {\n this.previouslyFocused?.focus()\n }\n\n @HostListener('document:keydown.escape')\n protected onEscape(): void {\n if (this.isOpen()) {\n this.closed.emit()\n }\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (event.target === event.currentTarget) {\n this.closed.emit()\n }\n }\n\n protected onDialogKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab') {\n return\n }\n const dialog = this.dialog()?.nativeElement\n if (!dialog) {\n return\n }\n const focusable = dialog.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n if (focusable.length === 0) {\n return\n }\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n","@if (isOpen()) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div class=\"gbt-modal__backdrop\" (click)=\"onBackdropClick($event)\">\n <div\n class=\"gbt-modal__dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"heading() || null\"\n tabindex=\"-1\"\n #dialog\n (keydown)=\"onDialogKeydown($event)\"\n >\n <header class=\"gbt-modal__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-modal__title\">{{ heading() }}</h1>\n }\n @case (3) {\n <h3 class=\"gbt-modal__title\">{{ heading() }}</h3>\n }\n @case (4) {\n <h4 class=\"gbt-modal__title\">{{ heading() }}</h4>\n }\n @case (5) {\n <h5 class=\"gbt-modal__title\">{{ heading() }}</h5>\n }\n @case (6) {\n <h6 class=\"gbt-modal__title\">{{ heading() }}</h6>\n }\n @default {\n <h2 class=\"gbt-modal__title\">{{ heading() }}</h2>\n }\n }\n <button\n type=\"button\"\n class=\"gbt-modal__close\"\n (click)=\"closed.emit()\"\n [attr.aria-label]=\"closeLabel()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n </header>\n <div class=\"gbt-modal__body\">\n <ng-content />\n </div>\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input, output } from '@angular/core'\n\nexport interface TableColumn<T> {\n key: Extract<keyof T, string>\n label: string\n\n format?: (row: T) => string\n}\n\n@Component({\n selector: 'gbt-table',\n standalone: true,\n templateUrl: './table.html',\n styleUrl: './table.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Table<T extends object> {\n data = input.required<T[]>()\n columns = input.required<TableColumn<T>[]>()\n trackBy = input<((row: T) => unknown) | null>(null)\n emptyMessage = input<string>('No data')\n caption = input.required<string>()\n clickableRows = input(false, { transform: booleanAttribute })\n\n rowClick = output<T>()\n\n protected trackRow = (index: number, row: T): unknown => {\n const identify = this.trackBy()\n return identify ? identify(row) : index\n }\n\n protected onRowKeydown(event: KeyboardEvent, row: T): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.rowClick.emit(row)\n }\n }\n\n protected cellValue(row: T, column: TableColumn<T>): unknown {\n return column.format ? column.format(row) : row[column.key]\n }\n}\n","<table class=\"gbt-table\">\n <caption>\n {{\n caption()\n }}\n </caption>\n <thead>\n <tr>\n @for (column of columns(); track column.key) {\n <th scope=\"col\">{{ column.label }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of data(); track trackRow($index, row)) {\n <tr\n [class.gbt-table__row--clickable]=\"clickableRows()\"\n [attr.tabindex]=\"clickableRows() ? 0 : null\"\n (click)=\"clickableRows() && rowClick.emit(row)\"\n (keydown)=\"clickableRows() && onRowKeydown($event, row)\"\n >\n @for (column of columns(); track column.key) {\n <td>{{ cellValue(row, column) }}</td>\n }\n </tr>\n } @empty {\n <tr class=\"gbt-table__empty\">\n <td [attr.colspan]=\"columns().length\">{{ emptyMessage() }}</td>\n </tr>\n }\n </tbody>\n</table>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core'\nimport { NgTemplateOutlet } from '@angular/common'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport interface SearchResultCategory<T = unknown> {\n label: string\n icon?: string\n items: T[]\n}\n\nlet nextSearchBarId = 0\n\n@Component({\n selector: 'gbt-search-bar',\n standalone: true,\n imports: [Icon, NgTemplateOutlet],\n templateUrl: './search-bar.html',\n styleUrl: './search-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown)': 'onNavigationKeydown($event)',\n '(document:click)': 'handleClickOutside($event)',\n },\n})\nexport class SearchBar<T = unknown> {\n private readonly elementRef = inject(ElementRef)\n\n id = input<string>(`gbt-search-bar-${++nextSearchBarId}`)\n results = input<T[] | null>(null)\n groupedResults = input<SearchResultCategory<T>[] | null>(null)\n placeholder = input<string>('Search…')\n ariaLabel = input<string>('')\n displayFn = input<(item: T) => string>((item) => String(item))\n itemTemplate = input<TemplateRef<unknown>>()\n keepQueryOnSelect = input(false)\n noResultsMessage = input<string>('No results')\n noResultsHint = input<string>('Try a different search.')\n clearLabel = input<string>('Clear search')\n resultsAnnouncement = input<(count: number) => string>(\n (count) => `${count} result${count !== 1 ? 's' : ''}`,\n )\n navigateHint = input<string>('Navigate')\n selectHint = input<string>('Select')\n closeHint = input<string>('Close')\n\n queryChange = output<string>()\n itemSelected = output<T>()\n clear = output<void>()\n\n protected readonly isFocused = signal(false)\n protected readonly showResults = signal(false)\n protected readonly searchQuery = signal('')\n protected readonly activeIndex = signal(0)\n\n protected readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput')\n\n private readonly hasGroupedResultsInput = computed(() => !!this.groupedResults())\n\n protected readonly allVisibleItems = computed<T[]>(() => {\n if (this.groupedResults()) {\n return this.groupedResults()!.flatMap((category) => category.items)\n }\n return this.results() ?? []\n })\n\n protected readonly showOverlay = computed(() => this.showResults())\n\n protected readonly panelId = computed(() => `${this.id()}-panel`)\n\n protected itemDomId(index: number): string {\n return `${this.id()}-item-${index}`\n }\n\n protected readonly indexedGroupedResults = computed(() => {\n const grouped = this.groupedResults()\n if (!grouped) return null\n const format = this.displayFn()\n let index = 0\n return grouped.map((category) => ({\n ...category,\n indexedItems: category.items.map((item) => ({\n item,\n index: index++,\n formatted: format(item),\n })),\n }))\n })\n\n protected readonly indexedResults = computed(() => {\n const format = this.displayFn()\n return (this.results() ?? []).map((item, index) => ({ item, index, formatted: format(item) }))\n })\n\n protected readonly activeItemDomId = computed(() => {\n if (!this.showOverlay()) return null\n const idx = this.activeIndex()\n\n return idx >= 0 && idx < this.allVisibleItems().length ? this.itemDomId(idx) : null\n })\n\n protected readonly resultCount = computed(() =>\n this.showOverlay() ? this.allVisibleItems().length : 0,\n )\n\n protected readonly hasGroupedResults = computed(\n () => this.hasGroupedResultsInput() && !!this.groupedResults()?.some((c) => c.items.length > 0),\n )\n\n protected readonly hasNoResults = computed(() => this.allVisibleItems().length === 0)\n\n protected onNavigationKeydown(event: KeyboardEvent): void {\n if (!this.isFocused() || !this.showOverlay()) return\n\n if (event.key === 'Escape') {\n event.preventDefault()\n this.blurSearch()\n return\n }\n\n const items = this.allVisibleItems()\n if (items.length === 0) return\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n this.activeIndex.update((i) => Math.min(i + 1, items.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.activeIndex.update((i) => Math.max(i - 1, 0))\n break\n case 'Enter': {\n const active = items[this.activeIndex()]\n if (!active) break\n event.preventDefault()\n this.onSelect(active)\n break\n }\n }\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.showResults.set(false)\n }\n }\n\n focusSearch(): void {\n this.searchInput()?.nativeElement.focus()\n }\n\n protected blurSearch(): void {\n this.searchInput()?.nativeElement.blur()\n this.showResults.set(false)\n }\n\n protected onFocus(): void {\n this.isFocused.set(true)\n if (this.searchQuery().length > 0) this.showResults.set(true)\n }\n\n protected onBlur(): void {\n this.isFocused.set(false)\n setTimeout(() => {\n if (!this.elementRef.nativeElement.contains(document.activeElement)) {\n this.showResults.set(false)\n }\n }, 200)\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value\n this.searchQuery.set(value)\n this.activeIndex.set(0)\n this.showResults.set(value.length > 0)\n\n this.queryChange.emit(value)\n }\n\n protected onClear(): void {\n this.searchQuery.set('')\n this.activeIndex.set(0)\n this.showResults.set(false)\n this.clear.emit()\n this.focusSearch()\n }\n\n protected onSelect(item: T): void {\n this.itemSelected.emit(item)\n this.showResults.set(false)\n this.searchQuery.set(this.keepQueryOnSelect() ? this.displayFn()(item) : '')\n }\n}\n","<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n<div class=\"gbt-sb-trigger\" [class.gbt-sb-trigger--open]=\"isFocused()\" (click)=\"focusSearch()\">\n <gbt-icon name=\"search\" class=\"gbt-sb-trigger__icon\" aria-hidden=\"true\" />\n <input\n #searchInput\n type=\"text\"\n role=\"combobox\"\n class=\"gbt-sb-trigger__input\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel() || placeholder()\"\n [value]=\"searchQuery()\"\n [attr.aria-expanded]=\"showOverlay()\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"showOverlay() ? panelId() : null\"\n [attr.aria-activedescendant]=\"activeItemDomId()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (input)=\"onInput($event)\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n @if (searchQuery().length > 0) {\n <button\n type=\"button\"\n class=\"gbt-sb-trigger__clear\"\n (click)=\"onClear()\"\n [attr.aria-label]=\"clearLabel()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n }\n</div>\n@if (showOverlay()) {\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\n {{ resultsAnnouncement()(resultCount()) }}\n </div>\n}\n@if (showOverlay()) {\n <div class=\"gbt-sb-backdrop\" (click)=\"blurSearch()\" aria-hidden=\"true\"></div>\n <ng-template #footer>\n <div class=\"gbt-sb-footer\" aria-hidden=\"true\">\n <span class=\"gbt-sb-footer__hint\">\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">↑</kbd>\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">↓</kbd>\n {{ navigateHint() }}\n </span>\n <span class=\"gbt-sb-footer__hint\">\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">↵</kbd>\n {{ selectHint() }}\n </span>\n <span class=\"gbt-sb-footer__hint\">\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">Esc</kbd>\n {{ closeHint() }}\n </span>\n </div>\n </ng-template>\n @if (hasNoResults()) {\n <div [id]=\"panelId()\" class=\"gbt-sb-panel\">\n <div class=\"gbt-sb-state\" role=\"status\">\n <gbt-icon name=\"search\" class=\"gbt-sb-state__icon\" aria-hidden=\"true\" />\n <span>{{ noResultsMessage() }}</span>\n <p class=\"gbt-sb-state__hint\">{{ noResultsHint() }}</p>\n </div>\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\n </div>\n } @else {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n [id]=\"panelId()\"\n class=\"gbt-sb-panel\"\n role=\"listbox\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (hasGroupedResults()) {\n <div class=\"gbt-sb-list\">\n @for (category of indexedGroupedResults(); track category.label) {\n @if (category.items.length > 0) {\n <div class=\"gbt-sb-group-label\">\n @if (category.icon) {\n <gbt-icon [name]=\"category.icon\" aria-hidden=\"true\" />\n }\n {{ category.label }}\n <span class=\"gbt-sb-group-count\" aria-hidden=\"true\">{{\n category.items.length\n }}</span>\n </div>\n @for (entry of category.indexedItems; track entry.index) {\n <button\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"itemDomId(entry.index)\"\n class=\"gbt-sb-item\"\n [attr.aria-selected]=\"entry.index === activeIndex()\"\n [class.gbt-sb-item--active]=\"entry.index === activeIndex()\"\n (click)=\"onSelect(entry.item)\"\n (mouseenter)=\"activeIndex.set(entry.index)\"\n >\n @if (itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: entry.item }\"\n ></ng-container>\n } @else {\n @if (category.icon) {\n <gbt-icon\n [name]=\"category.icon\"\n class=\"gbt-sb-item__icon\"\n aria-hidden=\"true\"\n />\n }\n <span class=\"gbt-sb-item__label\">{{ entry.formatted }}</span>\n }\n </button>\n }\n }\n }\n </div>\n } @else if (results() && results()!.length > 0) {\n <div class=\"gbt-sb-list\">\n @for (entry of indexedResults(); track entry.index) {\n <button\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"itemDomId(entry.index)\"\n class=\"gbt-sb-item\"\n [attr.aria-selected]=\"entry.index === activeIndex()\"\n [class.gbt-sb-item--active]=\"entry.index === activeIndex()\"\n (click)=\"onSelect(entry.item)\"\n (mouseenter)=\"activeIndex.set(entry.index)\"\n >\n @if (itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: entry.item }\"\n ></ng-container>\n } @else {\n <span class=\"gbt-sb-item__label\">{{ entry.formatted }}</span>\n }\n </button>\n }\n </div>\n }\n\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\n </div>\n }\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core'\n\n@Component({\n selector: 'gbt-tab',\n standalone: true,\n imports: [],\n template: `<ng-content></ng-content>`,\n host: {\n role: 'tabpanel',\n '[style.display]': \"active() ? null : 'none'\",\n '[id]': \"groupId() + '-panel-' + index()\",\n '[attr.aria-labelledby]': \"groupId() + '-trigger-' + index()\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tab {\n label = input.required<string>()\n\n protected readonly active = signal(false)\n protected readonly index = signal(0)\n protected readonly groupId = signal('')\n\n setState(index: number, active: boolean, groupId: string): void {\n this.index.set(index)\n this.active.set(active)\n this.groupId.set(groupId)\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n contentChildren,\n effect,\n input,\n model,\n viewChildren,\n} from '@angular/core'\nimport { Tab } from '../tab/tab'\n\nlet nextTabsId = 0\n\n@Component({\n selector: 'gbt-tabs',\n standalone: true,\n imports: [],\n templateUrl: './tabs.html',\n styleUrl: './tabs.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tabs {\n id = input<string>(`gbt-tabs-${++nextTabsId}`)\n\n protected readonly tabs = contentChildren(Tab)\n private readonly triggers = viewChildren<ElementRef<HTMLButtonElement>>('trigger')\n\n activeIndex = model(0)\n\n constructor() {\n effect(() => {\n const tabs = this.tabs()\n const active = this.activeIndex()\n const groupId = this.id()\n tabs.forEach((tab, i) => tab.setState(i, i === active, groupId))\n })\n\n // Self-heals an out-of-range `activeIndex` — e.g. a consumer binds it to\n // a URL query parameter and the stored value no longer matches any tab —\n // instead of leaving every panel hidden and every trigger out of the\n // keyboard tab order with no way to reach the component at all.\n effect(() => {\n const count = this.tabs().length\n if (count === 0) {\n return\n }\n const current = this.activeIndex()\n const clamped = Math.min(Math.max(current, 0), count - 1)\n if (clamped !== current) {\n this.activeIndex.set(clamped)\n }\n })\n }\n\n protected select(index: number): void {\n this.activeIndex.set(index)\n }\n\n protected onKeydown(event: KeyboardEvent, index: number): void {\n const count = this.tabs().length\n if (count === 0) {\n return\n }\n let next: number | null = null\n if (event.key === 'ArrowRight') {\n next = (index + 1) % count\n } else if (event.key === 'ArrowLeft') {\n next = (index - 1 + count) % count\n }\n if (next === null) {\n return\n }\n event.preventDefault()\n this.select(next)\n this.triggers()[next]?.nativeElement.focus()\n }\n}\n","<div class=\"gbt-tabs\">\n <div class=\"gbt-tabs__list\" role=\"tablist\">\n @for (tab of tabs(); track tab; let i = $index) {\n <button\n #trigger\n type=\"button\"\n class=\"gbt-tabs__trigger\"\n [class.gbt-tabs__trigger--active]=\"activeIndex() === i\"\n role=\"tab\"\n [id]=\"id() + '-trigger-' + i\"\n [attr.aria-selected]=\"activeIndex() === i\"\n [attr.aria-controls]=\"id() + '-panel-' + i\"\n [tabIndex]=\"activeIndex() === i ? 0 : -1\"\n (click)=\"select(i)\"\n (keydown)=\"onKeydown($event, i)\"\n >\n {{ tab.label() }}\n </button>\n }\n </div>\n <div class=\"gbt-tabs__panels\">\n <ng-content></ng-content>\n </div>\n</div>\n","export interface Scale<T> {\n map(value: T): number\n invert(pixel: number): T\n readonly domain: [T, T]\n readonly range: [number, number]\n}\n\nexport function linearScale(domain: [number, number], range: [number, number]): Scale<number> {\n const [d0, d1] = domain\n const [r0, r1] = range\n const span = d1 - d0\n\n const ratio = span === 0 ? 0 : (r1 - r0) / span\n return {\n domain,\n range,\n map: (value) => r0 + (value - d0) * ratio,\n invert: (pixel) => (ratio === 0 ? d0 : d0 + (pixel - r0) / ratio),\n }\n}\n\nexport function timeScale(domain: [Date, Date], range: [number, number]): Scale<Date> {\n const numeric = linearScale([domain[0].getTime(), domain[1].getTime()], range)\n return {\n domain,\n range,\n map: (value) => numeric.map(value.getTime()),\n invert: (pixel) => new Date(numeric.invert(pixel)),\n }\n}\n\nexport interface BandScale {\n map(value: string): number\n invert(pixel: number): string | null\n readonly bandwidth: number\n readonly domain: string[]\n readonly range: [number, number]\n}\n\nexport function bandScale(domain: string[], range: [number, number], padding = 0): BandScale {\n const [r0, r1] = range\n const step = domain.length === 0 ? 0 : (r1 - r0) / domain.length\n\n const gutter = Math.min(Math.max(padding, 0), 1)\n const bandwidth = step * (1 - gutter)\n return {\n domain,\n range,\n bandwidth,\n map: (value) => {\n const index = domain.indexOf(value)\n\n return index === -1 ? Number.NaN : r0 + index * step\n },\n invert: (pixel) => {\n if (step === 0) return null\n const index = Math.floor((pixel - r0) / step)\n return index >= 0 && index < domain.length ? domain[index] : null\n },\n }\n}\n","export function niceTicks(min: number, max: number, count: number): number[] {\n if (!Number.isFinite(min) || !Number.isFinite(max)) return []\n\n if (min === max) return [min]\n\n if (max < min) return niceTicks(max, min, count)\n\n const rawStep = (max - min) / Math.max(1, count)\n const magnitude = 10 ** Math.floor(Math.log10(rawStep))\n const normalized = rawStep / magnitude\n const step = magnitude * (normalized <= 1 ? 1 : normalized <= 2 ? 2 : normalized <= 5 ? 5 : 10)\n\n const first = Math.floor(min / step) * step\n const last = Math.ceil(max / step) * step\n\n const decimals = Math.max(0, -Math.floor(Math.log10(step)))\n\n const ticks: number[] = []\n\n for (let value = first; value <= last + step / 1e9; value += step) {\n ticks.push(Number(value.toFixed(decimals)))\n }\n return ticks\n}\n\nexport type TimeUnit = 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'\n\nexport interface TimeTicks {\n readonly values: Date[]\n readonly unit: TimeUnit\n format(date: Date, locale: string): string\n}\n\nconst SECOND = 1000\nconst MINUTE = 60 * SECOND\nconst HOUR = 60 * MINUTE\nconst DAY = 24 * HOUR\n\nconst STEPS: { ms: number; unit: TimeUnit; months?: number }[] = [\n { ms: SECOND, unit: 'second' },\n { ms: 5 * SECOND, unit: 'second' },\n { ms: 15 * SECOND, unit: 'second' },\n { ms: 30 * SECOND, unit: 'second' },\n { ms: MINUTE, unit: 'minute' },\n { ms: 5 * MINUTE, unit: 'minute' },\n { ms: 15 * MINUTE, unit: 'minute' },\n { ms: 30 * MINUTE, unit: 'minute' },\n { ms: HOUR, unit: 'hour' },\n { ms: 3 * HOUR, unit: 'hour' },\n { ms: 6 * HOUR, unit: 'hour' },\n { ms: 12 * HOUR, unit: 'hour' },\n { ms: DAY, unit: 'day' },\n { ms: 2 * DAY, unit: 'day' },\n { ms: 7 * DAY, unit: 'day' },\n { ms: 30 * DAY, unit: 'month', months: 1 },\n { ms: 90 * DAY, unit: 'month', months: 3 },\n { ms: 365 * DAY, unit: 'year', months: 12 },\n]\n\nconst FORMATS: Record<TimeUnit, Intl.DateTimeFormatOptions> = {\n second: { hour: '2-digit', minute: '2-digit', second: '2-digit' },\n minute: { hour: '2-digit', minute: '2-digit' },\n hour: { hour: '2-digit', minute: '2-digit' },\n day: { day: '2-digit', month: '2-digit' },\n month: { month: 'short', year: 'numeric' },\n year: { year: 'numeric' },\n}\n\nconst MIN_PIXELS_PER_TICK = 60\n\nexport function timeTicks(start: Date, end: Date, pixelWidth: number): TimeTicks {\n const span = end.getTime() - start.getTime()\n const makeFormatter = (unit: TimeUnit) => (date: Date, locale: string) =>\n new Intl.DateTimeFormat(locale, { ...FORMATS[unit], timeZone: 'UTC' }).format(date)\n\n if (span <= 0) {\n return { values: [start], unit: 'day', format: makeFormatter('day') }\n }\n\n const maxTicks = Math.max(2, Math.floor(pixelWidth / MIN_PIXELS_PER_TICK))\n\n const coarsest = STEPS[STEPS.length - 1]\n const chosen = STEPS.find((step) => span / step.ms + 1 <= maxTicks) ?? {\n ...coarsest,\n months: coarsest.months! * Math.max(1, Math.ceil((span / coarsest.ms + 1) / maxTicks)),\n }\n\n const values: Date[] = []\n if (chosen.months) {\n const step = chosen.months\n const cursor =\n step >= 12\n ? new Date(Date.UTC(Math.floor(start.getUTCFullYear() / (step / 12)) * (step / 12), 0, 1))\n : new Date(\n Date.UTC(start.getUTCFullYear(), Math.floor(start.getUTCMonth() / step) * step, 1),\n )\n while (cursor.getTime() < start.getTime()) cursor.setUTCMonth(cursor.getUTCMonth() + step)\n while (cursor.getTime() <= end.getTime()) {\n values.push(new Date(cursor))\n cursor.setUTCMonth(cursor.getUTCMonth() + step)\n }\n } else {\n const first = Math.ceil(start.getTime() / chosen.ms) * chosen.ms\n for (let t = first; t <= end.getTime(); t += chosen.ms) {\n values.push(new Date(t))\n }\n }\n\n if (values.length === 0) values.push(start)\n\n return { values, unit: chosen.unit, format: makeFormatter(chosen.unit) }\n}\n","export function formatNumber(value: number, locale: string, decimals?: number): string {\n return new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value)\n}\n\nexport function formatCompact(value: number, locale: string): string {\n return new Intl.NumberFormat(locale, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(value)\n}\n\nexport function formatDuration(ms: number, locale: string): string {\n if (ms < 1000) return `${formatNumber(Math.round(ms), locale)} ms`\n\n const totalSeconds = Math.round(ms / 1000)\n const hours = Math.floor(totalSeconds / 3600)\n const minutes = Math.floor((totalSeconds % 3600) / 60)\n const seconds = totalSeconds % 60\n const num = (value: number) => formatNumber(value, locale)\n\n if (hours > 0) return minutes > 0 ? `${num(hours)} h ${num(minutes)} min` : `${num(hours)} h`\n if (minutes > 0)\n return seconds > 0 ? `${num(minutes)} min ${num(seconds)} s` : `${num(minutes)} min`\n return `${num(seconds)} s`\n}\n\nexport function formatPercent(ratio: number, locale: string, decimals = 0): string {\n return new Intl.NumberFormat(locale, {\n style: 'percent',\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(ratio)\n}\n","export interface Point {\n x: number\n y: number\n}\n\nconst round = (n: number): number => Number(n.toFixed(2))\n\nexport function linePath(points: Point[]): string {\n if (points.length === 0) return ''\n return points\n .map((point, index) => `${index === 0 ? 'M' : 'L'}${round(point.x)},${round(point.y)}`)\n .join('')\n}\n\nexport function areaPath(points: Point[], baseline: number): string {\n if (points.length === 0) return ''\n const last = points[points.length - 1]\n const first = points[0]\n return `${linePath(points)}L${round(last.x)},${round(baseline)}L${round(first.x)},${round(baseline)}Z`\n}\n","export function nearestIndex(sorted: number[], target: number): number {\n if (sorted.length === 0) return -1\n\n let low = 0\n let high = sorted.length - 1\n while (low < high) {\n const mid = (low + high) >> 1\n if (sorted[mid] < target) low = mid + 1\n else high = mid\n }\n\n const previous = low - 1\n if (previous < 0) return low\n return target - sorted[previous] <= sorted[low] - target ? previous : low\n}\n","export const ESTIMATED_CHAR_WIDTH = 6.5\n\nexport const LABEL_GAP = 8\n\nexport function estimateLabelWidth(label: string): number {\n return label.length * ESTIMATED_CHAR_WIDTH\n}\n","import { Injectable, InjectionToken, computed, signal, type Signal } from '@angular/core'\nimport { bandScale, linearScale, timeScale, type BandScale, type Scale } from '../../../primitives'\n\nexport interface ChartMargin {\n top: number\n right: number\n bottom: number\n left: number\n}\n\nexport interface ChartBox {\n readonly width: number\n readonly height: number\n readonly margin: ChartMargin\n readonly innerWidth: number\n readonly innerHeight: number\n}\n\nexport type LinearAxisSpec = { kind: 'linear'; domain: [number, number] }\n\nexport type PointValue = number | Date | string\n\nexport type AxisSpec =\n | LinearAxisSpec\n | { kind: 'time'; domain: [Date, Date] }\n | { kind: 'band'; domain: string[]; padding?: number }\n\nconst EMPTY_BOX: ChartBox = {\n width: 0,\n height: 0,\n margin: { top: 0, right: 0, bottom: 0, left: 0 },\n innerWidth: 0,\n innerHeight: 0,\n}\n\nexport interface ChartReader {\n readonly box: Signal<ChartBox>\n readonly xSpec: Signal<AxisSpec>\n readonly ySpec: Signal<LinearAxisSpec>\n readonly xScale: Signal<Scale<number> | Scale<Date> | BandScale>\n readonly yScale: Signal<Scale<number>>\n readonly activeIndex: Signal<number | null>\n readonly pointValues: Signal<PointValue[]>\n readonly activePosition: Signal<number | null>\n}\n\nexport const CHART_CONTEXT = new InjectionToken<ChartReader>('gbt-chart-context')\n\n@Injectable()\nexport class ChartContext implements ChartReader {\n private readonly _box = signal<ChartBox>(EMPTY_BOX)\n private readonly _xSpec = signal<AxisSpec>({ kind: 'linear', domain: [0, 1] })\n private readonly _ySpec = signal<LinearAxisSpec>({ kind: 'linear', domain: [0, 1] })\n private readonly _activeIndex = signal<number | null>(null)\n private readonly _pointValues = signal<PointValue[]>([])\n\n readonly box = this._box.asReadonly()\n readonly xSpec = this._xSpec.asReadonly()\n readonly ySpec = this._ySpec.asReadonly()\n readonly activeIndex = this._activeIndex.asReadonly()\n readonly pointValues = this._pointValues.asReadonly()\n\n readonly xScale = computed<Scale<number> | Scale<Date> | BandScale>(() => {\n const spec = this._xSpec()\n const range: [number, number] = [0, this._box().innerWidth]\n if (spec.kind === 'time') return timeScale(spec.domain, range)\n if (spec.kind === 'band') return bandScale(spec.domain, range, spec.padding ?? 0)\n return linearScale(spec.domain, range)\n })\n\n readonly yScale = computed<Scale<number>>(() =>\n linearScale(this._ySpec().domain, [this._box().innerHeight, 0]),\n )\n\n readonly pointPositions = computed<number[]>(() => {\n const kind = this._xSpec().kind\n const scale = this.xScale()\n return this._pointValues().map((value) =>\n kind === 'band'\n ? (scale as BandScale).map(value as string) + (scale as BandScale).bandwidth / 2\n : (scale as Scale<number> | Scale<Date>).map(value as never),\n )\n })\n\n readonly activePosition = computed<number | null>(() => {\n const index = this._activeIndex()\n if (index === null) return null\n return this.pointPositions()[index] ?? null\n })\n\n setPointValues(values: PointValue[]): void {\n this._pointValues.set(values)\n }\n\n setGeometry(box: ChartBox): void {\n this._box.set(box)\n }\n\n setSpecs(x: AxisSpec, y: LinearAxisSpec): void {\n this._xSpec.set(x)\n this._ySpec.set(y)\n }\n\n setActiveIndex(index: number | null): void {\n this._activeIndex.set(index)\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport {\n CHART_CONTEXT,\n ChartContext,\n type AxisSpec,\n type ChartMargin,\n type LinearAxisSpec,\n type PointValue,\n} from '../chart-context/chart-context'\nimport { nearestIndex } from '../../../primitives'\n\nconst DEFAULT_MARGIN: ChartMargin = { top: 16, right: 8, bottom: 32, left: 48 }\n\n@Component({\n selector: 'gbt-chart-frame',\n standalone: true,\n imports: [],\n templateUrl: './chart-frame.html',\n styleUrl: './chart-frame.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ChartContext, { provide: CHART_CONTEXT, useExisting: ChartContext }],\n})\nexport class ChartFrame {\n private readonly context = inject(ChartContext)\n\n label = input.required<string>()\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n x = input.required<AxisSpec>()\n y = input.required<LinearAxisSpec>()\n margin = input<Partial<ChartMargin>>({})\n size = input<{ width: number; height: number } | null>(null)\n pointValues = input<PointValue[]>([])\n\n readonly activeIndexChange = output<number | null>()\n\n private readonly surface = viewChild.required<ElementRef<HTMLElement>>('surface')\n private readonly measured = signal<{ width: number; height: number } | null>(null)\n\n protected readonly ready = computed(() => this.context.box().innerWidth > 0)\n\n protected readonly viewBox = computed(() => {\n const b = this.context.box()\n return `0 0 ${b.width} ${b.height}`\n })\n\n protected readonly innerTransform = computed(() => {\n const m = this.context.box().margin\n return `translate(${m.left},${m.top})`\n })\n\n protected readonly activePosition = computed(() => this.context.activePosition())\n protected readonly innerHeight = computed(() => this.context.box().innerHeight)\n\n constructor() {\n effect(() => this.activeIndexChange.emit(this.context.activeIndex()))\n\n effect(() => {\n const margin = { ...DEFAULT_MARGIN, ...this.margin() }\n const size = this.size() ?? this.measured()\n const width = size?.width ?? 0\n const height = size?.height ?? 0\n this.context.setSpecs(this.x(), this.y())\n this.context.setPointValues(this.pointValues())\n this.context.setGeometry({\n width,\n height,\n margin,\n innerWidth: Math.max(0, width - margin.left - margin.right),\n innerHeight: Math.max(0, height - margin.top - margin.bottom),\n })\n })\n\n effect((onCleanup) => {\n if (this.size() || typeof ResizeObserver === 'undefined') return\n\n const element = this.surface().nativeElement\n const observer = new ResizeObserver((entries) => {\n const rect = entries[0]?.contentRect\n if (rect) this.measured.set({ width: rect.width, height: rect.height })\n })\n observer.observe(element)\n onCleanup(() => observer.disconnect())\n })\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const count = this.pointValues().length\n if (count === 0) return\n\n const current = this.context.activeIndex()\n const last = count - 1\n\n switch (event.key) {\n case 'ArrowRight':\n this.context.setActiveIndex(current === null ? 0 : Math.min(last, current + 1))\n break\n case 'ArrowLeft':\n this.context.setActiveIndex(current === null ? last : Math.max(0, current - 1))\n break\n case 'Home':\n this.context.setActiveIndex(0)\n break\n case 'End':\n this.context.setActiveIndex(last)\n break\n case 'Escape':\n this.context.setActiveIndex(null)\n break\n default:\n return\n }\n\n event.preventDefault()\n }\n\n protected onBlur(): void {\n this.context.setActiveIndex(null)\n }\n\n protected onPointerMove(event: PointerEvent | MouseEvent): void {\n const positions = this.context.pointPositions()\n if (positions.length === 0) return\n\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect()\n const local = event.clientX - rect.left - this.context.box().margin.left\n\n this.context.setActiveIndex(nearestIndex(positions, local))\n }\n\n protected onPointerLeave(event: PointerEvent | MouseEvent): void {\n const surface = event.currentTarget as HTMLElement\n if (surface.ownerDocument.activeElement === surface) return\n this.context.setActiveIndex(null)\n }\n}\n","<div class=\"gbt-chart-frame\">\n @if (heading()) {\n <div class=\"gbt-chart-frame__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-chart-frame__title\">{{ heading() }}</h1>\n }\n @case (3) {\n <h3 class=\"gbt-chart-frame__title\">{{ heading() }}</h3>\n }\n @case (4) {\n <h4 class=\"gbt-chart-frame__title\">{{ heading() }}</h4>\n }\n @case (5) {\n <h5 class=\"gbt-chart-frame__title\">{{ heading() }}</h5>\n }\n @case (6) {\n <h6 class=\"gbt-chart-frame__title\">{{ heading() }}</h6>\n }\n @default {\n <h2 class=\"gbt-chart-frame__title\">{{ heading() }}</h2>\n }\n }\n @if (headline()) {\n <p class=\"gbt-chart-frame__headline\">{{ headline() }}</p>\n }\n @if (trend()) {\n <p class=\"gbt-chart-frame__trend\">{{ trend() }}</p>\n }\n </div>\n }\n\n <div\n #surface\n class=\"gbt-chart-frame__surface\"\n [attr.tabindex]=\"ready() && pointValues().length > 0 ? 0 : null\"\n [attr.role]=\"ready() ? 'group' : null\"\n [attr.aria-label]=\"ready() ? label() : null\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerleave)=\"onPointerLeave($event)\"\n >\n @if (ready()) {\n <svg\n class=\"gbt-chart-frame__svg\"\n [attr.viewBox]=\"viewBox()\"\n role=\"presentation\"\n focusable=\"false\"\n >\n <g [attr.transform]=\"innerTransform()\">\n <ng-content select=\"[gbtChartLayer]\" />\n @if (activePosition() !== null) {\n <line\n class=\"gbt-chart-frame__guide\"\n [attr.x1]=\"activePosition()\"\n [attr.x2]=\"activePosition()\"\n y1=\"0\"\n [attr.y2]=\"innerHeight()\"\n aria-hidden=\"true\"\n />\n }\n </g>\n </svg>\n <ng-content select=\"gbt-chart-tooltip\" />\n }\n </div>\n <ng-content select=\"gbt-chart-empty\" />\n <ng-content select=\"gbt-chart-table\" />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n inject,\n input,\n} from '@angular/core'\nimport { CHART_CONTEXT, type ChartReader } from '../chart-context/chart-context'\nimport {\n LABEL_GAP,\n estimateLabelWidth,\n formatCompact,\n niceTicks,\n timeTicks,\n type BandScale,\n type Scale,\n} from '../../../primitives'\n\ninterface Tick {\n key: string\n x: number\n y: number\n label: string\n\n date: string | null\n anchor: 'start' | 'middle' | 'end'\n}\n\n@Component({\n selector: 'g[gbtChartAxis]',\n standalone: true,\n imports: [],\n templateUrl: './chart-axis.html',\n styleUrl: './chart-axis.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.transform]': 'groupTransform()',\n '[attr.axis]': 'axis()',\n 'aria-hidden': 'true',\n },\n})\nexport class ChartAxis {\n private readonly context: ChartReader = inject(CHART_CONTEXT)\n\n axis = input.required<'x' | 'y'>()\n locale = input.required<string>()\n tickCount = input(5)\n format = input<((value: never) => string) | null>(null)\n grid = input(false, { transform: booleanAttribute })\n\n protected readonly groupTransform = computed(() => {\n const box = this.context.box()\n\n return this.axis() === 'x' ? `translate(0,${box.innerHeight})` : 'translate(0,0)'\n })\n\n protected readonly ticks = computed<Tick[]>(() => {\n if (this.axis() === 'y') return this.yTicks()\n const ticks = this.xTicks()\n\n if (this.context.xSpec().kind === 'band') return ticks\n\n const last = ticks.length - 1\n return ticks.map((tick, index) => ({\n ...tick,\n anchor: index === 0 ? 'start' : index === last ? 'end' : 'middle',\n }))\n })\n\n protected readonly gridLines = computed<number[]>(() => {\n if (!this.grid() || this.axis() !== 'y') return []\n return this.yTicks().map((tick) => tick.y - 4)\n })\n\n protected readonly innerWidth = computed(() => this.context.box().innerWidth)\n\n private yTicks(): Tick[] {\n const spec = this.context.ySpec()\n const scale = this.context.yScale()\n const custom = this.format()\n return niceTicks(spec.domain[0], spec.domain[1], this.tickCount()).map((value) => ({\n key: `y-${value}`,\n x: -8,\n y: scale.map(value) + 4,\n label: custom ? custom(value as never) : formatCompact(value, this.locale()),\n date: null,\n anchor: 'end',\n }))\n }\n\n private xTicks(): Tick[] {\n const spec = this.context.xSpec()\n const box = this.context.box()\n const custom = this.format()\n\n if (spec.kind === 'band') {\n const scale = this.context.xScale() as BandScale\n\n const labels = spec.domain.map((category) => (custom ? custom(category as never) : category))\n const step = spec.domain.length === 0 ? 0 : box.innerWidth / spec.domain.length\n const widest = labels.reduce((large, label) => Math.max(large, estimateLabelWidth(label)), 0)\n const keepEvery = Math.max(1, Math.ceil((widest + LABEL_GAP) / Math.max(step, 1)))\n\n return spec.domain\n .map((category, index) => ({\n key: `x-${category}`,\n x: scale.map(category) + scale.bandwidth / 2,\n y: 20,\n label: labels[index],\n date: null,\n anchor: 'middle' as const,\n }))\n .filter((_, index) => index % keepEvery === 0)\n }\n\n if (spec.kind === 'time') {\n const scale = this.context.xScale() as Scale<Date>\n const result = timeTicks(spec.domain[0], spec.domain[1], box.innerWidth)\n\n const fine = result.unit === 'hour' || result.unit === 'minute' || result.unit === 'second'\n const days = new Set(result.values.map((v) => v.toISOString().slice(0, 10)))\n const multiDay = days.size > 1\n const seen = new Set<string>()\n\n return result.values.map((value) => {\n const day = value.toISOString().slice(0, 10)\n\n const first = fine && multiDay && !seen.has(day)\n seen.add(day)\n\n return {\n key: `x-${value.getTime()}`,\n x: scale.map(value),\n y: first ? 14 : 20,\n label: custom ? custom(value as never) : result.format(value, this.locale()),\n date: first\n ? new Intl.DateTimeFormat(this.locale(), {\n day: '2-digit',\n month: '2-digit',\n timeZone: 'UTC',\n }).format(value)\n : null,\n anchor: 'middle',\n }\n })\n }\n\n const scale = this.context.xScale() as Scale<number>\n return niceTicks(spec.domain[0], spec.domain[1], this.tickCount()).map((value) => ({\n key: `x-${value}`,\n x: scale.map(value),\n y: 20,\n label: custom ? custom(value as never) : formatCompact(value, this.locale()),\n date: null,\n anchor: 'middle',\n }))\n }\n}\n","@for (y of gridLines(); track $index) {\n <svg:line\n class=\"gbt-chart-axis__grid\"\n x1=\"0\"\n [attr.x2]=\"innerWidth()\"\n [attr.y1]=\"y\"\n [attr.y2]=\"y\"\n />\n}\n@for (tick of ticks(); track tick.key) {\n <svg:text\n class=\"gbt-chart-axis__label\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"tick.y\"\n [attr.text-anchor]=\"tick.anchor\"\n >\n @if (tick.date) {\n <svg:tspan [attr.x]=\"tick.x\" dy=\"0\">{{ tick.label }}</svg:tspan>\n <svg:tspan [attr.x]=\"tick.x\" dy=\"1.1em\">{{ tick.date }}</svg:tspan>\n } @else {\n {{ tick.label }}\n }\n </svg:text>\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\n\nexport interface TooltipRow {\n label: string\n value: string\n\n series?: 1 | 2 | 3\n\n pattern?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport interface TooltipPoint<X> {\n x: X\n\n header: string\n rows: TooltipRow[]\n}\n\n@Component({\n selector: 'gbt-chart-tooltip',\n standalone: true,\n imports: [],\n templateUrl: './chart-tooltip.html',\n styleUrl: './chart-tooltip.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartTooltip<X> {\n private readonly context = inject(CHART_CONTEXT)\n\n points = input.required<TooltipPoint<X>[]>()\n\n protected readonly active = computed<TooltipPoint<X> | null>(() => {\n const index = this.context.activeIndex()\n if (index === null) return null\n return this.points()[index] ?? null\n })\n\n protected readonly left = computed(() => {\n const position = this.context.activePosition()\n if (position === null) return 0\n return position + this.context.box().margin.left\n })\n\n protected readonly anchor = computed<'start' | 'middle' | 'end'>(() => {\n const index = this.context.activeIndex()\n if (index === null) return 'middle'\n const last = this.context.pointValues().length - 1\n return index === 0 ? 'start' : index === last ? 'end' : 'middle'\n })\n}\n","<div class=\"gbt-chart-tooltip\" role=\"status\" aria-live=\"polite\">\n @if (active(); as point) {\n <div class=\"gbt-chart-tooltip__panel\" [style.left.px]=\"left()\" [attr.data-anchor]=\"anchor()\">\n <p class=\"gbt-chart-tooltip__header\">{{ point.header }}</p>\n <ul class=\"gbt-chart-tooltip__rows\">\n @for (row of point.rows; track $index) {\n <li>\n <span\n class=\"gbt-chart-tooltip__swatch\"\n [attr.data-series]=\"row.series ?? null\"\n [attr.data-pattern]=\"row.pattern ?? 'solid'\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"gbt-chart-tooltip__label\">{{ row.label }}</span>\n <span class=\"gbt-chart-tooltip__value\">{{ row.value }}</span>\n </li>\n }\n </ul>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\nexport interface LegendEntry {\n label: string\n\n pattern?: 'solid' | 'dashed' | 'dotted'\n\n value?: string\n}\n\nconst DASH_ARRAYS: Record<NonNullable<LegendEntry['pattern']>, string> = {\n solid: 'none',\n dashed: '6 3',\n dotted: '1 3',\n}\n\n@Component({\n selector: 'gbt-chart-legend',\n standalone: true,\n imports: [],\n templateUrl: './chart-legend.html',\n styleUrl: './chart-legend.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartLegend {\n entries = input.required<LegendEntry[]>()\n\n protected dashArray(pattern: LegendEntry['pattern']): string {\n return DASH_ARRAYS[pattern ?? 'solid']\n }\n}\n","<ul class=\"gbt-chart-legend\">\n @for (entry of entries(); track $index) {\n <li class=\"gbt-chart-legend__item\" [attr.data-pattern]=\"entry.pattern ?? 'solid'\">\n <svg class=\"gbt-chart-legend__swatch\" viewBox=\"0 0 24 8\" aria-hidden=\"true\" focusable=\"false\">\n <line\n class=\"gbt-chart-legend__line\"\n x1=\"0\"\n y1=\"4\"\n x2=\"24\"\n y2=\"4\"\n [attr.stroke-dasharray]=\"dashArray(entry.pattern)\"\n stroke-width=\"2\"\n />\n </svg>\n {{ entry.label }}\n @if (entry.value; as value) {\n <span class=\"gbt-chart-legend__value\">{{ value }}</span>\n }\n </li>\n }\n</ul>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core'\n\n@Component({\n selector: 'gbt-chart-empty',\n standalone: true,\n imports: [],\n templateUrl: './chart-empty.html',\n styleUrl: './chart-empty.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartEmpty {\n message = input.required<string>()\n actionLabel = input<string>('')\n\n action = output<void>()\n}\n","<div class=\"gbt-chart-empty\" role=\"status\">\n <p class=\"gbt-chart-empty__message\">{{ message() }}</p>\n @if (actionLabel()) {\n <button type=\"button\" class=\"gbt-chart-empty__action\" (click)=\"action.emit()\">\n {{ actionLabel() }}\n </button>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\n@Component({\n selector: 'gbt-chart-table',\n standalone: true,\n imports: [],\n templateUrl: './chart-table.html',\n styleUrl: './chart-table.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartTable {\n caption = input.required<string>()\n columns = input.required<string[]>()\n rows = input.required<(string | number)[][]>()\n}\n","<div class=\"gbt-sr-only\">\n <table>\n <caption>\n {{\n caption()\n }}\n </caption>\n <thead>\n <tr>\n @for (column of columns(); track column) {\n <th scope=\"col\">{{ column }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows(); track $index) {\n <tr>\n @for (cell of row; track $index) {\n <td>{{ cell }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\nimport { areaPath, linePath, type Scale } from '../../../primitives'\nimport type { ChartSeries } from '../chart-data/chart-data'\n\ninterface RenderedSeries {\n label: string\n strokePath: string\n fillPath: string\n\n colorIndex: number\n dashArray: string\n}\n\ninterface ActiveDot {\n x: number\n y: number\n colorIndex: number\n}\n\nconst DASH_ARRAYS: Record<NonNullable<ChartSeries<unknown>['pattern']>, string> = {\n solid: 'none',\n dashed: '6 3',\n dotted: '1 3',\n}\n\nexport const DEFAULT_PATTERNS: NonNullable<ChartSeries<unknown>['pattern']>[] = [\n 'solid',\n 'dashed',\n 'dotted',\n]\n\n@Component({\n selector: 'g[gbtLineSeries]',\n standalone: true,\n imports: [],\n templateUrl: './line-series.html',\n styleUrl: './line-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class LineSeries<X> {\n series = input.required<ChartSeries<X>[]>()\n area = input(false)\n\n private readonly context = inject(CHART_CONTEXT)\n\n protected readonly renderedLines = computed<RenderedSeries[]>(() => {\n const x = this.context.xScale() as Scale<never>\n const y = this.context.yScale()\n\n const base = Math.min(Math.max(y.map(0), 0), this.context.box().innerHeight)\n\n return this.series().map((oneSeries, index) => {\n const points = oneSeries.points.map((p) => ({\n x: x.map(p.x as never),\n y: y.map(p.y),\n }))\n return {\n label: oneSeries.label,\n strokePath: linePath(points),\n fillPath: areaPath(points, base),\n colorIndex: (index % 3) + 1,\n dashArray:\n DASH_ARRAYS[oneSeries.pattern ?? DEFAULT_PATTERNS[index % DEFAULT_PATTERNS.length]],\n }\n })\n })\n\n protected readonly activeDots = computed<ActiveDot[]>(() => {\n const activeIndex = this.context.activeIndex()\n if (activeIndex === null) return []\n const activeXValue = this.context.pointValues()[activeIndex]\n if (activeXValue === undefined) return []\n\n const key = activeXValue instanceof Date ? activeXValue.getTime() : activeXValue\n const x = this.context.xScale() as Scale<never>\n const y = this.context.yScale()\n\n const dots: ActiveDot[] = []\n this.series().forEach((oneSeries, seriesIndex) => {\n const point = oneSeries.points.find(\n (p) => (p.x instanceof Date ? p.x.getTime() : p.x) === key,\n )\n if (point === undefined) return\n dots.push({\n x: x.map(point.x as never),\n y: y.map(point.y),\n colorIndex: (seriesIndex % 3) + 1,\n })\n })\n return dots\n })\n}\n","@for (renderedLine of renderedLines(); track $index) {\n @if (area()) {\n <svg:path\n class=\"gbt-line-series__area\"\n [attr.d]=\"renderedLine.fillPath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n />\n }\n <svg:path\n class=\"gbt-line-series__line\"\n [attr.d]=\"renderedLine.strokePath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n [attr.stroke-dasharray]=\"renderedLine.dashArray\"\n />\n}\n@for (dot of activeDots(); track $index) {\n <svg:circle\n class=\"gbt-line-series__dot\"\n [attr.cx]=\"dot.x\"\n [attr.cy]=\"dot.y\"\n r=\"4\"\n [attr.data-series]=\"dot.colorIndex\"\n />\n}\n","import { niceTicks } from '../../../primitives'\n\nexport interface ChartPoint<X> {\n x: X\n y: number\n\n display?: string\n}\n\nexport interface ChartSeries<X> {\n label: string\n points: ChartPoint<X>[]\n\n pattern?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport interface ChartInterval {\n start: Date\n end: Date\n label: string\n}\n\nconst DAY = 86400000\n\nexport function yDomain<X>(series: ChartSeries<X>[], includeZero: boolean): [number, number] {\n const values = series.flatMap((s) => s.points.map((p) => p.y))\n\n if (values.length === 0) return [0, 1]\n\n let min = Math.min(...values)\n let max = Math.max(...values)\n if (includeZero) {\n min = Math.min(min, 0)\n max = Math.max(max, 0)\n }\n\n if (min === max) return [min, min + 1]\n return [min, max]\n}\n\nexport function numericXDomain(series: ChartSeries<number>[]): [number, number] {\n const values = series.flatMap((s) => s.points.map((p) => p.x))\n if (values.length === 0) return [0, 1]\n const min = Math.min(...values)\n const max = Math.max(...values)\n return min === max ? [min, min + 1] : [min, max]\n}\n\nexport function timeXDomain(series: ChartSeries<Date>[]): [Date, Date] {\n const values = series.flatMap((s) => s.points.map((p) => p.x.getTime()))\n\n if (values.length === 0) return [new Date(-DAY), new Date(0)]\n const min = Math.min(...values)\n const max = Math.max(...values)\n return min === max ? [new Date(min), new Date(min + DAY)] : [new Date(min), new Date(max)]\n}\n\nexport function longestSeriesLength<X>(series: ChartSeries<X>[]): number {\n return series.reduce((longest, s) => Math.max(longest, s.points.length), 0)\n}\n\nexport function niceYDomain<X>(\n series: ChartSeries<X>[],\n includeZero: boolean,\n tickCount: number,\n): [number, number] {\n const [min, max] = yDomain(series, includeZero)\n const ticks = niceTicks(min, max, tickCount)\n\n if (ticks.length === 0) return [min, max]\n return [ticks[0], ticks[ticks.length - 1]]\n}\n\nexport function niceXDomain(series: ChartSeries<number>[], tickCount: number): [number, number] {\n const [min, max] = numericXDomain(series)\n const ticks = niceTicks(min, max, tickCount)\n if (ticks.length === 0) return [min, max]\n return [ticks[0], ticks[ticks.length - 1]]\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n isDevMode,\n signal,\n} from '@angular/core'\nimport { ChartFrame } from '../chart-frame/chart-frame'\nimport { ChartAxis } from '../chart-axis/chart-axis'\nimport { ChartTooltip, type TooltipPoint } from '../chart-tooltip/chart-tooltip'\nimport { ChartLegend, type LegendEntry } from '../chart-legend/chart-legend'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { DEFAULT_PATTERNS, LineSeries } from './line-series'\nimport { formatCompact, formatNumber } from '../../../primitives'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '../chart-context/chart-context'\nimport {\n niceXDomain,\n niceYDomain,\n timeXDomain,\n type ChartPoint,\n type ChartSeries,\n} from '../chart-data/chart-data'\n\nconst MAX_SERIES = 3\n\nconst ABSENT = '—'\n\n@Component({\n selector: 'gbt-line-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartLegend, ChartEmpty, ChartTable, LineSeries],\n templateUrl: './line-chart.html',\n styleUrl: './line-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LineChart<X extends number | Date> {\n series = input.required<ChartSeries<X>[]>()\n xKind = input.required<'linear' | 'time'>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n area = input(false)\n yZero = input(true)\n yTickCount = input(5)\n xTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly hasData = computed(() => this.series().some((s) => s.points.length > 0))\n\n protected readonly xSpec = computed<AxisSpec>(() =>\n this.xKind() === 'time'\n ? { kind: 'time', domain: timeXDomain(this.series() as ChartSeries<Date>[]) }\n : {\n kind: 'linear',\n domain: niceXDomain(this.series() as ChartSeries<number>[], this.xTickCount()),\n },\n )\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n domain: niceYDomain(this.series(), this.yZero(), this.yTickCount()),\n }))\n\n protected readonly legendEntries = computed<LegendEntry[]>(() => {\n const index = this.activeIndex()\n const xValues = this.xValues()\n\n const x = index === null ? xValues[xValues.length - 1] : xValues[index]\n return this.series().map((s, seriesIndex) => ({\n label: s.label,\n\n pattern: s.pattern ?? DEFAULT_PATTERNS[seriesIndex % DEFAULT_PATTERNS.length],\n value: x === undefined ? ABSENT : this.displayValue(s, x),\n }))\n })\n\n protected readonly publicXValues = computed<PointValue[]>(() => this.xValues())\n\n protected readonly tooltipPoints = computed<TooltipPoint<X>[]>(() =>\n this.xValues().map((x) => ({\n x,\n header: this.formatX(x),\n rows: this.series().map((s, index) => ({\n label: s.label,\n value: this.displayValue(s, x),\n series: ((index % 3) + 1) as 1 | 2 | 3,\n pattern: s.pattern ?? DEFAULT_PATTERNS[index % DEFAULT_PATTERNS.length],\n })),\n })),\n )\n\n protected readonly tableColumns = computed(() => [\n this.xColumn(),\n ...this.series().map((s) => s.label),\n ])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.xValues().map((x) => [\n this.formatX(x),\n ...this.series().map((s) => this.displayValue(s, x)),\n ]),\n )\n\n private readonly formatX = (x: X): string =>\n x instanceof Date\n ? new Intl.DateTimeFormat(this.locale(), {\n dateStyle: 'short',\n timeStyle: 'short',\n timeZone: 'UTC',\n }).format(x)\n : formatCompact(x as number, this.locale())\n\n private readonly xValues = computed<X[]>(() => {\n const seen = new Map<number | string, X>()\n for (const oneSeries of this.series()) {\n for (const point of oneSeries.points) {\n seen.set(point.x instanceof Date ? point.x.getTime() : (point.x as number), point.x)\n }\n }\n return [...seen.entries()]\n .sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0))\n .map(([, x]) => x)\n })\n\n private findPoint(oneSeries: ChartSeries<X>, x: X): ChartPoint<X> | null {\n const key = x instanceof Date ? x.getTime() : x\n return oneSeries.points.find((p) => (p.x instanceof Date ? p.x.getTime() : p.x) === key) ?? null\n }\n\n private displayValue(oneSeries: ChartSeries<X>, x: X): string {\n const point = this.findPoint(oneSeries, x)\n if (point === null) return ABSENT\n return point.display ?? formatNumber(point.y, this.locale())\n }\n\n constructor() {\n if (isDevMode()) {\n effect(() => {\n const count = this.series().length\n if (count > MAX_SERIES) {\n console.warn(\n `gbt-line-chart: ${count} series received for ${MAX_SERIES} distinguishable colors. The palette cycles.`,\n )\n }\n })\n }\n }\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n (activeIndexChange)=\"activeIndex.set($event)\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\" [tickCount]=\"xTickCount()\"></svg:g>\n <svg:g gbtLineSeries [series]=\"series()\" [area]=\"area()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n } @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n@if (series().length > 1) {\n <gbt-chart-legend [entries]=\"legendEntries()\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\nimport type { BandScale } from '../../../primitives'\nimport type { ChartSeries } from '../chart-data/chart-data'\n\ninterface RenderedBar {\n category: string\n x: number\n y: number\n width: number\n height: number\n}\n\n@Component({\n selector: 'g[gbtBarSeries]',\n standalone: true,\n imports: [],\n templateUrl: './bar-series.html',\n styleUrl: './bar-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class BarSeries {\n private readonly context = inject(CHART_CONTEXT)\n\n series = input.required<ChartSeries<string>>()\n\n protected readonly activeIndex = computed(() => this.context.activeIndex())\n\n protected readonly bars = computed<RenderedBar[]>(() => {\n const x = this.context.xScale() as BandScale\n const y = this.context.yScale()\n const base = y.map(0)\n\n return this.series().points.map((point) => {\n const top = y.map(point.y)\n return {\n category: point.x,\n x: x.map(point.x),\n\n y: Math.min(top, base),\n width: x.bandwidth,\n height: Math.abs(base - top),\n }\n })\n })\n}\n","@for (bar of bars(); track bar.category) {\n <svg:rect\n class=\"gbt-bar-series__bar\"\n [attr.x]=\"bar.x\"\n [attr.y]=\"bar.y\"\n [attr.width]=\"bar.width\"\n [attr.height]=\"bar.height\"\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n />\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\nimport { ChartFrame } from '../chart-frame/chart-frame'\nimport { ChartAxis } from '../chart-axis/chart-axis'\nimport { ChartTooltip, type TooltipPoint } from '../chart-tooltip/chart-tooltip'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { BarSeries } from './bar-series'\nimport { formatNumber } from '../../../primitives'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '../chart-context/chart-context'\nimport { niceYDomain, type ChartPoint, type ChartSeries } from '../chart-data/chart-data'\n\nconst BAND_PADDING = 0.2\n\n@Component({\n selector: 'gbt-bar-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartEmpty, ChartTable, BarSeries],\n templateUrl: './bar-chart.html',\n styleUrl: './bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChart {\n series = input.required<ChartSeries<string>>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n yTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly hasData = computed(() => this.series().points.length > 0)\n\n protected readonly publicXValues = computed<PointValue[]>(() =>\n this.series().points.map((p) => p.x),\n )\n\n protected readonly xSpec = computed<AxisSpec>(() => ({\n kind: 'band',\n domain: this.series().points.map((p) => p.x),\n padding: BAND_PADDING,\n }))\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n\n domain: niceYDomain([this.series()], true, this.yTickCount()),\n }))\n\n private displayValue(point: ChartPoint<string>): string {\n return point.display ?? formatNumber(point.y, this.locale())\n }\n\n protected readonly tooltipPoints = computed<TooltipPoint<string>[]>(() =>\n this.series().points.map((point) => ({\n x: point.x,\n header: point.x,\n rows: [{ label: this.series().label, value: this.displayValue(point), series: 1 }],\n })),\n )\n\n protected readonly tableColumns = computed(() => [this.xColumn(), this.series().label])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.series().points.map((point) => [point.x, this.displayValue(point)]),\n )\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\"></svg:g>\n <svg:g gbtBarSeries [series]=\"series()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n } @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\nimport { estimateLabelWidth, linePath, type Scale } from '../../../primitives'\nimport type { ChartInterval, ChartSeries } from '../chart-data/chart-data'\n\nconst LABEL_INSET = 4\n\nconst STROKE_WIDTH = 3\nconst STROKE_WIDTH_ACTIVE = 6\n\ninterface RenderedBand {\n label: string\n x: number\n width: number\n\n labeled: boolean\n\n active: boolean\n strokeWidth: number\n}\n\n@Component({\n selector: 'g[gbtTimelineSeries]',\n standalone: true,\n imports: [],\n templateUrl: './timeline-series.html',\n styleUrl: './timeline-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class TimelineSeries {\n series = input.required<ChartSeries<Date>>()\n intervals = input.required<ChartInterval[]>()\n\n private readonly context = inject(CHART_CONTEXT)\n\n protected readonly height = computed(() => this.context.box().innerHeight)\n\n protected readonly strokePath = computed(() => {\n const x = this.context.xScale() as Scale<Date>\n const y = this.context.yScale()\n return linePath(this.series().points.map((p) => ({ x: x.map(p.x), y: y.map(p.y) })))\n })\n\n private readonly activeInstant = computed<number | null>(() => {\n const index = this.context.activeIndex()\n if (index === null) return null\n const value = this.context.pointValues()[index]\n return value instanceof Date ? value.getTime() : null\n })\n\n protected readonly activePoint = computed<{ x: number; y: number } | null>(() => {\n const time = this.activeInstant()\n if (time === null) return null\n const point = this.series().points.find((p) => p.x.getTime() === time)\n if (point === undefined) return null\n const x = this.context.xScale() as Scale<Date>\n const y = this.context.yScale()\n return { x: x.map(point.x), y: y.map(point.y) }\n })\n\n protected readonly bands = computed<RenderedBand[]>(() => {\n const x = this.context.xScale() as Scale<Date>\n const activeTime = this.activeInstant()\n return this.intervals().map((interval) => {\n const start = x.map(interval.start)\n const end = x.map(interval.end)\n const width = Math.max(1, end - start)\n\n const active =\n activeTime !== null &&\n activeTime >= interval.start.getTime() &&\n activeTime <= interval.end.getTime()\n return {\n label: interval.label,\n x: start,\n width,\n\n labeled: LABEL_INSET + estimateLabelWidth(interval.label) <= width,\n active,\n strokeWidth: active ? STROKE_WIDTH_ACTIVE : STROKE_WIDTH,\n }\n })\n })\n}\n","@for (band of bands(); track $index) {\n <svg:rect\n class=\"gbt-timeline-series__band\"\n [attr.x]=\"band.x\"\n y=\"0\"\n [attr.width]=\"band.width\"\n [attr.height]=\"height()\"\n />\n <svg:rect\n class=\"gbt-timeline-series__band-edge\"\n [attr.x]=\"band.x\"\n y=\"0\"\n [attr.width]=\"band.width\"\n [attr.height]=\"band.strokeWidth\"\n [attr.data-active]=\"band.active ? '' : null\"\n />\n @if (band.labeled) {\n <svg:text class=\"gbt-timeline-series__band-label\" [attr.x]=\"band.x + 4\" y=\"14\">\n {{ band.label }}\n </svg:text>\n }\n}\n@if (strokePath(); as d) {\n <svg:path class=\"gbt-timeline-series__line\" [attr.d]=\"d\" />\n}\n@if (activePoint(); as p) {\n <svg:circle class=\"gbt-timeline-series__dot\" [attr.cx]=\"p.x\" [attr.cy]=\"p.y\" r=\"4\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\nimport { ChartFrame } from '../chart-frame/chart-frame'\nimport { ChartAxis } from '../chart-axis/chart-axis'\nimport { ChartTooltip, type TooltipPoint } from '../chart-tooltip/chart-tooltip'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { TimelineSeries } from './timeline-series'\nimport { formatNumber } from '../../../primitives'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '../chart-context/chart-context'\nimport {\n niceYDomain,\n timeXDomain,\n type ChartInterval,\n type ChartPoint,\n type ChartSeries,\n} from '../chart-data/chart-data'\n\n@Component({\n selector: 'gbt-timeline-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartEmpty, ChartTable, TimelineSeries],\n templateUrl: './timeline-chart.html',\n styleUrl: './timeline-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineChart {\n series = input.required<ChartSeries<Date>>()\n intervals = input.required<ChartInterval[]>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n intervalsCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n yZero = input(true)\n yTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly hasData = computed(() => this.series().points.length > 0)\n\n protected readonly publicXValues = computed<PointValue[]>(() =>\n this.series().points.map((p) => p.x),\n )\n\n protected readonly xSpec = computed<AxisSpec>(() => ({\n kind: 'time',\n domain: timeXDomain([this.series()]),\n }))\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n domain: niceYDomain([this.series()], this.yZero(), this.yTickCount()),\n }))\n\n protected readonly tooltipPoints = computed<TooltipPoint<Date>[]>(() =>\n this.series().points.map((point) => ({\n x: point.x,\n header: this.formatInstant(point.x),\n rows: [{ label: this.series().label, value: this.displayValue(point), series: 1 }],\n })),\n )\n\n protected readonly tableColumns = computed(() => [this.xColumn(), this.series().label])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.series().points.map((point) => [this.formatInstant(point.x), this.displayValue(point)]),\n )\n\n protected readonly intervalColumns = computed(() => [\n this.intervalsCaption(),\n `${this.xColumn()} — start`,\n `${this.xColumn()} — end`,\n ])\n\n protected readonly intervalRows = computed<(string | number)[][]>(() =>\n this.intervals().map((interval) => [\n interval.label,\n this.formatInstant(interval.start),\n this.formatInstant(interval.end),\n ]),\n )\n\n private readonly formatInstant = (d: Date): string =>\n new Intl.DateTimeFormat(this.locale(), {\n dateStyle: 'short',\n timeStyle: 'short',\n timeZone: 'UTC',\n }).format(d)\n\n private displayValue(point: ChartPoint<Date>): string {\n return point.display ?? formatNumber(point.y, this.locale())\n }\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\"></svg:g>\n <svg:g gbtTimelineSeries [series]=\"series()\" [intervals]=\"intervals()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n }\n @if (hasData() && intervals().length > 0) {\n <gbt-chart-table\n [caption]=\"intervalsCaption()\"\n [columns]=\"intervalColumns()\"\n [rows]=\"intervalRows()\"\n />\n }\n @if (!hasData()) {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\nimport { ChartEmpty } from '../../organisms/chart-empty/chart-empty'\nimport { ChartTable } from '../../organisms/chart-table/chart-table'\nimport { formatNumber, linePath, linearScale, nearestIndex } from '../../../primitives'\n\nconst MARGIN = 4\n\n@Component({\n selector: 'gbt-sparkline',\n standalone: true,\n imports: [ChartEmpty, ChartTable],\n templateUrl: './sparkline.html',\n styleUrl: './sparkline.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Sparkline {\n values = input.required<number[]>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n yColumn = input.required<string>()\n locale = input.required<string>()\n emptyMessage = input.required<string>()\n width = input(80)\n height = input(24)\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly viewBox = computed(() => `0 0 ${this.width()} ${this.height()}`)\n\n protected readonly columns = computed(() => [this.xColumn(), this.yColumn()])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.values().map((value, index) => [\n formatNumber(index + 1, this.locale()),\n formatNumber(value, this.locale()),\n ]),\n )\n\n private readonly scales = computed(() => {\n const values = this.values()\n const min = Math.min(...values)\n const max = Math.max(...values)\n return {\n x: linearScale([0, Math.max(values.length - 1, 0)], [MARGIN, this.width() - MARGIN]),\n y: linearScale([min, max], [this.height() - MARGIN, MARGIN]),\n }\n })\n\n protected readonly path = computed(() => {\n const values = this.values()\n if (values.length === 0) return null\n const { x, y } = this.scales()\n return linePath(values.map((value, index) => ({ x: x.map(index), y: y.map(value) })))\n })\n\n protected readonly positions = computed<number[]>(() => {\n const { x } = this.scales()\n return this.values().map((_, index) => x.map(index))\n })\n\n protected readonly dot = computed<{ x: number; y: number } | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n const value = this.values()[index]\n if (value === undefined) return null\n const { x, y } = this.scales()\n return { x: x.map(index), y: y.map(value) }\n })\n\n protected readonly tooltip = computed<string | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n const value = this.values()[index]\n if (value === undefined) return null\n return `${this.xColumn()} ${formatNumber(index + 1, this.locale())} — ${this.yColumn()} ${formatNumber(value, this.locale())}`\n })\n\n protected onPointerMove(event: PointerEvent | MouseEvent): void {\n const positions = this.positions()\n if (positions.length === 0) return\n const rect = (event.currentTarget as Element).getBoundingClientRect()\n this.activeIndex.set(nearestIndex(positions, event.clientX - rect.left))\n }\n\n protected onPointerLeave(event: PointerEvent | MouseEvent): void {\n const target = event.currentTarget as Element\n if (target.ownerDocument.activeElement === target) return\n this.activeIndex.set(null)\n }\n\n protected onBlur(): void {\n this.activeIndex.set(null)\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const lastIndex = this.values().length - 1\n if (lastIndex < 0) return\n const current = this.activeIndex()\n switch (event.key) {\n case 'ArrowRight':\n this.activeIndex.set(current === null ? 0 : Math.min(lastIndex, current + 1))\n break\n case 'ArrowLeft':\n this.activeIndex.set(current === null ? lastIndex : Math.max(0, current - 1))\n break\n case 'Home':\n this.activeIndex.set(0)\n break\n case 'End':\n this.activeIndex.set(lastIndex)\n break\n case 'Escape':\n this.activeIndex.set(null)\n break\n default:\n return\n }\n event.preventDefault()\n }\n}\n","@if (path(); as d) {\n <div class=\"gbt-sparkline\" role=\"status\" aria-live=\"polite\">\n <svg\n class=\"gbt-sparkline__svg\"\n [attr.viewBox]=\"viewBox()\"\n [attr.width]=\"width()\"\n [attr.height]=\"height()\"\n tabindex=\"0\"\n role=\"group\"\n [attr.aria-label]=\"tableCaption()\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerleave)=\"onPointerLeave($event)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n >\n <path class=\"gbt-sparkline__line\" [attr.d]=\"d\" />\n @if (dot(); as p) {\n <circle class=\"gbt-sparkline__dot\" [attr.cx]=\"p.x\" [attr.cy]=\"p.y\" r=\"3\" />\n }\n </svg>\n @if (tooltip(); as text) {\n <span class=\"gbt-sparkline__tooltip\">{{ text }}</span>\n }\n </div>\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"columns()\" [rows]=\"tableRows()\" />\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\n\n@Component({\n selector: 'gbt-gauge-bar',\n standalone: true,\n imports: [],\n templateUrl: './gauge-bar.html',\n styleUrl: './gauge-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaugeBar {\n value = input.required<number>()\n max = input.required<number>()\n label = input.required<string>()\n formattedValue = input.required<string>()\n warningLabel = input.required<string>()\n criticalLabel = input.required<string>()\n thresholds = input<{ warning: number; critical: number }>({ warning: 70, critical: 90 })\n\n protected readonly percentage = computed(() => {\n const max = this.max()\n\n if (max <= 0) return 0\n return Math.max(0, Math.min(100, (this.value() / max) * 100))\n })\n\n protected readonly severity = computed<'warning' | 'critical' | null>(() => {\n const percentage = this.percentage()\n const { warning, critical } = this.thresholds()\n if (percentage >= critical) return 'critical'\n if (percentage >= warning) return 'warning'\n return null\n })\n\n protected readonly severityLabel = computed(() => {\n const severity = this.severity()\n if (severity === 'critical') return this.criticalLabel()\n if (severity === 'warning') return this.warningLabel()\n return null\n })\n}\n","<div class=\"gbt-gauge-bar\">\n <div class=\"gbt-gauge-bar__header\">\n <span class=\"gbt-gauge-bar__label\">{{ label() }}</span>\n <span class=\"gbt-gauge-bar__value\">\n {{ formattedValue() }}\n @if (severityLabel(); as tierLabel) {\n <span class=\"gbt-gauge-bar__tier\" [attr.data-tier]=\"severity()\">{{ tierLabel }}</span>\n }\n </span>\n </div>\n <div\n class=\"gbt-gauge-bar__track\"\n role=\"progressbar\"\n [attr.aria-label]=\"label()\"\n [attr.aria-valuenow]=\"percentage()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuetext]=\"formattedValue()\"\n >\n <div\n class=\"gbt-gauge-bar__fill\"\n [attr.data-tier]=\"severity()\"\n [style.width.%]=\"percentage()\"\n ></div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\nimport { ChartEmpty } from '../../organisms/chart-empty/chart-empty'\nimport { formatNumber } from '../../../primitives'\n\nexport interface DimensionRow {\n label: string\n value: number\n\n display?: string\n}\n\ninterface RenderedRow {\n label: string\n formattedValue: string\n\n part: number\n}\n\n@Component({\n selector: 'gbt-dimension-card',\n standalone: true,\n imports: [ChartEmpty],\n templateUrl: './dimension-card.html',\n styleUrl: './dimension-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DimensionCard {\n rows = input.required<DimensionRow[]>()\n caption = input.required<string>()\n labelColumn = input.required<string>()\n valueColumn = input.required<string>()\n emptyMessage = input.required<string>()\n locale = input.required<string>()\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly renderedRows = computed<RenderedRow[]>(() => {\n const rows = this.rows()\n const maxValue = rows.reduce((max, row) => Math.max(max, row.value), 0)\n return rows.map((row) => ({\n label: row.label,\n formattedValue: row.display ?? formatNumber(row.value, this.locale()),\n\n part: maxValue <= 0 ? 0 : (row.value / maxValue) * 100,\n }))\n })\n}\n","@if (rows().length > 0) {\n <table class=\"gbt-dimension-card\">\n <caption>\n {{\n caption()\n }}\n </caption>\n <thead>\n <tr>\n <th scope=\"col\">{{ labelColumn() }}</th>\n <th scope=\"col\">{{ valueColumn() }}</th>\n </tr>\n </thead>\n <tbody>\n @for (row of renderedRows(); track $index) {\n <tr\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n (mouseenter)=\"activeIndex.set($index)\"\n (mouseleave)=\"activeIndex.set(null)\"\n >\n <th scope=\"row\" class=\"gbt-dimension-card__cell\">\n <span\n class=\"gbt-dimension-card__bar\"\n [style.width.%]=\"row.part\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"gbt-dimension-card__label\">{{ row.label }}</span>\n </th>\n <td class=\"gbt-dimension-card__value\">{{ row.formattedValue }}</td>\n </tr>\n }\n </tbody>\n </table>\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\nimport { ChartEmpty } from '../../organisms/chart-empty/chart-empty'\nimport { ChartTable } from '../../organisms/chart-table/chart-table'\nimport { formatNumber, formatPercent } from '../../../primitives'\n\nexport interface FunnelStep {\n label: string\n value: number\n}\n\ninterface RenderedStep {\n label: string\n formattedValue: string\n\n part: number\n\n conversionFromPrevious: string\n}\n\n@Component({\n selector: 'gbt-funnel-chart',\n standalone: true,\n imports: [ChartTable, ChartEmpty],\n templateUrl: './funnel-chart.html',\n styleUrl: './funnel-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FunnelChart {\n steps = input.required<FunnelStep[]>()\n label = input.required<string>()\n locale = input.required<string>()\n emptyMessage = input.required<string>()\n tableCaption = input.required<string>()\n stepColumn = input.required<string>()\n valueColumn = input.required<string>()\n conversionColumn = input.required<string>()\n stepAnnouncement = input.required<(label: string, conversion: string) => string>()\n\n private readonly reference = computed(() => this.steps()[0]?.value ?? 0)\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected onMouseLeave(event: MouseEvent): void {\n const target = event.currentTarget as HTMLElement\n if (target.ownerDocument.activeElement === target) return\n this.activeIndex.set(null)\n }\n\n protected readonly renderedSteps = computed<RenderedStep[]>(() => {\n const reference = this.reference()\n const steps = this.steps()\n return steps.map((step, index) => {\n const previousValue = index === 0 ? step.value : steps[index - 1].value\n return {\n label: step.label,\n formattedValue: formatNumber(step.value, this.locale()),\n\n part: reference <= 0 ? 0 : (step.value / reference) * 100,\n conversionFromPrevious: formatPercent(\n previousValue <= 0 ? 0 : step.value / previousValue,\n this.locale(),\n ),\n }\n })\n })\n\n protected readonly activeStep = computed<RenderedStep | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n return this.renderedSteps()[index] ?? null\n })\n\n protected readonly columns = computed(() => [\n this.stepColumn(),\n this.valueColumn(),\n this.conversionColumn(),\n ])\n\n protected readonly tableRows = computed<(string | number)[][]>(() => {\n const reference = this.reference()\n return this.steps().map((step) => [\n step.label,\n formatNumber(step.value, this.locale()),\n formatPercent(reference <= 0 ? 0 : step.value / reference, this.locale()),\n ])\n })\n}\n","@if (renderedSteps().length > 0) {\n <ol class=\"gbt-funnel-chart\" [attr.aria-label]=\"label()\">\n @for (step of renderedSteps(); track $index) {\n <li\n class=\"gbt-funnel-chart__step\"\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n tabindex=\"0\"\n (mouseenter)=\"activeIndex.set($index)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (focus)=\"activeIndex.set($index)\"\n (blur)=\"activeIndex.set(null)\"\n >\n <div class=\"gbt-funnel-chart__bar\" [style.width.%]=\"step.part\" aria-hidden=\"true\"></div>\n <span class=\"gbt-funnel-chart__label\">{{ step.label }}</span>\n <span class=\"gbt-funnel-chart__value\">{{ step.formattedValue }}</span>\n @if ($index === activeIndex()) {\n <span class=\"gbt-funnel-chart__tip\" aria-hidden=\"true\">{{\n step.conversionFromPrevious\n }}</span>\n }\n </li>\n }\n </ol>\n <div class=\"gbt-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n @if (activeStep(); as step) {\n {{ stepAnnouncement()(step.label, step.conversionFromPrevious) }}\n }\n </div>\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"columns()\" [rows]=\"tableRows()\" />\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n afterNextRender,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\ninterface PopupPosition {\n top: string\n left: string | null\n right: string | null\n}\n\n@Component({\n selector: 'gbt-menu',\n standalone: true,\n imports: [Icon],\n templateUrl: './menu.html',\n styleUrl: './menu.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'onDocumentClick($event)',\n '(focusout)': 'onFocusOut($event)',\n '(window:scroll)': 'updatePosition()',\n '(window:resize)': 'updatePosition()',\n },\n})\nexport class Menu {\n private readonly elementRef = inject(ElementRef<HTMLElement>)\n private readonly injector = inject(Injector)\n\n label = input.required<string>()\n align = input<'start' | 'end'>('start')\n triggerIcon = input<string | null>(null)\n opened = output<void>()\n\n protected readonly open = signal(false)\n protected readonly position = signal<PopupPosition | null>(null)\n\n private readonly trigger = viewChild<ElementRef<HTMLButtonElement>>('trigger')\n private readonly list = viewChild<ElementRef<HTMLElement>>('list')\n\n protected toggle(): void {\n this.open.update((value) => !value)\n if (this.open()) {\n this.updatePosition()\n this.focusAfterRender('first')\n this.opened.emit()\n }\n }\n\n protected close(returnFocus: boolean): void {\n if (!this.open()) return\n this.open.set(false)\n if (returnFocus) {\n this.trigger()?.nativeElement.focus()\n }\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return\n event.preventDefault()\n const target = event.key === 'ArrowUp' ? 'last' : 'first'\n if (!this.open()) {\n this.open.set(true)\n this.updatePosition()\n this.opened.emit()\n }\n this.focusAfterRender(target)\n }\n\n protected onListKeydown(event: KeyboardEvent): void {\n const items = this.items()\n if (items.length === 0) return\n const index = items.indexOf(document.activeElement as HTMLElement)\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this.close(true)\n break\n case 'ArrowDown':\n event.preventDefault()\n this.focus((index + 1) % items.length)\n break\n case 'ArrowUp':\n event.preventDefault()\n this.focus((index - 1 + items.length) % items.length)\n break\n case 'Home':\n event.preventDefault()\n this.focus(0)\n break\n case 'End':\n event.preventDefault()\n this.focus(items.length - 1)\n break\n }\n }\n\n protected onListClick(): void {\n this.close(false)\n }\n\n protected onDocumentClick(event: MouseEvent): void {\n if (this.open() && !this.elementRef.nativeElement.contains(event.target as Node)) {\n this.close(false)\n }\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const target = event.relatedTarget as Node | null\n if (this.open() && !this.elementRef.nativeElement.contains(target)) {\n this.open.set(false)\n }\n }\n\n protected updatePosition(): void {\n if (!this.open()) return\n const trigger = this.trigger()?.nativeElement\n if (!trigger) return\n const rect = trigger.getBoundingClientRect()\n this.position.set(\n this.align() === 'end'\n ? { top: `${rect.bottom + 6}px`, left: null, right: `${window.innerWidth - rect.right}px` }\n : { top: `${rect.bottom + 6}px`, left: `${rect.left}px`, right: null },\n )\n }\n\n private items(): HTMLElement[] {\n const list = this.list()?.nativeElement\n if (!list) return []\n return [...list.querySelectorAll<HTMLElement>('[role=\"menuitem\"]')]\n }\n\n private focus(index: number): void {\n this.items()[index]?.focus()\n }\n\n private focusAfterRender(target: 'first' | 'last'): void {\n afterNextRender(\n () => {\n const items = this.items()\n this.focus(target === 'last' ? items.length - 1 : 0)\n },\n { injector: this.injector },\n )\n }\n}\n","<div class=\"gbt-menu\">\n <button\n #trigger\n type=\"button\"\n class=\"gbt-menu__trigger\"\n [class.gbt-menu__trigger--open]=\"open()\"\n [class.gbt-menu__trigger--icon-only]=\"triggerIcon()\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-label]=\"triggerIcon() ? label() : null\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n @if (triggerIcon(); as icon) {\n <gbt-icon [name]=\"icon\" aria-hidden=\"true\" />\n } @else {\n <span class=\"gbt-menu__label\">{{ label() }}</span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-menu__chevron\" aria-hidden=\"true\" />\n }\n </button>\n\n @if (open() && position(); as pos) {\n <div\n #list\n class=\"gbt-menu__list\"\n role=\"menu\"\n tabindex=\"-1\"\n [attr.aria-label]=\"label()\"\n [style.top]=\"pos.top\"\n [style.left]=\"pos.left\"\n [style.right]=\"pos.right\"\n (keydown)=\"onListKeydown($event)\"\n (click)=\"onListClick()\"\n >\n <ng-content />\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n effect,\n input,\n output,\n} from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { FormControl, ReactiveFormsModule } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\nimport { Select, SelectOption } from '../select/select'\n\nexport const ELLIPSIS = '…' as const\nexport type PaginationItem = number | typeof ELLIPSIS\n\nfunction range(start: number, end: number): number[] {\n return Array.from({ length: end - start + 1 }, (_, i) => start + i)\n}\n\nexport function paginationRange(page: number, pageCount: number, siblingCount: number): PaginationItem[] {\n const totalPageNumbers = siblingCount + 5\n\n if (totalPageNumbers >= pageCount) {\n return range(1, pageCount)\n }\n\n const leftSiblingIndex = Math.max(page - siblingCount, 1)\n const rightSiblingIndex = Math.min(page + siblingCount, pageCount)\n\n const shouldShowLeftDots = leftSiblingIndex > 2\n // -2, not -1: a lone skipped page right before the last one isn't worth an\n // ellipsis — showing that page costs no more room than the \"…\" would.\n const shouldShowRightDots = rightSiblingIndex < pageCount - 2\n\n if (!shouldShowLeftDots && shouldShowRightDots) {\n const leftItemCount = 3 + siblingCount * 2\n return [...range(1, leftItemCount), ELLIPSIS, pageCount]\n }\n\n if (shouldShowLeftDots && !shouldShowRightDots) {\n const rightItemCount = 3 + siblingCount * 2\n return [1, ELLIPSIS, ...range(pageCount - rightItemCount + 1, pageCount)]\n }\n\n return [1, ELLIPSIS, ...range(leftSiblingIndex, rightSiblingIndex), ELLIPSIS, pageCount]\n}\n\n@Component({\n selector: 'gbt-pagination',\n standalone: true,\n imports: [Icon, Select, ReactiveFormsModule],\n templateUrl: './pagination.html',\n styleUrl: './pagination.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Pagination {\n page = input<number>(1)\n pageSize = input<number>(10)\n totalItems = input.required<number>()\n siblingCount = input<number>(1)\n disabled = input(false, { transform: booleanAttribute })\n ariaLabel = input<string>('Pagination')\n previousLabel = input<string>('Previous page')\n nextLabel = input<string>('Next page')\n pageLabel = input<(page: number) => string>((page) => `Page ${page}`)\n\n pageSizeOptions = input<number[]>([])\n pageSizeLabel = input<(size: number) => string>((size) => `${size} / page`)\n pageSizeSelectLabel = input<string>('Rows per page')\n showItemsSummary = input(false, { transform: booleanAttribute })\n itemsSummaryLabel = input<(shown: number, total: number) => string>(\n (shown, total) => `${shown} of ${total} items`,\n )\n\n pageChange = output<number>()\n pageSizeChange = output<number>()\n\n protected readonly ELLIPSIS = ELLIPSIS\n\n protected readonly pageCount = computed(() =>\n Math.max(1, Math.ceil(this.totalItems() / this.pageSize())),\n )\n\n protected readonly items = computed(() =>\n paginationRange(this.page(), this.pageCount(), this.siblingCount()),\n )\n\n protected readonly itemsShown = computed(() => {\n const start = (this.page() - 1) * this.pageSize()\n return Math.max(0, Math.min(this.pageSize(), this.totalItems() - start))\n })\n\n protected readonly itemsSummary = computed(() =>\n this.itemsSummaryLabel()(this.itemsShown(), this.totalItems()),\n )\n\n protected readonly pageSizeSelectOptions = computed<SelectOption<number>[]>(() =>\n this.pageSizeOptions().map((size) => ({ value: size, label: this.pageSizeLabel()(size) })),\n )\n\n protected readonly pageSizeControl = new FormControl<number>(this.pageSize(), {\n nonNullable: true,\n })\n\n constructor() {\n effect(() => {\n const size = this.pageSize()\n if (this.pageSizeControl.value !== size) {\n this.pageSizeControl.setValue(size, { emitEvent: false })\n }\n })\n\n this.pageSizeControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((size) => {\n this.pageSizeChange.emit(size)\n this.pageChange.emit(1)\n })\n\n // Self-heals a stale `page` — e.g. a filter shrinks `totalItems` while\n // the app was sitting on a now out-of-range page — instead of leaving\n // the pager stuck with no page marked current and a live \"previous\"\n // button pointing at a page that no longer exists.\n effect(() => {\n const count = this.pageCount()\n const current = this.page()\n const clamped = Math.min(Math.max(current, 1), count)\n if (clamped !== current) {\n this.pageChange.emit(clamped)\n }\n })\n }\n\n protected goTo(page: number): void {\n if (this.disabled()) return\n const clamped = Math.min(Math.max(page, 1), this.pageCount())\n if (clamped === this.page()) return\n this.pageChange.emit(clamped)\n }\n}\n","<div class=\"gbt-pagination\">\n <div class=\"gbt-pagination__side gbt-pagination__side--start\">\n @if (showItemsSummary()) {\n <span class=\"gbt-pagination__summary\">{{ itemsSummary() }}</span>\n }\n </div>\n\n <nav [attr.aria-label]=\"ariaLabel()\">\n <ul class=\"gbt-pagination__list\">\n <li>\n <button\n type=\"button\"\n class=\"gbt-pagination__nav\"\n [disabled]=\"disabled() || page() <= 1\"\n [attr.aria-label]=\"previousLabel()\"\n (click)=\"goTo(page() - 1)\"\n >\n <gbt-icon name=\"chevron-left\" aria-hidden=\"true\" />\n </button>\n </li>\n @for (item of items(); track $index) {\n @if (item === ELLIPSIS) {\n <li class=\"gbt-pagination__ellipsis\" aria-hidden=\"true\">{{ ELLIPSIS }}</li>\n } @else {\n <li>\n <button\n type=\"button\"\n class=\"gbt-pagination__page\"\n [class.gbt-pagination__page--current]=\"item === page()\"\n [attr.aria-current]=\"item === page() ? 'page' : null\"\n [attr.aria-label]=\"pageLabel()(item)\"\n [disabled]=\"disabled()\"\n (click)=\"goTo(item)\"\n >\n {{ item }}\n </button>\n </li>\n }\n }\n <li>\n <button\n type=\"button\"\n class=\"gbt-pagination__nav\"\n [disabled]=\"disabled() || page() >= pageCount()\"\n [attr.aria-label]=\"nextLabel()\"\n (click)=\"goTo(page() + 1)\"\n >\n <gbt-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </button>\n </li>\n </ul>\n </nav>\n\n <div class=\"gbt-pagination__side gbt-pagination__side--end\">\n @if (pageSizeOptions().length > 0) {\n <gbt-select\n class=\"gbt-pagination__page-size\"\n size=\"sm\"\n [label]=\"pageSizeSelectLabel()\"\n [options]=\"pageSizeSelectOptions()\"\n [disabled]=\"disabled()\"\n [formControl]=\"pageSizeControl\"\n />\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\n@Component({\n selector: 'gbt-breadcrumb',\n standalone: true,\n imports: [],\n templateUrl: './breadcrumb.html',\n styleUrl: './breadcrumb.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Breadcrumb {\n ariaLabel = input.required<string>()\n}\n","<nav [attr.aria-label]=\"ariaLabel()\" class=\"gbt-breadcrumb\">\n <ol class=\"gbt-breadcrumb__list\">\n <ng-content select=\"[breadcrumb-ancestor]\" />\n <li class=\"gbt-breadcrumb__current\" aria-current=\"page\"><ng-content /></li>\n </ol>\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { FormsModule } from '@angular/forms'\nimport { Button } from '../../atoms/button/button'\nimport { GbtInput } from '../../atoms/input/input'\nimport { Modal } from '../modal/modal'\n\n@Component({\n selector: 'gbt-confirm-danger-modal',\n standalone: true,\n imports: [FormsModule, Modal, GbtInput, Button],\n templateUrl: './confirm-danger-modal.html',\n styleUrl: './confirm-danger-modal.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConfirmDangerModal {\n isOpen = input.required<boolean>()\n heading = input.required<string>()\n message = input.required<string>()\n confirmText = input.required<string>()\n confirmInputLabel = input<string>('Type to confirm')\n confirmLabel = input<string>('Confirm')\n cancelLabel = input<string>('Cancel')\n closeLabel = input<string>('Close')\n\n confirmed = output<void>()\n closed = output<void>()\n\n protected readonly typed = signal('')\n protected readonly canConfirm = computed(\n () => this.typed().length > 0 && this.typed() === this.confirmText(),\n )\n\n constructor() {\n // Cleared whenever the modal transitions to closed (Cancel, Escape,\n // backdrop, or the consumer setting isOpen false after a successful\n // confirm) — a later reopen must never show the previous attempt's text.\n effect(() => {\n if (!this.isOpen()) {\n this.typed.set('')\n }\n })\n }\n\n protected confirm(): void {\n if (this.canConfirm()) {\n this.confirmed.emit()\n }\n }\n\n protected cancel(): void {\n this.closed.emit()\n }\n}\n","<gbt-modal\n [isOpen]=\"isOpen()\"\n [heading]=\"heading()\"\n [closeLabel]=\"closeLabel()\"\n (closed)=\"cancel()\"\n>\n <p class=\"gbt-confirm-danger-modal__message\">{{ message() }}</p>\n <gbt-input\n [label]=\"confirmInputLabel()\"\n [ngModel]=\"typed()\"\n (ngModelChange)=\"typed.set($event)\"\n />\n <div class=\"gbt-confirm-danger-modal__actions\">\n <gbt-button variant=\"secondary\" [text]=\"cancelLabel()\" (clicked)=\"cancel()\" />\n <gbt-button\n variant=\"danger\"\n [text]=\"confirmLabel()\"\n [disabled]=\"!canConfirm()\"\n (clicked)=\"confirm()\"\n />\n </div>\n</gbt-modal>\n","import { ChangeDetectionStrategy, Component, OnDestroy, effect, input, output } from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nconst DEFAULT_DURATION_MS = 5000\n\nexport type ToastVariant = 'success' | 'error' | 'warning' | 'info'\n\nexport type ToasterPosition =\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center'\n\nexport interface ToastItem {\n id: string\n variant: ToastVariant\n message: string\n duration?: number\n}\n\nconst ASSERTIVE_VARIANTS: ReadonlySet<ToastVariant> = new Set(['warning', 'error'])\n\nconst VARIANT_ICONS: Record<ToastVariant, string> = {\n success: 'check-circle',\n error: 'alert-circle',\n warning: 'alert-triangle',\n info: 'info',\n}\n\n@Component({\n selector: 'gbt-toaster',\n standalone: true,\n imports: [Icon],\n templateUrl: './toaster.html',\n styleUrl: './toaster.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Toaster implements OnDestroy {\n toasts = input.required<ToastItem[]>()\n position = input<ToasterPosition>('bottom-right')\n closeLabel = input<string>('Close')\n\n dismissed = output<string>()\n\n private readonly timers = new Map<string, ReturnType<typeof setTimeout>>()\n\n constructor() {\n effect(() => {\n const currentIds = new Set(this.toasts().map((toast) => toast.id))\n\n for (const [id, timer] of this.timers) {\n if (!currentIds.has(id)) {\n clearTimeout(timer)\n this.timers.delete(id)\n }\n }\n\n for (const toast of this.toasts()) {\n if (this.timers.has(toast.id)) {\n continue\n }\n const duration = toast.duration ?? DEFAULT_DURATION_MS\n if (!Number.isFinite(duration) || duration <= 0) {\n continue\n }\n this.timers.set(\n toast.id,\n setTimeout(() => {\n this.timers.delete(toast.id)\n this.dismissed.emit(toast.id)\n }, duration),\n )\n }\n })\n }\n\n ngOnDestroy(): void {\n for (const timer of this.timers.values()) {\n clearTimeout(timer)\n }\n this.timers.clear()\n }\n\n protected roleFor(variant: ToastVariant): 'alert' | 'status' {\n return ASSERTIVE_VARIANTS.has(variant) ? 'alert' : 'status'\n }\n\n protected iconFor(variant: ToastVariant): string {\n return VARIANT_ICONS[variant]\n }\n}\n","<div class=\"gbt-toaster\" [attr.data-position]=\"position()\">\n @for (toast of toasts(); track toast.id) {\n <div\n class=\"gbt-toaster__item\"\n [attr.data-variant]=\"toast.variant\"\n [attr.role]=\"roleFor(toast.variant)\"\n aria-atomic=\"true\"\n >\n <span class=\"gbt-toaster__icon\">\n <gbt-icon [name]=\"iconFor(toast.variant)\" aria-hidden=\"true\" />\n </span>\n <p class=\"gbt-toaster__message\">{{ toast.message }}</p>\n <button\n type=\"button\"\n class=\"gbt-toaster__close\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"dismissed.emit(toast.id)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n inject,\n input,\n signal,\n} from '@angular/core'\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right'\n\ninterface TooltipCoords {\n top: number\n left: number\n}\n\nconst SHOW_DELAY_MS = 400\nconst FADE_MS = 120\nconst GAP_PX = 8\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-tooltip',\n standalone: true,\n exportAs: 'gbtTooltip',\n imports: [],\n templateUrl: './tooltip.html',\n styleUrl: './tooltip.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'gbt-tooltip-host',\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'hide()',\n '(focusin)': 'onFocusIn()',\n '(focusout)': 'hide()',\n '(keydown.escape)': 'hide()',\n '(window:scroll)': 'updatePosition()',\n '(window:resize)': 'updatePosition()',\n },\n})\nexport class Tooltip implements OnDestroy {\n private readonly elementRef = inject(ElementRef<HTMLElement>)\n\n text = input.required<string>()\n position = input<TooltipPosition>('top')\n\n readonly tooltipId = `gbt-tooltip-${++nextId}`\n\n protected readonly visible = signal(false)\n protected readonly closing = signal(false)\n protected readonly coords = signal<TooltipCoords | null>(null)\n\n private showTimer: ReturnType<typeof setTimeout> | null = null\n private hideTimer: ReturnType<typeof setTimeout> | null = null\n\n protected onMouseEnter(): void {\n this.showTimer = setTimeout(() => {\n this.showTimer = null\n this.show()\n }, SHOW_DELAY_MS)\n }\n\n protected onFocusIn(): void {\n this.show()\n }\n\n private show(): void {\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer)\n this.hideTimer = null\n }\n this.closing.set(false)\n this.updatePosition()\n this.visible.set(true)\n }\n\n protected updatePosition(): void {\n const rect = this.elementRef.nativeElement.getBoundingClientRect()\n switch (this.position()) {\n case 'top':\n this.coords.set({ top: rect.top - GAP_PX, left: rect.left + rect.width / 2 })\n break\n case 'bottom':\n this.coords.set({ top: rect.bottom + GAP_PX, left: rect.left + rect.width / 2 })\n break\n case 'left':\n this.coords.set({ top: rect.top + rect.height / 2, left: rect.left - GAP_PX })\n break\n case 'right':\n this.coords.set({ top: rect.top + rect.height / 2, left: rect.right + GAP_PX })\n break\n }\n }\n\n protected hide(): void {\n if (this.showTimer !== null) {\n clearTimeout(this.showTimer)\n this.showTimer = null\n }\n if (!this.visible() || this.closing()) return\n this.closing.set(true)\n this.hideTimer = setTimeout(() => {\n this.hideTimer = null\n this.closing.set(false)\n this.visible.set(false)\n }, FADE_MS)\n }\n\n ngOnDestroy(): void {\n if (this.showTimer !== null) {\n clearTimeout(this.showTimer)\n this.showTimer = null\n }\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer)\n this.hideTimer = null\n }\n }\n}\n","<ng-content />\n@if (visible() && coords(); as pos) {\n <span\n class=\"gbt-tooltip__bubble\"\n [class.gbt-tooltip__bubble--leaving]=\"closing()\"\n role=\"tooltip\"\n [id]=\"tooltipId\"\n [attr.data-position]=\"position()\"\n [style.top.px]=\"pos.top\"\n [style.left.px]=\"pos.left\"\n >\n {{ text() }}\n </span>\n}","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nexport interface RadioOption<T = string> {\n value: T\n label: string\n disabled?: boolean\n}\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-radio-group',\n standalone: true,\n imports: [],\n templateUrl: './radio-group.html',\n styleUrl: './radio-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroup),\n multi: true,\n },\n ],\n})\nexport class RadioGroup<T = string> implements ControlValueAccessor {\n id = input<string>(`gbt-radio-group-${++nextId}`)\n label = input.required<string>()\n options = input.required<RadioOption<T>[]>()\n orientation = input<'vertical' | 'horizontal'>('vertical')\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n\n protected readonly selected = signal<T | null>(null)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: T) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: T | null): void {\n this.selected.set(value)\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected isSelected(value: T): boolean {\n return this.selected() === value\n }\n\n protected selectOption(value: T): void {\n this.selected.set(value)\n this.onChange(value)\n this.onTouched()\n }\n}\n","<fieldset\n class=\"gbt-radio-group\"\n [attr.data-orientation]=\"orientation()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n>\n <legend class=\"gbt-radio-group__legend\">{{ label() }}{{ required() ? ' *' : '' }}</legend>\n <div class=\"gbt-radio-group__options\">\n @for (option of options(); track option.value; let i = $index) {\n <label class=\"gbt-radio-group__option\">\n <input\n type=\"radio\"\n [id]=\"id() + '-' + i\"\n [name]=\"id()\"\n [value]=\"option.value\"\n [checked]=\"isSelected(option.value)\"\n [disabled]=\"isDisabled() || !!option.disabled\"\n (change)=\"selectOption(option.value)\"\n />\n <span>{{ option.label }}</span>\n </label>\n }\n </div>\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-radio-group__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</fieldset>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextSwitchId = 0\n\n@Component({\n selector: 'gbt-switch',\n standalone: true,\n templateUrl: './switch.html',\n styleUrl: './switch.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Switch),\n multi: true,\n },\n ],\n})\nexport class Switch implements ControlValueAccessor {\n id = input<string>(`gbt-switch-${++nextSwitchId}`)\n label = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n\n protected readonly checked = signal(false)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: boolean) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: boolean): void {\n this.checked.set(!!value)\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected onToggle(event: Event): void {\n const value = (event.target as HTMLInputElement).checked\n this.checked.set(value)\n this.onChange(value)\n this.onTouched()\n }\n}\n","<label class=\"gbt-switch\" [class.gbt-switch--disabled]=\"isDisabled()\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n class=\"gbt-switch__input\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onToggle($event)\"\n />\n <span class=\"gbt-switch__track\">\n <span class=\"gbt-switch__thumb\"></span>\n </span>\n <span>{{ label() }}</span>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-textarea',\n standalone: true,\n imports: [],\n templateUrl: './textarea.html',\n styleUrl: './textarea.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Textarea),\n multi: true,\n },\n ],\n})\nexport class Textarea implements ControlValueAccessor {\n id = input<string>(`gbt-textarea-${++nextId}`)\n label = input<string>('')\n required = input(false, { transform: booleanAttribute })\n disabled = input(false, { transform: booleanAttribute })\n placeholder = input<string>('')\n errorMessage = input<string | null>(null)\n rows = input(3)\n\n committed = output<string>()\n\n protected readonly value = signal('')\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: string) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: string): void {\n this.value.set(value ?? '')\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLTextAreaElement).value\n this.value.set(value)\n this.onChange(value)\n }\n\n protected onBlur(): void {\n this.onTouched()\n this.committed.emit(this.value())\n }\n}\n","<div class=\"gbt-textarea\">\n @if (label()) {\n <label [for]=\"id()\">{{ label() }}{{ required() ? ' *' : '' }}</label>\n }\n <textarea\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [disabled]=\"isDisabled()\"\n [rows]=\"rows()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n >{{ value() }}</textarea\n >\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-textarea__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { NgTemplateOutlet } from '@angular/common'\nimport { Subscription, isObservable, type Observable } from 'rxjs'\n\nexport type AutocompleteSearchFn<T> = (query: string) => Observable<T[]> | Promise<T[]>\n\nlet nextAutocompleteId = 0\n\n@Component({\n selector: 'gbt-autocomplete',\n standalone: true,\n imports: [NgTemplateOutlet],\n templateUrl: './autocomplete.html',\n styleUrl: './autocomplete.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Autocomplete),\n multi: true,\n },\n ],\n})\nexport class Autocomplete<T = unknown> implements ControlValueAccessor, OnDestroy {\n private readonly elementRef = inject(ElementRef)\n\n id = input<string>(`gbt-autocomplete-${++nextAutocompleteId}`)\n label = input<string>('')\n placeholder = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n search = input.required<AutocompleteSearchFn<T>>()\n displayFn = input<(item: T) => string>((item) => String(item))\n itemTemplate = input<TemplateRef<unknown>>()\n debounceMs = input<number>(300)\n minLength = input<number>(1)\n loadingMessage = input<string>('Searching…')\n noResultsMessage = input<string>('No results')\n searchErrorMessage = input<string>('Search failed')\n resultsAnnouncement = input<(count: number) => string>(\n (count) => `${count} result${count !== 1 ? 's' : ''}`,\n )\n\n itemSelected = output<T>()\n\n protected readonly query = signal('')\n protected readonly open = signal(false)\n protected readonly results = signal<T[]>([])\n protected readonly loading = signal(false)\n protected readonly searchFailed = signal(false)\n protected readonly activeIndex = signal(0)\n protected readonly selectedItem = signal<T | null>(null)\n protected readonly panelStyle = signal<{ top: string; left: string; width: string } | null>(null)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n protected readonly hasNoResults = computed(\n () => this.open() && !this.loading() && !this.searchFailed() && this.results().length === 0,\n )\n\n protected readonly activeOptionId = computed(() =>\n this.open() && this.results().length > 0 ? `${this.id()}-option-${this.activeIndex()}` : null,\n )\n\n private onChange: (value: T | null) => void = () => {}\n private onTouched: () => void = () => {}\n\n private requestSeq = 0\n private debounceHandle?: ReturnType<typeof setTimeout>\n private subscription?: Subscription\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n writeValue(value: T | null): void {\n this.selectedItem.set(value)\n this.query.set(value === null || value === undefined ? '' : this.displayFn()(value))\n }\n\n registerOnChange(fn: (value: T | null) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value\n this.query.set(value)\n this.activeIndex.set(0)\n if (this.selectedItem() !== null) {\n this.selectedItem.set(null)\n this.onChange(null)\n }\n this.scheduleSearch(value)\n }\n\n protected onFocus(): void {\n if (\n this.query().trim().length >= this.minLength() &&\n (this.results().length > 0 || this.searchFailed())\n ) {\n this.open.set(true)\n this.updatePanelPosition()\n }\n }\n\n protected onBlur(): void {\n this.onTouched()\n setTimeout(() => {\n if (!this.elementRef.nativeElement.contains(document.activeElement)) {\n this.open.set(false)\n }\n }, 200)\n }\n\n private scheduleSearch(value: string): void {\n clearTimeout(this.debounceHandle)\n if (value.trim().length < this.minLength()) {\n this.requestSeq++\n this.subscription?.unsubscribe()\n this.open.set(false)\n this.results.set([])\n this.loading.set(false)\n this.searchFailed.set(false)\n return\n }\n this.debounceHandle = setTimeout(() => this.runSearch(value), this.debounceMs())\n }\n\n private runSearch(query: string): void {\n const seq = ++this.requestSeq\n this.subscription?.unsubscribe()\n this.loading.set(true)\n this.searchFailed.set(false)\n this.open.set(true)\n this.updatePanelPosition()\n\n const applyResults = (items: T[]): void => {\n if (seq !== this.requestSeq) return\n this.results.set(items)\n this.loading.set(false)\n this.activeIndex.set(0)\n this.updatePanelPosition()\n }\n const applyError = (): void => {\n if (seq !== this.requestSeq) return\n this.results.set([])\n this.loading.set(false)\n this.searchFailed.set(true)\n this.updatePanelPosition()\n }\n\n const result = this.search()(query)\n if (isObservable(result)) {\n this.subscription = result.subscribe({ next: applyResults, error: applyError })\n } else {\n result.then(applyResults, applyError)\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.open()) {\n return\n }\n const trigger = this.elementRef.nativeElement.querySelector(\n '.gbt-autocomplete__input',\n ) as HTMLElement | null\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n this.panelStyle.set({\n top: `${rect.bottom + 6}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n })\n }\n\n protected selectOption(item: T): void {\n this.selectedItem.set(item)\n this.query.set(this.displayFn()(item))\n this.results.set([])\n this.open.set(false)\n this.onChange(item)\n this.onTouched()\n this.itemSelected.emit(item)\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) {\n return\n }\n if (event.key === 'Escape') {\n if (this.open()) {\n event.preventDefault()\n event.stopPropagation()\n this.open.set(false)\n }\n return\n }\n if (!this.open() || this.results().length === 0) {\n return\n }\n const results = this.results()\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n this.activeIndex.update((i) => Math.min(i + 1, results.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.activeIndex.update((i) => Math.max(i - 1, 0))\n break\n case 'Enter': {\n event.preventDefault()\n const active = results[this.activeIndex()]\n if (active) {\n this.selectOption(active)\n }\n break\n }\n }\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.debounceHandle)\n this.subscription?.unsubscribe()\n }\n}\n","<div class=\"gbt-autocomplete\" [class.gbt-autocomplete--disabled]=\"isDisabled()\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-autocomplete__label\"\n >{{ label() }}{{ required() ? ' *' : '' }}</label\n >\n }\n\n <input\n [id]=\"id()\"\n type=\"text\"\n class=\"gbt-autocomplete__input\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? id() + '-listbox' : null\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [value]=\"query()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n\n @if (open()) {\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\n @if (loading()) {\n {{ loadingMessage() }}\n } @else if (searchFailed()) {\n {{ searchErrorMessage() }}\n } @else {\n {{ resultsAnnouncement()(results().length) }}\n }\n </div>\n }\n\n @if (open() && panelStyle(); as style) {\n <div\n class=\"gbt-autocomplete__panel\"\n [style.top]=\"style.top\"\n [style.left]=\"style.left\"\n [style.width]=\"style.width\"\n (mousedown)=\"$event.preventDefault()\"\n >\n @if (loading()) {\n <div class=\"gbt-autocomplete__state\" role=\"status\">\n <span>{{ loadingMessage() }}</span>\n </div>\n } @else if (searchFailed()) {\n <div class=\"gbt-autocomplete__state gbt-autocomplete__state--error\" role=\"alert\">\n <span>{{ searchErrorMessage() }}</span>\n </div>\n } @else if (hasNoResults()) {\n <div class=\"gbt-autocomplete__state\" role=\"status\">\n <span>{{ noResultsMessage() }}</span>\n </div>\n } @else {\n <ul\n [id]=\"id() + '-listbox'\"\n class=\"gbt-autocomplete__list\"\n role=\"listbox\"\n [attr.aria-label]=\"label() || placeholder()\"\n >\n @for (item of results(); track $index; let i = $index) {\n <li role=\"presentation\">\n <button\n [id]=\"id() + '-option-' + i\"\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n class=\"gbt-autocomplete__option\"\n [class.gbt-autocomplete__option--active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n (click)=\"selectOption(item)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (itemTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"gbt-autocomplete__option-label\">{{ displayFn()(item) }}</span>\n }\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-autocomplete__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","ASSERTIVE_VARIANTS","VARIANT_ICONS","DAY","DASH_ARRAYS"],"mappings":"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"}