@helsevestikt/hviktor-angular 0.0.13 → 0.0.14

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.
@@ -843,6 +843,19 @@ class HviErrorSummary {
843
843
  focus() {
844
844
  this.container?.nativeElement.focus();
845
845
  }
846
+ /**
847
+ * Handles click on error links to prevent Angular Router navigation
848
+ * and instead focus/scroll to the target element.
849
+ */
850
+ onLinkClick(event, href) {
851
+ event.preventDefault();
852
+ const id = href.startsWith('#') ? href.slice(1) : href;
853
+ const target = document.getElementById(id);
854
+ if (target) {
855
+ target.focus();
856
+ target.scrollIntoView({ behavior: 'smooth', block: 'center' });
857
+ }
858
+ }
846
859
  get computedErrors() {
847
860
  // 1) Manual mode wins
848
861
  if (this.errors?.length)
@@ -937,7 +950,13 @@ class HviErrorSummary {
937
950
  <ul class="ds-list">
938
951
  @for (err of computedErrors; track err.href) {
939
952
  <li>
940
- <a class="ds-link" data-color="neutral" [href]="err.href">{{ err.message }}</a>
953
+ <a
954
+ class="ds-link"
955
+ data-color="neutral"
956
+ [href]="err.href"
957
+ (click)="onLinkClick($event, err.href)"
958
+ >{{ err.message }}</a
959
+ >
941
960
  </li>
942
961
  }
943
962
  </ul>
@@ -981,7 +1000,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
981
1000
  <ul class="ds-list">
982
1001
  @for (err of computedErrors; track err.href) {
983
1002
  <li>
984
- <a class="ds-link" data-color="neutral" [href]="err.href">{{ err.message }}</a>
1003
+ <a
1004
+ class="ds-link"
1005
+ data-color="neutral"
1006
+ [href]="err.href"
1007
+ (click)="onLinkClick($event, err.href)"
1008
+ >{{ err.message }}</a
1009
+ >
985
1010
  </li>
986
1011
  }
987
1012
  </ul>
@@ -2107,6 +2132,134 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
2107
2132
  type: Output
2108
2133
  }] } });
2109
2134
 
2135
+ /**
2136
+ * @summary
2137
+ * Select allows users to choose an option from a list.
2138
+ *
2139
+ * @example
2140
+ * ```html
2141
+ * <select hviSelect width="auto" id="select">
2142
+ * <option value="" disabled="" selected="">Select an option</option>
2143
+ * <option value="option1">Option 1</option>
2144
+ * <option value="option2">Option 2</option>
2145
+ * </select>
2146
+ * ```
2147
+ *
2148
+ * Documentation: https://designsystemet.no/en/components/docs/select/code
2149
+ */
2150
+ class HviSelect {
2151
+ /** Defines the width of Select, where "auto" matches the content width. */
2152
+ width;
2153
+ _readOnly = false;
2154
+ _disabled = false;
2155
+ /** Disabled Select. */
2156
+ set disabled(value) {
2157
+ this._disabled = value;
2158
+ }
2159
+ get disabled() {
2160
+ return this._disabled;
2161
+ }
2162
+ /** Readonly Select. */
2163
+ set readOnly(value) {
2164
+ this._readOnly = value;
2165
+ }
2166
+ get readOnly() {
2167
+ return this._readOnly;
2168
+ }
2169
+ onMouseDown(event) {
2170
+ if (this._readOnly) {
2171
+ event.preventDefault();
2172
+ event.stopImmediatePropagation();
2173
+ }
2174
+ }
2175
+ onChange(event) {
2176
+ if (this._readOnly) {
2177
+ event.preventDefault();
2178
+ event.stopImmediatePropagation();
2179
+ }
2180
+ }
2181
+ onKeydown(event) {
2182
+ if (!this._readOnly)
2183
+ return;
2184
+ if (event.key === ' ' || event.key === 'Spacebar' || event.key === 'Enter') {
2185
+ event.preventDefault();
2186
+ event.stopImmediatePropagation();
2187
+ }
2188
+ }
2189
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: HviSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2190
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.1.2", type: HviSelect, isStandalone: true, selector: "select[hviSelect]", inputs: { width: "width", disabled: ["disabled", "disabled", booleanAttribute], readOnly: ["readOnly", "readOnly", booleanAttribute] }, host: { listeners: { "mousedown": "onMouseDown($event)", "change": "onChange($event)", "keydown": "onKeydown($event)" }, properties: { "attr.data-width": "width", "attr.readonly": "_readOnly ? \"\" : null", "attr.disabled": "_disabled ? \"\" : null" }, classAttribute: "ds-select ds-input" }, ngImport: i0 });
2191
+ }
2192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: HviSelect, decorators: [{
2193
+ type: Directive,
2194
+ args: [{
2195
+ selector: 'select[hviSelect]',
2196
+ standalone: true,
2197
+ host: {
2198
+ class: 'ds-select ds-input',
2199
+ '[attr.data-width]': 'width',
2200
+ '[attr.readonly]': '_readOnly ? "" : null',
2201
+ '[attr.disabled]': '_disabled ? "" : null',
2202
+ },
2203
+ }]
2204
+ }], propDecorators: { width: [{
2205
+ type: Input
2206
+ }], disabled: [{
2207
+ type: Input,
2208
+ args: [{ transform: booleanAttribute }]
2209
+ }], readOnly: [{
2210
+ type: Input,
2211
+ args: [{ transform: booleanAttribute }]
2212
+ }], onMouseDown: [{
2213
+ type: HostListener,
2214
+ args: ['mousedown', ['$event']]
2215
+ }], onChange: [{
2216
+ type: HostListener,
2217
+ args: ['change', ['$event']]
2218
+ }], onKeydown: [{
2219
+ type: HostListener,
2220
+ args: ['keydown', ['$event']]
2221
+ }] } });
2222
+
2223
+ /**
2224
+ * @summary
2225
+ * Skeleton component description.
2226
+ *
2227
+ * @example
2228
+ * ```html
2229
+ * <hvi-skeleton variant="rectangle" width="100px" height="20px"></hvi-skeleton>
2230
+ * ```
2231
+ *
2232
+ * @see {@link https://designsystemet.no/en/components/docs/skeleton/code}
2233
+ */
2234
+ class HviSkeleton {
2235
+ variant = 'rectangle';
2236
+ width;
2237
+ height;
2238
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: HviSkeleton, deps: [], target: i0.ɵɵFactoryTarget.Component });
2239
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: HviSkeleton, isStandalone: true, selector: "hvi-skeleton", inputs: { variant: "variant", width: "width", height: "height" }, host: { properties: { "attr.aria-hidden": "true", "attr.data-variant": "variant", "style.width": "width", "style.height": "height" }, classAttribute: "ds-skeleton" }, ngImport: i0, template: '<ng-content />', isInline: true });
2240
+ }
2241
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: HviSkeleton, decorators: [{
2242
+ type: Component,
2243
+ args: [{
2244
+ selector: 'hvi-skeleton',
2245
+ standalone: true,
2246
+ template: '<ng-content />',
2247
+ host: {
2248
+ class: 'ds-skeleton',
2249
+ '[attr.aria-hidden]': 'true',
2250
+ '[attr.data-variant]': 'variant',
2251
+ '[style.width]': 'width',
2252
+ '[style.height]': 'height',
2253
+ },
2254
+ }]
2255
+ }], propDecorators: { variant: [{
2256
+ type: Input
2257
+ }], width: [{
2258
+ type: Input
2259
+ }], height: [{
2260
+ type: Input
2261
+ }] } });
2262
+
2110
2263
  /**
2111
2264
  * @summary
2112
2265
  * Tag is a label that can be used to categorize items or communicate progress, status, or process. Tags can provide users with a quicker overview of content.
@@ -2157,5 +2310,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
2157
2310
  * Generated bundle index. Do not edit.
2158
2311
  */
2159
2312
 
