@praxisui/charts 1.0.0-beta.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -0
- package/fesm2022/praxisui-charts.mjs +2662 -0
- package/fesm2022/praxisui-charts.mjs.map +1 -0
- package/index.d.ts +639 -0
- package/package.json +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"praxisui-charts.mjs","sources":["../../../projects/praxis-charts/src/lib/services/chart-data-transformer.service.ts","../../../projects/praxis-charts/src/lib/services/chart-option-builder.service.ts","../../../projects/praxis-charts/src/lib/adapters/echarts/echarts-engine.adapter.ts","../../../projects/praxis-charts/src/lib/services/chart-stats-api.service.ts","../../../projects/praxis-charts/src/lib/tokens/chart-engine.token.ts","../../../projects/praxis-charts/src/lib/components/praxis-chart/praxis-chart.component.ts","../../../projects/praxis-charts/src/lib/mocks/chart-drilldown.mock.ts","../../../projects/praxis-charts/src/lib/components/praxis-chart-drilldown-panel/praxis-chart-drilldown-panel.component.ts","../../../projects/praxis-charts/src/lib/components/praxis-chart-state-probe/praxis-chart-state-probe.component.ts","../../../projects/praxis-charts/src/lib/praxis-chart.metadata.ts","../../../projects/praxis-charts/src/lib/praxis-chart-drilldown-panel.metadata.ts","../../../projects/praxis-charts/src/lib/praxis-chart-state-probe.metadata.ts","../../../projects/praxis-charts/src/lib/examples/praxis-chart-showcase-widget.component.ts","../../../projects/praxis-charts/src/lib/examples/praxis-chart-showcase-widget.metadata.ts","../../../projects/praxis-charts/src/lib/providers/charts.providers.ts","../../../projects/praxis-charts/src/lib/services/chart-canonical-contract-mapper.service.ts","../../../projects/praxis-charts/src/lib/services/chart-metadata-registration.service.ts","../../../projects/praxis-charts/src/lib/services/chart-schema-mapper.service.ts","../../../projects/praxis-charts/src/lib/services/chart-backend-payload-adapter.service.ts","../../../projects/praxis-charts/src/lib/mocks/chart-backend.mock.ts","../../../projects/praxis-charts/src/lib/examples/chart-backend-mock.examples.ts","../../../projects/praxis-charts/src/lib/examples/praxis-chart-composition-showcase.component.ts","../../../projects/praxis-charts/src/public-api.ts","../../../projects/praxis-charts/src/praxisui-charts.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport type { PraxisChartConfig } from '../models/chart-config.model';\nimport type { PraxisChartDataRow } from '../models/chart-dataset.model';\nimport type { PraxisChartSeriesConfig } from '../models/chart-series.model';\n\nexport interface PraxisChartCartesianSeries {\n id: string;\n name: string;\n type: 'bar' | 'line';\n stack?: string;\n smooth?: boolean;\n area?: boolean;\n color?: string;\n labelsVisible?: boolean;\n points: Array<number | null>;\n}\n\nexport interface PraxisChartPieSlice {\n id: string;\n name: string;\n value: number;\n color?: string;\n}\n\nexport interface PraxisChartTransformedData {\n mode: 'cartesian' | 'pie';\n categories: string[];\n series: PraxisChartCartesianSeries[];\n slices: PraxisChartPieSlice[];\n hasData: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartDataTransformerService {\n transform(config: PraxisChartConfig, rows: PraxisChartDataRow[]): PraxisChartTransformedData {\n if (config.type === 'pie' || config.type === 'donut') {\n return this.transformPie(config, rows);\n }\n\n return this.transformCartesian(config, rows);\n }\n\n private transformCartesian(\n config: PraxisChartConfig,\n rows: PraxisChartDataRow[],\n ): PraxisChartTransformedData {\n const categoryField = config.axes?.x?.field;\n if (!categoryField || !rows.length || !config.series.length) {\n return {\n mode: 'cartesian',\n categories: [],\n series: [],\n slices: [],\n hasData: false,\n };\n }\n\n const categories = Array.from(\n new Set(rows.map((row) => this.normalizeCategory(row[categoryField]))),\n );\n\n const series = config.series.map((seriesConfig) =>\n this.buildCartesianSeries(config, seriesConfig, rows, categories),\n );\n\n return {\n mode: 'cartesian',\n categories,\n series,\n slices: [],\n hasData: categories.length > 0 && series.some((item) => item.points.some((point) => point !== null)),\n };\n }\n\n private transformPie(\n config: PraxisChartConfig,\n rows: PraxisChartDataRow[],\n ): PraxisChartTransformedData {\n const seriesConfig = config.series[0];\n const categoryField = seriesConfig?.categoryField ?? config.axes?.x?.field;\n if (!seriesConfig || !categoryField || !rows.length) {\n return {\n mode: 'pie',\n categories: [],\n series: [],\n slices: [],\n hasData: false,\n };\n }\n\n const bucket = new Map<string, number>();\n for (const row of rows) {\n const key = this.normalizeCategory(row[categoryField]);\n const nextValue = this.extractMetricValue(row, seriesConfig);\n bucket.set(key, (bucket.get(key) ?? 0) + nextValue);\n }\n\n const slices = Array.from(bucket.entries()).map(([name, value]) => ({\n id: `${seriesConfig.id}:${name}`,\n name,\n value,\n color: seriesConfig.color,\n }));\n\n return {\n mode: 'pie',\n categories: slices.map((slice) => slice.name),\n series: [],\n slices,\n hasData: slices.some((slice) => slice.value > 0),\n };\n }\n\n private buildCartesianSeries(\n config: PraxisChartConfig,\n seriesConfig: PraxisChartSeriesConfig,\n rows: PraxisChartDataRow[],\n categories: string[],\n ): PraxisChartCartesianSeries {\n const categoryField = config.axes?.x?.field;\n const byCategory = new Map<string, PraxisChartDataRow[]>();\n\n for (const row of rows) {\n const key = this.normalizeCategory(row[categoryField!]);\n const bucket = byCategory.get(key) ?? [];\n bucket.push(row);\n byCategory.set(key, bucket);\n }\n\n return {\n id: seriesConfig.id,\n name: seriesConfig.name ?? seriesConfig.metric?.label ?? seriesConfig.id,\n type: config.type === 'bar' || config.type === 'stacked-bar' ? 'bar' : 'line',\n stack: config.type === 'stacked-bar' ? seriesConfig.stackId ?? 'stack-1' : undefined,\n smooth: seriesConfig.smooth ?? config.type === 'area',\n area: config.type === 'area',\n color: seriesConfig.color,\n labelsVisible: seriesConfig.labels?.visible ?? false,\n points: categories.map((category) => {\n const bucket = byCategory.get(category) ?? [];\n if (!bucket.length) return null;\n return this.aggregate(bucket, seriesConfig);\n }),\n };\n }\n\n private aggregate(rows: PraxisChartDataRow[], seriesConfig: PraxisChartSeriesConfig): number {\n const aggregation = seriesConfig.metric?.aggregation ?? 'sum';\n if (aggregation === 'count') {\n return rows.length;\n }\n\n const values = rows\n .map((row) => this.extractMetricValue(row, seriesConfig))\n .filter((value) => Number.isFinite(value));\n\n if (!values.length) return 0;\n\n switch (aggregation) {\n case 'avg':\n return values.reduce((sum, value) => sum + value, 0) / values.length;\n case 'min':\n return Math.min(...values);\n case 'max':\n return Math.max(...values);\n case 'sum':\n default:\n return values.reduce((sum, value) => sum + value, 0);\n }\n }\n\n private extractMetricValue(row: PraxisChartDataRow, seriesConfig: PraxisChartSeriesConfig): number {\n const field = seriesConfig.metric?.field;\n if (!field) {\n return 1;\n }\n\n const value = row[field];\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : 0;\n }\n return 0;\n }\n\n private normalizeCategory(value: unknown): string {\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (value === null || value === undefined || value === '') {\n return 'undefined';\n }\n\n return String(value);\n }\n}\n","import { Injectable } from '@angular/core';\nimport type { EChartsCoreOption, PieSeriesOption } from 'echarts';\nimport type { PraxisChartConfig } from '../models/chart-config.model';\nimport { PraxisChartDataTransformerService } from './chart-data-transformer.service';\nimport type { PraxisChartDataRow } from '../models/chart-dataset.model';\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartOptionBuilderService {\n constructor(\n private readonly transformer: PraxisChartDataTransformerService,\n ) {}\n\n build(config: PraxisChartConfig, rows: PraxisChartDataRow[]): EChartsCoreOption {\n const transformed = this.transformer.transform(config, rows);\n const palette = config.theme?.palette;\n const tooltipEnabled = config.theme?.tooltip?.enabled ?? true;\n const legendVisible = config.theme?.legend?.visible ?? true;\n\n if (transformed.mode === 'pie') {\n const pieSeries: PieSeriesOption = {\n type: 'pie',\n radius: config.type === 'donut' ? ['45%', '70%'] : '70%',\n label: {\n show: config.series[0]?.labels?.visible ?? false,\n },\n data: transformed.slices.map((slice) => ({\n name: slice.name,\n value: slice.value,\n itemStyle: slice.color ? { color: slice.color } : undefined,\n })),\n };\n\n return {\n backgroundColor: config.theme?.backgroundColor,\n color: palette,\n title: {\n text: this.resolveText(config.title),\n subtext: this.resolveText(config.subtitle),\n left: 'center',\n },\n tooltip: tooltipEnabled ? { trigger: 'item' } : undefined,\n legend: legendVisible\n ? { show: true, orient: 'horizontal', bottom: 0 }\n : { show: false },\n series: [pieSeries],\n };\n }\n\n return {\n backgroundColor: config.theme?.backgroundColor,\n color: palette,\n title: {\n text: this.resolveText(config.title),\n subtext: this.resolveText(config.subtitle),\n left: 'left',\n },\n tooltip: tooltipEnabled\n ? { trigger: config.theme?.tooltip?.trigger ?? 'axis' }\n : undefined,\n legend: legendVisible\n ? { show: true, top: 0 }\n : { show: false },\n grid: {\n top: 56,\n right: 24,\n bottom: 32,\n left: 48,\n containLabel: true,\n },\n xAxis: {\n type: config.axes?.x?.type ?? 'category',\n name: config.axes?.x?.label,\n data: transformed.categories,\n axisLabel: {\n show: config.axes?.x?.labels?.visible ?? true,\n rotate: config.axes?.x?.labels?.rotate ?? 0,\n },\n },\n yAxis: {\n type: config.axes?.y?.type ?? 'value',\n name: config.axes?.y?.label,\n min: config.axes?.y?.min,\n max: config.axes?.y?.max,\n axisLabel: {\n show: config.axes?.y?.labels?.visible ?? true,\n },\n },\n series: transformed.series.map((series) => ({\n id: series.id,\n name: series.name,\n type: series.type,\n stack: series.stack,\n smooth: series.smooth,\n areaStyle: series.area ? {} : undefined,\n label: { show: series.labelsVisible },\n itemStyle: series.color ? { color: series.color } : undefined,\n data: series.points,\n })),\n };\n }\n\n private resolveText(value: unknown): string | undefined {\n if (!value) return undefined;\n if (typeof value === 'string') return value;\n if (typeof value === 'object' && value && 'text' in (value as Record<string, unknown>)) {\n const text = (value as { text?: string }).text;\n return text || undefined;\n }\n return undefined;\n }\n}\n","import { Injectable } from '@angular/core';\nimport type { EChartsCoreOption, EChartsType } from 'echarts/core';\nimport { init, use } from 'echarts/core';\nimport { BarChart, LineChart, PieChart } from 'echarts/charts';\nimport {\n AriaComponent,\n DatasetComponent,\n GridComponent,\n LegendComponent,\n TitleComponent,\n TooltipComponent,\n TransformComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport type {\n PraxisChartEngineAdapter,\n PraxisChartEngineRenderPayload,\n} from '../chart-engine.adapter';\nimport { PraxisChartOptionBuilderService } from '../../services/chart-option-builder.service';\n\nuse([\n AriaComponent,\n BarChart,\n CanvasRenderer,\n DatasetComponent,\n GridComponent,\n LegendComponent,\n LineChart,\n PieChart,\n TitleComponent,\n TooltipComponent,\n TransformComponent,\n]);\n\n@Injectable()\nexport class EChartsEngineAdapter implements PraxisChartEngineAdapter {\n private chart?: EChartsType;\n\n constructor(\n private readonly optionBuilder: PraxisChartOptionBuilderService,\n ) {}\n\n render(host: HTMLElement, payload: PraxisChartEngineRenderPayload): void {\n if (!this.chart) {\n this.chart = init(host);\n }\n\n const option: EChartsCoreOption = this.optionBuilder.build(payload.config, payload.data);\n this.chart?.setOption(option, true);\n this.chart?.off('click');\n this.chart?.on('click', (params: any) => {\n payload.onPointClick?.({\n chartId: payload.config.id,\n seriesId: params?.seriesId,\n seriesName: params?.seriesName,\n category: params?.name,\n value: params?.value,\n data: params?.data,\n });\n });\n }\n\n resize(): void {\n this.chart?.resize();\n }\n\n destroy(): void {\n this.chart?.dispose();\n this.chart = undefined;\n }\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { API_URL, ApiUrlConfig, buildApiUrl } from '@praxisui/core';\nimport { Observable, map, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport type { PraxisChartConfig } from '../models/chart-config.model';\nimport type {\n PraxisChartDataRow,\n PraxisChartStatsMetricRequest,\n PraxisChartStatsRequest,\n} from '../models/chart-dataset.model';\nimport type { PraxisChartQueryRequestEvent } from '../models/chart-events.model';\n\ninterface PraxisChartStatsBucket {\n key?: string | number | null;\n label?: string | null;\n value?: number | null;\n count?: number | null;\n from?: number | null;\n to?: number | null;\n}\n\ninterface PraxisChartTimeSeriesPoint {\n start?: string | null;\n end?: string | null;\n label?: string | null;\n value?: number | null;\n count?: number | null;\n}\n\ninterface PraxisChartGroupByStatsResponse {\n metric?: PraxisChartStatsMetricRequest;\n field: string;\n buckets: PraxisChartStatsBucket[];\n}\n\ninterface PraxisChartTimeSeriesStatsResponse {\n metric?: PraxisChartStatsMetricRequest;\n field: string;\n granularity?: string;\n points: PraxisChartTimeSeriesPoint[];\n}\n\ninterface PraxisChartDistributionStatsResponse {\n metric?: PraxisChartStatsMetricRequest;\n field: string;\n mode?: string;\n buckets: PraxisChartStatsBucket[];\n}\n\ntype PraxisChartStatsOperationResponse =\n | PraxisChartGroupByStatsResponse\n | PraxisChartTimeSeriesStatsResponse\n | PraxisChartDistributionStatsResponse;\n\ninterface PraxisChartStatsApiEnvelope<T> {\n success?: boolean;\n data: T;\n message?: string;\n timestamp?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartStatsApiService {\n constructor(\n private readonly http: HttpClient,\n @Inject(API_URL) private readonly apiUrl: ApiUrlConfig,\n ) {}\n\n execute(\n event: PraxisChartQueryRequestEvent,\n config: PraxisChartConfig,\n ): Observable<PraxisChartDataRow[]> {\n const query = event.query;\n const statsRequest = query?.statsRequest;\n if (!query?.statsPath || !statsRequest) {\n return throwError(() =>\n new Error('PraxisChartStatsApiService requires query.statsPath and query.statsRequest for praxis.stats execution.'),\n );\n }\n\n const categoryField = this.resolveCategoryField(config, statsRequest);\n const metricField = this.resolveMetricField(config);\n const url = this.buildStatsUrl(query.statsPath);\n\n return this.http\n .post<PraxisChartStatsApiEnvelope<PraxisChartStatsOperationResponse>>(url, statsRequest)\n .pipe(\n map((response) =>\n this.toChartRows(response?.data, statsRequest, categoryField, metricField),\n ),\n catchError((error) => this.handleHttpError(error)),\n );\n }\n\n private toChartRows(\n response: PraxisChartStatsOperationResponse | null | undefined,\n request: PraxisChartStatsRequest,\n categoryField: string,\n metricField: string,\n ): PraxisChartDataRow[] {\n if (!response) {\n return [];\n }\n\n if ('points' in response) {\n return response.points.map((point) => {\n const category = point.label ?? point.start ?? point.end ?? '';\n const metricValue = this.resolveMetricValue(point.value, point.count);\n return {\n [categoryField]: category,\n [metricField]: metricValue,\n key: point.start ?? point.label ?? point.end ?? category,\n label: point.label ?? category,\n value: point.value ?? null,\n count: point.count ?? null,\n start: point.start ?? null,\n end: point.end ?? null,\n granularity: response.granularity ?? null,\n };\n });\n }\n\n if ('buckets' in response) {\n return response.buckets.map((bucket) => {\n const category = this.resolveBucketCategory(bucket);\n const metricValue = this.resolveMetricValue(bucket.value, bucket.count);\n return {\n [categoryField]: category,\n [metricField]: metricValue,\n key: bucket.key ?? null,\n label: bucket.label ?? category,\n value: bucket.value ?? null,\n count: bucket.count ?? null,\n from: bucket.from ?? null,\n to: bucket.to ?? null,\n mode: 'mode' in response ? response.mode ?? null : null,\n requestMode: 'mode' in request ? request.mode : null,\n };\n });\n }\n\n return [];\n }\n\n private resolveBucketCategory(bucket: PraxisChartStatsBucket): string {\n if (bucket.label !== null && bucket.label !== undefined && bucket.label !== '') {\n return String(bucket.label);\n }\n if (bucket.key !== null && bucket.key !== undefined && bucket.key !== '') {\n return String(bucket.key);\n }\n if (bucket.from !== null || bucket.to !== null) {\n return `${bucket.from ?? ''} - ${bucket.to ?? ''}`.trim();\n }\n return '';\n }\n\n private resolveMetricValue(\n value: number | null | undefined,\n count: number | null | undefined,\n ): number {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n if (typeof count === 'number' && Number.isFinite(count)) {\n return count;\n }\n return 0;\n }\n\n private resolveCategoryField(config: PraxisChartConfig, request: PraxisChartStatsRequest): string {\n const firstSeries = config.series[0];\n return (\n firstSeries?.categoryField\n || config.axes?.x?.field\n || request.field\n || 'category'\n );\n }\n\n private resolveMetricField(config: PraxisChartConfig): string {\n return config.series[0]?.metric?.field || 'value';\n }\n\n private buildStatsUrl(statsPath: string): string {\n const base = this.buildDefaultApiBase();\n const normalizedStatsPath = this.normalizePath(statsPath);\n const resolvedStatsPath = this.shouldStripLeadingApiSegment(base)\n ? this.stripLeadingApiSegment(normalizedStatsPath)\n : normalizedStatsPath;\n return `${base}/${resolvedStatsPath}`;\n }\n\n private buildDefaultApiBase(): string {\n const entry = this.apiUrl?.default ?? {};\n return buildApiUrl(entry).replace(/\\/+$/, '');\n }\n\n private normalizePath(value: string): string {\n return String(value || '').trim().replace(/^\\/+|\\/+$/g, '');\n }\n\n private stripLeadingApiSegment(value: string): string {\n return value.replace(/^api\\/+/i, '');\n }\n\n private shouldStripLeadingApiSegment(base: string): boolean {\n return /\\/api$/i.test(base);\n }\n\n private handleHttpError(error: unknown) {\n if (error instanceof HttpErrorResponse) {\n const detail = typeof error.message === 'string' && error.message.trim()\n ? error.message\n : `HTTP ${error.status || 0}`;\n return throwError(() => new Error(detail));\n }\n\n return throwError(() =>\n error instanceof Error ? error : new Error('Unexpected failure during praxis.stats execution.'),\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { PraxisChartEngineAdapter } from '../adapters/chart-engine.adapter';\n\nexport const PRAXIS_CHART_ENGINE = new InjectionToken<PraxisChartEngineAdapter>(\n 'PRAXIS_CHART_ENGINE',\n);\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { PraxisI18nService } from '@praxisui/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { PraxisChartEngineAdapter } from '../../adapters/chart-engine.adapter';\nimport { EChartsEngineAdapter } from '../../adapters/echarts/echarts-engine.adapter';\nimport type { PraxisChartConfig } from '../../models/chart-config.model';\nimport type { PraxisChartDataRow } from '../../models/chart-dataset.model';\nimport type {\n PraxisChartLoadState,\n PraxisChartPointEvent,\n PraxisChartQueryRequestEvent,\n} from '../../models/chart-events.model';\nimport { PraxisChartDataTransformerService } from '../../services/chart-data-transformer.service';\nimport { PraxisChartStatsApiService } from '../../services/chart-stats-api.service';\nimport { PRAXIS_CHART_ENGINE } from '../../tokens/chart-engine.token';\n\n@Component({\n selector: 'praxis-chart',\n standalone: true,\n imports: [CommonModule],\n providers: [\n EChartsEngineAdapter,\n {\n provide: PRAXIS_CHART_ENGINE,\n useExisting: EChartsEngineAdapter,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section class=\"praxis-chart-shell\" [style.height]=\"resolvedHeight()\">\n @if (loadState() === 'loading') {\n <div class=\"praxis-chart-state praxis-chart-state-loading\">\n <div class=\"praxis-chart-spinner\" aria-hidden=\"true\"></div>\n @if (loadingLabel()) {\n <div class=\"praxis-chart-state-title\">{{ loadingLabel() }}</div>\n }\n </div>\n } @else if (loadState() === 'error') {\n <div class=\"praxis-chart-state praxis-chart-state-error\">\n @if (errorTitle()) {\n <div class=\"praxis-chart-state-title\">{{ errorTitle() }}</div>\n }\n @if (errorDescription()) {\n <div class=\"praxis-chart-state-description\">{{ errorDescription() }}</div>\n }\n </div>\n } @else if (loadState() === 'empty') {\n <div class=\"praxis-chart-state praxis-chart-state-empty\">\n @if (emptyTitle()) {\n <div class=\"praxis-chart-state-title\">{{ emptyTitle() }}</div>\n }\n @if (emptyDescription()) {\n <div class=\"praxis-chart-state-description\">{{ emptyDescription() }}</div>\n }\n </div>\n } @else {\n <div #chartHost class=\"praxis-chart-host\"></div>\n }\n </section>\n `,\n styles: [\n `\n :host {\n display: block;\n min-width: 0;\n }\n\n .praxis-chart-shell {\n position: relative;\n width: 100%;\n min-height: 240px;\n border-radius: 18px;\n overflow: hidden;\n background:\n radial-gradient(circle at top left, rgba(18, 99, 180, 0.12), transparent 38%),\n linear-gradient(180deg, rgba(18, 99, 180, 0.03), rgba(18, 99, 180, 0));\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline, #c5c7ce) 72%, transparent);\n }\n\n .praxis-chart-host {\n width: 100%;\n height: 100%;\n }\n\n .praxis-chart-state {\n height: 100%;\n min-height: 240px;\n display: grid;\n place-content: center;\n gap: 10px;\n padding: 24px;\n text-align: center;\n }\n\n .praxis-chart-state-title {\n font-size: 1rem;\n font-weight: 600;\n color: var(--md-sys-color-on-surface, #1a1b20);\n }\n\n .praxis-chart-state-description {\n font-size: 0.925rem;\n color: var(--md-sys-color-on-surface-variant, #5a5d67);\n max-width: 36rem;\n }\n\n .praxis-chart-spinner {\n width: 34px;\n height: 34px;\n margin-inline: auto;\n border-radius: 999px;\n border: 3px solid rgba(18, 99, 180, 0.18);\n border-top-color: rgba(18, 99, 180, 0.82);\n animation: praxis-chart-spin 0.8s linear infinite;\n }\n\n @keyframes praxis-chart-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n `,\n ],\n})\nexport class PraxisChartComponent {\n readonly config = input.required<PraxisChartConfig>();\n readonly data = input<PraxisChartDataRow[] | null>(null);\n\n readonly pointClick = output<PraxisChartPointEvent>();\n readonly queryRequest = output<PraxisChartQueryRequestEvent>();\n readonly loadStateChange = output<PraxisChartLoadState>();\n\n private readonly chartHost = viewChild<ElementRef<HTMLDivElement>>('chartHost');\n private readonly engine = inject<PraxisChartEngineAdapter>(PRAXIS_CHART_ENGINE);\n private readonly transformer = inject(PraxisChartDataTransformerService);\n private readonly statsApi = inject(PraxisChartStatsApiService);\n private readonly i18n = inject(PraxisI18nService);\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly resizeObserver = signal<ResizeObserver | null>(null);\n private readonly currentLoadState = signal<PraxisChartLoadState>('idle');\n private readonly remoteResolvedData = signal<PraxisChartDataRow[] | null>(null);\n private readonly remoteRuntimeState = signal<'idle' | 'loading' | 'ready' | 'error'>('idle');\n private readonly remoteTechnicalError = signal<string | null>(null);\n private previousRemoteSignature: string | null = null;\n\n readonly resolvedData = computed(() => {\n const inputData = this.data();\n if (inputData !== null && inputData !== undefined) {\n return inputData;\n }\n\n const remoteData = this.remoteResolvedData();\n if (remoteData !== null) {\n return remoteData;\n }\n\n const dataSource = this.config().dataSource;\n if (dataSource?.kind === 'local') {\n return dataSource.items ?? [];\n }\n\n return [];\n });\n\n readonly resolvedHeight = computed(() => {\n const value = this.config().height;\n if (typeof value === 'number') return `${value}px`;\n return value || '320px';\n });\n\n readonly renderConfig = computed<PraxisChartConfig>(() => {\n const config = this.config();\n const explicitData = this.data();\n const remoteState = this.remoteRuntimeState();\n const remoteData = this.remoteResolvedData();\n\n if (explicitData !== null && explicitData !== undefined) {\n return config;\n }\n\n if (config.dataSource?.kind !== 'remote') {\n return config;\n }\n\n if (remoteState === 'loading') {\n return {\n ...config,\n preferredLoadState: 'loading',\n };\n }\n\n if (remoteState === 'error') {\n return {\n ...config,\n preferredLoadState: 'error',\n state: config.state?.error\n ? {\n ...config.state,\n error: {\n ...config.state.error,\n technicalDetails: this.remoteTechnicalError() ?? config.state.error.technicalDetails,\n },\n }\n : config.state,\n };\n }\n\n if (remoteData !== null) {\n return {\n ...config,\n preferredLoadState: undefined,\n series: config.series.map((series) => ({\n ...series,\n metric: {\n ...series.metric,\n aggregation: 'sum',\n field: series.metric?.field || 'value',\n },\n })),\n };\n }\n\n return config;\n });\n\n readonly loadingLabel = computed(() =>\n this.i18n.resolve(this.renderConfig().state?.loadingLabel),\n );\n readonly emptyTitle = computed(() =>\n this.i18n.resolve(this.renderConfig().emptyState?.title),\n );\n readonly emptyDescription = computed(() =>\n this.i18n.resolve(this.renderConfig().emptyState?.description),\n );\n readonly errorTitle = computed(() =>\n this.i18n.resolve(this.renderConfig().state?.error?.title),\n );\n readonly errorDescription = computed(() =>\n this.i18n.resolve(this.renderConfig().state?.error?.description),\n );\n\n readonly loadState = computed<PraxisChartLoadState>(() => {\n const config = this.renderConfig();\n if (config.preferredLoadState === 'loading') return 'loading';\n if (config.preferredLoadState === 'error') return 'error';\n\n const dataSource = config.dataSource;\n const explicitData = this.data();\n if (dataSource?.kind === 'remote' && (explicitData === null || explicitData === undefined)) {\n return this.remoteRuntimeState() === 'ready' ? 'ready' : 'loading';\n }\n\n const transformed = this.transformer.transform(config, this.resolvedData());\n return transformed.hasData ? 'ready' : 'empty';\n });\n\n constructor() {\n effect(() => {\n const config = this.config();\n const explicitData = this.data();\n const nextSignature = explicitData === null || explicitData === undefined\n ? this.buildRemoteSignature(config)\n : null;\n\n if (nextSignature === this.previousRemoteSignature) {\n return;\n }\n\n this.previousRemoteSignature = nextSignature;\n this.remoteResolvedData.set(null);\n this.remoteRuntimeState.set('idle');\n this.remoteTechnicalError.set(null);\n });\n\n effect(() => {\n const nextState = this.loadState();\n if (this.currentLoadState() !== nextState) {\n this.currentLoadState.set(nextState);\n this.loadStateChange.emit(nextState);\n }\n });\n\n effect(() => {\n const config = this.config();\n const explicitData = this.data();\n if (config.dataSource?.kind !== 'remote' || (explicitData !== null && explicitData !== undefined)) {\n return;\n }\n\n if (this.remoteRuntimeState() === 'loading' || this.remoteResolvedData() !== null) {\n return;\n }\n\n const event = {\n chartId: config.id,\n dataSource: config.dataSource,\n query: config.dataSource.query,\n } satisfies PraxisChartQueryRequestEvent;\n\n this.queryRequest.emit(event);\n this.remoteRuntimeState.set('loading');\n this.remoteResolvedData.set([]);\n this.remoteTechnicalError.set(null);\n\n this.statsApi.execute(event, config)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (rows) => {\n this.remoteResolvedData.set(rows);\n this.remoteRuntimeState.set('ready');\n this.remoteTechnicalError.set(null);\n },\n error: (error) => {\n this.remoteResolvedData.set([]);\n this.remoteRuntimeState.set('error');\n this.remoteTechnicalError.set(\n error instanceof Error && error.message.trim()\n ? error.message\n : 'praxis.stats request failed',\n );\n },\n });\n });\n\n effect(() => {\n if (this.loadState() !== 'ready') {\n this.engine.destroy();\n return;\n }\n\n const host = this.chartHost()?.nativeElement;\n if (!host) return;\n\n this.engine.render(host, {\n config: this.renderConfig(),\n data: this.resolvedData(),\n onPointClick: (event) => this.pointClick.emit(event),\n });\n\n this.ensureResizeObserver(host);\n });\n\n this.destroyRef.onDestroy(() => {\n this.resizeObserver()?.disconnect();\n this.engine.destroy();\n });\n }\n\n private ensureResizeObserver(host: HTMLElement): void {\n if (this.resizeObserver()) {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n this.engine.resize();\n });\n\n observer.observe(host);\n this.resizeObserver.set(observer);\n }\n\n private buildRemoteSignature(config: PraxisChartConfig): string | null {\n if (config.dataSource?.kind !== 'remote') {\n return null;\n }\n\n return JSON.stringify({\n id: config.id,\n resourcePath: config.dataSource.resourcePath,\n query: config.dataSource.query,\n });\n }\n}\n","import type { PraxisChartDataRow } from '../models/chart-dataset.model';\n\nexport const PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH: Record<string, PraxisChartDataRow[]> = {\n Jan: [\n { segment: 'Enterprise', total: 52000 },\n { segment: 'Mid-market', total: 38000 },\n { segment: 'SMB', total: 30000 },\n ],\n Fev: [\n { segment: 'Enterprise', total: 61000 },\n { segment: 'Mid-market', total: 42000 },\n { segment: 'SMB', total: 35000 },\n ],\n Mar: [\n { segment: 'Enterprise', total: 68000 },\n { segment: 'Mid-market', total: 47000 },\n { segment: 'SMB', total: 36000 },\n ],\n Abr: [\n { segment: 'Enterprise', total: 64000 },\n { segment: 'Mid-market', total: 49500 },\n { segment: 'SMB', total: 36000 },\n ],\n};\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport type { PraxisChartPointEvent } from '../../models/chart-events.model';\nimport { PraxisChartComponent } from '../praxis-chart/praxis-chart.component';\nimport { PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH } from '../../mocks/chart-drilldown.mock';\n\n@Component({\n selector: 'praxis-chart-drilldown-panel',\n standalone: true,\n imports: [CommonModule, PraxisChartComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section class=\"drilldown-shell\">\n <header class=\"drilldown-header\">\n <p class=\"drilldown-eyebrow\">Drill-down local</p>\n <h3>{{ title() }}</h3>\n @if (activeCategory()) {\n <p class=\"drilldown-description\">Recorte atual: {{ activeCategory() }}</p>\n } @else {\n <p class=\"drilldown-description\">Clique em uma barra do chart principal para abrir o detalhamento local.</p>\n }\n </header>\n\n <praxis-chart\n [config]=\"detailChartConfig()\"\n [data]=\"detailData()\"\n ></praxis-chart>\n </section>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .drilldown-shell {\n display: grid;\n gap: 14px;\n }\n\n .drilldown-header h3,\n .drilldown-eyebrow,\n .drilldown-description {\n margin: 0;\n }\n\n .drilldown-eyebrow {\n font-size: 0.75rem;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--md-sys-color-on-surface-variant, #5a5d67);\n }\n\n .drilldown-header h3 {\n font-size: 1.2rem;\n color: var(--md-sys-color-on-surface, #1a1b20);\n }\n\n .drilldown-description {\n color: var(--md-sys-color-on-surface-variant, #5a5d67);\n }\n `,\n ],\n})\nexport class PraxisChartDrilldownPanelComponent {\n readonly title = input('Detalhamento por segmento');\n readonly selection = input<PraxisChartPointEvent | null>(null);\n\n readonly activeCategory = computed(() => {\n const raw = this.selection()?.category;\n return typeof raw === 'string' ? raw : null;\n });\n\n readonly detailData = computed(() => {\n const category = this.activeCategory();\n if (!category) return [];\n return PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH[category] ?? [];\n });\n\n readonly detailChartConfig = computed(() => {\n const category = this.activeCategory();\n return {\n id: 'chart-drilldown-detail',\n type: 'donut' as const,\n title: { text: category ? `Mix de receita em ${category}` : 'Aguardando selecao' },\n subtitle: { text: category ? 'Drill-down local com JSON mockado' : 'Selecione um ponto no chart principal' },\n height: 280,\n series: [\n {\n id: 'segmentMix',\n categoryField: 'segment',\n metric: { field: 'total', aggregation: 'sum' as const },\n labels: { visible: true },\n },\n ],\n emptyState: {\n title: { text: 'Nenhum recorte selecionado' },\n description: { text: 'O painel de drill-down usa mocks locais e reage ao pointClick do chart principal.' },\n },\n theme: {\n palette: ['#1263b4', '#2b8a3e', '#f08c00', '#7b61ff'],\n },\n };\n });\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'praxis-chart-state-probe',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section class=\"probe-shell\">\n <header class=\"probe-header\">\n <p class=\"probe-eyebrow\">Probe</p>\n <h3>{{ title() }}</h3>\n </header>\n\n @if (value() === null || value() === undefined || value() === '') {\n <div class=\"probe-empty\">Aguardando eventos do runtime.</div>\n } @else {\n <pre>{{ serializedValue() }}</pre>\n }\n </section>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .probe-shell {\n display: grid;\n gap: 12px;\n min-height: 220px;\n padding: 18px;\n border-radius: 20px;\n background:\n linear-gradient(180deg, rgba(11, 17, 31, 0.96), rgba(11, 17, 31, 0.88)),\n radial-gradient(circle at top right, rgba(18, 99, 180, 0.32), transparent 35%);\n color: #d7e6ff;\n }\n\n .probe-header h3,\n .probe-eyebrow {\n margin: 0;\n }\n\n .probe-eyebrow {\n font-size: 0.75rem;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: rgba(215, 230, 255, 0.7);\n }\n\n .probe-empty {\n color: rgba(215, 230, 255, 0.78);\n }\n\n pre {\n margin: 0;\n overflow: auto;\n white-space: pre-wrap;\n word-break: break-word;\n font-size: 0.84rem;\n line-height: 1.45;\n }\n `,\n ],\n})\nexport class PraxisChartStateProbeComponent {\n readonly title = input('Chart Runtime Probe');\n readonly value = input<unknown>(null);\n\n readonly serializedValue = computed(() => JSON.stringify(this.value(), null, 2));\n}\n","import { ENVIRONMENT_INITIALIZER, Provider } from '@angular/core';\nimport { ComponentMetadataRegistry, type ComponentDocMeta } from '@praxisui/core';\nimport { PraxisChartComponent } from './components/praxis-chart/praxis-chart.component';\n\nexport const PRAXIS_CHART_COMPONENT_METADATA: ComponentDocMeta = {\n id: 'praxis-chart',\n componentType: 'praxis-chart',\n displayName: 'Praxis Chart',\n selector: 'praxis-chart',\n component: PraxisChartComponent,\n friendlyName: 'Praxis Chart',\n description: 'Chart component for analytics and metadata-driven visualizations in Praxis UI.',\n icon: 'bar_chart',\n tags: ['chart', 'analytics', 'widget', 'visualization'],\n lib: '@praxisui/charts',\n inputs: [\n {\n name: 'config',\n type: 'PraxisChartConfig',\n description: 'Declarative chart configuration with metadata-oriented semantics.',\n },\n {\n name: 'data',\n type: 'PraxisChartDataRow[]',\n description: 'Optional local dataset that takes precedence over local datasource items.',\n },\n ],\n outputs: [\n {\n name: 'pointClick',\n type: 'PraxisChartPointEvent',\n description: 'Emitted when the host wants to react to a point/series click.',\n },\n {\n name: 'queryRequest',\n type: 'PraxisChartQueryRequestEvent',\n description: 'Emitted before a remote praxis.stats datasource is resolved, allowing host-side observability or overrides.',\n },\n {\n name: 'loadStateChange',\n type: 'PraxisChartLoadState',\n description: 'Emitted when the chart state changes.',\n },\n ],\n};\n\nexport function providePraxisChartsMetadata(): Provider {\n return {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: (registry: ComponentMetadataRegistry) => () => {\n registry.register(PRAXIS_CHART_COMPONENT_METADATA);\n },\n deps: [ComponentMetadataRegistry],\n } as Provider;\n}\n","import { ENVIRONMENT_INITIALIZER, Provider } from '@angular/core';\nimport { ComponentMetadataRegistry, type ComponentDocMeta } from '@praxisui/core';\nimport { PraxisChartDrilldownPanelComponent } from './components/praxis-chart-drilldown-panel/praxis-chart-drilldown-panel.component';\n\nexport const PRAXIS_CHART_DRILLDOWN_PANEL_METADATA: ComponentDocMeta = {\n id: 'praxis-chart-drilldown-panel',\n componentType: 'praxis-chart-drilldown-panel',\n displayName: 'Praxis Chart Drilldown Panel',\n selector: 'praxis-chart-drilldown-panel',\n component: PraxisChartDrilldownPanelComponent,\n friendlyName: 'Praxis Chart Drilldown Panel',\n description: 'Local drill-down panel that consumes chart point events and renders a derived detail chart.',\n icon: 'query_stats',\n tags: ['chart', 'drilldown', 'widget', 'analytics'],\n lib: '@praxisui/charts',\n inputs: [\n {\n name: 'title',\n type: 'string',\n description: 'Panel title for the drill-down view.',\n },\n {\n name: 'selection',\n type: 'PraxisChartPointEvent',\n description: 'Event emitted by a source chart and used to resolve local detail datasets.',\n },\n ],\n};\n\nexport function providePraxisChartDrilldownPanelMetadata(): Provider {\n return {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: (registry: ComponentMetadataRegistry) => () => {\n registry.register(PRAXIS_CHART_DRILLDOWN_PANEL_METADATA);\n },\n deps: [ComponentMetadataRegistry],\n } as Provider;\n}\n","import { ENVIRONMENT_INITIALIZER, Provider } from '@angular/core';\nimport { ComponentMetadataRegistry, type ComponentDocMeta } from '@praxisui/core';\nimport { PraxisChartStateProbeComponent } from './components/praxis-chart-state-probe/praxis-chart-state-probe.component';\n\nexport const PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA: ComponentDocMeta = {\n id: 'praxis-chart-state-probe',\n componentType: 'praxis-chart-state-probe',\n displayName: 'Praxis Chart State Probe',\n selector: 'praxis-chart-state-probe',\n component: PraxisChartStateProbeComponent,\n friendlyName: 'Praxis Chart State Probe',\n description: 'Diagnostic widget used to inspect chart events and runtime payloads during local validation.',\n icon: 'monitoring',\n tags: ['chart', 'probe', 'debug', 'widget'],\n lib: '@praxisui/charts',\n inputs: [\n {\n name: 'title',\n type: 'string',\n description: 'Probe panel title.',\n },\n {\n name: 'value',\n type: 'unknown',\n description: 'Payload rendered as formatted JSON.',\n },\n ],\n};\n\nexport function providePraxisChartStateProbeMetadata(): Provider {\n return {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: (registry: ComponentMetadataRegistry) => () => {\n registry.register(PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA);\n },\n deps: [ComponentMetadataRegistry],\n } as Provider;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { createDefaultTableConfig, type TableConfig } from '@praxisui/core';\nimport { PraxisTable } from '@praxisui/table';\nimport { PraxisChartComponent } from '../components/praxis-chart/praxis-chart.component';\nimport type { PraxisChartConfig } from '../models/chart-config.model';\nimport type { PraxisChartDataRow } from '../models/chart-dataset.model';\nimport type {\n PraxisChartLoadState,\n PraxisChartPointEvent,\n PraxisChartQueryRequestEvent,\n} from '../models/chart-events.model';\nimport { PraxisChartStatsApiService } from '../services/chart-stats-api.service';\n\nexport type PraxisChartShowcaseViewMode = 'chart' | 'table';\n\n@Component({\n selector: 'praxis-chart-showcase-widget',\n standalone: true,\n imports: [CommonModule, PraxisChartComponent, PraxisTable],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (viewMode() === 'chart') {\n <praxis-chart\n [config]=\"config()\"\n [data]=\"data()\"\n (pointClick)=\"pointClick.emit($event)\"\n (queryRequest)=\"queryRequest.emit($event)\"\n (loadStateChange)=\"loadStateChange.emit($event)\"\n ></praxis-chart>\n } @else if (stateMode() === 'loading') {\n <section class=\"showcase-state-card\">\n <h4>{{ loadingLabel() }}</h4>\n </section>\n } @else if (stateMode() === 'error') {\n <section class=\"showcase-state-card showcase-state-card-error\">\n <h4>{{ errorTitle() }}</h4>\n @if (errorDescription()) {\n <p>{{ errorDescription() }}</p>\n }\n </section>\n } @else {\n <praxis-table\n [config]=\"tableConfig()\"\n [data]=\"resolvedRows()\"\n [tableId]=\"tableId()\"\n [title]=\"resolvedTitle()\"\n [subtitle]=\"resolvedSubtitle()\"\n [icon]=\"'table_view'\"\n (rowClick)=\"handleRowClick($event)\"\n ></praxis-table>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n min-width: 0;\n }\n\n .showcase-state-card {\n min-height: 240px;\n display: grid;\n place-content: center;\n gap: 8px;\n padding: 24px;\n border-radius: 18px;\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline, #c5c7ce) 72%, transparent);\n background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(244, 247, 251, 0.98));\n text-align: center;\n }\n\n .showcase-state-card h4 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--md-sys-color-on-surface, #1a1b20);\n }\n\n .showcase-state-card p {\n margin: 0;\n color: var(--md-sys-color-on-surface-variant, #5a5d67);\n }\n `,\n ],\n})\nexport class PraxisChartShowcaseWidgetComponent {\n readonly config = input.required<PraxisChartConfig>();\n readonly data = input<PraxisChartDataRow[] | null>(null);\n readonly viewMode = input<PraxisChartShowcaseViewMode>('chart');\n\n readonly pointClick = output<PraxisChartPointEvent>();\n readonly queryRequest = output<PraxisChartQueryRequestEvent>();\n readonly loadStateChange = output<PraxisChartLoadState>();\n\n private readonly statsApi = inject(PraxisChartStatsApiService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly remoteResolvedRows = signal<PraxisChartDataRow[] | null>(null);\n private readonly remoteRuntimeState = signal<'idle' | 'loading' | 'ready' | 'error'>('idle');\n private readonly remoteTechnicalError = signal<string | null>(null);\n private previousRemoteSignature: string | null = null;\n\n readonly resolvedRows = computed(() => {\n const explicitData = this.data();\n if (explicitData !== null && explicitData !== undefined) {\n return explicitData;\n }\n\n return this.remoteResolvedRows() ?? [];\n });\n readonly tableId = computed(() => `${this.config().id || 'praxis-chart'}-showcase-table`);\n readonly resolvedTitle = computed(() => resolveText(this.config().title) || 'Tabela analitica');\n readonly resolvedSubtitle = computed(\n () => resolveText(this.config().subtitle) || 'Mesmo dataset em visualizacao tabular',\n );\n readonly loadingLabel = computed(\n () => resolveText(this.config().state?.loadingLabel) || 'Carregando analytics...',\n );\n readonly errorTitle = computed(\n () =>\n this.remoteTechnicalError()\n || resolveText(this.config().state?.error?.title)\n || 'Falha no contrato analitico',\n );\n readonly errorDescription = computed(() => resolveText(this.config().state?.error?.description));\n readonly stateMode = computed<'ready' | 'loading' | 'error'>(() =>\n resolveShowcaseStateMode(this.config(), this.remoteRuntimeState()),\n );\n readonly tableConfig = computed(() => buildTableConfig(this.config(), this.resolvedRows()));\n\n constructor() {\n effect(() => {\n const config = this.config();\n const explicitData = this.data();\n const nextSignature = explicitData === null || explicitData === undefined\n ? buildRemoteSignature(config)\n : null;\n\n if (nextSignature === this.previousRemoteSignature) {\n return;\n }\n\n this.previousRemoteSignature = nextSignature;\n this.remoteResolvedRows.set(null);\n this.remoteRuntimeState.set('idle');\n this.remoteTechnicalError.set(null);\n });\n\n effect(() => {\n const config = this.config();\n const explicitData = this.data();\n if (this.viewMode() !== 'table') {\n return;\n }\n\n if (config.dataSource?.kind !== 'remote' || (explicitData !== null && explicitData !== undefined)) {\n return;\n }\n\n if (this.remoteRuntimeState() === 'loading' || this.remoteResolvedRows() !== null) {\n return;\n }\n\n const event = {\n chartId: config.id,\n dataSource: config.dataSource,\n query: config.dataSource.query,\n } satisfies PraxisChartQueryRequestEvent;\n\n this.queryRequest.emit(event);\n this.remoteRuntimeState.set('loading');\n this.remoteResolvedRows.set([]);\n this.remoteTechnicalError.set(null);\n\n this.statsApi.execute(event, config)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (rows) => {\n this.remoteResolvedRows.set(rows);\n this.remoteRuntimeState.set('ready');\n this.remoteTechnicalError.set(null);\n },\n error: (error) => {\n this.remoteResolvedRows.set([]);\n this.remoteRuntimeState.set('error');\n this.remoteTechnicalError.set(\n error instanceof Error && error.message.trim()\n ? error.message\n : 'praxis.stats request failed',\n );\n },\n });\n });\n }\n\n handleRowClick(event: { row?: PraxisChartDataRow } | null): void {\n const row = event?.row;\n if (!row) {\n return;\n }\n\n const config = this.config();\n const primarySeries = config.series[0];\n const categoryField = primarySeries?.categoryField || config.axes?.x?.field;\n const metricField = primarySeries?.metric?.field;\n\n this.pointClick.emit({\n chartId: config.id,\n seriesId: primarySeries?.id,\n seriesName: primarySeries?.name,\n category: categoryField ? stringifyCell(row[categoryField]) : undefined,\n value: metricField ? row[metricField] : undefined,\n data: row,\n });\n }\n}\n\nexport function resolveShowcaseStateMode(\n config: PraxisChartConfig,\n remoteRuntimeState: 'idle' | 'loading' | 'ready' | 'error' = 'idle',\n): 'ready' | 'loading' | 'error' {\n if (config.preferredLoadState === 'loading') {\n return 'loading';\n }\n if (config.preferredLoadState === 'error') {\n return 'error';\n }\n if (config.dataSource?.kind === 'remote' && remoteRuntimeState === 'error') {\n return 'error';\n }\n if (config.dataSource?.kind === 'remote' && remoteRuntimeState !== 'ready') {\n return 'loading';\n }\n return 'ready';\n}\n\nexport function buildTableConfig(\n config: PraxisChartConfig,\n rows: PraxisChartDataRow[],\n): TableConfig {\n const tableConfig = createDefaultTableConfig();\n const toolbar = tableConfig.toolbar!;\n const behavior = tableConfig.behavior!;\n const pagination = behavior.pagination!;\n const sorting = behavior.sorting!;\n const filtering = behavior.filtering!;\n const selection = behavior.selection!;\n const localDataMode = behavior.localDataMode!;\n const actions = tableConfig.actions!;\n const rowActions = actions.row!;\n const bulkActions = actions.bulk!;\n const appearance = tableConfig.appearance!;\n const categoryField = config.axes?.x?.field || config.series[0]?.categoryField;\n const categoryLabel = config.axes?.x?.label || categoryField;\n const sampleRow = rows[0] || {};\n const seriesColumns = config.series\n .map((series) => {\n const field = series.metric?.field || series.categoryField;\n if (!field) {\n return null;\n }\n\n return {\n field,\n header: series.name || series.metric?.label || field,\n };\n })\n .filter((column): column is { field: string; header: string } => column !== null);\n\n const fallbackColumns = Object.keys(sampleRow).map((field) => ({\n field,\n header: field,\n }));\n const categoryColumn = categoryField\n ? [{\n field: categoryField,\n header: categoryLabel || categoryField,\n }]\n : [];\n\n const dedupedColumns = [...categoryColumn, ...seriesColumns, ...fallbackColumns].filter(\n (column, index, source) =>\n source.findIndex((candidate) => candidate.field === column.field) === index,\n );\n\n tableConfig.columns = dedupedColumns;\n toolbar.visible = false;\n pagination.enabled = rows.length > 10;\n sorting.enabled = true;\n filtering.enabled = false;\n selection.enabled = false;\n localDataMode.enabled = true;\n rowActions.enabled = false;\n rowActions.actions = [];\n bulkActions.enabled = false;\n bulkActions.actions = [];\n appearance.density = 'comfortable';\n\n return tableConfig;\n}\n\nfunction resolveText(value: unknown): string {\n if (typeof value === 'string') {\n return value;\n }\n if (value && typeof value === 'object' && 'text' in (value as Record<string, unknown>)) {\n const text = (value as { text?: unknown }).text;\n return typeof text === 'string' ? text : '';\n }\n return '';\n}\n\nfunction stringifyCell(value: unknown): string | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n return String(value);\n}\n\nfunction buildRemoteSignature(config: PraxisChartConfig): string | null {\n if (config.dataSource?.kind !== 'remote') {\n return null;\n }\n\n return JSON.stringify({\n id: config.id,\n resourcePath: config.dataSource.resourcePath,\n query: config.dataSource.query,\n });\n}\n","import { ENVIRONMENT_INITIALIZER, Provider } from '@angular/core';\nimport { ComponentMetadataRegistry, type ComponentDocMeta } from '@praxisui/core';\nimport { PraxisChartShowcaseWidgetComponent } from './praxis-chart-showcase-widget.component';\n\nexport const PRAXIS_CHART_SHOWCASE_WIDGET_METADATA: ComponentDocMeta = {\n id: 'praxis-chart-showcase-widget',\n componentType: 'praxis-chart-showcase-widget',\n displayName: 'Praxis Chart Showcase Widget',\n selector: 'praxis-chart-showcase-widget',\n component: PraxisChartShowcaseWidgetComponent,\n friendlyName: 'Praxis Chart Showcase Widget',\n description: 'Showcase-only widget that toggles between Praxis chart and Praxis table using the same dataset.',\n icon: 'swap_horiz',\n tags: ['chart', 'table', 'showcase', 'analytics'],\n lib: '@praxisui/charts',\n inputs: [\n {\n name: 'config',\n type: 'PraxisChartConfig',\n description: 'Chart configuration preserved across chart and table views.',\n },\n {\n name: 'data',\n type: 'PraxisChartDataRow[]',\n description: 'Local dataset shared by the chart and table renderers.',\n },\n {\n name: 'viewMode',\n type: \"'chart' | 'table'\",\n description: 'Current showcase view mode.',\n },\n ],\n outputs: [\n {\n name: 'pointClick',\n type: 'PraxisChartPointEvent',\n description: 'Forwards point selection from the chart or mapped row selection from the table.',\n },\n {\n name: 'queryRequest',\n type: 'PraxisChartQueryRequestEvent',\n description: 'Forwards remote chart data requests.',\n },\n {\n name: 'loadStateChange',\n type: 'PraxisChartLoadState',\n description: 'Forwards chart runtime state transitions.',\n },\n ],\n};\n\nexport function providePraxisChartShowcaseWidgetMetadata(): Provider {\n return {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: (registry: ComponentMetadataRegistry) => () => {\n registry.register(PRAXIS_CHART_SHOWCASE_WIDGET_METADATA);\n },\n deps: [ComponentMetadataRegistry],\n } as Provider;\n}\n","import { Provider } from '@angular/core';\nimport { EChartsEngineAdapter } from '../adapters/echarts/echarts-engine.adapter';\nimport { PRAXIS_CHART_ENGINE } from '../tokens/chart-engine.token';\nimport { providePraxisChartsMetadata } from '../praxis-chart.metadata';\nimport { providePraxisChartDrilldownPanelMetadata } from '../praxis-chart-drilldown-panel.metadata';\nimport { providePraxisChartStateProbeMetadata } from '../praxis-chart-state-probe.metadata';\nimport { providePraxisChartShowcaseWidgetMetadata } from '../examples/praxis-chart-showcase-widget.metadata';\n\nexport function providePraxisCharts(): Provider[] {\n return [\n EChartsEngineAdapter,\n {\n provide: PRAXIS_CHART_ENGINE,\n useExisting: EChartsEngineAdapter,\n },\n providePraxisChartsMetadata(),\n providePraxisChartDrilldownPanelMetadata(),\n providePraxisChartStateProbeMetadata(),\n providePraxisChartShowcaseWidgetMetadata(),\n ];\n}\n","import { Injectable } from '@angular/core';\nimport type { PraxisTextValue } from '@praxisui/core';\nimport type { PraxisChartConfig } from '../models/chart-config.model';\nimport type {\n PraxisChartDistributionStatsRequest,\n PraxisChartDataSource,\n PraxisChartGroupByStatsRequest,\n PraxisChartQueryConfig,\n PraxisChartQueryMetricConfig,\n PraxisChartStatsMetricRequest,\n PraxisChartStatsOrderBy,\n PraxisChartStatsRequest,\n PraxisChartTimeSeriesStatsRequest,\n} from '../models/chart-dataset.model';\nimport type { PraxisChartSeriesConfig, PraxisChartType } from '../models/chart-series.model';\nimport type {\n PraxisXUiChartAggregation,\n PraxisXUiChartContract,\n PraxisXUiChartStatsDistributionMode,\n PraxisXUiChartStatsSourceOptions,\n PraxisXUiChartStatsOrderBy,\n PraxisXUiChartTextValue,\n} from '../models/x-ui-chart.model';\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartCanonicalContractMapperService {\n toPraxisChartConfig(contract: PraxisXUiChartContract): PraxisChartConfig {\n this.assertSupportedContract(contract);\n\n return {\n id: contract.chartId,\n type: contract.kind as PraxisChartType,\n title: this.mapTextValue(contract.title),\n subtitle: this.mapTextValue(contract.subtitle),\n height: contract.height,\n axes: this.buildAxes(contract),\n series: this.buildSeries(contract),\n dataSource: this.buildDataSource(contract),\n interactions: this.buildInteractions(contract),\n theme: this.buildTheme(contract),\n emptyState: contract.state?.empty\n ? {\n title: this.mapTextValue(contract.state.empty.title),\n description: this.mapTextValue(contract.state.empty.description),\n }\n : undefined,\n state: {\n loadingLabel: this.mapTextValue(contract.state?.loading?.title),\n error: contract.state?.error\n ? {\n title: this.mapTextValue(contract.state.error.title),\n description: this.mapTextValue(contract.state.error.description),\n }\n : undefined,\n },\n };\n }\n\n private assertSupportedContract(contract: PraxisXUiChartContract): void {\n if (contract.source.kind === 'derived') {\n throw new Error('x-ui.chart source.kind=\"derived\" is not yet implemented in @praxisui/charts.');\n }\n\n if (contract.source.kind !== 'praxis.stats') {\n throw new Error(`x-ui.chart source.kind=\"${contract.source.kind}\" is not supported in @praxisui/charts.`);\n }\n\n if (!contract.source.resource?.trim()) {\n throw new Error('x-ui.chart source.resource is required for source.kind=\"praxis.stats\".');\n }\n\n if (!contract.source.operation) {\n throw new Error('x-ui.chart source.operation is required for source.kind=\"praxis.stats\".');\n }\n\n if (contract.theme?.palette && typeof contract.theme.palette === 'string') {\n throw new Error('x-ui.chart theme.palette as palette token reference is not yet implemented in @praxisui/charts.');\n }\n\n if (contract.theme?.variant) {\n throw new Error('x-ui.chart theme.variant is not yet implemented in @praxisui/charts.');\n }\n\n const aggregations = [\n ...(contract.metrics?.map((metric) => metric.aggregation).filter(Boolean) ?? []),\n ...(contract.aggregations?.map((aggregation) => aggregation.operation) ?? []),\n ];\n\n if (aggregations.includes('distinct-count')) {\n throw new Error('x-ui.chart aggregation \"distinct-count\" is not yet implemented in @praxisui/charts.');\n }\n\n if (!contract.metrics?.length) {\n throw new Error('x-ui.chart requires at least one metric for the current @praxisui/charts runtime.');\n }\n\n if (contract.kind !== 'pie' && contract.kind !== 'donut' && !contract.dimensions?.length) {\n throw new Error('x-ui.chart cartesian charts require at least one dimension in the current @praxisui/charts runtime.');\n }\n\n if ((contract.kind === 'pie' || contract.kind === 'donut') && !contract.dimensions?.[0]?.field) {\n throw new Error('x-ui.chart pie/donut charts require a first dimension for category mapping.');\n }\n\n if (contract.metrics.length > 1 && (contract.kind === 'pie' || contract.kind === 'donut')) {\n throw new Error('x-ui.chart pie/donut charts with multiple metrics are not yet implemented in @praxisui/charts.');\n }\n\n if (contract.source.kind === 'praxis.stats' && contract.metrics.length > 1) {\n throw new Error('x-ui.chart praxis.stats currently supports a single metric per chart in @praxisui/charts.');\n }\n\n if (contract.events?.selectionChange || contract.events?.crossFilter) {\n throw new Error('x-ui.chart selectionChange/crossFilter declarative runtime actions are not yet implemented in @praxisui/charts.');\n }\n }\n\n private buildAxes(contract: PraxisXUiChartContract): PraxisChartConfig['axes'] {\n const firstDimension = contract.dimensions?.[0];\n const firstMetric = contract.metrics?.[0];\n\n if (contract.kind === 'pie' || contract.kind === 'donut') {\n return {\n x: {\n field: firstDimension?.field,\n label: this.toLabel(firstDimension?.label),\n },\n };\n }\n\n return {\n x: {\n field: firstDimension?.field,\n label: this.toLabel(firstDimension?.label),\n type: firstDimension?.role === 'time' ? 'time' : 'category',\n },\n y: {\n label: this.toLabel(firstMetric?.label),\n type: 'value',\n },\n };\n }\n\n private buildSeries(contract: PraxisXUiChartContract): PraxisChartSeriesConfig[] {\n const firstDimension = contract.dimensions?.[0];\n const labelsVisible = this.resolveToggle(contract.labels);\n\n return (contract.metrics ?? []).map((metric, index) => ({\n id: `${metric.field}-${index + 1}`,\n name: this.toLabel(metric.label) ?? metric.field,\n type: contract.kind === 'stacked-bar' ? 'bar' : contract.kind,\n categoryField: contract.kind === 'pie' || contract.kind === 'donut' ? firstDimension?.field : undefined,\n metric: {\n field: metric.field,\n aggregation: this.mapAggregation(metric.aggregation),\n label: this.toLabel(metric.label),\n },\n stackId: contract.kind === 'stacked-bar' ? 'stack-1' : undefined,\n labels: labelsVisible ? { visible: true } : undefined,\n smooth: contract.kind === 'line' || contract.kind === 'area' ? true : undefined,\n }));\n }\n\n private buildDataSource(contract: PraxisXUiChartContract): PraxisChartDataSource | undefined {\n return {\n kind: 'remote',\n resourcePath: contract.source.resource!,\n schemaId: contract.source.resource,\n query: this.buildQuery(contract),\n };\n }\n\n private buildQuery(contract: PraxisXUiChartContract): PraxisChartQueryConfig | undefined {\n const filtersFromContract = this.toQueryFilterMap(contract.filters);\n const combinedFilters = {\n ...filtersFromContract,\n };\n\n return {\n sourceKind: 'praxis.stats',\n statsOperation: contract.source.operation,\n granularity: contract.source.options?.granularity,\n fillGaps: contract.source.options?.fillGaps,\n distributionMode: contract.source.options?.mode,\n bucketSize: contract.source.options?.bucketSize,\n bucketCount: contract.source.options?.bucketCount,\n statsOrderBy: this.mapStatsOrderBy(contract.source.options?.orderBy),\n statsPath: this.buildStatsPath(contract),\n statsRequest: this.buildStatsRequest(contract, combinedFilters),\n dimensions: contract.dimensions?.map((dimension) => dimension.field),\n metrics: contract.metrics?.map((metric) => ({\n field: metric.field,\n aggregation: this.mapAggregation(metric.aggregation),\n alias: metric.field,\n })),\n filters: Object.keys(combinedFilters).length ? combinedFilters : undefined,\n sort: contract.sort?.map((item) => `${item.field}:${item.direction}`),\n limit: contract.limit ?? contract.source.options?.limit,\n };\n }\n\n private buildInteractions(contract: PraxisXUiChartContract): PraxisChartConfig['interactions'] | undefined {\n return {\n pointClick: Boolean(contract.events?.pointClick || contract.events?.drillDown),\n selection: Boolean(contract.events?.selectionChange),\n drillDown: Boolean(contract.events?.drillDown),\n };\n }\n\n private buildTheme(contract: PraxisXUiChartContract): PraxisChartConfig['theme'] | undefined {\n return {\n palette: Array.isArray(contract.theme?.palette) ? contract.theme.palette : undefined,\n legend: { visible: this.resolveToggle(contract.legend, true) },\n tooltip: {\n enabled: this.resolveToggle(contract.tooltip, true),\n trigger: contract.kind === 'pie' || contract.kind === 'donut' ? 'item' : 'axis',\n },\n };\n }\n\n private mapTextValue(value?: PraxisXUiChartTextValue): PraxisTextValue | undefined {\n if (!value) return undefined;\n if (typeof value === 'string') return value;\n return {\n key: value.key,\n text: value.fallback,\n };\n }\n\n private toLabel(value?: PraxisXUiChartTextValue): string | undefined {\n if (!value) return undefined;\n if (typeof value === 'string') return value;\n return value.fallback || value.key;\n }\n\n private resolveToggle(\n value: boolean | { enabled: boolean } | undefined,\n defaultValue = false,\n ): boolean {\n if (typeof value === 'boolean') return value;\n if (typeof value === 'object' && value) return value.enabled;\n return defaultValue;\n }\n\n private mapAggregation(\n aggregation?: PraxisXUiChartAggregation,\n ): PraxisChartQueryMetricConfig['aggregation'] {\n switch (aggregation) {\n case 'avg':\n case 'min':\n case 'max':\n case 'count':\n case 'sum':\n return aggregation;\n case undefined:\n return undefined;\n default:\n throw new Error(`x-ui.chart aggregation \"${aggregation}\" is not yet implemented in @praxisui/charts.`);\n }\n }\n\n private toQueryFilterMap(\n filters?: PraxisXUiChartContract['filters'],\n ): Record<string, unknown> | undefined {\n if (!filters?.length) return undefined;\n\n return filters.reduce<Record<string, unknown>>((acc, filter) => {\n if (filter.value !== undefined) {\n acc[filter.field] = filter.value;\n return acc;\n }\n\n if (filter.values !== undefined) {\n acc[filter.field] = filter.values;\n }\n\n return acc;\n }, {});\n }\n\n private buildStatsPath(contract: PraxisXUiChartContract): string {\n return `${contract.source.resource!.replace(/\\/+$/, '')}/stats/${contract.source.operation}`;\n }\n\n private buildStatsRequest(\n contract: PraxisXUiChartContract,\n filters: Record<string, unknown>,\n ): PraxisChartStatsRequest {\n const field = this.resolveStatsField(contract);\n const metric = this.buildStatsMetricRequest(contract);\n const limit = contract.limit ?? contract.source.options?.limit;\n const orderBy = this.mapStatsOrderByToBackend(contract.source.options?.orderBy);\n\n switch (contract.source.operation) {\n case 'group-by':\n return {\n filter: filters,\n field,\n metric,\n limit,\n orderBy,\n } satisfies PraxisChartGroupByStatsRequest;\n case 'timeseries':\n return {\n filter: filters,\n field,\n granularity: this.mapStatsGranularityToBackend(contract.source.options?.granularity),\n metric,\n fillGaps: contract.source.options?.fillGaps,\n } satisfies PraxisChartTimeSeriesStatsRequest;\n case 'distribution':\n return {\n filter: filters,\n field,\n mode: this.mapDistributionModeToBackend(contract.source.options?.mode),\n metric,\n bucketSize: contract.source.options?.bucketSize,\n bucketCount: contract.source.options?.bucketCount,\n limit,\n orderBy,\n } satisfies PraxisChartDistributionStatsRequest;\n default:\n throw new Error(`x-ui.chart source.operation \"${contract.source.operation}\" is not supported in @praxisui/charts.`);\n }\n }\n\n private resolveStatsField(contract: PraxisXUiChartContract): string {\n const dimensionField = contract.dimensions?.[0]?.field?.trim();\n if (dimensionField) {\n return dimensionField;\n }\n\n throw new Error('x-ui.chart requires dimensions[0].field to derive the canonical praxis.stats request.');\n }\n\n private buildStatsMetricRequest(contract: PraxisXUiChartContract): PraxisChartStatsMetricRequest {\n const metric = contract.metrics?.[0];\n if (!metric) {\n throw new Error('x-ui.chart requires metrics[0] to derive the canonical praxis.stats request.');\n }\n\n const operation = this.mapStatsMetricOperation(metric.aggregation);\n return {\n operation,\n field: operation === 'COUNT' ? undefined : metric.field,\n };\n }\n\n private mapStatsOrderBy(value?: PraxisXUiChartStatsOrderBy): PraxisChartStatsOrderBy | undefined {\n if (!value) return undefined;\n\n switch (value) {\n case 'key-asc':\n case 'key-desc':\n case 'value-asc':\n case 'value-desc':\n return value;\n default:\n throw new Error(`x-ui.chart source.options.orderBy \"${value}\" is not supported in @praxisui/charts.`);\n }\n }\n\n private mapStatsOrderByToBackend(\n value?: PraxisXUiChartStatsOrderBy,\n ): 'KEY_ASC' | 'KEY_DESC' | 'VALUE_ASC' | 'VALUE_DESC' | undefined {\n switch (value) {\n case 'key-asc':\n return 'KEY_ASC';\n case 'key-desc':\n return 'KEY_DESC';\n case 'value-asc':\n return 'VALUE_ASC';\n case 'value-desc':\n return 'VALUE_DESC';\n case undefined:\n return undefined;\n default:\n throw new Error(`x-ui.chart source.options.orderBy \"${value}\" is not supported in @praxisui/charts.`);\n }\n }\n\n private mapStatsGranularityToBackend(\n value?: PraxisXUiChartStatsSourceOptions['granularity'],\n ): 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'QUARTER' | 'YEAR' {\n switch (value) {\n case 'hour':\n return 'HOUR';\n case 'day':\n return 'DAY';\n case 'week':\n return 'WEEK';\n case 'month':\n case undefined:\n return 'MONTH';\n case 'quarter':\n return 'QUARTER';\n case 'year':\n return 'YEAR';\n default:\n throw new Error(`x-ui.chart source.options.granularity \"${value}\" is not supported in @praxisui/charts.`);\n }\n }\n\n private mapDistributionModeToBackend(\n value?: PraxisXUiChartStatsDistributionMode,\n ): 'TERMS' | 'HISTOGRAM' {\n switch (value) {\n case 'histogram':\n return 'HISTOGRAM';\n case 'terms':\n case undefined:\n return 'TERMS';\n default:\n throw new Error(`x-ui.chart source.options.mode \"${value}\" is not supported in @praxisui/charts.`);\n }\n }\n\n private mapStatsMetricOperation(\n aggregation?: PraxisXUiChartAggregation,\n ): 'COUNT' | 'SUM' | 'AVG' | 'MIN' | 'MAX' {\n switch (aggregation) {\n case undefined:\n case 'count':\n return 'COUNT';\n case 'sum':\n return 'SUM';\n case 'avg':\n return 'AVG';\n case 'min':\n return 'MIN';\n case 'max':\n return 'MAX';\n default:\n throw new Error(`x-ui.chart aggregation \"${aggregation}\" is not yet implemented in @praxisui/charts.`);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ComponentMetadataRegistry } from '@praxisui/core';\nimport { PRAXIS_CHART_DRILLDOWN_PANEL_METADATA } from '../praxis-chart-drilldown-panel.metadata';\nimport { PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA } from '../praxis-chart-state-probe.metadata';\nimport { PRAXIS_CHART_COMPONENT_METADATA } from '../praxis-chart.metadata';\nimport { PRAXIS_CHART_SHOWCASE_WIDGET_METADATA } from '../examples/praxis-chart-showcase-widget.metadata';\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartMetadataRegistrationService {\n private registered = false;\n\n constructor(\n private readonly registry: ComponentMetadataRegistry,\n ) {\n this.ensureRegistered();\n }\n\n ensureRegistered(): void {\n if (this.registered) {\n return;\n }\n\n this.registry.register(PRAXIS_CHART_COMPONENT_METADATA);\n this.registry.register(PRAXIS_CHART_DRILLDOWN_PANEL_METADATA);\n this.registry.register(PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA);\n this.registry.register(PRAXIS_CHART_SHOWCASE_WIDGET_METADATA);\n this.registered = true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport type {\n GridItemLayout,\n GridWidgetInstance,\n WidgetDefinition,\n WidgetInstance,\n} from '@praxisui/core';\nimport type { PraxisXUiChartContract } from '../models/x-ui-chart.model';\nimport type { PraxisChartWidgetLike, PraxisChartWidgetResolution, PraxisChartWidgetSchema } from '../models/chart-widget-schema.model';\nimport { PraxisChartCanonicalContractMapperService } from './chart-canonical-contract-mapper.service';\nimport { PraxisChartMetadataRegistrationService } from './chart-metadata-registration.service';\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartSchemaMapperService {\n constructor(\n private readonly metadataRegistration: PraxisChartMetadataRegistrationService,\n private readonly canonicalContractMapper: PraxisChartCanonicalContractMapperService,\n ) {\n this.metadataRegistration.ensureRegistered();\n }\n\n resolve(\n input: PraxisChartWidgetLike,\n defaults?: {\n key?: string;\n layout?: GridItemLayout;\n },\n ): PraxisChartWidgetResolution {\n const schema = this.normalize(input);\n const config = this.toConfig(schema);\n const key = schema.key?.trim()\n || defaults?.key?.trim()\n || schema.chart?.chartId?.trim()\n || config.id?.trim()\n || 'praxis-chart';\n\n return {\n componentId: 'praxis-chart',\n key,\n className: schema.className,\n shell: schema.shell,\n layout: schema.layout ?? defaults?.layout,\n definition: this.toWidgetDefinition(schema),\n };\n }\n\n toWidgetDefinition(input: PraxisChartWidgetLike): WidgetDefinition {\n const schema = this.normalize(input);\n\n return {\n id: 'praxis-chart',\n inputs: {\n config: this.toConfig(schema),\n data: schema.data ?? null,\n },\n outputs: this.toOutputs(schema),\n bindingOrder: schema.bindingOrder ?? ['config', 'data'],\n };\n }\n\n toWidgetInstance(\n input: PraxisChartWidgetLike,\n defaults?: {\n key?: string;\n },\n ): WidgetInstance {\n const resolved = this.resolve(input, defaults);\n return {\n key: resolved.key,\n definition: resolved.definition,\n className: resolved.className,\n shell: resolved.shell,\n };\n }\n\n toGridWidgetInstance(\n input: PraxisChartWidgetLike,\n defaults: {\n key?: string;\n layout: GridItemLayout;\n },\n ): GridWidgetInstance {\n const resolved = this.resolve(input, defaults);\n return {\n key: resolved.key,\n definition: resolved.definition,\n layout: resolved.layout ?? defaults.layout,\n className: resolved.className,\n shell: resolved.shell,\n };\n }\n\n private normalize(input: PraxisChartWidgetLike): PraxisChartWidgetSchema {\n if (this.isCanonicalChartContract(input)) {\n return {\n kind: 'x-ui.chart',\n componentId: 'praxis-chart',\n chart: input,\n };\n }\n\n if (this.isWidgetSchema(input)) {\n return {\n kind: input.kind ?? 'x-ui.chart',\n componentId: 'praxis-chart',\n ...input,\n };\n }\n\n throw new Error('PraxisChartSchemaMapperService requires x-ui.chart as the primary public input.');\n }\n\n private isWidgetSchema(input: PraxisChartWidgetLike): input is PraxisChartWidgetSchema {\n return typeof input === 'object'\n && input !== null\n && (\n 'chart' in input\n || 'componentId' in input\n || 'key' in input\n || 'className' in input\n || 'outputs' in input\n || 'bindingOrder' in input\n || 'shell' in input\n || 'layout' in input\n || 'data' in input\n );\n }\n\n private isCanonicalChartContract(input: PraxisChartWidgetLike): input is PraxisXUiChartContract {\n return typeof input === 'object'\n && input !== null\n && 'version' in input\n && 'kind' in input\n && 'source' in input;\n }\n\n private toConfig(schema: PraxisChartWidgetSchema) {\n if (!schema.chart) {\n throw new Error('PraxisChartWidgetSchema requires widget.chart as the canonical public input.');\n }\n\n return this.canonicalContractMapper.toPraxisChartConfig(schema.chart);\n }\n\n private toOutputs(schema: PraxisChartWidgetSchema): WidgetDefinition['outputs'] | undefined {\n if (schema.outputs) {\n return schema.outputs;\n }\n\n if (schema.chart?.events?.pointClick || schema.chart?.events?.drillDown) {\n return {\n pointClick: 'emit',\n };\n }\n\n return undefined;\n }\n}\n","import { Injectable } from '@angular/core';\nimport type { GridWidgetInstance, WidgetInstance } from '@praxisui/core';\nimport type { PraxisChartConfig } from '../models/chart-config.model';\nimport type { PraxisChartBackendPayload } from '../models/chart-backend-payload.model';\nimport { PraxisChartCanonicalContractMapperService } from './chart-canonical-contract-mapper.service';\nimport { PraxisChartSchemaMapperService } from './chart-schema-mapper.service';\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartBackendPayloadAdapterService {\n constructor(\n private readonly chartSchemaMapper: PraxisChartSchemaMapperService,\n private readonly canonicalContractMapper: PraxisChartCanonicalContractMapperService,\n ) {}\n\n toChartConfig(payload: PraxisChartBackendPayload): PraxisChartConfig {\n if (!payload.widget.chart) {\n throw new Error('PraxisChartBackendPayload requires widget.chart as the canonical public input.');\n }\n\n const baseConfig = this.canonicalContractMapper.toPraxisChartConfig(payload.widget.chart);\n\n return {\n ...baseConfig,\n preferredLoadState: payload.widget.runtime?.preferredLoadState ?? baseConfig.preferredLoadState,\n };\n }\n\n toWidgetInstance(payload: PraxisChartBackendPayload): WidgetInstance {\n const widget = this.chartSchemaMapper.toWidgetInstance({\n kind: payload.widget.kind ?? 'x-ui.chart',\n key: payload.widget.key,\n className: payload.widget.className,\n shell: payload.widget.shell,\n bindingOrder: payload.widget.bindingOrder,\n outputs: payload.widget.outputs,\n chart: payload.widget.chart,\n data: payload.data,\n });\n\n return {\n ...widget,\n definition: {\n ...widget.definition,\n inputs: {\n ...(widget.definition.inputs || {}),\n config: this.toChartConfig(payload),\n },\n },\n };\n }\n\n toGridWidgetInstance(payload: PraxisChartBackendPayload): GridWidgetInstance {\n const layout = payload.widget.layout ?? { col: 1, row: 1, colSpan: 6, rowSpan: 4 };\n const widget = this.chartSchemaMapper.toGridWidgetInstance(\n {\n kind: payload.widget.kind ?? 'x-ui.chart',\n key: payload.widget.key,\n className: payload.widget.className,\n shell: payload.widget.shell,\n bindingOrder: payload.widget.bindingOrder,\n outputs: payload.widget.outputs,\n layout,\n chart: payload.widget.chart,\n data: payload.data,\n },\n {\n key: payload.widget.key,\n layout,\n },\n );\n\n return {\n ...widget,\n definition: {\n ...widget.definition,\n inputs: {\n ...(widget.definition.inputs || {}),\n config: this.toChartConfig(payload),\n },\n },\n };\n }\n}\n","import type { PraxisChartBackendPayload } from '../models/chart-backend-payload.model';\n\nexport const PRAXIS_CHART_BACKEND_MOCK_BAR: PraxisChartBackendPayload = {\n schemaMeta: {\n schemaId: 'api/human-resources/vw-perfil-heroi|post|response|tenant:demo|locale:pt-BR',\n schemaHash: 'published-hash-hero-universe-v1',\n resourcePath: 'api/human-resources/vw-perfil-heroi',\n operation: 'post',\n schemaType: 'response',\n source: 'backend',\n },\n widget: {\n kind: 'x-ui.chart',\n key: 'monthly-revenue-chart',\n className: 'analytics-widget analytics-widget-revenue',\n layout: { col: 1, row: 1, colSpan: 6, rowSpan: 4 },\n shell: {\n title: 'Heroes por universo',\n subtitle: 'Group-by real consumindo praxis.stats publicado',\n },\n outputs: {\n pointClick: 'emit',\n loadStateChange: 'emit',\n },\n chart: {\n version: '0.1.0',\n kind: 'bar',\n preset: 'ranking',\n chartId: 'monthly-revenue-chart',\n title: { key: 'charts.heroes.universe.title', fallback: 'Heroes por universo' },\n subtitle: { key: 'charts.heroes.universe.subtitle', fallback: 'Group-by em /vw-perfil-heroi' },\n height: 320,\n source: {\n kind: 'praxis.stats',\n resource: 'api/human-resources/vw-perfil-heroi',\n operation: 'group-by',\n options: {\n orderBy: 'value-desc',\n limit: 10,\n },\n },\n dimensions: [\n {\n field: 'universo',\n label: 'Universo',\n role: 'category',\n },\n ],\n metrics: [\n {\n field: 'count',\n label: 'Total de heroes',\n aggregation: 'count',\n },\n ],\n groupBy: ['universo'],\n sort: [{ field: 'universo', direction: 'asc' }],\n legend: { enabled: true },\n tooltip: { enabled: true },\n labels: false,\n theme: {\n palette: ['#1263b4'],\n },\n state: {\n empty: {\n title: { key: 'charts.empty.title', fallback: 'Sem dados analiticos' },\n description: { key: 'charts.empty.description', fallback: 'O backend retornou zero linhas para este recorte.' },\n },\n loading: {\n title: { key: 'charts.loading.title', fallback: 'Carregando dados publicados...' },\n },\n error: {\n title: { key: 'charts.error.title', fallback: 'Falha no contrato analitico' },\n description: { key: 'charts.error.description', fallback: 'Use este cenario para validar falha controlada do runtime.' },\n },\n },\n events: {\n pointClick: {\n action: 'emit',\n },\n },\n },\n },\n};\n\nexport const PRAXIS_CHART_BACKEND_MOCK_TIMESERIES: PraxisChartBackendPayload = {\n schemaMeta: {\n schemaId: 'api/human-resources/vw-indicadores-incidentes|post|response|tenant:demo|locale:pt-BR',\n schemaHash: 'published-hash-incident-timeseries-v1',\n resourcePath: 'api/human-resources/vw-indicadores-incidentes',\n operation: 'post',\n schemaType: 'response',\n source: 'backend',\n },\n widget: {\n kind: 'x-ui.chart',\n key: 'incident-timeseries-chart',\n layout: { col: 7, row: 1, colSpan: 5, rowSpan: 4 },\n shell: {\n title: 'Incidentes por mes',\n subtitle: 'Time series real consumindo praxis.stats publicado',\n },\n chart: {\n version: '0.1.0',\n kind: 'line',\n preset: 'kpi-trend',\n chartId: 'incident-timeseries-chart',\n title: { key: 'charts.incidents.timeline.title', fallback: 'Incidentes por mes' },\n subtitle: { key: 'charts.incidents.timeline.subtitle', fallback: 'Timeseries em /vw-indicadores-incidentes' },\n source: {\n kind: 'praxis.stats',\n resource: 'api/human-resources/vw-indicadores-incidentes',\n operation: 'timeseries',\n options: {\n granularity: 'month',\n fillGaps: false,\n },\n },\n dimensions: [\n {\n field: 'ocorridoEm',\n label: 'Ocorrido em',\n role: 'time',\n },\n ],\n metrics: [\n {\n field: 'count',\n label: 'Total de incidentes',\n aggregation: 'count',\n },\n ],\n legend: { enabled: true },\n tooltip: { enabled: true },\n labels: false,\n theme: {\n palette: ['#2b8a3e'],\n },\n },\n },\n};\n\nexport const PRAXIS_CHART_BACKEND_MOCK_DONUT: PraxisChartBackendPayload = {\n schemaMeta: {\n schemaId: 'api/human-resources/vw-indicadores-incidentes|post|response|tenant:demo|locale:pt-BR',\n schemaHash: 'published-hash-incident-severity-v1',\n resourcePath: 'api/human-resources/vw-indicadores-incidentes',\n operation: 'post',\n schemaType: 'response',\n source: 'backend',\n },\n widget: {\n kind: 'x-ui.chart',\n key: 'ticket-status-chart',\n layout: { col: 7, row: 1, colSpan: 5, rowSpan: 4 },\n shell: {\n title: 'Severidade de incidentes',\n subtitle: 'Distribution real consumindo praxis.stats publicado',\n },\n chart: {\n version: '0.1.0',\n kind: 'donut',\n preset: 'distribution',\n chartId: 'ticket-status-chart',\n title: { key: 'charts.incidents.severity.title', fallback: 'Severidade de incidentes' },\n source: {\n kind: 'praxis.stats',\n resource: 'api/human-resources/vw-indicadores-incidentes',\n operation: 'distribution',\n options: {\n mode: 'terms',\n orderBy: 'value-desc',\n limit: 10,\n },\n },\n dimensions: [\n {\n field: 'severidade',\n label: 'Severidade',\n role: 'segment',\n },\n ],\n metrics: [\n {\n field: 'count',\n label: 'Total',\n aggregation: 'count',\n },\n ],\n labels: { enabled: true },\n legend: { enabled: true },\n tooltip: { enabled: true },\n theme: {\n palette: ['#1263b4', '#2b8a3e', '#f08c00', '#c92a2a'],\n },\n },\n },\n};\n","import type {\n GridPageDefinition,\n GridWidgetInstance,\n WidgetInstance,\n WidgetPageDefinition,\n} from '@praxisui/core';\nimport {\n PRAXIS_CHART_BACKEND_MOCK_BAR,\n PRAXIS_CHART_BACKEND_MOCK_DONUT,\n PRAXIS_CHART_BACKEND_MOCK_TIMESERIES,\n} from '../mocks/chart-backend.mock';\nimport { PraxisChartBackendPayloadAdapterService } from '../services/chart-backend-payload-adapter.service';\nimport type { PraxisChartShowcaseViewMode } from './praxis-chart-showcase-widget.component';\n\nexport function buildPraxisChartMockWidgetPage(\n adapter: PraxisChartBackendPayloadAdapterService,\n): WidgetPageDefinition {\n return {\n widgets: [\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_BAR)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_TIMESERIES)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_DONUT)),\n ],\n layout: {\n orientation: 'columns',\n columns: 2,\n gap: '16px',\n },\n };\n}\n\nexport function buildPraxisChartMockGridPage(\n adapter: PraxisChartBackendPayloadAdapterService,\n): GridPageDefinition {\n return {\n widgets: [\n withShowcaseViewToggle(adapter.toGridWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_BAR)),\n withShowcaseViewToggle(adapter.toGridWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_TIMESERIES)),\n withShowcaseViewToggle(adapter.toGridWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_DONUT)),\n ],\n options: {\n cols: 12,\n rowHeight: 88,\n gap: 16,\n },\n };\n}\n\nexport function buildPraxisChartInteractiveWidgetPage(\n adapter: PraxisChartBackendPayloadAdapterService,\n): WidgetPageDefinition {\n return {\n widgets: [\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_BAR)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_TIMESERIES)),\n {\n key: 'chart-drilldown-panel',\n definition: {\n id: 'praxis-chart-drilldown-panel',\n inputs: {\n title: 'Drill-down por segmento',\n selection: null,\n },\n },\n shell: {\n title: 'Local Drill-down',\n subtitle: 'Filtrado por pointClick do chart principal',\n },\n },\n {\n key: 'chart-event-probe',\n definition: {\n id: 'praxis-chart-state-probe',\n inputs: {\n title: 'Eventos do chart principal',\n value: 'Clique em uma barra para inspecionar o payload emitido.',\n },\n },\n shell: {\n title: 'Runtime Probe',\n subtitle: 'Conectado via WidgetDefinition.connections',\n },\n },\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_DONUT)),\n ],\n connections: [\n {\n from: { widget: 'monthly-revenue-chart', output: 'pointClick' },\n to: { widget: 'chart-event-probe', input: 'value' },\n },\n {\n from: { widget: 'monthly-revenue-chart', output: 'pointClick' },\n to: { widget: 'chart-drilldown-panel', input: 'selection' },\n },\n ],\n layout: {\n orientation: 'columns',\n columns: 2,\n gap: '16px',\n },\n };\n}\n\nexport function buildPraxisChartInteractiveGridPage(\n adapter: PraxisChartBackendPayloadAdapterService,\n): GridPageDefinition {\n return {\n widgets: [\n withShowcaseViewToggle(adapter.toGridWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_BAR)),\n buildDrilldownGridWidget(),\n withShowcaseViewToggle(adapter.toGridWidgetInstance({\n ...PRAXIS_CHART_BACKEND_MOCK_TIMESERIES,\n widget: {\n ...PRAXIS_CHART_BACKEND_MOCK_TIMESERIES.widget,\n layout: { col: 1, row: 5, colSpan: 6, rowSpan: 4 },\n },\n })),\n buildProbeGridWidget(),\n withShowcaseViewToggle(adapter.toGridWidgetInstance({\n ...PRAXIS_CHART_BACKEND_MOCK_DONUT,\n widget: {\n ...PRAXIS_CHART_BACKEND_MOCK_DONUT.widget,\n layout: { col: 7, row: 5, colSpan: 6, rowSpan: 4 },\n },\n })),\n ],\n connections: [\n {\n from: { widget: 'monthly-revenue-chart', output: 'pointClick' },\n to: { widget: 'chart-event-probe', input: 'value' },\n },\n {\n from: { widget: 'monthly-revenue-chart', output: 'pointClick' },\n to: { widget: 'chart-drilldown-panel', input: 'selection' },\n },\n ],\n options: {\n cols: 12,\n rowHeight: 88,\n gap: 16,\n },\n };\n}\n\nfunction buildDrilldownGridWidget(): GridWidgetInstance {\n return {\n key: 'chart-drilldown-panel',\n definition: {\n id: 'praxis-chart-drilldown-panel',\n inputs: {\n title: 'Drill-down por segmento',\n selection: null,\n },\n },\n layout: { col: 7, row: 1, colSpan: 6, rowSpan: 4 },\n shell: {\n title: 'Local Drill-down',\n subtitle: 'Filtrado por pointClick do chart principal',\n },\n };\n}\n\nfunction buildProbeGridWidget(): GridWidgetInstance {\n return {\n key: 'chart-event-probe',\n definition: {\n id: 'praxis-chart-state-probe',\n inputs: {\n title: 'Eventos do chart principal',\n value: 'Clique em uma barra para inspecionar o payload emitido.',\n },\n },\n layout: { col: 7, row: 9, colSpan: 6, rowSpan: 3 },\n shell: {\n title: 'Runtime Probe',\n subtitle: 'Conectado via WidgetDefinition.connections',\n },\n };\n}\n\nfunction withShowcaseViewToggle<T extends GridWidgetInstance | WidgetInstance>(\n widget: T,\n initialViewMode: PraxisChartShowcaseViewMode = 'chart',\n): T {\n return {\n ...widget,\n definition: {\n ...widget.definition,\n id: 'praxis-chart-showcase-widget',\n inputs: {\n ...(widget.definition.inputs || {}),\n viewMode: initialViewMode,\n },\n bindingOrder: ['config', 'data', 'viewMode'],\n },\n shell: {\n ...(widget.shell || {}),\n actions: [...((widget.shell?.actions as any[]) || []), ...buildShowcaseToggleActions()],\n },\n };\n}\n\nfunction buildShowcaseToggleActions() {\n return [\n {\n id: 'show-chart',\n icon: 'bar_chart',\n tooltip: 'Ver grafico',\n variant: 'icon' as const,\n command: 'pdx:set-input',\n payload: {\n input: 'viewMode',\n value: 'chart',\n },\n },\n {\n id: 'show-table',\n icon: 'table_view',\n tooltip: 'Ver tabela',\n variant: 'icon' as const,\n command: 'pdx:set-input',\n payload: {\n input: 'viewMode',\n value: 'table',\n },\n },\n ];\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport {\n DynamicGridPageComponent,\n DynamicWidgetPageComponent,\n} from '@praxisui/core';\nimport {\n PRAXIS_CHART_BACKEND_MOCK_BAR,\n PRAXIS_CHART_BACKEND_MOCK_DONUT,\n PRAXIS_CHART_BACKEND_MOCK_TIMESERIES,\n} from '../mocks/chart-backend.mock';\nimport {\n buildPraxisChartInteractiveGridPage,\n buildPraxisChartInteractiveWidgetPage,\n buildPraxisChartMockGridPage,\n buildPraxisChartMockWidgetPage,\n} from './chart-backend-mock.examples';\nimport { providePraxisCharts } from '../providers/charts.providers';\nimport { PraxisChartBackendPayloadAdapterService } from '../services/chart-backend-payload-adapter.service';\n\ntype ShowcaseLayoutMode = 'widget' | 'grid';\ntype ShowcasePayloadMode = 'group-by' | 'timeseries' | 'distribution';\ntype ShowcaseScenarioMode = 'baseline' | 'interactive' | 'empty' | 'loading' | 'error';\n\n@Component({\n selector: 'praxis-chart-composition-showcase',\n standalone: true,\n imports: [CommonModule, DynamicWidgetPageComponent, DynamicGridPageComponent],\n providers: [providePraxisCharts()],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section class=\"showcase-shell\">\n <header class=\"showcase-hero\">\n <div class=\"showcase-copy\">\n <p class=\"showcase-eyebrow\">Praxis Charts</p>\n <h2>Composicao local com contrato canonico e API publicada</h2>\n <p>\n O showcase valida o fluxo <code>widget.chart</code>,\n <code>praxis.stats</code>, renderizacao dinamica, probe de eventos\n e o toggle de chart/tabela sobre o mesmo dataset.\n </p>\n </div>\n\n <div class=\"showcase-controls\">\n <div class=\"control-group\">\n <span>Layout</span>\n <div class=\"control-buttons\">\n <button type=\"button\" [class.active]=\"layoutMode() === 'widget'\" (click)=\"layoutMode.set('widget')\">\n Widget Page\n </button>\n <button type=\"button\" [class.active]=\"layoutMode() === 'grid'\" (click)=\"layoutMode.set('grid')\">\n Grid Page\n </button>\n </div>\n </div>\n\n <div class=\"control-group\">\n <span>Envelope inspecionado</span>\n <div class=\"control-buttons\">\n <button type=\"button\" [class.active]=\"payloadMode() === 'group-by'\" (click)=\"payloadMode.set('group-by')\">\n Group-by\n </button>\n <button type=\"button\" [class.active]=\"payloadMode() === 'timeseries'\" (click)=\"payloadMode.set('timeseries')\">\n Time series\n </button>\n <button type=\"button\" [class.active]=\"payloadMode() === 'distribution'\" (click)=\"payloadMode.set('distribution')\">\n Distribution\n </button>\n </div>\n </div>\n\n <div class=\"control-group\">\n <span>Cenario</span>\n <div class=\"control-buttons\">\n <button type=\"button\" [class.active]=\"scenarioMode() === 'baseline'\" (click)=\"scenarioMode.set('baseline')\">\n Baseline\n </button>\n <button type=\"button\" [class.active]=\"scenarioMode() === 'interactive'\" (click)=\"scenarioMode.set('interactive')\">\n Interativo\n </button>\n <button type=\"button\" [class.active]=\"scenarioMode() === 'empty'\" (click)=\"scenarioMode.set('empty')\">\n Empty\n </button>\n <button type=\"button\" [class.active]=\"scenarioMode() === 'loading'\" (click)=\"scenarioMode.set('loading')\">\n Loading\n </button>\n <button type=\"button\" [class.active]=\"scenarioMode() === 'error'\" (click)=\"scenarioMode.set('error')\">\n Error\n </button>\n </div>\n </div>\n </div>\n </header>\n\n <div class=\"showcase-grid\">\n <article class=\"runtime-panel\">\n <div class=\"panel-header\">\n <div>\n <p class=\"panel-kicker\">Runtime</p>\n <h3>{{ layoutMode() === 'widget' ? 'DynamicWidgetPage' : 'DynamicGridPage' }}</h3>\n </div>\n <span class=\"panel-chip\">{{ layoutMode() }} · {{ scenarioMode() }}</span>\n </div>\n\n @if (layoutMode() === 'widget') {\n <praxis-dynamic-page\n [page]=\"widgetPage()\"\n [context]=\"runtimeContext\"\n [autoPersist]=\"false\"\n ></praxis-dynamic-page>\n } @else {\n <praxis-dynamic-grid-page [page]=\"gridPage()\" [context]=\"runtimeContext\"></praxis-dynamic-grid-page>\n }\n </article>\n\n <article class=\"payload-panel\">\n <div class=\"panel-header\">\n <div>\n <p class=\"panel-kicker\">Payload</p>\n <h3>{{ payloadTitle() }}</h3>\n </div>\n <span class=\"panel-chip\">widget.chart</span>\n </div>\n\n <pre>{{ selectedPayloadJson() }}</pre>\n </article>\n </div>\n </section>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .showcase-shell {\n display: grid;\n gap: 24px;\n }\n\n .showcase-hero {\n display: grid;\n gap: 20px;\n padding: 28px;\n border-radius: 28px;\n background:\n radial-gradient(circle at top right, rgba(18, 99, 180, 0.18), transparent 30%),\n linear-gradient(135deg, rgba(7, 24, 54, 0.95), rgba(18, 99, 180, 0.78));\n color: #f7fbff;\n }\n\n .showcase-copy h2 {\n margin: 0 0 10px;\n font-size: clamp(1.8rem, 3vw, 2.6rem);\n line-height: 1.05;\n }\n\n .showcase-copy p {\n margin: 0;\n max-width: 52rem;\n color: rgba(247, 251, 255, 0.88);\n }\n\n .showcase-eyebrow,\n .panel-kicker {\n margin: 0 0 8px;\n font-size: 0.78rem;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: rgba(247, 251, 255, 0.72);\n }\n\n .showcase-controls {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n }\n\n .control-group {\n display: grid;\n gap: 8px;\n }\n\n .control-group span {\n font-size: 0.84rem;\n color: rgba(247, 251, 255, 0.76);\n }\n\n .control-buttons {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n }\n\n .control-buttons button {\n border: 1px solid rgba(247, 251, 255, 0.22);\n background: rgba(247, 251, 255, 0.08);\n color: #f7fbff;\n border-radius: 999px;\n padding: 10px 14px;\n cursor: pointer;\n transition: background 160ms ease, transform 160ms ease;\n }\n\n .control-buttons button.active {\n background: #f7fbff;\n color: #0d2d5f;\n }\n\n .showcase-grid {\n display: grid;\n gap: 20px;\n grid-template-columns: minmax(0, 1.3fr) minmax(320px, 0.9fr);\n }\n\n .runtime-panel,\n .payload-panel {\n display: grid;\n gap: 16px;\n padding: 20px;\n border-radius: 24px;\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline, #c5c7ce) 76%, transparent);\n background: linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(244, 247, 251, 0.96));\n }\n\n .panel-header {\n display: flex;\n align-items: start;\n justify-content: space-between;\n gap: 12px;\n }\n\n .panel-header h3 {\n margin: 0;\n color: #142033;\n }\n\n .panel-chip {\n border-radius: 999px;\n padding: 6px 10px;\n font-size: 0.76rem;\n background: rgba(18, 99, 180, 0.12);\n color: #1263b4;\n }\n\n .payload-panel pre {\n margin: 0;\n padding: 16px;\n border-radius: 18px;\n background: #09111f;\n color: #d7e6ff;\n overflow: auto;\n font-size: 0.84rem;\n line-height: 1.5;\n }\n\n @media (max-width: 1080px) {\n .showcase-grid {\n grid-template-columns: 1fr;\n }\n }\n `,\n ],\n})\nexport class PraxisChartCompositionShowcaseComponent {\n protected readonly layoutMode = signal<ShowcaseLayoutMode>('widget');\n protected readonly payloadMode = signal<ShowcasePayloadMode>('group-by');\n protected readonly scenarioMode = signal<ShowcaseScenarioMode>('baseline');\n protected readonly runtimeContext = {\n tenantId: 'demo-enterprise',\n locale: 'pt-BR',\n environment: 'published-api',\n };\n\n private readonly backendPayloadAdapter = inject(PraxisChartBackendPayloadAdapterService);\n\n protected readonly widgetPage = computed(() => {\n switch (this.scenarioMode()) {\n case 'interactive':\n return buildPraxisChartInteractiveWidgetPage(this.backendPayloadAdapter);\n case 'empty':\n return {\n ...buildPraxisChartMockWidgetPage(this.backendPayloadAdapter),\n widgets: [\n this.backendPayloadAdapter.toWidgetInstance({\n ...PRAXIS_CHART_BACKEND_MOCK_BAR,\n data: [],\n }),\n ],\n };\n case 'loading':\n return {\n ...buildPraxisChartMockWidgetPage(this.backendPayloadAdapter),\n widgets: [\n this.backendPayloadAdapter.toWidgetInstance({\n ...PRAXIS_CHART_BACKEND_MOCK_BAR,\n data: [],\n widget: {\n ...PRAXIS_CHART_BACKEND_MOCK_BAR.widget,\n runtime: {\n preferredLoadState: 'loading',\n },\n },\n }),\n ],\n };\n case 'error':\n return {\n ...buildPraxisChartMockWidgetPage(this.backendPayloadAdapter),\n widgets: [\n this.backendPayloadAdapter.toWidgetInstance({\n ...PRAXIS_CHART_BACKEND_MOCK_BAR,\n data: [],\n widget: {\n ...PRAXIS_CHART_BACKEND_MOCK_BAR.widget,\n runtime: {\n preferredLoadState: 'error',\n },\n },\n }),\n ],\n };\n case 'baseline':\n default:\n return buildPraxisChartMockWidgetPage(this.backendPayloadAdapter);\n }\n });\n\n protected readonly gridPage = computed(() => {\n switch (this.scenarioMode()) {\n case 'interactive':\n return buildPraxisChartInteractiveGridPage(this.backendPayloadAdapter);\n case 'empty':\n return {\n ...buildPraxisChartMockGridPage(this.backendPayloadAdapter),\n widgets: [\n this.backendPayloadAdapter.toGridWidgetInstance({\n ...PRAXIS_CHART_BACKEND_MOCK_BAR,\n data: [],\n }),\n this.backendPayloadAdapter.toGridWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_TIMESERIES),\n this.backendPayloadAdapter.toGridWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_DONUT),\n ],\n };\n case 'loading':\n return {\n ...buildPraxisChartMockGridPage(this.backendPayloadAdapter),\n widgets: [\n this.backendPayloadAdapter.toGridWidgetInstance({\n ...PRAXIS_CHART_BACKEND_MOCK_BAR,\n data: [],\n widget: {\n ...PRAXIS_CHART_BACKEND_MOCK_BAR.widget,\n runtime: {\n preferredLoadState: 'loading',\n },\n },\n }),\n this.backendPayloadAdapter.toGridWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_TIMESERIES),\n this.backendPayloadAdapter.toGridWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_DONUT),\n ],\n };\n case 'error':\n return {\n ...buildPraxisChartMockGridPage(this.backendPayloadAdapter),\n widgets: [\n this.backendPayloadAdapter.toGridWidgetInstance({\n ...PRAXIS_CHART_BACKEND_MOCK_BAR,\n data: [],\n widget: {\n ...PRAXIS_CHART_BACKEND_MOCK_BAR.widget,\n runtime: {\n preferredLoadState: 'error',\n },\n },\n }),\n this.backendPayloadAdapter.toGridWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_TIMESERIES),\n this.backendPayloadAdapter.toGridWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_DONUT),\n ],\n };\n case 'baseline':\n default:\n return buildPraxisChartMockGridPage(this.backendPayloadAdapter);\n }\n });\n\n protected readonly payloadTitle = computed(() => {\n switch (this.payloadMode()) {\n case 'timeseries':\n return 'Envelope timeseries';\n case 'distribution':\n return 'Envelope distribution';\n case 'group-by':\n default:\n return 'Envelope group-by';\n }\n });\n\n protected readonly selectedPayloadJson = computed(() =>\n JSON.stringify(this.selectedPayload(), null, 2),\n );\n\n private readonly selectedPayload = computed(() => {\n switch (this.payloadMode()) {\n case 'timeseries':\n return PRAXIS_CHART_BACKEND_MOCK_TIMESERIES;\n case 'distribution':\n return PRAXIS_CHART_BACKEND_MOCK_DONUT;\n case 'group-by':\n default:\n return PRAXIS_CHART_BACKEND_MOCK_BAR;\n }\n });\n}\n","/*\n * Public API Surface of praxis-charts\n */\n\nexport * from './lib/components/praxis-chart/praxis-chart.component';\nexport * from './lib/components/praxis-chart-drilldown-panel/praxis-chart-drilldown-panel.component';\nexport * from './lib/components/praxis-chart-state-probe/praxis-chart-state-probe.component';\nexport * from './lib/models/chart-config.model';\nexport * from './lib/models/chart-backend-payload.model';\nexport * from './lib/models/chart-series.model';\nexport * from './lib/models/chart-axis.model';\nexport * from './lib/models/chart-dataset.model';\nexport * from './lib/models/chart-events.model';\nexport * from './lib/models/chart-theme.model';\nexport * from './lib/models/chart-widget-schema.model';\nexport * from './lib/models/x-ui-chart.model';\nexport * from './lib/adapters/chart-engine.adapter';\nexport * from './lib/tokens/chart-engine.token';\nexport * from './lib/providers/charts.providers';\nexport * from './lib/services/chart-canonical-contract-mapper.service';\nexport * from './lib/services/chart-data-transformer.service';\nexport * from './lib/services/chart-option-builder.service';\nexport * from './lib/services/chart-schema-mapper.service';\nexport * from './lib/services/chart-backend-payload-adapter.service';\nexport * from './lib/services/chart-stats-api.service';\nexport * from './lib/mocks/chart-backend.mock';\nexport * from './lib/mocks/chart-drilldown.mock';\nexport * from './lib/examples/chart-backend-mock.examples';\nexport * from './lib/examples/praxis-chart-composition-showcase.component';\nexport * from './lib/praxis-chart.metadata';\nexport * from './lib/praxis-chart-drilldown-panel.metadata';\nexport * from './lib/praxis-chart-state-probe.metadata';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PraxisChartDataTransformerService","i1.PraxisChartOptionBuilderService","i1","i1.PraxisChartMetadataRegistrationService","i2.PraxisChartCanonicalContractMapperService","i1.PraxisChartSchemaMapperService"],"mappings":";;;;;;;;;;;;;;;;MAiCa,iCAAiC,CAAA;IAC5C,SAAS,CAAC,MAAyB,EAAE,IAA0B,EAAA;AAC7D,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;YACpD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;QACxC;QAEA,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC;IAC9C;IAEQ,kBAAkB,CACxB,MAAyB,EACzB,IAA0B,EAAA;QAE1B,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK;AAC3C,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;YAC3D,OAAO;AACL,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,OAAO,EAAE,KAAK;aACf;QACH;AAEA,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAC3B,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CACvE;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,KAC5C,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,CAClE;QAED,OAAO;AACL,YAAA,IAAI,EAAE,WAAW;YACjB,UAAU;YACV,MAAM;AACN,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC;SACrG;IACH;IAEQ,YAAY,CAClB,MAAyB,EACzB,IAA0B,EAAA;QAE1B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,QAAA,MAAM,aAAa,GAAG,YAAY,EAAE,aAAa,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK;QAC1E,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACnD,OAAO;AACL,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,OAAO,EAAE,KAAK;aACf;QACH;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB;AACxC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,YAAY,CAAC;AAC5D,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;QACrD;QAEA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM;AAClE,YAAA,EAAE,EAAE,CAAA,EAAG,YAAY,CAAC,EAAE,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;YAChC,IAAI;YACJ,KAAK;YACL,KAAK,EAAE,YAAY,CAAC,KAAK;AAC1B,SAAA,CAAC,CAAC;QAEH,OAAO;AACL,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC;AAC7C,YAAA,MAAM,EAAE,EAAE;YACV,MAAM;AACN,YAAA,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;SACjD;IACH;AAEQ,IAAA,oBAAoB,CAC1B,MAAyB,EACzB,YAAqC,EACrC,IAA0B,EAC1B,UAAoB,EAAA;QAEpB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK;AAC3C,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgC;AAE1D,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAc,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;AACxC,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAChB,YAAA,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;QAC7B;QAEA,OAAO;YACL,EAAE,EAAE,YAAY,CAAC,EAAE;AACnB,YAAA,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,IAAI,YAAY,CAAC,EAAE;AACxE,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,GAAG,KAAK,GAAG,MAAM;AAC7E,YAAA,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,aAAa,GAAG,YAAY,CAAC,OAAO,IAAI,SAAS,GAAG,SAAS;YACpF,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;AACrD,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM;YAC5B,KAAK,EAAE,YAAY,CAAC,KAAK;AACzB,YAAA,aAAa,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,IAAI,KAAK;YACpD,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;gBAClC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC7C,IAAI,CAAC,MAAM,CAAC,MAAM;AAAE,oBAAA,OAAO,IAAI;gBAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;AAC7C,YAAA,CAAC,CAAC;SACH;IACH;IAEQ,SAAS,CAAC,IAA0B,EAAE,YAAqC,EAAA;QACjF,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE,WAAW,IAAI,KAAK;AAC7D,QAAA,IAAI,WAAW,KAAK,OAAO,EAAE;YAC3B,OAAO,IAAI,CAAC,MAAM;QACpB;QAEA,MAAM,MAAM,GAAG;AACZ,aAAA,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,YAAY,CAAC;AACvD,aAAA,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,MAAM;AAAE,YAAA,OAAO,CAAC;QAE5B,QAAQ,WAAW;AACjB,YAAA,KAAK,KAAK;gBACR,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM;AACtE,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AAC5B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AAC5B,YAAA,KAAK,KAAK;AACV,YAAA;AACE,gBAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;;IAE1D;IAEQ,kBAAkB,CAAC,GAAuB,EAAE,YAAqC,EAAA;AACvF,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK;QACxC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,CAAC;QACV;AAEA,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;AAC3C,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,YAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC;QAC7C;AACA,QAAA,OAAO,CAAC;IACV;AAEQ,IAAA,iBAAiB,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,OAAO,KAAK,CAAC,WAAW,EAAE;QAC5B;AAEA,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;AACzD,YAAA,OAAO,WAAW;QACpB;AAEA,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB;wGAnKW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iCAAiC,cADpB,MAAM,EAAA,CAAA;;4FACnB,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCzBrB,+BAA+B,CAAA;AAEvB,IAAA,WAAA;AADnB,IAAA,WAAA,CACmB,WAA8C,EAAA;QAA9C,IAAA,CAAA,WAAW,GAAX,WAAW;IAC3B;IAEH,KAAK,CAAC,MAAyB,EAAE,IAA0B,EAAA;AACzD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;AAC5D,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO;QACrC,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI;QAC7D,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI;AAE3D,QAAA,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,EAAE;AAC9B,YAAA,MAAM,SAAS,GAAoB;AACjC,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,MAAM,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK;AACxD,gBAAA,KAAK,EAAE;AACL,oBAAA,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK;AACjD,iBAAA;AACD,gBAAA,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;oBACvC,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,oBAAA,SAAS,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,SAAS;AAC5D,iBAAA,CAAC,CAAC;aACJ;YAED,OAAO;AACL,gBAAA,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,eAAe;AAC9C,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,KAAK,EAAE;oBACL,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;oBACpC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1C,oBAAA,IAAI,EAAE,QAAQ;AACf,iBAAA;AACD,gBAAA,OAAO,EAAE,cAAc,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS;AACzD,gBAAA,MAAM,EAAE;AACN,sBAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AAC/C,sBAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBACnB,MAAM,EAAE,CAAC,SAAS,CAAC;aACpB;QACH;QAEA,OAAO;AACL,YAAA,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,eAAe;AAC9C,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;gBACpC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1C,gBAAA,IAAI,EAAE,MAAM;AACb,aAAA;AACD,YAAA,OAAO,EAAE;AACP,kBAAE,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,IAAI,MAAM;AACrD,kBAAE,SAAS;AACb,YAAA,MAAM,EAAE;kBACJ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACtB,kBAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACnB,YAAA,IAAI,EAAE;AACJ,gBAAA,GAAG,EAAE,EAAE;AACP,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,YAAY,EAAE,IAAI;AACnB,aAAA;AACD,YAAA,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,UAAU;AACxC,gBAAA,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK;gBAC3B,IAAI,EAAE,WAAW,CAAC,UAAU;AAC5B,gBAAA,SAAS,EAAE;oBACT,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI;oBAC7C,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5C,iBAAA;AACF,aAAA;AACD,YAAA,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,OAAO;AACrC,gBAAA,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK;AAC3B,gBAAA,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG;AACxB,gBAAA,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG;AACxB,gBAAA,SAAS,EAAE;oBACT,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI;AAC9C,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;gBAC1C,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,SAAS;AACvC,gBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE;AACrC,gBAAA,SAAS,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,SAAS;gBAC7D,IAAI,EAAE,MAAM,CAAC,MAAM;AACpB,aAAA,CAAC,CAAC;SACJ;IACH;AAEQ,IAAA,WAAW,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,SAAS;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;QAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,MAAM,IAAK,KAAiC,EAAE;AACtF,YAAA,MAAM,IAAI,GAAI,KAA2B,CAAC,IAAI;YAC9C,OAAO,IAAI,IAAI,SAAS;QAC1B;AACA,QAAA,OAAO,SAAS;IAClB;wGAtGW,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,iCAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,cADlB,MAAM,EAAA,CAAA;;4FACnB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACclC,GAAG,CAAC;IACF,aAAa;IACb,QAAQ;IACR,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,SAAS;IACT,QAAQ;IACR,cAAc;IACd,gBAAgB;IAChB,kBAAkB;AACnB,CAAA,CAAC;MAGW,oBAAoB,CAAA;AAIZ,IAAA,aAAA;AAHX,IAAA,KAAK;AAEb,IAAA,WAAA,CACmB,aAA8C,EAAA;QAA9C,IAAA,CAAA,aAAa,GAAb,aAAa;IAC7B;IAEH,MAAM,CAAC,IAAiB,EAAE,OAAuC,EAAA;AAC/D,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB;AAEA,QAAA,MAAM,MAAM,GAAsB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;QACxF,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,MAAW,KAAI;YACtC,OAAO,CAAC,YAAY,GAAG;AACrB,gBAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC1B,QAAQ,EAAE,MAAM,EAAE,QAAQ;gBAC1B,UAAU,EAAE,MAAM,EAAE,UAAU;gBAC9B,QAAQ,EAAE,MAAM,EAAE,IAAI;gBACtB,KAAK,EAAE,MAAM,EAAE,KAAK;gBACpB,IAAI,EAAE,MAAM,EAAE,IAAI;AACnB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;IACtB;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;IACxB;wGAlCW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,+BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAApB,oBAAoB,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;;MC6BY,0BAA0B,CAAA;AAElB,IAAA,IAAA;AACiB,IAAA,MAAA;IAFpC,WAAA,CACmB,IAAgB,EACC,MAAoB,EAAA;QADrC,IAAA,CAAA,IAAI,GAAJ,IAAI;QACa,IAAA,CAAA,MAAM,GAAN,MAAM;IACvC;IAEH,OAAO,CACL,KAAmC,EACnC,MAAyB,EAAA;AAEzB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;AACzB,QAAA,MAAM,YAAY,GAAG,KAAK,EAAE,YAAY;QACxC,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,YAAY,EAAE;YACtC,OAAO,UAAU,CAAC,MAChB,IAAI,KAAK,CAAC,wGAAwG,CAAC,CACpH;QACH;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;QAE/C,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAiE,GAAG,EAAE,YAAY;AACtF,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KACX,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,CAC3E,EACD,UAAU,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CACnD;IACL;AAEQ,IAAA,WAAW,CACjB,QAA8D,EAC9D,OAAgC,EAChC,aAAqB,EACrB,WAAmB,EAAA;QAEnB,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,IAAI,QAAQ,IAAI,QAAQ,EAAE;YACxB,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AACnC,gBAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE;AAC9D,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;gBACrE,OAAO;oBACL,CAAC,aAAa,GAAG,QAAQ;oBACzB,CAAC,WAAW,GAAG,WAAW;AAC1B,oBAAA,GAAG,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,QAAQ;AACxD,oBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,QAAQ;AAC9B,oBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;AAC1B,oBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;AAC1B,oBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;AAC1B,oBAAA,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI;AACtB,oBAAA,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,IAAI;iBAC1C;AACH,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,IAAI,SAAS,IAAI,QAAQ,EAAE;YACzB,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;gBACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;AACnD,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;gBACvE,OAAO;oBACL,CAAC,aAAa,GAAG,QAAQ;oBACzB,CAAC,WAAW,GAAG,WAAW;AAC1B,oBAAA,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI;AACvB,oBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ;AAC/B,oBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;AAC3B,oBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;AAC3B,oBAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;AACzB,oBAAA,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI;AACrB,oBAAA,IAAI,EAAE,MAAM,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI;AACvD,oBAAA,WAAW,EAAE,MAAM,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI;iBACrD;AACH,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,OAAO,EAAE;IACX;AAEQ,IAAA,qBAAqB,CAAC,MAA8B,EAAA;AAC1D,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,EAAE,EAAE;AAC9E,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7B;AACA,QAAA,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,KAAK,EAAE,EAAE;AACxE,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;QAC3B;AACA,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE;AAC9C,YAAA,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA,GAAA,EAAM,MAAM,CAAC,EAAE,IAAI,EAAE,CAAA,CAAE,CAAC,IAAI,EAAE;QAC3D;AACA,QAAA,OAAO,EAAE;IACX;IAEQ,kBAAkB,CACxB,KAAgC,EAChC,KAAgC,EAAA;AAEhC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvD,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvD,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,CAAC;IACV;IAEQ,oBAAoB,CAAC,MAAyB,EAAE,OAAgC,EAAA;QACtF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACpC,QACE,WAAW,EAAE;AACV,eAAA,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE;AAChB,eAAA,OAAO,CAAC;AACR,eAAA,UAAU;IAEjB;AAEQ,IAAA,kBAAkB,CAAC,MAAyB,EAAA;AAClD,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,OAAO;IACnD;AAEQ,IAAA,aAAa,CAAC,SAAiB,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE;QACvC,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AACzD,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI;AAC9D,cAAE,IAAI,CAAC,sBAAsB,CAAC,mBAAmB;cAC/C,mBAAmB;AACvB,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,iBAAiB,EAAE;IACvC;IAEQ,mBAAmB,GAAA;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE;QACxC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAC/C;AAEQ,IAAA,aAAa,CAAC,KAAa,EAAA;AACjC,QAAA,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;IAC7D;AAEQ,IAAA,sBAAsB,CAAC,KAAa,EAAA;QAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;IACtC;AAEQ,IAAA,4BAA4B,CAAC,IAAY,EAAA;AAC/C,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;AAEQ,IAAA,eAAe,CAAC,KAAc,EAAA;AACpC,QAAA,IAAI,KAAK,YAAY,iBAAiB,EAAE;AACtC,YAAA,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI;kBAClE,KAAK,CAAC;kBACN,QAAQ,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/B,OAAO,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C;QAEA,OAAO,UAAU,CAAC,MAChB,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAChG;IACH;AA/JW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,4CAG3B,OAAO,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAHN,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADb,MAAM,EAAA,CAAA;;4FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAI7B,MAAM;2BAAC,OAAO;;;MC/DN,mBAAmB,GAAG,IAAI,cAAc,CACnD,qBAAqB;;MCoIV,oBAAoB,CAAA;AACtB,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAqB;AAC5C,IAAA,IAAI,GAAG,KAAK,CAA8B,IAAI,gDAAC;IAE/C,UAAU,GAAG,MAAM,EAAyB;IAC5C,YAAY,GAAG,MAAM,EAAgC;IACrD,eAAe,GAAG,MAAM,EAAwB;AAExC,IAAA,SAAS,GAAG,SAAS,CAA6B,WAAW,qDAAC;AAC9D,IAAA,MAAM,GAAG,MAAM,CAA2B,mBAAmB,CAAC;AAC9D,IAAA,WAAW,GAAG,MAAM,CAAC,iCAAiC,CAAC;AACvD,IAAA,QAAQ,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC7C,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B,IAAA,cAAc,GAAG,MAAM,CAAwB,IAAI,0DAAC;AACpD,IAAA,gBAAgB,GAAG,MAAM,CAAuB,MAAM,4DAAC;AACvD,IAAA,kBAAkB,GAAG,MAAM,CAA8B,IAAI,8DAAC;AAC9D,IAAA,kBAAkB,GAAG,MAAM,CAAyC,MAAM,8DAAC;AAC3E,IAAA,oBAAoB,GAAG,MAAM,CAAgB,IAAI,gEAAC;IAC3D,uBAAuB,GAAkB,IAAI;AAE5C,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE;QAC7B,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;AACjD,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC5C,QAAA,IAAI,UAAU,KAAK,IAAI,EAAE;AACvB,YAAA,OAAO,UAAU;QACnB;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU;AAC3C,QAAA,IAAI,UAAU,EAAE,IAAI,KAAK,OAAO,EAAE;AAChC,YAAA,OAAO,UAAU,CAAC,KAAK,IAAI,EAAE;QAC/B;AAEA,QAAA,OAAO,EAAE;AACX,IAAA,CAAC,wDAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI;QAClD,OAAO,KAAK,IAAI,OAAO;AACzB,IAAA,CAAC,0DAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAoB,MAAK;AACvD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE;AAChC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC7C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAE5C,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACvD,YAAA,OAAO,MAAM;QACf;QAEA,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,KAAK,QAAQ,EAAE;AACxC,YAAA,OAAO,MAAM;QACf;AAEA,QAAA,IAAI,WAAW,KAAK,SAAS,EAAE;YAC7B,OAAO;AACL,gBAAA,GAAG,MAAM;AACT,gBAAA,kBAAkB,EAAE,SAAS;aAC9B;QACH;AAEA,QAAA,IAAI,WAAW,KAAK,OAAO,EAAE;YAC3B,OAAO;AACL,gBAAA,GAAG,MAAM;AACT,gBAAA,kBAAkB,EAAE,OAAO;AAC3B,gBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;AACnB,sBAAE;wBACE,GAAG,MAAM,CAAC,KAAK;AACf,wBAAA,KAAK,EAAE;AACL,4BAAA,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK;AACrB,4BAAA,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB;AACrF,yBAAA;AACF;sBACD,MAAM,CAAC,KAAK;aACjB;QACH;AAEA,QAAA,IAAI,UAAU,KAAK,IAAI,EAAE;YACvB,OAAO;AACL,gBAAA,GAAG,MAAM;AACT,gBAAA,kBAAkB,EAAE,SAAS;AAC7B,gBAAA,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACrC,oBAAA,GAAG,MAAM;AACT,oBAAA,MAAM,EAAE;wBACN,GAAG,MAAM,CAAC,MAAM;AAChB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,OAAO;AACvC,qBAAA;AACF,iBAAA,CAAC,CAAC;aACJ;QACH;AAEA,QAAA,OAAO,MAAM;AACf,IAAA,CAAC,wDAAC;IAEO,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC3D;IACQ,UAAU,GAAG,QAAQ,CAAC,MAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACzD;IACQ,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC/D;IACQ,UAAU,GAAG,QAAQ,CAAC,MAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC3D;IACQ,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACjE;AAEQ,IAAA,SAAS,GAAG,QAAQ,CAAuB,MAAK;AACvD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;AAClC,QAAA,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS;AAAE,YAAA,OAAO,SAAS;AAC7D,QAAA,IAAI,MAAM,CAAC,kBAAkB,KAAK,OAAO;AAAE,YAAA,OAAO,OAAO;AAEzD,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE;AAChC,QAAA,IAAI,UAAU,EAAE,IAAI,KAAK,QAAQ,KAAK,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,CAAC,EAAE;AAC1F,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,KAAK,OAAO,GAAG,OAAO,GAAG,SAAS;QACpE;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3E,OAAO,WAAW,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO;AAChD,IAAA,CAAC,qDAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE;YAChC,MAAM,aAAa,GAAG,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK;AAC9D,kBAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM;kBAChC,IAAI;AAER,YAAA,IAAI,aAAa,KAAK,IAAI,CAAC,uBAAuB,EAAE;gBAClD;YACF;AAEA,YAAA,IAAI,CAAC,uBAAuB,GAAG,aAAa;AAC5C,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;AACnC,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;AACrC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,SAAS,EAAE;AACzC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;AACpC,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;YACtC;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE;AAChC,YAAA,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,KAAK,QAAQ,KAAK,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,CAAC,EAAE;gBACjG;YACF;AAEA,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;gBACjF;YACF;AAEA,YAAA,MAAM,KAAK,GAAG;gBACZ,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,UAAU,EAAE,MAAM,CAAC,UAAU;AAC7B,gBAAA,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK;aACQ;AAExC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC;AACtC,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;YAEnC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM;AAChC,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACb,oBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;AACpC,oBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;gBACrC,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/B,oBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;AACpC,oBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAC3B,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI;0BACxC,KAAK,CAAC;0BACN,6BAA6B,CAClC;gBACH,CAAC;AACF,aAAA,CAAC;AACN,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,OAAO,EAAE;AAChC,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACrB;YACF;YAEA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;AAC5C,YAAA,IAAI,CAAC,IAAI;gBAAE;AAEX,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AACvB,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;AAC3B,gBAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;AACzB,gBAAA,YAAY,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AACrD,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AACjC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACvB,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,oBAAoB,CAAC,IAAiB,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzB;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAK;AACvC,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACtB,QAAA,CAAC,CAAC;AAEF,QAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnC;AAEQ,IAAA,oBAAoB,CAAC,MAAyB,EAAA;QACpD,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,KAAK,QAAQ,EAAE;AACxC,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,EAAE,EAAE,MAAM,CAAC,EAAE;AACb,YAAA,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,YAAY;AAC5C,YAAA,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK;AAC/B,SAAA,CAAC;IACJ;wGAxPW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,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,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,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EAvGpB;YACT,oBAAoB;AACpB,YAAA;AACE,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,WAAW,EAAE,oBAAoB;AAClC,aAAA;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAxCS,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAwGX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA3GhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,SAAA,EACZ;wBACT,oBAAoB;AACpB,wBAAA;AACE,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,WAAW,EAAE,oBAAoB;AAClC,yBAAA;qBACF,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0/BAAA,CAAA,EAAA;6cAwEkE,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC9IzE,MAAM,oCAAoC,GAAyC;AACxF,IAAA,GAAG,EAAE;AACH,QAAA,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,QAAA,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,QAAA,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AACjC,KAAA;AACD,IAAA,GAAG,EAAE;AACH,QAAA,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,QAAA,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,QAAA,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AACjC,KAAA;AACD,IAAA,GAAG,EAAE;AACH,QAAA,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,QAAA,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,QAAA,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AACjC,KAAA;AACD,IAAA,GAAG,EAAE;AACH,QAAA,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,QAAA,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,QAAA,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AACjC,KAAA;;;MC0CU,kCAAkC,CAAA;AACpC,IAAA,KAAK,GAAG,KAAK,CAAC,2BAA2B,iDAAC;AAC1C,IAAA,SAAS,GAAG,KAAK,CAA+B,IAAI,qDAAC;AAErD,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ;AACtC,QAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,IAAI;AAC7C,IAAA,CAAC,0DAAC;AAEO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;AACtC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE;AACxB,QAAA,OAAO,oCAAoC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7D,IAAA,CAAC,sDAAC;AAEO,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;QACtC,OAAO;AACL,YAAA,EAAE,EAAE,wBAAwB;AAC5B,YAAA,IAAI,EAAE,OAAgB;AACtB,YAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,CAAA,kBAAA,EAAqB,QAAQ,CAAA,CAAE,GAAG,oBAAoB,EAAE;AAClF,YAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,mCAAmC,GAAG,uCAAuC,EAAE;AAC5G,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,aAAa,EAAE,SAAS;oBACxB,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,KAAc,EAAE;AACvD,oBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1B,iBAAA;AACF,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE;AAC7C,gBAAA,WAAW,EAAE,EAAE,IAAI,EAAE,mFAAmF,EAAE;AAC3G,aAAA;AACD,YAAA,KAAK,EAAE;gBACL,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACtD,aAAA;SACF;AACH,IAAA,CAAC,6DAAC;wGAvCS,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,EArDnC;;;;;;;;;;;;;;;;;GAiBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gbAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAnBS,YAAY,+BAAE,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAuDjC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBA1D9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAAA,UAAA,EAC5B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,oBAAoB,CAAC,EAAA,eAAA,EAC5B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gbAAA,CAAA,EAAA;;;MCuCU,8BAA8B,CAAA;AAChC,IAAA,KAAK,GAAG,KAAK,CAAC,qBAAqB,iDAAC;AACpC,IAAA,KAAK,GAAG,KAAK,CAAU,IAAI,iDAAC;IAE5B,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,2DAAC;wGAJrE,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,EA3D/B;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sgBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAfS,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA6DX,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAhE1C,SAAS;+BACE,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EACN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sgBAAA,CAAA,EAAA;;;ACjBI,MAAM,+BAA+B,GAAqB;AAC/D,IAAA,EAAE,EAAE,cAAc;AAClB,IAAA,aAAa,EAAE,cAAc;AAC7B,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,SAAS,EAAE,oBAAoB;AAC/B,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,WAAW,EAAE,gFAAgF;AAC7F,IAAA,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,CAAC;AACvD,IAAA,GAAG,EAAE,kBAAkB;AACvB,IAAA,MAAM,EAAE;AACN,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,WAAW,EAAE,mEAAmE;AACjF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,WAAW,EAAE,2EAA2E;AACzF,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA;AACE,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,uBAAuB;AAC7B,YAAA,WAAW,EAAE,+DAA+D;AAC7E,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,IAAI,EAAE,8BAA8B;AACpC,YAAA,WAAW,EAAE,6GAA6G;AAC3H,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,WAAW,EAAE,uCAAuC;AACrD,SAAA;AACF,KAAA;;SAGa,2BAA2B,GAAA;IACzC,OAAO;AACL,QAAA,OAAO,EAAE,uBAAuB;AAChC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,UAAU,EAAE,CAAC,QAAmC,KAAK,MAAK;AACxD,YAAA,QAAQ,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACpD,CAAC;QACD,IAAI,EAAE,CAAC,yBAAyB,CAAC;KACtB;AACf;;ACnDO,MAAM,qCAAqC,GAAqB;AACrE,IAAA,EAAE,EAAE,8BAA8B;AAClC,IAAA,aAAa,EAAE,8BAA8B;AAC7C,IAAA,WAAW,EAAE,8BAA8B;AAC3C,IAAA,QAAQ,EAAE,8BAA8B;AACxC,IAAA,SAAS,EAAE,kCAAkC;AAC7C,IAAA,YAAY,EAAE,8BAA8B;AAC5C,IAAA,WAAW,EAAE,6FAA6F;AAC1G,IAAA,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC;AACnD,IAAA,GAAG,EAAE,kBAAkB;AACvB,IAAA,MAAM,EAAE;AACN,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,WAAW,EAAE,sCAAsC;AACpD,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,IAAI,EAAE,uBAAuB;AAC7B,YAAA,WAAW,EAAE,4EAA4E;AAC1F,SAAA;AACF,KAAA;;SAGa,wCAAwC,GAAA;IACtD,OAAO;AACL,QAAA,OAAO,EAAE,uBAAuB;AAChC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,UAAU,EAAE,CAAC,QAAmC,KAAK,MAAK;AACxD,YAAA,QAAQ,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC1D,CAAC;QACD,IAAI,EAAE,CAAC,yBAAyB,CAAC;KACtB;AACf;;AClCO,MAAM,2CAA2C,GAAqB;AAC3E,IAAA,EAAE,EAAE,0BAA0B;AAC9B,IAAA,aAAa,EAAE,0BAA0B;AACzC,IAAA,WAAW,EAAE,0BAA0B;AACvC,IAAA,QAAQ,EAAE,0BAA0B;AACpC,IAAA,SAAS,EAAE,8BAA8B;AACzC,IAAA,YAAY,EAAE,0BAA0B;AACxC,IAAA,WAAW,EAAE,8FAA8F;AAC3G,IAAA,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;AAC3C,IAAA,GAAG,EAAE,kBAAkB;AACvB,IAAA,MAAM,EAAE;AACN,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,WAAW,EAAE,oBAAoB;AAClC,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,WAAW,EAAE,qCAAqC;AACnD,SAAA;AACF,KAAA;;SAGa,oCAAoC,GAAA;IAClD,OAAO;AACL,QAAA,OAAO,EAAE,uBAAuB;AAChC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,UAAU,EAAE,CAAC,QAAmC,KAAK,MAAK;AACxD,YAAA,QAAQ,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QAChE,CAAC;QACD,IAAI,EAAE,CAAC,yBAAyB,CAAC;KACtB;AACf;;MC2Da,kCAAkC,CAAA;AACpC,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAqB;AAC5C,IAAA,IAAI,GAAG,KAAK,CAA8B,IAAI,gDAAC;AAC/C,IAAA,QAAQ,GAAG,KAAK,CAA8B,OAAO,oDAAC;IAEtD,UAAU,GAAG,MAAM,EAAyB;IAC5C,YAAY,GAAG,MAAM,EAAgC;IACrD,eAAe,GAAG,MAAM,EAAwB;AAExC,IAAA,QAAQ,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC7C,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,kBAAkB,GAAG,MAAM,CAA8B,IAAI,8DAAC;AAC9D,IAAA,kBAAkB,GAAG,MAAM,CAAyC,MAAM,8DAAC;AAC3E,IAAA,oBAAoB,GAAG,MAAM,CAAgB,IAAI,gEAAC;IAC3D,uBAAuB,GAAkB,IAAI;AAE5C,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE;QAChC,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACvD,YAAA,OAAO,YAAY;QACrB;AAEA,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE;AACxC,IAAA,CAAC,wDAAC;AACO,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,cAAc,CAAA,eAAA,CAAiB,mDAAC;AAChF,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,kBAAkB,yDAAC;AACtF,IAAA,gBAAgB,GAAG,QAAQ,CAClC,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,uCAAuC,4DACrF;IACQ,YAAY,GAAG,QAAQ,CAC9B,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,yBAAyB,wDAClF;IACQ,UAAU,GAAG,QAAQ,CAC5B,MACE,IAAI,CAAC,oBAAoB;WACtB,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK;AAC7C,WAAA,6BAA6B,sDACnC;IACQ,gBAAgB,GAAG,QAAQ,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,4DAAC;AACvF,IAAA,SAAS,GAAG,QAAQ,CAAgC,MAC3D,wBAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,qDACnE;AACQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,uDAAC;AAE3F,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE;YAChC,MAAM,aAAa,GAAG,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK;AAC9D,kBAAE,oBAAoB,CAAC,MAAM;kBAC3B,IAAI;AAER,YAAA,IAAI,aAAa,KAAK,IAAI,CAAC,uBAAuB,EAAE;gBAClD;YACF;AAEA,YAAA,IAAI,CAAC,uBAAuB,GAAG,aAAa;AAC5C,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;AACnC,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;AACrC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE;AAChC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE;gBAC/B;YACF;AAEA,YAAA,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,KAAK,QAAQ,KAAK,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,CAAC,EAAE;gBACjG;YACF;AAEA,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;gBACjF;YACF;AAEA,YAAA,MAAM,KAAK,GAAG;gBACZ,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,UAAU,EAAE,MAAM,CAAC,UAAU;AAC7B,gBAAA,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK;aACQ;AAExC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC;AACtC,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;YAEnC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM;AAChC,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACb,oBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;AACpC,oBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;gBACrC,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/B,oBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;AACpC,oBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAC3B,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI;0BACxC,KAAK,CAAC;0BACN,6BAA6B,CAClC;gBACH,CAAC;AACF,aAAA,CAAC;AACN,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,KAA0C,EAAA;AACvD,QAAA,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG;QACtB,IAAI,CAAC,GAAG,EAAE;YACR;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,QAAA,MAAM,aAAa,GAAG,aAAa,EAAE,aAAa,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK;AAC3E,QAAA,MAAM,WAAW,GAAG,aAAa,EAAE,MAAM,EAAE,KAAK;AAEhD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,MAAM,CAAC,EAAE;YAClB,QAAQ,EAAE,aAAa,EAAE,EAAE;YAC3B,UAAU,EAAE,aAAa,EAAE,IAAI;AAC/B,YAAA,QAAQ,EAAE,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,SAAS;AACvE,YAAA,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS;AACjD,YAAA,IAAI,EAAE,GAAG;AACV,SAAA,CAAC;IACJ;wGAhIW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,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,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,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0fAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAjCS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,YAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAmE9C,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAtE9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAAA,UAAA,EAC5B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,oBAAoB,EAAE,WAAW,CAAC,EAAA,eAAA,EACzC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0fAAA,CAAA,EAAA;;SAqKa,wBAAwB,CACtC,MAAyB,EACzB,qBAA6D,MAAM,EAAA;AAEnE,IAAA,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE;AAC3C,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,IAAI,MAAM,CAAC,kBAAkB,KAAK,OAAO,EAAE;AACzC,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,KAAK,QAAQ,IAAI,kBAAkB,KAAK,OAAO,EAAE;AAC1E,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,KAAK,QAAQ,IAAI,kBAAkB,KAAK,OAAO,EAAE;AAC1E,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,OAAO,OAAO;AAChB;AAEM,SAAU,gBAAgB,CAC9B,MAAyB,EACzB,IAA0B,EAAA;AAE1B,IAAA,MAAM,WAAW,GAAG,wBAAwB,EAAE;AAC9C,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,OAAQ;AACpC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAS;AACtC,IAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAW;AACvC,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAQ;AACjC,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAU;AACrC,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAU;AACrC,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAc;AAC7C,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,OAAQ;AACpC,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,GAAI;AAC/B,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAK;AACjC,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,UAAW;AAC1C,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa;IAC9E,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,aAAa;IAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AAC/B,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC;AAC1B,SAAA,GAAG,CAAC,CAAC,MAAM,KAAI;QACd,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,aAAa;QAC1D,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;QAEA,OAAO;YACL,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK;SACrD;AACH,IAAA,CAAC;SACA,MAAM,CAAC,CAAC,MAAM,KAAkD,MAAM,KAAK,IAAI,CAAC;AAEnF,IAAA,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;QAC7D,KAAK;AACL,QAAA,MAAM,EAAE,KAAK;AACd,KAAA,CAAC,CAAC;IACH,MAAM,cAAc,GAAG;AACrB,UAAE,CAAC;AACC,gBAAA,KAAK,EAAE,aAAa;gBACpB,MAAM,EAAE,aAAa,IAAI,aAAa;aACvC;UACD,EAAE;IAEN,MAAM,cAAc,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,aAAa,EAAE,GAAG,eAAe,CAAC,CAAC,MAAM,CACrF,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,KACpB,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAC9E;AAED,IAAA,WAAW,CAAC,OAAO,GAAG,cAAc;AACpC,IAAA,OAAO,CAAC,OAAO,GAAG,KAAK;IACvB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE;AACrC,IAAA,OAAO,CAAC,OAAO,GAAG,IAAI;AACtB,IAAA,SAAS,CAAC,OAAO,GAAG,KAAK;AACzB,IAAA,SAAS,CAAC,OAAO,GAAG,KAAK;AACzB,IAAA,aAAa,CAAC,OAAO,GAAG,IAAI;AAC5B,IAAA,UAAU,CAAC,OAAO,GAAG,KAAK;AAC1B,IAAA,UAAU,CAAC,OAAO,GAAG,EAAE;AACvB,IAAA,WAAW,CAAC,OAAO,GAAG,KAAK;AAC3B,IAAA,WAAW,CAAC,OAAO,GAAG,EAAE;AACxB,IAAA,UAAU,CAAC,OAAO,GAAG,aAAa;AAElC,IAAA,OAAO,WAAW;AACpB;AAEA,SAAS,WAAW,CAAC,KAAc,EAAA;AACjC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;IACd;IACA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAK,KAAiC,EAAE;AACtF,QAAA,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI;AAC/C,QAAA,OAAO,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,EAAE;IAC7C;AACA,IAAA,OAAO,EAAE;AACX;AAEA,SAAS,aAAa,CAAC,KAAc,EAAA;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB;AAEA,SAAS,oBAAoB,CAAC,MAAyB,EAAA;IACrD,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,KAAK,QAAQ,EAAE;AACxC,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,EAAE,EAAE,MAAM,CAAC,EAAE;AACb,QAAA,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,YAAY;AAC5C,QAAA,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK;AAC/B,KAAA,CAAC;AACJ;;AChVO,MAAM,qCAAqC,GAAqB;AACrE,IAAA,EAAE,EAAE,8BAA8B;AAClC,IAAA,aAAa,EAAE,8BAA8B;AAC7C,IAAA,WAAW,EAAE,8BAA8B;AAC3C,IAAA,QAAQ,EAAE,8BAA8B;AACxC,IAAA,SAAS,EAAE,kCAAkC;AAC7C,IAAA,YAAY,EAAE,8BAA8B;AAC5C,IAAA,WAAW,EAAE,iGAAiG;AAC9G,IAAA,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC;AACjD,IAAA,GAAG,EAAE,kBAAkB;AACvB,IAAA,MAAM,EAAE;AACN,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,WAAW,EAAE,6DAA6D;AAC3E,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,WAAW,EAAE,wDAAwD;AACtE,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,WAAW,EAAE,6BAA6B;AAC3C,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA;AACE,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,uBAAuB;AAC7B,YAAA,WAAW,EAAE,iFAAiF;AAC/F,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,IAAI,EAAE,8BAA8B;AACpC,YAAA,WAAW,EAAE,sCAAsC;AACpD,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,WAAW,EAAE,2CAA2C;AACzD,SAAA;AACF,KAAA;CACF;SAEe,wCAAwC,GAAA;IACtD,OAAO;AACL,QAAA,OAAO,EAAE,uBAAuB;AAChC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,UAAU,EAAE,CAAC,QAAmC,KAAK,MAAK;AACxD,YAAA,QAAQ,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC1D,CAAC;QACD,IAAI,EAAE,CAAC,yBAAyB,CAAC;KACtB;AACf;;SCpDgB,mBAAmB,GAAA;IACjC,OAAO;QACL,oBAAoB;AACpB,QAAA;AACE,YAAA,OAAO,EAAE,mBAAmB;AAC5B,YAAA,WAAW,EAAE,oBAAoB;AAClC,SAAA;AACD,QAAA,2BAA2B,EAAE;AAC7B,QAAA,wCAAwC,EAAE;AAC1C,QAAA,oCAAoC,EAAE;AACtC,QAAA,wCAAwC,EAAE;KAC3C;AACH;;MCKa,yCAAyC,CAAA;AACpD,IAAA,mBAAmB,CAAC,QAAgC,EAAA;AAClD,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;QAEtC,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,OAAO;YACpB,IAAI,EAAE,QAAQ,CAAC,IAAuB;YACtC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC9C,MAAM,EAAE,QAAQ,CAAC,MAAM;AACvB,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC9B,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAClC,YAAA,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC1C,YAAA,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AAC9C,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAChC,YAAA,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE;AAC1B,kBAAE;AACE,oBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AACpD,oBAAA,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;AACjE;AACH,kBAAE,SAAS;AACb,YAAA,KAAK,EAAE;AACL,gBAAA,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;AAC/D,gBAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE;AACrB,sBAAE;AACE,wBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AACpD,wBAAA,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;AACjE;AACH,sBAAE,SAAS;AACd,aAAA;SACF;IACH;AAEQ,IAAA,uBAAuB,CAAC,QAAgC,EAAA;QAC9D,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AACtC,YAAA,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC;QACjG;QAEA,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,EAA2B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAA,uCAAA,CAAyC,CAAC;QAC3G;QAEA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE;AACrC,YAAA,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC;QAC3F;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC;QAC5F;AAEA,QAAA,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE;AACzE,YAAA,MAAM,IAAI,KAAK,CAAC,iGAAiG,CAAC;QACpH;AAEA,QAAA,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;QACzF;AAEA,QAAA,MAAM,YAAY,GAAG;YACnB,IAAI,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAChF,YAAA,IAAI,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SAC9E;AAED,QAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AAC3C,YAAA,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC;QACxG;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC;QACtG;AAEA,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE;AACxF,YAAA,MAAM,IAAI,KAAK,CAAC,qGAAqG,CAAC;QACxH;QAEA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;AAC9F,YAAA,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC;QAChG;QAEA,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,KAAK,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;AACzF,YAAA,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC;QACnH;AAEA,QAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1E,YAAA,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC;QAC9G;AAEA,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE,eAAe,IAAI,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE;AACpE,YAAA,MAAM,IAAI,KAAK,CAAC,iHAAiH,CAAC;QACpI;IACF;AAEQ,IAAA,SAAS,CAAC,QAAgC,EAAA;QAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;AAEzC,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;YACxD,OAAO;AACL,gBAAA,CAAC,EAAE;oBACD,KAAK,EAAE,cAAc,EAAE,KAAK;oBAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC;AAC3C,iBAAA;aACF;QACH;QAEA,OAAO;AACL,YAAA,CAAC,EAAE;gBACD,KAAK,EAAE,cAAc,EAAE,KAAK;gBAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC;AAC1C,gBAAA,IAAI,EAAE,cAAc,EAAE,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU;AAC5D,aAAA;AACD,YAAA,CAAC,EAAE;gBACD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;AACvC,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA;SACF;IACH;AAEQ,IAAA,WAAW,CAAC,QAAgC,EAAA;QAClD,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;AAEzD,QAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MAAM;YACtD,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA,CAAA,EAAI,KAAK,GAAG,CAAC,CAAA,CAAE;AAClC,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK;AAChD,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAC,IAAI;YAC7D,aAAa,EAAE,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,GAAG,cAAc,EAAE,KAAK,GAAG,SAAS;AACvG,YAAA,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC;gBACpD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAClC,aAAA;AACD,YAAA,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,aAAa,GAAG,SAAS,GAAG,SAAS;AAChE,YAAA,MAAM,EAAE,aAAa,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS;AACrD,YAAA,MAAM,EAAE,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS;AAChF,SAAA,CAAC,CAAC;IACL;AAEQ,IAAA,eAAe,CAAC,QAAgC,EAAA;QACtD,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAS;AACvC,YAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;AAClC,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;SACjC;IACH;AAEQ,IAAA,UAAU,CAAC,QAAgC,EAAA;QACjD,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC;AACnE,QAAA,MAAM,eAAe,GAAG;AACtB,YAAA,GAAG,mBAAmB;SACvB;QAED,OAAO;AACL,YAAA,UAAU,EAAE,cAAc;AAC1B,YAAA,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;AACzC,YAAA,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW;AACjD,YAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ;AAC3C,YAAA,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI;AAC/C,YAAA,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU;AAC/C,YAAA,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW;AACjD,YAAA,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;AACpE,YAAA,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YACxC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/D,YAAA,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,CAAC;AACpE,YAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,MAAM;gBAC1C,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC;gBACpD,KAAK,EAAE,MAAM,CAAC,KAAK;AACpB,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,eAAe,GAAG,SAAS;YAC1E,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,CAAA,EAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAA,CAAE,CAAC;YACrE,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK;SACxD;IACH;AAEQ,IAAA,iBAAiB,CAAC,QAAgC,EAAA;QACxD,OAAO;AACL,YAAA,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,IAAI,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;YAC9E,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;YACpD,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;SAC/C;IACH;AAEQ,IAAA,UAAU,CAAC,QAAgC,EAAA;QACjD,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS;AACpF,YAAA,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC9D,YAAA,OAAO,EAAE;gBACP,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;AACnD,gBAAA,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM;AAChF,aAAA;SACF;IACH;AAEQ,IAAA,YAAY,CAAC,KAA+B,EAAA;AAClD,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,SAAS;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;QAC3C,OAAO;YACL,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,IAAI,EAAE,KAAK,CAAC,QAAQ;SACrB;IACH;AAEQ,IAAA,OAAO,CAAC,KAA+B,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,SAAS;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;AAC3C,QAAA,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG;IACpC;AAEQ,IAAA,aAAa,CACnB,KAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;QAEpB,IAAI,OAAO,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,KAAK;AAC5C,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,OAAO;AAC5D,QAAA,OAAO,YAAY;IACrB;AAEQ,IAAA,cAAc,CACpB,WAAuC,EAAA;QAEvC,QAAQ,WAAW;AACjB,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,SAAS;AAClB,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,WAAW,CAAA,6CAAA,CAA+C,CAAC;;IAE5G;AAEQ,IAAA,gBAAgB,CACtB,OAA2C,EAAA;QAE3C,IAAI,CAAC,OAAO,EAAE,MAAM;AAAE,YAAA,OAAO,SAAS;QAEtC,OAAO,OAAO,CAAC,MAAM,CAA0B,CAAC,GAAG,EAAE,MAAM,KAAI;AAC7D,YAAA,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;gBAC9B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK;AAChC,gBAAA,OAAO,GAAG;YACZ;AAEA,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;gBAC/B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM;YACnC;AAEA,YAAA,OAAO,GAAG;QACZ,CAAC,EAAE,EAAE,CAAC;IACR;AAEQ,IAAA,cAAc,CAAC,QAAgC,EAAA;QACrD,OAAO,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAC,QAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE;IAC9F;IAEQ,iBAAiB,CACvB,QAAgC,EAChC,OAAgC,EAAA;QAEhC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;AACrD,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK;AAC9D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;AAE/E,QAAA,QAAQ,QAAQ,CAAC,MAAM,CAAC,SAAS;AAC/B,YAAA,KAAK,UAAU;gBACb,OAAO;AACL,oBAAA,MAAM,EAAE,OAAO;oBACf,KAAK;oBACL,MAAM;oBACN,KAAK;oBACL,OAAO;iBACiC;AAC5C,YAAA,KAAK,YAAY;gBACf,OAAO;AACL,oBAAA,MAAM,EAAE,OAAO;oBACf,KAAK;AACL,oBAAA,WAAW,EAAE,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;oBACpF,MAAM;AACN,oBAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ;iBACA;AAC/C,YAAA,KAAK,cAAc;gBACjB,OAAO;AACL,oBAAA,MAAM,EAAE,OAAO;oBACf,KAAK;AACL,oBAAA,IAAI,EAAE,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;oBACtE,MAAM;AACN,oBAAA,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU;AAC/C,oBAAA,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW;oBACjD,KAAK;oBACL,OAAO;iBACsC;AACjD,YAAA;gBACE,MAAM,IAAI,KAAK,CAAC,CAAA,6BAAA,EAAgC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAA,uCAAA,CAAyC,CAAC;;IAEzH;AAEQ,IAAA,iBAAiB,CAAC,QAAgC,EAAA;AACxD,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QAC9D,IAAI,cAAc,EAAE;AAClB,YAAA,OAAO,cAAc;QACvB;AAEA,QAAA,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC;IAC1G;AAEQ,IAAA,uBAAuB,CAAC,QAAgC,EAAA;QAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC;QACjG;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,WAAW,CAAC;QAClE,OAAO;YACL,SAAS;AACT,YAAA,KAAK,EAAE,SAAS,KAAK,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK;SACxD;IACH;AAEQ,IAAA,eAAe,CAAC,KAAkC,EAAA;AACxD,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,SAAS;QAE5B,QAAQ,KAAK;AACX,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,UAAU;AACf,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,KAAK;AACd,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,CAAA,uCAAA,CAAyC,CAAC;;IAE3G;AAEQ,IAAA,wBAAwB,CAC9B,KAAkC,EAAA;QAElC,QAAQ,KAAK;AACX,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,UAAU;AACnB,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,SAAS;AAClB,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,CAAA,uCAAA,CAAyC,CAAC;;IAE3G;AAEQ,IAAA,4BAA4B,CAClC,KAAuD,EAAA;QAEvD,QAAQ,KAAK;AACX,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,MAAM;AACf,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,KAAK;AACd,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,MAAM;AACf,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,OAAO;AAChB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,MAAM;AACf,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,CAAA,uCAAA,CAAyC,CAAC;;IAE/G;AAEQ,IAAA,4BAA4B,CAClC,KAA2C,EAAA;QAE3C,QAAQ,KAAK;AACX,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,OAAO;AAChB,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAA,uCAAA,CAAyC,CAAC;;IAExG;AAEQ,IAAA,uBAAuB,CAC7B,WAAuC,EAAA;QAEvC,QAAQ,WAAW;AACjB,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,OAAO;AAChB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,KAAK;AACd,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,KAAK;AACd,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,KAAK;AACd,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,KAAK;AACd,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,WAAW,CAAA,6CAAA,CAA+C,CAAC;;IAE5G;wGA1ZW,yCAAyC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAzC,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yCAAyC,cAD5B,MAAM,EAAA,CAAA;;4FACnB,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBADrD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MChBrB,sCAAsC,CAAA;AAI9B,IAAA,QAAA;IAHX,UAAU,GAAG,KAAK;AAE1B,IAAA,WAAA,CACmB,QAAmC,EAAA;QAAnC,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAEzB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,+BAA+B,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qCAAqC,CAAC;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,2CAA2C,CAAC;AACnE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qCAAqC,CAAC;AAC7D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACxB;wGAnBW,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtC,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sCAAsC,cADzB,MAAM,EAAA,CAAA;;4FACnB,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBADlD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCMrB,8BAA8B,CAAA;AAEtB,IAAA,oBAAA;AACA,IAAA,uBAAA;IAFnB,WAAA,CACmB,oBAA4D,EAC5D,uBAAkE,EAAA;QADlE,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;AAExC,QAAA,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE;IAC9C;IAEA,OAAO,CACL,KAA4B,EAC5B,QAGC,EAAA;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpC,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI;AACvB,eAAA,QAAQ,EAAE,GAAG,EAAE,IAAI;AACnB,eAAA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI;AAC3B,eAAA,MAAM,CAAC,EAAE,EAAE,IAAI;AACf,eAAA,cAAc;QAEnB,OAAO;AACL,YAAA,WAAW,EAAE,cAAc;YAC3B,GAAG;YACH,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,YAAA,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ,EAAE,MAAM;AACzC,YAAA,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;SAC5C;IACH;AAEA,IAAA,kBAAkB,CAAC,KAA4B,EAAA;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAEpC,OAAO;AACL,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,MAAM,EAAE;AACN,gBAAA,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7B,gBAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;AAC1B,aAAA;AACD,YAAA,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;SACxD;IACH;IAEA,gBAAgB,CACd,KAA4B,EAC5B,QAEC,EAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC9C,OAAO;YACL,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB;IACH;IAEA,oBAAoB,CAClB,KAA4B,EAC5B,QAGC,EAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC9C,OAAO;YACL,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,UAAU,EAAE,QAAQ,CAAC,UAAU;AAC/B,YAAA,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;YAC1C,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB;IACH;AAEQ,IAAA,SAAS,CAAC,KAA4B,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE;YACxC,OAAO;AACL,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,WAAW,EAAE,cAAc;AAC3B,gBAAA,KAAK,EAAE,KAAK;aACb;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAC9B,OAAO;AACL,gBAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,YAAY;AAChC,gBAAA,WAAW,EAAE,cAAc;AAC3B,gBAAA,GAAG,KAAK;aACT;QACH;AAEA,QAAA,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC;IACpG;AAEQ,IAAA,cAAc,CAAC,KAA4B,EAAA;QACjD,OAAO,OAAO,KAAK,KAAK;AACnB,eAAA,KAAK,KAAK;gBAEX,OAAO,IAAI;AACR,mBAAA,aAAa,IAAI;AACjB,mBAAA,KAAK,IAAI;AACT,mBAAA,WAAW,IAAI;AACf,mBAAA,SAAS,IAAI;AACb,mBAAA,cAAc,IAAI;AAClB,mBAAA,OAAO,IAAI;AACX,mBAAA,QAAQ,IAAI;mBACZ,MAAM,IAAI,KAAK,CACnB;IACL;AAEQ,IAAA,wBAAwB,CAAC,KAA4B,EAAA;QAC3D,OAAO,OAAO,KAAK,KAAK;AACnB,eAAA,KAAK,KAAK;AACV,eAAA,SAAS,IAAI;AACb,eAAA,MAAM,IAAI;eACV,QAAQ,IAAI,KAAK;IACxB;AAEQ,IAAA,QAAQ,CAAC,MAA+B,EAAA;AAC9C,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC;QACjG;QAEA,OAAO,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC;IACvE;AAEQ,IAAA,SAAS,CAAC,MAA+B,EAAA;AAC/C,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,OAAO,MAAM,CAAC,OAAO;QACvB;AAEA,QAAA,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;YACvE,OAAO;AACL,gBAAA,UAAU,EAAE,MAAM;aACnB;QACH;AAEA,QAAA,OAAO,SAAS;IAClB;wGA/IW,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,sCAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,yCAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,cADjB,MAAM,EAAA,CAAA;;4FACnB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCJrB,uCAAuC,CAAA;AAE/B,IAAA,iBAAA;AACA,IAAA,uBAAA;IAFnB,WAAA,CACmB,iBAAiD,EACjD,uBAAkE,EAAA;QADlE,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;IACvC;AAEH,IAAA,aAAa,CAAC,OAAkC,EAAA;AAC9C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC;QACnG;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAEzF,OAAO;AACL,YAAA,GAAG,UAAU;YACb,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,IAAI,UAAU,CAAC,kBAAkB;SAChG;IACH;AAEA,IAAA,gBAAgB,CAAC,OAAkC,EAAA;AACjD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;AACrD,YAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,YAAY;AACzC,YAAA,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;AACvB,YAAA,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS;AACnC,YAAA,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK;AAC3B,YAAA,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY;AACzC,YAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;AAC/B,YAAA,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK;YAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;AACnB,SAAA,CAAC;QAEF,OAAO;AACL,YAAA,GAAG,MAAM;AACT,YAAA,UAAU,EAAE;gBACV,GAAG,MAAM,CAAC,UAAU;AACpB,gBAAA,MAAM,EAAE;oBACN,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;AACnC,oBAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AACpC,iBAAA;AACF,aAAA;SACF;IACH;AAEA,IAAA,oBAAoB,CAAC,OAAkC,EAAA;QACrD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;AAClF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CACxD;AACE,YAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,YAAY;AACzC,YAAA,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;AACvB,YAAA,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS;AACnC,YAAA,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK;AAC3B,YAAA,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY;AACzC,YAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;YAC/B,MAAM;AACN,YAAA,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK;YAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,EACD;AACE,YAAA,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;YACvB,MAAM;AACP,SAAA,CACF;QAED,OAAO;AACL,YAAA,GAAG,MAAM;AACT,YAAA,UAAU,EAAE;gBACV,GAAG,MAAM,CAAC,UAAU;AACpB,gBAAA,MAAM,EAAE;oBACN,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;AACnC,oBAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AACpC,iBAAA;AACF,aAAA;SACF;IACH;wGAzEW,uCAAuC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,8BAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,yCAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAvC,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uCAAuC,cAD1B,MAAM,EAAA,CAAA;;4FACnB,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBADnD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACL3B,MAAM,6BAA6B,GAA8B;AACtE,IAAA,UAAU,EAAE;AACV,QAAA,QAAQ,EAAE,4EAA4E;AACtF,QAAA,UAAU,EAAE,iCAAiC;AAC7C,QAAA,YAAY,EAAE,qCAAqC;AACnD,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,MAAM,EAAE,SAAS;AAClB,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,GAAG,EAAE,uBAAuB;AAC5B,QAAA,SAAS,EAAE,2CAA2C;AACtD,QAAA,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;AAClD,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,qBAAqB;AAC5B,YAAA,QAAQ,EAAE,iDAAiD;AAC5D,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,eAAe,EAAE,MAAM;AACxB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,OAAO,EAAE,uBAAuB;YAChC,KAAK,EAAE,EAAE,GAAG,EAAE,8BAA8B,EAAE,QAAQ,EAAE,qBAAqB,EAAE;YAC/E,QAAQ,EAAE,EAAE,GAAG,EAAE,iCAAiC,EAAE,QAAQ,EAAE,8BAA8B,EAAE;AAC9F,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,QAAQ,EAAE,qCAAqC;AAC/C,gBAAA,SAAS,EAAE,UAAU;AACrB,gBAAA,OAAO,EAAE;AACP,oBAAA,OAAO,EAAE,YAAY;AACrB,oBAAA,KAAK,EAAE,EAAE;AACV,iBAAA;AACF,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA;AACE,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,IAAI,EAAE,UAAU;AACjB,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,WAAW,EAAE,OAAO;AACrB,iBAAA;AACF,aAAA;YACD,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC/C,YAAA,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACzB,YAAA,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,KAAK,EAAE;gBACL,OAAO,EAAE,CAAC,SAAS,CAAC;AACrB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,sBAAsB,EAAE;oBACtE,WAAW,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE,QAAQ,EAAE,mDAAmD,EAAE;AAChH,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,KAAK,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,QAAQ,EAAE,gCAAgC,EAAE;AACnF,iBAAA;AACD,gBAAA,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,6BAA6B,EAAE;oBAC7E,WAAW,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE,QAAQ,EAAE,4DAA4D,EAAE;AACzH,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,UAAU,EAAE;AACV,oBAAA,MAAM,EAAE,MAAM;AACf,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;;AAGI,MAAM,oCAAoC,GAA8B;AAC7E,IAAA,UAAU,EAAE;AACV,QAAA,QAAQ,EAAE,sFAAsF;AAChG,QAAA,UAAU,EAAE,uCAAuC;AACnD,QAAA,YAAY,EAAE,+CAA+C;AAC7D,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,MAAM,EAAE,SAAS;AAClB,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,GAAG,EAAE,2BAA2B;AAChC,QAAA,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;AAClD,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,QAAQ,EAAE,oDAAoD;AAC/D,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,OAAO,EAAE,2BAA2B;YACpC,KAAK,EAAE,EAAE,GAAG,EAAE,iCAAiC,EAAE,QAAQ,EAAE,oBAAoB,EAAE;YACjF,QAAQ,EAAE,EAAE,GAAG,EAAE,oCAAoC,EAAE,QAAQ,EAAE,0CAA0C,EAAE;AAC7G,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,QAAQ,EAAE,+CAA+C;AACzD,gBAAA,SAAS,EAAE,YAAY;AACvB,gBAAA,OAAO,EAAE;AACP,oBAAA,WAAW,EAAE,OAAO;AACpB,oBAAA,QAAQ,EAAE,KAAK;AAChB,iBAAA;AACF,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA;AACE,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,KAAK,EAAE,aAAa;AACpB,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,KAAK,EAAE,qBAAqB;AAC5B,oBAAA,WAAW,EAAE,OAAO;AACrB,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACzB,YAAA,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,KAAK,EAAE;gBACL,OAAO,EAAE,CAAC,SAAS,CAAC;AACrB,aAAA;AACF,SAAA;AACF,KAAA;;AAGI,MAAM,+BAA+B,GAA8B;AACxE,IAAA,UAAU,EAAE;AACV,QAAA,QAAQ,EAAE,sFAAsF;AAChG,QAAA,UAAU,EAAE,qCAAqC;AACjD,QAAA,YAAY,EAAE,+CAA+C;AAC7D,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,MAAM,EAAE,SAAS;AAClB,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,GAAG,EAAE,qBAAqB;AAC1B,QAAA,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;AAClD,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,0BAA0B;AACjC,YAAA,QAAQ,EAAE,qDAAqD;AAChE,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,MAAM,EAAE,cAAc;AACtB,YAAA,OAAO,EAAE,qBAAqB;YAC9B,KAAK,EAAE,EAAE,GAAG,EAAE,iCAAiC,EAAE,QAAQ,EAAE,0BAA0B,EAAE;AACvF,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,QAAQ,EAAE,+CAA+C;AACzD,gBAAA,SAAS,EAAE,cAAc;AACzB,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,OAAO,EAAE,YAAY;AACrB,oBAAA,KAAK,EAAE,EAAE;AACV,iBAAA;AACF,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA;AACE,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,IAAI,EAAE,SAAS;AAChB,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,WAAW,EAAE,OAAO;AACrB,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACzB,YAAA,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACzB,YAAA,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1B,YAAA,KAAK,EAAE;gBACL,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACtD,aAAA;AACF,SAAA;AACF,KAAA;;;ACtLG,SAAU,8BAA8B,CAC5C,OAAgD,EAAA;IAEhD,OAAO;AACL,QAAA,OAAO,EAAE;AACP,YAAA,sBAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;AAC/E,YAAA,sBAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC,oCAAoC,CAAC,CAAC;AACtF,YAAA,sBAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;AAClF,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,GAAG,EAAE,MAAM;AACZ,SAAA;KACF;AACH;AAEM,SAAU,4BAA4B,CAC1C,OAAgD,EAAA;IAEhD,OAAO;AACL,QAAA,OAAO,EAAE;AACP,YAAA,sBAAsB,CAAC,OAAO,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;AACnF,YAAA,sBAAsB,CAAC,OAAO,CAAC,oBAAoB,CAAC,oCAAoC,CAAC,CAAC;AAC1F,YAAA,sBAAsB,CAAC,OAAO,CAAC,oBAAoB,CAAC,+BAA+B,CAAC,CAAC;AACtF,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,GAAG,EAAE,EAAE;AACR,SAAA;KACF;AACH;AAEM,SAAU,qCAAqC,CACnD,OAAgD,EAAA;IAEhD,OAAO;AACL,QAAA,OAAO,EAAE;AACP,YAAA,sBAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;AAC/E,YAAA,sBAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC,oCAAoC,CAAC,CAAC;AACtF,YAAA;AACE,gBAAA,GAAG,EAAE,uBAAuB;AAC5B,gBAAA,UAAU,EAAE;AACV,oBAAA,EAAE,EAAE,8BAA8B;AAClC,oBAAA,MAAM,EAAE;AACN,wBAAA,KAAK,EAAE,yBAAyB;AAChC,wBAAA,SAAS,EAAE,IAAI;AAChB,qBAAA;AACF,iBAAA;AACD,gBAAA,KAAK,EAAE;AACL,oBAAA,KAAK,EAAE,kBAAkB;AACzB,oBAAA,QAAQ,EAAE,4CAA4C;AACvD,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,mBAAmB;AACxB,gBAAA,UAAU,EAAE;AACV,oBAAA,EAAE,EAAE,0BAA0B;AAC9B,oBAAA,MAAM,EAAE;AACN,wBAAA,KAAK,EAAE,4BAA4B;AACnC,wBAAA,KAAK,EAAE,yDAAyD;AACjE,qBAAA;AACF,iBAAA;AACD,gBAAA,KAAK,EAAE;AACL,oBAAA,KAAK,EAAE,eAAe;AACtB,oBAAA,QAAQ,EAAE,4CAA4C;AACvD,iBAAA;AACF,aAAA;AACD,YAAA,sBAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;AAClF,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA;gBACE,IAAI,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,YAAY,EAAE;gBAC/D,EAAE,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE;AACpD,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,YAAY,EAAE;gBAC/D,EAAE,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAE;AAC5D,aAAA;AACF,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,GAAG,EAAE,MAAM;AACZ,SAAA;KACF;AACH;AAEM,SAAU,mCAAmC,CACjD,OAAgD,EAAA;IAEhD,OAAO;AACL,QAAA,OAAO,EAAE;AACP,YAAA,sBAAsB,CAAC,OAAO,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;AACnF,YAAA,wBAAwB,EAAE;AAC1B,YAAA,sBAAsB,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAClD,gBAAA,GAAG,oCAAoC;AACvC,gBAAA,MAAM,EAAE;oBACN,GAAG,oCAAoC,CAAC,MAAM;AAC9C,oBAAA,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;AACnD,iBAAA;AACF,aAAA,CAAC,CAAC;AACH,YAAA,oBAAoB,EAAE;AACtB,YAAA,sBAAsB,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAClD,gBAAA,GAAG,+BAA+B;AAClC,gBAAA,MAAM,EAAE;oBACN,GAAG,+BAA+B,CAAC,MAAM;AACzC,oBAAA,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;AACnD,iBAAA;AACF,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA;gBACE,IAAI,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,YAAY,EAAE;gBAC/D,EAAE,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE;AACpD,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,YAAY,EAAE;gBAC/D,EAAE,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAE;AAC5D,aAAA;AACF,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,GAAG,EAAE,EAAE;AACR,SAAA;KACF;AACH;AAEA,SAAS,wBAAwB,GAAA;IAC/B,OAAO;AACL,QAAA,GAAG,EAAE,uBAAuB;AAC5B,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,yBAAyB;AAChC,gBAAA,SAAS,EAAE,IAAI;AAChB,aAAA;AACF,SAAA;AACD,QAAA,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;AAClD,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,kBAAkB;AACzB,YAAA,QAAQ,EAAE,4CAA4C;AACvD,SAAA;KACF;AACH;AAEA,SAAS,oBAAoB,GAAA;IAC3B,OAAO;AACL,QAAA,GAAG,EAAE,mBAAmB;AACxB,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,EAAE,0BAA0B;AAC9B,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,4BAA4B;AACnC,gBAAA,KAAK,EAAE,yDAAyD;AACjE,aAAA;AACF,SAAA;AACD,QAAA,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;AAClD,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,QAAQ,EAAE,4CAA4C;AACvD,SAAA;KACF;AACH;AAEA,SAAS,sBAAsB,CAC7B,MAAS,EACT,kBAA+C,OAAO,EAAA;IAEtD,OAAO;AACL,QAAA,GAAG,MAAM;AACT,QAAA,UAAU,EAAE;YACV,GAAG,MAAM,CAAC,UAAU;AACpB,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,MAAM,EAAE;gBACN,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;AACnC,gBAAA,QAAQ,EAAE,eAAe;AAC1B,aAAA;AACD,YAAA,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;AAC7C,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AACvB,YAAA,OAAO,EAAE,CAAC,IAAK,MAAM,CAAC,KAAK,EAAE,OAAiB,IAAI,EAAE,CAAC,EAAE,GAAG,0BAA0B,EAAE,CAAC;AACxF,SAAA;KACF;AACH;AAEA,SAAS,0BAA0B,GAAA;IACjC,OAAO;AACL,QAAA;AACE,YAAA,EAAE,EAAE,YAAY;AAChB,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,OAAO,EAAE,MAAe;AACxB,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,OAAO,EAAE;AACP,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,KAAK,EAAE,OAAO;AACf,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,YAAY;AAChB,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,OAAO,EAAE,MAAe;AACxB,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,OAAO,EAAE;AACP,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,KAAK,EAAE,OAAO;AACf,aAAA;AACF,SAAA;KACF;AACH;;MC2Ca,uCAAuC,CAAA;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAqB,QAAQ,sDAAC;AACjD,IAAA,WAAW,GAAG,MAAM,CAAsB,UAAU,uDAAC;AACrD,IAAA,YAAY,GAAG,MAAM,CAAuB,UAAU,wDAAC;AACvD,IAAA,cAAc,GAAG;AAClC,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,MAAM,EAAE,OAAO;AACf,QAAA,WAAW,EAAE,eAAe;KAC7B;AAEgB,IAAA,qBAAqB,GAAG,MAAM,CAAC,uCAAuC,CAAC;AAErE,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,QAAQ,IAAI,CAAC,YAAY,EAAE;AACzB,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAO,qCAAqC,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC1E,YAAA,KAAK,OAAO;gBACV,OAAO;AACL,oBAAA,GAAG,8BAA8B,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC7D,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC;AAC1C,4BAAA,GAAG,6BAA6B;AAChC,4BAAA,IAAI,EAAE,EAAE;yBACT,CAAC;AACH,qBAAA;iBACF;AACH,YAAA,KAAK,SAAS;gBACZ,OAAO;AACL,oBAAA,GAAG,8BAA8B,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC7D,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC;AAC1C,4BAAA,GAAG,6BAA6B;AAChC,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,MAAM,EAAE;gCACN,GAAG,6BAA6B,CAAC,MAAM;AACvC,gCAAA,OAAO,EAAE;AACP,oCAAA,kBAAkB,EAAE,SAAS;AAC9B,iCAAA;AACF,6BAAA;yBACF,CAAC;AACH,qBAAA;iBACF;AACH,YAAA,KAAK,OAAO;gBACV,OAAO;AACL,oBAAA,GAAG,8BAA8B,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC7D,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC;AAC1C,4BAAA,GAAG,6BAA6B;AAChC,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,MAAM,EAAE;gCACN,GAAG,6BAA6B,CAAC,MAAM;AACvC,gCAAA,OAAO,EAAE;AACP,oCAAA,kBAAkB,EAAE,OAAO;AAC5B,iCAAA;AACF,6BAAA;yBACF,CAAC;AACH,qBAAA;iBACF;AACH,YAAA,KAAK,UAAU;AACf,YAAA;AACE,gBAAA,OAAO,8BAA8B,CAAC,IAAI,CAAC,qBAAqB,CAAC;;AAEvE,IAAA,CAAC,sDAAC;AAEiB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,QAAQ,IAAI,CAAC,YAAY,EAAE;AACzB,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAO,mCAAmC,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACxE,YAAA,KAAK,OAAO;gBACV,OAAO;AACL,oBAAA,GAAG,4BAA4B,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC3D,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC;AAC9C,4BAAA,GAAG,6BAA6B;AAChC,4BAAA,IAAI,EAAE,EAAE;yBACT,CAAC;AACF,wBAAA,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,oCAAoC,CAAC;AACrF,wBAAA,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,+BAA+B,CAAC;AACjF,qBAAA;iBACF;AACH,YAAA,KAAK,SAAS;gBACZ,OAAO;AACL,oBAAA,GAAG,4BAA4B,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC3D,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC;AAC9C,4BAAA,GAAG,6BAA6B;AAChC,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,MAAM,EAAE;gCACN,GAAG,6BAA6B,CAAC,MAAM;AACvC,gCAAA,OAAO,EAAE;AACP,oCAAA,kBAAkB,EAAE,SAAS;AAC9B,iCAAA;AACF,6BAAA;yBACF,CAAC;AACF,wBAAA,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,oCAAoC,CAAC;AACrF,wBAAA,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,+BAA+B,CAAC;AACjF,qBAAA;iBACF;AACH,YAAA,KAAK,OAAO;gBACV,OAAO;AACL,oBAAA,GAAG,4BAA4B,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC3D,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC;AAC9C,4BAAA,GAAG,6BAA6B;AAChC,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,MAAM,EAAE;gCACN,GAAG,6BAA6B,CAAC,MAAM;AACvC,gCAAA,OAAO,EAAE;AACP,oCAAA,kBAAkB,EAAE,OAAO;AAC5B,iCAAA;AACF,6BAAA;yBACF,CAAC;AACF,wBAAA,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,oCAAoC,CAAC;AACrF,wBAAA,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,+BAA+B,CAAC;AACjF,qBAAA;iBACF;AACH,YAAA,KAAK,UAAU;AACf,YAAA;AACE,gBAAA,OAAO,4BAA4B,CAAC,IAAI,CAAC,qBAAqB,CAAC;;AAErE,IAAA,CAAC,oDAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,QAAQ,IAAI,CAAC,WAAW,EAAE;AACxB,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,qBAAqB;AAC9B,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,uBAAuB;AAChC,YAAA,KAAK,UAAU;AACf,YAAA;AACE,gBAAA,OAAO,mBAAmB;;AAEhC,IAAA,CAAC,wDAAC;IAEiB,mBAAmB,GAAG,QAAQ,CAAC,MAChD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,+DAChD;AAEgB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC/C,QAAA,QAAQ,IAAI,CAAC,WAAW,EAAE;AACxB,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,oCAAoC;AAC7C,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,+BAA+B;AACxC,YAAA,KAAK,UAAU;AACf,YAAA;AACE,gBAAA,OAAO,6BAA6B;;AAE1C,IAAA,CAAC,2DAAC;wGApJS,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uCAAuC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,SAAA,EA5OvC,CAAC,mBAAmB,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kuDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EArGS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA6OjE,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBAhPnD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,cACjC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,0BAA0B,EAAE,wBAAwB,CAAC,EAAA,SAAA,EAClE,CAAC,mBAAmB,EAAE,CAAC,mBACjB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkGT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,kuDAAA,CAAA,EAAA;;;ACtIH;;AAEG;;ACFH;;AAEG;;;;"}
|