novo-elements 11.3.1-next.1 → 11.3.1-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UntypedFormGroup } from '@angular/forms';
|
|
1
2
|
import { NovoLabelService } from 'novo-elements/services';
|
|
2
3
|
import { BaseFieldDef, Operator } from '../query-builder.types';
|
|
3
4
|
import { AbstractConditionFieldDef } from './abstract-condition.definition';
|
|
@@ -10,6 +11,7 @@ type FieldOption = BaseFieldDef['options'][number];
|
|
|
10
11
|
export declare class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {
|
|
11
12
|
defaultOperator: Operator;
|
|
12
13
|
constructor(labelService: NovoLabelService);
|
|
14
|
+
onOperatorSelect(formGroup: UntypedFormGroup): void;
|
|
13
15
|
showAddOption(meta: any, select: any, filterValue: string): boolean;
|
|
14
16
|
optionTracker(option: FieldOption): string;
|
|
15
17
|
hideOption(option: FieldOption, filterValue: string): boolean;
|
|
@@ -1278,6 +1278,17 @@ class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {
|
|
|
1278
1278
|
this.defaultOperator = Operator.includeAny;
|
|
1279
1279
|
this.defineOperatorEditGroup(Operator.includeAny, Operator.includeAll, Operator.excludeAny);
|
|
1280
1280
|
}
|
|
1281
|
+
onOperatorSelect(formGroup) {
|
|
1282
|
+
super.onOperatorSelect(formGroup);
|
|
1283
|
+
// For multi-select operators, ensure value is an array, not null/boolean
|
|
1284
|
+
const newOperator = formGroup.get('operator').value;
|
|
1285
|
+
if ([Operator.includeAny, Operator.includeAll, Operator.excludeAny].includes(newOperator)) {
|
|
1286
|
+
const currentValue = formGroup.get('value').value;
|
|
1287
|
+
if (!Array.isArray(currentValue)) {
|
|
1288
|
+
formGroup.get('value').setValue([]);
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1281
1292
|
showAddOption(meta, select, filterValue) {
|
|
1282
1293
|
if (!(meta?.allowCustomFilterValues)) {
|
|
1283
1294
|
return false;
|
|
@@ -1286,7 +1297,7 @@ class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {
|
|
|
1286
1297
|
if (!filterValue) {
|
|
1287
1298
|
return false;
|
|
1288
1299
|
}
|
|
1289
|
-
if (select.value && select.value.find(selectValue => selectValue.trim().toLowerCase() === filterValue)) {
|
|
1300
|
+
if (select?.value && Array.isArray(select.value) && select.value.find(selectValue => selectValue.trim().toLowerCase() === filterValue)) {
|
|
1290
1301
|
return false;
|
|
1291
1302
|
}
|
|
1292
1303
|
return meta?.options && meta.options.find(opt => {
|
|
@@ -1302,7 +1313,10 @@ class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {
|
|
|
1302
1313
|
!option.label.toLowerCase().includes(filterValue.toLowerCase()));
|
|
1303
1314
|
}
|
|
1304
1315
|
customOptions(options, select) {
|
|
1305
|
-
|
|
1316
|
+
if (!Array.isArray(select.value)) {
|
|
1317
|
+
return [];
|
|
1318
|
+
}
|
|
1319
|
+
return select.value.filter((selectedOption) => {
|
|
1306
1320
|
return (!options || !(options.find(option => option.value === selectedOption)));
|
|
1307
1321
|
}).map(value => ({
|
|
1308
1322
|
value,
|
|
@@ -1332,7 +1346,7 @@ class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {
|
|
|
1332
1346
|
<novo-option [disabled]="!meta?.allowCustomFilterValues" [hidden]="!meta?.allowCustomFilterValues">
|
|
1333
1347
|
<novo-select-search #filterInput allowDeselectDuringFilter></novo-select-search>
|
|
1334
1348
|
</novo-option>
|
|
1335
|
-
<!--
|
|
1349
|
+
<!-- What about optionUrl/optionType -->
|
|
1336
1350
|
@for (option of meta?.options; track optionTracker) {
|
|
1337
1351
|
<novo-option [hidden]="hideOption(option, filterInput?.value)" [value]="option.value" [attr.data-automation-value]="option.label">
|
|
1338
1352
|
{{ option.label}}
|
|
@@ -1379,7 +1393,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1379
1393
|
<novo-option [disabled]="!meta?.allowCustomFilterValues" [hidden]="!meta?.allowCustomFilterValues">
|
|
1380
1394
|
<novo-select-search #filterInput allowDeselectDuringFilter></novo-select-search>
|
|
1381
1395
|
</novo-option>
|
|
1382
|
-
<!--
|
|
1396
|
+
<!-- What about optionUrl/optionType -->
|
|
1383
1397
|
@for (option of meta?.options; track optionTracker) {
|
|
1384
1398
|
<novo-option [hidden]="hideOption(option, filterInput?.value)" [value]="option.value" [attr.data-automation-value]="option.label">
|
|
1385
1399
|
{{ option.label}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novo-elements-elements-query-builder.mjs","sources":["../../../projects/novo-elements/src/elements/query-builder/query-builder.types.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.service.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.tokens.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.directives.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/abstract-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/address-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/boolean-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/date-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/date-time-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/string-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/number-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/id-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/picker-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-templates/condition-templates.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-templates/condition-templates.component.html","../../../projects/novo-elements/src/elements/query-builder/condition-builder/condition-builder.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-builder/condition-builder.component.html","../../../projects/novo-elements/src/elements/query-builder/condition-group/condition-group.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-group/condition-group.component.html","../../../projects/novo-elements/src/elements/query-builder/criteria-builder/criteria-builder.component.ts","../../../projects/novo-elements/src/elements/query-builder/criteria-builder/criteria-builder.component.html","../../../projects/novo-elements/src/elements/query-builder/query-builder.module.ts","../../../projects/novo-elements/src/elements/query-builder/novo-elements-elements-query-builder.ts"],"sourcesContent":["import { ViewContainerRef } from '@angular/core';\n\nexport enum Conjunction {\n AND = 'and',\n OR = 'or',\n NOT = 'not',\n}\n\nexport type ConditionType = '$and' | '$or' | '$not';\n\nexport type ConditionGroup = {\n [K in Conjunction as `$${K}`]?: Condition[];\n};\n\nexport type NestedConditionGroup = {\n [K in Conjunction as `$${K}`]?: ConditionOrConditionGroup[];\n};\n\nexport type ConditionOrConditionGroup = Condition | NestedConditionGroup;\n\nexport enum Operator {\n after = 'after',\n before = 'before',\n beginsWith = 'beginsWith',\n between = 'between',\n equalTo = 'equalTo',\n exclude = 'exclude',\n excludeAny = 'excludeAny',\n greaterThan = 'greaterThan',\n include = 'include',\n includeAll = 'includeAll',\n includeAny = 'includeAny',\n insideRadius = 'insideRadius',\n isEmpty = 'isEmpty',\n isNull = 'isNull',\n lessThan = 'lessThan',\n outsideRadius = 'outsideRadius',\n radius = 'radius',\n within = 'within',\n}\n\nexport type OperatorName = keyof typeof Operator;\n\nexport interface Condition {\n conditionType?: ConditionType;\n field: string;\n operator: OperatorName | string;\n scope?: string;\n value: any;\n supportingValue?: any;\n entity?: string;\n warnOnDelete?: () => Promise<boolean>;\n}\n\nexport interface Criteria {\n criteria: ConditionGroup[];\n}\n\nexport interface NestedCriteria {\n criteria: NestedConditionGroup[];\n}\n\nexport interface BaseFieldDef {\n name: string;\n label?: string;\n type: string;\n dataSpecialization?: string;\n optional?: boolean;\n multiValue?: boolean;\n inputType?: string;\n options?: { value: string | number; label: string; readOnly?: boolean }[];\n optionsUrl?: string;\n optionsType?: string;\n dataType?: string;\n icon?: string;\n}\n\nexport interface FieldConfig<T extends BaseFieldDef> {\n value: string;\n label: string;\n options: T[];\n search: (term: string) => T[];\n find: (name: string) => T;\n}\n\nexport interface AddressData {\n address_components: AddressComponent[];\n formatted_address: string;\n geometry: AddressGeometry;\n name?: string;\n place_id: string;\n radius?: AddressRadius;\n postal_codes?: string[];\n types?: string[];\n}\n\nexport interface AddressRadius {\n value: number;\n units: AddressRadiusUnitsName;\n operator?: string;\n}\n\nexport interface AddressComponent {\n long_name: string;\n short_name: string;\n types: string[];\n}\n\nexport interface AddressGeometry {\n location: AddressGeometryLocation;\n viewport: AddressGeometryViewport;\n}\n\nexport interface AddressGeometryLocation {\n lat: number;\n lng: number;\n}\n\nexport interface AddressGeometryViewport {\n north: number;\n south: number;\n east: number;\n west: number;\n}\n\nexport enum RadiusUnits {\n miles = 'miles',\n km = 'km',\n}\n\nexport type AddressRadiusUnitsName = keyof typeof RadiusUnits;\n\n/** All options that can be used to override the defaults for the address criteria */\nexport type AddressCriteriaConfig = {\n radiusEnabled?: boolean;\n radiusUnits?: AddressRadiusUnitsName;\n}\n\n/** All options that can be used to configure date pickers */\nexport type DateCriteriaConfig = {\n weekStart?: Day;\n}\n\n/** Interface used to provide an outlet for rows to be inserted into. */\nexport interface QueryFilterOutlet {\n viewContainer: ViewContainerRef;\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BaseConditionFieldDef } from './query-builder.directives';\nimport { BaseFieldDef, Conjunction, FieldConfig } from './query-builder.types';\n\nexport const defaultEditTypeFn = (field: BaseFieldDef) => {\n return field.inputType || field.dataType || field.type;\n};\n\nexport interface QueryBuilderConfig {\n fields: FieldConfig<BaseFieldDef>[];\n staticFieldSelection?: string;\n}\n\n@Injectable()\nexport class QueryBuilderService {\n private _customFieldDefs = new Set<BaseConditionFieldDef>();\n private _fieldDefsByName = new Map<string, BaseConditionFieldDef>();\n public scopes = signal([]);\n public hasMultipleScopes = computed(() => this.scopes()?.length > 1);\n /**\n * Will dispatch when properties changes, subscribe to this if component should\n * re-render when props are updated\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Function to determine operator and input templates for a field. Value passed\n * through the criteria builder Input.\n */\n public get editTypeFn(): (field: BaseFieldDef) => string {\n return this._editTypeFn;\n }\n public set editTypeFn(value: (field: BaseFieldDef) => string) {\n this._editTypeFn = value ?? defaultEditTypeFn;\n this.stateChanges.next();\n }\n private _editTypeFn: (field: BaseFieldDef) => string = defaultEditTypeFn;\n\n /**\n * The field configuration to control which types of fields are available to select\n * within the Condition Builder.\n */\n public get config(): QueryBuilderConfig {\n return this._config;\n }\n public set config(value: QueryBuilderConfig) {\n this._config = value;\n this.stateChanges.next();\n }\n private _config: QueryBuilderConfig = {\n fields: [],\n staticFieldSelection: null,\n };\n\n /**\n * The configuration to control which types of conjuntions can be used in the query builder.\n * Value passed through the criteria builder Input\n * eg. and, or, not\n */\n public get allowedGroupings(): Conjunction[] {\n return this._allowedGroupings;\n }\n public set allowedGroupings(value: Conjunction[]) {\n this._allowedGroupings = value;\n this.stateChanges.next();\n }\n private _allowedGroupings: Conjunction[];\n\n public componentHost: any;\n\n constructor(private labels: NovoLabelService) {}\n\n /** Adds a field definition that was not included as part of the content children. */\n registerFieldDef(fieldDef: BaseConditionFieldDef) {\n this._customFieldDefs.add(fieldDef);\n this._fieldDefsByName.set(fieldDef.name, fieldDef);\n }\n\n /** Removes a field definition that was not included as part of the content children. */\n unregisterFieldDef(fieldDef: BaseConditionFieldDef) {\n this._customFieldDefs.delete(fieldDef);\n this._fieldDefsByName.delete(fieldDef.name);\n }\n\n getFieldDefsByName() {\n return this._fieldDefsByName;\n }\n\n getConjunctionLabel(conjunction: string) {\n switch (conjunction.replace('$', '').toLowerCase()) {\n case Conjunction.OR:\n return this.labels.or;\n case Conjunction.NOT:\n return this.labels.not;\n case Conjunction.AND:\n default:\n return this.labels.and;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const NOVO_QUERY_BUILDER = new InjectionToken<any>('NOVO_QUERY_BUILDER');\nexport const NOVO_CRITERIA_BUILDER = new InjectionToken<any>('NOVO_CRITERIA_BUILDER');\nexport const NOVO_CONDITION_BUILDER = new InjectionToken<any>('NOVO_CONDITION_BUILDER');\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\nimport { QueryBuilderService } from './query-builder.service';\n\n/** Base interface for a condidation template directives. */\nexport interface ConditionDef {\n template: TemplateRef<any>;\n}\n\n/**\n * Contained within a novoConditionField definition describing what input should be\n * used to capture the compare value of the Condtion\n */\n@Directive({\n selector: '[novoConditionInputDef]',\n standalone: false,\n})\nexport class NovoConditionInputDef implements ConditionDef {\n constructor(/** @docs-private */ public template: TemplateRef<any>) {}\n}\n\n/**\n * Contained within a novoConditionField definition describing what operators should be available.\n */\n@Directive({\n selector: '[novoConditionOperatorsDef]',\n standalone: false,\n})\nexport class NovoConditionOperatorsDef implements ConditionDef {\n constructor(/** @docs-private */ public template: TemplateRef<any>) {}\n}\n\n/**\n * Field Field definition for the QueryBuilder.\n * Defines the inputType and operators to use for the query builder.\n */\n@Directive()\nexport class BaseConditionFieldDef {\n /** Unique name for this field. */\n @Input('novoFilterFieldDef')\n get name(): string {\n return this._name;\n }\n set name(name: string) {\n this._setNameInput(name);\n }\n protected _name: string;\n\n @ContentChild(NovoConditionInputDef) fieldInput: NovoConditionInputDef;\n @ContentChild(NovoConditionOperatorsDef) fieldOperators: NovoConditionOperatorsDef;\n\n /**\n * Transformed version of the column name that can be used as part of a CSS classname. Excludes\n * all non-alphanumeric characters and the special characters '-' and '_'. Any characters that\n * do not match are replaced by the '-' character.\n */\n cssClassFriendlyName: string;\n _fieldCssClassName: string[];\n\n defaultOperator: string;\n\n constructor() {}\n\n /**\n * Overridable method that sets the css classes that will be added to every cell in this\n * column.\n * In the future, columnCssClassName will change from type string[] to string and this\n * will set a single string value.\n * @docs-private\n */\n protected _updateFieldCssClassName() {\n this._fieldCssClassName = [`novo-filter-field-${this.cssClassFriendlyName}`];\n }\n\n protected _setNameInput(value: string) {\n // If the directive is set without a name (updated programmatically), then this setter will\n // trigger with an empty string and should not overwrite the programmatically set value.\n if (value) {\n this._name = value;\n this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');\n this._updateFieldCssClassName();\n }\n }\n}\n\n@Directive({\n selector: '[novoConditionFieldDef]',\n standalone: false,\n})\nexport class NovoConditionFieldDef extends BaseConditionFieldDef {\n constructor(private qbs: QueryBuilderService) {\n super();\n }\n register() {\n this.qbs.registerFieldDef(this);\n }\n unregister() {\n this.qbs.unregisterFieldDef(this);\n }\n}\n","import { AfterViewInit, Directive, Input, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { FormControlName, UntypedFormGroup } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { NovoConditionFieldDef } from '../query-builder.directives';\nimport { Operator } from '../query-builder.types';\n\n@Directive()\nexport abstract class AbstractConditionFieldDef implements OnDestroy, OnInit, AfterViewInit {\n /** Column name that should be used to reference this column. */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(name: string) {\n this._name = name;\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncFieldDefName();\n }\n _name: string;\n\n defaultOperator: Operator | string;\n protected _previousOperatorValue: Operator;\n\n protected operatorEditGroups: Set<Operator>[] = [];\n\n @ViewChild(NovoConditionFieldDef, { static: true }) fieldDef: NovoConditionFieldDef;\n @ViewChildren(FormControlName) formControlsByName: QueryList<FormControlName>;\n\n constructor(public labels: NovoLabelService) {}\n\n ngOnInit() {\n this._syncFieldDefName();\n this._syncFieldDefOperatorValue();\n this._previousOperatorValue = this.defaultOperator as Operator;\n // Need to add self to FilterBuilder because \"ContentChildren won't find it\"\n this.fieldDef?.register();\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.frameAfterViewInit();\n });\n }\n\n frameAfterViewInit() {\n const operatorField = this.formControlsByName.find(formControlDirective => formControlDirective.name === 'operator')?.control;\n if (operatorField) {\n this._previousOperatorValue = operatorField.value;\n }\n }\n\n ngOnDestroy() {\n this.fieldDef?.unregister();\n }\n\n /**\n * Define an edit group of operators. Once defined, if the user switches from one of these operators to another,\n * then the condition value will not be cleared. This makes sense if both operators use the same UI controls for editing.\n * @param operators The set of Operator values intended to share UI controls.\n */\n protected defineOperatorEditGroup(...operators: Operator[]): void {\n this.operatorEditGroups.push(new Set(operators));\n }\n\n onOperatorSelect(formGroup: UntypedFormGroup): void {\n let clearVal = true;\n if (this._previousOperatorValue && this.operatorEditGroups?.length) {\n const previousOperatorGroupIndex = this.operatorEditGroups.findIndex(grp => grp.has(this._previousOperatorValue));\n const newOperatorValue = formGroup.get('operator').getRawValue();\n const newOperatorGroupIndex = this.operatorEditGroups.findIndex(grp => grp.has(newOperatorValue));\n if (previousOperatorGroupIndex !== -1 && newOperatorGroupIndex !== -1 && previousOperatorGroupIndex === newOperatorGroupIndex) {\n clearVal = false;\n }\n }\n this._previousOperatorValue = formGroup.get('operator').value;\n if (clearVal) {\n formGroup.get('value').setValue(null);\n }\n }\n\n /** Synchronizes the column definition name with the text column name. */\n private _syncFieldDefName() {\n if (this.fieldDef) {\n this.fieldDef.name = this.name;\n }\n }\n\n private _syncFieldDefOperatorValue() {\n if (this.fieldDef) {\n this.fieldDef.defaultOperator = this.defaultOperator;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n InputSignal,\n OnDestroy,\n QueryList,\n Signal,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { PlacesListComponent } from 'novo-elements/elements/places';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Key } from 'novo-elements/utils';\nimport { Subscription } from 'rxjs';\nimport {\n AddressCriteriaConfig,\n AddressData,\n AddressRadius,\n AddressRadiusUnitsName,\n Operator,\n RadiusUnits,\n} from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { NovoSelectElement } from 'novo-elements/elements/select';\n\n/**\n * Handle selection of field values when a list of options is provided.\n */\n@Component({\n selector: 'novo-address-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n <novo-option value=\"insideRadius\" *ngIf=\"radiusEnabled()\">{{ labels.insideRadius }}</novo-option>\n <novo-option value=\"outsideRadius\" *ngIf=\"radiusEnabled()\">{{ labels.outsideRadius }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-flex justify=\"space-between\" align=\"end\">\n <novo-field #input *ngIf=\"['radius', 'insideRadius', 'outsideRadius'].includes(formGroup.value.operator)\" class=\"address-radius\">\n <input\n novoInput\n paddingLeft=\"3px\"\n type=\"number\"\n min=\"1\"\n max=\"9999\"\n step=\"1\"\n formControlName=\"supportingValue\"\n #distanceInput\n (input)=\"onRadiusSelect(formGroup, $event)\"\n />\n <span marginLeft=\"2px\" marginRight=\"4px\" paddingTop=\"3px\">{{ unitsLabel() }}</span>\n </novo-field>\n <novo-field #novoField class=\"address-location\">\n <novo-chip-list [(ngModel)]=\"chipListModel\" [ngModelOptions]=\"{ standalone: true }\" (click)=\"openPlacesList(viewIndex)\">\n <novo-chip *ngFor=\"let item of formGroup.get('value').value\" (removed)=\"remove(item, formGroup, viewIndex)\">\n <novo-text ellipsis [tooltip]=\"item.formatted_address\" tooltipOnOverflow>{{ item.formatted_address }}</novo-text>\n <novo-icon novoChipRemove>close</novo-icon>\n </novo-chip>\n <input\n novoChipInput\n [id]=\"viewIndex\"\n [placeholder]=\"labels.location\"\n (keyup)=\"onKeyup($event, viewIndex)\"\n (keydown)=\"onKeydown($event, viewIndex)\"\n [picker]=\"placesPicker\"\n #addressInput/>\n </novo-chip-list>\n <novo-picker-toggle [overlayId]=\"viewIndex\" icon=\"location\" novoSuffix>\n <google-places-list\n [term]=\"term\"\n (select)=\"selectPlace($event, formGroup, viewIndex)\"\n formControlName=\"value\"\n #placesPicker/>\n </novo-picker-toggle>\n </novo-field>\n </novo-flex>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultAddressConditionDef extends AbstractConditionFieldDef implements OnDestroy {\n @ViewChildren(NovoPickerToggleElement) overlayChildren: QueryList<NovoPickerToggleElement>;\n @ViewChildren('addressInput') inputChildren: QueryList<ElementRef>;\n @ViewChild('placesPicker') placesPicker: PlacesListComponent;\n @ViewChildren(NovoSelectElement) addressSideTest: any;\n\n // Overridable defaults\n defaults: AddressCriteriaConfig = {\n radiusEnabled: false,\n radiusUnits: 'miles',\n };\n config: InputSignal<AddressCriteriaConfig> = input();\n radiusUnits: Signal<AddressRadiusUnitsName> = computed(() =>\n this.config()?.radiusUnits || this.defaults.radiusUnits,\n );\n radiusEnabled: Signal<boolean> = computed(() =>\n this.config()?.radiusEnabled || this.defaults.radiusEnabled,\n );\n unitsLabel: Signal<string> = computed(() =>\n this.radiusUnits() === RadiusUnits.miles ? this.labels.miles : this.labels.km,\n );\n\n defaultOperator = Operator.includeAny;\n chipListModel: any = '';\n term: string = '';\n\n private _addressChangesSubscription: Subscription = Subscription.EMPTY;\n\n public element = inject(ElementRef);\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.includeAny, Operator.excludeAny, Operator.insideRadius, Operator.outsideRadius);\n }\n\n ngOnDestroy() {\n this._addressChangesSubscription.unsubscribe();\n }\n\n onKeyup(event, viewIndex) {\n if (![Key.Escape, Key.Enter].includes(event.key)) {\n this.openPlacesList(viewIndex);\n }\n this.term = event.target.value;\n }\n\n onKeydown(event, viewIndex) {\n if (!this.placesPicker.dropdownOpen) {\n this.openPlacesList(viewIndex);\n this.placesPicker.dropdownOpen = true;\n }\n if ([Key.Escape, Key.Tab].includes(event.key)) {\n this.closePlacesList(viewIndex);\n } else {\n this.placesPicker.onKeyDown(event);\n }\n }\n\n getValue(formGroup: AbstractControl): AddressData[] {\n return formGroup.value.value || [];\n }\n\n getCurrentOverlay(viewIndex: string): NovoPickerToggleElement {\n return this.overlayChildren?.find(item => item.overlayId === viewIndex);\n }\n\n getCurrentInput(viewIndex: string): ElementRef {\n return this.inputChildren?.find(item => (item as any).nativeElement.id === viewIndex);\n }\n\n openPlacesList(viewIndex) {\n this.getCurrentOverlay(viewIndex)?.openPanel();\n }\n\n closePlacesList(viewIndex) {\n this.getCurrentOverlay(viewIndex)?.closePanel();\n }\n\n selectPlace(event: any, formGroup: AbstractControl, viewIndex: string): void {\n const valueToAdd: AddressData = {\n address_components: event.address_components,\n formatted_address: event.formatted_address,\n geometry: event.geometry,\n name: event.name,\n postal_codes: event.postal_codes,\n place_id: event.place_id,\n types: event.types,\n };\n const current: AddressData | AddressData[] = this.getValue(formGroup);\n const updated: AddressData[] = Array.isArray(current) ? [...current, valueToAdd] : [valueToAdd];\n formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, updated));\n\n this.inputChildren.forEach(inputChild => {\n inputChild.nativeElement.value = '';\n })\n this.getCurrentInput(viewIndex)?.nativeElement.focus();\n this.closePlacesList(viewIndex);\n }\n\n remove(valueToRemove: AddressData, formGroup: AbstractControl, viewIndex: string): void {\n const current = this.getValue(formGroup);\n const index = current.indexOf(valueToRemove);\n if (index >= 0) {\n const oldValue = [...current]\n oldValue.splice(index, 1);\n formGroup.get('value').setValue(oldValue);\n }\n this.closePlacesList(viewIndex);\n }\n\n // Override abstract behavior - allow moving location from includeAny to radius, but when moving the opposite direction,\n // trim out radius information from the value\n onOperatorSelect(formGroup: UntypedFormGroup): void {\n const previousOperator = this._previousOperatorValue;\n super.onOperatorSelect(formGroup);\n if ([previousOperator, formGroup.get('operator').getRawValue()].indexOf(Operator.insideRadius) !== -1 &&\n formGroup.get('value').getRawValue() != null) {\n formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, this.getValue(formGroup)));\n }\n }\n\n onRadiusSelect(formGroup: AbstractControl, event): void {\n const maxLengthRadius = event.target.value.slice(0, 4);\n event.target.value = maxLengthRadius;\n formGroup.get('supportingValue').setValue(maxLengthRadius);\n // We must dirty the form explicitly to show up as a user modification when it was done programmatically\n formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, this.getValue(formGroup)));\n formGroup.markAsDirty();\n }\n\n private updateRadiusInValues(formGroup: AbstractControl, values: AddressData[]): AddressData[] {\n return values.map(val => ({\n ...val,\n radius: this.isRadiusOperatorSelected(formGroup) ? this.getRadiusData(formGroup) : undefined,\n }));\n }\n\n private getRadiusData(formGroup: AbstractControl): AddressRadius {\n return {\n value: formGroup.value.supportingValue,\n units: this.radiusUnits(),\n operator: formGroup.value.operator,\n };\n }\n\n private isRadiusOperatorSelected(formGroup: AbstractControl): boolean {\n return ['insideRadius', 'outsideRadius'].includes(formGroup.get('operator')?.value) && formGroup.value?.supportingValue !== null;\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * When constructing a query using a field that is a boolean with only true/false as possible values.\n */\n@Component({\n selector: 'novo-boolean-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"include\">{{ labels.equals }}</novo-option>\n <novo-option value=\"exclude\">{{ labels.doesNotEqual }}</novo-option>\n <novo-option value=\"isNull\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoConditionInputDef=\"let formGroup; fieldMeta as meta\" [style.maxWidth.px]=\"250\" [formGroup]=\"formGroup\">\n @let isNull = formGroup.value.operator === 'isNull';\n @let useYesNo = isNull || meta.dataType === 'Boolean';\n @let customOptions = !isNull && meta.options?.length === 2;\n @if (customOptions) {\n <novo-radio-group formControlName=\"value\">\n <novo-radio *ngFor=\"let opt of meta.options; trackBy: optIdentify\" [value]=\"opt.value\">{{ opt.label }}</novo-radio>\n </novo-radio-group>\n } @else {\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ useYesNo ? labels.yes : labels.true }}</novo-radio>\n <novo-radio [value]=\"false\">{{ useYesNo ? labels.no : labels.false }}</novo-radio>\n </novo-radio-group>\n }\n </novo-field>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultBooleanConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.include;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.include, Operator.exclude, Operator.isNull);\n }\n\n optIdentify(option) {\n return option.label;\n }\n}\n","import { ChangeDetectionStrategy, Component, input, InputSignal, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DateCriteriaConfig, Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\n\n/**\n * Most complicated of the default conditions defs, a date needs to provide a different\n * input type depending on the operator selected.\n */\n@Component({\n selector: 'novo-date-condition-def',\n template: `\n <ng-container novoConditionFieldDef=\"DATE\">\n <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"before\">{{ labels.before }}</novo-option>\n <novo-option value=\"after\">{{ labels.after }}</novo-option>\n <novo-option value=\"equalTo\">{{ labels.equals }}</novo-option>\n <novo-option value=\"within\">{{ labels.within }}</novo-option>\n <novo-option value=\"between\">{{ labels.between }}</novo-option>\n <novo-option value=\"isNull\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['before', 'after', 'equalTo']\">\n <input novoInput dateFormat=\"yyyy-mm-dd\" [picker]=\"datepicker\" formControlName=\"value\"/>\n <novo-picker-toggle triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-picker #datepicker (onSelect)=\"closePanel($event, viewIndex)\" [weekStart]=\"config()?.weekStart\"></novo-date-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['between']\">\n <input novoInput dateRangeFormat=\"date\" [picker]=\"daterangepicker\" formControlName=\"value\"/>\n <novo-picker-toggle [for]=\"daterangepicker\" triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-picker #daterangepicker (onSelect)=\"closePanel($event, viewIndex)\" [weekStart]=\"config()?.weekStart\" mode=\"range\"\n numberOfMonths=\"2\"></novo-date-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['within']\">\n <novo-select [placeholder]=\"labels.selectDateRange\" formControlName=\"value\">\n <novo-option value=\"future\">{{ labels.future }}</novo-option>\n <novo-option value=\"-1\">{{ labels.past1Day }}</novo-option>\n <novo-option value=\"-7\">{{ labels.past7Days }}</novo-option>\n <novo-option value=\"-14\">{{ labels.past14Days }}</novo-option>\n <novo-option value=\"-21\">{{ labels.past21Days }}</novo-option>\n <novo-option value=\"-30\">{{ labels.past30Days }}</novo-option>\n <novo-option value=\"-60\">{{ labels.past60Days }}</novo-option>\n <novo-option value=\"-90\">{{ labels.past90Days }}</novo-option>\n <novo-option value=\"-180\">{{ labels.past180Days }}</novo-option>\n <novo-option value=\"-270\">{{ labels.past270Days }}</novo-option>\n <novo-option value=\"-365\">{{ labels.past1Year }}</novo-option>\n <novo-option value=\"1\">{{ labels.next1Day }}</novo-option>\n <novo-option value=\"7\">{{ labels.next7Days }}</novo-option>\n <novo-option value=\"14\">{{ labels.next14Days }}</novo-option>\n <novo-option value=\"21\">{{ labels.next21Days }}</novo-option>\n <novo-option value=\"30\">{{ labels.next30Days }}</novo-option>\n <novo-option value=\"60\">{{ labels.next60Days }}</novo-option>\n <novo-option value=\"90\">{{ labels.next90Days }}</novo-option>\n <novo-option value=\"180\">{{ labels.next180Days }}</novo-option>\n <novo-option value=\"270\">{{ labels.next270Days }}</novo-option>\n <novo-option value=\"365\">{{ labels.next1Year }}</novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultDateConditionDef extends AbstractConditionFieldDef {\n @ViewChildren(NovoPickerToggleElement)\n overlayChildren: QueryList<NovoPickerToggleElement>;\n\n defaultOperator = Operator.within;\n\n config: InputSignal<DateCriteriaConfig> = input();\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.before, Operator.after, Operator.equalTo);\n }\n\n closePanel(event, viewIndex): void {\n const overlay = this.overlayChildren.find(item => item.overlayId === viewIndex);\n overlay.closePanel(event);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, InputSignal, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { DateCriteriaConfig, Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * Most complicated of the default conditions defs, a date needs to provide a different\n * input type depending on the operator selected.\n */\n@Component({\n selector: 'novo-date-time-condition-def',\n template: `\n <ng-container novoConditionFieldDef=\"DATE\">\n <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"before\">{{ labels.before }}</novo-option>\n <novo-option value=\"after\">{{ labels.after }}</novo-option>\n <novo-option value=\"equalTo\">{{ labels.equals }}</novo-option>\n <novo-option value=\"within\">{{ labels.within }}</novo-option>\n <novo-option value=\"between\">{{ labels.between }}</novo-option>\n <novo-option value=\"isNull\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['after']\">\n <input novoInput dateTimeFormat=\"iso8601\" [picker]=\"datetimepicker\" formControlName=\"value\"/>\n <novo-picker-toggle triggerOnFocus [width]=\"-1\" [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-time-picker defaultTime=\"end\" (onSelect)=\"closePanel($event, viewIndex)\" #datetimepicker\n [weekStart]=\"config()?.weekStart\"></novo-date-time-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['before']\">\n <input novoInput dateTimeFormat=\"iso8601\" [picker]=\"datetimepickerbefore\" formControlName=\"value\"/>\n <novo-picker-toggle triggerOnFocus [width]=\"-1\" [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-time-picker defaultTime=\"start\" (onSelect)=\"closePanel($event, viewIndex)\" #datetimepickerbefore\n [weekStart]=\"config()?.weekStart\"></novo-date-time-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['equalTo']\">\n <input novoInput dateFormat=\"yyyy-mm-dd\" [picker]=\"datepicker\" formControlName=\"value\"/>\n <novo-picker-toggle triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-picker (onSelect)=\"closePanel($event, viewIndex)\" #datepicker [weekStart]=\"config()?.weekStart\"></novo-date-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['between']\">\n <input novoInput dateRangeFormat=\"date\" [picker]=\"daterangepicker\" formControlName=\"value\"/>\n <novo-picker-toggle [for]=\"daterangepicker\" triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-picker #daterangepicker (onSelect)=\"closePanel($event, viewIndex)\" mode=\"range\" numberOfMonths=\"2\"\n [weekStart]=\"config()?.weekStart\"></novo-date-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['within']\">\n <novo-select [placeholder]=\"labels.selectDateRange\" formControlName=\"value\">\n <novo-option value=\"future\">{{ labels.future }}</novo-option>\n <novo-option value=\"-1\">{{ labels.past1Day }}</novo-option>\n <novo-option value=\"-7\">{{ labels.past7Days }}</novo-option>\n <novo-option value=\"-14\">{{ labels.past14Days }}</novo-option>\n <novo-option value=\"-21\">{{ labels.past21Days }}</novo-option>\n <novo-option value=\"-30\">{{ labels.past30Days }}</novo-option>\n <novo-option value=\"-60\">{{ labels.past60Days }}</novo-option>\n <novo-option value=\"-90\">{{ labels.past90Days }}</novo-option>\n <novo-option value=\"-180\">{{ labels.past180Days }}</novo-option>\n <novo-option value=\"-270\">{{ labels.past270Days }}</novo-option>\n <novo-option value=\"-365\">{{ labels.past1Year }}</novo-option>\n <novo-option value=\"1\">{{ labels.next1Day }}</novo-option>\n <novo-option value=\"7\">{{ labels.next7Days }}</novo-option>\n <novo-option value=\"14\">{{ labels.next14Days }}</novo-option>\n <novo-option value=\"21\">{{ labels.next21Days }}</novo-option>\n <novo-option value=\"30\">{{ labels.next30Days }}</novo-option>\n <novo-option value=\"60\">{{ labels.next60Days }}</novo-option>\n <novo-option value=\"90\">{{ labels.next90Days }}</novo-option>\n <novo-option value=\"180\">{{ labels.next180Days }}</novo-option>\n <novo-option value=\"270\">{{ labels.next270Days }}</novo-option>\n <novo-option value=\"365\">{{ labels.next1Year }}</novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultDateTimeConditionDef extends AbstractConditionFieldDef {\n @ViewChildren(NovoPickerToggleElement)\n overlayChildren: QueryList<NovoPickerToggleElement>;\n\n defaultOperator = Operator.within;\n\n config: InputSignal<DateCriteriaConfig> = input();\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.before, Operator.after);\n }\n\n closePanel(event, viewIndex): void {\n const overlay = this.overlayChildren.find(item => item.overlayId === viewIndex);\n overlay.closePanel(event);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\n\n/**\n * Constructing filters against String fields can be complex. Each \"chip\" added to the\n * condition can be independently used to query a database. Not all systems support\n * querying within a text column, ie sql unless LIKE is enabled. This could result in a\n * performance penalty.\n */\n@Component({\n selector: 'novo-string-condition-def',\n template: `\n <!-- fieldTypes should be UPPERCASE -->\n <ng-container novoConditionFieldDef=\"STRING\">\n <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n <novo-option value=\"includeAll\" *ngIf=\"!meta?.removeIncludeAll\">{{ labels.includeAll }}</novo-option>\n <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n <novo-option value=\"beginsWith\" *ngIf=\"meta?.hasBeginsWith\">{{ labels.beginsWith }}</novo-option>\n <novo-option value=\"isEmpty\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['includeAny', 'includeAll', 'excludeAny', 'beginsWith']\">\n <novo-chip-list #chipList aria-label=\"filter value\" multiple=\"true\" [chipsToggleable]=\"false\" formControlName=\"value\">\n <novo-chip *ngFor=\"let chip of formGroup.value?.value || []\" [value]=\"chip\" (removed)=\"remove(chip, formGroup)\">\n <novo-text ellipsis [tooltip]=\"chip\" tooltipOnOverflow>{{ chip }}</novo-text>\n <novo-icon novoChipRemove>close</novo-icon>\n </novo-chip>\n <input\n novoChipInput\n [placeholder]=\"labels.typeToAddChips\"\n autocomplete=\"off\"\n (novoChipInputTokenEnd)=\"add($event, formGroup)\"\n />\n </novo-chip-list>\n <novo-autocomplete></novo-autocomplete>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isEmpty']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // means the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultStringConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.includeAny;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.includeAny, Operator.includeAll, Operator.excludeAny, Operator.beginsWith);\n }\n\n getValue(formGroup: AbstractControl): any[] {\n return formGroup.value?.value || [];\n }\n\n add(event: any, formGroup: AbstractControl): void {\n const input = event.input;\n input.value = '';\n const valueToAdd = event.value;\n if (valueToAdd !== '') {\n const current: any[] = this.getValue(formGroup);\n const newValue: any[] = Array.isArray(current) ? [...current, valueToAdd] : [valueToAdd];\n this.setFormValue(formGroup, newValue);\n }\n }\n\n remove(valueToRemove: string, formGroup: AbstractControl): void {\n const current = this.getValue(formGroup);\n const index = current.indexOf(valueToRemove);\n if (index >= 0) {\n const value = [...current]\n value.splice(index, 1);\n this.setFormValue(formGroup, value);\n }\n }\n\n private setFormValue(formGroup: AbstractControl, newValue: any[]) {\n formGroup.get('value').setValue(newValue);\n formGroup.markAsDirty();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * When constructing a query using a field that is an Int, Double, Number ...etc.\n * TODO: Do we implement currency formation here potentially?\n */\n@Component({\n selector: 'novo-number-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"greaterThan\">{{ labels.greaterThan }}</novo-option>\n <novo-option value=\"lessThan\">{{ labels.lessThan }}</novo-option>\n <novo-option value=\"equalTo\">{{ labels.equalTo }}</novo-option>\n <novo-option value=\"between\">{{ labels.between }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['greaterThan', 'lessThan', 'equalTo']\">\n <input novoInput type=\"number\" formControlName=\"value\"/>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n <ng-container *novoSwitchCases=\"['between']\">\n <novo-number-range formControlName=\"value\"/>\n </ng-container>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultNumberConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.equalTo;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.greaterThan, Operator.lessThan, Operator.equalTo);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\n\n/**\n * Any condition that has a type of ID usually only is queried by ID.\n */\n@Component({\n selector: 'novo-id-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\">\n <novo-option value=\"equalTo\">{{ labels.equalTo }}</novo-option>\n <ng-content></ng-content>\n </novo-select>\n </novo-field>\n <novo-field *novoConditionInputDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <input novoInput type=\"number\" min=\"1\" step=\"1\" formControlName=\"value\" />\n </novo-field>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultIdConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.equalTo;\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BaseFieldDef, Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { NovoSelectElement } from 'novo-elements/elements/select';\n\ntype FieldOption = BaseFieldDef['options'][number];\n/**\n * Handle selection of field values when a list of options is provided.\n */\n@Component({\n selector: 'novo-picker-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n <novo-option value=\"includeAll\" *ngIf=\"!meta?.removeIncludeAll\">{{ labels.includeAll }}</novo-option>\n <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n <novo-option value=\"isNull\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; fieldMeta as meta\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['includeAny', 'includeAll', 'excludeAny']\">\n <novo-select #select extupdatefix formControlName=\"value\" [placeholder]=\"labels.select\" [multiple]=\"true\">\n <novo-option [disabled]=\"!meta?.allowCustomFilterValues\" [hidden]=\"!meta?.allowCustomFilterValues\">\n <novo-select-search #filterInput allowDeselectDuringFilter></novo-select-search>\n </novo-option>\n <!-- WHat about optionUrl/optionType -->\n @for (option of meta?.options; track optionTracker) {\n <novo-option [hidden]=\"hideOption(option, filterInput?.value)\" [value]=\"option.value\" [attr.data-automation-value]=\"option.label\">\n {{ option.label}}\n </novo-option>\n }\n @for (option of customOptions(meta?.options, select); track optionTracker) {\n <novo-option [hidden]=\"hideOption(option, filterInput?.value)\" [value]=\"option.value\" [attr.data-automation-value]=\"option.label\">\n {{ option.label}}\n </novo-option>\n }\n <novo-option class=\"add-option\" *ngIf=\"showAddOption(meta, select, filterInput?.value)\" [value]=\"filterInput?.value\" [allowSelection]=\"false\">\n {{filterInput.value}}\n <novo-icon class=\"add-icon\" novoSuffix>add-thin</novo-icon>\n </novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.includeAny;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.includeAny, Operator.includeAll, Operator.excludeAny);\n }\n\n showAddOption(meta, select, filterValue: string): boolean {\n if (!(meta?.allowCustomFilterValues)) {\n return false;\n }\n filterValue = filterValue?.trim().toLowerCase();\n if (!filterValue) {\n return false;\n }\n if (select.value && select.value.find(selectValue => selectValue.trim().toLowerCase() === filterValue)) {\n return false;\n }\n return meta?.options && meta.options.find(opt => {\n const optionLabel = opt.label.trim().toLowerCase();\n return optionLabel === filterValue;\n }) == null;\n }\n\n optionTracker(option: FieldOption) {\n return `${option.value}~~~${option.label}`;\n }\n\n hideOption(option: FieldOption, filterValue: string): boolean {\n return filterValue && (option.value.toString().indexOf(filterValue) === -1 &&\n !option.label.toLowerCase().includes(filterValue.toLowerCase()));\n }\n\n customOptions(options: FieldOption[], select: NovoSelectElement): FieldOption[] {\n return select.value?.filter((selectedOption: string) => {\n return (!options || !(options.find(option => option.value === selectedOption)));\n }).map(value => ({\n value,\n label: value,\n }));\n }\n\n applyCustomItem() {\n // Method to handle adding a new item when \"Add Item\" is selected\n // This is a placeholder for potential custom logic to add new items\n // Could be implemented to open a modal, trigger a service call, etc.\n console.warn('Custom item addition not implemented');\n\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { AddressCriteriaConfig, DateCriteriaConfig } from '../query-builder.types';\n\n@Component({\n selector: 'novo-condition-templates',\n templateUrl: './condition-templates.component.html',\n standalone: false,\n})\nexport class NovoConditionTemplatesComponent {\n @Input() addressConfig: AddressCriteriaConfig;\n @Input() dateConfig: DateCriteriaConfig;\n}\n","<novo-id-condition-def name=\"ID\"/>\n<novo-date-condition-def name=\"DATE\" [config]=\"dateConfig\"/>\n<novo-date-time-condition-def name=\"TIMESTAMP\" [config]=\"dateConfig\"/>\n<novo-string-condition-def name=\"STRING\"/>\n<novo-number-condition-def name=\"FLOAT\"/>\n<novo-number-condition-def name=\"INTEGER\"/>\n<novo-number-condition-def name=\"BIGDECIMAL\"/>\n<novo-number-condition-def name=\"DOUBLE\"/>\n<novo-address-condition-def name=\"ADDRESS\" [config]=\"addressConfig\"/>\n<novo-boolean-condition-def name=\"BOOLEAN\"/>\n<novo-picker-condition-def name=\"SELECT\"/>\n<novo-string-condition-def name=\"DEFAULT\"/>\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n SimpleChanges,\n SkipSelf,\n ViewChild,\n ViewContainerRef,\n computed,\n input,\n} from '@angular/core';\nimport { ControlContainer, FormControl, FormGroup } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { BaseConditionFieldDef } from '../query-builder.directives';\nimport { QueryBuilderConfig, QueryBuilderService } from '../query-builder.service';\nimport { NOVO_CONDITION_BUILDER } from '../query-builder.tokens';\nimport { AddressCriteriaConfig, BaseFieldDef, DateCriteriaConfig, FieldConfig, QueryFilterOutlet } from '../query-builder.types';\nimport { Helpers } from 'novo-elements/utils';\n\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\n@Directive({\n selector: '[conditionInputOutlet]',\n standalone: false,\n})\nexport class ConditionInputOutlet implements QueryFilterOutlet {\n constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {}\n}\n\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\n@Directive({\n selector: '[conditionOperatorOutlet]',\n standalone: false,\n})\nexport class ConditionOperatorOutlet implements QueryFilterOutlet {\n constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {}\n}\n\n@Component({\n selector: 'novo-condition-builder',\n templateUrl: './condition-builder.component.html',\n styleUrls: ['./condition-builder.component.scss'],\n providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent },\n {\n provide: QueryBuilderService,\n deps: [NovoLabelService, [new SkipSelf(), new Optional(), QueryBuilderService]],\n useFactory: (labelService: NovoLabelService, queryBuilderService?: QueryBuilderService) => {\n if (!queryBuilderService) {\n queryBuilderService = new QueryBuilderService(labelService);\n }\n return queryBuilderService;\n },\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class ConditionBuilderComponent implements OnInit, OnChanges, AfterContentInit, AfterViewInit, OnDestroy {\n @ViewChild(ConditionOperatorOutlet, { static: true }) _operatorOutlet: ConditionOperatorOutlet;\n @ViewChild(ConditionInputOutlet, { static: true }) _inputOutlet: ConditionInputOutlet;\n\n @Input() label: any;\n @Input() scope: string;\n @Input() andIndex: number;\n @Input() groupIndex: number;\n @Input() addressConfig: AddressCriteriaConfig;\n @Input() dateConfig: DateCriteriaConfig;\n hideOperator = input(true);\n conditionType = input();\n\n // This component can either be directly hosted as a host to a condition, or it can be part of a condition group within a criteria builder.\n // In the former case, config will come from inputs, and we will instantiate our own QueryBuilderService. In the latter, it comes from\n // the QueryBuilderService.\n inputConfig = input<QueryBuilderConfig>(null, { alias: 'config'});\n inputEditTypeFn = input<(field: BaseFieldDef) => string>(null, { alias: 'editTypeFn'});\n private config = computed<QueryBuilderConfig>(() => {\n if (this.isConditionHost) {\n this.queryBuilderService.config = this.inputConfig();\n }\n return this.queryBuilderService.config;\n });\n private editTypeFn = computed<(field: BaseFieldDef) => string>(() => {\n if (this.isConditionHost) {\n this.queryBuilderService.editTypeFn = this.inputEditTypeFn();\n }\n return this.queryBuilderService.editTypeFn;\n });\n\n public parentForm: FormGroup;\n public fieldConfig: FieldConfig<BaseFieldDef>;\n public searches!: Subscription;\n public results$: Promise<any[]>;\n public searchTerm: FormControl = new FormControl();\n public fieldDisplayWith;\n public displayIcon: string;\n\n public staticFieldSelection = computed(() => this.config().staticFieldSelection);\n private _lastContext: any = {};\n @HostBinding('class.condition-host')\n public isConditionHost = false;\n\n public gridColumns = computed(() => {\n if (this.staticFieldSelection()) {\n return '13rem 1fr';\n } else {\n const firstColumnWidth = this.hideOperator() ? '20rem' : '16rem';\n return `${firstColumnWidth} 13rem 1fr`;\n }\n });\n\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n constructor(\n public labels: NovoLabelService,\n private cdr: ChangeDetectorRef,\n private queryBuilderService: QueryBuilderService,\n private controlContainer: ControlContainer,\n ) {\n if (!queryBuilderService.componentHost) {\n queryBuilderService.componentHost = this;\n this.isConditionHost = true;\n this.groupIndex = 0;\n this.andIndex = 0;\n }\n }\n\n ngOnInit() {\n this.parentForm = this.controlContainer.control as FormGroup;\n this.parentForm.controls.field.valueChanges.subscribe((value) => {\n Promise.resolve().then(() => this.updateFieldSelection());\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.inputConfig?.previousValue?.staticFieldSelection &&\n changes.inputConfig.previousValue.staticFieldSelection !== changes.inputConfig.currentValue.staticFieldSelection) {\n this.parentForm.controls.field.setValue(changes.inputConfig.currentValue.staticFieldSelection);\n }\n }\n\n ngAfterContentInit() {\n const allFields = this.config()?.fields || [];\n const scopedFields = this.scope ? allFields.find((field) => field.value === this.scope) : allFields[0];\n allFields.length && this.changeFieldOptions(scopedFields);\n this.searches = this.searchTerm.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe((term) => {\n this.results$ = Promise.resolve(\n this.fieldConfig.options.filter(\n (f) => f.name.toLowerCase().includes(term.toLowerCase()) || f.label?.toLowerCase().includes(term.toLowerCase()),\n ),\n );\n this.cdr.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n if (this.parentForm.value?.field !== null) {\n Promise.resolve().then(() => this.updateFieldSelection());\n }\n }\n\n ngOnDestroy() {\n this.searches?.unsubscribe();\n // Clear all outlets and Maps\n [this._operatorOutlet.viewContainer, this._inputOutlet.viewContainer].forEach((def) => {\n def.clear();\n });\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n /**\n * Updates the Conditions \"Field\" Options to Change base on new Scope\n * @param fieldConfig\n */\n changeFieldOptions(fieldConfig: FieldConfig<BaseFieldDef>) {\n this.fieldConfig = fieldConfig;\n this.searchTerm.setValue('');\n this.results$ = Promise.resolve(this.fieldConfig.options);\n }\n\n /**\n * Resets the input and operator view containers, regenerates the field templates,\n * and marks the component for change detection.\n *\n * Use this method after updating form controls to reinitialize the input and\n * operator fields so that the view reflects the latest form control changes.\n *\n * @returns void\n */\n resetInputAndOperator(): void {\n this._inputOutlet.viewContainer.clear();\n this._operatorOutlet.viewContainer.clear();\n this.createFieldTemplates();\n this.cdr.markForCheck();\n }\n\n getField() {\n const field = this.parentForm?.value?.field;\n if (!field) {\n return null;\n }\n return this.fieldConfig.find(field);\n }\n\n getDefaultField() {\n const fields = this.fieldConfig.options;\n if (fields?.length) {\n return fields[0].name;\n }\n return null;\n }\n\n updateFieldSelection() {\n const fieldConf = this.getField();\n if (!fieldConf) {\n this.parentForm.get('field').setValue(this.getDefaultField());\n return;\n } else {\n this.fieldDisplayWith = () => fieldConf.label || fieldConf.name;\n this.displayIcon = fieldConf.icon || null;\n }\n const { field } = this.parentForm.value;\n\n if (this._lastContext.field !== field) {\n if (this._lastContext.field) {\n // only clearing operator/value if field was previously defined so we can preload values onto the form\n this.parentForm.get('value').setValue(null);\n this.parentForm.get('operator').setValue(null);\n }\n this.createFieldTemplates();\n }\n setTimeout(() => this.updateConditionType());\n\n this._lastContext = { ...this.parentForm.value };\n this.cdr.markForCheck();\n }\n\n updateConditionType() {\n this.parentForm.get('conditionType')?.setValue(this.conditionType());\n }\n\n private findDefinitionForField(field) {\n if (!field) {\n return;\n }\n let editType = this.editTypeFn()(field);\n // Don't look at dataSpecialization it is no good, this misses currency, and percent\n const { name } = field;\n if (editType.toUpperCase() === 'RADIO') {\n editType = this.doesFieldQualifyAsBinary(field) ? 'BOOLEAN' : 'SELECT';\n }\n const fieldDefsByName = this.queryBuilderService.getFieldDefsByName();\n // Check Fields by priority for match Field Definition\n const key = [name, editType?.toUpperCase(), 'DEFAULT'].find((it) => fieldDefsByName.has(it));\n return fieldDefsByName.get(key);\n }\n\n private doesFieldQualifyAsBinary(field): boolean {\n if (field.dataType === 'Boolean') {\n return true;\n }\n // If no options are presented, use True/False options.\n const optionCount = field.options?.length\n if (!Helpers.isNumber(optionCount) || optionCount === 0) {\n return true;\n }\n // If the field uses 2 options, we can show 2 radio values for that. 1 is an invalid state, but better displayed with a Select picker.\n return field.options.length === 2;\n }\n\n private createFieldTemplates() {\n const definition = this.findDefinitionForField(this.getField());\n\n if (!this.parentForm.get('operator').value) {\n this.parentForm.get('operator').setValue(definition.defaultOperator);\n }\n\n this.createFieldOperators(definition);\n this.createFieldInput(definition);\n }\n\n private createFieldOperators(definition: BaseConditionFieldDef) {\n this._operatorOutlet.viewContainer.clear();\n if (definition) {\n const context = { $implicit: this.parentForm, fieldMeta: this.getField() };\n this._operatorOutlet.viewContainer.createEmbeddedView(definition.fieldOperators.template, context);\n }\n this.cdr.markForCheck();\n }\n\n private createFieldInput(definition: BaseConditionFieldDef) {\n this._inputOutlet.viewContainer.clear();\n if (definition) {\n const context = { $implicit: this.parentForm, fieldMeta: this.getField(), viewIndex: this.groupIndex.toString() + this.andIndex.toString() };\n this._inputOutlet.viewContainer.createEmbeddedView(definition.fieldInput.template, context);\n }\n this.cdr.markForCheck();\n }\n}\n","<form [formGroup]=\"parentForm\">\n <novo-grid gap=\"1rem\" [columns]=\"gridColumns()\" align=\"end\">\n <novo-field class=\"condition-field\" *ngIf=\"!staticFieldSelection()\">\n <novo-select\n [placeholder]=\"labels.chooseAField\"\n formControlName=\"field\"\n (onSelect)=\"updateFieldSelection()\"\n overlayWidth=\"24rem\"\n overlayHeight=\"20rem\"\n [displayWith]=\"fieldDisplayWith\"\n [style.minWidth.px]=\"160\"\n [style.maxWidth.px]=\"(hideOperator() || isConditionHost) ? 200 : 160\"\n [displayIcon]=\"displayIcon\">\n <novo-optgroup class=\"filter-search-results\">\n <novo-option>\n <novo-select-search [formControl]=\"searchTerm\" [clearSearchInput]=\"false\"></novo-select-search>\n </novo-option>\n <ng-container *ngIf=\"results$ | async as results; else loading\">\n <ng-container *ngIf=\"results.length\">\n <novo-option *ngFor=\"let field of results\" value=\"{{ field.name }}\"\n [attr.data-automation-id]=\"field.name\">\n {{ field.label || field.name }}\n </novo-option>\n </ng-container>\n </ng-container>\n </novo-optgroup>\n </novo-select>\n </novo-field>\n\n <div class=\"condition-operator\">\n <ng-container conditionOperatorOutlet></ng-container>\n </div>\n\n <div class=\"condition-input\">\n <ng-container conditionInputOutlet></ng-container>\n </div>\n </novo-grid>\n <ng-content></ng-content>\n</form>\n\n<novo-condition-templates *ngIf=\"isConditionHost\" [addressConfig]=\"addressConfig\" [dateConfig]=\"dateConfig\"/>\n\n<!-- LOADING TEMPLATE -->\n<ng-template #loading>\n <novo-loading></novo-loading>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ControlContainer, FormArray, FormBuilder, UntypedFormGroup, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { QueryBuilderService } from '../query-builder.service';\nimport { Condition, Conjunction } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\nconst EMPTY_CONDITION: Condition = {\n conditionType: '$and',\n field: null,\n operator: null,\n scope: null,\n value: null,\n supportingValue: null,\n};\n@Component({\n selector: 'novo-condition-group',\n templateUrl: './condition-group.component.html',\n styleUrls: ['./condition-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ConditionGroupComponent), multi: true }],\n host: {\n class: 'novo-condition-group',\n },\n standalone: false,\n})\nexport class ConditionGroupComponent implements OnInit, OnDestroy {\n @Input() controlName: string = '$' + Conjunction.AND;\n @Input() groupIndex: number;\n @Input() hideFirstOperator: boolean = true;\n @Input() canBeEmpty: boolean = false;\n @Input() formGroupName: any;\n\n public scope: string;\n public entity: string;\n public parentForm: UntypedFormGroup;\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n constructor(\n public qbs: QueryBuilderService,\n public labels: NovoLabelService,\n private controlContainer: ControlContainer,\n private formBuilder: FormBuilder,\n private cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.parentForm = this.controlContainer.control as UntypedFormGroup;\n this.controlName = Object.keys(this.parentForm.controls)[0];\n this.updateGroupScopeAndEntity();\n merge(this.parentForm.parent.valueChanges, this.qbs.stateChanges)\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => this.cdr.markForCheck());\n }\n\n ngOnChanges() {\n this.updateGroupScopeAndEntity();\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n updateGroupScopeAndEntity() {\n if (this.parentForm && this.controlName) {\n this.scope = this.parentForm.value[this.controlName][0]?.scope || this.qbs.scopes()[0];\n const entity = this.parentForm.value[this.controlName][0]?.entity;\n if (entity) {\n this.entity = entity;\n }\n }\n }\n\n updateControlName(value: string) {\n const name = `$${value.replace('$', '')}`;\n if (name !== this.controlName) {\n const current = this.parentForm.get(this.controlName).value;\n this.parentForm.controls[name] = this.parentForm.controls[this.controlName];\n delete this.parentForm.controls[this.controlName];\n this.controlName = name;\n // scrub properties not on control\n const currentStrict = current.map(item => this.sanitizeCondition(item));\n this.parentForm.get(this.controlName)?.setValue(currentStrict);\n this.cdr.markForCheck();\n }\n }\n\n private sanitizeCondition(condition: any): Condition {\n return {\n conditionType: condition.conditionType,\n field: condition.field,\n operator: condition.operator,\n scope: condition.scope,\n value: condition.value,\n supportingValue: condition.supportingValue,\n entity: condition.entity,\n warnOnDelete: condition.warnOnDelete,\n };\n }\n\n get root(): FormArray {\n return this.parentForm.get(this.controlName) as FormArray;\n }\n\n addCondition(data?: any) {\n const condition = this.newCondition(data);\n const onlyConditionIsEmpty = JSON.stringify(this.root.value) === JSON.stringify([EMPTY_CONDITION]);\n this.root.push(condition);\n this.qbs.hasMultipleScopes() && onlyConditionIsEmpty && this.removeCondition(0);\n this.cdr.markForCheck();\n }\n\n async removeCondition(index: number) {\n const condition = this.root.at(index)?.value;\n const warnOnDelete = condition?.warnOnDelete;\n const fieldName = condition?.field;\n const isLastInstanceOfPinnedField = typeof warnOnDelete === 'function' && this.root.value.filter(c => c.field === fieldName).length === 1;\n\n if (isLastInstanceOfPinnedField) {\n const shouldDelete = await warnOnDelete();\n if (!shouldDelete) {\n return;\n }\n }\n\n const isPrimaryScope = this.scope === this.qbs.scopes()[0];\n const lastRowInGroup = this.root.length === 1;\n const lastRowInQueryBuilder = this.cantRemoveRow();\n this.root.removeAt(index);\n if ((lastRowInQueryBuilder || (lastRowInGroup && isPrimaryScope)) && !this.canBeEmpty) {\n this.addCondition();\n }\n this.cdr.markForCheck();\n }\n\n newCondition({ field, operator, scope, value, supportingValue, entity, warnOnDelete }: Condition = EMPTY_CONDITION): UntypedFormGroup {\n return this.formBuilder.group({\n conditionType: '$and',\n field: [field, Validators.required],\n operator: [operator, Validators.required],\n scope: [scope],\n value: [value],\n supportingValue: [supportingValue],\n entity: [entity],\n warnOnDelete: [warnOnDelete],\n });\n }\n\n cantRemoveRow() {\n if ((this.parentForm.parent as FormArray).length > 1) {\n return false;\n }\n return this.root.length <= 1;\n }\n}\n","<div [formGroup]=\"parentForm\" class=\"condition-group-container\">\n <novo-stack [formArrayName]=\"controlName\" gap=\"md\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLast = last;\">\n <ng-container [formGroupName]=\"andIndex\">\n <novo-flex class=\"condition-row\" [ngClass]=\"{ isFirst: andIndex === 0 }\" [class]=\"entity || scope\" align=\"end\" gap=\"sm\" #flex>\n <novo-dropdown *ngIf=\"(!isFirst || !hideFirstOperator) && qbs.allowedGroupings.length > 1; else labeledGroup\" data-automation-id=\"groupings-dropdown\">\n <button theme=\"dialogue\" icon=\"collapse\" size=\"sm\">{{qbs.getConjunctionLabel(controlName)}}</button>\n <novo-optgroup>\n <novo-option *ngFor=\"let c of qbs.allowedGroupings\" (click)=\"updateControlName(c)\" [attr.data-automation-id]=\"c\">\n {{qbs.getConjunctionLabel(c)}}</novo-option>\n </novo-optgroup>\n </novo-dropdown>\n <ng-template #labeledGroup>\n <novo-label *ngIf=\"!isFirst || !hideFirstOperator\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">\n {{qbs.getConjunctionLabel(controlName)}}</novo-label>\n </ng-template>\n <novo-condition-builder [groupIndex]=\"groupIndex\" [andIndex]=\"andIndex\" [hideOperator]=\"isFirst && hideFirstOperator\" [scope]=\"scope\" [conditionType]=\"controlName\"></novo-condition-builder>\n <novo-button class=\"delete-btn\" theme=\"icon\" icon=\"delete-o\" color=\"negative\" (click)=\"removeCondition(andIndex)\" data-automation-id=\"delete-filter-button\">\n </novo-button>\n </novo-flex>\n </ng-container>\n </ng-container>\n <button\n *ngIf=\"!qbs.hasMultipleScopes()\"\n theme=\"dialogue\"\n data-automation-id=\"add-advanced-search-condition\"\n icon=\"add-thin\"\n side=\"left\"\n size=\"sm\"\n uppercase\n (click)=\"addCondition()\">\n {{ labels.addCondition }}</button>\n </novo-stack>\n</div>\n","import {\n AfterContentChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChildren,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { ControlContainer, FormArray, FormBuilder, NG_VALUE_ACCESSOR, UntypedFormGroup, Validators } from '@angular/forms';\nimport { interval, Subject } from 'rxjs';\nimport { debounce, filter, startWith, takeUntil } from 'rxjs/operators';\nimport { NovoTabbedGroupPickerElement, TabbedGroupPickerButtonConfig, TabbedGroupPickerTab } from 'novo-elements/elements/tabbed-group-picker';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { ConditionGroupComponent } from '../condition-group/condition-group.component';\nimport { NovoConditionFieldDef } from '../query-builder.directives';\nimport { QueryBuilderService } from '../query-builder.service';\nimport { NOVO_CRITERIA_BUILDER } from '../query-builder.tokens';\nimport { BaseFieldDef, Condition, ConditionGroup, Conjunction, AddressCriteriaConfig, DateCriteriaConfig } from '../query-builder.types';\n\nconst EMPTY_CONDITION: Condition = {\n conditionType: '$and',\n field: null,\n operator: null,\n scope: null,\n value: null,\n supportingValue: null,\n entity: null,\n warnOnDelete: undefined,\n};\n@Component({\n selector: 'novo-criteria-builder',\n templateUrl: './criteria-builder.component.html',\n styleUrls: ['./criteria-builder.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CriteriaBuilderComponent), multi: true },\n { provide: NOVO_CRITERIA_BUILDER, useExisting: CriteriaBuilderComponent },\n { provide: QueryBuilderService, useClass: QueryBuilderService },\n ],\n host: {\n class: 'novo-criteria-builder',\n },\n standalone: false,\n})\nexport class CriteriaBuilderComponent implements OnInit, OnDestroy, AfterContentChecked, AfterViewInit {\n @Input() config: any;\n @Input() controlName: string;\n @Input() allowedGroupings = [Conjunction.AND, Conjunction.OR, Conjunction.NOT];\n @Input() editTypeFn: (field: BaseFieldDef) => string;\n @Input() addressConfig: AddressCriteriaConfig;\n @Input() dateConfig: DateCriteriaConfig;\n @Input() canBeEmpty: boolean = false;\n\n @Input('hideFirstOperator')\n set HideFirstOperator(hide: boolean) {\n if (!Helpers.isEmpty(hide)) {\n this._hideFirstOperator = hide;\n }\n }\n get hideFirstOperator() {\n return this._hideFirstOperator;\n }\n private _hideFirstOperator: boolean = true;\n\n @ContentChildren(NovoConditionFieldDef, { descendants: true }) _contentFieldDefs: QueryList<NovoConditionFieldDef>;\n scopedFieldPicker = viewChild(NovoTabbedGroupPickerElement);\n conditionGroups = viewChildren(ConditionGroupComponent);\n\n public parentForm: UntypedFormGroup;\n public innerForm: UntypedFormGroup;\n public tabbedGroupPickerTabs = computed<TabbedGroupPickerTab[]>(() => {\n const tabs = [];\n this.qbs.scopes()?.forEach((scope) => {\n tabs.push({\n typeName: scope,\n typeLabel: scope,\n valueField: 'name',\n labelField: 'label',\n data: this.qbs.config.fields.find((field) => field.value === scope)?.options || [],\n });\n });\n return tabs;\n });\n public addButtonConfig: TabbedGroupPickerButtonConfig = {\n theme: 'dialogue',\n side: 'left',\n size: 'sm',\n icon: 'add-thin',\n label: this.labels.addCondition,\n };\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n constructor(\n private controlContainer: ControlContainer,\n private formBuilder: FormBuilder,\n private cdr: ChangeDetectorRef,\n public qbs: QueryBuilderService,\n public labels: NovoLabelService,\n ) {\n if (!qbs.componentHost) {\n qbs.componentHost = this;\n }\n }\n\n ngOnInit() {\n this.parentForm = this.controlContainer.control as UntypedFormGroup;\n this.innerForm = this.formBuilder.group({\n criteria: this.formBuilder.array([]),\n });\n\n this.parentForm.valueChanges.pipe(\n startWith(this.parentForm.value),\n filter(v => v?.criteria),\n takeUntil(this._onDestroy),\n ).subscribe((value) => {\n Promise.resolve().then(() => {\n this.setInitialValue(value[this.controlName]);\n this.cdr.markForCheck();\n });\n });\n this.innerForm.valueChanges\n .pipe(\n debounce(() => interval(10)),\n takeUntil(this._onDestroy),\n )\n .subscribe((value) => {\n const result = value.criteria.filter((it, i) => {\n const key = Object.keys(it)[0];\n if (it[key].length === 0) {\n this.removeConditionGroupAt(i);\n }\n return it[key].length > 0;\n });\n\n Promise.resolve().then(() => {\n this.parentForm.get(this.controlName).setValue(result, { emitEvent: false });\n this.cdr.markForCheck();\n });\n });\n }\n\n ngAfterContentChecked(): void {\n this._configureQueryBuilderService();\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this._registerFieldDefs();\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n private isConditionGroup(group: unknown): group is ConditionGroup {\n return Object.keys(group).every((key) => ['$and', '$or', '$not'].includes(key));\n }\n\n private setInitialValue(value: ConditionGroup[] | Condition[]) {\n if (value.length) {\n if (this.isConditionGroup(value[0])) {\n value.forEach((it) => this.addConditionGroup(it));\n } else {\n const conditions: Condition[] = [...value] as Condition[];\n if (this.qbs.hasMultipleScopes()) {\n // divide up by scope into separate groups\n const scopedConditions: { [key: string]: Condition[] } = {};\n conditions.forEach((condition) => {\n scopedConditions[condition.scope] = scopedConditions[condition.scope] || [];\n scopedConditions[condition.scope].push(condition);\n })\n for (const scope in scopedConditions) {\n this.addConditionGroup({ $and: scopedConditions[scope] });\n }\n } else {\n this.addConditionGroup({ $and: conditions });\n }\n }\n } else {\n this.addConditionGroup({ $and: value });\n }\n }\n\n get root(): FormArray {\n return this.innerForm.get('criteria') as FormArray;\n }\n\n addConditionGroup(data: any = { $and: [EMPTY_CONDITION] }) {\n this.root.push(this.newConditionGroup(data));\n this.cdr.markForCheck();\n }\n\n newConditionGroup(data: ConditionGroup): UntypedFormGroup {\n const controls = Object.entries(data).reduce((obj, [key, val]) => {\n return {\n ...obj,\n [key]: this.formBuilder.array(val.map((it) => this.newCondition(it))),\n };\n }, {});\n return this.formBuilder.group(controls);\n }\n\n newCondition({ field, operator, scope, value, supportingValue, warnOnDelete }: Condition = EMPTY_CONDITION): UntypedFormGroup {\n const entity = this.getFieldEntity(this.config, scope);\n return this.formBuilder.group({\n conditionType: '$and',\n field: [field, Validators.required],\n operator: [operator, Validators.required],\n scope: [scope],\n value: [value],\n supportingValue: [supportingValue],\n entity: [entity],\n warnOnDelete: [warnOnDelete],\n });\n }\n\n getFieldEntity(fieldConfigs, scope) {\n if (Array.isArray(fieldConfigs?.fields)) {\n return fieldConfigs.fields.find(field => field.value === scope)?.entity\n }\n return null;\n }\n\n removeConditionGroupAt(index: number) {\n this.root.removeAt(index, { emitEvent: false });\n }\n\n clearAllConditions() {\n while (this.root.length) {\n this.root.removeAt(0);\n }\n }\n\n onFieldSelect(field) {\n this.scopedFieldPicker().dropdown.closePanel();\n const condition = { field: field.name, operator: null, scope: field.scope, value: null, entity: field.entity };\n const group = this.conditionGroups().find((conditionGroup) => conditionGroup.scope === field.scope);\n if (group) {\n group.addCondition(condition);\n } else {\n this.addConditionGroup({ $and: [condition] })\n }\n }\n\n private _configureQueryBuilderService() {\n this.qbs.scopes.set(this.config?.fields.map((f) => f.value));\n this.qbs.config = this.config;\n this.qbs.editTypeFn = this.editTypeFn;\n this.qbs.allowedGroupings = this.allowedGroupings as Conjunction[];\n }\n\n private _registerFieldDefs() {\n const defs = [...Array.from(this._contentFieldDefs)];\n defs.forEach((fieldDef) => {\n this.qbs.registerFieldDef(fieldDef);\n });\n }\n}\n","<form [formGroup]=\"innerForm\">\n <novo-stack [formArrayName]=\"controlName\" class=\"criteria-builder-inner\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLastAnd = last;\">\n <novo-label *ngIf=\"!isFirst\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">{{ qbs.hasMultipleScopes() ? conditionGroup.scope + ' ' + labels.filterss : qbs.getConjunctionLabel('and') }}</novo-label>\n <novo-condition-group [hideFirstOperator]=\"hideFirstOperator\" [canBeEmpty]=\"canBeEmpty\" [groupIndex]=\"andIndex\" [formGroupName]=\"andIndex\" #conditionGroup></novo-condition-group>\n </ng-container>\n </novo-stack>\n <novo-tabbed-group-picker\n *ngIf=\"qbs.hasMultipleScopes()\"\n [tabs]=\"tabbedGroupPickerTabs()\"\n [selectionEnabled]=\"false\"\n [buttonConfig]=\"addButtonConfig\"\n (activation)=\"onFieldSelect($event)\">\n </novo-tabbed-group-picker>\n</form>\n<novo-condition-templates [addressConfig]=\"addressConfig\" [dateConfig]=\"dateConfig\"/>\n\n<!--\n {\n $and: [{\n $or: [{\n entity: 'JobOrder'\n field: 'categories',\n operator: 'doesNotContain',\n value: 'Healthcare'\n }]\n }]\n }\n -->\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NovoAutoCompleteModule } from 'novo-elements/elements/autocomplete';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCardModule } from 'novo-elements/elements/card';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoCommonModule, NovoOptionModule, NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoDatePickerModule } from 'novo-elements/elements/date-picker';\nimport { NovoDateTimePickerModule } from 'novo-elements/elements/date-time-picker';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoFieldModule } from 'novo-elements/elements/field';\nimport { NovoFlexModule } from 'novo-elements/elements/flex';\nimport { NovoFormExtrasModule, NovoFormModule } from 'novo-elements/elements/form';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoNonIdealStateModule } from 'novo-elements/elements/non-ideal-state';\nimport { GooglePlacesModule } from 'novo-elements/elements/places';\nimport { NovoRadioModule } from 'novo-elements/elements/radio'\nimport { NovoSearchBoxModule } from 'novo-elements/elements/search';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { NovoSelectSearchModule } from 'novo-elements/elements/select-search';\nimport { NovoSwitchModule } from 'novo-elements/elements/switch';\nimport { NovoTabbedGroupPickerModule } from 'novo-elements/elements/tabbed-group-picker';\nimport { NovoTabModule } from 'novo-elements/elements/tabs';\nimport { ConditionBuilderComponent, ConditionInputOutlet, ConditionOperatorOutlet } from './condition-builder/condition-builder.component';\nimport { NovoDefaultAddressConditionDef } from './condition-definitions/address-condition.definition';\nimport { NovoDefaultBooleanConditionDef } from './condition-definitions/boolean-condition.definition';\nimport { NovoDefaultDateConditionDef } from './condition-definitions/date-condition.definition';\nimport { NovoDefaultDateTimeConditionDef } from './condition-definitions/date-time-condition.definition';\nimport { NovoDefaultIdConditionDef } from './condition-definitions/id-condition.definition';\nimport { NovoDefaultNumberConditionDef } from './condition-definitions/number-condition.definition';\nimport { NovoDefaultPickerConditionDef } from './condition-definitions/picker-condition.definition';\nimport { NovoDefaultStringConditionDef } from './condition-definitions/string-condition.definition';\nimport { ConditionGroupComponent } from './condition-group/condition-group.component';\nimport { CriteriaBuilderComponent } from './criteria-builder/criteria-builder.component';\nimport { NovoConditionFieldDef, NovoConditionInputDef, NovoConditionOperatorsDef } from './query-builder.directives';\nimport { NovoConditionTemplatesComponent } from './condition-templates/condition-templates.component';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n DragDropModule,\n CdkTableModule,\n GooglePlacesModule,\n NovoAutoCompleteModule,\n NovoButtonModule,\n NovoCommonModule,\n NovoFormModule,\n NovoSelectModule,\n NovoNonIdealStateModule,\n NovoFieldModule,\n NovoOptionModule,\n NovoFlexModule,\n NovoTabModule,\n NovoTabbedGroupPickerModule,\n NovoLoadingModule,\n NovoCardModule,\n NovoDatePickerModule,\n NovoDateTimePickerModule,\n NovoIconModule,\n NovoOverlayModule,\n NovoRadioModule,\n NovoSearchBoxModule,\n NovoSwitchModule,\n NovoChipsModule,\n NovoSelectSearchModule,\n NovoDropdownModule,\n NovoFormExtrasModule,\n NovoTooltipModule,\n ],\n declarations: [\n CriteriaBuilderComponent,\n ConditionBuilderComponent,\n ConditionInputOutlet,\n ConditionOperatorOutlet,\n ConditionGroupComponent,\n NovoDefaultAddressConditionDef,\n NovoDefaultBooleanConditionDef,\n NovoDefaultDateConditionDef,\n NovoDefaultDateTimeConditionDef,\n NovoConditionOperatorsDef,\n NovoConditionInputDef,\n NovoConditionFieldDef,\n NovoDefaultStringConditionDef,\n NovoDefaultNumberConditionDef,\n NovoDefaultIdConditionDef,\n NovoDefaultPickerConditionDef,\n NovoConditionTemplatesComponent,\n ],\n exports: [\n CriteriaBuilderComponent,\n ConditionBuilderComponent,\n NovoDefaultAddressConditionDef,\n NovoDefaultBooleanConditionDef,\n NovoDefaultDateConditionDef,\n NovoDefaultDateTimeConditionDef,\n NovoConditionOperatorsDef,\n NovoConditionInputDef,\n NovoConditionFieldDef,\n NovoDefaultStringConditionDef,\n NovoDefaultNumberConditionDef,\n NovoDefaultIdConditionDef,\n NovoDefaultPickerConditionDef,\n NovoConditionTemplatesComponent,\n ],\n})\nexport class NovoQueryBuilderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.QueryBuilderService","i6","i7","i12.NovoConditionOperatorsDef","i12.NovoConditionInputDef","i12.NovoConditionFieldDef","i4","i5","i8.NovoConditionOperatorsDef","i8.NovoConditionInputDef","i8.NovoConditionFieldDef","i8","i9.NovoConditionOperatorsDef","i9.NovoConditionInputDef","i9.NovoConditionFieldDef","i9","i10.NovoConditionOperatorsDef","i10.NovoConditionInputDef","i10.NovoConditionFieldDef","i1","i2","i3","i5.NovoConditionOperatorsDef","i5.NovoConditionInputDef","i5.NovoConditionFieldDef","i1.NovoDefaultAddressConditionDef","i2.NovoDefaultBooleanConditionDef","i3.NovoDefaultDateConditionDef","i4.NovoDefaultDateTimeConditionDef","i5.NovoDefaultStringConditionDef","i6.NovoDefaultNumberConditionDef","i7.NovoDefaultIdConditionDef","i8.NovoDefaultPickerConditionDef","i2.QueryBuilderService","i10","i11.NovoConditionTemplatesComponent","EMPTY_CONDITION","i9.ConditionBuilderComponent","i8.ConditionGroupComponent","i9.NovoConditionTemplatesComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"novo-elements-elements-query-builder.mjs","sources":["../../../projects/novo-elements/src/elements/query-builder/query-builder.types.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.service.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.tokens.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.directives.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/abstract-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/address-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/boolean-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/date-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/date-time-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/string-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/number-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/id-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/picker-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-templates/condition-templates.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-templates/condition-templates.component.html","../../../projects/novo-elements/src/elements/query-builder/condition-builder/condition-builder.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-builder/condition-builder.component.html","../../../projects/novo-elements/src/elements/query-builder/condition-group/condition-group.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-group/condition-group.component.html","../../../projects/novo-elements/src/elements/query-builder/criteria-builder/criteria-builder.component.ts","../../../projects/novo-elements/src/elements/query-builder/criteria-builder/criteria-builder.component.html","../../../projects/novo-elements/src/elements/query-builder/query-builder.module.ts","../../../projects/novo-elements/src/elements/query-builder/novo-elements-elements-query-builder.ts"],"sourcesContent":["import { ViewContainerRef } from '@angular/core';\n\nexport enum Conjunction {\n AND = 'and',\n OR = 'or',\n NOT = 'not',\n}\n\nexport type ConditionType = '$and' | '$or' | '$not';\n\nexport type ConditionGroup = {\n [K in Conjunction as `$${K}`]?: Condition[];\n};\n\nexport type NestedConditionGroup = {\n [K in Conjunction as `$${K}`]?: ConditionOrConditionGroup[];\n};\n\nexport type ConditionOrConditionGroup = Condition | NestedConditionGroup;\n\nexport enum Operator {\n after = 'after',\n before = 'before',\n beginsWith = 'beginsWith',\n between = 'between',\n equalTo = 'equalTo',\n exclude = 'exclude',\n excludeAny = 'excludeAny',\n greaterThan = 'greaterThan',\n include = 'include',\n includeAll = 'includeAll',\n includeAny = 'includeAny',\n insideRadius = 'insideRadius',\n isEmpty = 'isEmpty',\n isNull = 'isNull',\n lessThan = 'lessThan',\n outsideRadius = 'outsideRadius',\n radius = 'radius',\n within = 'within',\n}\n\nexport type OperatorName = keyof typeof Operator;\n\nexport interface Condition {\n conditionType?: ConditionType;\n field: string;\n operator: OperatorName | string;\n scope?: string;\n value: any;\n supportingValue?: any;\n entity?: string;\n warnOnDelete?: () => Promise<boolean>;\n}\n\nexport interface Criteria {\n criteria: ConditionGroup[];\n}\n\nexport interface NestedCriteria {\n criteria: NestedConditionGroup[];\n}\n\nexport interface BaseFieldDef {\n name: string;\n label?: string;\n type: string;\n dataSpecialization?: string;\n optional?: boolean;\n multiValue?: boolean;\n inputType?: string;\n options?: { value: string | number; label: string; readOnly?: boolean }[];\n optionsUrl?: string;\n optionsType?: string;\n dataType?: string;\n icon?: string;\n}\n\nexport interface FieldConfig<T extends BaseFieldDef> {\n value: string;\n label: string;\n options: T[];\n search: (term: string) => T[];\n find: (name: string) => T;\n}\n\nexport interface AddressData {\n address_components: AddressComponent[];\n formatted_address: string;\n geometry: AddressGeometry;\n name?: string;\n place_id: string;\n radius?: AddressRadius;\n postal_codes?: string[];\n types?: string[];\n}\n\nexport interface AddressRadius {\n value: number;\n units: AddressRadiusUnitsName;\n operator?: string;\n}\n\nexport interface AddressComponent {\n long_name: string;\n short_name: string;\n types: string[];\n}\n\nexport interface AddressGeometry {\n location: AddressGeometryLocation;\n viewport: AddressGeometryViewport;\n}\n\nexport interface AddressGeometryLocation {\n lat: number;\n lng: number;\n}\n\nexport interface AddressGeometryViewport {\n north: number;\n south: number;\n east: number;\n west: number;\n}\n\nexport enum RadiusUnits {\n miles = 'miles',\n km = 'km',\n}\n\nexport type AddressRadiusUnitsName = keyof typeof RadiusUnits;\n\n/** All options that can be used to override the defaults for the address criteria */\nexport type AddressCriteriaConfig = {\n radiusEnabled?: boolean;\n radiusUnits?: AddressRadiusUnitsName;\n}\n\n/** All options that can be used to configure date pickers */\nexport type DateCriteriaConfig = {\n weekStart?: Day;\n}\n\n/** Interface used to provide an outlet for rows to be inserted into. */\nexport interface QueryFilterOutlet {\n viewContainer: ViewContainerRef;\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BaseConditionFieldDef } from './query-builder.directives';\nimport { BaseFieldDef, Conjunction, FieldConfig } from './query-builder.types';\n\nexport const defaultEditTypeFn = (field: BaseFieldDef) => {\n return field.inputType || field.dataType || field.type;\n};\n\nexport interface QueryBuilderConfig {\n fields: FieldConfig<BaseFieldDef>[];\n staticFieldSelection?: string;\n}\n\n@Injectable()\nexport class QueryBuilderService {\n private _customFieldDefs = new Set<BaseConditionFieldDef>();\n private _fieldDefsByName = new Map<string, BaseConditionFieldDef>();\n public scopes = signal([]);\n public hasMultipleScopes = computed(() => this.scopes()?.length > 1);\n /**\n * Will dispatch when properties changes, subscribe to this if component should\n * re-render when props are updated\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Function to determine operator and input templates for a field. Value passed\n * through the criteria builder Input.\n */\n public get editTypeFn(): (field: BaseFieldDef) => string {\n return this._editTypeFn;\n }\n public set editTypeFn(value: (field: BaseFieldDef) => string) {\n this._editTypeFn = value ?? defaultEditTypeFn;\n this.stateChanges.next();\n }\n private _editTypeFn: (field: BaseFieldDef) => string = defaultEditTypeFn;\n\n /**\n * The field configuration to control which types of fields are available to select\n * within the Condition Builder.\n */\n public get config(): QueryBuilderConfig {\n return this._config;\n }\n public set config(value: QueryBuilderConfig) {\n this._config = value;\n this.stateChanges.next();\n }\n private _config: QueryBuilderConfig = {\n fields: [],\n staticFieldSelection: null,\n };\n\n /**\n * The configuration to control which types of conjuntions can be used in the query builder.\n * Value passed through the criteria builder Input\n * eg. and, or, not\n */\n public get allowedGroupings(): Conjunction[] {\n return this._allowedGroupings;\n }\n public set allowedGroupings(value: Conjunction[]) {\n this._allowedGroupings = value;\n this.stateChanges.next();\n }\n private _allowedGroupings: Conjunction[];\n\n public componentHost: any;\n\n constructor(private labels: NovoLabelService) {}\n\n /** Adds a field definition that was not included as part of the content children. */\n registerFieldDef(fieldDef: BaseConditionFieldDef) {\n this._customFieldDefs.add(fieldDef);\n this._fieldDefsByName.set(fieldDef.name, fieldDef);\n }\n\n /** Removes a field definition that was not included as part of the content children. */\n unregisterFieldDef(fieldDef: BaseConditionFieldDef) {\n this._customFieldDefs.delete(fieldDef);\n this._fieldDefsByName.delete(fieldDef.name);\n }\n\n getFieldDefsByName() {\n return this._fieldDefsByName;\n }\n\n getConjunctionLabel(conjunction: string) {\n switch (conjunction.replace('$', '').toLowerCase()) {\n case Conjunction.OR:\n return this.labels.or;\n case Conjunction.NOT:\n return this.labels.not;\n case Conjunction.AND:\n default:\n return this.labels.and;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const NOVO_QUERY_BUILDER = new InjectionToken<any>('NOVO_QUERY_BUILDER');\nexport const NOVO_CRITERIA_BUILDER = new InjectionToken<any>('NOVO_CRITERIA_BUILDER');\nexport const NOVO_CONDITION_BUILDER = new InjectionToken<any>('NOVO_CONDITION_BUILDER');\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\nimport { QueryBuilderService } from './query-builder.service';\n\n/** Base interface for a condidation template directives. */\nexport interface ConditionDef {\n template: TemplateRef<any>;\n}\n\n/**\n * Contained within a novoConditionField definition describing what input should be\n * used to capture the compare value of the Condtion\n */\n@Directive({\n selector: '[novoConditionInputDef]',\n standalone: false,\n})\nexport class NovoConditionInputDef implements ConditionDef {\n constructor(/** @docs-private */ public template: TemplateRef<any>) {}\n}\n\n/**\n * Contained within a novoConditionField definition describing what operators should be available.\n */\n@Directive({\n selector: '[novoConditionOperatorsDef]',\n standalone: false,\n})\nexport class NovoConditionOperatorsDef implements ConditionDef {\n constructor(/** @docs-private */ public template: TemplateRef<any>) {}\n}\n\n/**\n * Field Field definition for the QueryBuilder.\n * Defines the inputType and operators to use for the query builder.\n */\n@Directive()\nexport class BaseConditionFieldDef {\n /** Unique name for this field. */\n @Input('novoFilterFieldDef')\n get name(): string {\n return this._name;\n }\n set name(name: string) {\n this._setNameInput(name);\n }\n protected _name: string;\n\n @ContentChild(NovoConditionInputDef) fieldInput: NovoConditionInputDef;\n @ContentChild(NovoConditionOperatorsDef) fieldOperators: NovoConditionOperatorsDef;\n\n /**\n * Transformed version of the column name that can be used as part of a CSS classname. Excludes\n * all non-alphanumeric characters and the special characters '-' and '_'. Any characters that\n * do not match are replaced by the '-' character.\n */\n cssClassFriendlyName: string;\n _fieldCssClassName: string[];\n\n defaultOperator: string;\n\n constructor() {}\n\n /**\n * Overridable method that sets the css classes that will be added to every cell in this\n * column.\n * In the future, columnCssClassName will change from type string[] to string and this\n * will set a single string value.\n * @docs-private\n */\n protected _updateFieldCssClassName() {\n this._fieldCssClassName = [`novo-filter-field-${this.cssClassFriendlyName}`];\n }\n\n protected _setNameInput(value: string) {\n // If the directive is set without a name (updated programmatically), then this setter will\n // trigger with an empty string and should not overwrite the programmatically set value.\n if (value) {\n this._name = value;\n this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');\n this._updateFieldCssClassName();\n }\n }\n}\n\n@Directive({\n selector: '[novoConditionFieldDef]',\n standalone: false,\n})\nexport class NovoConditionFieldDef extends BaseConditionFieldDef {\n constructor(private qbs: QueryBuilderService) {\n super();\n }\n register() {\n this.qbs.registerFieldDef(this);\n }\n unregister() {\n this.qbs.unregisterFieldDef(this);\n }\n}\n","import { AfterViewInit, Directive, Input, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { FormControlName, UntypedFormGroup } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { NovoConditionFieldDef } from '../query-builder.directives';\nimport { Operator } from '../query-builder.types';\n\n@Directive()\nexport abstract class AbstractConditionFieldDef implements OnDestroy, OnInit, AfterViewInit {\n /** Column name that should be used to reference this column. */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(name: string) {\n this._name = name;\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncFieldDefName();\n }\n _name: string;\n\n defaultOperator: Operator | string;\n protected _previousOperatorValue: Operator;\n\n protected operatorEditGroups: Set<Operator>[] = [];\n\n @ViewChild(NovoConditionFieldDef, { static: true }) fieldDef: NovoConditionFieldDef;\n @ViewChildren(FormControlName) formControlsByName: QueryList<FormControlName>;\n\n constructor(public labels: NovoLabelService) {}\n\n ngOnInit() {\n this._syncFieldDefName();\n this._syncFieldDefOperatorValue();\n this._previousOperatorValue = this.defaultOperator as Operator;\n // Need to add self to FilterBuilder because \"ContentChildren won't find it\"\n this.fieldDef?.register();\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.frameAfterViewInit();\n });\n }\n\n frameAfterViewInit() {\n const operatorField = this.formControlsByName.find(formControlDirective => formControlDirective.name === 'operator')?.control;\n if (operatorField) {\n this._previousOperatorValue = operatorField.value;\n }\n }\n\n ngOnDestroy() {\n this.fieldDef?.unregister();\n }\n\n /**\n * Define an edit group of operators. Once defined, if the user switches from one of these operators to another,\n * then the condition value will not be cleared. This makes sense if both operators use the same UI controls for editing.\n * @param operators The set of Operator values intended to share UI controls.\n */\n protected defineOperatorEditGroup(...operators: Operator[]): void {\n this.operatorEditGroups.push(new Set(operators));\n }\n\n onOperatorSelect(formGroup: UntypedFormGroup): void {\n let clearVal = true;\n if (this._previousOperatorValue && this.operatorEditGroups?.length) {\n const previousOperatorGroupIndex = this.operatorEditGroups.findIndex(grp => grp.has(this._previousOperatorValue));\n const newOperatorValue = formGroup.get('operator').getRawValue();\n const newOperatorGroupIndex = this.operatorEditGroups.findIndex(grp => grp.has(newOperatorValue));\n if (previousOperatorGroupIndex !== -1 && newOperatorGroupIndex !== -1 && previousOperatorGroupIndex === newOperatorGroupIndex) {\n clearVal = false;\n }\n }\n this._previousOperatorValue = formGroup.get('operator').value;\n if (clearVal) {\n formGroup.get('value').setValue(null);\n }\n }\n\n /** Synchronizes the column definition name with the text column name. */\n private _syncFieldDefName() {\n if (this.fieldDef) {\n this.fieldDef.name = this.name;\n }\n }\n\n private _syncFieldDefOperatorValue() {\n if (this.fieldDef) {\n this.fieldDef.defaultOperator = this.defaultOperator;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n InputSignal,\n OnDestroy,\n QueryList,\n Signal,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { PlacesListComponent } from 'novo-elements/elements/places';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Key } from 'novo-elements/utils';\nimport { Subscription } from 'rxjs';\nimport {\n AddressCriteriaConfig,\n AddressData,\n AddressRadius,\n AddressRadiusUnitsName,\n Operator,\n RadiusUnits,\n} from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { NovoSelectElement } from 'novo-elements/elements/select';\n\n/**\n * Handle selection of field values when a list of options is provided.\n */\n@Component({\n selector: 'novo-address-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n <novo-option value=\"insideRadius\" *ngIf=\"radiusEnabled()\">{{ labels.insideRadius }}</novo-option>\n <novo-option value=\"outsideRadius\" *ngIf=\"radiusEnabled()\">{{ labels.outsideRadius }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-flex justify=\"space-between\" align=\"end\">\n <novo-field #input *ngIf=\"['radius', 'insideRadius', 'outsideRadius'].includes(formGroup.value.operator)\" class=\"address-radius\">\n <input\n novoInput\n paddingLeft=\"3px\"\n type=\"number\"\n min=\"1\"\n max=\"9999\"\n step=\"1\"\n formControlName=\"supportingValue\"\n #distanceInput\n (input)=\"onRadiusSelect(formGroup, $event)\"\n />\n <span marginLeft=\"2px\" marginRight=\"4px\" paddingTop=\"3px\">{{ unitsLabel() }}</span>\n </novo-field>\n <novo-field #novoField class=\"address-location\">\n <novo-chip-list [(ngModel)]=\"chipListModel\" [ngModelOptions]=\"{ standalone: true }\" (click)=\"openPlacesList(viewIndex)\">\n <novo-chip *ngFor=\"let item of formGroup.get('value').value\" (removed)=\"remove(item, formGroup, viewIndex)\">\n <novo-text ellipsis [tooltip]=\"item.formatted_address\" tooltipOnOverflow>{{ item.formatted_address }}</novo-text>\n <novo-icon novoChipRemove>close</novo-icon>\n </novo-chip>\n <input\n novoChipInput\n [id]=\"viewIndex\"\n [placeholder]=\"labels.location\"\n (keyup)=\"onKeyup($event, viewIndex)\"\n (keydown)=\"onKeydown($event, viewIndex)\"\n [picker]=\"placesPicker\"\n #addressInput/>\n </novo-chip-list>\n <novo-picker-toggle [overlayId]=\"viewIndex\" icon=\"location\" novoSuffix>\n <google-places-list\n [term]=\"term\"\n (select)=\"selectPlace($event, formGroup, viewIndex)\"\n formControlName=\"value\"\n #placesPicker/>\n </novo-picker-toggle>\n </novo-field>\n </novo-flex>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultAddressConditionDef extends AbstractConditionFieldDef implements OnDestroy {\n @ViewChildren(NovoPickerToggleElement) overlayChildren: QueryList<NovoPickerToggleElement>;\n @ViewChildren('addressInput') inputChildren: QueryList<ElementRef>;\n @ViewChild('placesPicker') placesPicker: PlacesListComponent;\n @ViewChildren(NovoSelectElement) addressSideTest: any;\n\n // Overridable defaults\n defaults: AddressCriteriaConfig = {\n radiusEnabled: false,\n radiusUnits: 'miles',\n };\n config: InputSignal<AddressCriteriaConfig> = input();\n radiusUnits: Signal<AddressRadiusUnitsName> = computed(() =>\n this.config()?.radiusUnits || this.defaults.radiusUnits,\n );\n radiusEnabled: Signal<boolean> = computed(() =>\n this.config()?.radiusEnabled || this.defaults.radiusEnabled,\n );\n unitsLabel: Signal<string> = computed(() =>\n this.radiusUnits() === RadiusUnits.miles ? this.labels.miles : this.labels.km,\n );\n\n defaultOperator = Operator.includeAny;\n chipListModel: any = '';\n term: string = '';\n\n private _addressChangesSubscription: Subscription = Subscription.EMPTY;\n\n public element = inject(ElementRef);\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.includeAny, Operator.excludeAny, Operator.insideRadius, Operator.outsideRadius);\n }\n\n ngOnDestroy() {\n this._addressChangesSubscription.unsubscribe();\n }\n\n onKeyup(event, viewIndex) {\n if (![Key.Escape, Key.Enter].includes(event.key)) {\n this.openPlacesList(viewIndex);\n }\n this.term = event.target.value;\n }\n\n onKeydown(event, viewIndex) {\n if (!this.placesPicker.dropdownOpen) {\n this.openPlacesList(viewIndex);\n this.placesPicker.dropdownOpen = true;\n }\n if ([Key.Escape, Key.Tab].includes(event.key)) {\n this.closePlacesList(viewIndex);\n } else {\n this.placesPicker.onKeyDown(event);\n }\n }\n\n getValue(formGroup: AbstractControl): AddressData[] {\n return formGroup.value.value || [];\n }\n\n getCurrentOverlay(viewIndex: string): NovoPickerToggleElement {\n return this.overlayChildren?.find(item => item.overlayId === viewIndex);\n }\n\n getCurrentInput(viewIndex: string): ElementRef {\n return this.inputChildren?.find(item => (item as any).nativeElement.id === viewIndex);\n }\n\n openPlacesList(viewIndex) {\n this.getCurrentOverlay(viewIndex)?.openPanel();\n }\n\n closePlacesList(viewIndex) {\n this.getCurrentOverlay(viewIndex)?.closePanel();\n }\n\n selectPlace(event: any, formGroup: AbstractControl, viewIndex: string): void {\n const valueToAdd: AddressData = {\n address_components: event.address_components,\n formatted_address: event.formatted_address,\n geometry: event.geometry,\n name: event.name,\n postal_codes: event.postal_codes,\n place_id: event.place_id,\n types: event.types,\n };\n const current: AddressData | AddressData[] = this.getValue(formGroup);\n const updated: AddressData[] = Array.isArray(current) ? [...current, valueToAdd] : [valueToAdd];\n formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, updated));\n\n this.inputChildren.forEach(inputChild => {\n inputChild.nativeElement.value = '';\n })\n this.getCurrentInput(viewIndex)?.nativeElement.focus();\n this.closePlacesList(viewIndex);\n }\n\n remove(valueToRemove: AddressData, formGroup: AbstractControl, viewIndex: string): void {\n const current = this.getValue(formGroup);\n const index = current.indexOf(valueToRemove);\n if (index >= 0) {\n const oldValue = [...current]\n oldValue.splice(index, 1);\n formGroup.get('value').setValue(oldValue);\n }\n this.closePlacesList(viewIndex);\n }\n\n // Override abstract behavior - allow moving location from includeAny to radius, but when moving the opposite direction,\n // trim out radius information from the value\n onOperatorSelect(formGroup: UntypedFormGroup): void {\n const previousOperator = this._previousOperatorValue;\n super.onOperatorSelect(formGroup);\n if ([previousOperator, formGroup.get('operator').getRawValue()].indexOf(Operator.insideRadius) !== -1 &&\n formGroup.get('value').getRawValue() != null) {\n formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, this.getValue(formGroup)));\n }\n }\n\n onRadiusSelect(formGroup: AbstractControl, event): void {\n const maxLengthRadius = event.target.value.slice(0, 4);\n event.target.value = maxLengthRadius;\n formGroup.get('supportingValue').setValue(maxLengthRadius);\n // We must dirty the form explicitly to show up as a user modification when it was done programmatically\n formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, this.getValue(formGroup)));\n formGroup.markAsDirty();\n }\n\n private updateRadiusInValues(formGroup: AbstractControl, values: AddressData[]): AddressData[] {\n return values.map(val => ({\n ...val,\n radius: this.isRadiusOperatorSelected(formGroup) ? this.getRadiusData(formGroup) : undefined,\n }));\n }\n\n private getRadiusData(formGroup: AbstractControl): AddressRadius {\n return {\n value: formGroup.value.supportingValue,\n units: this.radiusUnits(),\n operator: formGroup.value.operator,\n };\n }\n\n private isRadiusOperatorSelected(formGroup: AbstractControl): boolean {\n return ['insideRadius', 'outsideRadius'].includes(formGroup.get('operator')?.value) && formGroup.value?.supportingValue !== null;\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * When constructing a query using a field that is a boolean with only true/false as possible values.\n */\n@Component({\n selector: 'novo-boolean-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"include\">{{ labels.equals }}</novo-option>\n <novo-option value=\"exclude\">{{ labels.doesNotEqual }}</novo-option>\n <novo-option value=\"isNull\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoConditionInputDef=\"let formGroup; fieldMeta as meta\" [style.maxWidth.px]=\"250\" [formGroup]=\"formGroup\">\n @let isNull = formGroup.value.operator === 'isNull';\n @let useYesNo = isNull || meta.dataType === 'Boolean';\n @let customOptions = !isNull && meta.options?.length === 2;\n @if (customOptions) {\n <novo-radio-group formControlName=\"value\">\n <novo-radio *ngFor=\"let opt of meta.options; trackBy: optIdentify\" [value]=\"opt.value\">{{ opt.label }}</novo-radio>\n </novo-radio-group>\n } @else {\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ useYesNo ? labels.yes : labels.true }}</novo-radio>\n <novo-radio [value]=\"false\">{{ useYesNo ? labels.no : labels.false }}</novo-radio>\n </novo-radio-group>\n }\n </novo-field>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultBooleanConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.include;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.include, Operator.exclude, Operator.isNull);\n }\n\n optIdentify(option) {\n return option.label;\n }\n}\n","import { ChangeDetectionStrategy, Component, input, InputSignal, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DateCriteriaConfig, Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\n\n/**\n * Most complicated of the default conditions defs, a date needs to provide a different\n * input type depending on the operator selected.\n */\n@Component({\n selector: 'novo-date-condition-def',\n template: `\n <ng-container novoConditionFieldDef=\"DATE\">\n <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"before\">{{ labels.before }}</novo-option>\n <novo-option value=\"after\">{{ labels.after }}</novo-option>\n <novo-option value=\"equalTo\">{{ labels.equals }}</novo-option>\n <novo-option value=\"within\">{{ labels.within }}</novo-option>\n <novo-option value=\"between\">{{ labels.between }}</novo-option>\n <novo-option value=\"isNull\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['before', 'after', 'equalTo']\">\n <input novoInput dateFormat=\"yyyy-mm-dd\" [picker]=\"datepicker\" formControlName=\"value\"/>\n <novo-picker-toggle triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-picker #datepicker (onSelect)=\"closePanel($event, viewIndex)\" [weekStart]=\"config()?.weekStart\"></novo-date-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['between']\">\n <input novoInput dateRangeFormat=\"date\" [picker]=\"daterangepicker\" formControlName=\"value\"/>\n <novo-picker-toggle [for]=\"daterangepicker\" triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-picker #daterangepicker (onSelect)=\"closePanel($event, viewIndex)\" [weekStart]=\"config()?.weekStart\" mode=\"range\"\n numberOfMonths=\"2\"></novo-date-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['within']\">\n <novo-select [placeholder]=\"labels.selectDateRange\" formControlName=\"value\">\n <novo-option value=\"future\">{{ labels.future }}</novo-option>\n <novo-option value=\"-1\">{{ labels.past1Day }}</novo-option>\n <novo-option value=\"-7\">{{ labels.past7Days }}</novo-option>\n <novo-option value=\"-14\">{{ labels.past14Days }}</novo-option>\n <novo-option value=\"-21\">{{ labels.past21Days }}</novo-option>\n <novo-option value=\"-30\">{{ labels.past30Days }}</novo-option>\n <novo-option value=\"-60\">{{ labels.past60Days }}</novo-option>\n <novo-option value=\"-90\">{{ labels.past90Days }}</novo-option>\n <novo-option value=\"-180\">{{ labels.past180Days }}</novo-option>\n <novo-option value=\"-270\">{{ labels.past270Days }}</novo-option>\n <novo-option value=\"-365\">{{ labels.past1Year }}</novo-option>\n <novo-option value=\"1\">{{ labels.next1Day }}</novo-option>\n <novo-option value=\"7\">{{ labels.next7Days }}</novo-option>\n <novo-option value=\"14\">{{ labels.next14Days }}</novo-option>\n <novo-option value=\"21\">{{ labels.next21Days }}</novo-option>\n <novo-option value=\"30\">{{ labels.next30Days }}</novo-option>\n <novo-option value=\"60\">{{ labels.next60Days }}</novo-option>\n <novo-option value=\"90\">{{ labels.next90Days }}</novo-option>\n <novo-option value=\"180\">{{ labels.next180Days }}</novo-option>\n <novo-option value=\"270\">{{ labels.next270Days }}</novo-option>\n <novo-option value=\"365\">{{ labels.next1Year }}</novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultDateConditionDef extends AbstractConditionFieldDef {\n @ViewChildren(NovoPickerToggleElement)\n overlayChildren: QueryList<NovoPickerToggleElement>;\n\n defaultOperator = Operator.within;\n\n config: InputSignal<DateCriteriaConfig> = input();\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.before, Operator.after, Operator.equalTo);\n }\n\n closePanel(event, viewIndex): void {\n const overlay = this.overlayChildren.find(item => item.overlayId === viewIndex);\n overlay.closePanel(event);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, InputSignal, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { DateCriteriaConfig, Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * Most complicated of the default conditions defs, a date needs to provide a different\n * input type depending on the operator selected.\n */\n@Component({\n selector: 'novo-date-time-condition-def',\n template: `\n <ng-container novoConditionFieldDef=\"DATE\">\n <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"before\">{{ labels.before }}</novo-option>\n <novo-option value=\"after\">{{ labels.after }}</novo-option>\n <novo-option value=\"equalTo\">{{ labels.equals }}</novo-option>\n <novo-option value=\"within\">{{ labels.within }}</novo-option>\n <novo-option value=\"between\">{{ labels.between }}</novo-option>\n <novo-option value=\"isNull\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['after']\">\n <input novoInput dateTimeFormat=\"iso8601\" [picker]=\"datetimepicker\" formControlName=\"value\"/>\n <novo-picker-toggle triggerOnFocus [width]=\"-1\" [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-time-picker defaultTime=\"end\" (onSelect)=\"closePanel($event, viewIndex)\" #datetimepicker\n [weekStart]=\"config()?.weekStart\"></novo-date-time-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['before']\">\n <input novoInput dateTimeFormat=\"iso8601\" [picker]=\"datetimepickerbefore\" formControlName=\"value\"/>\n <novo-picker-toggle triggerOnFocus [width]=\"-1\" [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-time-picker defaultTime=\"start\" (onSelect)=\"closePanel($event, viewIndex)\" #datetimepickerbefore\n [weekStart]=\"config()?.weekStart\"></novo-date-time-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['equalTo']\">\n <input novoInput dateFormat=\"yyyy-mm-dd\" [picker]=\"datepicker\" formControlName=\"value\"/>\n <novo-picker-toggle triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-picker (onSelect)=\"closePanel($event, viewIndex)\" #datepicker [weekStart]=\"config()?.weekStart\"></novo-date-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['between']\">\n <input novoInput dateRangeFormat=\"date\" [picker]=\"daterangepicker\" formControlName=\"value\"/>\n <novo-picker-toggle [for]=\"daterangepicker\" triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n <novo-date-picker #daterangepicker (onSelect)=\"closePanel($event, viewIndex)\" mode=\"range\" numberOfMonths=\"2\"\n [weekStart]=\"config()?.weekStart\"></novo-date-picker>\n </novo-picker-toggle>\n </novo-field>\n <novo-field *novoSwitchCases=\"['within']\">\n <novo-select [placeholder]=\"labels.selectDateRange\" formControlName=\"value\">\n <novo-option value=\"future\">{{ labels.future }}</novo-option>\n <novo-option value=\"-1\">{{ labels.past1Day }}</novo-option>\n <novo-option value=\"-7\">{{ labels.past7Days }}</novo-option>\n <novo-option value=\"-14\">{{ labels.past14Days }}</novo-option>\n <novo-option value=\"-21\">{{ labels.past21Days }}</novo-option>\n <novo-option value=\"-30\">{{ labels.past30Days }}</novo-option>\n <novo-option value=\"-60\">{{ labels.past60Days }}</novo-option>\n <novo-option value=\"-90\">{{ labels.past90Days }}</novo-option>\n <novo-option value=\"-180\">{{ labels.past180Days }}</novo-option>\n <novo-option value=\"-270\">{{ labels.past270Days }}</novo-option>\n <novo-option value=\"-365\">{{ labels.past1Year }}</novo-option>\n <novo-option value=\"1\">{{ labels.next1Day }}</novo-option>\n <novo-option value=\"7\">{{ labels.next7Days }}</novo-option>\n <novo-option value=\"14\">{{ labels.next14Days }}</novo-option>\n <novo-option value=\"21\">{{ labels.next21Days }}</novo-option>\n <novo-option value=\"30\">{{ labels.next30Days }}</novo-option>\n <novo-option value=\"60\">{{ labels.next60Days }}</novo-option>\n <novo-option value=\"90\">{{ labels.next90Days }}</novo-option>\n <novo-option value=\"180\">{{ labels.next180Days }}</novo-option>\n <novo-option value=\"270\">{{ labels.next270Days }}</novo-option>\n <novo-option value=\"365\">{{ labels.next1Year }}</novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultDateTimeConditionDef extends AbstractConditionFieldDef {\n @ViewChildren(NovoPickerToggleElement)\n overlayChildren: QueryList<NovoPickerToggleElement>;\n\n defaultOperator = Operator.within;\n\n config: InputSignal<DateCriteriaConfig> = input();\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.before, Operator.after);\n }\n\n closePanel(event, viewIndex): void {\n const overlay = this.overlayChildren.find(item => item.overlayId === viewIndex);\n overlay.closePanel(event);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\n\n/**\n * Constructing filters against String fields can be complex. Each \"chip\" added to the\n * condition can be independently used to query a database. Not all systems support\n * querying within a text column, ie sql unless LIKE is enabled. This could result in a\n * performance penalty.\n */\n@Component({\n selector: 'novo-string-condition-def',\n template: `\n <!-- fieldTypes should be UPPERCASE -->\n <ng-container novoConditionFieldDef=\"STRING\">\n <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n <novo-option value=\"includeAll\" *ngIf=\"!meta?.removeIncludeAll\">{{ labels.includeAll }}</novo-option>\n <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n <novo-option value=\"beginsWith\" *ngIf=\"meta?.hasBeginsWith\">{{ labels.beginsWith }}</novo-option>\n <novo-option value=\"isEmpty\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['includeAny', 'includeAll', 'excludeAny', 'beginsWith']\">\n <novo-chip-list #chipList aria-label=\"filter value\" multiple=\"true\" [chipsToggleable]=\"false\" formControlName=\"value\">\n <novo-chip *ngFor=\"let chip of formGroup.value?.value || []\" [value]=\"chip\" (removed)=\"remove(chip, formGroup)\">\n <novo-text ellipsis [tooltip]=\"chip\" tooltipOnOverflow>{{ chip }}</novo-text>\n <novo-icon novoChipRemove>close</novo-icon>\n </novo-chip>\n <input\n novoChipInput\n [placeholder]=\"labels.typeToAddChips\"\n autocomplete=\"off\"\n (novoChipInputTokenEnd)=\"add($event, formGroup)\"\n />\n </novo-chip-list>\n <novo-autocomplete></novo-autocomplete>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isEmpty']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // means the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultStringConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.includeAny;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.includeAny, Operator.includeAll, Operator.excludeAny, Operator.beginsWith);\n }\n\n getValue(formGroup: AbstractControl): any[] {\n return formGroup.value?.value || [];\n }\n\n add(event: any, formGroup: AbstractControl): void {\n const input = event.input;\n input.value = '';\n const valueToAdd = event.value;\n if (valueToAdd !== '') {\n const current: any[] = this.getValue(formGroup);\n const newValue: any[] = Array.isArray(current) ? [...current, valueToAdd] : [valueToAdd];\n this.setFormValue(formGroup, newValue);\n }\n }\n\n remove(valueToRemove: string, formGroup: AbstractControl): void {\n const current = this.getValue(formGroup);\n const index = current.indexOf(valueToRemove);\n if (index >= 0) {\n const value = [...current]\n value.splice(index, 1);\n this.setFormValue(formGroup, value);\n }\n }\n\n private setFormValue(formGroup: AbstractControl, newValue: any[]) {\n formGroup.get('value').setValue(newValue);\n formGroup.markAsDirty();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * When constructing a query using a field that is an Int, Double, Number ...etc.\n * TODO: Do we implement currency formation here potentially?\n */\n@Component({\n selector: 'novo-number-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"greaterThan\">{{ labels.greaterThan }}</novo-option>\n <novo-option value=\"lessThan\">{{ labels.lessThan }}</novo-option>\n <novo-option value=\"equalTo\">{{ labels.equalTo }}</novo-option>\n <novo-option value=\"between\">{{ labels.between }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['greaterThan', 'lessThan', 'equalTo']\">\n <input novoInput type=\"number\" formControlName=\"value\"/>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n <ng-container *novoSwitchCases=\"['between']\">\n <novo-number-range formControlName=\"value\"/>\n </ng-container>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultNumberConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.equalTo;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.greaterThan, Operator.lessThan, Operator.equalTo);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\n\n/**\n * Any condition that has a type of ID usually only is queried by ID.\n */\n@Component({\n selector: 'novo-id-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\">\n <novo-option value=\"equalTo\">{{ labels.equalTo }}</novo-option>\n <ng-content></ng-content>\n </novo-select>\n </novo-field>\n <novo-field *novoConditionInputDef=\"let formGroup\" [formGroup]=\"formGroup\">\n <input novoInput type=\"number\" min=\"1\" step=\"1\" formControlName=\"value\" />\n </novo-field>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultIdConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.equalTo;\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BaseFieldDef, Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { NovoSelectElement } from 'novo-elements/elements/select';\n\ntype FieldOption = BaseFieldDef['options'][number];\n/**\n * Handle selection of field values when a list of options is provided.\n */\n@Component({\n selector: 'novo-picker-condition-def',\n template: `\n <ng-container novoConditionFieldDef>\n <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n <novo-option value=\"includeAll\" *ngIf=\"!meta?.removeIncludeAll\">{{ labels.includeAll }}</novo-option>\n <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n <novo-option value=\"isNull\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n </novo-select>\n </novo-field>\n <ng-container *novoConditionInputDef=\"let formGroup; fieldMeta as meta\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n <novo-field *novoSwitchCases=\"['includeAny', 'includeAll', 'excludeAny']\">\n <novo-select #select extupdatefix formControlName=\"value\" [placeholder]=\"labels.select\" [multiple]=\"true\">\n <novo-option [disabled]=\"!meta?.allowCustomFilterValues\" [hidden]=\"!meta?.allowCustomFilterValues\">\n <novo-select-search #filterInput allowDeselectDuringFilter></novo-select-search>\n </novo-option>\n <!-- What about optionUrl/optionType -->\n @for (option of meta?.options; track optionTracker) {\n <novo-option [hidden]=\"hideOption(option, filterInput?.value)\" [value]=\"option.value\" [attr.data-automation-value]=\"option.label\">\n {{ option.label}}\n </novo-option>\n }\n @for (option of customOptions(meta?.options, select); track optionTracker) {\n <novo-option [hidden]=\"hideOption(option, filterInput?.value)\" [value]=\"option.value\" [attr.data-automation-value]=\"option.label\">\n {{ option.label}}\n </novo-option>\n }\n <novo-option class=\"add-option\" *ngIf=\"showAddOption(meta, select, filterInput?.value)\" [value]=\"filterInput?.value\" [allowSelection]=\"false\">\n {{filterInput.value}}\n <novo-icon class=\"add-icon\" novoSuffix>add-thin</novo-icon>\n </novo-option>\n </novo-select>\n </novo-field>\n <novo-field *novoSwitchCases=\"['isNull']\">\n <novo-radio-group formControlName=\"value\">\n <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n </novo-radio-group>\n </novo-field>\n </ng-container>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false,\n})\nexport class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {\n defaultOperator = Operator.includeAny;\n\n constructor(labelService: NovoLabelService) {\n super(labelService);\n this.defineOperatorEditGroup(Operator.includeAny, Operator.includeAll, Operator.excludeAny);\n }\n\n override onOperatorSelect(formGroup: UntypedFormGroup): void {\n super.onOperatorSelect(formGroup);\n // For multi-select operators, ensure value is an array, not null/boolean\n const newOperator = formGroup.get('operator').value;\n if ([Operator.includeAny, Operator.includeAll, Operator.excludeAny].includes(newOperator)) {\n const currentValue = formGroup.get('value').value;\n if (!Array.isArray(currentValue)) {\n formGroup.get('value').setValue([]);\n }\n }\n }\n\n showAddOption(meta, select, filterValue: string): boolean {\n if (!(meta?.allowCustomFilterValues)) {\n return false;\n }\n filterValue = filterValue?.trim().toLowerCase();\n if (!filterValue) {\n return false;\n }\n if (select?.value && Array.isArray(select.value) && select.value.find(selectValue => selectValue.trim().toLowerCase() === filterValue)) {\n return false;\n }\n return meta?.options && meta.options.find(opt => {\n const optionLabel = opt.label.trim().toLowerCase();\n return optionLabel === filterValue;\n }) == null;\n }\n\n optionTracker(option: FieldOption) {\n return `${option.value}~~~${option.label}`;\n }\n\n hideOption(option: FieldOption, filterValue: string): boolean {\n return filterValue && (option.value.toString().indexOf(filterValue) === -1 &&\n !option.label.toLowerCase().includes(filterValue.toLowerCase()));\n }\n\n customOptions(options: FieldOption[], select: NovoSelectElement): FieldOption[] {\n if (!Array.isArray(select.value)) {\n return [];\n }\n return select.value.filter((selectedOption: string) => {\n return (!options || !(options.find(option => option.value === selectedOption)));\n }).map(value => ({\n value,\n label: value,\n }));\n }\n\n applyCustomItem() {\n // Method to handle adding a new item when \"Add Item\" is selected\n // This is a placeholder for potential custom logic to add new items\n // Could be implemented to open a modal, trigger a service call, etc.\n console.warn('Custom item addition not implemented');\n\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { AddressCriteriaConfig, DateCriteriaConfig } from '../query-builder.types';\n\n@Component({\n selector: 'novo-condition-templates',\n templateUrl: './condition-templates.component.html',\n standalone: false,\n})\nexport class NovoConditionTemplatesComponent {\n @Input() addressConfig: AddressCriteriaConfig;\n @Input() dateConfig: DateCriteriaConfig;\n}\n","<novo-id-condition-def name=\"ID\"/>\n<novo-date-condition-def name=\"DATE\" [config]=\"dateConfig\"/>\n<novo-date-time-condition-def name=\"TIMESTAMP\" [config]=\"dateConfig\"/>\n<novo-string-condition-def name=\"STRING\"/>\n<novo-number-condition-def name=\"FLOAT\"/>\n<novo-number-condition-def name=\"INTEGER\"/>\n<novo-number-condition-def name=\"BIGDECIMAL\"/>\n<novo-number-condition-def name=\"DOUBLE\"/>\n<novo-address-condition-def name=\"ADDRESS\" [config]=\"addressConfig\"/>\n<novo-boolean-condition-def name=\"BOOLEAN\"/>\n<novo-picker-condition-def name=\"SELECT\"/>\n<novo-string-condition-def name=\"DEFAULT\"/>\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n SimpleChanges,\n SkipSelf,\n ViewChild,\n ViewContainerRef,\n computed,\n input,\n} from '@angular/core';\nimport { ControlContainer, FormControl, FormGroup } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { BaseConditionFieldDef } from '../query-builder.directives';\nimport { QueryBuilderConfig, QueryBuilderService } from '../query-builder.service';\nimport { NOVO_CONDITION_BUILDER } from '../query-builder.tokens';\nimport { AddressCriteriaConfig, BaseFieldDef, DateCriteriaConfig, FieldConfig, QueryFilterOutlet } from '../query-builder.types';\nimport { Helpers } from 'novo-elements/utils';\n\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\n@Directive({\n selector: '[conditionInputOutlet]',\n standalone: false,\n})\nexport class ConditionInputOutlet implements QueryFilterOutlet {\n constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {}\n}\n\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\n@Directive({\n selector: '[conditionOperatorOutlet]',\n standalone: false,\n})\nexport class ConditionOperatorOutlet implements QueryFilterOutlet {\n constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {}\n}\n\n@Component({\n selector: 'novo-condition-builder',\n templateUrl: './condition-builder.component.html',\n styleUrls: ['./condition-builder.component.scss'],\n providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent },\n {\n provide: QueryBuilderService,\n deps: [NovoLabelService, [new SkipSelf(), new Optional(), QueryBuilderService]],\n useFactory: (labelService: NovoLabelService, queryBuilderService?: QueryBuilderService) => {\n if (!queryBuilderService) {\n queryBuilderService = new QueryBuilderService(labelService);\n }\n return queryBuilderService;\n },\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class ConditionBuilderComponent implements OnInit, OnChanges, AfterContentInit, AfterViewInit, OnDestroy {\n @ViewChild(ConditionOperatorOutlet, { static: true }) _operatorOutlet: ConditionOperatorOutlet;\n @ViewChild(ConditionInputOutlet, { static: true }) _inputOutlet: ConditionInputOutlet;\n\n @Input() label: any;\n @Input() scope: string;\n @Input() andIndex: number;\n @Input() groupIndex: number;\n @Input() addressConfig: AddressCriteriaConfig;\n @Input() dateConfig: DateCriteriaConfig;\n hideOperator = input(true);\n conditionType = input();\n\n // This component can either be directly hosted as a host to a condition, or it can be part of a condition group within a criteria builder.\n // In the former case, config will come from inputs, and we will instantiate our own QueryBuilderService. In the latter, it comes from\n // the QueryBuilderService.\n inputConfig = input<QueryBuilderConfig>(null, { alias: 'config'});\n inputEditTypeFn = input<(field: BaseFieldDef) => string>(null, { alias: 'editTypeFn'});\n private config = computed<QueryBuilderConfig>(() => {\n if (this.isConditionHost) {\n this.queryBuilderService.config = this.inputConfig();\n }\n return this.queryBuilderService.config;\n });\n private editTypeFn = computed<(field: BaseFieldDef) => string>(() => {\n if (this.isConditionHost) {\n this.queryBuilderService.editTypeFn = this.inputEditTypeFn();\n }\n return this.queryBuilderService.editTypeFn;\n });\n\n public parentForm: FormGroup;\n public fieldConfig: FieldConfig<BaseFieldDef>;\n public searches!: Subscription;\n public results$: Promise<any[]>;\n public searchTerm: FormControl = new FormControl();\n public fieldDisplayWith;\n public displayIcon: string;\n\n public staticFieldSelection = computed(() => this.config().staticFieldSelection);\n private _lastContext: any = {};\n @HostBinding('class.condition-host')\n public isConditionHost = false;\n\n public gridColumns = computed(() => {\n if (this.staticFieldSelection()) {\n return '13rem 1fr';\n } else {\n const firstColumnWidth = this.hideOperator() ? '20rem' : '16rem';\n return `${firstColumnWidth} 13rem 1fr`;\n }\n });\n\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n constructor(\n public labels: NovoLabelService,\n private cdr: ChangeDetectorRef,\n private queryBuilderService: QueryBuilderService,\n private controlContainer: ControlContainer,\n ) {\n if (!queryBuilderService.componentHost) {\n queryBuilderService.componentHost = this;\n this.isConditionHost = true;\n this.groupIndex = 0;\n this.andIndex = 0;\n }\n }\n\n ngOnInit() {\n this.parentForm = this.controlContainer.control as FormGroup;\n this.parentForm.controls.field.valueChanges.subscribe((value) => {\n Promise.resolve().then(() => this.updateFieldSelection());\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.inputConfig?.previousValue?.staticFieldSelection &&\n changes.inputConfig.previousValue.staticFieldSelection !== changes.inputConfig.currentValue.staticFieldSelection) {\n this.parentForm.controls.field.setValue(changes.inputConfig.currentValue.staticFieldSelection);\n }\n }\n\n ngAfterContentInit() {\n const allFields = this.config()?.fields || [];\n const scopedFields = this.scope ? allFields.find((field) => field.value === this.scope) : allFields[0];\n allFields.length && this.changeFieldOptions(scopedFields);\n this.searches = this.searchTerm.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe((term) => {\n this.results$ = Promise.resolve(\n this.fieldConfig.options.filter(\n (f) => f.name.toLowerCase().includes(term.toLowerCase()) || f.label?.toLowerCase().includes(term.toLowerCase()),\n ),\n );\n this.cdr.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n if (this.parentForm.value?.field !== null) {\n Promise.resolve().then(() => this.updateFieldSelection());\n }\n }\n\n ngOnDestroy() {\n this.searches?.unsubscribe();\n // Clear all outlets and Maps\n [this._operatorOutlet.viewContainer, this._inputOutlet.viewContainer].forEach((def) => {\n def.clear();\n });\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n /**\n * Updates the Conditions \"Field\" Options to Change base on new Scope\n * @param fieldConfig\n */\n changeFieldOptions(fieldConfig: FieldConfig<BaseFieldDef>) {\n this.fieldConfig = fieldConfig;\n this.searchTerm.setValue('');\n this.results$ = Promise.resolve(this.fieldConfig.options);\n }\n\n /**\n * Resets the input and operator view containers, regenerates the field templates,\n * and marks the component for change detection.\n *\n * Use this method after updating form controls to reinitialize the input and\n * operator fields so that the view reflects the latest form control changes.\n *\n * @returns void\n */\n resetInputAndOperator(): void {\n this._inputOutlet.viewContainer.clear();\n this._operatorOutlet.viewContainer.clear();\n this.createFieldTemplates();\n this.cdr.markForCheck();\n }\n\n getField() {\n const field = this.parentForm?.value?.field;\n if (!field) {\n return null;\n }\n return this.fieldConfig.find(field);\n }\n\n getDefaultField() {\n const fields = this.fieldConfig.options;\n if (fields?.length) {\n return fields[0].name;\n }\n return null;\n }\n\n updateFieldSelection() {\n const fieldConf = this.getField();\n if (!fieldConf) {\n this.parentForm.get('field').setValue(this.getDefaultField());\n return;\n } else {\n this.fieldDisplayWith = () => fieldConf.label || fieldConf.name;\n this.displayIcon = fieldConf.icon || null;\n }\n const { field } = this.parentForm.value;\n\n if (this._lastContext.field !== field) {\n if (this._lastContext.field) {\n // only clearing operator/value if field was previously defined so we can preload values onto the form\n this.parentForm.get('value').setValue(null);\n this.parentForm.get('operator').setValue(null);\n }\n this.createFieldTemplates();\n }\n setTimeout(() => this.updateConditionType());\n\n this._lastContext = { ...this.parentForm.value };\n this.cdr.markForCheck();\n }\n\n updateConditionType() {\n this.parentForm.get('conditionType')?.setValue(this.conditionType());\n }\n\n private findDefinitionForField(field) {\n if (!field) {\n return;\n }\n let editType = this.editTypeFn()(field);\n // Don't look at dataSpecialization it is no good, this misses currency, and percent\n const { name } = field;\n if (editType.toUpperCase() === 'RADIO') {\n editType = this.doesFieldQualifyAsBinary(field) ? 'BOOLEAN' : 'SELECT';\n }\n const fieldDefsByName = this.queryBuilderService.getFieldDefsByName();\n // Check Fields by priority for match Field Definition\n const key = [name, editType?.toUpperCase(), 'DEFAULT'].find((it) => fieldDefsByName.has(it));\n return fieldDefsByName.get(key);\n }\n\n private doesFieldQualifyAsBinary(field): boolean {\n if (field.dataType === 'Boolean') {\n return true;\n }\n // If no options are presented, use True/False options.\n const optionCount = field.options?.length\n if (!Helpers.isNumber(optionCount) || optionCount === 0) {\n return true;\n }\n // If the field uses 2 options, we can show 2 radio values for that. 1 is an invalid state, but better displayed with a Select picker.\n return field.options.length === 2;\n }\n\n private createFieldTemplates() {\n const definition = this.findDefinitionForField(this.getField());\n\n if (!this.parentForm.get('operator').value) {\n this.parentForm.get('operator').setValue(definition.defaultOperator);\n }\n\n this.createFieldOperators(definition);\n this.createFieldInput(definition);\n }\n\n private createFieldOperators(definition: BaseConditionFieldDef) {\n this._operatorOutlet.viewContainer.clear();\n if (definition) {\n const context = { $implicit: this.parentForm, fieldMeta: this.getField() };\n this._operatorOutlet.viewContainer.createEmbeddedView(definition.fieldOperators.template, context);\n }\n this.cdr.markForCheck();\n }\n\n private createFieldInput(definition: BaseConditionFieldDef) {\n this._inputOutlet.viewContainer.clear();\n if (definition) {\n const context = { $implicit: this.parentForm, fieldMeta: this.getField(), viewIndex: this.groupIndex.toString() + this.andIndex.toString() };\n this._inputOutlet.viewContainer.createEmbeddedView(definition.fieldInput.template, context);\n }\n this.cdr.markForCheck();\n }\n}\n","<form [formGroup]=\"parentForm\">\n <novo-grid gap=\"1rem\" [columns]=\"gridColumns()\" align=\"end\">\n <novo-field class=\"condition-field\" *ngIf=\"!staticFieldSelection()\">\n <novo-select\n [placeholder]=\"labels.chooseAField\"\n formControlName=\"field\"\n (onSelect)=\"updateFieldSelection()\"\n overlayWidth=\"24rem\"\n overlayHeight=\"20rem\"\n [displayWith]=\"fieldDisplayWith\"\n [style.minWidth.px]=\"160\"\n [style.maxWidth.px]=\"(hideOperator() || isConditionHost) ? 200 : 160\"\n [displayIcon]=\"displayIcon\">\n <novo-optgroup class=\"filter-search-results\">\n <novo-option>\n <novo-select-search [formControl]=\"searchTerm\" [clearSearchInput]=\"false\"></novo-select-search>\n </novo-option>\n <ng-container *ngIf=\"results$ | async as results; else loading\">\n <ng-container *ngIf=\"results.length\">\n <novo-option *ngFor=\"let field of results\" value=\"{{ field.name }}\"\n [attr.data-automation-id]=\"field.name\">\n {{ field.label || field.name }}\n </novo-option>\n </ng-container>\n </ng-container>\n </novo-optgroup>\n </novo-select>\n </novo-field>\n\n <div class=\"condition-operator\">\n <ng-container conditionOperatorOutlet></ng-container>\n </div>\n\n <div class=\"condition-input\">\n <ng-container conditionInputOutlet></ng-container>\n </div>\n </novo-grid>\n <ng-content></ng-content>\n</form>\n\n<novo-condition-templates *ngIf=\"isConditionHost\" [addressConfig]=\"addressConfig\" [dateConfig]=\"dateConfig\"/>\n\n<!-- LOADING TEMPLATE -->\n<ng-template #loading>\n <novo-loading></novo-loading>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ControlContainer, FormArray, FormBuilder, UntypedFormGroup, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { QueryBuilderService } from '../query-builder.service';\nimport { Condition, Conjunction } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\nconst EMPTY_CONDITION: Condition = {\n conditionType: '$and',\n field: null,\n operator: null,\n scope: null,\n value: null,\n supportingValue: null,\n};\n@Component({\n selector: 'novo-condition-group',\n templateUrl: './condition-group.component.html',\n styleUrls: ['./condition-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ConditionGroupComponent), multi: true }],\n host: {\n class: 'novo-condition-group',\n },\n standalone: false,\n})\nexport class ConditionGroupComponent implements OnInit, OnDestroy {\n @Input() controlName: string = '$' + Conjunction.AND;\n @Input() groupIndex: number;\n @Input() hideFirstOperator: boolean = true;\n @Input() canBeEmpty: boolean = false;\n @Input() formGroupName: any;\n\n public scope: string;\n public entity: string;\n public parentForm: UntypedFormGroup;\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n constructor(\n public qbs: QueryBuilderService,\n public labels: NovoLabelService,\n private controlContainer: ControlContainer,\n private formBuilder: FormBuilder,\n private cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.parentForm = this.controlContainer.control as UntypedFormGroup;\n this.controlName = Object.keys(this.parentForm.controls)[0];\n this.updateGroupScopeAndEntity();\n merge(this.parentForm.parent.valueChanges, this.qbs.stateChanges)\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => this.cdr.markForCheck());\n }\n\n ngOnChanges() {\n this.updateGroupScopeAndEntity();\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n updateGroupScopeAndEntity() {\n if (this.parentForm && this.controlName) {\n this.scope = this.parentForm.value[this.controlName][0]?.scope || this.qbs.scopes()[0];\n const entity = this.parentForm.value[this.controlName][0]?.entity;\n if (entity) {\n this.entity = entity;\n }\n }\n }\n\n updateControlName(value: string) {\n const name = `$${value.replace('$', '')}`;\n if (name !== this.controlName) {\n const current = this.parentForm.get(this.controlName).value;\n this.parentForm.controls[name] = this.parentForm.controls[this.controlName];\n delete this.parentForm.controls[this.controlName];\n this.controlName = name;\n // scrub properties not on control\n const currentStrict = current.map(item => this.sanitizeCondition(item));\n this.parentForm.get(this.controlName)?.setValue(currentStrict);\n this.cdr.markForCheck();\n }\n }\n\n private sanitizeCondition(condition: any): Condition {\n return {\n conditionType: condition.conditionType,\n field: condition.field,\n operator: condition.operator,\n scope: condition.scope,\n value: condition.value,\n supportingValue: condition.supportingValue,\n entity: condition.entity,\n warnOnDelete: condition.warnOnDelete,\n };\n }\n\n get root(): FormArray {\n return this.parentForm.get(this.controlName) as FormArray;\n }\n\n addCondition(data?: any) {\n const condition = this.newCondition(data);\n const onlyConditionIsEmpty = JSON.stringify(this.root.value) === JSON.stringify([EMPTY_CONDITION]);\n this.root.push(condition);\n this.qbs.hasMultipleScopes() && onlyConditionIsEmpty && this.removeCondition(0);\n this.cdr.markForCheck();\n }\n\n async removeCondition(index: number) {\n const condition = this.root.at(index)?.value;\n const warnOnDelete = condition?.warnOnDelete;\n const fieldName = condition?.field;\n const isLastInstanceOfPinnedField = typeof warnOnDelete === 'function' && this.root.value.filter(c => c.field === fieldName).length === 1;\n\n if (isLastInstanceOfPinnedField) {\n const shouldDelete = await warnOnDelete();\n if (!shouldDelete) {\n return;\n }\n }\n\n const isPrimaryScope = this.scope === this.qbs.scopes()[0];\n const lastRowInGroup = this.root.length === 1;\n const lastRowInQueryBuilder = this.cantRemoveRow();\n this.root.removeAt(index);\n if ((lastRowInQueryBuilder || (lastRowInGroup && isPrimaryScope)) && !this.canBeEmpty) {\n this.addCondition();\n }\n this.cdr.markForCheck();\n }\n\n newCondition({ field, operator, scope, value, supportingValue, entity, warnOnDelete }: Condition = EMPTY_CONDITION): UntypedFormGroup {\n return this.formBuilder.group({\n conditionType: '$and',\n field: [field, Validators.required],\n operator: [operator, Validators.required],\n scope: [scope],\n value: [value],\n supportingValue: [supportingValue],\n entity: [entity],\n warnOnDelete: [warnOnDelete],\n });\n }\n\n cantRemoveRow() {\n if ((this.parentForm.parent as FormArray).length > 1) {\n return false;\n }\n return this.root.length <= 1;\n }\n}\n","<div [formGroup]=\"parentForm\" class=\"condition-group-container\">\n <novo-stack [formArrayName]=\"controlName\" gap=\"md\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLast = last;\">\n <ng-container [formGroupName]=\"andIndex\">\n <novo-flex class=\"condition-row\" [ngClass]=\"{ isFirst: andIndex === 0 }\" [class]=\"entity || scope\" align=\"end\" gap=\"sm\" #flex>\n <novo-dropdown *ngIf=\"(!isFirst || !hideFirstOperator) && qbs.allowedGroupings.length > 1; else labeledGroup\" data-automation-id=\"groupings-dropdown\">\n <button theme=\"dialogue\" icon=\"collapse\" size=\"sm\">{{qbs.getConjunctionLabel(controlName)}}</button>\n <novo-optgroup>\n <novo-option *ngFor=\"let c of qbs.allowedGroupings\" (click)=\"updateControlName(c)\" [attr.data-automation-id]=\"c\">\n {{qbs.getConjunctionLabel(c)}}</novo-option>\n </novo-optgroup>\n </novo-dropdown>\n <ng-template #labeledGroup>\n <novo-label *ngIf=\"!isFirst || !hideFirstOperator\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">\n {{qbs.getConjunctionLabel(controlName)}}</novo-label>\n </ng-template>\n <novo-condition-builder [groupIndex]=\"groupIndex\" [andIndex]=\"andIndex\" [hideOperator]=\"isFirst && hideFirstOperator\" [scope]=\"scope\" [conditionType]=\"controlName\"></novo-condition-builder>\n <novo-button class=\"delete-btn\" theme=\"icon\" icon=\"delete-o\" color=\"negative\" (click)=\"removeCondition(andIndex)\" data-automation-id=\"delete-filter-button\">\n </novo-button>\n </novo-flex>\n </ng-container>\n </ng-container>\n <button\n *ngIf=\"!qbs.hasMultipleScopes()\"\n theme=\"dialogue\"\n data-automation-id=\"add-advanced-search-condition\"\n icon=\"add-thin\"\n side=\"left\"\n size=\"sm\"\n uppercase\n (click)=\"addCondition()\">\n {{ labels.addCondition }}</button>\n </novo-stack>\n</div>\n","import {\n AfterContentChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChildren,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { ControlContainer, FormArray, FormBuilder, NG_VALUE_ACCESSOR, UntypedFormGroup, Validators } from '@angular/forms';\nimport { interval, Subject } from 'rxjs';\nimport { debounce, filter, startWith, takeUntil } from 'rxjs/operators';\nimport { NovoTabbedGroupPickerElement, TabbedGroupPickerButtonConfig, TabbedGroupPickerTab } from 'novo-elements/elements/tabbed-group-picker';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { ConditionGroupComponent } from '../condition-group/condition-group.component';\nimport { NovoConditionFieldDef } from '../query-builder.directives';\nimport { QueryBuilderService } from '../query-builder.service';\nimport { NOVO_CRITERIA_BUILDER } from '../query-builder.tokens';\nimport { BaseFieldDef, Condition, ConditionGroup, Conjunction, AddressCriteriaConfig, DateCriteriaConfig } from '../query-builder.types';\n\nconst EMPTY_CONDITION: Condition = {\n conditionType: '$and',\n field: null,\n operator: null,\n scope: null,\n value: null,\n supportingValue: null,\n entity: null,\n warnOnDelete: undefined,\n};\n@Component({\n selector: 'novo-criteria-builder',\n templateUrl: './criteria-builder.component.html',\n styleUrls: ['./criteria-builder.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CriteriaBuilderComponent), multi: true },\n { provide: NOVO_CRITERIA_BUILDER, useExisting: CriteriaBuilderComponent },\n { provide: QueryBuilderService, useClass: QueryBuilderService },\n ],\n host: {\n class: 'novo-criteria-builder',\n },\n standalone: false,\n})\nexport class CriteriaBuilderComponent implements OnInit, OnDestroy, AfterContentChecked, AfterViewInit {\n @Input() config: any;\n @Input() controlName: string;\n @Input() allowedGroupings = [Conjunction.AND, Conjunction.OR, Conjunction.NOT];\n @Input() editTypeFn: (field: BaseFieldDef) => string;\n @Input() addressConfig: AddressCriteriaConfig;\n @Input() dateConfig: DateCriteriaConfig;\n @Input() canBeEmpty: boolean = false;\n\n @Input('hideFirstOperator')\n set HideFirstOperator(hide: boolean) {\n if (!Helpers.isEmpty(hide)) {\n this._hideFirstOperator = hide;\n }\n }\n get hideFirstOperator() {\n return this._hideFirstOperator;\n }\n private _hideFirstOperator: boolean = true;\n\n @ContentChildren(NovoConditionFieldDef, { descendants: true }) _contentFieldDefs: QueryList<NovoConditionFieldDef>;\n scopedFieldPicker = viewChild(NovoTabbedGroupPickerElement);\n conditionGroups = viewChildren(ConditionGroupComponent);\n\n public parentForm: UntypedFormGroup;\n public innerForm: UntypedFormGroup;\n public tabbedGroupPickerTabs = computed<TabbedGroupPickerTab[]>(() => {\n const tabs = [];\n this.qbs.scopes()?.forEach((scope) => {\n tabs.push({\n typeName: scope,\n typeLabel: scope,\n valueField: 'name',\n labelField: 'label',\n data: this.qbs.config.fields.find((field) => field.value === scope)?.options || [],\n });\n });\n return tabs;\n });\n public addButtonConfig: TabbedGroupPickerButtonConfig = {\n theme: 'dialogue',\n side: 'left',\n size: 'sm',\n icon: 'add-thin',\n label: this.labels.addCondition,\n };\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n constructor(\n private controlContainer: ControlContainer,\n private formBuilder: FormBuilder,\n private cdr: ChangeDetectorRef,\n public qbs: QueryBuilderService,\n public labels: NovoLabelService,\n ) {\n if (!qbs.componentHost) {\n qbs.componentHost = this;\n }\n }\n\n ngOnInit() {\n this.parentForm = this.controlContainer.control as UntypedFormGroup;\n this.innerForm = this.formBuilder.group({\n criteria: this.formBuilder.array([]),\n });\n\n this.parentForm.valueChanges.pipe(\n startWith(this.parentForm.value),\n filter(v => v?.criteria),\n takeUntil(this._onDestroy),\n ).subscribe((value) => {\n Promise.resolve().then(() => {\n this.setInitialValue(value[this.controlName]);\n this.cdr.markForCheck();\n });\n });\n this.innerForm.valueChanges\n .pipe(\n debounce(() => interval(10)),\n takeUntil(this._onDestroy),\n )\n .subscribe((value) => {\n const result = value.criteria.filter((it, i) => {\n const key = Object.keys(it)[0];\n if (it[key].length === 0) {\n this.removeConditionGroupAt(i);\n }\n return it[key].length > 0;\n });\n\n Promise.resolve().then(() => {\n this.parentForm.get(this.controlName).setValue(result, { emitEvent: false });\n this.cdr.markForCheck();\n });\n });\n }\n\n ngAfterContentChecked(): void {\n this._configureQueryBuilderService();\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this._registerFieldDefs();\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n private isConditionGroup(group: unknown): group is ConditionGroup {\n return Object.keys(group).every((key) => ['$and', '$or', '$not'].includes(key));\n }\n\n private setInitialValue(value: ConditionGroup[] | Condition[]) {\n if (value.length) {\n if (this.isConditionGroup(value[0])) {\n value.forEach((it) => this.addConditionGroup(it));\n } else {\n const conditions: Condition[] = [...value] as Condition[];\n if (this.qbs.hasMultipleScopes()) {\n // divide up by scope into separate groups\n const scopedConditions: { [key: string]: Condition[] } = {};\n conditions.forEach((condition) => {\n scopedConditions[condition.scope] = scopedConditions[condition.scope] || [];\n scopedConditions[condition.scope].push(condition);\n })\n for (const scope in scopedConditions) {\n this.addConditionGroup({ $and: scopedConditions[scope] });\n }\n } else {\n this.addConditionGroup({ $and: conditions });\n }\n }\n } else {\n this.addConditionGroup({ $and: value });\n }\n }\n\n get root(): FormArray {\n return this.innerForm.get('criteria') as FormArray;\n }\n\n addConditionGroup(data: any = { $and: [EMPTY_CONDITION] }) {\n this.root.push(this.newConditionGroup(data));\n this.cdr.markForCheck();\n }\n\n newConditionGroup(data: ConditionGroup): UntypedFormGroup {\n const controls = Object.entries(data).reduce((obj, [key, val]) => {\n return {\n ...obj,\n [key]: this.formBuilder.array(val.map((it) => this.newCondition(it))),\n };\n }, {});\n return this.formBuilder.group(controls);\n }\n\n newCondition({ field, operator, scope, value, supportingValue, warnOnDelete }: Condition = EMPTY_CONDITION): UntypedFormGroup {\n const entity = this.getFieldEntity(this.config, scope);\n return this.formBuilder.group({\n conditionType: '$and',\n field: [field, Validators.required],\n operator: [operator, Validators.required],\n scope: [scope],\n value: [value],\n supportingValue: [supportingValue],\n entity: [entity],\n warnOnDelete: [warnOnDelete],\n });\n }\n\n getFieldEntity(fieldConfigs, scope) {\n if (Array.isArray(fieldConfigs?.fields)) {\n return fieldConfigs.fields.find(field => field.value === scope)?.entity\n }\n return null;\n }\n\n removeConditionGroupAt(index: number) {\n this.root.removeAt(index, { emitEvent: false });\n }\n\n clearAllConditions() {\n while (this.root.length) {\n this.root.removeAt(0);\n }\n }\n\n onFieldSelect(field) {\n this.scopedFieldPicker().dropdown.closePanel();\n const condition = { field: field.name, operator: null, scope: field.scope, value: null, entity: field.entity };\n const group = this.conditionGroups().find((conditionGroup) => conditionGroup.scope === field.scope);\n if (group) {\n group.addCondition(condition);\n } else {\n this.addConditionGroup({ $and: [condition] })\n }\n }\n\n private _configureQueryBuilderService() {\n this.qbs.scopes.set(this.config?.fields.map((f) => f.value));\n this.qbs.config = this.config;\n this.qbs.editTypeFn = this.editTypeFn;\n this.qbs.allowedGroupings = this.allowedGroupings as Conjunction[];\n }\n\n private _registerFieldDefs() {\n const defs = [...Array.from(this._contentFieldDefs)];\n defs.forEach((fieldDef) => {\n this.qbs.registerFieldDef(fieldDef);\n });\n }\n}\n","<form [formGroup]=\"innerForm\">\n <novo-stack [formArrayName]=\"controlName\" class=\"criteria-builder-inner\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLastAnd = last;\">\n <novo-label *ngIf=\"!isFirst\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">{{ qbs.hasMultipleScopes() ? conditionGroup.scope + ' ' + labels.filterss : qbs.getConjunctionLabel('and') }}</novo-label>\n <novo-condition-group [hideFirstOperator]=\"hideFirstOperator\" [canBeEmpty]=\"canBeEmpty\" [groupIndex]=\"andIndex\" [formGroupName]=\"andIndex\" #conditionGroup></novo-condition-group>\n </ng-container>\n </novo-stack>\n <novo-tabbed-group-picker\n *ngIf=\"qbs.hasMultipleScopes()\"\n [tabs]=\"tabbedGroupPickerTabs()\"\n [selectionEnabled]=\"false\"\n [buttonConfig]=\"addButtonConfig\"\n (activation)=\"onFieldSelect($event)\">\n </novo-tabbed-group-picker>\n</form>\n<novo-condition-templates [addressConfig]=\"addressConfig\" [dateConfig]=\"dateConfig\"/>\n\n<!--\n {\n $and: [{\n $or: [{\n entity: 'JobOrder'\n field: 'categories',\n operator: 'doesNotContain',\n value: 'Healthcare'\n }]\n }]\n }\n -->\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NovoAutoCompleteModule } from 'novo-elements/elements/autocomplete';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCardModule } from 'novo-elements/elements/card';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoCommonModule, NovoOptionModule, NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoDatePickerModule } from 'novo-elements/elements/date-picker';\nimport { NovoDateTimePickerModule } from 'novo-elements/elements/date-time-picker';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoFieldModule } from 'novo-elements/elements/field';\nimport { NovoFlexModule } from 'novo-elements/elements/flex';\nimport { NovoFormExtrasModule, NovoFormModule } from 'novo-elements/elements/form';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoNonIdealStateModule } from 'novo-elements/elements/non-ideal-state';\nimport { GooglePlacesModule } from 'novo-elements/elements/places';\nimport { NovoRadioModule } from 'novo-elements/elements/radio'\nimport { NovoSearchBoxModule } from 'novo-elements/elements/search';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { NovoSelectSearchModule } from 'novo-elements/elements/select-search';\nimport { NovoSwitchModule } from 'novo-elements/elements/switch';\nimport { NovoTabbedGroupPickerModule } from 'novo-elements/elements/tabbed-group-picker';\nimport { NovoTabModule } from 'novo-elements/elements/tabs';\nimport { ConditionBuilderComponent, ConditionInputOutlet, ConditionOperatorOutlet } from './condition-builder/condition-builder.component';\nimport { NovoDefaultAddressConditionDef } from './condition-definitions/address-condition.definition';\nimport { NovoDefaultBooleanConditionDef } from './condition-definitions/boolean-condition.definition';\nimport { NovoDefaultDateConditionDef } from './condition-definitions/date-condition.definition';\nimport { NovoDefaultDateTimeConditionDef } from './condition-definitions/date-time-condition.definition';\nimport { NovoDefaultIdConditionDef } from './condition-definitions/id-condition.definition';\nimport { NovoDefaultNumberConditionDef } from './condition-definitions/number-condition.definition';\nimport { NovoDefaultPickerConditionDef } from './condition-definitions/picker-condition.definition';\nimport { NovoDefaultStringConditionDef } from './condition-definitions/string-condition.definition';\nimport { ConditionGroupComponent } from './condition-group/condition-group.component';\nimport { CriteriaBuilderComponent } from './criteria-builder/criteria-builder.component';\nimport { NovoConditionFieldDef, NovoConditionInputDef, NovoConditionOperatorsDef } from './query-builder.directives';\nimport { NovoConditionTemplatesComponent } from './condition-templates/condition-templates.component';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n DragDropModule,\n CdkTableModule,\n GooglePlacesModule,\n NovoAutoCompleteModule,\n NovoButtonModule,\n NovoCommonModule,\n NovoFormModule,\n NovoSelectModule,\n NovoNonIdealStateModule,\n NovoFieldModule,\n NovoOptionModule,\n NovoFlexModule,\n NovoTabModule,\n NovoTabbedGroupPickerModule,\n NovoLoadingModule,\n NovoCardModule,\n NovoDatePickerModule,\n NovoDateTimePickerModule,\n NovoIconModule,\n NovoOverlayModule,\n NovoRadioModule,\n NovoSearchBoxModule,\n NovoSwitchModule,\n NovoChipsModule,\n NovoSelectSearchModule,\n NovoDropdownModule,\n NovoFormExtrasModule,\n NovoTooltipModule,\n ],\n declarations: [\n CriteriaBuilderComponent,\n ConditionBuilderComponent,\n ConditionInputOutlet,\n ConditionOperatorOutlet,\n ConditionGroupComponent,\n NovoDefaultAddressConditionDef,\n NovoDefaultBooleanConditionDef,\n NovoDefaultDateConditionDef,\n NovoDefaultDateTimeConditionDef,\n NovoConditionOperatorsDef,\n NovoConditionInputDef,\n NovoConditionFieldDef,\n NovoDefaultStringConditionDef,\n NovoDefaultNumberConditionDef,\n NovoDefaultIdConditionDef,\n NovoDefaultPickerConditionDef,\n NovoConditionTemplatesComponent,\n ],\n exports: [\n CriteriaBuilderComponent,\n ConditionBuilderComponent,\n NovoDefaultAddressConditionDef,\n NovoDefaultBooleanConditionDef,\n NovoDefaultDateConditionDef,\n NovoDefaultDateTimeConditionDef,\n NovoConditionOperatorsDef,\n NovoConditionInputDef,\n NovoConditionFieldDef,\n NovoDefaultStringConditionDef,\n NovoDefaultNumberConditionDef,\n NovoDefaultIdConditionDef,\n NovoDefaultPickerConditionDef,\n NovoConditionTemplatesComponent,\n ],\n})\nexport class NovoQueryBuilderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.QueryBuilderService","i6","i7","i12.NovoConditionOperatorsDef","i12.NovoConditionInputDef","i12.NovoConditionFieldDef","i4","i5","i8.NovoConditionOperatorsDef","i8.NovoConditionInputDef","i8.NovoConditionFieldDef","i8","i9.NovoConditionOperatorsDef","i9.NovoConditionInputDef","i9.NovoConditionFieldDef","i9","i10.NovoConditionOperatorsDef","i10.NovoConditionInputDef","i10.NovoConditionFieldDef","i1","i2","i3","i5.NovoConditionOperatorsDef","i5.NovoConditionInputDef","i5.NovoConditionFieldDef","i1.NovoDefaultAddressConditionDef","i2.NovoDefaultBooleanConditionDef","i3.NovoDefaultDateConditionDef","i4.NovoDefaultDateTimeConditionDef","i5.NovoDefaultStringConditionDef","i6.NovoDefaultNumberConditionDef","i7.NovoDefaultIdConditionDef","i8.NovoDefaultPickerConditionDef","i2.QueryBuilderService","i10","i11.NovoConditionTemplatesComponent","EMPTY_CONDITION","i9.ConditionBuilderComponent","i8.ConditionGroupComponent","i9.NovoConditionTemplatesComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEY;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,WAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EAJW,WAAW,KAAX,WAAW,GAItB,EAAA,CAAA,CAAA;IAcW;AAAZ,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,QAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAnBW,QAAQ,KAAR,QAAQ,GAmBnB,EAAA,CAAA,CAAA;IAsFW;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,WAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACX,CAAC,EAHW,WAAW,KAAX,WAAW,GAGtB,EAAA,CAAA,CAAA;;AC1HM,MAAM,iBAAiB,GAAG,CAAC,KAAmB,KAAI;IACvD,OAAO,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI;AACxD,CAAC;MAQY,mBAAmB,CAAA;AAW9B;;;AAGG;AACH,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW;;IAEzB,IAAW,UAAU,CAAC,KAAsC,EAAA;AAC1D,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,IAAI,iBAAiB;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;AAI1B;;;AAGG;AACH,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO;;IAErB,IAAW,MAAM,CAAC,KAAyB,EAAA;AACzC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;AAO1B;;;;AAIG;AACH,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,iBAAiB;;IAE/B,IAAW,gBAAgB,CAAC,KAAoB,EAAA;AAC9C,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;AAM1B,IAAA,WAAA,CAAoB,MAAwB,EAAA;QAAxB,IAAM,CAAA,MAAA,GAAN,MAAM;AAvDlB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,GAAG,EAAyB;AACnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,GAAG,EAAiC;AAC5D,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AACnB,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AACpE;;;AAGG;AACM,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAQ;QAalD,IAAW,CAAA,WAAA,GAAoC,iBAAiB;AAahE,QAAA,IAAA,CAAA,OAAO,GAAuB;AACpC,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,oBAAoB,EAAE,IAAI;SAC3B;;;AAqBD,IAAA,gBAAgB,CAAC,QAA+B,EAAA;AAC9C,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;;;AAIpD,IAAA,kBAAkB,CAAC,QAA+B,EAAA;AAChD,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;;IAG7C,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,gBAAgB;;AAG9B,IAAA,mBAAmB,CAAC,WAAmB,EAAA;AACrC,QAAA,QAAQ,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;YAChD,KAAK,WAAW,CAAC,EAAE;AACjB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;YACvB,KAAK,WAAW,CAAC,GAAG;AAClB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG;YACxB,KAAK,WAAW,CAAC,GAAG;AACpB,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG;;;+GAlFjB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAnB,mBAAmB,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MCbY,kBAAkB,GAAG,IAAI,cAAc,CAAM,oBAAoB;MACjE,qBAAqB,GAAG,IAAI,cAAc,CAAM,uBAAuB;MACvE,sBAAsB,GAAG,IAAI,cAAc,CAAM,wBAAwB;;ACItF;;;AAGG;MAKU,qBAAqB,CAAA;IAChC,WAAY,sBAA4B,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ;;+GADrC,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;AAKD;;AAEG;MAKU,yBAAyB,CAAA;IACpC,WAAY,sBAA4B,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ;;+GADrC,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;AAKD;;;AAGG;MAEU,qBAAqB,CAAA;;AAEhC,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;IAEnB,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;;AAiB1B,IAAA,WAAA,GAAA;AAEA;;;;;;AAMG;IACO,wBAAwB,GAAA;QAChC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA,kBAAA,EAAqB,IAAI,CAAC,oBAAoB,CAAE,CAAA,CAAC;;AAGpE,IAAA,aAAa,CAAC,KAAa,EAAA;;;QAGnC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;YAClB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;YAC/D,IAAI,CAAC,wBAAwB,EAAE;;;+GA3CxB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,oBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAWlB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACrB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAZ5B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;wDAIK,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,oBAAoB;gBASU,UAAU,EAAA,CAAA;sBAA9C,YAAY;uBAAC,qBAAqB;gBACM,cAAc,EAAA,CAAA;sBAAtD,YAAY;uBAAC,yBAAyB;;AAwCnC,MAAO,qBAAsB,SAAQ,qBAAqB,CAAA;AAC9D,IAAA,WAAA,CAAoB,GAAwB,EAAA;AAC1C,QAAA,KAAK,EAAE;QADW,IAAG,CAAA,GAAA,GAAH,GAAG;;IAGvB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC;;IAEjC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC;;+GARxB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;MChFqB,yBAAyB,CAAA;;AAE7C,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;IAEnB,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;;QAGjB,IAAI,CAAC,iBAAiB,EAAE;;AAY1B,IAAA,WAAA,CAAmB,MAAwB,EAAA;QAAxB,IAAM,CAAA,MAAA,GAAN,MAAM;QALf,IAAkB,CAAA,kBAAA,GAAoB,EAAE;;IAOlD,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,0BAA0B,EAAE;AACjC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAA2B;;AAE9D,QAAA,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;;IAG3B,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,kBAAkB,EAAE;AAC3B,SAAC,CAAC;;IAGJ,kBAAkB,GAAA;QAChB,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,OAAO;QAC7H,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC,KAAK;;;IAIrD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE;;AAG7B;;;;AAIG;IACO,uBAAuB,CAAC,GAAG,SAAqB,EAAA;QACxD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;;AAGlD,IAAA,gBAAgB,CAAC,SAA2B,EAAA;QAC1C,IAAI,QAAQ,GAAG,IAAI;QACnB,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE;YAClE,MAAM,0BAA0B,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACjH,MAAM,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;AAChE,YAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACjG,YAAA,IAAI,0BAA0B,KAAK,CAAC,CAAC,IAAI,qBAAqB,KAAK,CAAC,CAAC,IAAI,0BAA0B,KAAK,qBAAqB,EAAE;gBAC7H,QAAQ,GAAG,KAAK;;;QAGpB,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK;QAC7D,IAAI,QAAQ,EAAE;YACZ,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;;;;IAKjC,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;;;IAI1B,0BAA0B,GAAA;AAChC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;;;+GAnFpC,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAmBlC,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,SAAA,EAClB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FApBT,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAD9C;qFAIK,IAAI,EAAA,CAAA;sBADP;gBAiBmD,QAAQ,EAAA,CAAA;sBAA3D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACnB,kBAAkB,EAAA,CAAA;sBAAhD,YAAY;uBAAC,eAAe;;;ACK/B;;AAEG;AA4DG,MAAO,8BAA+B,SAAQ,yBAAyB,CAAA;AA8B3E,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;;AAxBrB,QAAA,IAAA,CAAA,QAAQ,GAA0B;AAChC,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,WAAW,EAAE,OAAO;SACrB;QACD,IAAM,CAAA,MAAA,GAAuC,KAAK,EAAE;AACpD,QAAA,IAAA,CAAA,WAAW,GAAmC,QAAQ,CAAC,MACrD,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CACxD;AACD,QAAA,IAAA,CAAA,aAAa,GAAoB,QAAQ,CAAC,MACxC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAC5D;AACD,QAAA,IAAA,CAAA,UAAU,GAAmB,QAAQ,CAAC,MACpC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAC9E;AAED,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,UAAU;QACrC,IAAa,CAAA,aAAA,GAAQ,EAAE;QACvB,IAAI,CAAA,IAAA,GAAW,EAAE;AAET,QAAA,IAAA,CAAA,2BAA2B,GAAiB,YAAY,CAAC,KAAK;AAE/D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAIjC,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC;;IAGvH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE;;IAGhD,OAAO,CAAC,KAAK,EAAE,SAAS,EAAA;QACtB,IAAI,CAAC,CAAuB,QAAA,mBAAA,OAAA,iBAAA,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;;QAEhC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;;IAGhC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC9B,YAAA,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI;;QAEvC,IAAI,CAAA,QAAA,mBAAA,KAAA,eAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;;aAC1B;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC;;;AAItC,IAAA,QAAQ,CAAC,SAA0B,EAAA;AACjC,QAAA,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;;AAGpC,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;;AAGzE,IAAA,eAAe,CAAC,SAAiB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,IAAK,IAAY,CAAC,aAAa,CAAC,EAAE,KAAK,SAAS,CAAC;;AAGvF,IAAA,cAAc,CAAC,SAAS,EAAA;QACtB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE;;AAGhD,IAAA,eAAe,CAAC,SAAS,EAAA;QACvB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE;;AAGjD,IAAA,WAAW,CAAC,KAAU,EAAE,SAA0B,EAAE,SAAiB,EAAA;AACnE,QAAA,MAAM,UAAU,GAAgB;YAC9B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB;QACD,MAAM,OAAO,GAAgC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrE,MAAM,OAAO,GAAkB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AAC/F,QAAA,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAE9E,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,IAAG;AACtC,YAAA,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACrC,SAAC,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;AACtD,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;;AAGjC,IAAA,MAAM,CAAC,aAA0B,EAAE,SAA0B,EAAE,SAAiB,EAAA;QAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;AAC5C,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC;AAC7B,YAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACzB,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;;AAE3C,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;;;;AAKjC,IAAA,gBAAgB,CAAC,SAA2B,EAAA;AAC1C,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB;AACpD,QAAA,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACjG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE;YAChD,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;;;IAInG,cAAc,CAAC,SAA0B,EAAE,KAAK,EAAA;AAC9C,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,eAAe;QACpC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;;QAE1D,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/F,SAAS,CAAC,WAAW,EAAE;;IAGjB,oBAAoB,CAAC,SAA0B,EAAE,MAAqB,EAAA;QAC5E,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;AACxB,YAAA,GAAG,GAAG;AACN,YAAA,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS;AAC7F,SAAA,CAAC,CAAC;;AAGG,IAAA,aAAa,CAAC,SAA0B,EAAA;QAC9C,OAAO;AACL,YAAA,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,eAAe;AACtC,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;AACzB,YAAA,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ;SACnC;;AAGK,IAAA,wBAAwB,CAAC,SAA0B,EAAA;QACzD,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI;;+GAlJvH,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAC3B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,uBAAuB,EAGvB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAiB,EA7DnB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,sHAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,GAAA,EAAA,YAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAA,EAAA,IAAA,EAAA,SAAA,EAAA,IAAA,EAAA,SAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6HAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,GAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,gCAAA,EAAA,aAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBA3D1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDX,EAAA,CAAA;oBACC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;qFAEwC,eAAe,EAAA,CAAA;sBAArD,YAAY;uBAAC,uBAAuB;gBACP,aAAa,EAAA,CAAA;sBAA1C,YAAY;uBAAC,cAAc;gBACD,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc;gBACQ,eAAe,EAAA,CAAA;sBAA/C,YAAY;uBAAC,iBAAiB;;;AC7FjC;;AAEG;AAiCG,MAAO,8BAA+B,SAAQ,yBAAyB,CAAA;AAG3E,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;AAHrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,OAAO;AAIhC,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC;;AAGnF,IAAA,WAAW,CAAC,MAAM,EAAA;QAChB,OAAO,MAAM,CAAC,KAAK;;+GATV,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EA9B7B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAhC1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;AAyBX,EAAA,CAAA;oBACC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;ACjCD;;;AAGG;AAmEG,MAAO,2BAA4B,SAAQ,yBAAyB,CAAA;AAQxE,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;AALrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM;QAEjC,IAAM,CAAA,MAAA,GAAoC,KAAK,EAAE;AAI/C,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;;IAGjF,UAAU,CAAC,KAAK,EAAE,SAAS,EAAA;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AAC/E,QAAA,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;;+GAfhB,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EACxB,uBAAuB,EAjE3B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAlEvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;qFAGC,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,uBAAuB;;;ACvEvC;;;AAGG;AAiFG,MAAO,+BAAgC,SAAQ,yBAAyB,CAAA;AAQ5E,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;AALrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM;QAEjC,IAAM,CAAA,MAAA,GAAoC,KAAK,EAAE;QAI/C,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC;;IAG/D,UAAU,CAAC,KAAK,EAAE,SAAS,EAAA;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AAC/E,QAAA,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;;+GAfhB,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA/B,+BAA+B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAC5B,uBAAuB,EA/EzB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyET,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKQ,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAhF3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyET,IAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;qFAGC,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,uBAAuB;;;ACrFvC;;;;;AAKG;AAiDG,MAAO,6BAA8B,SAAQ,yBAAyB,CAAA;AAG1E,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;AAHrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,UAAU;AAInC,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;;AAGlH,IAAA,QAAQ,CAAC,SAA0B,EAAA;AACjC,QAAA,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;;IAGrC,GAAG,CAAC,KAAU,EAAE,SAA0B,EAAA;AACxC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;AACzB,QAAA,KAAK,CAAC,KAAK,GAAG,EAAE;AAChB,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK;AAC9B,QAAA,IAAI,UAAU,KAAK,EAAE,EAAE;YACrB,MAAM,OAAO,GAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC/C,MAAM,QAAQ,GAAU,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AACxF,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC;;;IAI1C,MAAM,CAAC,aAAqB,EAAE,SAA0B,EAAA;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;AAC5C,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC;AAC1B,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC;;;IAI/B,YAAY,CAAC,SAA0B,EAAE,QAAe,EAAA;QAC9D,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACzC,SAAS,CAAC,WAAW,EAAE;;+GAnCd,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EA9C5B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,gCAAA,EAAA,aAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAUU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAhDzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCX,EAAA,CAAA;oBACC,aAAa,EAAE,iBAAiB,CAAC,IAAI;;;;;;oBAMrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;ACtDD;;;AAGG;AAiCG,MAAO,6BAA8B,SAAQ,yBAAyB,CAAA;AAG1E,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;AAHrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,OAAO;AAIhC,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;;+GAL9E,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EA9B5B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAhCzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;AAyBX,EAAA,CAAA;oBACC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;ACpCD;;AAEG;AAoBG,MAAO,yBAA0B,SAAQ,yBAAyB,CAAA;AAnBxE,IAAA,WAAA,GAAA;;AAoBE,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,OAAO;AACnC;+GAFY,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAjBxB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;AAYX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAnBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYX,EAAA,CAAA;oBACC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;ACjBD;;AAEG;AAiDG,MAAO,6BAA8B,SAAQ,yBAAyB,CAAA;AAG1E,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;AAHrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,UAAU;AAInC,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;;AAGpF,IAAA,gBAAgB,CAAC,SAA2B,EAAA;AACnD,QAAA,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC;;QAEjC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACzF,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK;YACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBAChC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;;;;AAKzC,IAAA,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAmB,EAAA;AAC7C,QAAA,IAAI,EAAE,IAAI,EAAE,uBAAuB,CAAC,EAAE;AACpC,YAAA,OAAO,KAAK;;QAEd,WAAW,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE;QAC/C,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,KAAK;;AAEd,QAAA,IAAI,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,EAAE;AACtI,YAAA,OAAO,KAAK;;AAEd,QAAA,OAAO,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAG;YAC9C,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;YAClD,OAAO,WAAW,KAAK,WAAW;SACnC,CAAC,IAAI,IAAI;;AAGZ,IAAA,aAAa,CAAC,MAAmB,EAAA;QAC/B,OAAO,CAAA,EAAG,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,KAAK,CAAA,CAAE;;IAG5C,UAAU,CAAC,MAAmB,EAAE,WAAmB,EAAA;AACjD,QAAA,OAAO,WAAW,KAAK,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACtE,YAAA,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;;IAGtE,aAAa,CAAC,OAAsB,EAAE,MAAyB,EAAA;QAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,OAAO,EAAE;;QAEX,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAsB,KAAI;YACpD,QAAQ,CAAC,OAAO,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;SAC/E,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK;YACf,KAAK;AACL,YAAA,KAAK,EAAE,KAAK;AACb,SAAA,CAAC,CAAC;;IAGL,eAAe,GAAA;;;;AAIb,QAAA,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC;;+GA9D3C,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EA9C5B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,8BAAA,EAAA,uCAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,kCAAA,EAAA,uBAAA,EAAA,mCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAhDzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCX,EAAA,CAAA;oBACC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;MClDY,+BAA+B,CAAA;+GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,2JCR5C,wnBAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,8BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDJa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cAExB,KAAK,EAAA,QAAA,EAAA,wnBAAA,EAAA;8BAGV,aAAa,EAAA,CAAA;sBAArB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;;;AEqBH;;;AAGG;MAKU,oBAAoB,CAAA;IAC/B,WAAmB,CAAA,aAA+B,EAAS,UAAsB,EAAA;QAA9D,IAAa,CAAA,aAAA,GAAb,aAAa;QAA2B,IAAU,CAAA,UAAA,GAAV,UAAU;;+GAD1D,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;AAKD;;;AAGG;MAKU,uBAAuB,CAAA;IAClC,WAAmB,CAAA,aAA+B,EAAS,UAAsB,EAAA;QAA9D,IAAa,CAAA,aAAA,GAAb,aAAa;QAA2B,IAAU,CAAA,UAAA,GAAV,UAAU;;+GAD1D,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;MAwBY,yBAAyB,CAAA;AAwDpC,IAAA,WAAA,CACS,MAAwB,EACvB,GAAsB,EACtB,mBAAwC,EACxC,gBAAkC,EAAA;QAHnC,IAAM,CAAA,MAAA,GAAN,MAAM;QACL,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAlD1B,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;QAC1B,IAAa,CAAA,aAAA,GAAG,KAAK,EAAE;;;;QAKvB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAqB,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC;QACjE,IAAe,CAAA,eAAA,GAAG,KAAK,CAAkC,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAqB,MAAK;AACjD,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;;AAEtD,YAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM;AACxC,SAAC,CAAC;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAkC,MAAK;AAClE,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE;;AAE9D,YAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU;AAC5C,SAAC,CAAC;AAMK,QAAA,IAAA,CAAA,UAAU,GAAgB,IAAI,WAAW,EAAE;AAI3C,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,oBAAoB,CAAC;QACxE,IAAY,CAAA,YAAA,GAAQ,EAAE;QAEvB,IAAe,CAAA,eAAA,GAAG,KAAK;AAEvB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACjC,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC/B,gBAAA,OAAO,WAAW;;iBACb;AACL,gBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,OAAO,GAAG,OAAO;gBAChE,OAAO,CAAA,EAAG,gBAAgB,CAAA,UAAA,CAAY;;AAE1C,SAAC,CAAC;;AAGe,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;AAQ/C,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE;AACtC,YAAA,mBAAmB,CAAC,aAAa,GAAG,IAAI;AACxC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;;IAIrB,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAoB;AAC5D,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC9D,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC3D,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,WAAW,EAAE,aAAa,EAAE,oBAAoB;AAC1D,YAAA,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,oBAAoB,KAAK,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,oBAAoB,EAAE;AAChH,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,oBAAoB,CAAC;;;IAIpG,kBAAkB,GAAA;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,IAAI,EAAE;AAC7C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QACtG,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YAC9G,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAC7B,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAChH,CACF;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;;IAGJ,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE;AACzC,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;;;IAI7D,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE;;AAE5B,QAAA,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACpF,GAAG,CAAC,KAAK,EAAE;AACb,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;AAG5B;;;AAGG;AACH,IAAA,kBAAkB,CAAC,WAAsC,EAAA;AACvD,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;;AAG3D;;;;;;;;AAQG;IACH,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE;AACvC,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE;QAC1C,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;IAGzB,QAAQ,GAAA;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK;QAC3C,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;;QAEb,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGrC,eAAe,GAAA;AACb,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO;AACvC,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AAClB,YAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;;AAEvB,QAAA,OAAO,IAAI;;IAGb,oBAAoB,GAAA;AAClB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;QACjC,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7D;;aACK;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI;YAC/D,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI,IAAI,IAAI;;QAE3C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;QAEvC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,KAAK,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;;AAE3B,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3C,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;;YAEhD,IAAI,CAAC,oBAAoB,EAAE;;QAE7B,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE5C,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAChD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;IAGzB,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;;AAG9D,IAAA,sBAAsB,CAAC,KAAK,EAAA;QAClC,IAAI,CAAC,KAAK,EAAE;YACV;;QAEF,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;;AAEvC,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK;AACtB,QAAA,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;AACtC,YAAA,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,QAAQ;;QAExE,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;;QAErE,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC5F,QAAA,OAAO,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;;AAGzB,IAAA,wBAAwB,CAAC,KAAK,EAAA;AACpC,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;AAChC,YAAA,OAAO,IAAI;;;AAGb,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM;AACzC,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE;AACvD,YAAA,OAAO,IAAI;;;AAGb,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;;IAG3B,oBAAoB,GAAA;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAE/D,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE;AAC1C,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC;;AAGtE,QAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;;AAG3B,IAAA,oBAAoB,CAAC,UAAiC,EAAA;AAC5D,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE;QAC1C,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC1E,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC;;AAEpG,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGjB,IAAA,gBAAgB,CAAC,UAAiC,EAAA;AACxD,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE;QACvC,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;AAC5I,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC;;AAE7F,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;+GAhPd,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,SAAA,EAfvB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,yBAAyB,EAAE;AACnF,YAAA;AACI,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAC/E,gBAAA,UAAU,EAAE,CAAC,YAA8B,EAAE,mBAAyC,KAAI;oBACtF,IAAI,CAAC,mBAAmB,EAAE;AACtB,wBAAA,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC;;AAE/D,oBAAA,OAAO,mBAAmB;iBAC7B;AACJ,aAAA;SACJ,EAKQ,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,uBAAuB,6FACvB,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5EjC,wwDA8CA,EDPa,MAAA,EAAA,CAAA,kvDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3B,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,8BAAA,EAAA,uCAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,kCAAA,EAAA,uBAAA,EAAA,mCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,mEAYpB,uBAAuB,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA7B,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAuBvB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAnBrC,SAAS;+BACI,wBAAwB,EAAA,SAAA,EAGvB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAA,yBAA2B,EAAE;AACnF,wBAAA;AACI,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAC/E,4BAAA,UAAU,EAAE,CAAC,YAA8B,EAAE,mBAAyC,KAAI;gCACtF,IAAI,CAAC,mBAAmB,EAAE;AACtB,oCAAA,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC;;AAE/D,gCAAA,OAAO,mBAAmB;6BAC7B;AACJ,yBAAA;AACJ,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,wwDAAA,EAAA,MAAA,EAAA,CAAA,kvDAAA,CAAA,EAAA;mLAGmC,eAAe,EAAA,CAAA;sBAApE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACD,YAAY,EAAA,CAAA;sBAA9D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAExC,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBAiCM,eAAe,EAAA,CAAA;sBADrB,WAAW;uBAAC,sBAAsB;;;AE3GrC,MAAM8B,iBAAe,GAAc;AACjC,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,eAAe,EAAE,IAAI;CACtB;MAYY,uBAAuB,CAAA;IAalC,WACS,CAAA,GAAwB,EACxB,MAAwB,EACvB,gBAAkC,EAClC,WAAwB,EACxB,GAAsB,EAAA;QAJvB,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAM,CAAA,MAAA,GAAN,MAAM;QACL,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAG,CAAA,GAAA,GAAH,GAAG;AAjBJ,QAAA,IAAA,CAAA,WAAW,GAAW,GAAG,GAAG,WAAW,CAAC,GAAG;QAE3C,IAAiB,CAAA,iBAAA,GAAY,IAAI;QACjC,IAAU,CAAA,UAAA,GAAY,KAAK;;AAOnB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;;IAUjD,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAA2B;AACnE,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,yBAAyB,EAAE;AAChC,QAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;AAC7D,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAC/B,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;;IAG7C,WAAW,GAAA;QACT,IAAI,CAAC,yBAAyB,EAAE;;IAGlC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;IAG5B,yBAAyB,GAAA;QACvB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;AACvC,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACtF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM;YACjE,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM;;;;AAK1B,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,CAAI,CAAA,EAAA,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA,CAAE;AACzC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;AAC7B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK;AAC3D,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;YAC3E,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AACjD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAEvB,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC;AAC9D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;;AAInB,IAAA,iBAAiB,CAAC,SAAc,EAAA;QACtC,OAAO;YACL,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,eAAe,EAAE,SAAS,CAAC,eAAe;YAC1C,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,YAAY,EAAE,SAAS,CAAC,YAAY;SACrC;;AAGH,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAc;;AAG3D,IAAA,YAAY,CAAC,IAAU,EAAA;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACzC,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAACA,iBAAe,CAAC,CAAC;AAClG,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,oBAAoB,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;IAGzB,MAAM,eAAe,CAAC,KAAa,EAAA;AACjC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK;AAC5C,QAAA,MAAM,YAAY,GAAG,SAAS,EAAE,YAAY;AAC5C,QAAA,MAAM,SAAS,GAAG,SAAS,EAAE,KAAK;AAClC,QAAA,MAAM,2BAA2B,GAAG,OAAO,YAAY,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;QAEzI,IAAI,2BAA2B,EAAE;AAC/B,YAAA,MAAM,YAAY,GAAG,MAAM,YAAY,EAAE;YACzC,IAAI,CAAC,YAAY,EAAE;gBACjB;;;AAIJ,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAC7C,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,EAAE;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,qBAAqB,KAAK,cAAc,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;YACrF,IAAI,CAAC,YAAY,EAAE;;AAErB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,KAAgBA,iBAAe,EAAA;AAChH,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5B,YAAA,aAAa,EAAE,MAAM;AACrB,YAAA,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnC,YAAA,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;YACzC,KAAK,EAAE,CAAC,KAAK,CAAC;YACd,KAAK,EAAE,CAAC,KAAK,CAAC;YACd,eAAe,EAAE,CAAC,eAAe,CAAC;YAClC,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,YAAY,EAAE,CAAC,YAAY,CAAC;AAC7B,SAAA,CAAC;;IAGJ,aAAa,GAAA;QACX,IAAK,IAAI,CAAC,UAAU,CAAC,MAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,YAAA,OAAO,KAAK;;AAEd,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;;+GAhInB,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAoB,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EANrB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBpH,wiEAmCA,EAAA,MAAA,EAAA,CAAA,2NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6HAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,GAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0B,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDRa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAXnC,SAAS;+BACI,sBAAsB,EAAA,eAAA,EAGf,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAA6B,uBAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAC1G,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,sBAAsB;AAChC,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,wiEAAA,EAAA,MAAA,EAAA,CAAA,2NAAA,CAAA,EAAA;6MAGV,WAAW,EAAA,CAAA;sBAAnB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,aAAa,EAAA,CAAA;sBAArB;;;AEJH,MAAM,eAAe,GAAc;AACjC,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,YAAY,EAAE,SAAS;CACxB;MAgBY,wBAAwB,CAAA;IASnC,IACI,iBAAiB,CAAC,IAAa,EAAA;QAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;;;AAGpC,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB;;IAiChC,WACU,CAAA,gBAAkC,EAClC,WAAwB,EACxB,GAAsB,EACvB,GAAwB,EACxB,MAAwB,EAAA;QAJvB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAG,CAAA,GAAA,GAAH,GAAG;QACJ,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAM,CAAA,MAAA,GAAN,MAAM;AAnDN,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC;QAIrE,IAAU,CAAA,UAAA,GAAY,KAAK;QAW5B,IAAkB,CAAA,kBAAA,GAAY,IAAI;AAG1C,QAAA,IAAA,CAAA,iBAAiB,GAAG,SAAS,CAAC,4BAA4B,CAAC;AAC3D,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,uBAAuB,CAAC;AAIhD,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAyB,MAAK;YACnE,MAAM,IAAI,GAAG,EAAE;YACf,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,KAAI;gBACnC,IAAI,CAAC,IAAI,CAAC;AACR,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,SAAS,EAAE,KAAK;AAChB,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,UAAU,EAAE,OAAO;oBACnB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE;AACnF,iBAAA,CAAC;AACJ,aAAC,CAAC;AACF,YAAA,OAAO,IAAI;AACb,SAAC,CAAC;AACK,QAAA,IAAA,CAAA,eAAe,GAAkC;AACtD,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SAChC;;AAEgB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;AAS/C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACtB,YAAA,GAAG,CAAC,aAAa,GAAG,IAAI;;;IAI5B,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAA2B;QACnE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACtC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AACrC,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAC/B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAChC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EACxB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACpB,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;gBAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,aAAC,CAAC;AACJ,SAAC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC;AACZ,aAAA,IAAI,CACH,QAAQ,CAAC,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC,EAC5B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAE3B,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;gBAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,oBAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;;gBAEhC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;AAC3B,aAAC,CAAC;AAEF,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;gBAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC5E,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,aAAC,CAAC;AACJ,SAAC,CAAC;;IAGN,qBAAqB,GAAA;QACnB,IAAI,CAAC,6BAA6B,EAAE;AACpC,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAG1B,eAAe,GAAA;QACb,IAAI,CAAC,kBAAkB,EAAE;;IAG3B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;AAGpB,IAAA,gBAAgB,CAAC,KAAc,EAAA;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;;AAGzE,IAAA,eAAe,CAAC,KAAqC,EAAA;AAC3D,QAAA,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;;iBAC5C;AACL,gBAAA,MAAM,UAAU,GAAgB,CAAC,GAAG,KAAK,CAAgB;AACzD,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE;;oBAEhC,MAAM,gBAAgB,GAAmC,EAAE;AAC3D,oBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAC/B,wBAAA,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE;wBAC3E,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;AACnD,qBAAC,CAAC;AACF,oBAAA,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE;AACpC,wBAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;;;qBAEtD;oBACL,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;;;;aAG3C;YACL,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;;AAI3C,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAc;;IAGpD,iBAAiB,CAAC,OAAY,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,iBAAiB,CAAC,IAAoB,EAAA;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAI;YAC/D,OAAO;AACL,gBAAA,GAAG,GAAG;gBACN,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;aACtE;SACF,EAAE,EAAE,CAAC;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;;AAGzC,IAAA,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,KAAgB,eAAe,EAAA;AACxG,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5B,YAAA,aAAa,EAAE,MAAM;AACrB,YAAA,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnC,YAAA,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;YACzC,KAAK,EAAE,CAAC,KAAK,CAAC;YACd,KAAK,EAAE,CAAC,KAAK,CAAC;YACd,eAAe,EAAE,CAAC,eAAe,CAAC;YAClC,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,YAAY,EAAE,CAAC,YAAY,CAAC;AAC7B,SAAA,CAAC;;IAGJ,cAAc,CAAC,YAAY,EAAE,KAAK,EAAA;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE;AACvC,YAAA,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,MAAM;;AAEzE,QAAA,OAAO,IAAI;;AAGb,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;IAGjD,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;;;AAIzB,IAAA,aAAa,CAAC,KAAK,EAAA;QACjB,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC9C,QAAA,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;QAC9G,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,cAAc,KAAK,cAAc,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;QACnG,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC;;aACxB;YACL,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;;;IAIzC,6BAA6B,GAAA;QACnC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAC7B,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;QACrC,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAiC;;IAG5D,kBAAkB,GAAA;AACxB,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AACxB,YAAA,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AACrC,SAAC,CAAC;;+GArNO,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlB,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAVtB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACpG,YAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,wBAAwB,EAAE;AACzE,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;AAClE,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,SAAA,EA0Bc,qBAAqB,EACR,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,4BAA4B,EAC3B,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,uBAAuB,gEC3ExD,+tCA8BA,EAAA,MAAA,EAAA,CAAA,wGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6HAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,GAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoC,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDuBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAfpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAGhB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACpG,wBAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,0BAA0B,EAAE;AACzE,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;qBAClE,EACK,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,uBAAuB;AACjC,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,+tCAAA,EAAA,MAAA,EAAA,CAAA,wGAAA,CAAA,EAAA;6MAGV,MAAM,EAAA,CAAA;sBAAd;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBAGG,iBAAiB,EAAA,CAAA;sBADpB,KAAK;uBAAC,mBAAmB;gBAWqC,iBAAiB,EAAA,CAAA;sBAA/E,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;;MEuClD,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,iBAnC/B,wBAAwB;YACxB,yBAAyB;YACzB,oBAAoB;YACpB,uBAAuB;YACvB,uBAAuB;YACvB,8BAA8B;YAC9B,8BAA8B;YAC9B,2BAA2B;YAC3B,+BAA+B;YAC/B,yBAAyB;YACzB,qBAAqB;YACrB,qBAAqB;YACrB,6BAA6B;YAC7B,6BAA6B;YAC7B,yBAAyB;YACzB,6BAA6B;AAC7B,YAAA,+BAA+B,aAjD/B,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,cAAc;YACd,kBAAkB;YAClB,sBAAsB;YACtB,gBAAgB;YAChB,gBAAgB;YAChB,cAAc;YACd,gBAAgB;YAChB,uBAAuB;YACvB,eAAe;YACf,gBAAgB;YAChB,cAAc;YACd,aAAa;YACb,2BAA2B;YAC3B,iBAAiB;YACjB,cAAc;YACd,oBAAoB;YACpB,wBAAwB;YACxB,cAAc;YACd,iBAAiB;YACjB,eAAe;YACf,mBAAmB;YACnB,gBAAgB;YAChB,eAAe;YACf,sBAAsB;YACtB,kBAAkB;YAClB,oBAAoB;AACpB,YAAA,iBAAiB,aAsBjB,wBAAwB;YACxB,yBAAyB;YACzB,8BAA8B;YAC9B,8BAA8B;YAC9B,2BAA2B;YAC3B,+BAA+B;YAC/B,yBAAyB;YACzB,qBAAqB;YACrB,qBAAqB;YACrB,6BAA6B;YAC7B,6BAA6B;YAC7B,yBAAyB;YACzB,6BAA6B;YAC7B,+BAA+B,CAAA,EAAA,CAAA,CAAA;AAGtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YApE/B,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,cAAc;YACd,kBAAkB;YAClB,sBAAsB;YACtB,gBAAgB;YAChB,gBAAgB;YAChB,cAAc;YACd,gBAAgB;YAChB,uBAAuB;YACvB,eAAe;YACf,gBAAgB;YAChB,cAAc;YACd,aAAa;YACb,2BAA2B;YAC3B,iBAAiB;YACjB,cAAc;YACd,oBAAoB;YACpB,wBAAwB;YACxB,cAAc;YACd,iBAAiB;YACjB,eAAe;YACf,mBAAmB;YACnB,gBAAgB;YAChB,eAAe;YACf,sBAAsB;YACtB,kBAAkB;YAClB,oBAAoB;YACpB,iBAAiB,CAAA,EAAA,CAAA,CAAA;;4FAsCR,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAtElC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,cAAc;wBACd,cAAc;wBACd,kBAAkB;wBAClB,sBAAsB;wBACtB,gBAAgB;wBAChB,gBAAgB;wBAChB,cAAc;wBACd,gBAAgB;wBAChB,uBAAuB;wBACvB,eAAe;wBACf,gBAAgB;wBAChB,cAAc;wBACd,aAAa;wBACb,2BAA2B;wBAC3B,iBAAiB;wBACjB,cAAc;wBACd,oBAAoB;wBACpB,wBAAwB;wBACxB,cAAc;wBACd,iBAAiB;wBACjB,eAAe;wBACf,mBAAmB;wBACnB,gBAAgB;wBAChB,eAAe;wBACf,sBAAsB;wBACtB,kBAAkB;wBAClB,oBAAoB;wBACpB,iBAAiB;AAClB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;wBACxB,yBAAyB;wBACzB,oBAAoB;wBACpB,uBAAuB;wBACvB,uBAAuB;wBACvB,8BAA8B;wBAC9B,8BAA8B;wBAC9B,2BAA2B;wBAC3B,+BAA+B;wBAC/B,yBAAyB;wBACzB,qBAAqB;wBACrB,qBAAqB;wBACrB,6BAA6B;wBAC7B,6BAA6B;wBAC7B,yBAAyB;wBACzB,6BAA6B;wBAC7B,+BAA+B;AAChC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB,yBAAyB;wBACzB,8BAA8B;wBAC9B,8BAA8B;wBAC9B,2BAA2B;wBAC3B,+BAA+B;wBAC/B,yBAAyB;wBACzB,qBAAqB;wBACrB,qBAAqB;wBACrB,6BAA6B;wBAC7B,6BAA6B;wBAC7B,yBAAyB;wBACzB,6BAA6B;wBAC7B,+BAA+B;AAChC,qBAAA;AACF,iBAAA;;;AC/GD;;AAEG;;;;"}
|