2160
- export { HviAlert, HviAvatar, HviBadge, HviBadgePosition, HviBreadcrumbs, HviButton, HviCard, HviCardBlock, HviChipButton, HviChipLabel, HviControlInvalid, HviDetails, HviDetailsContent, HviDetailsSummary, HviDialog, HviDialogBlock, HviDivider, HviErrorSummary, HviField, HviFieldAffix, HviFieldAffixes, HviFieldDescription, HviFieldKit, HviFieldOptional, HviFieldValidation, HviFieldset, HviForm, HviForms, HviHeading, HviIcon, HviInput, HviLabel, HviLink, HviList, HviParagraph, HviPopover, HviTag, HviValidationKit, HviValidationMessage, fieldObserver, hviCustom, hviEmail, hviExtractMessages, hviExtractValidators, hviMax, hviMaxLength, hviMin, hviMinLength, hviNullValidator, hviPattern, hviRequired, hviRequiredTrue, hviValidators, isElement, isInputLike, isLabel };
2313
+ export { HviAlert, HviAvatar, HviBadge, HviBadgePosition, HviBreadcrumbs, HviButton, HviCard, HviCardBlock, HviChipButton, HviChipLabel, HviControlInvalid, HviDetails, HviDetailsContent, HviDetailsSummary, HviDialog, HviDialogBlock, HviDivider, HviErrorSummary, HviField, HviFieldAffix, HviFieldAffixes, HviFieldDescription, HviFieldKit, HviFieldOptional, HviFieldValidation, HviFieldset, HviForm, HviForms, HviHeading, HviIcon, HviInput, HviLabel, HviLink, HviList, HviParagraph, HviPopover, HviSelect, HviSkeleton, HviTag, HviValidationKit, HviValidationMessage, fieldObserver, hviCustom, hviEmail, hviExtractMessages, hviExtractValidators, hviMax, hviMaxLength, hviMin, hviMinLength, hviNullValidator, hviPattern, hviRequired, hviRequiredTrue, hviValidators, isElement, isInputLike, isLabel };
2161
2314
  //# sourceMappingURL=helsevestikt-hviktor-angular.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"helsevestikt-hviktor-angular.mjs","sources":["../../../projects/hviktor/src/alert/alert.component.ts","../../../projects/hviktor/src/avatar/avatar.component.ts","../../../projects/hviktor/src/badge/badge-position.component.ts","../../../projects/hviktor/src/badge/badge.component.ts","../../../projects/hviktor/src/breadcrumbs/breadcrumbs.component.ts","../../../projects/hviktor/src/button/button.directive.ts","../../../projects/hviktor/src/card/card-block.directive.ts","../../../projects/hviktor/src/card/card.component.ts","../../../projects/hviktor/src/chip/chip-button.directive.ts","../../../projects/hviktor/src/chip/chip-label.directive.ts","../../../projects/hviktor/src/details/details-content.component.ts","../../../projects/hviktor/src/details/details-summary.component.ts","../../../projects/hviktor/src/details/details.component.ts","../../../projects/hviktor/src/dialog/dialog-block.directive.ts","../../../projects/hviktor/src/dialog/dialog.directive.ts","../../../projects/hviktor/src/divider/divider.directive.ts","../../../projects/hviktor/src/forms/form/form.directive.ts","../../../projects/hviktor/src/forms/error-summary/error-summary.component.ts","../../../projects/hviktor/src/helpers/field-observer.ts","../../../projects/hviktor/src/forms/field/field-affix.component.ts","../../../projects/hviktor/src/forms/field/field-affixes.component.ts","../../../projects/hviktor/src/forms/field/field-description.directive.ts","../../../projects/hviktor/src/forms/field/field-optional.directive.ts","../../../projects/hviktor/src/forms/field/field-validation.directive.ts","../../../projects/hviktor/src/forms/field/field.component.ts","../../../projects/hviktor/src/forms/fieldset/fieldset.directive.ts","../../../projects/hviktor/src/forms/input/input.directive.ts","../../../projects/hviktor/src/forms/validation/control-invalid/control-invalid.directive.ts","../../../projects/hviktor/src/forms/validation/validation-message/validation-message.directive.ts","../../../projects/hviktor/src/forms/validators/validator-bundle.ts","../../../projects/hviktor/src/forms/validators/validators.ts","../../../projects/hviktor/src/forms/kits.ts","../../../projects/hviktor/src/heading/heading.directive.ts","../../../projects/hviktor/src/icon/icon.component.ts","../../../projects/hviktor/src/label/label.directive.ts","../../../projects/hviktor/src/link/link.directive.ts","../../../projects/hviktor/src/list/list.directive.ts","../../../projects/hviktor/src/paragraph/paragraph.directive.ts","../../../projects/hviktor/src/popover/popover.component.ts","../../../projects/hviktor/src/tag/tag.component.ts","../../../projects/hviktor/src/public-api.ts","../../../projects/hviktor/src/helsevestikt-hviktor-angular.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\n\n/**\n * Alert provides users with information that is especially important for them to see and understand.\n * The component is designed to capture users' attention.\n * The text in the alert should be short and clear.\n *\n * @example\n * ```html\n * <hvi-alert color=\"warning\">\n * Dette er et advarselsvarsel!\n * </hvi-alert>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/alert/code/\n */\n@Component({\n selector: 'hvi-alert',\n standalone: true,\n template: `<ng-content />`,\n host: {\n class: 'ds-alert',\n '[attr.data-color]': 'color',\n },\n})\nexport class HviAlert {\n /** Sets the type of alert by changing the color and */\n @Input() color?: 'info' | 'success' | 'warning' | 'danger';\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Avatar displays an image, initials, or icon for a person, entity, or profile.\n *\n * @example\n * ```html\n * <hvi-avatar\n * ariaLabel=\"Ola Nordmann\"\n * variant=\"circle\"\n * initials=\"ON\"\n * size=\"md\"\n * color=\"brand1\">\n * </hvi-avatar>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/avatar/code/\n */\n@Component({\n selector: 'hvi-avatar',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-avatar',\n role: 'img',\n '[attr.aria-label]': 'ariaLabel ?? null',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-initials]': 'initials ?? null',\n '[attr.data-size]': 'size ?? null',\n '[attr.data-color]': 'color ?? null',\n },\n})\nexport class HviAvatar {\n /** The name of the person the avatar represents */\n @Input() ariaLabel?: string;\n\n /** The shape of the avatar */\n @Input() variant?: 'circle' | 'square';\n\n /** Initials displayed inside the avatar */\n @Input() initials?: string;\n\n /** The size of the avatar */\n @Input() size?: 'xs' | 'sm' | 'md' | 'lg';\n\n /** The color theme of the avatar */\n @Input() color?: 'accent' | 'brand1' | 'brand2' | 'brand3' | 'neutral' | 'danger';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hvi-badge-position',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-badge--position',\n '[attr.data-overlap]': 'overlap',\n '[attr.data-placement]': 'placement',\n },\n})\nexport class HviBadgePosition {\n /** Overlap of the badge */\n @Input() overlap: 'rectangle' | 'circle' = 'rectangle';\n\n /** Placement of the badge */\n @Input() placement: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' = 'top-right';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hvi-badge',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-badge',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-count]': 'count ?? null',\n '[attr.data-color]': 'color ?? null',\n },\n})\nexport class HviBadge {\n /** The variants of the badge */\n @Input() variant?: 'base' | 'tinted';\n\n /** count text of the badge*/\n @Input() count?: string;\n\n /** The color theme of the badge */\n @Input() color?:\n | 'neutral'\n | 'danger'\n | 'warning'\n | 'info'\n | 'success'\n | 'accent'\n | 'brand1'\n | 'brand2'\n | 'brand3';\n}\n","import { Component, Input } from '@angular/core';\n\nexport interface BreadcrumbItem {\n label: string;\n href: string;\n ariaLabel?: string;\n}\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <nav hviBreadcrumbs\n * ariaLabel=\"Du er her:\"\n * [backLink]=\"{\n * label: 'Nivå 3',\n * href: '#',\n * ariaLabel: 'Tilbake til Nivå 3'\n * }\"\n * [items]=\"[\n * { label: 'Nivå 1', href: '#' },\n * { label: 'Nivå 2', href: '#' },\n * { label: 'Nivå 3', href: '#' },\n * { label: 'Nivå 4', href: '#' }\n * ]\"\n * ></nav>\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/breadcrumbs/overview\n */\n\n@Component({\n selector: 'nav[hviBreadcrumbs]',\n standalone: true,\n template: `\n <!-- Back link (optional) -->\n @if (backLink) {\n <a class=\"ds-link\" [href]=\"backLink.href\" [attr.aria-label]=\"backLink.ariaLabel ?? null\">\n {{ backLink.label }}\n </a>\n }\n\n <ol>\n @for (item of items; let last = $last; track item) {\n <li>\n <a\n class=\"ds-link\"\n [href]=\"item.href\"\n [attr.aria-label]=\"item.ariaLabel ?? null\"\n [attr.aria-current]=\"last ? 'page' : null\"\n >\n {{ item.label }}\n </a>\n </li>\n }\n </ol>\n `,\n host: {\n class: 'ds-breadcrumbs',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel ?? null',\n },\n})\nexport class HviBreadcrumbs {\n /** Accessible label for the breadcrumb navigation */\n @Input() ariaLabel = 'Du er her:';\n\n /** Optional back link object */\n @Input() backLink?: {\n label: string;\n href: string;\n ariaLabel?: string;\n };\n\n /** Array of breadcrumb items */\n @Input() items: BreadcrumbItem[] = [];\n}\n","import { booleanAttribute, Directive, Input } from '@angular/core';\n\n/**\n * @summary\n * Button allows users to perform actions.\n *\n * @example\n * ```html\n * <button hviButton color=\"brand1\" variant=\"primary\" size=\"md\">\n * Click me\n * </button>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/button/code/\n */\n@Directive({\n selector: 'button[hviButton], a[hviButton]',\n standalone: true,\n host: {\n class: 'ds-button',\n '[attr.type]': 'type',\n '[attr.data-size]': 'size',\n '[attr.data-variant]': 'variant',\n '[attr.data-color]': 'color',\n '[attr.data-fullwidth]': 'fullWidth ? \"\" : null',\n '[attr.data-icon]': 'icon ? \"\" : null',\n '[attr.aria-busy]': 'loading ? \"true\" : null',\n },\n})\nexport class HviButton {\n /** The size of the button */\n @Input() size?: 'sm' | 'md' | 'lg';\n\n /** Used to change the appearance of the button. */\n @Input() variant?: 'primary' | 'secondary' | 'tertiary';\n\n /** The type of button */\n @Input() type?: 'button' | 'submit' | 'reset';\n\n /** The color of the button */\n @Input() color?: 'accent' | 'brand1' | 'brand2' | 'brand3' | 'neutral' | 'danger';\n\n /** If you have only an icon in the button, you can set icon=\"true\" to make it square.\n * If you have other content, such as text, the button will automatically have space around the icon.\n */\n @Input({ transform: booleanAttribute }) icon = false;\n\n /** Sets the button in a loading state.\n * Loading indicators such as spinners must be added manually, e.g., with hvi-spinner\n */\n @Input({ transform: booleanAttribute }) loading = false;\n\n /** Makes the button full width */\n @Input({ transform: booleanAttribute }) fullWidth = false;\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Use multiple <div hviCardBlock> elements if you want to divide the card with separators or add images or video that extend to the edge.\n * Note that when you use <div hviCardBlock>, all content must be placed inside a <div hviCardBlock> and not directly in the Card.\n *\n * @example\n * ```html\n * <hvi-card variant=\"tinted\" color=\"brand1\" maxWidth=\"400px\">\n * <div hviCardBlock>\n * <h2>This is a card</h2>\n * <p>The content of the card goes here.</p>\n * </div>\n * </hvi-card>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/card/code#with-sections\n */\n@Directive({\n selector: '[hviCardBlock]',\n standalone: true,\n host: { class: 'ds-card__block' },\n})\nexport class HviCardBlock {}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Card highlight information or tasks that are related.\n * The component comes in two variants and can contain text, images, text fields, buttons, and links.\n *\n * @example\n * ```html\n * <hvi-card variant=\"tinted\" color=\"brand1\" maxWidth=\"400px\">\n * <h2>This is a card</h2>\n * <p>The content of the card goes here.</p>\n * </hvi-card>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/card/overview\n */\n@Component({\n selector: 'hvi-card',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-card',\n '[attr.data-variant]': 'variant',\n '[attr.data-color]': 'color',\n '[style.max-width]': 'maxWidth',\n },\n})\nexport class HviCard {\n /** Sets the background of the card */\n @Input() variant?: 'default' | 'tinted';\n\n /** The color theme of the card */\n @Input() color?: 'accent' | 'brand1' | 'brand2' | 'brand3' | 'neutral';\n\n /** Maximum width of the card, for example '320px' or '20rem' */\n @Input() maxWidth?: string;\n}\n","import { booleanAttribute, Directive, Input } from '@angular/core';\n\n@Directive({\n selector: 'button[hviChip]',\n standalone: true,\n host: {\n class: 'ds-chip',\n '[attr.data-removable]': 'removable ? \"true\" : null',\n },\n})\nexport class HviChipButton {\n /** Whether the chip is removable*/\n @Input({ transform: booleanAttribute }) removable = false;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'label[hviChip]',\n standalone: true,\n host: {\n class: 'ds-chip',\n },\n})\nexport class HviChipLabel {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'hvi-details-content',\n template: `<ng-content />`,\n})\nexport class HviDetailsContent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'hvi-details-summary',\n template: `<ng-content />`,\n})\nexport class HviDetailsSummary {}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport '@u-elements/u-details';\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <hvi-details>\n * <hvi-details-summary>\n * <p size=\"md\">Detaljer</p>\n * </hvi-details-summary>\n * <hvi-details-content>\n * <p>Her er innholdet i detaljene.</p>\n * </hvi-details-content>\n * </hvi-details>\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/details/overview\n */\n\n@Component({\n selector: 'hvi-details',\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n standalone: true,\n template: ` <u-details\n #detailsRef\n class=\"ds-details\"\n [attr.data-variant]=\"variant\"\n [attr.defaultOpen]=\"defaultOpen || undefined\"\n [attr.open]=\"open || undefined\"\n (toggle)=\"onToggle($event)\"\n >\n <u-summary>\n <ng-content select=\"hvi-details-summary\" />\n </u-summary>\n <div>\n <ng-content select=\"hvi-details-content\" />\n </div>\n </u-details>`,\n host: {},\n})\nexport class HviDetails {\n /** Variant of the details component */\n @Input() variant: 'default' | 'tinted' = 'default';\n\n /** Control open state of the details component */\n @Input() open: true | false = false;\n\n /** Set default open state of the details component */\n @Input() defaultOpen: true | false = false;\n\n /** Event handler for toggle event */\n @Input() onToggle: (event: Event) => void = () => {};\n\n handleToggle(event: Event) {\n console.log('Toggled!', event);\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviDialogBlock]',\n standalone: true,\n host: {\n class: 'ds-dialog__block',\n },\n})\nexport class HviDialogBlock {}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n Output,\n} from '@angular/core';\n\n/**\n * @summary\n * Dialog allows you to create both modal and non-modal dialogs based on the HTML dialog element.\n * You have to connect the <dialog> element to a trigger yourself, and handle opening and closing the dialog with JavaScript.\n *\n * @example\n * HTML:\n * ```html\n * <dialog hviDialog [id]=\"exampleDialog\" [open]=\"dialogOpen()\" (openChange)=\"toggleDialog($event)\">\n * <h3 hviHeading size=\"md\">Example dialog</h3>\n * <p hviParagraph>This is an example of a dialog component.</p>\n * <button hviButton variant=\"primary\" (click)=\"closeDialog()\">Close dialog</button>\n * </dialog>\n * ```\n *\n * TypeScript:\n * ```ts\n * export class DialogExampleComponent {\n * readonly dialogOpen = signal(false);\n * toggleDialog(nextState?: boolean): void {\n * if (typeof nextState === 'boolean') {\n * this.dialogOpen.set(nextState);\n * return;\n * }\n * this.dialogOpen.update((current) => !current);\n * }\n * }\n *\n * Documentation: https://designsystemet.no/en/components/docs/dialog/code/\n */\n@Directive({\n selector: 'dialog[hviDialog]',\n standalone: true,\n host: {\n class: 'ds-dialog',\n id: '{{ id }}',\n },\n})\nexport class HviDialog {\n @Input() id?: string;\n @Input()\n set open(value: boolean) {\n this.setOpen(Boolean(value));\n }\n\n get open(): boolean {\n return this.element.open;\n }\n\n @Input() modal = true;\n\n @Output() readonly openChange = new EventEmitter<boolean>();\n\n private readonly element = inject(ElementRef<HTMLDialogElement>).nativeElement;\n\n openModal(): void {\n this.setOpen(true);\n }\n\n close(): void {\n this.setOpen(false);\n }\n\n @HostListener('close')\n handleClose(): void {\n this.openChange.emit(false);\n }\n\n @HostListener('cancel', ['$event'])\n handleCancel(event: Event): void {\n event.preventDefault();\n this.setOpen(false);\n }\n\n private setOpen(shouldOpen: boolean): void {\n if (shouldOpen) {\n if (this.element.open) {\n return;\n }\n\n if (this.modal) {\n this.element.showModal();\n } else {\n this.element.show();\n }\n\n this.openChange.emit(true);\n return;\n }\n\n if (!this.element.open) {\n return;\n }\n\n this.element.close();\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <hr hviDivider />\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/divider/overview\n */\n\n@Directive({\n selector: 'hr[hviDivider]',\n standalone: true,\n host: {\n class: 'ds-divider',\n 'aria-hidden': 'true',\n },\n})\nexport class HviDivider {}\n","import { Directive, EventEmitter, HostListener, inject, Input, Output } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\n\n/**\n * @summary\n * Adds submit handling for Angular reactive forms:\n * - Tracks submitted state\n * - Marks all controls as touched on submit\n * - Optionally focuses an ErrorSummary when invalid\n *\n * @example\n * ```html\n * <[hviForm]></[hviForm]>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/form/code\n */\n\n@Directive({\n selector: 'form[hviForm]',\n standalone: true,\n})\nexport class HviForm {\n /** Emits when the form has been submitted */\n @Output() hviSubmitted = new EventEmitter<void>();\n\n /** True after first submit attempt */\n submitted = false;\n\n /** Optional focus target (e.g. HviErrorSummaryComponent) */\n @Input() focusOnInvalid?: { focus?: () => void } | null;\n\n // Optional injection: present when the form uses [formGroup] and ReactiveFormsModule is in scope\n private readonly formGroupDir = inject(FormGroupDirective, { optional: true });\n\n @HostListener('submit', ['$event'])\n onSubmit(event: Event): void {\n this.submitted = true;\n this.hviSubmitted.emit();\n\n const form = this.formGroupDir?.form;\n if (!form) return;\n\n form.markAllAsTouched();\n\n if (form.invalid) {\n event.preventDefault();\n queueMicrotask(() => this.focusOnInvalid?.focus?.());\n }\n }\n}\n","import { Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { HviForm } from '../form/form.directive';\nimport type { HviValidationMessages } from '../validation/validation-message';\n\n/**\n * Item model used by manual error summaries. Provide `message` and `href` for each invalid field.\n */\nexport type HviErrorSummaryItem = {\n /** Text shown in the list */\n message: string;\n /** Link target (should be \"#<field-id>\") */\n href: string;\n};\n\nexport type HviErrorSummaryMessages = Record<string, HviValidationMessages>;\n\nconst DEFAULT_ERROR_PRIORITY = [\n 'required',\n 'minlength',\n 'maxlength',\n 'email',\n 'pattern',\n 'min',\n 'max',\n] as const;\n\nlet errorSummaryIdCounter = 0;\nconst nextErrorSummaryHeadingId = () => `hvi-error-summary-heading-${++errorSummaryIdCounter}`;\n\n/**\n * @summary\n * ErrorSummary lists blocking validation errors so users can quickly find and fix them.\n *\n * @remarks\n * Modes:\n * - Manual: provide `[errors]` as `{ message, href }[]`.\n * - Auto (recommended): provide `[form]` + `[messages]` (and optionally `[idMap]`) to derive errors from invalid\n * controls in a reactive form.\n *\n * Auto mode should be rendered inside `<form hviForm ...>` so it can follow submit visibility (`showWhen`) and\n * be focused automatically via `[focusOnInvalid]`.\n *\n * Each item link must point to a field id (e.g. `href=\"#firstName\"`). Prefer `id === formControlName`.\n *\n * @example\n * Manual mode:\n * ```html\n * <hvi-error-summary\n * [errors]=\"[\n * { message: 'Fornavn må være minst 2 tegn', href: '#firstName' },\n * { message: 'Telefonnummer kan kun inneholde siffer', href: '#phone' }\n * ]\"\n * />\n * ```\n *\n * @example\n * Auto mode (HTML + TS):\n *\n * ```html\n * HTML:\n * <form hviForm [formGroup]=\"form\" [focusOnInvalid]=\"summary\">\n * <hvi-error-summary #summary [form]=\"form\" [messages]=\"messages\" showWhen=\"submitted\" />\n *\n * <hvi-field>\n * <label hviLabel for=\"firstName\" weight=\"medium\">Fornavn</label>\n * <input hviInput id=\"firstName\" formControlName=\"firstName\" hviControlInvalid />\n * <p hviFieldValidation hviValidationMessage=\"firstName\" [messages]=\"messages.firstName\"></p>\n * </hvi-field>\n *\n * <hvi-field>\n * <label hviLabel for=\"phone\" weight=\"medium\">Telefon</label>\n * <input hviInput id=\"phone\" type=\"tel\" formControlName=\"phone\" hviControlInvalid />\n * <p hviFieldValidation hviValidationMessage=\"phone\" [messages]=\"messages.phone\"></p>\n * </hvi-field>\n *\n * <button hviButton type=\"submit\" variant=\"primary\">Send inn</button>\n * </form>\n * ```\n *\n * ```ts\n * TS:\n * form = new FormGroup({\n * firstName: new FormControl('', [Validators.required, Validators.minLength(2)]),\n * phone: new FormControl('', [Validators.required, Validators.pattern(/^\\d+$/)]),\n * });\n *\n * messages = {\n * firstName: { required: 'Fornavn er påkrevd', minlength: 'Fornavn må være minst 2 tegn' },\n * phone: { required: 'Telefon er påkrevd', pattern: 'Telefonnummer kan kun inneholde siffer' },\n * } as const;\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/error-summary/code\n */\n@Component({\n selector: 'hvi-error-summary',\n standalone: true,\n template: `\n <div\n #container\n class=\"ds-error-summary\"\n tabindex=\"-1\"\n [attr.aria-labelledby]=\"headingId\"\n [hidden]=\"!shouldShow\"\n >\n @switch (headingLevel) {\n @case (1) {\n <h1 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h1>\n }\n @case (2) {\n <h2 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h2>\n }\n @case (3) {\n <h3 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h3>\n }\n @case (4) {\n <h4 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h4>\n }\n @case (5) {\n <h5 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h5>\n }\n @default {\n <h6 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h6>\n }\n }\n\n <ul class=\"ds-list\">\n @for (err of computedErrors; track err.href) {\n <li>\n <a class=\"ds-link\" data-color=\"neutral\" [href]=\"err.href\">{{ err.message }}</a>\n </li>\n }\n </ul>\n </div>\n `,\n})\nexport class HviErrorSummary {\n /** Heading text shown above the list */\n @Input() heading = 'For å gå videre må du rette opp følgende feil:';\n\n /** Heading level for the heading element (1-6). Defaults to 2 per DS */\n @Input() headingLevel: 1 | 2 | 3 | 4 | 5 | 6 = 2;\n\n /**\n * Manual mode: items displayed in the summary.\n * If non-empty, manual mode takes precedence over auto mode.\n */\n @Input() errors: HviErrorSummaryItem[] = [];\n\n /** Auto mode: reactive form to derive errors from */\n @Input() form?: FormGroup;\n\n /**\n * Auto mode: messages per controlName.\n * Example:\n * {\n * firstName: { required: 'Fornavn er påkrevd', minlength: 'Fornavn må være minst 2 tegn' },\n * phone: { required: 'Telefon er påkrevd', pattern: 'Telefonnummer kan kun inneholde siffer' }\n * }\n */\n @Input() messages?: HviErrorSummaryMessages;\n\n /**\n * Auto mode: map controlName -> element id.\n * Default is `id === controlName`.\n */\n @Input() idMap?: Record<string, string>;\n\n /** Auto mode: error key priority (first match wins) */\n @Input() errorPriority: readonly string[] = DEFAULT_ERROR_PRIORITY;\n\n /** Used for aria-labelledby on the container */\n @Input() headingId = nextErrorSummaryHeadingId();\n\n /** When to show errors from the form controls */\n @Input() showWhen: 'submitted' | 'touched' | 'always' = 'submitted';\n\n @ViewChild('container', { static: true }) private container?: ElementRef<HTMLElement>;\n\n focus(): void {\n this.container?.nativeElement.focus();\n }\n\n get computedErrors(): HviErrorSummaryItem[] {\n // 1) Manual mode wins\n if (this.errors?.length) return this.errors;\n\n // 2) Auto mode\n const form = this.form;\n const messages = this.messages;\n if (!form || !messages) return [];\n\n const items: HviErrorSummaryItem[] = [];\n\n for (const controlName of Object.keys(form.controls)) {\n const ctrl = form.controls[controlName];\n if (!ctrl?.invalid) continue;\n\n const errs = ctrl.errors ?? {};\n const msgMap = messages[controlName] ?? {};\n\n const message = this.pickMessage(errs, msgMap);\n if (!message) continue;\n\n const id = this.idMap?.[controlName] ?? controlName;\n items.push({ message, href: `#${id}` });\n }\n\n return items;\n }\n\n private pickMessage(errors: Record<string, unknown>, messages: HviValidationMessages): string {\n for (const key of this.errorPriority) {\n if (errors[key] && messages[key]) return messages[key]!;\n }\n for (const key of Object.keys(errors)) {\n if (messages[key]) return messages[key]!;\n }\n return Object.keys(errors).length ? 'Ugyldig verdi' : '';\n }\n\n private readonly hviForm = inject(HviForm, { optional: true });\n\n get shouldShow(): boolean {\n if (this.computedErrors.length === 0) return false;\n\n switch (this.showWhen) {\n case 'always':\n return true;\n\n case 'touched':\n // show when any invalid control is touched OR the form has been submitted\n return (this.hviForm?.submitted ?? false) || this.anyInvalidTouched();\n\n case 'submitted':\n default:\n return this.hviForm?.submitted ?? false;\n }\n }\n\n private anyInvalidTouched(): boolean {\n const form = this.form;\n if (!form) return false;\n\n for (const name of Object.keys(form.controls)) {\n const c = form.controls[name];\n if (c?.invalid && c.touched) return true;\n }\n return false;\n }\n}\n","// Copied from https://github.com/digdir/designsystemet/blob/main/packages/react/src/components/field/field-observer.ts\n\nexport function fieldObserver(fieldElement: HTMLElement | null) {\n if (!fieldElement) return;\n\n const elements = new Map<Element, string | null>();\n const typeCounter = new Map<string, number>(); // Track count for each data-field type\n const uuid = `:${Date.now().toString(36)}${Math.random().toString(36).slice(2, 5)}`;\n let input: Element | null = null;\n let describedby = '';\n\n const process = (mutations: Partial<MutationRecord>[]) => {\n const changed: Node[] = [];\n const removed: Node[] = [];\n\n // Merge MutationRecords\n for (const mutation of mutations) {\n if (mutation.attributeName) changed.push(mutation.target ?? fieldElement);\n changed.push(...(mutation.addedNodes || []));\n removed.push(...(mutation.removedNodes || []));\n }\n\n // Register elements\n for (const el of changed) {\n if (!isElement(el)) continue;\n\n if (isLabel(el)) elements.set(el, el.htmlFor);\n else if (el.hasAttribute('data-field')) elements.set(el, el.id);\n else if (isInputLike(el) && !el.hidden) {\n input = el;\n describedby = el.getAttribute('aria-describedby') || '';\n }\n }\n\n // Reset removed elements\n for (const el of removed) {\n if (!isElement(el)) continue;\n\n if (input === el) input = null;\n if (elements.has(el)) {\n setAttr(el, isLabel(el) ? 'for' : 'id', elements.get(el));\n elements.delete(el);\n }\n }\n\n // Connect elements\n const describedbyIds = describedby ? describedby.split(' ') : []; // Keep original aria-describedby\n const inputId = input?.id || uuid;\n\n // Reset type counters since we reprocess all elements\n typeCounter.clear();\n\n for (const [el, value] of elements) {\n const descriptionType = el.getAttribute('data-field');\n let id: string;\n\n if (descriptionType) {\n // Increment type counter for this type\n const count = (typeCounter.get(descriptionType) || 0) + 1;\n typeCounter.set(descriptionType, count);\n id = `${inputId}:${descriptionType}:${count}`;\n } else {\n id = inputId;\n }\n\n if (!value) setAttr(el, isLabel(el) ? 'for' : 'id', id); // Ensure we have a value\n if (!describedbyIds.includes(el.id)) {\n if (descriptionType === 'validation')\n describedbyIds.unshift(el.id); // Validations to the front\n else if (descriptionType) describedbyIds.push(el.id); // Other descriptions to the back\n }\n }\n\n // Prune aria-describedby so it does not reference removed elements\n const prunedDescribedbyIds = describedbyIds.filter((id) => {\n if (!id) return false;\n if (id === inputId) return true;\n\n // Keep if it still exists anywhere in the document.\n // This preserves \"original aria-describedby\" entries that live outside the field subtree.\n return !!fieldElement.ownerDocument?.getElementById(id);\n });\n\n setAttr(input, 'id', inputId);\n setAttr(input, 'aria-describedby', prunedDescribedbyIds.join(' ').trim());\n };\n\n const observer = createOptimizedMutationObserver(process);\n observer.observe(fieldElement, {\n attributeFilter: ['id', 'for', 'aria-describedby'],\n attributes: true,\n childList: true,\n subtree: true,\n });\n\n process([{ addedNodes: fieldElement.querySelectorAll('*') }]); // Initial setup\n observer.takeRecords(); // Clear initial setup queue\n return () => observer.disconnect();\n}\n\n// Utilities\nexport const isElement = (node: Node) => node instanceof Element;\nexport const isLabel = (node: Node) => node instanceof HTMLLabelElement;\nexport const isInputLike = (node: unknown): node is HTMLInputElement =>\n node instanceof HTMLElement && 'validity' in node && !(node instanceof HTMLButtonElement); // Matches input, textarea, select and form accosiated custom elements\n\nconst setAttr = (el: Element | null, name: string, value?: string | null) =>\n value ? el?.setAttribute(name, value) : el?.removeAttribute(name);\n\n// Speed up MutationObserver by debouncing, clearing internal queue after changes and only running when page is visible\nfunction createOptimizedMutationObserver(callback: MutationCallback) {\n const queue: MutationRecord[] = [];\n const observer = new MutationObserver((mutations) => {\n if (!queue.length) requestAnimationFrame(process);\n queue.push(...mutations);\n });\n\n const process = () => {\n callback(queue, observer);\n queue.length = 0; // Reset queue\n observer.takeRecords(); // Clear queue due to DOM changes in callback\n };\n\n return observer;\n}\n","import { Component } from '@angular/core';\n\n/**\n * Decorative affix container displayed alongside a text input.\n *\n * @remarks\n * Used together with the `hvi-field-affixes` component to wrap leading and trailing adornments.\n *\n * @example\n * ```html\n * <hvi-field-affixes>\n * <hvi-field-affix>NOK</hvi-field-affix>\n * <input hviInput type=\"text\" placeholder=\"Amount\" />\n * <hvi-field-affix>per month</hvi-field-affix>\n * </hvi-field-affixes>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/code#prefixsuffix\n */\n@Component({\n selector: 'hvi-field-affix',\n template: `<ng-content />`,\n host: {\n class: 'ds-field-affix',\n '[aria-hidden]': 'true',\n },\n})\nexport class HviFieldAffix {}\n","import { Component } from '@angular/core';\n\n/**\n * Container for decorative affixes displayed alongside a text input.\n *\n * @remarks\n * Wraps leading and trailing adornments provided by `hvi-field-affix` components.\n *\n * @example\n * ```html\n * <hvi-field-affixes>\n * <hvi-field-affix>NOK</hvi-field-affix>\n * <input hviInput type=\"text\" placeholder=\"Amount\" />\n * <hvi-field-affix>per month</hvi-field-affix>\n * </hvi-field-affixes>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/code#prefixsuffix\n */\n@Component({\n selector: 'hvi-field-affixes',\n template: `<ng-content />`,\n host: {\n class: 'ds-field-affixes',\n },\n})\nexport class HviFieldAffixes {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviFieldDescription]',\n standalone: true,\n host: {\n 'data-field': 'description',\n },\n})\nexport class HviFieldDescription {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviFieldOptional]',\n standalone: true,\n host: {\n 'data-field': 'optional',\n },\n})\nexport class HviFieldOptional {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviFieldValidation]',\n standalone: true,\n host: {\n class: 'ds-validation-message',\n 'data-field': 'validation',\n },\n})\nexport class HviFieldValidation {}\n","import { AfterViewInit, Component, DestroyRef, ElementRef, inject, Input } from '@angular/core';\nimport { fieldObserver } from '../../helpers/field-observer';\n\n/**\n * Field is a helper component to automatically associate a field with hviLabel, hviFieldDescription and hviFieldValidation.\n *\n * @example\n * ```html\n * <hvi-field>\n * <label hviLabel>Name</label>\n * <span hviFieldDescription>Fill in your full name.</span>\n * <input type=\"text\" />\n * <span hviFieldValidation>This field is required.</span>\n * </hvi-field>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/overview\n */\n@Component({\n selector: 'hvi-field',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-field',\n '[attr.data-position]': 'position ?? null',\n },\n})\nexport class HviField implements AfterViewInit {\n /** Position of toggle inputs (radio, checkbox, switch) in field */\n @Input() position?: 'start' | 'end';\n\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n\n ngAfterViewInit(): void {\n const stop = fieldObserver(this.el.nativeElement);\n this.destroyRef.onDestroy(() => stop?.());\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Fieldset is used to group and label fields that naturally belong together, such as date fields or address fields.\n * The component helps organize information, make forms more manageable, and improve accessibility for screen readers.\n *\n * @example\n * ```html\n * <fieldset hviFieldset>\n * <legend hviLabel>Which framework do you like best?</legend>\n * <p hviParagraph>Your choice will help us improve the service.</p>\n * <hvi-field>\n * <input type=\"radio\" id=\"angular\" name=\"framework\" value=\"angular\" />\n * <label hviLabel for=\"angular\">Angular</label>\n * </hvi-field>\n * <hvi-field>\n * <input type=\"radio\" id=\"react\" name=\"framework\" value=\"react\" />\n * <label hviLabel for=\"react\">React</label>\n * </hvi-field>\n * <hvi-field>\n * <input type=\"radio\" id=\"vue\" name=\"framework\" value=\"vue\" />\n * <label hviLabel for=\"vue\">Vue</label>\n * </hvi-field>\n * </fieldset>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/fieldset/overview\n */\n@Directive({\n selector: 'fieldset[hviFieldset]',\n standalone: true,\n host: {\n class: 'ds-fieldset',\n },\n})\nexport class HviFieldset {}\n","import { booleanAttribute, Directive, HostListener, Input } from '@angular/core';\n\ntype HviAriaRole = 'switch' | 'button' | 'checkbox' | 'radio' | 'textbox' | 'searchbox' | string;\n\n@Directive({\n selector: 'input[hviInput]',\n standalone: true,\n host: {\n class: 'ds-input',\n '[attr.type]': 'type ?? null',\n '[attr.size]': 'size ?? null',\n '[attr.disabled]': '_disabled ? \"\" : null',\n '[attr.readonly]': '_readOnly ? \"\" : null',\n '[attr.role]': 'role ?? null',\n },\n})\nexport class HviInput {\n /** Supported input types */\n @Input() type?:\n | 'number'\n | 'hidden'\n | 'color'\n | 'checkbox'\n | 'date'\n | 'datetime-local'\n | 'email'\n | 'file'\n | 'month'\n | 'password'\n | 'radio'\n | 'search'\n | 'tel'\n | 'text'\n | 'time'\n | 'url'\n | 'week';\n\n /** Set size attribute on input element */\n @Input() size?: number;\n\n /** Set role, e.g. `switch` when `checkbox` or `radio` */\n @Input() role?: HviAriaRole;\n\n protected _disabled = false;\n protected _readOnly = false;\n\n @Input({ transform: booleanAttribute })\n set disabled(value: boolean) {\n this._disabled = value;\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input({ transform: booleanAttribute })\n set readOnly(value: boolean) {\n this._readOnly = value;\n }\n get readOnly(): boolean {\n return this._readOnly;\n }\n\n @Input({ transform: booleanAttribute })\n set readonly(value: boolean) {\n this._readOnly = value;\n }\n\n private get isToggle(): boolean {\n return this.type === 'checkbox' || this.type === 'radio';\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (this._readOnly && this.isToggle) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (this._readOnly && this.isToggle) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (!this._readOnly || !this.isToggle) return;\n\n if (event.key === ' ' || event.key === 'Spacebar' || event.key === 'Enter') {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { Directive, HostBinding, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { HviForm } from '../../form';\n\n/**\n * @summary\n * Directive to set `aria-invalid` on form controls based on their validation state.\n *\n * Usage:\n * ```html\n * <input hviControlInvalid formControlName=\"email\" />\n * ```\n */\n\n@Directive({\n selector: '[hviControlInvalid]',\n standalone: true,\n})\nexport class HviControlInvalid {\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly hviForm = inject(HviForm, { optional: true });\n\n @HostBinding('attr.aria-invalid')\n get ariaInvalid(): string | null {\n const control = this.ngControl?.control;\n if (!control) return null;\n\n const submitted = this.hviForm?.submitted ?? false;\n const show = control.invalid && (control.touched || submitted);\n\n return show ? 'true' : null;\n }\n}\n","import { Directive, Input, inject } from '@angular/core';\nimport { AbstractControl, ControlContainer } from '@angular/forms';\nimport { HviForm } from '../../form';\n\nexport type HviValidationMessages = Partial<Record<string, string>>;\n\nconst DEFAULT_ERROR_PRIORITY = [\n 'required',\n 'minlength',\n 'maxlength',\n 'email',\n 'pattern',\n 'min',\n 'max',\n] as const;\n\n@Directive({\n selector: '[hviValidationMessage]',\n standalone: true,\n host: {\n // Sett tekstinnhold direkte på elementet (typisk <p hviFieldValidation ...>)\n '[textContent]': 'message',\n // Skjul elementet når det ikke er noen feilmelding\n '[hidden]': '!message',\n },\n})\nexport class HviValidationMessage {\n /**\n * Control name in the nearest parent FormGroup (matches formControlName).\n * Example: hviValidationMessage=\"firstName\"\n */\n @Input('hviValidationMessage') controlName!: string;\n\n /**\n * Map errorKey -> message, e.g. { required: 'Påkrevd', minlength: 'Minst 2 tegn' }\n */\n @Input() messages: HviValidationMessages = {};\n\n /**\n * Optional error priority order. Defaults to a sensible order.\n */\n @Input() errorPriority: readonly string[] = DEFAULT_ERROR_PRIORITY;\n\n private readonly container = inject(ControlContainer, { optional: true });\n private readonly hviForm = inject(HviForm, { optional: true });\n\n private get control(): AbstractControl | null {\n const group = this.container?.control;\n if (!group || !this.controlName) return null;\n return group.get(this.controlName);\n }\n\n get message(): string {\n const ctrl = this.control;\n if (!ctrl) return '';\n\n const submitted = this.hviForm?.submitted ?? false;\n const show = ctrl.invalid && (ctrl.touched || submitted);\n if (!show) return '';\n\n const errors = ctrl.errors ?? {};\n\n // 1) Prioritized keys first\n for (const key of this.errorPriority) {\n if (errors[key] && this.messages[key]) return this.messages[key]!;\n }\n\n // 2) Any remaining mapped key\n for (const key of Object.keys(errors)) {\n if (this.messages[key]) return this.messages[key]!;\n }\n\n return 'Ugyldig verdi';\n }\n}\n","import { ValidatorFn } from '@angular/forms';\nimport type { HviValidationMessages } from '../validation';\n\n/**\n * A bundle that pairs a validator function with its error key and message.\n * This enables defining validation rules and messages in one place.\n */\nexport interface HviValidatorBundle {\n /** The Angular validator function */\n validator: ValidatorFn;\n /** The error key (e.g., 'required', 'minlength') */\n key: string;\n /** The user-facing error message */\n message: string;\n}\n\n/**\n * Result of processing validator bundles - ready to use with FormControl and hviValidationMessage.\n */\nexport interface HviValidatorConfig {\n /** Array of validator functions to pass to FormControl */\n validators: ValidatorFn[];\n /** Messages object to pass to hviValidationMessage */\n messages: HviValidationMessages;\n}\n\n/**\n * Extracts validators and messages from an array of validator bundles.\n *\n * @example\n * ```ts\n * const config = hviValidators([\n * hviRequired('Fornavn er påkrevd'),\n * hviMinLength(2, 'Fornavn må være minst 2 tegn'),\n * ]);\n *\n * form = new FormGroup({\n * firstName: new FormControl('', config.validators),\n * });\n *\n * // In template: [messages]=\"config.messages\"\n * ```\n */\nexport function hviValidators(bundles: HviValidatorBundle[]): HviValidatorConfig {\n return {\n validators: bundles.map((b) => b.validator),\n messages: bundles.reduce(\n (acc, b) => ({ ...acc, [b.key]: b.message }),\n {} as HviValidationMessages,\n ),\n };\n}\n\n/**\n * Extracts only the validator functions from bundles.\n * Useful when you need just the validators for a FormControl.\n */\nexport function hviExtractValidators(bundles: HviValidatorBundle[]): ValidatorFn[] {\n return bundles.map((b) => b.validator);\n}\n\n/**\n * Extracts only the messages from bundles.\n * Useful when you need just the messages object.\n */\nexport function hviExtractMessages(bundles: HviValidatorBundle[]): HviValidationMessages {\n return bundles.reduce((acc, b) => ({ ...acc, [b.key]: b.message }), {} as HviValidationMessages);\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\nimport { HviValidatorBundle } from './validator-bundle';\n\n/**\n * Creates a required validator bundle.\n *\n * @example\n * ```ts\n * hviRequired('Dette feltet er påkrevd')\n * ```\n */\nexport function hviRequired(message: string): HviValidatorBundle {\n return { validator: Validators.required, key: 'required', message };\n}\n\n/**\n * Creates a requiredTrue validator bundle (for checkboxes that must be checked).\n *\n * @example\n * ```ts\n * hviRequiredTrue('Du må godta vilkårene')\n * ```\n */\nexport function hviRequiredTrue(message: string): HviValidatorBundle {\n return { validator: Validators.requiredTrue, key: 'required', message };\n}\n\n/**\n * Creates a minLength validator bundle.\n *\n * @example\n * ```ts\n * hviMinLength(2, 'Må være minst 2 tegn')\n * ```\n */\nexport function hviMinLength(length: number, message: string): HviValidatorBundle {\n return { validator: Validators.minLength(length), key: 'minlength', message };\n}\n\n/**\n * Creates a maxLength validator bundle.\n *\n * @example\n * ```ts\n * hviMaxLength(100, 'Kan ikke være mer enn 100 tegn')\n * ```\n */\nexport function hviMaxLength(length: number, message: string): HviValidatorBundle {\n return { validator: Validators.maxLength(length), key: 'maxlength', message };\n}\n\n/**\n * Creates an email validator bundle.\n *\n * @example\n * ```ts\n * hviEmail('Ugyldig e-postadresse')\n * ```\n */\nexport function hviEmail(message: string): HviValidatorBundle {\n return { validator: Validators.email, key: 'email', message };\n}\n\n/**\n * Creates a pattern validator bundle.\n *\n * @example\n * ```ts\n * hviPattern(/^\\d+$/, 'Kan kun inneholde tall')\n * ```\n */\nexport function hviPattern(pattern: string | RegExp, message: string): HviValidatorBundle {\n return { validator: Validators.pattern(pattern), key: 'pattern', message };\n}\n\n/**\n * Creates a min value validator bundle.\n *\n * @example\n * ```ts\n * hviMin(0, 'Må være minst 0')\n * ```\n */\nexport function hviMin(min: number, message: string): HviValidatorBundle {\n return { validator: Validators.min(min), key: 'min', message };\n}\n\n/**\n * Creates a max value validator bundle.\n *\n * @example\n * ```ts\n * hviMax(100, 'Kan ikke være mer enn 100')\n * ```\n */\nexport function hviMax(max: number, message: string): HviValidatorBundle {\n return { validator: Validators.max(max), key: 'max', message };\n}\n\n/**\n * Creates a custom validator bundle with a specified error key.\n * Use this for custom validators or validators not covered by the built-in functions.\n *\n * @example\n * ```ts\n * // Custom validator that checks if value matches a specific format\n * const norwegianPhoneValidator: ValidatorFn = (control) => {\n * const valid = /^(\\+47)?\\d{8}$/.test(control.value);\n * return valid ? null : { norwegianPhone: true };\n * };\n *\n * hviCustom('norwegianPhone', norwegianPhoneValidator, 'Ugyldig norsk telefonnummer')\n * ```\n */\nexport function hviCustom(\n key: string,\n validator: ValidatorFn,\n message: string,\n): HviValidatorBundle {\n return { validator, key, message };\n}\n\n/**\n * Creates a nullValidator bundle (always valid, useful for conditional validation).\n * Note: This validator always passes, so the message will never be shown.\n */\nexport function hviNullValidator(): HviValidatorBundle {\n return { validator: Validators.nullValidator, key: 'null', message: '' };\n}\n","import { ReactiveFormsModule } from '@angular/forms';\n\nimport { HviForm } from './form';\nimport { HviControlInvalid, HviValidationMessage } from './validation';\n\nimport {\n HviField,\n HviFieldAffix,\n HviFieldAffixes,\n HviFieldDescription,\n HviFieldOptional,\n HviFieldValidation,\n} from './field';\n\nimport { HviErrorSummary } from './error-summary';\nimport { HviFieldset } from './fieldset';\nimport { HviInput } from './input';\n\n// 1) Bare field-byggesteiner\nexport const HviFieldKit = [\n HviField,\n HviFieldValidation,\n HviFieldDescription,\n HviFieldOptional,\n HviFieldAffix,\n HviFieldAffixes,\n] as const;\n\n// 2) Reactive forms + invalid/validation glue + submit behavior\nexport const HviValidationKit = [\n ReactiveFormsModule,\n HviForm,\n HviControlInvalid,\n HviValidationMessage,\n] as const;\n\n// 3) “Alt du trenger for DS forms”\nexport const HviForms = [\n ...HviValidationKit,\n ...HviFieldKit,\n HviInput,\n HviFieldset,\n HviErrorSummary,\n] as const;\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Heading is used to structure content and create hierarchy on a page.\n *\n * @example\n * ```html\n * <h1 hviHeading size=\"xl\">This is a heading</h1>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/heading/overview\n */\n@Directive({\n selector:\n 'h1[hviHeading], h2[hviHeading], h3[hviHeading], h4[hviHeading], h5[hviHeading], h6[hviHeading]',\n standalone: true,\n host: {\n class: 'ds-heading',\n '[attr.data-size]': 'size',\n },\n})\nexport class HviHeading {\n /** The size of the heading */\n @Input() size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n}\n","import { HttpClient } from '@angular/common/http';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n OnChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IconColor, IconName, IconSize } from './icon.types';\n\n@Component({\n selector: 'hvi-icon',\n standalone: true,\n template: '',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'hvi-icon',\n '[attr.data-size]': 'size',\n '[attr.data-color]': 'color',\n '[attr.aria-hidden]': 'ariaHidden',\n },\n styles: [\n `\n hvi-icon {\n display: inline-block;\n }\n svg {\n display: inline-block;\n }\n\n hvi-icon[data-size='sm'] svg {\n width: 16px;\n height: 16px;\n }\n hvi-icon[data-size='md'] svg {\n width: 24px;\n height: 24px;\n }\n hvi-icon[data-size='lg'] svg {\n width: 32px;\n height: 32px;\n }\n hvi-icon[data-size='xl'] svg {\n width: 40px;\n height: 40px;\n }\n\n hvi-icon svg path {\n fill: currentColor;\n }\n hvi-icon[data-color='danger'] svg path {\n fill: var(--ds-color-danger-base-default);\n }\n `,\n ],\n})\nexport class HviIcon implements OnChanges {\n @Input({ required: true }) icon!: IconName;\n @Input() color?: IconColor;\n @Input() size: IconSize = 'md';\n @Input({ transform: booleanAttribute }) ariaHidden = false;\n\n private readonly http = inject(HttpClient);\n private readonly elementRef = inject(ElementRef);\n private readonly cdr = inject(ChangeDetectorRef);\n\n ngOnChanges(): void {\n this.loadIcon();\n }\n\n private loadIcon() {\n this.http\n .get(`/assets/icons/${this.icon}.svg`, {\n responseType: 'text',\n })\n .subscribe({\n next: (svg) => {\n this.elementRef.nativeElement.innerHTML = svg;\n this.cdr.markForCheck();\n },\n error: (err) => {\n console.error('Failed to load icon:', this.icon, err);\n },\n });\n }\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Label functions as a clear and accessible text label that tells the user what an associated form element is about.\n *\n * @example\n * ```html\n * <label hviLabel weight=\"semibold\">Name</label>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/label/overview\n */\n@Directive({\n selector: 'label[hviLabel], legend[hviLabel]',\n standalone: true,\n host: {\n class: 'ds-label',\n '[attr.data-weight]': 'weight ?? null',\n },\n})\nexport class HviLabel {\n /** The font weight of the label */\n @Input() weight?: 'regular' | 'medium' | 'semibold';\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <a hviLink />\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/input/overview\n */\n\n@Directive({\n selector: 'a[hviLink]',\n standalone: true,\n host: {\n class: 'ds-link',\n '[attr.data-color]': 'color',\n },\n})\nexport class HviLink {\n /** Used to change the appearance of the link. */\n @Input() color?: 'default' | 'neutral' = 'default';\n}\n","import { Directive } from '@angular/core';\n\n/**\n * @summary\n * List directive description.\n *\n * @example\n * ```html\n * <ol hviList>\n * <li>First item</li>\n * <li>Second item</li>\n * <li>Third item</li>\n * </ol>\n *\n * <ul hviList>\n * <li>First item</li>\n * <li>Second item</li>\n * <li>Third item</li>\n * </ul>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/input/code\n */\n\n@Directive({\n selector: 'ol[hviList], ul[hviList]',\n standalone: true,\n host: {\n class: 'ds-list',\n },\n})\nexport class HviList {}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Paragraph is used for continuous text and is typically applied in articles, components, help text, and similar content.\n *\n * @example\n * ```html\n * <p hviParagraph variant=\"long\" size=\"md\">\n * This is a paragraph with body text that can be adjusted in size and variant.\n * </p>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/paragraph/overview\n */\n@Directive({\n selector: 'p[hviParagraph]',\n standalone: true,\n host: {\n class: 'ds-paragraph',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-size]': 'size ?? null',\n },\n})\nexport class HviParagraph {\n /** Adjusts the style for the length of the paragraph */\n @Input() variant?: 'long' | 'default' | 'short';\n\n /** Paragraph is available in several text sizes to suit different needs */\n @Input() size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n autoUpdate,\n computePosition,\n flip,\n offset,\n shift,\n type MiddlewareState,\n type Placement,\n} from '@floating-ui/dom';\n\nconst arrowPseudoElement = {\n name: 'ArrowPseudoElement',\n fn(data: MiddlewareState) {\n const { elements, rects, placement } = data;\n\n let arrowX = `${Math.round(rects.reference.width / 2 + rects.reference.x - data.x)}px`;\n let arrowY = `${Math.round(rects.reference.height / 2 + rects.reference.y - data.y)}px`;\n\n if (rects.reference.width > rects.floating.width) {\n arrowX = `${Math.round(rects.floating.width / 2)}px`;\n }\n\n if (rects.reference.height > rects.floating.height) {\n arrowY = `${Math.round(rects.floating.height / 2)}px`;\n }\n\n switch (placement.split('-')[0]) {\n case 'top':\n arrowY = '100%';\n break;\n case 'right':\n arrowX = '0';\n break;\n case 'bottom':\n arrowY = '0';\n break;\n case 'left':\n arrowX = '100%';\n break;\n }\n\n elements.floating.setAttribute('data-placement', placement.split('-')[0]);\n elements.floating.style.setProperty('--ds-popover-arrow-x', arrowX);\n elements.floating.style.setProperty('--ds-popover-arrow-y', arrowY);\n return data;\n },\n};\n\n/**\n * @summary\n * Popover vises over andre elementer i grensesnittet og er koblet til et spesifikt element.\n * Den brukes til å vise tilleggsinformasjon, interaktive elementer eller korte forklaringer uten å navigere bort fra siden.\n *\n * @example\n * ```html\n * <button hviButton popovertarget=\"popover1\">Open popover</button>\n * <hvi-popover id=\"popover1\"> Popover content </hvi-popover>\n * ```\n *\n * @see {@link https://designsystemet.no/en/components/docs/popover/code}\n */\n@Component({\n selector: 'hvi-popover',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-popover',\n '[attr.popover]': 'type',\n '[attr.data-variant]': 'variant',\n '[attr.data-color]': 'color',\n },\n})\nexport class HviPopover implements OnInit, OnDestroy {\n private el = inject(ElementRef<HTMLElement>);\n private cleanupAutoUpdate?: () => void;\n private boundHandleClick?: (event: MouseEvent) => void;\n private boundHandleKeydown?: (event: KeyboardEvent) => void;\n\n /** Popover type - 'manual' krever manuell lukking, 'auto' lukkes ved klikk utenfor */\n @Input() type: 'auto' | 'manual' | 'hint' = 'manual';\n\n /** Visuell variant */\n @Input() variant: 'default' | 'tinted' = 'default';\n\n /** Farge-tema */\n @Input() color: 'neutral' | 'danger' | 'info' | 'success' | 'warning' = 'neutral';\n\n /** Plassering av popover relativt til trigger */\n @Input() placement: Placement = 'top';\n\n /** Aktiver automatisk repositjonering hvis det ikke er plass */\n @Input() autoPlacement = true;\n\n /** Event når popover åpnes */\n @Output() opened = new EventEmitter<void>();\n\n /** Event når popover lukkes */\n @Output() closed = new EventEmitter<void>();\n\n private get popoverElement(): HTMLElement {\n return this.el.nativeElement;\n }\n\n private get triggerElement(): HTMLElement | null {\n const id = this.popoverElement.id;\n return id ? document.querySelector(`[popovertarget=\"${id}\"]`) : null;\n }\n\n ngOnInit() {\n this.setupEventListeners();\n }\n\n ngOnDestroy() {\n this.stopAutoUpdate();\n this.removeEventListeners();\n }\n\n private setupEventListeners() {\n const popover = this.popoverElement;\n\n // Click utenfor lukker popover\n this.boundHandleClick = (event: MouseEvent) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(`[popovertarget=\"${popover.id}\"]`);\n const isOutside = !isTrigger && !popover.contains(el as Node);\n\n if (isTrigger) {\n event.preventDefault();\n popover.togglePopover?.();\n }\n if (isOutside && popover.matches(':popover-open')) {\n popover.togglePopover?.();\n }\n };\n\n // Escape lukker popover\n this.boundHandleKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !popover.matches(':popover-open')) return;\n event.preventDefault();\n popover.togglePopover?.();\n };\n\n addEventListener('click', this.boundHandleClick);\n addEventListener('keydown', this.boundHandleKeydown);\n\n // Toggle events\n popover.addEventListener('beforetoggle', this.handleBeforeToggle);\n popover.addEventListener('toggle', this.handleToggle);\n }\n\n private removeEventListeners() {\n if (this.boundHandleClick) {\n removeEventListener('click', this.boundHandleClick);\n }\n if (this.boundHandleKeydown) {\n removeEventListener('keydown', this.boundHandleKeydown);\n }\n this.popoverElement.removeEventListener('beforetoggle', this.handleBeforeToggle);\n this.popoverElement.removeEventListener('toggle', this.handleToggle);\n }\n\n private handleBeforeToggle = (event: Event) => {\n const toggleEvent = event as ToggleEvent;\n if (toggleEvent.newState === 'open') {\n this.updatePosition();\n }\n };\n\n private handleToggle = (event: Event) => {\n const toggleEvent = event as ToggleEvent;\n if (toggleEvent.newState === 'open') {\n this.startAutoUpdate();\n this.opened.emit();\n } else {\n this.stopAutoUpdate();\n this.closed.emit();\n }\n };\n\n private updatePosition() {\n const trigger = this.triggerElement;\n const popover = this.popoverElement;\n\n if (!trigger || !popover) return;\n\n computePosition(trigger, popover, {\n placement: this.placement,\n strategy: 'fixed',\n middleware: [\n offset((data) => {\n const styles = getComputedStyle(data.elements.floating, '::before');\n return parseFloat(styles.height) || 12;\n }),\n ...(this.autoPlacement ? [flip({ fallbackAxisSideDirection: 'start' }), shift()] : []),\n arrowPseudoElement,\n ],\n }).then(({ x, y }) => {\n popover.style.translate = `${x}px ${y}px`;\n });\n }\n\n private startAutoUpdate() {\n this.stopAutoUpdate();\n\n const trigger = this.triggerElement;\n const popover = this.popoverElement;\n\n if (!trigger || !popover) return;\n\n this.cleanupAutoUpdate = autoUpdate(trigger, popover, () => this.updatePosition());\n }\n\n private stopAutoUpdate() {\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = undefined;\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * @summary\n * Tag is a label that can be used to categorize items or communicate progress, status, or process. Tags can provide users with a quicker overview of content.\n *\n * @example\n * ```html\n * <hvi-tag variant=\"outline\" size=\"sm\" color=\"info\">Small info tag</hvi-tag>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/tag/code\n */\n\n@Component({\n selector: 'hvi-tag',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-tag',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-size]': 'size ?? null',\n '[attr.data-color]': 'color ?? null',\n },\n})\nexport class HviTag {\n /** The variants of the tag */\n @Input() variant?: 'default' | 'outline';\n\n /** The sizes of the tag */\n @Input() size?: 'sm' | 'md' | 'lg';\n\n /** The color theme of the tag */\n @Input() color?:\n | 'neutral'\n | 'danger'\n | 'warning'\n | 'info'\n | 'success'\n | 'accent'\n | 'brand1'\n | 'brand2'\n | 'brand3';\n}\n","/*\n * Public API Surface of hviktor\n */\n\nexport * from './alert';\nexport * from './avatar';\nexport * from './badge';\nexport * from './breadcrumbs';\nexport * from './button';\nexport * from './card';\nexport * from './chip';\nexport * from './details';\nexport * from './dialog';\nexport * from './divider';\nexport * from './forms';\nexport * from './heading';\nexport * from './icon';\nexport * from './label';\nexport * from './link';\nexport * from './list';\nexport * from './paragraph';\nexport * from './popover';\nexport * from './tag';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_ERROR_PRIORITY"],"mappings":";;;;;;;AAEA;;;;;;;;;;;;;AAaG;MAUU,QAAQ,CAAA;;AAEV,IAAA,KAAK;uGAFH,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,mLANT,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAMf,QAAQ,EAAA,UAAA,EAAA,CAAA;kBATpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,mBAAmB,EAAE,OAAO;AAC7B,qBAAA;AACF,iBAAA;;sBAGE;;;ACzBH;;;;;;;;;;;;;;;AAeG;MAeU,SAAS,CAAA;;AAEX,IAAA,SAAS;;AAGT,IAAA,OAAO;;AAGP,IAAA,QAAQ;;AAGR,IAAA,IAAI;;AAGJ,IAAA,KAAK;uGAdH,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,wcAXV,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAWf,SAAS,EAAA,UAAA,EAAA,CAAA;kBAdrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,mBAAmB,EAAE,mBAAmB;AACxC,wBAAA,qBAAqB,EAAE,iBAAiB;AACxC,wBAAA,sBAAsB,EAAE,kBAAkB;AAC1C,wBAAA,kBAAkB,EAAE,cAAc;AAClC,wBAAA,mBAAmB,EAAE,eAAe;AACrC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;;MClCU,gBAAgB,CAAA;;IAElB,OAAO,GAA2B,WAAW;;IAG7C,SAAS,GAA8D,WAAW;uGALhF,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,0QAPjB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAOf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oBAAoB;AAC3B,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,uBAAuB,EAAE,WAAW;AACrC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;;MCJU,QAAQ,CAAA;;AAEV,IAAA,OAAO;;AAGP,IAAA,KAAK;;AAGL,IAAA,KAAK;uGARH,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,2SART,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAQf,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAXpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,qBAAqB,EAAE,iBAAiB;AACxC,wBAAA,mBAAmB,EAAE,eAAe;AACpC,wBAAA,mBAAmB,EAAE,eAAe;AACrC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAGA;;;ACbH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAkCU,cAAc,CAAA;;IAEhB,SAAS,GAAG,YAAY;;AAGxB,IAAA,QAAQ;;IAOR,KAAK,GAAqB,EAAE;uGAZ1B,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7Bf;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAOU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhC1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,mBAAmB,EAAE,mBAAmB;AACzC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAOA;;;AC1EH;;;;;;;;;;;;AAYG;MAeU,SAAS,CAAA;;AAEX,IAAA,IAAI;;AAGJ,IAAA,OAAO;;AAGP,IAAA,IAAI;;AAGJ,IAAA,KAAK;AAEd;;AAEG;IACqC,IAAI,GAAG,KAAK;AAEpD;;AAEG;IACqC,OAAO,GAAG,KAAK;;IAGf,SAAS,GAAG,KAAK;uGAxB9C,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAgBA,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAKhB,gBAAgB,yCAGhB,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,2BAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAxBzB,SAAS,EAAA,UAAA,EAAA,CAAA;kBAdrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,mBAAmB,EAAE,OAAO;AAC5B,wBAAA,uBAAuB,EAAE,uBAAuB;AAChD,wBAAA,kBAAkB,EAAE,kBAAkB;AACtC,wBAAA,kBAAkB,EAAE,yBAAyB;AAC9C,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAGA;;sBAGA;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;ACnDxC;;;;;;;;;;;;;;;AAeG;MAMU,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;AAClC,iBAAA;;;ACpBD;;;;;;;;;;;;;AAaG;MAYU,OAAO,CAAA;;AAET,IAAA,OAAO;;AAGP,IAAA,KAAK;;AAGL,IAAA,QAAQ;uGARN,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,0RARR,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAQf,OAAO,EAAA,UAAA,EAAA,CAAA;kBAXnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,mBAAmB,EAAE,OAAO;AAC5B,wBAAA,mBAAmB,EAAE,UAAU;AAChC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAGA;;;MCzBU,aAAa,CAAA;;IAEgB,SAAS,GAAG,KAAK;uGAF9C,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,mGAEJ,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAFzB,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,uBAAuB,EAAE,2BAA2B;AACrD,qBAAA;AACF,iBAAA;;sBAGE,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;MCH3B,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAPxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AACjB,qBAAA;AACF,iBAAA;;;MCFY,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+EAFlB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;MCCY,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+EAFlB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;ACFD;;;;;;;;;;;;;;;;AAgBG;MAuBU,UAAU,CAAA;;IAEZ,OAAO,GAAyB,SAAS;;IAGzC,IAAI,GAAiB,KAAK;;IAG1B,WAAW,GAAiB,KAAK;;AAGjC,IAAA,QAAQ,GAA2B,MAAK,EAAE,CAAC;AAEpD,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;IAChC;uGAfW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBX,CAAA;;;;;;;;;;;;;;AAcG,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAGF,UAAU,EAAA,UAAA,EAAA,CAAA;kBArBtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;AAcG,cAAA,CAAA;AACb,oBAAA,IAAI,EAAE,EAAE;AACT,iBAAA;;sBAGE;;sBAGA;;sBAGA;;sBAGA;;;MC5CU,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AAC1B,qBAAA;AACF,iBAAA;;;ACED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;MASU,SAAS,CAAA;AACX,IAAA,EAAE;IACX,IACI,IAAI,CAAC,KAAc,EAAA;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;IAC1B;IAES,KAAK,GAAG,IAAI;AAEF,IAAA,UAAU,GAAG,IAAI,YAAY,EAAW;IAE1C,OAAO,GAAG,MAAM,EAAC,UAA6B,EAAC,CAAC,aAAa;IAE9E,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACpB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IACrB;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;AAGA,IAAA,YAAY,CAAC,KAAY,EAAA;QACvB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IACrB;AAEQ,IAAA,OAAO,CAAC,UAAmB,EAAA;QACjC,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACrB;YACF;AAEA,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAC1B;iBAAO;AACL,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACrB;AAEA,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;IACtB;uGAzDW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBARrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,EAAE,EAAE,UAAU;AACf,qBAAA;AACF,iBAAA;;sBAEE;;sBACA;;sBASA;;sBAEA;;sBAYA,YAAY;uBAAC,OAAO;;sBAKpB,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;AC5EpC;;;;;;;;;AASG;MAUU,UAAU,CAAA;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,aAAa,EAAE,MAAM;AACtB,qBAAA;AACF,iBAAA;;;ACjBD;;;;;;;;;;;;;AAaG;MAMU,OAAO,CAAA;;AAER,IAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;;IAGjD,SAAS,GAAG,KAAK;;AAGR,IAAA,cAAc;;IAGN,YAAY,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAG9E,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAExB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI;AACpC,QAAA,IAAI,CAAC,IAAI;YAAE;QAEX,IAAI,CAAC,gBAAgB,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,cAAc,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC;QACtD;IACF;uGA3BW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAJnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;sBAGE;;sBAMA;;sBAKA,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;AClBpC,MAAMA,wBAAsB,GAAG;IAC7B,UAAU;IACV,WAAW;IACX,WAAW;IACX,OAAO;IACP,SAAS;IACT,KAAK;IACL,KAAK;CACG;AAEV,IAAI,qBAAqB,GAAG,CAAC;AAC7B,MAAM,yBAAyB,GAAG,MAAM,CAAA,0BAAA,EAA6B,EAAE,qBAAqB,CAAA,CAAE;AAE9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgEG;MA2CU,eAAe,CAAA;;IAEjB,OAAO,GAAG,gDAAgD;;IAG1D,YAAY,GAA0B,CAAC;AAEhD;;;AAGG;IACM,MAAM,GAA0B,EAAE;;AAGlC,IAAA,IAAI;AAEb;;;;;;;AAOG;AACM,IAAA,QAAQ;AAEjB;;;AAGG;AACM,IAAA,KAAK;;IAGL,aAAa,GAAsBA,wBAAsB;;IAGzD,SAAS,GAAG,yBAAyB,EAAE;;IAGvC,QAAQ,GAAuC,WAAW;AAEjB,IAAA,SAAS;IAE3D,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE;IACvC;AAEA,IAAA,IAAI,cAAc,GAAA;;AAEhB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM;;AAG3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC9B,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE;QAEjC,MAAM,KAAK,GAA0B,EAAE;AAEvC,QAAA,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YACvC,IAAI,CAAC,IAAI,EAAE,OAAO;gBAAE;AAEpB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE;YAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;YAE1C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;AAC9C,YAAA,IAAI,CAAC,OAAO;gBAAE;YAEd,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,WAAW;AACnD,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,EAAE,CAAC;QACzC;AAEA,QAAA,OAAO,KAAK;IACd;IAEQ,WAAW,CAAC,MAA+B,EAAE,QAA+B,EAAA;AAClF,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;YACpC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,QAAQ,CAAC,GAAG,CAAE;QACzD;QACA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACrC,IAAI,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,QAAQ,CAAC,GAAG,CAAE;QAC1C;AACA,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,eAAe,GAAG,EAAE;IAC1D;IAEiB,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE9D,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;AAElD,QAAA,QAAQ,IAAI,CAAC,QAAQ;AACnB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI;AAEb,YAAA,KAAK,SAAS;;AAEZ,gBAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,iBAAiB,EAAE;AAEvE,YAAA,KAAK,WAAW;AAChB,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK;;IAE7C;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK;AAEvB,QAAA,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO;AAAE,gBAAA,OAAO,IAAI;QAC1C;AACA,QAAA,OAAO,KAAK;IACd;uGAjHW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBA1C3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,EAAA,CAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAMA;;sBAGA;;sBAUA;;sBAMA;;sBAGA;;sBAGA;;sBAGA;;sBAEA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AClL1C;AAEM,SAAU,aAAa,CAAC,YAAgC,EAAA;AAC5D,IAAA,IAAI,CAAC,YAAY;QAAE;AAEnB,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B;AAClD,IAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC9C,IAAA,MAAM,IAAI,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IACnF,IAAI,KAAK,GAAmB,IAAI;IAChC,IAAI,WAAW,GAAG,EAAE;AAEpB,IAAA,MAAM,OAAO,GAAG,CAAC,SAAoC,KAAI;QACvD,MAAM,OAAO,GAAW,EAAE;QAC1B,MAAM,OAAO,GAAW,EAAE;;AAG1B,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,IAAI,QAAQ,CAAC,aAAa;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,YAAY,CAAC;AACzE,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;AAC5C,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QAChD;;AAGA,QAAA,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAAE;YAEpB,IAAI,OAAO,CAAC,EAAE,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC;AACxC,iBAAA,IAAI,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;iBAC1D,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;gBACtC,KAAK,GAAG,EAAE;gBACV,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE;YACzD;QACF;;AAGA,QAAA,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAAE;YAEpB,IAAI,KAAK,KAAK,EAAE;gBAAE,KAAK,GAAG,IAAI;AAC9B,YAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBACpB,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACzD,gBAAA,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrB;QACF;;AAGA,QAAA,MAAM,cAAc,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACjE,QAAA,MAAM,OAAO,GAAG,KAAK,EAAE,EAAE,IAAI,IAAI;;QAGjC,WAAW,CAAC,KAAK,EAAE;QAEnB,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE;YAClC,MAAM,eAAe,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC;AACrD,YAAA,IAAI,EAAU;YAEd,IAAI,eAAe,EAAE;;AAEnB,gBAAA,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AACzD,gBAAA,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;gBACvC,EAAE,GAAG,GAAG,OAAO,CAAA,CAAA,EAAI,eAAe,CAAA,CAAA,EAAI,KAAK,EAAE;YAC/C;iBAAO;gBACL,EAAE,GAAG,OAAO;YACd;AAEA,YAAA,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;gBACnC,IAAI,eAAe,KAAK,YAAY;oBAClC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3B,qBAAA,IAAI,eAAe;oBAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvD;QACF;;QAGA,MAAM,oBAAoB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,KAAI;AACxD,YAAA,IAAI,CAAC,EAAE;AAAE,gBAAA,OAAO,KAAK;YACrB,IAAI,EAAE,KAAK,OAAO;AAAE,gBAAA,OAAO,IAAI;;;YAI/B,OAAO,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,EAAE,CAAC;AACzD,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;AAC7B,QAAA,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3E,IAAA,CAAC;AAED,IAAA,MAAM,QAAQ,GAAG,+BAA+B,CAAC,OAAO,CAAC;AACzD,IAAA,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE;AAC7B,QAAA,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,kBAAkB,CAAC;AAClD,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,OAAO,EAAE,IAAI;AACd,KAAA,CAAC;AAEF,IAAA,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,IAAA,QAAQ,CAAC,WAAW,EAAE,CAAC;AACvB,IAAA,OAAO,MAAM,QAAQ,CAAC,UAAU,EAAE;AACpC;AAEA;AACO,MAAM,SAAS,GAAG,CAAC,IAAU,KAAK,IAAI,YAAY;AAClD,MAAM,OAAO,GAAG,CAAC,IAAU,KAAK,IAAI,YAAY;AAChD,MAAM,WAAW,GAAG,CAAC,IAAa,KACvC,IAAI,YAAY,WAAW,IAAI,UAAU,IAAI,IAAI,IAAI,EAAE,IAAI,YAAY,iBAAiB,EAAE;AAE5F,MAAM,OAAO,GAAG,CAAC,EAAkB,EAAE,IAAY,EAAE,KAAqB,KACtE,KAAK,GAAG,EAAE,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC;AAEnE;AACA,SAAS,+BAA+B,CAAC,QAA0B,EAAA;IACjE,MAAM,KAAK,GAAqB,EAAE;IAClC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,KAAI;QAClD,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,qBAAqB,CAAC,OAAO,CAAC;AACjD,QAAA,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAC1B,IAAA,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,MAAK;AACnB,QAAA,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;AACzB,QAAA,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjB,QAAA,QAAQ,CAAC,WAAW,EAAE,CAAC;AACzB,IAAA,CAAC;AAED,IAAA,OAAO,QAAQ;AACjB;;AC1HA;;;;;;;;;;;;;;;;AAgBG;MASU,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,8JANd,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAMf,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,eAAe,EAAE,MAAM;AACxB,qBAAA;AACF,iBAAA;;;ACxBD;;;;;;;;;;;;;;;;AAgBG;MAQU,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,2HALhB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AAC1B,qBAAA;AACF,iBAAA;;;MChBY,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,aAAa;AAC5B,qBAAA;AACF,iBAAA;;;MCCY,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,UAAU;AACzB,qBAAA;AACF,iBAAA;;;MCEY,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC9B,wBAAA,YAAY,EAAE,YAAY;AAC3B,qBAAA;AACF,iBAAA;;;ACND;;;;;;;;;;;;;;AAcG;MAUU,QAAQ,CAAA;;AAEV,IAAA,QAAQ;AAEA,IAAA,EAAE,GAAG,MAAM,EAAC,UAAuB,EAAC;AACpC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAEhD,eAAe,GAAA;QACb,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;AACjD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC;IAC3C;uGAVW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,uMANT,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAMf,QAAQ,EAAA,UAAA,EAAA,CAAA;kBATpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,sBAAsB,EAAE,kBAAkB;AAC3C,qBAAA;AACF,iBAAA;;sBAGE;;;AC3BH;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;MAQU,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAPvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,aAAa;AACrB,qBAAA;AACF,iBAAA;;;MClBY,QAAQ,CAAA;;AAEV,IAAA,IAAI;;AAoBJ,IAAA,IAAI;;AAGJ,IAAA,IAAI;IAEH,SAAS,GAAG,KAAK;IACjB,SAAS,GAAG,KAAK;IAE3B,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;AACA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;AACA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;AAEA,IAAA,IAAY,QAAQ,GAAA;QAClB,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;IAC1D;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QAClC;IACF;AAGA,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QAClC;IACF;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AAEvC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAC1E,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QAClC;IACF;uGA/EW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EA8BC,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAQhB,gBAAgB,sCAQhB,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,cAAA,EAAA,WAAA,EAAA,cAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FA9CzB,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAZpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,iBAAiB,EAAE,uBAAuB;AAC1C,wBAAA,iBAAiB,EAAE,uBAAuB;AAC1C,wBAAA,aAAa,EAAE,cAAc;AAC9B,qBAAA;AACF,iBAAA;;sBAGE;;sBAoBA;;sBAGA;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBASrC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAQhC,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;sBAQjC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACnFrC;;;;;;;;AAQG;MAMU,iBAAiB,CAAA;AACX,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7D,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE9D,IAAA,IACI,WAAW,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO;AACvC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;QAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK;AAClD,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC;QAE9D,OAAO,IAAI,GAAG,MAAM,GAAG,IAAI;IAC7B;uGAbW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;sBAKE,WAAW;uBAAC,mBAAmB;;;AChBlC,MAAM,sBAAsB,GAAG;IAC7B,UAAU;IACV,WAAW;IACX,WAAW;IACX,OAAO;IACP,SAAS;IACT,KAAK;IACL,KAAK;CACG;MAYG,oBAAoB,CAAA;AAC/B;;;AAGG;AAC4B,IAAA,WAAW;AAE1C;;AAEG;IACM,QAAQ,GAA0B,EAAE;AAE7C;;AAEG;IACM,aAAa,GAAsB,sBAAsB;IAEjD,SAAS,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxD,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE9D,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO;AACrC,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,IAAI;QAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;IACpC;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;AACzB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;QAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK;AAClD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC;AACxD,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;AAEpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE;;AAGhC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;YACpC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE;QACnE;;QAGA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE;QACpD;AAEA,QAAA,OAAO,eAAe;IACxB;uGA/CW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,sBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;;AAEJ,wBAAA,eAAe,EAAE,SAAS;;AAE1B,wBAAA,UAAU,EAAE,UAAU;AACvB,qBAAA;AACF,iBAAA;;sBAME,KAAK;uBAAC,sBAAsB;;sBAK5B;;sBAKA;;;ACfH;;;;;;;;;;;;;;;;AAgBG;AACG,SAAU,aAAa,CAAC,OAA6B,EAAA;IACzD,OAAO;AACL,QAAA,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AAC3C,QAAA,QAAQ,EAAE,OAAO,CAAC,MAAM,CACtB,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAC5C,EAA2B,CAC5B;KACF;AACH;AAEA;;;AAGG;AACG,SAAU,oBAAoB,CAAC,OAA6B,EAAA;AAChE,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AACxC;AAEA;;;AAGG;AACG,SAAU,kBAAkB,CAAC,OAA6B,EAAA;AAC9D,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAA2B,CAAC;AAClG;;AChEA;;;;;;;AAOG;AACG,SAAU,WAAW,CAAC,OAAe,EAAA;AACzC,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE;AACrE;AAEA;;;;;;;AAOG;AACG,SAAU,eAAe,CAAC,OAAe,EAAA;AAC7C,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE;AACzE;AAEA;;;;;;;AAOG;AACG,SAAU,YAAY,CAAC,MAAc,EAAE,OAAe,EAAA;AAC1D,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE;AAC/E;AAEA;;;;;;;AAOG;AACG,SAAU,YAAY,CAAC,MAAc,EAAE,OAAe,EAAA;AAC1D,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE;AAC/E;AAEA;;;;;;;AAOG;AACG,SAAU,QAAQ,CAAC,OAAe,EAAA;AACtC,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;AAC/D;AAEA;;;;;;;AAOG;AACG,SAAU,UAAU,CAAC,OAAwB,EAAE,OAAe,EAAA;AAClE,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE;AAC5E;AAEA;;;;;;;AAOG;AACG,SAAU,MAAM,CAAC,GAAW,EAAE,OAAe,EAAA;AACjD,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;AAChE;AAEA;;;;;;;AAOG;AACG,SAAU,MAAM,CAAC,GAAW,EAAE,OAAe,EAAA;AACjD,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;AAChE;AAEA;;;;;;;;;;;;;;AAcG;SACa,SAAS,CACvB,GAAW,EACX,SAAsB,EACtB,OAAe,EAAA;AAEf,IAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE;AACpC;AAEA;;;AAGG;SACa,gBAAgB,GAAA;AAC9B,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;AAC1E;;AC9GA;AACO,MAAM,WAAW,GAAG;IACzB,QAAQ;IACR,kBAAkB;IAClB,mBAAmB;IACnB,gBAAgB;IAChB,aAAa;IACb,eAAe;;AAGjB;AACO,MAAM,gBAAgB,GAAG;IAC9B,mBAAmB;IACnB,OAAO;IACP,iBAAiB;IACjB,oBAAoB;;AAGtB;AACO,MAAM,QAAQ,GAAG;AACtB,IAAA,GAAG,gBAAgB;AACnB,IAAA,GAAG,WAAW;IACd,QAAQ;IACR,WAAW;IACX,eAAe;;;ACxCjB;;;;;;;;;AASG;MAUU,UAAU,CAAA;;AAEZ,IAAA,IAAI;uGAFF,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gGAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBATtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACN,gGAAgG;AAClG,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,kBAAkB,EAAE,MAAM;AAC3B,qBAAA;AACF,iBAAA;;sBAGE;;;MCoCU,OAAO,CAAA;AACS,IAAA,IAAI;AACtB,IAAA,KAAK;IACL,IAAI,GAAa,IAAI;IACU,UAAU,GAAG,KAAK;AAEzC,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAEhD,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,EAAE;IACjB;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC;AACF,aAAA,GAAG,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,IAAI,MAAM,EAAE;AACrC,YAAA,YAAY,EAAE,MAAM;SACrB;AACA,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;gBACZ,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,GAAG;AAC7C,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;gBACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;YACvD,CAAC;AACF,SAAA,CAAC;IACN;uGA5BW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAIE,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/C1B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qXAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FA2CD,OAAO,EAAA,UAAA,EAAA,CAAA;kBA9CnB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,QAAA,EACN,EAAE,iBACG,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,mBAAmB,EAAE,OAAO;AAC5B,wBAAA,oBAAoB,EAAE,YAAY;AACnC,qBAAA,EAAA,MAAA,EAAA,CAAA,qXAAA,CAAA,EAAA;;sBAqCA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;AC7DxC;;;;;;;;;AASG;MASU,QAAQ,CAAA;;AAEV,IAAA,MAAM;uGAFJ,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBARpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,oBAAoB,EAAE,gBAAgB;AACvC,qBAAA;AACF,iBAAA;;sBAGE;;;ACpBH;;;;;;;;;AASG;MAUU,OAAO,CAAA;;IAET,KAAK,GAA2B,SAAS;uGAFvC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBARnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,mBAAmB,EAAE,OAAO;AAC7B,qBAAA;AACF,iBAAA;;sBAGE;;;ACrBH;;;;;;;;;;;;;;;;;;;;AAoBG;MASU,OAAO,CAAA;uGAAP,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAPnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AACjB,qBAAA;AACF,iBAAA;;;AC5BD;;;;;;;;;;;AAWG;MAUU,YAAY,CAAA;;AAEd,IAAA,OAAO;;AAGP,IAAA,IAAI;uGALF,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,qBAAqB,EAAE,iBAAiB;AACxC,wBAAA,kBAAkB,EAAE,cAAc;AACnC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;;ACRH,MAAM,kBAAkB,GAAG;AACzB,IAAA,IAAI,EAAE,oBAAoB;AAC1B,IAAA,EAAE,CAAC,IAAqB,EAAA;QACtB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;QAE3C,IAAI,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;QACtF,IAAI,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;AAEvF,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;AAChD,YAAA,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI;QACtD;AAEA,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;AAClD,YAAA,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI;QACvD;QAEA,QAAQ,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAA,KAAK,KAAK;gBACR,MAAM,GAAG,MAAM;gBACf;AACF,YAAA,KAAK,OAAO;gBACV,MAAM,GAAG,GAAG;gBACZ;AACF,YAAA,KAAK,QAAQ;gBACX,MAAM,GAAG,GAAG;gBACZ;AACF,YAAA,KAAK,MAAM;gBACT,MAAM,GAAG,MAAM;gBACf;;AAGJ,QAAA,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,sBAAsB,EAAE,MAAM,CAAC;QACnE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,sBAAsB,EAAE,MAAM,CAAC;AACnE,QAAA,OAAO,IAAI;IACb,CAAC;CACF;AAED;;;;;;;;;;;;AAYG;MAYU,UAAU,CAAA;AACb,IAAA,EAAE,GAAG,MAAM,EAAC,UAAuB,EAAC;AACpC,IAAA,iBAAiB;AACjB,IAAA,gBAAgB;AAChB,IAAA,kBAAkB;;IAGjB,IAAI,GAA+B,QAAQ;;IAG3C,OAAO,GAAyB,SAAS;;IAGzC,KAAK,GAA0D,SAAS;;IAGxE,SAAS,GAAc,KAAK;;IAG5B,aAAa,GAAG,IAAI;;AAGnB,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;;AAGjC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AAE3C,IAAA,IAAY,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa;IAC9B;AAEA,IAAA,IAAY,cAAc,GAAA;AACxB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE;AACjC,QAAA,OAAO,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,gBAAA,EAAmB,EAAE,IAAI,CAAC,GAAG,IAAI;IACtE;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEQ,mBAAmB,GAAA;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc;;AAGnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAiB,KAAI;AAC5C,YAAA,MAAM,EAAE,GAAG,KAAK,CAAC,MAAwB;AACzC,YAAA,MAAM,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,CAAA,gBAAA,EAAmB,OAAO,CAAC,EAAE,CAAA,EAAA,CAAI,CAAC;AAClE,YAAA,MAAM,SAAS,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAU,CAAC;YAE7D,IAAI,SAAS,EAAE;gBACb,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,OAAO,CAAC,aAAa,IAAI;YAC3B;YACA,IAAI,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AACjD,gBAAA,OAAO,CAAC,aAAa,IAAI;YAC3B;AACF,QAAA,CAAC;;AAGD,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,KAAoB,KAAI;AACjD,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;gBAAE;YACjE,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,aAAa,IAAI;AAC3B,QAAA,CAAC;AAED,QAAA,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAChD,QAAA,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC;;QAGpD,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC;QACjE,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;IACvD;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC;QACrD;AACA,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC;QACzD;QACA,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC;QAChF,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;IACtE;AAEQ,IAAA,kBAAkB,GAAG,CAAC,KAAY,KAAI;QAC5C,MAAM,WAAW,GAAG,KAAoB;AACxC,QAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE;YACnC,IAAI,CAAC,cAAc,EAAE;QACvB;AACF,IAAA,CAAC;AAEO,IAAA,YAAY,GAAG,CAAC,KAAY,KAAI;QACtC,MAAM,WAAW,GAAG,KAAoB;AACxC,QAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE;YACnC,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;aAAO;YACL,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;AACF,IAAA,CAAC;IAEO,cAAc,GAAA;AACpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc;AAEnC,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;YAAE;AAE1B,QAAA,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE;YAChC,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,UAAU,EAAE;AACV,gBAAA,MAAM,CAAC,CAAC,IAAI,KAAI;AACd,oBAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;oBACnE,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AACxC,gBAAA,CAAC,CAAC;gBACF,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,EAAE,yBAAyB,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;gBACtF,kBAAkB;AACnB,aAAA;SACF,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAI;YACnB,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAA,GAAA,EAAM,CAAC,CAAA,EAAA,CAAI;AAC3C,QAAA,CAAC,CAAC;IACJ;IAEQ,eAAe,GAAA;QACrB,IAAI,CAAC,cAAc,EAAE;AAErB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc;AAEnC,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;YAAE;AAE1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IACpF;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;QACpC;IACF;uGAjJW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,0XARX,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAQf,UAAU,EAAA,UAAA,EAAA,CAAA;kBAXtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,gBAAgB,EAAE,MAAM;AACxB,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,mBAAmB,EAAE,OAAO;AAC7B,qBAAA;AACF,iBAAA;;sBAQE;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;;ACzGH;;;;;;;;;;AAUG;MAaU,MAAM,CAAA;;AAER,IAAA,OAAO;;AAGP,IAAA,IAAI;;AAGJ,IAAA,KAAK;uGARH,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,mSARP,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAQf,MAAM,EAAA,UAAA,EAAA,CAAA;kBAXlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,qBAAqB,EAAE,iBAAiB;AACxC,wBAAA,kBAAkB,EAAE,cAAc;AAClC,wBAAA,mBAAmB,EAAE,eAAe;AACrC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAGA;;;ACjCH;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"helsevestikt-hviktor-angular.mjs","sources":["../../../projects/hviktor/src/alert/alert.component.ts","../../../projects/hviktor/src/avatar/avatar.component.ts","../../../projects/hviktor/src/badge/badge-position.component.ts","../../../projects/hviktor/src/badge/badge.component.ts","../../../projects/hviktor/src/breadcrumbs/breadcrumbs.component.ts","../../../projects/hviktor/src/button/button.directive.ts","../../../projects/hviktor/src/card/card-block.directive.ts","../../../projects/hviktor/src/card/card.component.ts","../../../projects/hviktor/src/chip/chip-button.directive.ts","../../../projects/hviktor/src/chip/chip-label.directive.ts","../../../projects/hviktor/src/details/details-content.component.ts","../../../projects/hviktor/src/details/details-summary.component.ts","../../../projects/hviktor/src/details/details.component.ts","../../../projects/hviktor/src/dialog/dialog-block.directive.ts","../../../projects/hviktor/src/dialog/dialog.directive.ts","../../../projects/hviktor/src/divider/divider.directive.ts","../../../projects/hviktor/src/forms/form/form.directive.ts","../../../projects/hviktor/src/forms/error-summary/error-summary.component.ts","../../../projects/hviktor/src/helpers/field-observer.ts","../../../projects/hviktor/src/forms/field/field-affix.component.ts","../../../projects/hviktor/src/forms/field/field-affixes.component.ts","../../../projects/hviktor/src/forms/field/field-description.directive.ts","../../../projects/hviktor/src/forms/field/field-optional.directive.ts","../../../projects/hviktor/src/forms/field/field-validation.directive.ts","../../../projects/hviktor/src/forms/field/field.component.ts","../../../projects/hviktor/src/forms/fieldset/fieldset.directive.ts","../../../projects/hviktor/src/forms/input/input.directive.ts","../../../projects/hviktor/src/forms/validation/control-invalid/control-invalid.directive.ts","../../../projects/hviktor/src/forms/validation/validation-message/validation-message.directive.ts","../../../projects/hviktor/src/forms/validators/validator-bundle.ts","../../../projects/hviktor/src/forms/validators/validators.ts","../../../projects/hviktor/src/forms/kits.ts","../../../projects/hviktor/src/heading/heading.directive.ts","../../../projects/hviktor/src/icon/icon.component.ts","../../../projects/hviktor/src/label/label.directive.ts","../../../projects/hviktor/src/link/link.directive.ts","../../../projects/hviktor/src/list/list.directive.ts","../../../projects/hviktor/src/paragraph/paragraph.directive.ts","../../../projects/hviktor/src/popover/popover.component.ts","../../../projects/hviktor/src/select/select.directive.ts","../../../projects/hviktor/src/skeleton/skeleton.component.ts","../../../projects/hviktor/src/tag/tag.component.ts","../../../projects/hviktor/src/public-api.ts","../../../projects/hviktor/src/helsevestikt-hviktor-angular.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\n\n/**\n * Alert provides users with information that is especially important for them to see and understand.\n * The component is designed to capture users' attention.\n * The text in the alert should be short and clear.\n *\n * @example\n * ```html\n * <hvi-alert color=\"warning\">\n * Dette er et advarselsvarsel!\n * </hvi-alert>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/alert/code/\n */\n@Component({\n selector: 'hvi-alert',\n standalone: true,\n template: `<ng-content />`,\n host: {\n class: 'ds-alert',\n '[attr.data-color]': 'color',\n },\n})\nexport class HviAlert {\n /** Sets the type of alert by changing the color and */\n @Input() color?: 'info' | 'success' | 'warning' | 'danger';\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Avatar displays an image, initials, or icon for a person, entity, or profile.\n *\n * @example\n * ```html\n * <hvi-avatar\n * ariaLabel=\"Ola Nordmann\"\n * variant=\"circle\"\n * initials=\"ON\"\n * size=\"md\"\n * color=\"brand1\">\n * </hvi-avatar>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/avatar/code/\n */\n@Component({\n selector: 'hvi-avatar',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-avatar',\n role: 'img',\n '[attr.aria-label]': 'ariaLabel ?? null',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-initials]': 'initials ?? null',\n '[attr.data-size]': 'size ?? null',\n '[attr.data-color]': 'color ?? null',\n },\n})\nexport class HviAvatar {\n /** The name of the person the avatar represents */\n @Input() ariaLabel?: string;\n\n /** The shape of the avatar */\n @Input() variant?: 'circle' | 'square';\n\n /** Initials displayed inside the avatar */\n @Input() initials?: string;\n\n /** The size of the avatar */\n @Input() size?: 'xs' | 'sm' | 'md' | 'lg';\n\n /** The color theme of the avatar */\n @Input() color?: 'accent' | 'brand1' | 'brand2' | 'brand3' | 'neutral' | 'danger';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hvi-badge-position',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-badge--position',\n '[attr.data-overlap]': 'overlap',\n '[attr.data-placement]': 'placement',\n },\n})\nexport class HviBadgePosition {\n /** Overlap of the badge */\n @Input() overlap: 'rectangle' | 'circle' = 'rectangle';\n\n /** Placement of the badge */\n @Input() placement: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' = 'top-right';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hvi-badge',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-badge',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-count]': 'count ?? null',\n '[attr.data-color]': 'color ?? null',\n },\n})\nexport class HviBadge {\n /** The variants of the badge */\n @Input() variant?: 'base' | 'tinted';\n\n /** count text of the badge*/\n @Input() count?: string;\n\n /** The color theme of the badge */\n @Input() color?:\n | 'neutral'\n | 'danger'\n | 'warning'\n | 'info'\n | 'success'\n | 'accent'\n | 'brand1'\n | 'brand2'\n | 'brand3';\n}\n","import { Component, Input } from '@angular/core';\n\nexport interface BreadcrumbItem {\n label: string;\n href: string;\n ariaLabel?: string;\n}\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <nav hviBreadcrumbs\n * ariaLabel=\"Du er her:\"\n * [backLink]=\"{\n * label: 'Nivå 3',\n * href: '#',\n * ariaLabel: 'Tilbake til Nivå 3'\n * }\"\n * [items]=\"[\n * { label: 'Nivå 1', href: '#' },\n * { label: 'Nivå 2', href: '#' },\n * { label: 'Nivå 3', href: '#' },\n * { label: 'Nivå 4', href: '#' }\n * ]\"\n * ></nav>\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/breadcrumbs/overview\n */\n\n@Component({\n selector: 'nav[hviBreadcrumbs]',\n standalone: true,\n template: `\n <!-- Back link (optional) -->\n @if (backLink) {\n <a class=\"ds-link\" [href]=\"backLink.href\" [attr.aria-label]=\"backLink.ariaLabel ?? null\">\n {{ backLink.label }}\n </a>\n }\n\n <ol>\n @for (item of items; let last = $last; track item) {\n <li>\n <a\n class=\"ds-link\"\n [href]=\"item.href\"\n [attr.aria-label]=\"item.ariaLabel ?? null\"\n [attr.aria-current]=\"last ? 'page' : null\"\n >\n {{ item.label }}\n </a>\n </li>\n }\n </ol>\n `,\n host: {\n class: 'ds-breadcrumbs',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel ?? null',\n },\n})\nexport class HviBreadcrumbs {\n /** Accessible label for the breadcrumb navigation */\n @Input() ariaLabel = 'Du er her:';\n\n /** Optional back link object */\n @Input() backLink?: {\n label: string;\n href: string;\n ariaLabel?: string;\n };\n\n /** Array of breadcrumb items */\n @Input() items: BreadcrumbItem[] = [];\n}\n","import { booleanAttribute, Directive, Input } from '@angular/core';\n\n/**\n * @summary\n * Button allows users to perform actions.\n *\n * @example\n * ```html\n * <button hviButton color=\"brand1\" variant=\"primary\" size=\"md\">\n * Click me\n * </button>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/button/code/\n */\n@Directive({\n selector: 'button[hviButton], a[hviButton]',\n standalone: true,\n host: {\n class: 'ds-button',\n '[attr.type]': 'type',\n '[attr.data-size]': 'size',\n '[attr.data-variant]': 'variant',\n '[attr.data-color]': 'color',\n '[attr.data-fullwidth]': 'fullWidth ? \"\" : null',\n '[attr.data-icon]': 'icon ? \"\" : null',\n '[attr.aria-busy]': 'loading ? \"true\" : null',\n },\n})\nexport class HviButton {\n /** The size of the button */\n @Input() size?: 'sm' | 'md' | 'lg';\n\n /** Used to change the appearance of the button. */\n @Input() variant?: 'primary' | 'secondary' | 'tertiary';\n\n /** The type of button */\n @Input() type?: 'button' | 'submit' | 'reset';\n\n /** The color of the button */\n @Input() color?: 'accent' | 'brand1' | 'brand2' | 'brand3' | 'neutral' | 'danger';\n\n /** If you have only an icon in the button, you can set icon=\"true\" to make it square.\n * If you have other content, such as text, the button will automatically have space around the icon.\n */\n @Input({ transform: booleanAttribute }) icon = false;\n\n /** Sets the button in a loading state.\n * Loading indicators such as spinners must be added manually, e.g., with hvi-spinner\n */\n @Input({ transform: booleanAttribute }) loading = false;\n\n /** Makes the button full width */\n @Input({ transform: booleanAttribute }) fullWidth = false;\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Use multiple <div hviCardBlock> elements if you want to divide the card with separators or add images or video that extend to the edge.\n * Note that when you use <div hviCardBlock>, all content must be placed inside a <div hviCardBlock> and not directly in the Card.\n *\n * @example\n * ```html\n * <hvi-card variant=\"tinted\" color=\"brand1\" maxWidth=\"400px\">\n * <div hviCardBlock>\n * <h2>This is a card</h2>\n * <p>The content of the card goes here.</p>\n * </div>\n * </hvi-card>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/card/code#with-sections\n */\n@Directive({\n selector: '[hviCardBlock]',\n standalone: true,\n host: { class: 'ds-card__block' },\n})\nexport class HviCardBlock {}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Card highlight information or tasks that are related.\n * The component comes in two variants and can contain text, images, text fields, buttons, and links.\n *\n * @example\n * ```html\n * <hvi-card variant=\"tinted\" color=\"brand1\" maxWidth=\"400px\">\n * <h2>This is a card</h2>\n * <p>The content of the card goes here.</p>\n * </hvi-card>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/card/overview\n */\n@Component({\n selector: 'hvi-card',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-card',\n '[attr.data-variant]': 'variant',\n '[attr.data-color]': 'color',\n '[style.max-width]': 'maxWidth',\n },\n})\nexport class HviCard {\n /** Sets the background of the card */\n @Input() variant?: 'default' | 'tinted';\n\n /** The color theme of the card */\n @Input() color?: 'accent' | 'brand1' | 'brand2' | 'brand3' | 'neutral';\n\n /** Maximum width of the card, for example '320px' or '20rem' */\n @Input() maxWidth?: string;\n}\n","import { booleanAttribute, Directive, Input } from '@angular/core';\n\n@Directive({\n selector: 'button[hviChip]',\n standalone: true,\n host: {\n class: 'ds-chip',\n '[attr.data-removable]': 'removable ? \"true\" : null',\n },\n})\nexport class HviChipButton {\n /** Whether the chip is removable*/\n @Input({ transform: booleanAttribute }) removable = false;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'label[hviChip]',\n standalone: true,\n host: {\n class: 'ds-chip',\n },\n})\nexport class HviChipLabel {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'hvi-details-content',\n template: `<ng-content />`,\n})\nexport class HviDetailsContent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'hvi-details-summary',\n template: `<ng-content />`,\n})\nexport class HviDetailsSummary {}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport '@u-elements/u-details';\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <hvi-details>\n * <hvi-details-summary>\n * <p size=\"md\">Detaljer</p>\n * </hvi-details-summary>\n * <hvi-details-content>\n * <p>Her er innholdet i detaljene.</p>\n * </hvi-details-content>\n * </hvi-details>\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/details/overview\n */\n\n@Component({\n selector: 'hvi-details',\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n standalone: true,\n template: ` <u-details\n #detailsRef\n class=\"ds-details\"\n [attr.data-variant]=\"variant\"\n [attr.defaultOpen]=\"defaultOpen || undefined\"\n [attr.open]=\"open || undefined\"\n (toggle)=\"onToggle($event)\"\n >\n <u-summary>\n <ng-content select=\"hvi-details-summary\" />\n </u-summary>\n <div>\n <ng-content select=\"hvi-details-content\" />\n </div>\n </u-details>`,\n host: {},\n})\nexport class HviDetails {\n /** Variant of the details component */\n @Input() variant: 'default' | 'tinted' = 'default';\n\n /** Control open state of the details component */\n @Input() open: true | false = false;\n\n /** Set default open state of the details component */\n @Input() defaultOpen: true | false = false;\n\n /** Event handler for toggle event */\n @Input() onToggle: (event: Event) => void = () => {};\n\n handleToggle(event: Event) {\n console.log('Toggled!', event);\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviDialogBlock]',\n standalone: true,\n host: {\n class: 'ds-dialog__block',\n },\n})\nexport class HviDialogBlock {}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n Output,\n} from '@angular/core';\n\n/**\n * @summary\n * Dialog allows you to create both modal and non-modal dialogs based on the HTML dialog element.\n * You have to connect the <dialog> element to a trigger yourself, and handle opening and closing the dialog with JavaScript.\n *\n * @example\n * HTML:\n * ```html\n * <dialog hviDialog [id]=\"exampleDialog\" [open]=\"dialogOpen()\" (openChange)=\"toggleDialog($event)\">\n * <h3 hviHeading size=\"md\">Example dialog</h3>\n * <p hviParagraph>This is an example of a dialog component.</p>\n * <button hviButton variant=\"primary\" (click)=\"closeDialog()\">Close dialog</button>\n * </dialog>\n * ```\n *\n * TypeScript:\n * ```ts\n * export class DialogExampleComponent {\n * readonly dialogOpen = signal(false);\n * toggleDialog(nextState?: boolean): void {\n * if (typeof nextState === 'boolean') {\n * this.dialogOpen.set(nextState);\n * return;\n * }\n * this.dialogOpen.update((current) => !current);\n * }\n * }\n *\n * Documentation: https://designsystemet.no/en/components/docs/dialog/code/\n */\n@Directive({\n selector: 'dialog[hviDialog]',\n standalone: true,\n host: {\n class: 'ds-dialog',\n id: '{{ id }}',\n },\n})\nexport class HviDialog {\n @Input() id?: string;\n @Input()\n set open(value: boolean) {\n this.setOpen(Boolean(value));\n }\n\n get open(): boolean {\n return this.element.open;\n }\n\n @Input() modal = true;\n\n @Output() readonly openChange = new EventEmitter<boolean>();\n\n private readonly element = inject(ElementRef<HTMLDialogElement>).nativeElement;\n\n openModal(): void {\n this.setOpen(true);\n }\n\n close(): void {\n this.setOpen(false);\n }\n\n @HostListener('close')\n handleClose(): void {\n this.openChange.emit(false);\n }\n\n @HostListener('cancel', ['$event'])\n handleCancel(event: Event): void {\n event.preventDefault();\n this.setOpen(false);\n }\n\n private setOpen(shouldOpen: boolean): void {\n if (shouldOpen) {\n if (this.element.open) {\n return;\n }\n\n if (this.modal) {\n this.element.showModal();\n } else {\n this.element.show();\n }\n\n this.openChange.emit(true);\n return;\n }\n\n if (!this.element.open) {\n return;\n }\n\n this.element.close();\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <hr hviDivider />\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/divider/overview\n */\n\n@Directive({\n selector: 'hr[hviDivider]',\n standalone: true,\n host: {\n class: 'ds-divider',\n 'aria-hidden': 'true',\n },\n})\nexport class HviDivider {}\n","import { Directive, EventEmitter, HostListener, inject, Input, Output } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\n\n/**\n * @summary\n * Adds submit handling for Angular reactive forms:\n * - Tracks submitted state\n * - Marks all controls as touched on submit\n * - Optionally focuses an ErrorSummary when invalid\n *\n * @example\n * ```html\n * <[hviForm]></[hviForm]>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/form/code\n */\n\n@Directive({\n selector: 'form[hviForm]',\n standalone: true,\n})\nexport class HviForm {\n /** Emits when the form has been submitted */\n @Output() hviSubmitted = new EventEmitter<void>();\n\n /** True after first submit attempt */\n submitted = false;\n\n /** Optional focus target (e.g. HviErrorSummaryComponent) */\n @Input() focusOnInvalid?: { focus?: () => void } | null;\n\n // Optional injection: present when the form uses [formGroup] and ReactiveFormsModule is in scope\n private readonly formGroupDir = inject(FormGroupDirective, { optional: true });\n\n @HostListener('submit', ['$event'])\n onSubmit(event: Event): void {\n this.submitted = true;\n this.hviSubmitted.emit();\n\n const form = this.formGroupDir?.form;\n if (!form) return;\n\n form.markAllAsTouched();\n\n if (form.invalid) {\n event.preventDefault();\n queueMicrotask(() => this.focusOnInvalid?.focus?.());\n }\n }\n}\n","import { Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { HviForm } from '../form/form.directive';\nimport type { HviValidationMessages } from '../validation/validation-message';\n\n/**\n * Item model used by manual error summaries. Provide `message` and `href` for each invalid field.\n */\nexport type HviErrorSummaryItem = {\n /** Text shown in the list */\n message: string;\n /** Link target (should be \"#<field-id>\") */\n href: string;\n};\n\nexport type HviErrorSummaryMessages = Record<string, HviValidationMessages>;\n\nconst DEFAULT_ERROR_PRIORITY = [\n 'required',\n 'minlength',\n 'maxlength',\n 'email',\n 'pattern',\n 'min',\n 'max',\n] as const;\n\nlet errorSummaryIdCounter = 0;\nconst nextErrorSummaryHeadingId = () => `hvi-error-summary-heading-${++errorSummaryIdCounter}`;\n\n/**\n * @summary\n * ErrorSummary lists blocking validation errors so users can quickly find and fix them.\n *\n * @remarks\n * Modes:\n * - Manual: provide `[errors]` as `{ message, href }[]`.\n * - Auto (recommended): provide `[form]` + `[messages]` (and optionally `[idMap]`) to derive errors from invalid\n * controls in a reactive form.\n *\n * Auto mode should be rendered inside `<form hviForm ...>` so it can follow submit visibility (`showWhen`) and\n * be focused automatically via `[focusOnInvalid]`.\n *\n * Each item link must point to a field id (e.g. `href=\"#firstName\"`). Prefer `id === formControlName`.\n *\n * @example\n * Manual mode:\n * ```html\n * <hvi-error-summary\n * [errors]=\"[\n * { message: 'Fornavn må være minst 2 tegn', href: '#firstName' },\n * { message: 'Telefonnummer kan kun inneholde siffer', href: '#phone' }\n * ]\"\n * />\n * ```\n *\n * @example\n * Auto mode (HTML + TS):\n *\n * ```html\n * HTML:\n * <form hviForm [formGroup]=\"form\" [focusOnInvalid]=\"summary\">\n * <hvi-error-summary #summary [form]=\"form\" [messages]=\"messages\" showWhen=\"submitted\" />\n *\n * <hvi-field>\n * <label hviLabel for=\"firstName\" weight=\"medium\">Fornavn</label>\n * <input hviInput id=\"firstName\" formControlName=\"firstName\" hviControlInvalid />\n * <p hviFieldValidation hviValidationMessage=\"firstName\" [messages]=\"messages.firstName\"></p>\n * </hvi-field>\n *\n * <hvi-field>\n * <label hviLabel for=\"phone\" weight=\"medium\">Telefon</label>\n * <input hviInput id=\"phone\" type=\"tel\" formControlName=\"phone\" hviControlInvalid />\n * <p hviFieldValidation hviValidationMessage=\"phone\" [messages]=\"messages.phone\"></p>\n * </hvi-field>\n *\n * <button hviButton type=\"submit\" variant=\"primary\">Send inn</button>\n * </form>\n * ```\n *\n * ```ts\n * TS:\n * form = new FormGroup({\n * firstName: new FormControl('', [Validators.required, Validators.minLength(2)]),\n * phone: new FormControl('', [Validators.required, Validators.pattern(/^\\d+$/)]),\n * });\n *\n * messages = {\n * firstName: { required: 'Fornavn er påkrevd', minlength: 'Fornavn må være minst 2 tegn' },\n * phone: { required: 'Telefon er påkrevd', pattern: 'Telefonnummer kan kun inneholde siffer' },\n * } as const;\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/error-summary/code\n */\n@Component({\n selector: 'hvi-error-summary',\n standalone: true,\n template: `\n <div\n #container\n class=\"ds-error-summary\"\n tabindex=\"-1\"\n [attr.aria-labelledby]=\"headingId\"\n [hidden]=\"!shouldShow\"\n >\n @switch (headingLevel) {\n @case (1) {\n <h1 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h1>\n }\n @case (2) {\n <h2 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h2>\n }\n @case (3) {\n <h3 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h3>\n }\n @case (4) {\n <h4 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h4>\n }\n @case (5) {\n <h5 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h5>\n }\n @default {\n <h6 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h6>\n }\n }\n\n <ul class=\"ds-list\">\n @for (err of computedErrors; track err.href) {\n <li>\n <a\n class=\"ds-link\"\n data-color=\"neutral\"\n [href]=\"err.href\"\n (click)=\"onLinkClick($event, err.href)\"\n >{{ err.message }}</a\n >\n </li>\n }\n </ul>\n </div>\n `,\n})\nexport class HviErrorSummary {\n /** Heading text shown above the list */\n @Input() heading = 'For å gå videre må du rette opp følgende feil:';\n\n /** Heading level for the heading element (1-6). Defaults to 2 per DS */\n @Input() headingLevel: 1 | 2 | 3 | 4 | 5 | 6 = 2;\n\n /**\n * Manual mode: items displayed in the summary.\n * If non-empty, manual mode takes precedence over auto mode.\n */\n @Input() errors: HviErrorSummaryItem[] = [];\n\n /** Auto mode: reactive form to derive errors from */\n @Input() form?: FormGroup;\n\n /**\n * Auto mode: messages per controlName.\n * Example:\n * {\n * firstName: { required: 'Fornavn er påkrevd', minlength: 'Fornavn må være minst 2 tegn' },\n * phone: { required: 'Telefon er påkrevd', pattern: 'Telefonnummer kan kun inneholde siffer' }\n * }\n */\n @Input() messages?: HviErrorSummaryMessages;\n\n /**\n * Auto mode: map controlName -> element id.\n * Default is `id === controlName`.\n */\n @Input() idMap?: Record<string, string>;\n\n /** Auto mode: error key priority (first match wins) */\n @Input() errorPriority: readonly string[] = DEFAULT_ERROR_PRIORITY;\n\n /** Used for aria-labelledby on the container */\n @Input() headingId = nextErrorSummaryHeadingId();\n\n /** When to show errors from the form controls */\n @Input() showWhen: 'submitted' | 'touched' | 'always' = 'submitted';\n\n @ViewChild('container', { static: true }) private container?: ElementRef<HTMLElement>;\n\n focus(): void {\n this.container?.nativeElement.focus();\n }\n\n /**\n * Handles click on error links to prevent Angular Router navigation\n * and instead focus/scroll to the target element.\n */\n onLinkClick(event: MouseEvent, href: string): void {\n event.preventDefault();\n\n const id = href.startsWith('#') ? href.slice(1) : href;\n const target = document.getElementById(id);\n\n if (target) {\n target.focus();\n target.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }\n\n get computedErrors(): HviErrorSummaryItem[] {\n // 1) Manual mode wins\n if (this.errors?.length) return this.errors;\n\n // 2) Auto mode\n const form = this.form;\n const messages = this.messages;\n if (!form || !messages) return [];\n\n const items: HviErrorSummaryItem[] = [];\n\n for (const controlName of Object.keys(form.controls)) {\n const ctrl = form.controls[controlName];\n if (!ctrl?.invalid) continue;\n\n const errs = ctrl.errors ?? {};\n const msgMap = messages[controlName] ?? {};\n\n const message = this.pickMessage(errs, msgMap);\n if (!message) continue;\n\n const id = this.idMap?.[controlName] ?? controlName;\n items.push({ message, href: `#${id}` });\n }\n\n return items;\n }\n\n private pickMessage(errors: Record<string, unknown>, messages: HviValidationMessages): string {\n for (const key of this.errorPriority) {\n if (errors[key] && messages[key]) return messages[key]!;\n }\n for (const key of Object.keys(errors)) {\n if (messages[key]) return messages[key]!;\n }\n return Object.keys(errors).length ? 'Ugyldig verdi' : '';\n }\n\n private readonly hviForm = inject(HviForm, { optional: true });\n\n get shouldShow(): boolean {\n if (this.computedErrors.length === 0) return false;\n\n switch (this.showWhen) {\n case 'always':\n return true;\n\n case 'touched':\n // show when any invalid control is touched OR the form has been submitted\n return (this.hviForm?.submitted ?? false) || this.anyInvalidTouched();\n\n case 'submitted':\n default:\n return this.hviForm?.submitted ?? false;\n }\n }\n\n private anyInvalidTouched(): boolean {\n const form = this.form;\n if (!form) return false;\n\n for (const name of Object.keys(form.controls)) {\n const c = form.controls[name];\n if (c?.invalid && c.touched) return true;\n }\n return false;\n }\n}\n","// Copied from https://github.com/digdir/designsystemet/blob/main/packages/react/src/components/field/field-observer.ts\n\nexport function fieldObserver(fieldElement: HTMLElement | null) {\n if (!fieldElement) return;\n\n const elements = new Map<Element, string | null>();\n const typeCounter = new Map<string, number>(); // Track count for each data-field type\n const uuid = `:${Date.now().toString(36)}${Math.random().toString(36).slice(2, 5)}`;\n let input: Element | null = null;\n let describedby = '';\n\n const process = (mutations: Partial<MutationRecord>[]) => {\n const changed: Node[] = [];\n const removed: Node[] = [];\n\n // Merge MutationRecords\n for (const mutation of mutations) {\n if (mutation.attributeName) changed.push(mutation.target ?? fieldElement);\n changed.push(...(mutation.addedNodes || []));\n removed.push(...(mutation.removedNodes || []));\n }\n\n // Register elements\n for (const el of changed) {\n if (!isElement(el)) continue;\n\n if (isLabel(el)) elements.set(el, el.htmlFor);\n else if (el.hasAttribute('data-field')) elements.set(el, el.id);\n else if (isInputLike(el) && !el.hidden) {\n input = el;\n describedby = el.getAttribute('aria-describedby') || '';\n }\n }\n\n // Reset removed elements\n for (const el of removed) {\n if (!isElement(el)) continue;\n\n if (input === el) input = null;\n if (elements.has(el)) {\n setAttr(el, isLabel(el) ? 'for' : 'id', elements.get(el));\n elements.delete(el);\n }\n }\n\n // Connect elements\n const describedbyIds = describedby ? describedby.split(' ') : []; // Keep original aria-describedby\n const inputId = input?.id || uuid;\n\n // Reset type counters since we reprocess all elements\n typeCounter.clear();\n\n for (const [el, value] of elements) {\n const descriptionType = el.getAttribute('data-field');\n let id: string;\n\n if (descriptionType) {\n // Increment type counter for this type\n const count = (typeCounter.get(descriptionType) || 0) + 1;\n typeCounter.set(descriptionType, count);\n id = `${inputId}:${descriptionType}:${count}`;\n } else {\n id = inputId;\n }\n\n if (!value) setAttr(el, isLabel(el) ? 'for' : 'id', id); // Ensure we have a value\n if (!describedbyIds.includes(el.id)) {\n if (descriptionType === 'validation')\n describedbyIds.unshift(el.id); // Validations to the front\n else if (descriptionType) describedbyIds.push(el.id); // Other descriptions to the back\n }\n }\n\n // Prune aria-describedby so it does not reference removed elements\n const prunedDescribedbyIds = describedbyIds.filter((id) => {\n if (!id) return false;\n if (id === inputId) return true;\n\n // Keep if it still exists anywhere in the document.\n // This preserves \"original aria-describedby\" entries that live outside the field subtree.\n return !!fieldElement.ownerDocument?.getElementById(id);\n });\n\n setAttr(input, 'id', inputId);\n setAttr(input, 'aria-describedby', prunedDescribedbyIds.join(' ').trim());\n };\n\n const observer = createOptimizedMutationObserver(process);\n observer.observe(fieldElement, {\n attributeFilter: ['id', 'for', 'aria-describedby'],\n attributes: true,\n childList: true,\n subtree: true,\n });\n\n process([{ addedNodes: fieldElement.querySelectorAll('*') }]); // Initial setup\n observer.takeRecords(); // Clear initial setup queue\n return () => observer.disconnect();\n}\n\n// Utilities\nexport const isElement = (node: Node) => node instanceof Element;\nexport const isLabel = (node: Node) => node instanceof HTMLLabelElement;\nexport const isInputLike = (node: unknown): node is HTMLInputElement =>\n node instanceof HTMLElement && 'validity' in node && !(node instanceof HTMLButtonElement); // Matches input, textarea, select and form accosiated custom elements\n\nconst setAttr = (el: Element | null, name: string, value?: string | null) =>\n value ? el?.setAttribute(name, value) : el?.removeAttribute(name);\n\n// Speed up MutationObserver by debouncing, clearing internal queue after changes and only running when page is visible\nfunction createOptimizedMutationObserver(callback: MutationCallback) {\n const queue: MutationRecord[] = [];\n const observer = new MutationObserver((mutations) => {\n if (!queue.length) requestAnimationFrame(process);\n queue.push(...mutations);\n });\n\n const process = () => {\n callback(queue, observer);\n queue.length = 0; // Reset queue\n observer.takeRecords(); // Clear queue due to DOM changes in callback\n };\n\n return observer;\n}\n","import { Component } from '@angular/core';\n\n/**\n * Decorative affix container displayed alongside a text input.\n *\n * @remarks\n * Used together with the `hvi-field-affixes` component to wrap leading and trailing adornments.\n *\n * @example\n * ```html\n * <hvi-field-affixes>\n * <hvi-field-affix>NOK</hvi-field-affix>\n * <input hviInput type=\"text\" placeholder=\"Amount\" />\n * <hvi-field-affix>per month</hvi-field-affix>\n * </hvi-field-affixes>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/code#prefixsuffix\n */\n@Component({\n selector: 'hvi-field-affix',\n template: `<ng-content />`,\n host: {\n class: 'ds-field-affix',\n '[aria-hidden]': 'true',\n },\n})\nexport class HviFieldAffix {}\n","import { Component } from '@angular/core';\n\n/**\n * Container for decorative affixes displayed alongside a text input.\n *\n * @remarks\n * Wraps leading and trailing adornments provided by `hvi-field-affix` components.\n *\n * @example\n * ```html\n * <hvi-field-affixes>\n * <hvi-field-affix>NOK</hvi-field-affix>\n * <input hviInput type=\"text\" placeholder=\"Amount\" />\n * <hvi-field-affix>per month</hvi-field-affix>\n * </hvi-field-affixes>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/code#prefixsuffix\n */\n@Component({\n selector: 'hvi-field-affixes',\n template: `<ng-content />`,\n host: {\n class: 'ds-field-affixes',\n },\n})\nexport class HviFieldAffixes {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviFieldDescription]',\n standalone: true,\n host: {\n 'data-field': 'description',\n },\n})\nexport class HviFieldDescription {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviFieldOptional]',\n standalone: true,\n host: {\n 'data-field': 'optional',\n },\n})\nexport class HviFieldOptional {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviFieldValidation]',\n standalone: true,\n host: {\n class: 'ds-validation-message',\n 'data-field': 'validation',\n },\n})\nexport class HviFieldValidation {}\n","import { AfterViewInit, Component, DestroyRef, ElementRef, inject, Input } from '@angular/core';\nimport { fieldObserver } from '../../helpers/field-observer';\n\n/**\n * Field is a helper component to automatically associate a field with hviLabel, hviFieldDescription and hviFieldValidation.\n *\n * @example\n * ```html\n * <hvi-field>\n * <label hviLabel>Name</label>\n * <span hviFieldDescription>Fill in your full name.</span>\n * <input type=\"text\" />\n * <span hviFieldValidation>This field is required.</span>\n * </hvi-field>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/overview\n */\n@Component({\n selector: 'hvi-field',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-field',\n '[attr.data-position]': 'position ?? null',\n },\n})\nexport class HviField implements AfterViewInit {\n /** Position of toggle inputs (radio, checkbox, switch) in field */\n @Input() position?: 'start' | 'end';\n\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n\n ngAfterViewInit(): void {\n const stop = fieldObserver(this.el.nativeElement);\n this.destroyRef.onDestroy(() => stop?.());\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Fieldset is used to group and label fields that naturally belong together, such as date fields or address fields.\n * The component helps organize information, make forms more manageable, and improve accessibility for screen readers.\n *\n * @example\n * ```html\n * <fieldset hviFieldset>\n * <legend hviLabel>Which framework do you like best?</legend>\n * <p hviParagraph>Your choice will help us improve the service.</p>\n * <hvi-field>\n * <input type=\"radio\" id=\"angular\" name=\"framework\" value=\"angular\" />\n * <label hviLabel for=\"angular\">Angular</label>\n * </hvi-field>\n * <hvi-field>\n * <input type=\"radio\" id=\"react\" name=\"framework\" value=\"react\" />\n * <label hviLabel for=\"react\">React</label>\n * </hvi-field>\n * <hvi-field>\n * <input type=\"radio\" id=\"vue\" name=\"framework\" value=\"vue\" />\n * <label hviLabel for=\"vue\">Vue</label>\n * </hvi-field>\n * </fieldset>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/fieldset/overview\n */\n@Directive({\n selector: 'fieldset[hviFieldset]',\n standalone: true,\n host: {\n class: 'ds-fieldset',\n },\n})\nexport class HviFieldset {}\n","import { booleanAttribute, Directive, HostListener, Input } from '@angular/core';\n\ntype HviAriaRole = 'switch' | 'button' | 'checkbox' | 'radio' | 'textbox' | 'searchbox' | string;\n\n@Directive({\n selector: 'input[hviInput]',\n standalone: true,\n host: {\n class: 'ds-input',\n '[attr.type]': 'type ?? null',\n '[attr.size]': 'size ?? null',\n '[attr.disabled]': '_disabled ? \"\" : null',\n '[attr.readonly]': '_readOnly ? \"\" : null',\n '[attr.role]': 'role ?? null',\n },\n})\nexport class HviInput {\n /** Supported input types */\n @Input() type?:\n | 'number'\n | 'hidden'\n | 'color'\n | 'checkbox'\n | 'date'\n | 'datetime-local'\n | 'email'\n | 'file'\n | 'month'\n | 'password'\n | 'radio'\n | 'search'\n | 'tel'\n | 'text'\n | 'time'\n | 'url'\n | 'week';\n\n /** Set size attribute on input element */\n @Input() size?: number;\n\n /** Set role, e.g. `switch` when `checkbox` or `radio` */\n @Input() role?: HviAriaRole;\n\n protected _disabled = false;\n protected _readOnly = false;\n\n @Input({ transform: booleanAttribute })\n set disabled(value: boolean) {\n this._disabled = value;\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input({ transform: booleanAttribute })\n set readOnly(value: boolean) {\n this._readOnly = value;\n }\n get readOnly(): boolean {\n return this._readOnly;\n }\n\n @Input({ transform: booleanAttribute })\n set readonly(value: boolean) {\n this._readOnly = value;\n }\n\n private get isToggle(): boolean {\n return this.type === 'checkbox' || this.type === 'radio';\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (this._readOnly && this.isToggle) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (this._readOnly && this.isToggle) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (!this._readOnly || !this.isToggle) return;\n\n if (event.key === ' ' || event.key === 'Spacebar' || event.key === 'Enter') {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { Directive, HostBinding, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { HviForm } from '../../form';\n\n/**\n * @summary\n * Directive to set `aria-invalid` on form controls based on their validation state.\n *\n * Usage:\n * ```html\n * <input hviControlInvalid formControlName=\"email\" />\n * ```\n */\n\n@Directive({\n selector: '[hviControlInvalid]',\n standalone: true,\n})\nexport class HviControlInvalid {\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly hviForm = inject(HviForm, { optional: true });\n\n @HostBinding('attr.aria-invalid')\n get ariaInvalid(): string | null {\n const control = this.ngControl?.control;\n if (!control) return null;\n\n const submitted = this.hviForm?.submitted ?? false;\n const show = control.invalid && (control.touched || submitted);\n\n return show ? 'true' : null;\n }\n}\n","import { Directive, Input, inject } from '@angular/core';\nimport { AbstractControl, ControlContainer } from '@angular/forms';\nimport { HviForm } from '../../form';\n\nexport type HviValidationMessages = Partial<Record<string, string>>;\n\nconst DEFAULT_ERROR_PRIORITY = [\n 'required',\n 'minlength',\n 'maxlength',\n 'email',\n 'pattern',\n 'min',\n 'max',\n] as const;\n\n@Directive({\n selector: '[hviValidationMessage]',\n standalone: true,\n host: {\n // Sett tekstinnhold direkte på elementet (typisk <p hviFieldValidation ...>)\n '[textContent]': 'message',\n // Skjul elementet når det ikke er noen feilmelding\n '[hidden]': '!message',\n },\n})\nexport class HviValidationMessage {\n /**\n * Control name in the nearest parent FormGroup (matches formControlName).\n * Example: hviValidationMessage=\"firstName\"\n */\n @Input('hviValidationMessage') controlName!: string;\n\n /**\n * Map errorKey -> message, e.g. { required: 'Påkrevd', minlength: 'Minst 2 tegn' }\n */\n @Input() messages: HviValidationMessages = {};\n\n /**\n * Optional error priority order. Defaults to a sensible order.\n */\n @Input() errorPriority: readonly string[] = DEFAULT_ERROR_PRIORITY;\n\n private readonly container = inject(ControlContainer, { optional: true });\n private readonly hviForm = inject(HviForm, { optional: true });\n\n private get control(): AbstractControl | null {\n const group = this.container?.control;\n if (!group || !this.controlName) return null;\n return group.get(this.controlName);\n }\n\n get message(): string {\n const ctrl = this.control;\n if (!ctrl) return '';\n\n const submitted = this.hviForm?.submitted ?? false;\n const show = ctrl.invalid && (ctrl.touched || submitted);\n if (!show) return '';\n\n const errors = ctrl.errors ?? {};\n\n // 1) Prioritized keys first\n for (const key of this.errorPriority) {\n if (errors[key] && this.messages[key]) return this.messages[key]!;\n }\n\n // 2) Any remaining mapped key\n for (const key of Object.keys(errors)) {\n if (this.messages[key]) return this.messages[key]!;\n }\n\n return 'Ugyldig verdi';\n }\n}\n","import { ValidatorFn } from '@angular/forms';\nimport type { HviValidationMessages } from '../validation';\n\n/**\n * A bundle that pairs a validator function with its error key and message.\n * This enables defining validation rules and messages in one place.\n */\nexport interface HviValidatorBundle {\n /** The Angular validator function */\n validator: ValidatorFn;\n /** The error key (e.g., 'required', 'minlength') */\n key: string;\n /** The user-facing error message */\n message: string;\n}\n\n/**\n * Result of processing validator bundles - ready to use with FormControl and hviValidationMessage.\n */\nexport interface HviValidatorConfig {\n /** Array of validator functions to pass to FormControl */\n validators: ValidatorFn[];\n /** Messages object to pass to hviValidationMessage */\n messages: HviValidationMessages;\n}\n\n/**\n * Extracts validators and messages from an array of validator bundles.\n *\n * @example\n * ```ts\n * const config = hviValidators([\n * hviRequired('Fornavn er påkrevd'),\n * hviMinLength(2, 'Fornavn må være minst 2 tegn'),\n * ]);\n *\n * form = new FormGroup({\n * firstName: new FormControl('', config.validators),\n * });\n *\n * // In template: [messages]=\"config.messages\"\n * ```\n */\nexport function hviValidators(bundles: HviValidatorBundle[]): HviValidatorConfig {\n return {\n validators: bundles.map((b) => b.validator),\n messages: bundles.reduce(\n (acc, b) => ({ ...acc, [b.key]: b.message }),\n {} as HviValidationMessages,\n ),\n };\n}\n\n/**\n * Extracts only the validator functions from bundles.\n * Useful when you need just the validators for a FormControl.\n */\nexport function hviExtractValidators(bundles: HviValidatorBundle[]): ValidatorFn[] {\n return bundles.map((b) => b.validator);\n}\n\n/**\n * Extracts only the messages from bundles.\n * Useful when you need just the messages object.\n */\nexport function hviExtractMessages(bundles: HviValidatorBundle[]): HviValidationMessages {\n return bundles.reduce((acc, b) => ({ ...acc, [b.key]: b.message }), {} as HviValidationMessages);\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\nimport { HviValidatorBundle } from './validator-bundle';\n\n/**\n * Creates a required validator bundle.\n *\n * @example\n * ```ts\n * hviRequired('Dette feltet er påkrevd')\n * ```\n */\nexport function hviRequired(message: string): HviValidatorBundle {\n return { validator: Validators.required, key: 'required', message };\n}\n\n/**\n * Creates a requiredTrue validator bundle (for checkboxes that must be checked).\n *\n * @example\n * ```ts\n * hviRequiredTrue('Du må godta vilkårene')\n * ```\n */\nexport function hviRequiredTrue(message: string): HviValidatorBundle {\n return { validator: Validators.requiredTrue, key: 'required', message };\n}\n\n/**\n * Creates a minLength validator bundle.\n *\n * @example\n * ```ts\n * hviMinLength(2, 'Må være minst 2 tegn')\n * ```\n */\nexport function hviMinLength(length: number, message: string): HviValidatorBundle {\n return { validator: Validators.minLength(length), key: 'minlength', message };\n}\n\n/**\n * Creates a maxLength validator bundle.\n *\n * @example\n * ```ts\n * hviMaxLength(100, 'Kan ikke være mer enn 100 tegn')\n * ```\n */\nexport function hviMaxLength(length: number, message: string): HviValidatorBundle {\n return { validator: Validators.maxLength(length), key: 'maxlength', message };\n}\n\n/**\n * Creates an email validator bundle.\n *\n * @example\n * ```ts\n * hviEmail('Ugyldig e-postadresse')\n * ```\n */\nexport function hviEmail(message: string): HviValidatorBundle {\n return { validator: Validators.email, key: 'email', message };\n}\n\n/**\n * Creates a pattern validator bundle.\n *\n * @example\n * ```ts\n * hviPattern(/^\\d+$/, 'Kan kun inneholde tall')\n * ```\n */\nexport function hviPattern(pattern: string | RegExp, message: string): HviValidatorBundle {\n return { validator: Validators.pattern(pattern), key: 'pattern', message };\n}\n\n/**\n * Creates a min value validator bundle.\n *\n * @example\n * ```ts\n * hviMin(0, 'Må være minst 0')\n * ```\n */\nexport function hviMin(min: number, message: string): HviValidatorBundle {\n return { validator: Validators.min(min), key: 'min', message };\n}\n\n/**\n * Creates a max value validator bundle.\n *\n * @example\n * ```ts\n * hviMax(100, 'Kan ikke være mer enn 100')\n * ```\n */\nexport function hviMax(max: number, message: string): HviValidatorBundle {\n return { validator: Validators.max(max), key: 'max', message };\n}\n\n/**\n * Creates a custom validator bundle with a specified error key.\n * Use this for custom validators or validators not covered by the built-in functions.\n *\n * @example\n * ```ts\n * // Custom validator that checks if value matches a specific format\n * const norwegianPhoneValidator: ValidatorFn = (control) => {\n * const valid = /^(\\+47)?\\d{8}$/.test(control.value);\n * return valid ? null : { norwegianPhone: true };\n * };\n *\n * hviCustom('norwegianPhone', norwegianPhoneValidator, 'Ugyldig norsk telefonnummer')\n * ```\n */\nexport function hviCustom(\n key: string,\n validator: ValidatorFn,\n message: string,\n): HviValidatorBundle {\n return { validator, key, message };\n}\n\n/**\n * Creates a nullValidator bundle (always valid, useful for conditional validation).\n * Note: This validator always passes, so the message will never be shown.\n */\nexport function hviNullValidator(): HviValidatorBundle {\n return { validator: Validators.nullValidator, key: 'null', message: '' };\n}\n","import { ReactiveFormsModule } from '@angular/forms';\n\nimport { HviForm } from './form';\nimport { HviControlInvalid, HviValidationMessage } from './validation';\n\nimport {\n HviField,\n HviFieldAffix,\n HviFieldAffixes,\n HviFieldDescription,\n HviFieldOptional,\n HviFieldValidation,\n} from './field';\n\nimport { HviErrorSummary } from './error-summary';\nimport { HviFieldset } from './fieldset';\nimport { HviInput } from './input';\n\n// 1) Bare field-byggesteiner\nexport const HviFieldKit = [\n HviField,\n HviFieldValidation,\n HviFieldDescription,\n HviFieldOptional,\n HviFieldAffix,\n HviFieldAffixes,\n] as const;\n\n// 2) Reactive forms + invalid/validation glue + submit behavior\nexport const HviValidationKit = [\n ReactiveFormsModule,\n HviForm,\n HviControlInvalid,\n HviValidationMessage,\n] as const;\n\n// 3) “Alt du trenger for DS forms”\nexport const HviForms = [\n ...HviValidationKit,\n ...HviFieldKit,\n HviInput,\n HviFieldset,\n HviErrorSummary,\n] as const;\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Heading is used to structure content and create hierarchy on a page.\n *\n * @example\n * ```html\n * <h1 hviHeading size=\"xl\">This is a heading</h1>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/heading/overview\n */\n@Directive({\n selector:\n 'h1[hviHeading], h2[hviHeading], h3[hviHeading], h4[hviHeading], h5[hviHeading], h6[hviHeading]',\n standalone: true,\n host: {\n class: 'ds-heading',\n '[attr.data-size]': 'size',\n },\n})\nexport class HviHeading {\n /** The size of the heading */\n @Input() size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n}\n","import { HttpClient } from '@angular/common/http';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n OnChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IconColor, IconName, IconSize } from './icon.types';\n\n@Component({\n selector: 'hvi-icon',\n standalone: true,\n template: '',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'hvi-icon',\n '[attr.data-size]': 'size',\n '[attr.data-color]': 'color',\n '[attr.aria-hidden]': 'ariaHidden',\n },\n styles: [\n `\n hvi-icon {\n display: inline-block;\n }\n svg {\n display: inline-block;\n }\n\n hvi-icon[data-size='sm'] svg {\n width: 16px;\n height: 16px;\n }\n hvi-icon[data-size='md'] svg {\n width: 24px;\n height: 24px;\n }\n hvi-icon[data-size='lg'] svg {\n width: 32px;\n height: 32px;\n }\n hvi-icon[data-size='xl'] svg {\n width: 40px;\n height: 40px;\n }\n\n hvi-icon svg path {\n fill: currentColor;\n }\n hvi-icon[data-color='danger'] svg path {\n fill: var(--ds-color-danger-base-default);\n }\n `,\n ],\n})\nexport class HviIcon implements OnChanges {\n @Input({ required: true }) icon!: IconName;\n @Input() color?: IconColor;\n @Input() size: IconSize = 'md';\n @Input({ transform: booleanAttribute }) ariaHidden = false;\n\n private readonly http = inject(HttpClient);\n private readonly elementRef = inject(ElementRef);\n private readonly cdr = inject(ChangeDetectorRef);\n\n ngOnChanges(): void {\n this.loadIcon();\n }\n\n private loadIcon() {\n this.http\n .get(`/assets/icons/${this.icon}.svg`, {\n responseType: 'text',\n })\n .subscribe({\n next: (svg) => {\n this.elementRef.nativeElement.innerHTML = svg;\n this.cdr.markForCheck();\n },\n error: (err) => {\n console.error('Failed to load icon:', this.icon, err);\n },\n });\n }\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Label functions as a clear and accessible text label that tells the user what an associated form element is about.\n *\n * @example\n * ```html\n * <label hviLabel weight=\"semibold\">Name</label>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/label/overview\n */\n@Directive({\n selector: 'label[hviLabel], legend[hviLabel]',\n standalone: true,\n host: {\n class: 'ds-label',\n '[attr.data-weight]': 'weight ?? null',\n },\n})\nexport class HviLabel {\n /** The font weight of the label */\n @Input() weight?: 'regular' | 'medium' | 'semibold';\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <a hviLink />\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/input/overview\n */\n\n@Directive({\n selector: 'a[hviLink]',\n standalone: true,\n host: {\n class: 'ds-link',\n '[attr.data-color]': 'color',\n },\n})\nexport class HviLink {\n /** Used to change the appearance of the link. */\n @Input() color?: 'default' | 'neutral' = 'default';\n}\n","import { Directive } from '@angular/core';\n\n/**\n * @summary\n * List directive description.\n *\n * @example\n * ```html\n * <ol hviList>\n * <li>First item</li>\n * <li>Second item</li>\n * <li>Third item</li>\n * </ol>\n *\n * <ul hviList>\n * <li>First item</li>\n * <li>Second item</li>\n * <li>Third item</li>\n * </ul>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/input/code\n */\n\n@Directive({\n selector: 'ol[hviList], ul[hviList]',\n standalone: true,\n host: {\n class: 'ds-list',\n },\n})\nexport class HviList {}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Paragraph is used for continuous text and is typically applied in articles, components, help text, and similar content.\n *\n * @example\n * ```html\n * <p hviParagraph variant=\"long\" size=\"md\">\n * This is a paragraph with body text that can be adjusted in size and variant.\n * </p>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/paragraph/overview\n */\n@Directive({\n selector: 'p[hviParagraph]',\n standalone: true,\n host: {\n class: 'ds-paragraph',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-size]': 'size ?? null',\n },\n})\nexport class HviParagraph {\n /** Adjusts the style for the length of the paragraph */\n @Input() variant?: 'long' | 'default' | 'short';\n\n /** Paragraph is available in several text sizes to suit different needs */\n @Input() size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n autoUpdate,\n computePosition,\n flip,\n offset,\n shift,\n type MiddlewareState,\n type Placement,\n} from '@floating-ui/dom';\n\nconst arrowPseudoElement = {\n name: 'ArrowPseudoElement',\n fn(data: MiddlewareState) {\n const { elements, rects, placement } = data;\n\n let arrowX = `${Math.round(rects.reference.width / 2 + rects.reference.x - data.x)}px`;\n let arrowY = `${Math.round(rects.reference.height / 2 + rects.reference.y - data.y)}px`;\n\n if (rects.reference.width > rects.floating.width) {\n arrowX = `${Math.round(rects.floating.width / 2)}px`;\n }\n\n if (rects.reference.height > rects.floating.height) {\n arrowY = `${Math.round(rects.floating.height / 2)}px`;\n }\n\n switch (placement.split('-')[0]) {\n case 'top':\n arrowY = '100%';\n break;\n case 'right':\n arrowX = '0';\n break;\n case 'bottom':\n arrowY = '0';\n break;\n case 'left':\n arrowX = '100%';\n break;\n }\n\n elements.floating.setAttribute('data-placement', placement.split('-')[0]);\n elements.floating.style.setProperty('--ds-popover-arrow-x', arrowX);\n elements.floating.style.setProperty('--ds-popover-arrow-y', arrowY);\n return data;\n },\n};\n\n/**\n * @summary\n * Popover vises over andre elementer i grensesnittet og er koblet til et spesifikt element.\n * Den brukes til å vise tilleggsinformasjon, interaktive elementer eller korte forklaringer uten å navigere bort fra siden.\n *\n * @example\n * ```html\n * <button hviButton popovertarget=\"popover1\">Open popover</button>\n * <hvi-popover id=\"popover1\"> Popover content </hvi-popover>\n * ```\n *\n * @see {@link https://designsystemet.no/en/components/docs/popover/code}\n */\n@Component({\n selector: 'hvi-popover',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-popover',\n '[attr.popover]': 'type',\n '[attr.data-variant]': 'variant',\n '[attr.data-color]': 'color',\n },\n})\nexport class HviPopover implements OnInit, OnDestroy {\n private el = inject(ElementRef<HTMLElement>);\n private cleanupAutoUpdate?: () => void;\n private boundHandleClick?: (event: MouseEvent) => void;\n private boundHandleKeydown?: (event: KeyboardEvent) => void;\n\n /** Popover type - 'manual' krever manuell lukking, 'auto' lukkes ved klikk utenfor */\n @Input() type: 'auto' | 'manual' | 'hint' = 'manual';\n\n /** Visuell variant */\n @Input() variant: 'default' | 'tinted' = 'default';\n\n /** Farge-tema */\n @Input() color: 'neutral' | 'danger' | 'info' | 'success' | 'warning' = 'neutral';\n\n /** Plassering av popover relativt til trigger */\n @Input() placement: Placement = 'top';\n\n /** Aktiver automatisk repositjonering hvis det ikke er plass */\n @Input() autoPlacement = true;\n\n /** Event når popover åpnes */\n @Output() opened = new EventEmitter<void>();\n\n /** Event når popover lukkes */\n @Output() closed = new EventEmitter<void>();\n\n private get popoverElement(): HTMLElement {\n return this.el.nativeElement;\n }\n\n private get triggerElement(): HTMLElement | null {\n const id = this.popoverElement.id;\n return id ? document.querySelector(`[popovertarget=\"${id}\"]`) : null;\n }\n\n ngOnInit() {\n this.setupEventListeners();\n }\n\n ngOnDestroy() {\n this.stopAutoUpdate();\n this.removeEventListeners();\n }\n\n private setupEventListeners() {\n const popover = this.popoverElement;\n\n // Click utenfor lukker popover\n this.boundHandleClick = (event: MouseEvent) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(`[popovertarget=\"${popover.id}\"]`);\n const isOutside = !isTrigger && !popover.contains(el as Node);\n\n if (isTrigger) {\n event.preventDefault();\n popover.togglePopover?.();\n }\n if (isOutside && popover.matches(':popover-open')) {\n popover.togglePopover?.();\n }\n };\n\n // Escape lukker popover\n this.boundHandleKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !popover.matches(':popover-open')) return;\n event.preventDefault();\n popover.togglePopover?.();\n };\n\n addEventListener('click', this.boundHandleClick);\n addEventListener('keydown', this.boundHandleKeydown);\n\n // Toggle events\n popover.addEventListener('beforetoggle', this.handleBeforeToggle);\n popover.addEventListener('toggle', this.handleToggle);\n }\n\n private removeEventListeners() {\n if (this.boundHandleClick) {\n removeEventListener('click', this.boundHandleClick);\n }\n if (this.boundHandleKeydown) {\n removeEventListener('keydown', this.boundHandleKeydown);\n }\n this.popoverElement.removeEventListener('beforetoggle', this.handleBeforeToggle);\n this.popoverElement.removeEventListener('toggle', this.handleToggle);\n }\n\n private handleBeforeToggle = (event: Event) => {\n const toggleEvent = event as ToggleEvent;\n if (toggleEvent.newState === 'open') {\n this.updatePosition();\n }\n };\n\n private handleToggle = (event: Event) => {\n const toggleEvent = event as ToggleEvent;\n if (toggleEvent.newState === 'open') {\n this.startAutoUpdate();\n this.opened.emit();\n } else {\n this.stopAutoUpdate();\n this.closed.emit();\n }\n };\n\n private updatePosition() {\n const trigger = this.triggerElement;\n const popover = this.popoverElement;\n\n if (!trigger || !popover) return;\n\n computePosition(trigger, popover, {\n placement: this.placement,\n strategy: 'fixed',\n middleware: [\n offset((data) => {\n const styles = getComputedStyle(data.elements.floating, '::before');\n return parseFloat(styles.height) || 12;\n }),\n ...(this.autoPlacement ? [flip({ fallbackAxisSideDirection: 'start' }), shift()] : []),\n arrowPseudoElement,\n ],\n }).then(({ x, y }) => {\n popover.style.translate = `${x}px ${y}px`;\n });\n }\n\n private startAutoUpdate() {\n this.stopAutoUpdate();\n\n const trigger = this.triggerElement;\n const popover = this.popoverElement;\n\n if (!trigger || !popover) return;\n\n this.cleanupAutoUpdate = autoUpdate(trigger, popover, () => this.updatePosition());\n }\n\n private stopAutoUpdate() {\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = undefined;\n }\n }\n}\n","import { booleanAttribute, Directive, HostListener, Input } from '@angular/core';\n\n/**\n * @summary\n * Select allows users to choose an option from a list.\n *\n * @example\n * ```html\n * <select hviSelect width=\"auto\" id=\"select\">\n * <option value=\"\" disabled=\"\" selected=\"\">Select an option</option>\n * <option value=\"option1\">Option 1</option>\n * <option value=\"option2\">Option 2</option>\n * </select>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/select/code\n */\n\n@Directive({\n selector: 'select[hviSelect]',\n standalone: true,\n host: {\n class: 'ds-select ds-input',\n '[attr.data-width]': 'width',\n '[attr.readonly]': '_readOnly ? \"\" : null',\n '[attr.disabled]': '_disabled ? \"\" : null',\n },\n})\nexport class HviSelect {\n /** Defines the width of Select, where \"auto\" matches the content width. */\n @Input() width?: 'full' | 'auto';\n\n protected _readOnly = false;\n protected _disabled = false;\n\n /** Disabled Select. */\n @Input({ transform: booleanAttribute })\n set disabled(value: boolean) {\n this._disabled = value;\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n /** Readonly Select. */\n @Input({ transform: booleanAttribute })\n set readOnly(value: boolean) {\n this._readOnly = value;\n }\n get readOnly(): boolean {\n return this._readOnly;\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent): void {\n if (this._readOnly) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (this._readOnly) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (!this._readOnly) return;\n\n if (event.key === ' ' || event.key === 'Spacebar' || event.key === 'Enter') {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * @summary\n * Skeleton component description.\n *\n * @example\n * ```html\n * <hvi-skeleton variant=\"rectangle\" width=\"100px\" height=\"20px\"></hvi-skeleton>\n * ```\n *\n * @see {@link https://designsystemet.no/en/components/docs/skeleton/code}\n */\n\n@Component({\n selector: 'hvi-skeleton',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-skeleton',\n '[attr.aria-hidden]': 'true',\n '[attr.data-variant]': 'variant',\n '[style.width]': 'width',\n '[style.height]': 'height',\n },\n})\nexport class HviSkeleton {\n @Input() variant: 'rectangle' | 'circle' | 'text' = 'rectangle';\n @Input() width?: string;\n @Input() height?: string;\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * @summary\n * Tag is a label that can be used to categorize items or communicate progress, status, or process. Tags can provide users with a quicker overview of content.\n *\n * @example\n * ```html\n * <hvi-tag variant=\"outline\" size=\"sm\" color=\"info\">Small info tag</hvi-tag>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/tag/code\n */\n\n@Component({\n selector: 'hvi-tag',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-tag',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-size]': 'size ?? null',\n '[attr.data-color]': 'color ?? null',\n },\n})\nexport class HviTag {\n /** The variants of the tag */\n @Input() variant?: 'default' | 'outline';\n\n /** The sizes of the tag */\n @Input() size?: 'sm' | 'md' | 'lg';\n\n /** The color theme of the tag */\n @Input() color?:\n | 'neutral'\n | 'danger'\n | 'warning'\n | 'info'\n | 'success'\n | 'accent'\n | 'brand1'\n | 'brand2'\n | 'brand3';\n}\n","/*\n * Public API Surface of hviktor\n */\n\nexport * from './alert';\nexport * from './avatar';\nexport * from './badge';\nexport * from './breadcrumbs';\nexport * from './button';\nexport * from './card';\nexport * from './chip';\nexport * from './details';\nexport * from './dialog';\nexport * from './divider';\nexport * from './forms';\nexport * from './heading';\nexport * from './icon';\nexport * from './label';\nexport * from './link';\nexport * from './list';\nexport * from './paragraph';\nexport * from './popover';\nexport * from './select';\nexport * from './skeleton';\nexport * from './tag';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_ERROR_PRIORITY"],"mappings":";;;;;;;AAEA;;;;;;;;;;;;;AAaG;MAUU,QAAQ,CAAA;;AAEV,IAAA,KAAK;uGAFH,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,mLANT,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAMf,QAAQ,EAAA,UAAA,EAAA,CAAA;kBATpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,mBAAmB,EAAE,OAAO;AAC7B,qBAAA;AACF,iBAAA;;sBAGE;;;ACzBH;;;;;;;;;;;;;;;AAeG;MAeU,SAAS,CAAA;;AAEX,IAAA,SAAS;;AAGT,IAAA,OAAO;;AAGP,IAAA,QAAQ;;AAGR,IAAA,IAAI;;AAGJ,IAAA,KAAK;uGAdH,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,wcAXV,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAWf,SAAS,EAAA,UAAA,EAAA,CAAA;kBAdrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,mBAAmB,EAAE,mBAAmB;AACxC,wBAAA,qBAAqB,EAAE,iBAAiB;AACxC,wBAAA,sBAAsB,EAAE,kBAAkB;AAC1C,wBAAA,kBAAkB,EAAE,cAAc;AAClC,wBAAA,mBAAmB,EAAE,eAAe;AACrC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;;MClCU,gBAAgB,CAAA;;IAElB,OAAO,GAA2B,WAAW;;IAG7C,SAAS,GAA8D,WAAW;uGALhF,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,0QAPjB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAOf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oBAAoB;AAC3B,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,uBAAuB,EAAE,WAAW;AACrC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;;MCJU,QAAQ,CAAA;;AAEV,IAAA,OAAO;;AAGP,IAAA,KAAK;;AAGL,IAAA,KAAK;uGARH,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,2SART,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAQf,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAXpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,qBAAqB,EAAE,iBAAiB;AACxC,wBAAA,mBAAmB,EAAE,eAAe;AACpC,wBAAA,mBAAmB,EAAE,eAAe;AACrC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAGA;;;ACbH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAkCU,cAAc,CAAA;;IAEhB,SAAS,GAAG,YAAY;;AAGxB,IAAA,QAAQ;;IAOR,KAAK,GAAqB,EAAE;uGAZ1B,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7Bf;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAOU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhC1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,mBAAmB,EAAE,mBAAmB;AACzC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAOA;;;AC1EH;;;;;;;;;;;;AAYG;MAeU,SAAS,CAAA;;AAEX,IAAA,IAAI;;AAGJ,IAAA,OAAO;;AAGP,IAAA,IAAI;;AAGJ,IAAA,KAAK;AAEd;;AAEG;IACqC,IAAI,GAAG,KAAK;AAEpD;;AAEG;IACqC,OAAO,GAAG,KAAK;;IAGf,SAAS,GAAG,KAAK;uGAxB9C,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAgBA,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAKhB,gBAAgB,yCAGhB,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,2BAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAxBzB,SAAS,EAAA,UAAA,EAAA,CAAA;kBAdrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,mBAAmB,EAAE,OAAO;AAC5B,wBAAA,uBAAuB,EAAE,uBAAuB;AAChD,wBAAA,kBAAkB,EAAE,kBAAkB;AACtC,wBAAA,kBAAkB,EAAE,yBAAyB;AAC9C,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAGA;;sBAGA;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;ACnDxC;;;;;;;;;;;;;;;AAeG;MAMU,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;AAClC,iBAAA;;;ACpBD;;;;;;;;;;;;;AAaG;MAYU,OAAO,CAAA;;AAET,IAAA,OAAO;;AAGP,IAAA,KAAK;;AAGL,IAAA,QAAQ;uGARN,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,0RARR,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAQf,OAAO,EAAA,UAAA,EAAA,CAAA;kBAXnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,mBAAmB,EAAE,OAAO;AAC5B,wBAAA,mBAAmB,EAAE,UAAU;AAChC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAGA;;;MCzBU,aAAa,CAAA;;IAEgB,SAAS,GAAG,KAAK;uGAF9C,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,mGAEJ,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAFzB,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,uBAAuB,EAAE,2BAA2B;AACrD,qBAAA;AACF,iBAAA;;sBAGE,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;MCH3B,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAPxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AACjB,qBAAA;AACF,iBAAA;;;MCFY,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+EAFlB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;MCCY,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+EAFlB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;ACFD;;;;;;;;;;;;;;;;AAgBG;MAuBU,UAAU,CAAA;;IAEZ,OAAO,GAAyB,SAAS;;IAGzC,IAAI,GAAiB,KAAK;;IAG1B,WAAW,GAAiB,KAAK;;AAGjC,IAAA,QAAQ,GAA2B,MAAK,EAAE,CAAC;AAEpD,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;IAChC;uGAfW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBX,CAAA;;;;;;;;;;;;;;AAcG,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAGF,UAAU,EAAA,UAAA,EAAA,CAAA;kBArBtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;AAcG,cAAA,CAAA;AACb,oBAAA,IAAI,EAAE,EAAE;AACT,iBAAA;;sBAGE;;sBAGA;;sBAGA;;sBAGA;;;MC5CU,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AAC1B,qBAAA;AACF,iBAAA;;;ACED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;MASU,SAAS,CAAA;AACX,IAAA,EAAE;IACX,IACI,IAAI,CAAC,KAAc,EAAA;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;IAC1B;IAES,KAAK,GAAG,IAAI;AAEF,IAAA,UAAU,GAAG,IAAI,YAAY,EAAW;IAE1C,OAAO,GAAG,MAAM,EAAC,UAA6B,EAAC,CAAC,aAAa;IAE9E,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACpB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IACrB;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;AAGA,IAAA,YAAY,CAAC,KAAY,EAAA;QACvB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IACrB;AAEQ,IAAA,OAAO,CAAC,UAAmB,EAAA;QACjC,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACrB;YACF;AAEA,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAC1B;iBAAO;AACL,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACrB;AAEA,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;IACtB;uGAzDW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBARrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,EAAE,EAAE,UAAU;AACf,qBAAA;AACF,iBAAA;;sBAEE;;sBACA;;sBASA;;sBAEA;;sBAYA,YAAY;uBAAC,OAAO;;sBAKpB,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;AC5EpC;;;;;;;;;AASG;MAUU,UAAU,CAAA;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,aAAa,EAAE,MAAM;AACtB,qBAAA;AACF,iBAAA;;;ACjBD;;;;;;;;;;;;;AAaG;MAMU,OAAO,CAAA;;AAER,IAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;;IAGjD,SAAS,GAAG,KAAK;;AAGR,IAAA,cAAc;;IAGN,YAAY,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAG9E,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAExB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI;AACpC,QAAA,IAAI,CAAC,IAAI;YAAE;QAEX,IAAI,CAAC,gBAAgB,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,cAAc,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC;QACtD;IACF;uGA3BW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAJnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;sBAGE;;sBAMA;;sBAKA,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;AClBpC,MAAMA,wBAAsB,GAAG;IAC7B,UAAU;IACV,WAAW;IACX,WAAW;IACX,OAAO;IACP,SAAS;IACT,KAAK;IACL,KAAK;CACG;AAEV,IAAI,qBAAqB,GAAG,CAAC;AAC7B,MAAM,yBAAyB,GAAG,MAAM,CAAA,0BAAA,EAA6B,EAAE,qBAAqB,CAAA,CAAE;AAE9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgEG;MAiDU,eAAe,CAAA;;IAEjB,OAAO,GAAG,gDAAgD;;IAG1D,YAAY,GAA0B,CAAC;AAEhD;;;AAGG;IACM,MAAM,GAA0B,EAAE;;AAGlC,IAAA,IAAI;AAEb;;;;;;;AAOG;AACM,IAAA,QAAQ;AAEjB;;;AAGG;AACM,IAAA,KAAK;;IAGL,aAAa,GAAsBA,wBAAsB;;IAGzD,SAAS,GAAG,yBAAyB,EAAE;;IAGvC,QAAQ,GAAuC,WAAW;AAEjB,IAAA,SAAS;IAE3D,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE;IACvC;AAEA;;;AAGG;IACH,WAAW,CAAC,KAAiB,EAAE,IAAY,EAAA;QACzC,KAAK,CAAC,cAAc,EAAE;QAEtB,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;QACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAE1C,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,KAAK,EAAE;AACd,YAAA,MAAM,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAChE;IACF;AAEA,IAAA,IAAI,cAAc,GAAA;;AAEhB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM;;AAG3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC9B,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE;QAEjC,MAAM,KAAK,GAA0B,EAAE;AAEvC,QAAA,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YACvC,IAAI,CAAC,IAAI,EAAE,OAAO;gBAAE;AAEpB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE;YAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;YAE1C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;AAC9C,YAAA,IAAI,CAAC,OAAO;gBAAE;YAEd,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,WAAW;AACnD,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,EAAE,CAAC;QACzC;AAEA,QAAA,OAAO,KAAK;IACd;IAEQ,WAAW,CAAC,MAA+B,EAAE,QAA+B,EAAA;AAClF,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;YACpC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,QAAQ,CAAC,GAAG,CAAE;QACzD;QACA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACrC,IAAI,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,QAAQ,CAAC,GAAG,CAAE;QAC1C;AACA,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,eAAe,GAAG,EAAE;IAC1D;IAEiB,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE9D,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;AAElD,QAAA,QAAQ,IAAI,CAAC,QAAQ;AACnB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI;AAEb,YAAA,KAAK,SAAS;;AAEZ,gBAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,iBAAiB,EAAE;AAEvE,YAAA,KAAK,WAAW;AAChB,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK;;IAE7C;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK;AAEvB,QAAA,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO;AAAE,gBAAA,OAAO,IAAI;QAC1C;AACA,QAAA,OAAO,KAAK;IACd;uGAjIW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7ChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhD3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CT,EAAA,CAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAMA;;sBAGA;;sBAUA;;sBAMA;;sBAGA;;sBAGA;;sBAGA;;sBAEA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;ACxL1C;AAEM,SAAU,aAAa,CAAC,YAAgC,EAAA;AAC5D,IAAA,IAAI,CAAC,YAAY;QAAE;AAEnB,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B;AAClD,IAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC9C,IAAA,MAAM,IAAI,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IACnF,IAAI,KAAK,GAAmB,IAAI;IAChC,IAAI,WAAW,GAAG,EAAE;AAEpB,IAAA,MAAM,OAAO,GAAG,CAAC,SAAoC,KAAI;QACvD,MAAM,OAAO,GAAW,EAAE;QAC1B,MAAM,OAAO,GAAW,EAAE;;AAG1B,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,IAAI,QAAQ,CAAC,aAAa;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,YAAY,CAAC;AACzE,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;AAC5C,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QAChD;;AAGA,QAAA,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAAE;YAEpB,IAAI,OAAO,CAAC,EAAE,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC;AACxC,iBAAA,IAAI,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;iBAC1D,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;gBACtC,KAAK,GAAG,EAAE;gBACV,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE;YACzD;QACF;;AAGA,QAAA,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAAE;YAEpB,IAAI,KAAK,KAAK,EAAE;gBAAE,KAAK,GAAG,IAAI;AAC9B,YAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBACpB,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACzD,gBAAA,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrB;QACF;;AAGA,QAAA,MAAM,cAAc,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACjE,QAAA,MAAM,OAAO,GAAG,KAAK,EAAE,EAAE,IAAI,IAAI;;QAGjC,WAAW,CAAC,KAAK,EAAE;QAEnB,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE;YAClC,MAAM,eAAe,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC;AACrD,YAAA,IAAI,EAAU;YAEd,IAAI,eAAe,EAAE;;AAEnB,gBAAA,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AACzD,gBAAA,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;gBACvC,EAAE,GAAG,GAAG,OAAO,CAAA,CAAA,EAAI,eAAe,CAAA,CAAA,EAAI,KAAK,EAAE;YAC/C;iBAAO;gBACL,EAAE,GAAG,OAAO;YACd;AAEA,YAAA,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;gBACnC,IAAI,eAAe,KAAK,YAAY;oBAClC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3B,qBAAA,IAAI,eAAe;oBAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvD;QACF;;QAGA,MAAM,oBAAoB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,KAAI;AACxD,YAAA,IAAI,CAAC,EAAE;AAAE,gBAAA,OAAO,KAAK;YACrB,IAAI,EAAE,KAAK,OAAO;AAAE,gBAAA,OAAO,IAAI;;;YAI/B,OAAO,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,EAAE,CAAC;AACzD,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;AAC7B,QAAA,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3E,IAAA,CAAC;AAED,IAAA,MAAM,QAAQ,GAAG,+BAA+B,CAAC,OAAO,CAAC;AACzD,IAAA,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE;AAC7B,QAAA,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,kBAAkB,CAAC;AAClD,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,OAAO,EAAE,IAAI;AACd,KAAA,CAAC;AAEF,IAAA,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,IAAA,QAAQ,CAAC,WAAW,EAAE,CAAC;AACvB,IAAA,OAAO,MAAM,QAAQ,CAAC,UAAU,EAAE;AACpC;AAEA;AACO,MAAM,SAAS,GAAG,CAAC,IAAU,KAAK,IAAI,YAAY;AAClD,MAAM,OAAO,GAAG,CAAC,IAAU,KAAK,IAAI,YAAY;AAChD,MAAM,WAAW,GAAG,CAAC,IAAa,KACvC,IAAI,YAAY,WAAW,IAAI,UAAU,IAAI,IAAI,IAAI,EAAE,IAAI,YAAY,iBAAiB,EAAE;AAE5F,MAAM,OAAO,GAAG,CAAC,EAAkB,EAAE,IAAY,EAAE,KAAqB,KACtE,KAAK,GAAG,EAAE,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC;AAEnE;AACA,SAAS,+BAA+B,CAAC,QAA0B,EAAA;IACjE,MAAM,KAAK,GAAqB,EAAE;IAClC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,KAAI;QAClD,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,qBAAqB,CAAC,OAAO,CAAC;AACjD,QAAA,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAC1B,IAAA,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,MAAK;AACnB,QAAA,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;AACzB,QAAA,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjB,QAAA,QAAQ,CAAC,WAAW,EAAE,CAAC;AACzB,IAAA,CAAC;AAED,IAAA,OAAO,QAAQ;AACjB;;AC1HA;;;;;;;;;;;;;;;;AAgBG;MASU,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,8JANd,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAMf,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,eAAe,EAAE,MAAM;AACxB,qBAAA;AACF,iBAAA;;;ACxBD;;;;;;;;;;;;;;;;AAgBG;MAQU,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,2HALhB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AAC1B,qBAAA;AACF,iBAAA;;;MChBY,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,aAAa;AAC5B,qBAAA;AACF,iBAAA;;;MCCY,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,UAAU;AACzB,qBAAA;AACF,iBAAA;;;MCEY,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC9B,wBAAA,YAAY,EAAE,YAAY;AAC3B,qBAAA;AACF,iBAAA;;;ACND;;;;;;;;;;;;;;AAcG;MAUU,QAAQ,CAAA;;AAEV,IAAA,QAAQ;AAEA,IAAA,EAAE,GAAG,MAAM,EAAC,UAAuB,EAAC;AACpC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAEhD,eAAe,GAAA;QACb,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;AACjD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC;IAC3C;uGAVW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,uMANT,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAMf,QAAQ,EAAA,UAAA,EAAA,CAAA;kBATpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,sBAAsB,EAAE,kBAAkB;AAC3C,qBAAA;AACF,iBAAA;;sBAGE;;;AC3BH;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;MAQU,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAPvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,aAAa;AACrB,qBAAA;AACF,iBAAA;;;MClBY,QAAQ,CAAA;;AAEV,IAAA,IAAI;;AAoBJ,IAAA,IAAI;;AAGJ,IAAA,IAAI;IAEH,SAAS,GAAG,KAAK;IACjB,SAAS,GAAG,KAAK;IAE3B,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;AACA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;AACA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;AAEA,IAAA,IAAY,QAAQ,GAAA;QAClB,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;IAC1D;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QAClC;IACF;AAGA,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QAClC;IACF;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AAEvC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAC1E,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QAClC;IACF;uGA/EW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EA8BC,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAQhB,gBAAgB,sCAQhB,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,cAAA,EAAA,WAAA,EAAA,cAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FA9CzB,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAZpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,iBAAiB,EAAE,uBAAuB;AAC1C,wBAAA,iBAAiB,EAAE,uBAAuB;AAC1C,wBAAA,aAAa,EAAE,cAAc;AAC9B,qBAAA;AACF,iBAAA;;sBAGE;;sBAoBA;;sBAGA;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBASrC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAQhC,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;sBAQjC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACnFrC;;;;;;;;AAQG;MAMU,iBAAiB,CAAA;AACX,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7D,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE9D,IAAA,IACI,WAAW,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO;AACvC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;QAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK;AAClD,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC;QAE9D,OAAO,IAAI,GAAG,MAAM,GAAG,IAAI;IAC7B;uGAbW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;sBAKE,WAAW;uBAAC,mBAAmB;;;AChBlC,MAAM,sBAAsB,GAAG;IAC7B,UAAU;IACV,WAAW;IACX,WAAW;IACX,OAAO;IACP,SAAS;IACT,KAAK;IACL,KAAK;CACG;MAYG,oBAAoB,CAAA;AAC/B;;;AAGG;AAC4B,IAAA,WAAW;AAE1C;;AAEG;IACM,QAAQ,GAA0B,EAAE;AAE7C;;AAEG;IACM,aAAa,GAAsB,sBAAsB;IAEjD,SAAS,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxD,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE9D,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO;AACrC,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,IAAI;QAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;IACpC;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;AACzB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;QAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK;AAClD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC;AACxD,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;AAEpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE;;AAGhC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;YACpC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE;QACnE;;QAGA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE;QACpD;AAEA,QAAA,OAAO,eAAe;IACxB;uGA/CW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,sBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;;AAEJ,wBAAA,eAAe,EAAE,SAAS;;AAE1B,wBAAA,UAAU,EAAE,UAAU;AACvB,qBAAA;AACF,iBAAA;;sBAME,KAAK;uBAAC,sBAAsB;;sBAK5B;;sBAKA;;;ACfH;;;;;;;;;;;;;;;;AAgBG;AACG,SAAU,aAAa,CAAC,OAA6B,EAAA;IACzD,OAAO;AACL,QAAA,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AAC3C,QAAA,QAAQ,EAAE,OAAO,CAAC,MAAM,CACtB,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAC5C,EAA2B,CAC5B;KACF;AACH;AAEA;;;AAGG;AACG,SAAU,oBAAoB,CAAC,OAA6B,EAAA;AAChE,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AACxC;AAEA;;;AAGG;AACG,SAAU,kBAAkB,CAAC,OAA6B,EAAA;AAC9D,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAA2B,CAAC;AAClG;;AChEA;;;;;;;AAOG;AACG,SAAU,WAAW,CAAC,OAAe,EAAA;AACzC,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE;AACrE;AAEA;;;;;;;AAOG;AACG,SAAU,eAAe,CAAC,OAAe,EAAA;AAC7C,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE;AACzE;AAEA;;;;;;;AAOG;AACG,SAAU,YAAY,CAAC,MAAc,EAAE,OAAe,EAAA;AAC1D,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE;AAC/E;AAEA;;;;;;;AAOG;AACG,SAAU,YAAY,CAAC,MAAc,EAAE,OAAe,EAAA;AAC1D,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE;AAC/E;AAEA;;;;;;;AAOG;AACG,SAAU,QAAQ,CAAC,OAAe,EAAA;AACtC,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;AAC/D;AAEA;;;;;;;AAOG;AACG,SAAU,UAAU,CAAC,OAAwB,EAAE,OAAe,EAAA;AAClE,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE;AAC5E;AAEA;;;;;;;AAOG;AACG,SAAU,MAAM,CAAC,GAAW,EAAE,OAAe,EAAA;AACjD,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;AAChE;AAEA;;;;;;;AAOG;AACG,SAAU,MAAM,CAAC,GAAW,EAAE,OAAe,EAAA;AACjD,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;AAChE;AAEA;;;;;;;;;;;;;;AAcG;SACa,SAAS,CACvB,GAAW,EACX,SAAsB,EACtB,OAAe,EAAA;AAEf,IAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE;AACpC;AAEA;;;AAGG;SACa,gBAAgB,GAAA;AAC9B,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;AAC1E;;AC9GA;AACO,MAAM,WAAW,GAAG;IACzB,QAAQ;IACR,kBAAkB;IAClB,mBAAmB;IACnB,gBAAgB;IAChB,aAAa;IACb,eAAe;;AAGjB;AACO,MAAM,gBAAgB,GAAG;IAC9B,mBAAmB;IACnB,OAAO;IACP,iBAAiB;IACjB,oBAAoB;;AAGtB;AACO,MAAM,QAAQ,GAAG;AACtB,IAAA,GAAG,gBAAgB;AACnB,IAAA,GAAG,WAAW;IACd,QAAQ;IACR,WAAW;IACX,eAAe;;;ACxCjB;;;;;;;;;AASG;MAUU,UAAU,CAAA;;AAEZ,IAAA,IAAI;uGAFF,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gGAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBATtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACN,gGAAgG;AAClG,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,kBAAkB,EAAE,MAAM;AAC3B,qBAAA;AACF,iBAAA;;sBAGE;;;MCoCU,OAAO,CAAA;AACS,IAAA,IAAI;AACtB,IAAA,KAAK;IACL,IAAI,GAAa,IAAI;IACU,UAAU,GAAG,KAAK;AAEzC,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAEhD,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,EAAE;IACjB;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC;AACF,aAAA,GAAG,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,IAAI,MAAM,EAAE;AACrC,YAAA,YAAY,EAAE,MAAM;SACrB;AACA,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;gBACZ,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,GAAG;AAC7C,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;gBACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;YACvD,CAAC;AACF,SAAA,CAAC;IACN;uGA5BW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAIE,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/C1B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qXAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FA2CD,OAAO,EAAA,UAAA,EAAA,CAAA;kBA9CnB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,QAAA,EACN,EAAE,iBACG,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,mBAAmB,EAAE,OAAO;AAC5B,wBAAA,oBAAoB,EAAE,YAAY;AACnC,qBAAA,EAAA,MAAA,EAAA,CAAA,qXAAA,CAAA,EAAA;;sBAqCA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;AC7DxC;;;;;;;;;AASG;MASU,QAAQ,CAAA;;AAEV,IAAA,MAAM;uGAFJ,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBARpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,oBAAoB,EAAE,gBAAgB;AACvC,qBAAA;AACF,iBAAA;;sBAGE;;;ACpBH;;;;;;;;;AASG;MAUU,OAAO,CAAA;;IAET,KAAK,GAA2B,SAAS;uGAFvC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBARnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,mBAAmB,EAAE,OAAO;AAC7B,qBAAA;AACF,iBAAA;;sBAGE;;;ACrBH;;;;;;;;;;;;;;;;;;;;AAoBG;MASU,OAAO,CAAA;uGAAP,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAPnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AACjB,qBAAA;AACF,iBAAA;;;AC5BD;;;;;;;;;;;AAWG;MAUU,YAAY,CAAA;;AAEd,IAAA,OAAO;;AAGP,IAAA,IAAI;uGALF,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,qBAAqB,EAAE,iBAAiB;AACxC,wBAAA,kBAAkB,EAAE,cAAc;AACnC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;;ACRH,MAAM,kBAAkB,GAAG;AACzB,IAAA,IAAI,EAAE,oBAAoB;AAC1B,IAAA,EAAE,CAAC,IAAqB,EAAA;QACtB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;QAE3C,IAAI,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;QACtF,IAAI,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;AAEvF,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;AAChD,YAAA,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI;QACtD;AAEA,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;AAClD,YAAA,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI;QACvD;QAEA,QAAQ,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAA,KAAK,KAAK;gBACR,MAAM,GAAG,MAAM;gBACf;AACF,YAAA,KAAK,OAAO;gBACV,MAAM,GAAG,GAAG;gBACZ;AACF,YAAA,KAAK,QAAQ;gBACX,MAAM,GAAG,GAAG;gBACZ;AACF,YAAA,KAAK,MAAM;gBACT,MAAM,GAAG,MAAM;gBACf;;AAGJ,QAAA,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,sBAAsB,EAAE,MAAM,CAAC;QACnE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,sBAAsB,EAAE,MAAM,CAAC;AACnE,QAAA,OAAO,IAAI;IACb,CAAC;CACF;AAED;;;;;;;;;;;;AAYG;MAYU,UAAU,CAAA;AACb,IAAA,EAAE,GAAG,MAAM,EAAC,UAAuB,EAAC;AACpC,IAAA,iBAAiB;AACjB,IAAA,gBAAgB;AAChB,IAAA,kBAAkB;;IAGjB,IAAI,GAA+B,QAAQ;;IAG3C,OAAO,GAAyB,SAAS;;IAGzC,KAAK,GAA0D,SAAS;;IAGxE,SAAS,GAAc,KAAK;;IAG5B,aAAa,GAAG,IAAI;;AAGnB,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;;AAGjC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AAE3C,IAAA,IAAY,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa;IAC9B;AAEA,IAAA,IAAY,cAAc,GAAA;AACxB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE;AACjC,QAAA,OAAO,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,gBAAA,EAAmB,EAAE,IAAI,CAAC,GAAG,IAAI;IACtE;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEQ,mBAAmB,GAAA;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc;;AAGnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAiB,KAAI;AAC5C,YAAA,MAAM,EAAE,GAAG,KAAK,CAAC,MAAwB;AACzC,YAAA,MAAM,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,CAAA,gBAAA,EAAmB,OAAO,CAAC,EAAE,CAAA,EAAA,CAAI,CAAC;AAClE,YAAA,MAAM,SAAS,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAU,CAAC;YAE7D,IAAI,SAAS,EAAE;gBACb,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,OAAO,CAAC,aAAa,IAAI;YAC3B;YACA,IAAI,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AACjD,gBAAA,OAAO,CAAC,aAAa,IAAI;YAC3B;AACF,QAAA,CAAC;;AAGD,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,KAAoB,KAAI;AACjD,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;gBAAE;YACjE,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,aAAa,IAAI;AAC3B,QAAA,CAAC;AAED,QAAA,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAChD,QAAA,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC;;QAGpD,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC;QACjE,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;IACvD;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC;QACrD;AACA,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC;QACzD;QACA,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC;QAChF,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;IACtE;AAEQ,IAAA,kBAAkB,GAAG,CAAC,KAAY,KAAI;QAC5C,MAAM,WAAW,GAAG,KAAoB;AACxC,QAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE;YACnC,IAAI,CAAC,cAAc,EAAE;QACvB;AACF,IAAA,CAAC;AAEO,IAAA,YAAY,GAAG,CAAC,KAAY,KAAI;QACtC,MAAM,WAAW,GAAG,KAAoB;AACxC,QAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE;YACnC,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;aAAO;YACL,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;AACF,IAAA,CAAC;IAEO,cAAc,GAAA;AACpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc;AAEnC,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;YAAE;AAE1B,QAAA,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE;YAChC,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,UAAU,EAAE;AACV,gBAAA,MAAM,CAAC,CAAC,IAAI,KAAI;AACd,oBAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;oBACnE,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AACxC,gBAAA,CAAC,CAAC;gBACF,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,EAAE,yBAAyB,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;gBACtF,kBAAkB;AACnB,aAAA;SACF,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAI;YACnB,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAA,GAAA,EAAM,CAAC,CAAA,EAAA,CAAI;AAC3C,QAAA,CAAC,CAAC;IACJ;IAEQ,eAAe,GAAA;QACrB,IAAI,CAAC,cAAc,EAAE;AAErB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc;AAEnC,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;YAAE;AAE1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IACpF;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;QACpC;IACF;uGAjJW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,0XARX,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAQf,UAAU,EAAA,UAAA,EAAA,CAAA;kBAXtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,gBAAgB,EAAE,MAAM;AACxB,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,mBAAmB,EAAE,OAAO;AAC7B,qBAAA;AACF,iBAAA;;sBAQE;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;;ACzGH;;;;;;;;;;;;;;AAcG;MAYU,SAAS,CAAA;;AAEX,IAAA,KAAK;IAEJ,SAAS,GAAG,KAAK;IACjB,SAAS,GAAG,KAAK;;IAG3B,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;AACA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;;IAGA,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;AACA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;AAGA,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QAClC;IACF;AAGA,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QAClC;IACF;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AAErB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAC1E,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QAClC;IACF;uGAjDW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAQA,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAShB,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAjBzB,SAAS,EAAA,UAAA,EAAA,CAAA;kBAVrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oBAAoB;AAC3B,wBAAA,mBAAmB,EAAE,OAAO;AAC5B,wBAAA,iBAAiB,EAAE,uBAAuB;AAC1C,wBAAA,iBAAiB,EAAE,uBAAuB;AAC3C,qBAAA;AACF,iBAAA;;sBAGE;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBASrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;sBAQpC,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;sBAQjC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACnErC;;;;;;;;;;AAUG;MAcU,WAAW,CAAA;IACb,OAAO,GAAoC,WAAW;AACtD,IAAA,KAAK;AACL,IAAA,MAAM;uGAHJ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,iTATZ,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FASf,WAAW,EAAA,UAAA,EAAA,CAAA;kBAZvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,aAAa;AACpB,wBAAA,oBAAoB,EAAE,MAAM;AAC5B,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,eAAe,EAAE,OAAO;AACxB,wBAAA,gBAAgB,EAAE,QAAQ;AAC3B,qBAAA;AACF,iBAAA;;sBAEE;;sBACA;;sBACA;;;AC3BH;;;;;;;;;;AAUG;MAaU,MAAM,CAAA;;AAER,IAAA,OAAO;;AAGP,IAAA,IAAI;;AAGJ,IAAA,KAAK;uGARH,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,mSARP,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAQf,MAAM,EAAA,UAAA,EAAA,CAAA;kBAXlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,qBAAqB,EAAE,iBAAiB;AACxC,wBAAA,kBAAkB,EAAE,cAAc;AAClC,wBAAA,mBAAmB,EAAE,eAAe;AACrC,qBAAA;AACF,iBAAA;;sBAGE;;sBAGA;;sBAGA;;;ACjCH;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helsevestikt/hviktor-angular",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "license": "MIT",
5
5
  "peerDependencies": {
6
6
  "@angular/common": ">=17.0.0 <22.0.0",
@@ -8,7 +8,6 @@
8
8
  },
9
9
  "dependencies": {
10
10
  "@digdir/designsystemet-css": "^1.11.1",
11
- "@digdir/designsystemet-theme": "^1.11.0",
12
11
  "@floating-ui/dom": "^1.7.5",
13
12
  "@u-elements/u-details": "^0.1.5",
14
13
  "tslib": "^2.3.0"
package/styles.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @import '@digdir/designsystemet-css';
2
- @import '@digdir/designsystemet-theme';
2
+ @import '@digdir/designsystemet-css/theme';
3
3
 
4
4
  @layer ds.theme.typography.primary {
5
5
  :root,
@@ -455,6 +455,11 @@ declare class HviErrorSummary {
455
455
  showWhen: 'submitted' | 'touched' | 'always';
456
456
  private container?;
457
457
  focus(): void;
458
+ /**
459
+ * Handles click on error links to prevent Angular Router navigation
460
+ * and instead focus/scroll to the target element.
461
+ */
462
+ onLinkClick(event: MouseEvent, href: string): void;
458
463
  get computedErrors(): HviErrorSummaryItem[];
459
464
  private pickMessage;
460
465
  private readonly hviForm;
@@ -968,6 +973,60 @@ declare class HviPopover implements OnInit, OnDestroy {
968
973
  static ɵcmp: i0.ɵɵComponentDeclaration<HviPopover, "hvi-popover", never, { "type": { "alias": "type"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "color": { "alias": "color"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "autoPlacement": { "alias": "autoPlacement"; "required": false; }; }, { "opened": "opened"; "closed": "closed"; }, never, ["*"], true, never>;
969
974
  }
970
975
 
976
+ /**
977
+ * @summary
978
+ * Select allows users to choose an option from a list.
979
+ *
980
+ * @example
981
+ * ```html
982
+ * <select hviSelect width="auto" id="select">
983
+ * <option value="" disabled="" selected="">Select an option</option>
984
+ * <option value="option1">Option 1</option>
985
+ * <option value="option2">Option 2</option>
986
+ * </select>
987
+ * ```
988
+ *
989
+ * Documentation: https://designsystemet.no/en/components/docs/select/code
990
+ */
991
+ declare class HviSelect {
992
+ /** Defines the width of Select, where "auto" matches the content width. */
993
+ width?: 'full' | 'auto';
994
+ protected _readOnly: boolean;
995
+ protected _disabled: boolean;
996
+ /** Disabled Select. */
997
+ set disabled(value: boolean);
998
+ get disabled(): boolean;
999
+ /** Readonly Select. */
1000
+ set readOnly(value: boolean);
1001
+ get readOnly(): boolean;
1002
+ onMouseDown(event: MouseEvent): void;
1003
+ onChange(event: Event): void;
1004
+ onKeydown(event: KeyboardEvent): void;
1005
+ static ɵfac: i0.ɵɵFactoryDeclaration<HviSelect, never>;
1006
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HviSelect, "select[hviSelect]", never, { "width": { "alias": "width"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; }, {}, never, never, true, never>;
1007
+ static ngAcceptInputType_disabled: unknown;
1008
+ static ngAcceptInputType_readOnly: unknown;
1009
+ }
1010
+
1011
+ /**
1012
+ * @summary
1013
+ * Skeleton component description.
1014
+ *
1015
+ * @example
1016
+ * ```html
1017
+ * <hvi-skeleton variant="rectangle" width="100px" height="20px"></hvi-skeleton>
1018
+ * ```
1019
+ *
1020
+ * @see {@link https://designsystemet.no/en/components/docs/skeleton/code}
1021
+ */
1022
+ declare class HviSkeleton {
1023
+ variant: 'rectangle' | 'circle' | 'text';
1024
+ width?: string;
1025
+ height?: string;
1026
+ static ɵfac: i0.ɵɵFactoryDeclaration<HviSkeleton, never>;
1027
+ static ɵcmp: i0.ɵɵComponentDeclaration<HviSkeleton, "hvi-skeleton", never, { "variant": { "alias": "variant"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; }, {}, never, ["*"], true, never>;
1028
+ }
1029
+
971
1030
  /**
972
1031
  * @summary
973
1032
  * Tag is a label that can be used to categorize items or communicate progress, status, or process. Tags can provide users with a quicker overview of content.
@@ -990,5 +1049,5 @@ declare class HviTag {
990
1049
  static ɵcmp: i0.ɵɵComponentDeclaration<HviTag, "hvi-tag", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "color": { "alias": "color"; "required": false; }; }, {}, never, ["*"], true, never>;
991
1050
  }
992
1051
 
993
- export { HviAlert, HviAvatar, HviBadge, HviBadgePosition, HviBreadcrumbs, HviButton, HviCard, HviCardBlock, HviChipButton, HviChipLabel, HviControlInvalid, HviDetails, HviDetailsContent, HviDetailsSummary, HviDialog, HviDialogBlock, HviDivider, HviErrorSummary, HviField, HviFieldAffix, HviFieldAffixes, HviFieldDescription, HviFieldKit, HviFieldOptional, HviFieldValidation, HviFieldset, HviForm, HviForms, HviHeading, HviIcon, HviInput, HviLabel, HviLink, HviList, HviParagraph, HviPopover, HviTag, HviValidationKit, HviValidationMessage, fieldObserver, hviCustom, hviEmail, hviExtractMessages, hviExtractValidators, hviMax, hviMaxLength, hviMin, hviMinLength, hviNullValidator, hviPattern, hviRequired, hviRequiredTrue, hviValidators, isElement, isInputLike, isLabel };
1052
+ export { HviAlert, HviAvatar, HviBadge, HviBadgePosition, HviBreadcrumbs, HviButton, HviCard, HviCardBlock, HviChipButton, HviChipLabel, HviControlInvalid, HviDetails, HviDetailsContent, HviDetailsSummary, HviDialog, HviDialogBlock, HviDivider, HviErrorSummary, HviField, HviFieldAffix, HviFieldAffixes, HviFieldDescription, HviFieldKit, HviFieldOptional, HviFieldValidation, HviFieldset, HviForm, HviForms, HviHeading, HviIcon, HviInput, HviLabel, HviLink, HviList, HviParagraph, HviPopover, HviSelect, HviSkeleton, HviTag, HviValidationKit, HviValidationMessage, fieldObserver, hviCustom, hviEmail, hviExtractMessages, hviExtractValidators, hviMax, hviMaxLength, hviMin, hviMinLength, hviNullValidator, hviPattern, hviRequired, hviRequiredTrue, hviValidators, isElement, isInputLike, isLabel };
994
1053
  export type { HviErrorSummaryItem, HviErrorSummaryMessages, HviValidationMessages, HviValidatorBundle, HviValidatorConfig };