@wlcm/angular 1.1.2 → 17.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/core/esm2022/lib/components/calendar-icon/calendar-icon.component.mjs +12 -0
  2. package/core/esm2022/lib/constants/icon.contants.mjs +3 -1
  3. package/core/esm2022/lib/directives/icon.directive.mjs +21 -6
  4. package/core/esm2022/lib/models/icon.models.mjs +2 -1
  5. package/core/fesm2022/wlcm-angular-core.mjs +30 -6
  6. package/core/fesm2022/wlcm-angular-core.mjs.map +1 -1
  7. package/core/lib/components/calendar-icon/calendar-icon.component.d.ts +5 -0
  8. package/core/lib/directives/icon.directive.d.ts +4 -2
  9. package/core/lib/models/icon.models.d.ts +1 -0
  10. package/date-range-picker/README.md +7 -0
  11. package/date-range-picker/esm2022/index.mjs +7 -0
  12. package/date-range-picker/esm2022/lib/components/calendar-header/calendar-header.component.mjs +62 -0
  13. package/date-range-picker/esm2022/lib/components/date-range-picker/date-range-picker.component.mjs +158 -0
  14. package/date-range-picker/esm2022/lib/components/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.mjs +19 -0
  15. package/date-range-picker/esm2022/lib/components/date-range-picker-input/date-range-picker-input.component.mjs +122 -0
  16. package/date-range-picker/esm2022/lib/constants/date-range-selection-model.constants.mjs +10 -0
  17. package/date-range-picker/esm2022/lib/constants/date-range-trigger-selection-model.constants.mjs +10 -0
  18. package/date-range-picker/esm2022/lib/date-range-picker.module.mjs +64 -0
  19. package/date-range-picker/esm2022/lib/directives/date-range-picker-input-base.directive.mjs +92 -0
  20. package/date-range-picker/esm2022/lib/directives/date-range-picker-input-end.directive.mjs +65 -0
  21. package/date-range-picker/esm2022/lib/directives/date-range-picker-input-start.directive.mjs +65 -0
  22. package/date-range-picker/esm2022/lib/directives/date-range-picker-trigger.directive.mjs +80 -0
  23. package/date-range-picker/esm2022/lib/directives/left-calendar.directive.mjs +50 -0
  24. package/date-range-picker/esm2022/lib/directives/right-calendar.directive.mjs +59 -0
  25. package/date-range-picker/esm2022/lib/models/data-range-calendar.models.mjs +43 -0
  26. package/date-range-picker/esm2022/lib/models/date-range-validation.models.mjs +5 -0
  27. package/date-range-picker/esm2022/lib/utils/date-range-input.validators.mjs +16 -0
  28. package/date-range-picker/esm2022/lib/utils/date-range-picker-errors.mjs +9 -0
  29. package/date-range-picker/esm2022/wlcm-angular-date-range-picker.mjs +5 -0
  30. package/date-range-picker/fesm2022/wlcm-angular-date-range-picker.mjs +822 -0
  31. package/date-range-picker/fesm2022/wlcm-angular-date-range-picker.mjs.map +1 -0
  32. package/date-range-picker/index.d.ts +6 -0
  33. package/date-range-picker/lib/components/calendar-header/calendar-header.component.d.ts +20 -0
  34. package/date-range-picker/lib/components/date-range-picker/date-range-picker.component.d.ts +37 -0
  35. package/date-range-picker/lib/components/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.d.ts +8 -0
  36. package/date-range-picker/lib/components/date-range-picker-input/date-range-picker-input.component.d.ts +35 -0
  37. package/date-range-picker/lib/constants/date-range-selection-model.constants.d.ts +5 -0
  38. package/date-range-picker/lib/constants/date-range-trigger-selection-model.constants.d.ts +5 -0
  39. package/date-range-picker/lib/date-range-picker.module.d.ts +10 -0
  40. package/date-range-picker/lib/directives/date-range-picker-input-base.directive.d.ts +32 -0
  41. package/date-range-picker/lib/directives/date-range-picker-input-end.directive.d.ts +16 -0
  42. package/date-range-picker/lib/directives/date-range-picker-input-start.directive.d.ts +17 -0
  43. package/date-range-picker/lib/directives/date-range-picker-trigger.directive.d.ts +26 -0
  44. package/date-range-picker/lib/directives/left-calendar.directive.d.ts +15 -0
  45. package/date-range-picker/lib/directives/right-calendar.directive.d.ts +18 -0
  46. package/date-range-picker/lib/models/data-range-calendar.models.d.ts +21 -0
  47. package/date-range-picker/lib/models/date-range-validation.models.d.ts +3 -0
  48. package/date-range-picker/lib/utils/date-range-input.validators.d.ts +2 -0
  49. package/date-range-picker/lib/utils/date-range-picker-errors.d.ts +4 -0
  50. package/forms/esm2022/lib/forms/components/form-field/form-field.component.mjs +8 -5
  51. package/forms/esm2022/lib/forms/components/select/select.component.mjs +1 -1
  52. package/forms/esm2022/lib/forms/directives/form-field-prefix.directive.mjs +12 -4
  53. package/forms/fesm2022/wlcm-angular-forms.mjs +18 -7
  54. package/forms/fesm2022/wlcm-angular-forms.mjs.map +1 -1
  55. package/forms/lib/forms/components/form-field/form-field.component.d.ts +4 -3
  56. package/forms/lib/forms/directives/form-field-prefix.directive.d.ts +1 -0
  57. package/package.json +2 -1
  58. package/styles/components/date-range-picker/_date-range-picker-body.scss +117 -0
  59. package/styles/components/date-range-picker/_date-range-picker-header.scss +59 -0
  60. package/styles/components/date-range-picker/_date-range-picker-input.scss +38 -0
  61. package/styles/components/date-range-picker/_date-range-picker-panel.scss +21 -0
  62. package/styles/components/date-range-picker/index.scss +11 -0
  63. package/styles/components/forms/_form-field.scss +4 -0
  64. package/styles/core/_all-theme.scss +2 -0
  65. package/styles/core/_utils.scss +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wlcm-angular-date-range-picker.mjs","sources":["../../../../modules/date-range-picker/src/lib/directives/date-range-picker-trigger.directive.ts","../../../../modules/date-range-picker/src/lib/models/date-range-validation.models.ts","../../../../modules/date-range-picker/src/lib/directives/date-range-picker-input-base.directive.ts","../../../../modules/date-range-picker/src/lib/constants/date-range-trigger-selection-model.constants.ts","../../../../modules/date-range-picker/src/lib/directives/date-range-picker-input-start.directive.ts","../../../../modules/date-range-picker/src/lib/directives/date-range-picker-input-end.directive.ts","../../../../modules/date-range-picker/src/lib/utils/date-range-picker-errors.ts","../../../../modules/date-range-picker/src/lib/models/data-range-calendar.models.ts","../../../../modules/date-range-picker/src/lib/components/calendar-header/calendar-header.component.ts","../../../../modules/date-range-picker/src/lib/components/calendar-header/calendar-header.component.html","../../../../modules/date-range-picker/src/lib/directives/left-calendar.directive.ts","../../../../modules/date-range-picker/src/lib/constants/date-range-selection-model.constants.ts","../../../../modules/date-range-picker/src/lib/directives/right-calendar.directive.ts","../../../../modules/date-range-picker/src/lib/components/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.ts","../../../../modules/date-range-picker/src/lib/components/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.html","../../../../modules/date-range-picker/src/lib/components/date-range-picker/date-range-picker.component.ts","../../../../modules/date-range-picker/src/lib/components/date-range-picker/date-range-picker.component.html","../../../../modules/date-range-picker/src/lib/components/date-range-picker-input/date-range-picker-input.component.ts","../../../../modules/date-range-picker/src/lib/components/date-range-picker-input/date-range-picker-input.component.html","../../../../modules/date-range-picker/src/lib/date-range-picker.module.ts","../../../../modules/date-range-picker/src/lib/utils/date-range-input.validators.ts","../../../../modules/date-range-picker/src/wlcm-angular-date-range-picker.ts"],"sourcesContent":["import {\n CdkOverlayOrigin,\n FlexibleConnectedPositionStrategy,\n FlexibleConnectedPositionStrategyOrigin,\n Overlay,\n OverlayConfig,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Directive, ElementRef, Injector, Type, ViewContainerRef } from '@angular/core';\nimport { DateRange, MatDateSelectionModel } from '@angular/material/datepicker';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { EMPTY, Observable, filter, merge } from 'rxjs';\n\n@UntilDestroy()\n@Directive()\nexport class WlcmDateRangePickerTrigger<T = unknown> {\n protected overlayRef: OverlayRef = this.overlay.create(this.createOverlayConfig());\n\n protected connectedTo!: ElementRef<HTMLElement>;\n\n protected componentType!: Type<T>;\n\n protected componentRef?: ComponentRef<T>;\n\n constructor(\n protected overlay: Overlay,\n protected viewContainerRef: ViewContainerRef,\n protected selectionModel: MatDateSelectionModel<DateRange<moment.Moment>>\n ) {\n this.handleBackdropClick();\n }\n\n open(): void {\n const injector: Injector = Injector.create({\n providers: [{ provide: OverlayRef, useValue: this.overlayRef }],\n parent: this.viewContainerRef.injector,\n });\n\n const portal: ComponentPortal<T> = new ComponentPortal(this.componentType, this.viewContainerRef, injector);\n\n this.updatePositionStrategy();\n\n this.componentRef = this.overlayRef.attach(portal);\n }\n\n close(): void {\n this.overlayRef.detach();\n }\n\n get isOpen(): boolean {\n return this.overlayRef.hasAttached();\n }\n\n get opened(): Observable<void> {\n return merge(this.overlayRef?.attachments() || EMPTY).pipe(filter(() => this.overlayRef.hasAttached()));\n }\n\n get closed(): Observable<void> {\n return (this.overlayRef?.detachments() || EMPTY).pipe(filter(() => !this.overlayRef.hasAttached()));\n }\n\n private get overlayOrigin(): CdkOverlayOrigin {\n return new CdkOverlayOrigin(this.connectedTo);\n }\n\n private handleBackdropClick(): void {\n this.overlayRef\n .backdropClick()\n .pipe(untilDestroyed(this))\n .subscribe(() => this.close());\n }\n\n private updatePositionStrategy(): void {\n const origin: FlexibleConnectedPositionStrategyOrigin = this.overlayOrigin.elementRef;\n\n const strategy: FlexibleConnectedPositionStrategy = this.overlay.position().flexibleConnectedTo(origin);\n\n strategy.withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ]);\n\n strategy.withLockedPosition(false);\n\n strategy.withDefaultOffsetY(4);\n\n this.overlayRef.updatePositionStrategy(strategy);\n }\n\n private createOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n backdropClass: 'transparent',\n });\n }\n}\n","export enum WlcmDateRangeValidation {\n format = 'wlcmDateRangeFormat',\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener } from '@angular/core';\nimport { ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';\nimport { WlcmDateRangeValidation } from '../models/date-range-validation.models';\nimport { DateAdapter, MatDateFormats } from '@angular/material/core';\nimport * as moment from 'moment';\n\n@Directive()\nexport class DateRangePickerInputBase implements AfterViewInit, ControlValueAccessor, Validator {\n @HostListener('blur') handleBlur = () => {};\n\n @HostListener('input') handleInput = () => {\n this.changeInputSize();\n\n this._validatorChanged?.();\n };\n\n protected _changed?: (value: moment.Moment | null) => void;\n\n protected _touched?: () => void;\n\n protected _validatorChanged?: () => void;\n\n private _inputMirror: HTMLElement = this.createInputMirror();\n\n constructor(\n public element: ElementRef<HTMLInputElement>,\n protected dateAdapter: DateAdapter<moment.Moment>,\n protected dateFormats: MatDateFormats\n ) {}\n\n ngAfterViewInit(): void {\n this.inputElement.parentElement?.appendChild(this._inputMirror);\n\n this.copyInputElementStyles(this._inputMirror);\n }\n\n writeValue(value: moment.Moment | null): void {\n if (!value) return;\n\n this.updateInputValue(value);\n }\n\n validate(): ValidationErrors | null {\n const value: string = this.currentValue;\n\n if (!value) return null;\n\n const parsed: moment.Moment | null = this.dateAdapter.parse(value, this.dateFormats.parse.dateInput)!;\n\n if (!this.dateAdapter.isValid(parsed)) {\n return { [WlcmDateRangeValidation.format]: { value, format: this.dateFormats.parse.dateInput }, required: false };\n }\n\n return null;\n }\n\n registerOnChange(callback: (value: moment.Moment | null) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n registerOnValidatorChange(callback: () => void): void {\n this._validatorChanged = callback;\n }\n\n parseCurrentValue(): moment.Moment | null {\n const date: moment.Moment | null = this.dateAdapter.parse(this.currentValue, this.dateFormats.parse.dateInput);\n\n return this.dateAdapter.getValidDateOrNull(date);\n }\n\n protected updateInputValue(value: moment.Moment | null): void {\n let newValue: string = '';\n\n if (value) {\n newValue = this.dateAdapter.format(value as moment.Moment, this.dateFormats.display.dateInput);\n }\n\n this.inputElement.value = newValue;\n\n this.changeInputSize();\n }\n\n private changeInputSize(): void {\n const value: string = this.currentValue || this.inputElement.placeholder;\n\n this._inputMirror.innerHTML = value;\n\n this.inputElement.style.width = `${this._inputMirror.offsetWidth + 2}px`;\n }\n\n private createInputMirror(): HTMLElement {\n const inputMirror: HTMLElement = document.createElement('div');\n\n inputMirror.classList.add('wlcm-date-range-picker-input-field-mirror');\n\n return inputMirror;\n }\n\n private copyInputElementStyles(target: HTMLElement): void {\n const inputElementStyles: CSSStyleDeclaration = window.getComputedStyle(this.inputElement);\n\n target.style.fontSize = inputElementStyles.fontSize;\n target.style.fontFamily = inputElementStyles.fontFamily;\n target.style.letterSpacing = inputElementStyles.letterSpacing;\n }\n\n protected get inputElement(): HTMLInputElement {\n return this.element.nativeElement;\n }\n\n protected get currentValue(): string {\n return this.inputElement.value;\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { MatDateSelectionModel, MatRangeDateSelectionModel } from '@angular/material/datepicker';\nimport { DateAdapter } from '@angular/material/core';\nimport * as moment from 'moment';\n\nexport const WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL: InjectionToken<MatDateSelectionModel<moment.Moment>> =\n new InjectionToken('WLCM_DATE_RANGE_SELECTION_MODEL');\n\nexport const WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL_PROVIDER: Provider = {\n provide: WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL,\n useFactory: (adapter: DateAdapter<moment.Moment>) => new MatRangeDateSelectionModel(adapter),\n deps: [DateAdapter],\n};\n","import { Directive, ElementRef, Inject, Optional, forwardRef } from '@angular/core';\nimport { DateRangePickerInputBase } from './date-range-picker-input-base.directive';\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL } from '../constants/date-range-trigger-selection-model.constants';\nimport { MatDateSelectionModel, DateRange } from '@angular/material/datepicker';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as moment from 'moment';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmDateRangePickerInputStart]',\n host: { class: 'wlcm-date-range-picker-input-field' },\n standalone: true,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateRangePickerInputStartDirective), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateRangePickerInputStartDirective), multi: true },\n ],\n})\nexport class DateRangePickerInputStartDirective extends DateRangePickerInputBase {\n constructor(\n public override element: ElementRef<HTMLInputElement>,\n protected override dateAdapter: DateAdapter<moment.Moment>,\n @Optional() @Inject(MAT_DATE_FORMATS) protected override dateFormats: MatDateFormats,\n @Inject(WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL)\n protected selectionModel: MatDateSelectionModel<DateRange<moment.Moment>>\n ) {\n super(element, dateAdapter, dateFormats);\n\n this.handleSelectionChange();\n }\n\n override handleBlur = (): void => {\n let start: moment.Moment | null = this.parseCurrentValue();\n\n this.selectionModel.updateSelection(new DateRange(start, this.selectionModel.selection.end), this);\n };\n\n private handleSelectionChange(): void {\n this.selectionModel.selectionChanged.pipe(untilDestroyed(this)).subscribe(({ selection }) => {\n const validDate: moment.Moment | null = this.dateAdapter.getValidDateOrNull(selection.start);\n\n this._changed?.(validDate);\n\n this.updateInputValue(validDate);\n\n this._validatorChanged?.();\n });\n }\n}\n","import { Directive, ElementRef, Inject, Optional, forwardRef } from '@angular/core';\nimport { DateRangePickerInputBase } from './date-range-picker-input-base.directive';\nimport { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL } from '../constants/date-range-trigger-selection-model.constants';\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { MatDateSelectionModel, DateRange } from '@angular/material/datepicker';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmDateRangePickerInputEnd]',\n host: { class: 'wlcm-date-range-picker-input-field' },\n standalone: true,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateRangePickerInputEndDirective), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateRangePickerInputEndDirective), multi: true },\n ],\n})\nexport class DateRangePickerInputEndDirective extends DateRangePickerInputBase {\n constructor(\n public override element: ElementRef<HTMLInputElement>,\n protected override dateAdapter: DateAdapter<moment.Moment>,\n @Optional() @Inject(MAT_DATE_FORMATS) protected override dateFormats: MatDateFormats,\n @Inject(WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL)\n protected selectionModel: MatDateSelectionModel<DateRange<moment.Moment>>\n ) {\n super(element, dateAdapter, dateFormats);\n\n this.handleSelectionChange();\n }\n\n override handleBlur = (): void => {\n let end: moment.Moment | null = this.parseCurrentValue();\n\n this.selectionModel.updateSelection(new DateRange(this.selectionModel.selection.start, end), this);\n };\n\n private handleSelectionChange(): void {\n this.selectionModel.selectionChanged.pipe(untilDestroyed(this)).subscribe(({ selection }) => {\n const validDate: moment.Moment | null = this.dateAdapter.getValidDateOrNull(selection.end);\n\n this._changed?.(validDate);\n\n this.updateInputValue(validDate);\n\n this._validatorChanged?.();\n });\n }\n}\n","export class DateRangePickerErrors {\n static throwNoStartInputError() {\n throw new Error('The input element with the wlcmDateRangePickerInputStart directive is missing');\n }\n\n static throwNoEndInputError() {\n throw new Error('The input element with the wlcmDateRangePickerInputEnd directive is missing');\n }\n}\n","import { Directive, ElementRef, InputSignal, OutputEmitterRef, effect, input, output } from '@angular/core';\nimport { MatCalendar, MatCalendarView, yearsPerPage } from '@angular/material/datepicker';\nimport { DateAdapter } from '@angular/material/core';\nimport * as moment from 'moment';\n\n@Directive()\nexport class WlcmDataRangeCalendar {\n public location!: 'left' | 'right';\n\n readonly dateChange: OutputEmitterRef<moment.Moment> = output();\n\n readonly viewChange: OutputEmitterRef<MatCalendarView> = output();\n\n readonly disabled: InputSignal<boolean> = input(false);\n\n constructor(\n location: 'left' | 'right',\n public element: ElementRef<HTMLElement>,\n protected calendar: MatCalendar<moment.Moment>,\n protected dateAdapter: DateAdapter<moment.Moment>\n ) {\n this.location = location;\n\n effect(() => {\n if (this.disabled()) {\n this.element.nativeElement.classList.add('wlcm-calendar-disabled');\n } else {\n this.element.nativeElement.classList.remove('wlcm-calendar-disabled');\n }\n });\n }\n\n prevMonth(): void {\n this.dateChange.emit(this.dateAdapter.addCalendarMonths(this.calendar.activeDate, -1));\n }\n\n nextMonth(): void {\n this.dateChange.emit(this.dateAdapter.addCalendarMonths(this.calendar.activeDate, 1));\n }\n\n prevYear(): void {\n this.dateChange.emit(\n this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? -1 : -yearsPerPage\n )\n );\n }\n\n nextYear(): void {\n this.dateChange.emit(\n this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? 1 : yearsPerPage\n )\n );\n }\n}\n","import { Component, Inject, Optional, forwardRef } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { WlcmDataRangeCalendar } from '../../models/data-range-calendar.models';\nimport { WlcmIconDirective, WlcmIconName } from '@wlcm/angular/core';\nimport { MatCalendar } from '@angular/material/datepicker';\nimport { CommonModule } from '@angular/common';\nimport * as moment from 'moment';\n\n@Component({\n selector: 'wlcm-calendar-header',\n standalone: true,\n imports: [CommonModule, WlcmIconDirective],\n templateUrl: './calendar-header.component.html',\n styleUrl: './calendar-header.component.scss',\n})\nexport class WlcmCalendarHeaderComponent {\n readonly WlcmIconName = WlcmIconName;\n\n constructor(\n private dateAdapter: DateAdapter<moment.Moment>,\n @Optional() protected rangeCalendar: WlcmDataRangeCalendar,\n @Optional() @Inject(MAT_DATE_FORMATS) protected dateFormats: MatDateFormats,\n @Inject(forwardRef(() => MatCalendar)) public calendar: MatCalendar<moment.Moment>\n ) {}\n\n prev(): void {\n if (this.rangeCalendar) {\n if (this.calendar.currentView !== 'month') {\n return this.rangeCalendar.prevYear();\n }\n\n return this.rangeCalendar.prevMonth();\n }\n }\n\n next(): void {\n if (this.rangeCalendar) {\n if (this.calendar.currentView !== 'month') {\n return this.rangeCalendar.nextYear();\n }\n\n return this.rangeCalendar.nextMonth();\n }\n }\n\n changeCalendarView(): void {\n if (this.calendar.currentView === 'multi-year') {\n this.calendar.currentView = 'month';\n\n return;\n }\n\n this.calendar.currentView = 'multi-year';\n }\n\n get periodLabel(): string {\n return this.dateAdapter.format(this.calendar.activeDate, this.dateFormats.display.monthYearLabel);\n }\n}\n","<div class=\"wlcm-calendar-header\">\n <div class=\"wlcm-calendar-header-button-container\">\n @if(((!rangeCalendar || rangeCalendar.location === 'left') ||\n calendar.currentView !== 'month') && !rangeCalendar.disabled()) {\n <button\n class=\"wlcm-calendar-header-button wlcm-calendar-header-button-left\"\n (click)=\"prev()\"\n >\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n </button>\n }\n </div>\n\n <button\n class=\"wlcm-calendar-header-change-view-button\"\n (click)=\"changeCalendarView()\"\n >\n <div class=\"wlcm-calendar-header-period-label\">\n {{ periodLabel }}\n </div>\n\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n </button>\n\n <div class=\"wlcm-calendar-header-button-container\">\n @if(((!rangeCalendar || rangeCalendar.location === 'right') ||\n calendar.currentView !== 'month') && !rangeCalendar.disabled()) {\n <button\n class=\"wlcm-calendar-header-button wlcm-calendar-header-button-right\"\n (click)=\"next()\"\n >\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n </button>\n }\n </div>\n</div>\n","import { Directive, ElementRef, Inject, forwardRef } from '@angular/core';\nimport { WlcmDataRangeCalendar } from '../models/data-range-calendar.models';\nimport { DateAdapter } from '@angular/material/core';\nimport { MatCalendar } from '@angular/material/datepicker';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmLeftCalendar]',\n standalone: true,\n providers: [{ provide: WlcmDataRangeCalendar, useExisting: forwardRef(() => WlcmLeftCalendarDirective) }],\n})\nexport class WlcmLeftCalendarDirective extends WlcmDataRangeCalendar {\n constructor(\n public override element: ElementRef<HTMLElement>,\n protected override dateAdapter: DateAdapter<moment.Moment>,\n @Inject(forwardRef(() => MatCalendar)) protected override calendar: MatCalendar<moment.Moment>\n ) {\n super('left', element, calendar, dateAdapter);\n\n this.handleYearChange();\n\n this.handleMonthChange();\n }\n\n handleYearChange(): void {\n this.calendar.yearSelected\n .pipe(untilDestroyed(this))\n .subscribe((date: moment.Moment) => this.dateChange.emit(date));\n }\n\n handleMonthChange(): void {\n this.calendar.monthSelected\n .pipe(untilDestroyed(this))\n .subscribe((date: moment.Moment) => this.dateChange.emit(date));\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { DateAdapter } from '@angular/material/core';\nimport { MatDateSelectionModel, MatRangeDateSelectionModel } from '@angular/material/datepicker';\nimport * as moment from 'moment';\n\nexport const WLCM_DATE_RANGE_SELECTION_MODEL: InjectionToken<MatDateSelectionModel<moment.Moment>> = new InjectionToken(\n 'WLCM_DATE_RANGE_SELECTION_MODEL'\n);\n\nexport const WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER: Provider = {\n provide: WLCM_DATE_RANGE_SELECTION_MODEL,\n useFactory: (adapter: DateAdapter<moment.Moment>) => new MatRangeDateSelectionModel(adapter),\n deps: [DateAdapter],\n};\n","import { Directive, ElementRef, Inject, forwardRef } from '@angular/core';\nimport { WlcmDataRangeCalendar } from '../models/data-range-calendar.models';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { MatCalendar, yearsPerPage } from '@angular/material/datepicker';\nimport { DateAdapter } from '@angular/material/core';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmRightCalendar]',\n standalone: true,\n providers: [{ provide: WlcmDataRangeCalendar, useExisting: forwardRef(() => WlcmRightCalendarDirective) }],\n})\nexport class WlcmRightCalendarDirective extends WlcmDataRangeCalendar {\n constructor(\n public override element: ElementRef<HTMLElement>,\n protected override dateAdapter: DateAdapter<moment.Moment>,\n @Inject(forwardRef(() => MatCalendar)) protected override calendar: MatCalendar<moment.Moment>\n ) {\n super('right', element, calendar, dateAdapter);\n\n this.handleYearChange();\n\n this.handleMonthChange();\n }\n\n handleYearChange(): void {\n this.calendar.yearSelected\n .pipe(untilDestroyed(this))\n .subscribe((date: moment.Moment) => this.dateChange.emit(this.dateAdapter.addCalendarMonths(date, -1)));\n }\n\n handleMonthChange(): void {\n this.calendar.monthSelected\n .pipe(untilDestroyed(this))\n .subscribe((date: moment.Moment) => this.dateChange.emit(this.dateAdapter.addCalendarMonths(date, -1)));\n }\n\n override nextMonth(): void {\n this.dateChange.emit(this.calendar.activeDate);\n }\n\n override prevYear(): void {\n this.dateChange.emit(\n this.dateAdapter.addCalendarMonths(\n this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? -1 : -yearsPerPage\n ),\n -1\n )\n );\n }\n\n override nextYear(): void {\n this.dateChange.emit(\n this.dateAdapter.addCalendarMonths(\n this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? 1 : yearsPerPage\n ),\n -1\n )\n );\n }\n}\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WlcmDateRangePickerComponent } from '../date-range-picker/date-range-picker.component';\nimport { WlcmButtonModule } from '@wlcm/angular/button';\n\n@Component({\n selector: 'wlcm-date-range-picker-bottom-panel',\n standalone: true,\n imports: [CommonModule, WlcmButtonModule],\n templateUrl: './date-range-picker-bottom-panel.component.html',\n styleUrl: './date-range-picker-bottom-panel.component.scss',\n})\nexport class WlcmDateRangePickerBottomPanelComponent {\n constructor(protected picker: WlcmDateRangePickerComponent) {}\n}\n","<div class=\"wlcm-date-range-picker-bottom-panel\">\n <wlcm-button type=\"paddingless\" (clicked)=\"picker.reset()\">Reset</wlcm-button>\n\n <wlcm-button (clicked)=\"picker.apply()\" [isDisabled]=\"!picker.isComplete()\">\n Apply\n </wlcm-button>\n</div>\n","import {\n Component,\n ElementRef,\n Inject,\n Signal,\n ViewChild,\n WritableSignal,\n computed,\n effect,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n DateRange,\n DefaultMatCalendarRangeStrategy,\n MAT_DATE_RANGE_SELECTION_STRATEGY,\n MatCalendar,\n MatCalendarUserEvent,\n MatCalendarView,\n MatDateRangeSelectionStrategy,\n MatDateSelectionModel,\n MatDatepickerModule,\n MatMonthView,\n} from '@angular/material/datepicker';\nimport { WlcmCalendarHeaderComponent } from '../calendar-header/calendar-header.component';\nimport { WlcmLeftCalendarDirective } from '../../directives/left-calendar.directive';\nimport {\n WLCM_DATE_RANGE_SELECTION_MODEL,\n WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER,\n} from '../../constants/date-range-selection-model.constants';\nimport { WlcmRightCalendarDirective } from '../../directives/right-calendar.directive';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL } from '../../constants/date-range-trigger-selection-model.constants';\nimport { WlcmDateRangePickerTrigger } from '../../directives/date-range-picker-trigger.directive';\nimport { WlcmDateRangePickerBottomPanelComponent } from '../date-range-picker-bottom-panel/date-range-picker-bottom-panel.component';\nimport { Subject, startWith, takeUntil, tap } from 'rxjs';\nimport { DateAdapter } from '@angular/material/core';\nimport * as moment from 'moment';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-date-range-picker',\n standalone: true,\n imports: [\n CommonModule,\n MatDatepickerModule,\n WlcmLeftCalendarDirective,\n WlcmRightCalendarDirective,\n WlcmDateRangePickerBottomPanelComponent,\n ],\n templateUrl: './date-range-picker.component.html',\n styleUrl: './date-range-picker.component.scss',\n providers: [\n {\n provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n useClass: DefaultMatCalendarRangeStrategy,\n },\n WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER,\n ],\n})\nexport class WlcmDateRangePickerComponent {\n readonly WlcmCalendarHeaderComponent = WlcmCalendarHeaderComponent;\n\n private _isViewInitialized = false;\n\n private _isComplete: WritableSignal<boolean> = signal(false);\n\n readonly isComplete: Signal<boolean> = computed(() => this._isComplete());\n\n constructor(\n @Inject(MAT_DATE_RANGE_SELECTION_STRATEGY)\n private rangeSelectionStrategy: MatDateRangeSelectionStrategy<moment.Moment>,\n @Inject(WLCM_DATE_RANGE_SELECTION_MODEL)\n protected localSelectionModel: MatDateSelectionModel<DateRange<moment.Moment>>,\n @Inject(WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL)\n protected triggerSelectionModel: MatDateSelectionModel<DateRange<moment.Moment>>,\n protected dateAdapter: DateAdapter<moment.Moment>,\n protected trigger: WlcmDateRangePickerTrigger\n ) {\n this.handleSelectionChanged();\n\n this.localSelectionModel.updateSelection(this.triggerSelectionModel.selection, this);\n\n if (this.triggerSelectionModel.selection.start) {\n this.startDate.set(this.triggerSelectionModel.selection.start);\n }\n\n effect(() => {\n if (!this._isViewInitialized) return;\n\n this.leftCalendar.activeDate = this.startDate();\n\n this.rightCalendar.activeDate = this.dateAdapter.addCalendarMonths(this.startDate(), 1);\n });\n }\n\n @ViewChild(WlcmLeftCalendarDirective, { read: MatCalendar }) leftCalendar!: MatCalendar<moment.Moment>;\n\n @ViewChild(WlcmRightCalendarDirective, { read: MatCalendar }) rightCalendar!: MatCalendar<moment.Moment>;\n\n @ViewChild(WlcmLeftCalendarDirective, { read: ElementRef }) leftCalendarElement!: ElementRef<HTMLElement>;\n\n @ViewChild(MatMonthView) monthView!: MatMonthView<any>;\n\n startDate: WritableSignal<moment.Moment> = signal(moment());\n\n leftCalendarYearViewActivated: WritableSignal<boolean> = signal(false);\n\n rightCalendarYearViewActivated: WritableSignal<boolean> = signal(false);\n\n ngAfterViewInit() {\n this._isViewInitialized = true;\n\n this.leftCalendar.viewChanged.pipe(untilDestroyed(this)).subscribe((view: MatCalendarView) => {\n this.leftCalendarYearViewActivated.set(view !== 'month');\n });\n\n this.rightCalendar.viewChanged.pipe(untilDestroyed(this)).subscribe((view: MatCalendarView) => {\n this.rightCalendarYearViewActivated.set(view !== 'month');\n });\n\n this.handleRightCalendarPreviewChange();\n }\n\n calendarSelection(event: MatCalendarUserEvent<moment.Moment | null>): void {\n const newSelection: DateRange<moment.Moment> = this.rangeSelectionStrategy.selectionFinished(\n event.value,\n this.localSelectionModel.selection,\n event.event\n );\n\n this.localSelectionModel.updateSelection(newSelection, this);\n }\n\n calendarDragDrop(event: MatCalendarUserEvent<DateRange<moment.Moment>>): void {\n this.localSelectionModel.updateSelection(event.value, this);\n }\n\n apply(): void {\n this.triggerSelectionModel.updateSelection(this.localSelectionModel.selection, this);\n\n this.trigger.close();\n }\n\n reset(): void {\n this.trigger.close();\n }\n\n get selected(): DateRange<moment.Moment> {\n return this.localSelectionModel.selection;\n }\n\n private get leftCalendarActiveCell(): HTMLElement | null {\n return this.leftCalendarElement.nativeElement.querySelector('.mat-calendar-body-active');\n }\n\n private handleSelectionChanged(): void {\n this.localSelectionModel.selectionChanged\n .pipe(untilDestroyed(this))\n .subscribe(() => this._isComplete.set(this.localSelectionModel.isComplete()));\n }\n\n private handleRightCalendarPreviewChange(): void {\n const viewChanged: Subject<void> = new Subject();\n\n this.rightCalendar.viewChanged\n .pipe(untilDestroyed(this))\n .pipe(tap(() => viewChanged.next()))\n .pipe(startWith(this.rightCalendar.currentView))\n .subscribe((view: MatCalendarView) => {\n if (view !== 'month') return;\n\n this.rightCalendar.monthView._matCalendarBody.previewChange\n .pipe(takeUntil(viewChanged), untilDestroyed(this))\n .subscribe(() => {\n if (this.leftCalendar.currentView !== 'month' || !this.leftCalendar.monthView._rangeStart) return;\n\n this.leftCalendar.monthView._previewStart = this.rightCalendar.monthView._previewStart;\n\n this.leftCalendar.monthView._previewEnd = this.rightCalendar.monthView._previewEnd;\n\n const activeCell = this.leftCalendarActiveCell;\n\n if (activeCell && activeCell === document.activeElement) activeCell.blur();\n\n this.leftCalendar.monthView._changeDetectorRef.markForCheck();\n });\n });\n }\n}\n","<div class=\"wlcm-date-range-picker-panel\">\n <div class=\"wlcm-date-range-picker-body\">\n <mat-calendar\n wlcmLeftCalendar\n [selected]=\"selected\"\n [disabled]=\"rightCalendarYearViewActivated()\"\n [headerComponent]=\"WlcmCalendarHeaderComponent\"\n (_userSelection)=\"calendarSelection($event)\"\n (_userDragDrop)=\"calendarDragDrop($event)\"\n (dateChange)=\"startDate.set($event)\"\n ></mat-calendar>\n\n <mat-calendar\n wlcmRightCalendar\n [selected]=\"selected\"\n [disabled]=\"leftCalendarYearViewActivated()\"\n [headerComponent]=\"WlcmCalendarHeaderComponent\"\n (_userSelection)=\"calendarSelection($event)\"\n (_userDragDrop)=\"calendarDragDrop($event)\"\n (dateChange)=\"startDate.set($event)\"\n ></mat-calendar>\n </div>\n\n <wlcm-date-range-picker-bottom-panel></wlcm-date-range-picker-bottom-panel>\n</div>\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n Host,\n Inject,\n Type,\n ViewContainerRef,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WlcmDateRangePickerTrigger } from '../../directives/date-range-picker-trigger.directive';\nimport { DateRange, MatDateSelectionModel } from '@angular/material/datepicker';\nimport {\n WLCM_FORM_CONTROL_PROVIDER,\n WLCM_FORM_FIELD,\n WLCM_INPUT_BINDER,\n WlcmFormField,\n WlcmFormFieldInput,\n WlcmFormsModule,\n} from '@wlcm/angular/forms';\nimport { DateRangePickerInputStartDirective } from '../../directives/date-range-picker-input-start.directive';\nimport { DateRangePickerInputEndDirective } from '../../directives/date-range-picker-input-end.directive';\nimport { BehaviorSubject, EMPTY, Observable, fromEvent, map, merge, switchMap } from 'rxjs';\nimport { DateRangePickerErrors } from '../../utils/date-range-picker-errors';\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL,\n WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL_PROVIDER,\n} from '../../constants/date-range-trigger-selection-model.constants';\nimport { WlcmDateRangePickerComponent } from '../date-range-picker/date-range-picker.component';\nimport { ControlContainer, FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'wlcm-date-range-picker-input',\n exportAs: 'wlcmDateRangePickerInput',\n standalone: true,\n imports: [CommonModule, WlcmFormsModule, DateRangePickerInputStartDirective, DateRangePickerInputEndDirective],\n templateUrl: './date-range-picker-input.component.html',\n styleUrl: './date-range-picker-input.component.scss',\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL_PROVIDER,\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const input = inject(WlcmDateRangePickerInputComponent, { self: true });\n\n return { bind: () => input };\n },\n },\n { provide: WlcmDateRangePickerTrigger, useExisting: forwardRef(() => WlcmDateRangePickerInputComponent) },\n ],\n})\nexport class WlcmDateRangePickerInputComponent\n extends WlcmDateRangePickerTrigger\n implements WlcmFormFieldInput, AfterContentInit, AfterViewInit\n{\n private readonly _focusStream$: BehaviorSubject<Observable<void>> = new BehaviorSubject(EMPTY as Observable<void>);\n\n private readonly _blurStream$: BehaviorSubject<Observable<void>> = new BehaviorSubject(EMPTY as Observable<void>);\n\n focus$: Observable<unknown> = this._focusStream$.pipe(switchMap((stream: Observable<unknown>) => stream));\n\n blur$: Observable<unknown> = this._blurStream$.pipe(switchMap((stream: Observable<unknown>) => stream));\n\n @ContentChild(DateRangePickerInputStartDirective) private startInput!: DateRangePickerInputStartDirective;\n\n @ContentChild(DateRangePickerInputEndDirective) private endInput!: DateRangePickerInputEndDirective;\n\n override componentType: Type<WlcmDateRangePickerComponent> = WlcmDateRangePickerComponent;\n\n constructor(\n protected override overlay: Overlay,\n protected override viewContainerRef: ViewContainerRef,\n @Inject(WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL)\n protected override selectionModel: MatDateSelectionModel<DateRange<moment.Moment>>,\n @Host() @Inject(WLCM_FORM_FIELD) private formField: WlcmFormField,\n @Host() @Inject(ControlContainer) private controlContainer: ControlContainer\n ) {\n super(overlay, viewContainerRef, selectionModel);\n }\n\n ngAfterContentInit(): void {\n this.checkInputs();\n\n this.attachFocusBlurListeners();\n }\n\n ngAfterViewInit(): void {\n this.connectedTo = this.formField.inputContainer;\n }\n\n isFocused(): boolean {\n return (\n this.startInputElement === document.activeElement ||\n this.endInputElement === document.activeElement ||\n this.isOpen\n );\n }\n\n focus(): void {\n if (!this.isFocused()) this.startInputElement.focus();\n }\n\n private get control(): FormGroup | null {\n return this.controlContainer?.control as FormGroup;\n }\n\n private get startInputElement(): HTMLElement {\n return this.startInput.element.nativeElement;\n }\n\n private get endInputElement(): HTMLElement {\n return this.endInput.element.nativeElement;\n }\n\n private checkInputs(): void {\n if (!this.startInput) DateRangePickerErrors.throwNoStartInputError();\n\n if (!this.endInput) DateRangePickerErrors.throwNoEndInputError();\n }\n\n private attachFocusBlurListeners(): void {\n const voidFn = () => {};\n\n const startInputFocus: Observable<Event> = fromEvent(this.startInputElement, 'focus');\n\n const endInputFocus: Observable<Event> = fromEvent(this.endInputElement, 'focus');\n\n const startInputBlur: Observable<Event> = fromEvent(this.startInputElement, 'blur');\n\n const endInputBlur: Observable<Event> = fromEvent(this.endInputElement, 'blur');\n\n const focusObservables: Observable<unknown>[] = [startInputFocus, endInputFocus, this.opened];\n\n const blurObservables: Observable<unknown>[] = [startInputBlur, endInputBlur, this.closed];\n\n this._focusStream$.next(merge(...focusObservables).pipe(map(voidFn)));\n\n this._blurStream$.next(merge(...blurObservables).pipe(map(() => this.control?.markAsTouched())));\n }\n}\n","<div class=\"wlcm-date-range-picker-inputs-container\">\n <div class=\"wlcm-date-range-picker-input-field-wrapper\">\n <ng-content select=\"[wlcmDateRangePickerInputStart]\"></ng-content>\n </div>\n\n <div class=\"wlcm-date-range-picker-input-dash\"></div>\n\n <div class=\"wlcm-date-range-picker-input-field-wrapper\">\n <ng-content select=\"[wlcmDateRangePickerInputEnd]\"></ng-content>\n </div>\n</div>\n","import { NgModule, Type, inject } from '@angular/core';\nimport { WlcmDateRangePickerInputComponent } from './components/date-range-picker-input/date-range-picker-input.component';\nimport { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatDateFormats } from '@angular/material/core';\nimport { DateRangePickerInputStartDirective } from './directives/date-range-picker-input-start.directive';\nimport { DateRangePickerInputEndDirective } from './directives/date-range-picker-input-end.directive';\nimport { CommonModule } from '@angular/common';\n\nconst DEFAULT_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'MMM/DD/YYYY',\n },\n display: {\n dateInput: 'MMM/DD/YYYY',\n monthYearLabel: 'MMMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n};\n\nconst directives: Type<unknown>[] = [DateRangePickerInputStartDirective, DateRangePickerInputEndDirective];\n\n@NgModule({\n imports: [CommonModule, WlcmDateRangePickerInputComponent, ...directives],\n exports: [WlcmDateRangePickerInputComponent, ...directives],\n providers: [\n {\n provide: DateAdapter,\n useClass: MomentDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\n },\n {\n provide: MAT_DATE_FORMATS,\n useFactory: () => {\n const externalFormats: MatDateFormats | null = inject(MAT_DATE_FORMATS, { skipSelf: true, optional: true });\n\n if (externalFormats) return externalFormats;\n\n return DEFAULT_DATE_FORMATS;\n },\n },\n ],\n})\nexport class WlcmDateRangePickerModule {}\n","import { AbstractControl, FormGroup, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { WlcmDateRangeValidation } from '../models/date-range-validation.models';\n\nexport function WlcmDateRangeInputValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const formGroup: FormGroup = control as FormGroup;\n\n let errors: ValidationErrors | null = {};\n\n for (const childControl of Object.values(formGroup.controls)) {\n errors = { ...errors, ...childControl.errors };\n }\n\n errors = Object.keys(errors).length > 0 ? errors : null;\n\n if (errors instanceof Object && errors[WlcmDateRangeValidation.format] && errors['required']) {\n errors['required'] = false;\n }\n\n return errors;\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.WlcmDataRangeCalendar","i1.WlcmDateRangePickerComponent","i2","i2.WlcmDateRangePickerTrigger"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAgBO,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B,CAAA;AASrC,IAAA,WAAA,CACY,OAAgB,EAChB,gBAAkC,EAClC,cAA+D,EAAA;QAF/D,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAiD;AAXjE,QAAA,IAAA,CAAA,UAAU,GAAe,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAajF,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAED,IAAI,GAAA;AACF,QAAA,MAAM,QAAQ,GAAa,QAAQ,CAAC,MAAM,CAAC;AACzC,YAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAC/D,YAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ;AACvC,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,MAAM,GAAuB,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAE5G,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACpD;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC1B;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACtC;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;KACzG;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;KACrG;AAED,IAAA,IAAY,aAAa,GAAA;AACvB,QAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC/C;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,aAAa,EAAE;AACf,aAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAC1B,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAClC;IAEO,sBAAsB,GAAA;AAC5B,QAAA,MAAM,MAAM,GAA4C,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAEtF,QAAA,MAAM,QAAQ,GAAsC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAExG,QAAQ,CAAC,aAAa,CAAC;AACrB,YAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;YACvF,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;AACzF,SAAA,CAAC,CAAC;AAEH,QAAA,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAEnC,QAAA,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAE/B,QAAA,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;KAClD;IAEO,mBAAmB,GAAA;QACzB,OAAO,IAAI,aAAa,CAAC;AACvB,YAAA,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,YAAA,aAAa,EAAE,aAAa;AAC7B,SAAA,CAAC,CAAC;KACJ;8GAhFU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAA1B,0BAA0B,GAAA,UAAA,CAAA;AAFtC,IAAA,YAAY,EAAE;qCAYQ,OAAO;QACE,gBAAgB;QAClB,qBAAqB,CAAA,CAAA;AAZtC,CAAA,EAAA,0BAA0B,CAiFtC,CAAA;2FAjFY,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,SAAS;;;ICfE,wBAEX;AAFD,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,QAAA,CAAA,GAAA,qBAA8B,CAAA;AAChC,CAAC,EAFW,uBAAuB,KAAvB,uBAAuB,GAElC,EAAA,CAAA,CAAA;;MCKY,wBAAwB,CAAA;AAiBnC,IAAA,WAAA,CACS,OAAqC,EAClC,WAAuC,EACvC,WAA2B,EAAA;QAF9B,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QAClC,IAAW,CAAA,WAAA,GAAX,WAAW,CAA4B;QACvC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;AAnBjB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAK,GAAG,CAAC;QAErB,IAAW,CAAA,WAAA,GAAG,MAAK;YACxC,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,YAAA,IAAI,CAAC,iBAAiB,IAAI,CAAC;AAC7B,SAAC,CAAC;AAQM,QAAA,IAAA,CAAA,YAAY,GAAgB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAMzD;IAEJ,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAEhE,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAChD;AAED,IAAA,UAAU,CAAC,KAA2B,EAAA;AACpC,QAAA,IAAI,CAAC,KAAK;YAAE,OAAO;AAEnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;KAC9B;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,KAAK,GAAW,IAAI,CAAC,YAAY,CAAC;AAExC,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI,CAAC;AAExB,QAAA,MAAM,MAAM,GAAyB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAE,CAAC;QAEtG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACrC,OAAO,EAAE,CAAC,uBAAuB,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;SACnH;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,gBAAgB,CAAC,QAA+C,EAAA;AAC9D,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;AAED,IAAA,iBAAiB,CAAC,QAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;AAED,IAAA,yBAAyB,CAAC,QAAoB,EAAA;AAC5C,QAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;KACnC;IAED,iBAAiB,GAAA;QACf,MAAM,IAAI,GAAyB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE/G,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;KAClD;AAES,IAAA,gBAAgB,CAAC,KAA2B,EAAA;QACpD,IAAI,QAAQ,GAAW,EAAE,CAAC;QAE1B,IAAI,KAAK,EAAE;AACT,YAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAsB,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SAChG;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,QAAQ,CAAC;QAEnC,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAEO,eAAe,GAAA;QACrB,MAAM,KAAK,GAAW,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;AAEzE,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC;AAEpC,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC;KAC1E;IAEO,iBAAiB,GAAA;QACvB,MAAM,WAAW,GAAgB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAE/D,QAAA,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;AAEvE,QAAA,OAAO,WAAW,CAAC;KACpB;AAEO,IAAA,sBAAsB,CAAC,MAAmB,EAAA;QAChD,MAAM,kBAAkB,GAAwB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE3F,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,kBAAkB,CAAC,aAAa,CAAC;KAC/D;AAED,IAAA,IAAc,YAAY,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;KACnC;AAED,IAAA,IAAc,YAAY,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;KAChC;8GA7GU,wBAAwB,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;gIAEc,UAAU,EAAA,CAAA;sBAA/B,YAAY;uBAAC,MAAM,CAAA;gBAEG,WAAW,EAAA,CAAA;sBAAjC,YAAY;uBAAC,OAAO,CAAA;;;ACLhB,MAAM,uCAAuC,GAClD,IAAI,cAAc,CAAC,iCAAiC,CAAC,CAAC;AAEjD,MAAM,gDAAgD,GAAa;AACxE,IAAA,OAAO,EAAE,uCAAuC;IAChD,UAAU,EAAE,CAAC,OAAmC,KAAK,IAAI,0BAA0B,CAAC,OAAO,CAAC;IAC5F,IAAI,EAAE,CAAC,WAAW,CAAC;CACpB;;ACOM,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,wBAAwB,CAAA;AAC9E,IAAA,WAAA,CACkB,OAAqC,EAClC,WAAuC,EACD,WAA2B,EAE1E,cAA+D,EAAA;AAEzE,QAAA,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QANzB,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QAClC,IAAW,CAAA,WAAA,GAAX,WAAW,CAA4B;QACD,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;QAE1E,IAAc,CAAA,cAAA,GAAd,cAAc,CAAiD;QAOlE,IAAU,CAAA,UAAA,GAAG,MAAW;AAC/B,YAAA,IAAI,KAAK,GAAyB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAE3D,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACrG,SAAC,CAAC;QAPA,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAQO,qBAAqB,GAAA;QAC3B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,KAAI;AAC1F,YAAA,MAAM,SAAS,GAAyB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAE7F,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;AAE3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAEjC,YAAA,IAAI,CAAC,iBAAiB,IAAI,CAAC;AAC7B,SAAC,CAAC,CAAC;KACJ;8GA7BU,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAIvB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAC5B,uCAAuC,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AALtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,EALlC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oCAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,kCAAkC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9G,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,kCAAkC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3G,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAEU,kCAAkC,GAAA,UAAA,CAAA;AAV9C,IAAA,YAAY,EAAE;qCAYc,UAAU;AACH,QAAA,WAAW,UAGjB,qBAAqB,CAAA,CAAA;AANtC,CAAA,EAAA,kCAAkC,CA8B9C,CAAA;2FA9BY,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAT9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,oCAAoC,EAAE;AACrD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,wCAAwC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9G,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,wCAAwC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3G,qBAAA;AACF,iBAAA,CAAA;;0BAKI,QAAQ;;0BAAI,MAAM;2BAAC,gBAAgB,CAAA;;0BACnC,MAAM;2BAAC,uCAAuC,CAAA;;;ACN5C,IAAM,gCAAgC,GAAtC,MAAM,gCAAiC,SAAQ,wBAAwB,CAAA;AAC5E,IAAA,WAAA,CACkB,OAAqC,EAClC,WAAuC,EACD,WAA2B,EAE1E,cAA+D,EAAA;AAEzE,QAAA,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QANzB,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QAClC,IAAW,CAAA,WAAA,GAAX,WAAW,CAA4B;QACD,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;QAE1E,IAAc,CAAA,cAAA,GAAd,cAAc,CAAiD;QAOlE,IAAU,CAAA,UAAA,GAAG,MAAW;AAC/B,YAAA,IAAI,GAAG,GAAyB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEzD,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACrG,SAAC,CAAC;QAPA,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAQO,qBAAqB,GAAA;QAC3B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,KAAI;AAC1F,YAAA,MAAM,SAAS,GAAyB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAE3F,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;AAE3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAEjC,YAAA,IAAI,CAAC,iBAAiB,IAAI,CAAC;AAC7B,SAAC,CAAC,CAAC;KACJ;8GA7BU,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAIrB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAC5B,uCAAuC,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AALtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EALhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oCAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,gCAAgC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC5G,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,gCAAgC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACzG,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAEU,gCAAgC,GAAA,UAAA,CAAA;AAV5C,IAAA,YAAY,EAAE;qCAYc,UAAU;AACH,QAAA,WAAW,UAGjB,qBAAqB,CAAA,CAAA;AANtC,CAAA,EAAA,gCAAgC,CA8B5C,CAAA;2FA9BY,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAT5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,oCAAoC,EAAE;AACrD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,sCAAsC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC5G,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,sCAAsC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACzG,qBAAA;AACF,iBAAA,CAAA;;0BAKI,QAAQ;;0BAAI,MAAM;2BAAC,gBAAgB,CAAA;;0BACnC,MAAM;2BAAC,uCAAuC,CAAA;;;MCvBtC,qBAAqB,CAAA;AAChC,IAAA,OAAO,sBAAsB,GAAA;AAC3B,QAAA,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;KAClG;AAED,IAAA,OAAO,oBAAoB,GAAA;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;KAChG;AACF;;MCFY,qBAAqB,CAAA;AAShC,IAAA,WAAA,CACE,QAA0B,EACnB,OAAgC,EAC7B,QAAoC,EACpC,WAAuC,EAAA;QAF1C,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;QAC7B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA4B;QACpC,IAAW,CAAA,WAAA,GAAX,WAAW,CAA4B;QAV1C,IAAU,CAAA,UAAA,GAAoC,MAAM,EAAE,CAAC;QAEvD,IAAU,CAAA,UAAA,GAAsC,MAAM,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,QAAQ,GAAyB,KAAK,CAAC,KAAK,CAAC,CAAC;AAQrD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACnB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;aACpE;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;aACvE;AACH,SAAC,CAAC,CAAC;KACJ;IAED,SAAS,GAAA;QACP,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACxF;IAED,SAAS,GAAA;QACP,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;KACvF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAC/B,IAAI,CAAC,QAAQ,CAAC,UAAU,EACxB,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CACzD,CACF,CAAC;KACH;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAC/B,IAAI,CAAC,QAAQ,CAAC,UAAU,EACxB,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,MAAM,GAAG,CAAC,GAAG,YAAY,CACvD,CACF,CAAC;KACH;8GAlDU,qBAAqB,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;;;MCUG,2BAA2B,CAAA;AAGtC,IAAA,WAAA,CACU,WAAuC,EACzB,aAAoC,EACV,WAA2B,EAC7B,QAAoC,EAAA;QAH1E,IAAW,CAAA,WAAA,GAAX,WAAW,CAA4B;QACzB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAuB;QACV,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;QAC7B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA4B;QAN3E,IAAY,CAAA,YAAA,GAAG,YAAY,CAAC;KAOjC;IAEJ,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,OAAO,EAAE;AACzC,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;aACtC;AAED,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;SACvC;KACF;IAED,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,OAAO,EAAE;AACzC,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;aACtC;AAED,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;SACvC;KACF;IAED,kBAAkB,GAAA;QAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,YAAY,EAAE;AAC9C,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC;YAEpC,OAAO;SACR;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,YAAY,CAAC;KAC1C;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;KACnG;8GA1CU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAMhB,gBAAgB,EAC5B,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,UAAU,CAAC,MAAM,WAAW,CAAC,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAP5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,ECfxC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,orCAoCA,EDzBY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BAAE,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAI9B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cACpB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,orCAAA,EAAA,CAAA;;0BASvC,QAAQ;;0BACR,QAAQ;;0BAAI,MAAM;2BAAC,gBAAgB,CAAA;;0BACnC,MAAM;AAAC,oBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,WAAW,CAAC,CAAA;;;AEVlC,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,qBAAqB,CAAA;AAClE,IAAA,WAAA,CACkB,OAAgC,EAC7B,WAAuC,EACA,QAAoC,EAAA;QAE9F,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAJ9B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;QAC7B,IAAW,CAAA,WAAA,GAAX,WAAW,CAA4B;QACA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA4B;QAI9F,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,QAAQ,CAAC,YAAY;AACvB,aAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA,SAAS,CAAC,CAAC,IAAmB,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACnE;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,QAAQ,CAAC,aAAa;AACxB,aAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA,SAAS,CAAC,CAAC,IAAmB,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACnE;AAvBU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,yEAI1B,UAAU,CAAC,MAAM,WAAW,CAAC,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAJ5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,iEAFzB,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAE9F,yBAAyB,GAAA,UAAA,CAAA;AANrC,IAAA,YAAY,EAAE;qCAQc,UAAU;QACH,WAAW;QACyB,WAAW,CAAA,CAAA;AAJtE,CAAA,EAAA,yBAAyB,CAwBrC,CAAA;2FAxBY,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,CAAC,MAA+B,yBAAA,CAAC,EAAE,CAAC;AAC1G,iBAAA,CAAA;;0BAKI,MAAM;AAAC,oBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,WAAW,CAAC,CAAA;;;ACXlC,MAAM,+BAA+B,GAAyD,IAAI,cAAc,CACrH,iCAAiC,CAClC,CAAC;AAEK,MAAM,wCAAwC,GAAa;AAChE,IAAA,OAAO,EAAE,+BAA+B;IACxC,UAAU,EAAE,CAAC,OAAmC,KAAK,IAAI,0BAA0B,CAAC,OAAO,CAAC;IAC5F,IAAI,EAAE,CAAC,WAAW,CAAC;CACpB;;ACDM,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,qBAAqB,CAAA;AACnE,IAAA,WAAA,CACkB,OAAgC,EAC7B,WAAuC,EACA,QAAoC,EAAA;QAE9F,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAJ/B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;QAC7B,IAAW,CAAA,WAAA,GAAX,WAAW,CAA4B;QACA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA4B;QAI9F,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,QAAQ,CAAC,YAAY;AACvB,aAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAC1B,SAAS,CAAC,CAAC,IAAmB,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3G;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,QAAQ,CAAC,aAAa;AACxB,aAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAC1B,SAAS,CAAC,CAAC,IAAmB,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3G;IAEQ,SAAS,GAAA;QAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KAChD;IAEQ,QAAQ,GAAA;QACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAChC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAC/B,IAAI,CAAC,QAAQ,CAAC,UAAU,EACxB,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CACzD,EACD,CAAC,CAAC,CACH,CACF,CAAC;KACH;IAEQ,QAAQ,GAAA;QACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAChC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAC/B,IAAI,CAAC,QAAQ,CAAC,UAAU,EACxB,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,MAAM,GAAG,CAAC,GAAG,YAAY,CACvD,EACD,CAAC,CAAC,CACH,CACF,CAAC;KACH;AAnDU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,yEAI3B,UAAU,CAAC,MAAM,WAAW,CAAC,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAJ5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,kEAF1B,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAE/F,0BAA0B,GAAA,UAAA,CAAA;AANtC,IAAA,YAAY,EAAE;qCAQc,UAAU;QACH,WAAW;QACyB,WAAW,CAAA,CAAA;AAJtE,CAAA,EAAA,0BAA0B,CAoDtC,CAAA;2FApDY,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAgC,0BAAA,CAAC,EAAE,CAAC;AAC3G,iBAAA,CAAA;;0BAKI,MAAM;AAAC,oBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,WAAW,CAAC,CAAA;;;MCJ5B,uCAAuC,CAAA;AAClD,IAAA,WAAA,CAAsB,MAAoC,EAAA;QAApC,IAAM,CAAA,MAAA,GAAN,MAAM,CAA8B;KAAI;8GADnD,uCAAuC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uCAAuC,ECZpD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,wQAOA,EDCY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAI7B,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBAPnD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qCAAqC,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,wQAAA,EAAA,CAAA;;;AEoDpC,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B,CAAA;IASvC,WAEU,CAAA,sBAAoE,EAElE,mBAAoE,EAEpE,qBAAsE,EACtE,WAAuC,EACvC,OAAmC,EAAA;QANrC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAA8C;QAElE,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAiD;QAEpE,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAiD;QACtE,IAAW,CAAA,WAAA,GAAX,WAAW,CAA4B;QACvC,IAAO,CAAA,OAAA,GAAP,OAAO,CAA4B;QAhBtC,IAA2B,CAAA,2BAAA,GAAG,2BAA2B,CAAC;QAE3D,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAE3B,QAAA,IAAA,CAAA,WAAW,GAA4B,MAAM,CAAC,KAAK,CAAC,CAAC;QAEpD,IAAU,CAAA,UAAA,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAqC1E,QAAA,IAAA,CAAA,SAAS,GAAkC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAE5D,QAAA,IAAA,CAAA,6BAA6B,GAA4B,MAAM,CAAC,KAAK,CAAC,CAAC;AAEvE,QAAA,IAAA,CAAA,8BAA8B,GAA4B,MAAM,CAAC,KAAK,CAAC,CAAC;QA7BtE,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAErF,IAAI,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE;AAC9C,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAChE;QAED,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,IAAI,CAAC,kBAAkB;gBAAE,OAAO;YAErC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAEhD,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1F,SAAC,CAAC,CAAC;KACJ;IAgBD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAE/B,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAqB,KAAI;YAC3F,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;AAC3D,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAqB,KAAI;YAC5F,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;AAC5D,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gCAAgC,EAAE,CAAC;KACzC;AAED,IAAA,iBAAiB,CAAC,KAAiD,EAAA;QACjE,MAAM,YAAY,GAA6B,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAC1F,KAAK,CAAC,KAAK,EACX,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAClC,KAAK,CAAC,KAAK,CACZ,CAAC;QAEF,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;KAC9D;AAED,IAAA,gBAAgB,CAAC,KAAqD,EAAA;QACpE,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC7D;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAErF,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;KAC3C;AAED,IAAA,IAAY,sBAAsB,GAAA;QAChC,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;KAC1F;IAEO,sBAAsB,GAAA;QAC5B,IAAI,CAAC,mBAAmB,CAAC,gBAAgB;AACtC,aAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;KACjF;IAEO,gCAAgC,GAAA;AACtC,QAAA,MAAM,WAAW,GAAkB,IAAI,OAAO,EAAE,CAAC;QAEjD,IAAI,CAAC,aAAa,CAAC,WAAW;AAC3B,aAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;aACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAC/C,aAAA,SAAS,CAAC,CAAC,IAAqB,KAAI;YACnC,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO;AAE7B,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa;iBACxD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;iBAClD,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW;oBAAE,OAAO;AAElG,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC;AAEvF,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC;AAEnF,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAE/C,gBAAA,IAAI,UAAU,IAAI,UAAU,KAAK,QAAQ,CAAC,aAAa;oBAAE,UAAU,CAAC,IAAI,EAAE,CAAC;gBAE3E,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;AAChE,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;AAhIU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,EAU7B,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,iCAAiC,EAEjC,EAAA,EAAA,KAAA,EAAA,+BAA+B,aAE/B,uCAAuC,EAAA,EAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAdtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAR5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iCAAiC;AAC1C,gBAAA,QAAQ,EAAE,+BAA+B;AAC1C,aAAA;YACD,wCAAwC;SACzC,EAsCU,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,yBAAyB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAE9C,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,0BAA0B,2BAAU,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAE/C,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAE7C,YAAY,ECtGzB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,o5BAyBA,EDmBI,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,2bACnB,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,uCAAuC,EAAA,QAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;AAY9B,4BAA4B,GAAA,UAAA,CAAA;AArBxC,IAAA,YAAY,EAAE;6CAkCoB,qBAAqB;QAEnB,qBAAqB;QAC/B,WAAW;QACf,0BAA0B,CAAA,CAAA;AAjBpC,CAAA,EAAA,4BAA4B,CAiIxC,CAAA;2FAjIY,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBApBxC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,yBAAyB;wBACzB,0BAA0B;wBAC1B,uCAAuC;qBACxC,EAGU,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iCAAiC;AAC1C,4BAAA,QAAQ,EAAE,+BAA+B;AAC1C,yBAAA;wBACD,wCAAwC;AACzC,qBAAA,EAAA,QAAA,EAAA,o5BAAA,EAAA,CAAA;;0BAYE,MAAM;2BAAC,iCAAiC,CAAA;;0BAExC,MAAM;2BAAC,+BAA+B,CAAA;;0BAEtC,MAAM;2BAAC,uCAAuC,CAAA;2GAsBY,YAAY,EAAA,CAAA;sBAAxE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAEG,aAAa,EAAA,CAAA;sBAA1E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAEA,mBAAmB,EAAA,CAAA;sBAA9E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAEjC,SAAS,EAAA,CAAA;sBAAjC,SAAS;uBAAC,YAAY,CAAA;;;AE9CnB,MAAO,iCACX,SAAQ,0BAA0B,CAAA;IAiBlC,WACqB,CAAA,OAAgB,EAChB,gBAAkC,EAElC,cAA+D,EACzC,SAAwB,EACvB,gBAAkC,EAAA;AAE5E,QAAA,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAP9B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAElC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAiD;QACzC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAe;QACvB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AApB7D,QAAA,IAAA,CAAA,aAAa,GAAsC,IAAI,eAAe,CAAC,KAAyB,CAAC,CAAC;AAElG,QAAA,IAAA,CAAA,YAAY,GAAsC,IAAI,eAAe,CAAC,KAAyB,CAAC,CAAC;AAElH,QAAA,IAAA,CAAA,MAAM,GAAwB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAA2B,KAAK,MAAM,CAAC,CAAC,CAAC;AAE1G,QAAA,IAAA,CAAA,KAAK,GAAwB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAA2B,KAAK,MAAM,CAAC,CAAC,CAAC;QAM/F,IAAa,CAAA,aAAA,GAAuC,4BAA4B,CAAC;KAWzF;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;IAED,eAAe,GAAA;QACb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;KAClD;IAED,SAAS,GAAA;AACP,QAAA,QACE,IAAI,CAAC,iBAAiB,KAAK,QAAQ,CAAC,aAAa;AACjD,YAAA,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,aAAa;YAC/C,IAAI,CAAC,MAAM,EACX;KACH;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAAE,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;KACvD;AAED,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,OAAoB,CAAC;KACpD;AAED,IAAA,IAAY,iBAAiB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC;KAC9C;AAED,IAAA,IAAY,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;KAC5C;IAEO,WAAW,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,qBAAqB,CAAC,sBAAsB,EAAE,CAAC;QAErE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,qBAAqB,CAAC,oBAAoB,EAAE,CAAC;KAClE;IAEO,wBAAwB,GAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,MAAK,GAAG,CAAC;QAExB,MAAM,eAAe,GAAsB,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAEtF,MAAM,aAAa,GAAsB,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAElF,MAAM,cAAc,GAAsB,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAEpF,MAAM,YAAY,GAAsB,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAEhF,MAAM,gBAAgB,GAA0B,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9F,MAAM,eAAe,GAA0B,CAAC,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAE3F,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;KAClG;AAvFU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iCAAiC,EAqBlC,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,uCAAuC,EAE/B,EAAA,EAAA,KAAA,EAAA,eAAe,yBACf,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAxBvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EAdjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,SAAA,EAAA;YACT,0BAA0B;YAC1B,gDAAgD;AAChD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;gBAC1B,UAAU,EAAE,MAAK;AACf,oBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,iCAAiC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAExE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,EAAE,CAAC;iBAC9B;AACF,aAAA;AACD,YAAA,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,iCAAiC,CAAC,EAAE;SAC1G,EAca,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kCAAkC,2EAElC,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtEhD,oaAWA,ED4BY,MAAA,EAAA,CAAA,6EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,eAAe,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAiB5B,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBArB7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAC9B,QAAA,EAAA,0BAA0B,EACxB,UAAA,EAAA,IAAI,WACP,CAAC,YAAY,EAAE,eAAe,EAAE,kCAAkC,EAAE,gCAAgC,CAAC,EAGnG,SAAA,EAAA;wBACT,0BAA0B;wBAC1B,gDAAgD;AAChD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;4BAC1B,UAAU,EAAE,MAAK;gCACf,MAAM,KAAK,GAAG,MAAM,CAAoC,iCAAA,EAAA,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gCAExE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,EAAE,CAAC;6BAC9B;AACF,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,UAAU,CAAC,MAAuC,iCAAA,CAAC,EAAE;AAC1G,qBAAA,EAAA,QAAA,EAAA,oaAAA,EAAA,MAAA,EAAA,CAAA,6EAAA,CAAA,EAAA,CAAA;;0BAuBE,MAAM;2BAAC,uCAAuC,CAAA;;0BAE9C,IAAI;;0BAAI,MAAM;2BAAC,eAAe,CAAA;;0BAC9B,IAAI;;0BAAI,MAAM;2BAAC,gBAAgB,CAAA;yCAZwB,UAAU,EAAA,CAAA;sBAAnE,YAAY;uBAAC,kCAAkC,CAAA;gBAEQ,QAAQ,EAAA,CAAA;sBAA/D,YAAY;uBAAC,gCAAgC,CAAA;;;AE9DhD,MAAM,oBAAoB,GAAmB;AAC3C,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,aAAa;AACzB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,cAAc,EAAE,WAAW;AAC3B,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,kBAAkB,EAAE,WAAW;AAChC,KAAA;CACF,CAAC;AAEF,MAAM,UAAU,GAAoB,CAAC,kCAAkC,EAAE,gCAAgC,CAAC,CAAC;MAuB9F,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EApB1B,OAAA,EAAA,CAAA,YAAY,EAAE,iCAAiC,EAHtB,kCAAkC,EAAE,gCAAgC,CAI7F,EAAA,OAAA,EAAA,CAAA,iCAAiC,EAJR,kCAAkC,EAAE,gCAAgC,CAAA,EAAA,CAAA,CAAA,EAAA;AAuB5F,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAlBzB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,QAAQ,EAAE,iBAAiB;AAC3B,gBAAA,IAAI,EAAE,CAAC,eAAe,EAAE,+BAA+B,CAAC;AACzD,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,gBAAgB;gBACzB,UAAU,EAAE,MAAK;AACf,oBAAA,MAAM,eAAe,GAA0B,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAE5G,oBAAA,IAAI,eAAe;AAAE,wBAAA,OAAO,eAAe,CAAC;AAE5C,oBAAA,OAAO,oBAAoB,CAAC;iBAC7B;AACF,aAAA;SACF,EAlBS,OAAA,EAAA,CAAA,YAAY,EAAE,iCAAiC,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAoB9C,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBArBrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,iCAAiC,EAAE,GAAG,UAAU,CAAC;AACzE,oBAAA,OAAO,EAAE,CAAC,iCAAiC,EAAE,GAAG,UAAU,CAAC;AAC3D,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,WAAW;AACpB,4BAAA,QAAQ,EAAE,iBAAiB;AAC3B,4BAAA,IAAI,EAAE,CAAC,eAAe,EAAE,+BAA+B,CAAC;AACzD,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,gBAAgB;4BACzB,UAAU,EAAE,MAAK;AACf,gCAAA,MAAM,eAAe,GAA0B,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAE5G,gCAAA,IAAI,eAAe;AAAE,oCAAA,OAAO,eAAe,CAAC;AAE5C,gCAAA,OAAO,oBAAoB,CAAC;6BAC7B;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA;;;SCvCe,2BAA2B,GAAA;IACzC,OAAO,CAAC,OAAwB,KAA6B;QAC3D,MAAM,SAAS,GAAc,OAAoB,CAAC;QAElD,IAAI,MAAM,GAA4B,EAAE,CAAC;AAEzC,QAAA,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC5D,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;SAChD;AAED,QAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;AAExD,QAAA,IAAI,MAAM,YAAY,MAAM,IAAI,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE;AAC5F,YAAA,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;SAC5B;AAED,QAAA,OAAO,MAAM,CAAC;AAChB,KAAC,CAAC;AACJ;;ACrBA;;AAEG;;;;"}
@@ -0,0 +1,6 @@
1
+ export { WlcmDateRangePickerModule } from './lib/date-range-picker.module';
2
+ export { WlcmDateRangeInputValidator } from './lib/utils/date-range-input.validators';
3
+ export { WlcmDateRangeValidation } from './lib/models/date-range-validation.models';
4
+ export { WlcmDateRangePickerInputComponent } from './lib/components/date-range-picker-input/date-range-picker-input.component';
5
+ export { DateRangePickerInputEndDirective } from './lib/directives/date-range-picker-input-end.directive';
6
+ export { DateRangePickerInputStartDirective } from './lib/directives/date-range-picker-input-start.directive';
@@ -0,0 +1,20 @@
1
+ import { DateAdapter, MatDateFormats } from '@angular/material/core';
2
+ import { WlcmDataRangeCalendar } from '../../models/data-range-calendar.models';
3
+ import { WlcmIconName } from '@wlcm/angular/core';
4
+ import { MatCalendar } from '@angular/material/datepicker';
5
+ import * as moment from 'moment';
6
+ import * as i0 from "@angular/core";
7
+ export declare class WlcmCalendarHeaderComponent {
8
+ private dateAdapter;
9
+ protected rangeCalendar: WlcmDataRangeCalendar;
10
+ protected dateFormats: MatDateFormats;
11
+ calendar: MatCalendar<moment.Moment>;
12
+ readonly WlcmIconName: typeof WlcmIconName;
13
+ constructor(dateAdapter: DateAdapter<moment.Moment>, rangeCalendar: WlcmDataRangeCalendar, dateFormats: MatDateFormats, calendar: MatCalendar<moment.Moment>);
14
+ prev(): void;
15
+ next(): void;
16
+ changeCalendarView(): void;
17
+ get periodLabel(): string;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmCalendarHeaderComponent, [null, { optional: true; }, { optional: true; }, null]>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<WlcmCalendarHeaderComponent, "wlcm-calendar-header", never, {}, {}, never, never, true, never>;
20
+ }
@@ -0,0 +1,37 @@
1
+ import { ElementRef, Signal, WritableSignal } from '@angular/core';
2
+ import { DateRange, MatCalendar, MatCalendarUserEvent, MatDateRangeSelectionStrategy, MatDateSelectionModel, MatMonthView } from '@angular/material/datepicker';
3
+ import { WlcmCalendarHeaderComponent } from '../calendar-header/calendar-header.component';
4
+ import { WlcmDateRangePickerTrigger } from '../../directives/date-range-picker-trigger.directive';
5
+ import { DateAdapter } from '@angular/material/core';
6
+ import * as moment from 'moment';
7
+ import * as i0 from "@angular/core";
8
+ export declare class WlcmDateRangePickerComponent {
9
+ private rangeSelectionStrategy;
10
+ protected localSelectionModel: MatDateSelectionModel<DateRange<moment.Moment>>;
11
+ protected triggerSelectionModel: MatDateSelectionModel<DateRange<moment.Moment>>;
12
+ protected dateAdapter: DateAdapter<moment.Moment>;
13
+ protected trigger: WlcmDateRangePickerTrigger;
14
+ readonly WlcmCalendarHeaderComponent: typeof WlcmCalendarHeaderComponent;
15
+ private _isViewInitialized;
16
+ private _isComplete;
17
+ readonly isComplete: Signal<boolean>;
18
+ constructor(rangeSelectionStrategy: MatDateRangeSelectionStrategy<moment.Moment>, localSelectionModel: MatDateSelectionModel<DateRange<moment.Moment>>, triggerSelectionModel: MatDateSelectionModel<DateRange<moment.Moment>>, dateAdapter: DateAdapter<moment.Moment>, trigger: WlcmDateRangePickerTrigger);
19
+ leftCalendar: MatCalendar<moment.Moment>;
20
+ rightCalendar: MatCalendar<moment.Moment>;
21
+ leftCalendarElement: ElementRef<HTMLElement>;
22
+ monthView: MatMonthView<any>;
23
+ startDate: WritableSignal<moment.Moment>;
24
+ leftCalendarYearViewActivated: WritableSignal<boolean>;
25
+ rightCalendarYearViewActivated: WritableSignal<boolean>;
26
+ ngAfterViewInit(): void;
27
+ calendarSelection(event: MatCalendarUserEvent<moment.Moment | null>): void;
28
+ calendarDragDrop(event: MatCalendarUserEvent<DateRange<moment.Moment>>): void;
29
+ apply(): void;
30
+ reset(): void;
31
+ get selected(): DateRange<moment.Moment>;
32
+ private get leftCalendarActiveCell();
33
+ private handleSelectionChanged;
34
+ private handleRightCalendarPreviewChange;
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDateRangePickerComponent, never>;
36
+ static ɵcmp: i0.ɵɵComponentDeclaration<WlcmDateRangePickerComponent, "wlcm-date-range-picker", never, {}, {}, never, never, true, never>;
37
+ }
@@ -0,0 +1,8 @@
1
+ import { WlcmDateRangePickerComponent } from '../date-range-picker/date-range-picker.component';
2
+ import * as i0 from "@angular/core";
3
+ export declare class WlcmDateRangePickerBottomPanelComponent {
4
+ protected picker: WlcmDateRangePickerComponent;
5
+ constructor(picker: WlcmDateRangePickerComponent);
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDateRangePickerBottomPanelComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<WlcmDateRangePickerBottomPanelComponent, "wlcm-date-range-picker-bottom-panel", never, {}, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1,35 @@
1
+ import { AfterContentInit, AfterViewInit, Type, ViewContainerRef } from '@angular/core';
2
+ import { WlcmDateRangePickerTrigger } from '../../directives/date-range-picker-trigger.directive';
3
+ import { DateRange, MatDateSelectionModel } from '@angular/material/datepicker';
4
+ import { WlcmFormField, WlcmFormFieldInput } from '@wlcm/angular/forms';
5
+ import { Observable } from 'rxjs';
6
+ import { Overlay } from '@angular/cdk/overlay';
7
+ import { WlcmDateRangePickerComponent } from '../date-range-picker/date-range-picker.component';
8
+ import { ControlContainer } from '@angular/forms';
9
+ import * as i0 from "@angular/core";
10
+ export declare class WlcmDateRangePickerInputComponent extends WlcmDateRangePickerTrigger implements WlcmFormFieldInput, AfterContentInit, AfterViewInit {
11
+ protected overlay: Overlay;
12
+ protected viewContainerRef: ViewContainerRef;
13
+ protected selectionModel: MatDateSelectionModel<DateRange<moment.Moment>>;
14
+ private formField;
15
+ private controlContainer;
16
+ private readonly _focusStream$;
17
+ private readonly _blurStream$;
18
+ focus$: Observable<unknown>;
19
+ blur$: Observable<unknown>;
20
+ private startInput;
21
+ private endInput;
22
+ componentType: Type<WlcmDateRangePickerComponent>;
23
+ constructor(overlay: Overlay, viewContainerRef: ViewContainerRef, selectionModel: MatDateSelectionModel<DateRange<moment.Moment>>, formField: WlcmFormField, controlContainer: ControlContainer);
24
+ ngAfterContentInit(): void;
25
+ ngAfterViewInit(): void;
26
+ isFocused(): boolean;
27
+ focus(): void;
28
+ private get control();
29
+ private get startInputElement();
30
+ private get endInputElement();
31
+ private checkInputs;
32
+ private attachFocusBlurListeners;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDateRangePickerInputComponent, [null, null, null, { host: true; }, { host: true; }]>;
34
+ static ɵcmp: i0.ɵɵComponentDeclaration<WlcmDateRangePickerInputComponent, "wlcm-date-range-picker-input", ["wlcmDateRangePickerInput"], {}, {}, ["startInput", "endInput"], ["[wlcmDateRangePickerInputStart]", "[wlcmDateRangePickerInputEnd]"], true, never>;
35
+ }
@@ -0,0 +1,5 @@
1
+ import { InjectionToken, Provider } from '@angular/core';
2
+ import { MatDateSelectionModel } from '@angular/material/datepicker';
3
+ import * as moment from 'moment';
4
+ export declare const WLCM_DATE_RANGE_SELECTION_MODEL: InjectionToken<MatDateSelectionModel<moment.Moment>>;
5
+ export declare const WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER: Provider;
@@ -0,0 +1,5 @@
1
+ import { InjectionToken, Provider } from '@angular/core';
2
+ import { MatDateSelectionModel } from '@angular/material/datepicker';
3
+ import * as moment from 'moment';
4
+ export declare const WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL: InjectionToken<MatDateSelectionModel<moment.Moment>>;
5
+ export declare const WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL_PROVIDER: Provider;
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@angular/common";
3
+ import * as i2 from "./components/date-range-picker-input/date-range-picker-input.component";
4
+ import * as i3 from "./directives/date-range-picker-input-start.directive";
5
+ import * as i4 from "./directives/date-range-picker-input-end.directive";
6
+ export declare class WlcmDateRangePickerModule {
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDateRangePickerModule, never>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<WlcmDateRangePickerModule, never, [typeof i1.CommonModule, typeof i2.WlcmDateRangePickerInputComponent, typeof i3.DateRangePickerInputStartDirective, typeof i4.DateRangePickerInputEndDirective], [typeof i2.WlcmDateRangePickerInputComponent, typeof i3.DateRangePickerInputStartDirective, typeof i4.DateRangePickerInputEndDirective]>;
9
+ static ɵinj: i0.ɵɵInjectorDeclaration<WlcmDateRangePickerModule>;
10
+ }
@@ -0,0 +1,32 @@
1
+ import { AfterViewInit, ElementRef } from '@angular/core';
2
+ import { ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';
3
+ import { DateAdapter, MatDateFormats } from '@angular/material/core';
4
+ import * as moment from 'moment';
5
+ import * as i0 from "@angular/core";
6
+ export declare class DateRangePickerInputBase implements AfterViewInit, ControlValueAccessor, Validator {
7
+ element: ElementRef<HTMLInputElement>;
8
+ protected dateAdapter: DateAdapter<moment.Moment>;
9
+ protected dateFormats: MatDateFormats;
10
+ handleBlur: () => void;
11
+ handleInput: () => void;
12
+ protected _changed?: (value: moment.Moment | null) => void;
13
+ protected _touched?: () => void;
14
+ protected _validatorChanged?: () => void;
15
+ private _inputMirror;
16
+ constructor(element: ElementRef<HTMLInputElement>, dateAdapter: DateAdapter<moment.Moment>, dateFormats: MatDateFormats);
17
+ ngAfterViewInit(): void;
18
+ writeValue(value: moment.Moment | null): void;
19
+ validate(): ValidationErrors | null;
20
+ registerOnChange(callback: (value: moment.Moment | null) => void): void;
21
+ registerOnTouched(callback: () => void): void;
22
+ registerOnValidatorChange(callback: () => void): void;
23
+ parseCurrentValue(): moment.Moment | null;
24
+ protected updateInputValue(value: moment.Moment | null): void;
25
+ private changeInputSize;
26
+ private createInputMirror;
27
+ private copyInputElementStyles;
28
+ protected get inputElement(): HTMLInputElement;
29
+ protected get currentValue(): string;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateRangePickerInputBase, never>;
31
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DateRangePickerInputBase, never, never, {}, {}, never, never, false, never>;
32
+ }
@@ -0,0 +1,16 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { DateRangePickerInputBase } from './date-range-picker-input-base.directive';
3
+ import { DateAdapter, MatDateFormats } from '@angular/material/core';
4
+ import { MatDateSelectionModel, DateRange } from '@angular/material/datepicker';
5
+ import * as i0 from "@angular/core";
6
+ export declare class DateRangePickerInputEndDirective extends DateRangePickerInputBase {
7
+ element: ElementRef<HTMLInputElement>;
8
+ protected dateAdapter: DateAdapter<moment.Moment>;
9
+ protected dateFormats: MatDateFormats;
10
+ protected selectionModel: MatDateSelectionModel<DateRange<moment.Moment>>;
11
+ constructor(element: ElementRef<HTMLInputElement>, dateAdapter: DateAdapter<moment.Moment>, dateFormats: MatDateFormats, selectionModel: MatDateSelectionModel<DateRange<moment.Moment>>);
12
+ handleBlur: () => void;
13
+ private handleSelectionChange;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateRangePickerInputEndDirective, [null, null, { optional: true; }, null]>;
15
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DateRangePickerInputEndDirective, "[wlcmDateRangePickerInputEnd]", never, {}, {}, never, never, true, never>;
16
+ }
@@ -0,0 +1,17 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { DateRangePickerInputBase } from './date-range-picker-input-base.directive';
3
+ import { DateAdapter, MatDateFormats } from '@angular/material/core';
4
+ import { MatDateSelectionModel, DateRange } from '@angular/material/datepicker';
5
+ import * as moment from 'moment';
6
+ import * as i0 from "@angular/core";
7
+ export declare class DateRangePickerInputStartDirective extends DateRangePickerInputBase {
8
+ element: ElementRef<HTMLInputElement>;
9
+ protected dateAdapter: DateAdapter<moment.Moment>;
10
+ protected dateFormats: MatDateFormats;
11
+ protected selectionModel: MatDateSelectionModel<DateRange<moment.Moment>>;
12
+ constructor(element: ElementRef<HTMLInputElement>, dateAdapter: DateAdapter<moment.Moment>, dateFormats: MatDateFormats, selectionModel: MatDateSelectionModel<DateRange<moment.Moment>>);
13
+ handleBlur: () => void;
14
+ private handleSelectionChange;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateRangePickerInputStartDirective, [null, null, { optional: true; }, null]>;
16
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DateRangePickerInputStartDirective, "[wlcmDateRangePickerInputStart]", never, {}, {}, never, never, true, never>;
17
+ }
@@ -0,0 +1,26 @@
1
+ import { Overlay, OverlayRef } from '@angular/cdk/overlay';
2
+ import { ComponentRef, ElementRef, Type, ViewContainerRef } from '@angular/core';
3
+ import { DateRange, MatDateSelectionModel } from '@angular/material/datepicker';
4
+ import { Observable } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export declare class WlcmDateRangePickerTrigger<T = unknown> {
7
+ protected overlay: Overlay;
8
+ protected viewContainerRef: ViewContainerRef;
9
+ protected selectionModel: MatDateSelectionModel<DateRange<moment.Moment>>;
10
+ protected overlayRef: OverlayRef;
11
+ protected connectedTo: ElementRef<HTMLElement>;
12
+ protected componentType: Type<T>;
13
+ protected componentRef?: ComponentRef<T>;
14
+ constructor(overlay: Overlay, viewContainerRef: ViewContainerRef, selectionModel: MatDateSelectionModel<DateRange<moment.Moment>>);
15
+ open(): void;
16
+ close(): void;
17
+ get isOpen(): boolean;
18
+ get opened(): Observable<void>;
19
+ get closed(): Observable<void>;
20
+ private get overlayOrigin();
21
+ private handleBackdropClick;
22
+ private updatePositionStrategy;
23
+ private createOverlayConfig;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDateRangePickerTrigger<any>, never>;
25
+ static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmDateRangePickerTrigger<any>, never, never, {}, {}, never, never, false, never>;
26
+ }
@@ -0,0 +1,15 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { WlcmDataRangeCalendar } from '../models/data-range-calendar.models';
3
+ import { DateAdapter } from '@angular/material/core';
4
+ import { MatCalendar } from '@angular/material/datepicker';
5
+ import * as i0 from "@angular/core";
6
+ export declare class WlcmLeftCalendarDirective extends WlcmDataRangeCalendar {
7
+ element: ElementRef<HTMLElement>;
8
+ protected dateAdapter: DateAdapter<moment.Moment>;
9
+ protected calendar: MatCalendar<moment.Moment>;
10
+ constructor(element: ElementRef<HTMLElement>, dateAdapter: DateAdapter<moment.Moment>, calendar: MatCalendar<moment.Moment>);
11
+ handleYearChange(): void;
12
+ handleMonthChange(): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmLeftCalendarDirective, never>;
14
+ static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmLeftCalendarDirective, "[wlcmLeftCalendar]", never, {}, {}, never, never, true, never>;
15
+ }
@@ -0,0 +1,18 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { WlcmDataRangeCalendar } from '../models/data-range-calendar.models';
3
+ import { MatCalendar } from '@angular/material/datepicker';
4
+ import { DateAdapter } from '@angular/material/core';
5
+ import * as i0 from "@angular/core";
6
+ export declare class WlcmRightCalendarDirective extends WlcmDataRangeCalendar {
7
+ element: ElementRef<HTMLElement>;
8
+ protected dateAdapter: DateAdapter<moment.Moment>;
9
+ protected calendar: MatCalendar<moment.Moment>;
10
+ constructor(element: ElementRef<HTMLElement>, dateAdapter: DateAdapter<moment.Moment>, calendar: MatCalendar<moment.Moment>);
11
+ handleYearChange(): void;
12
+ handleMonthChange(): void;
13
+ nextMonth(): void;
14
+ prevYear(): void;
15
+ nextYear(): void;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmRightCalendarDirective, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmRightCalendarDirective, "[wlcmRightCalendar]", never, {}, {}, never, never, true, never>;
18
+ }
@@ -0,0 +1,21 @@
1
+ import { ElementRef, InputSignal, OutputEmitterRef } from '@angular/core';
2
+ import { MatCalendar, MatCalendarView } from '@angular/material/datepicker';
3
+ import { DateAdapter } from '@angular/material/core';
4
+ import * as moment from 'moment';
5
+ import * as i0 from "@angular/core";
6
+ export declare class WlcmDataRangeCalendar {
7
+ element: ElementRef<HTMLElement>;
8
+ protected calendar: MatCalendar<moment.Moment>;
9
+ protected dateAdapter: DateAdapter<moment.Moment>;
10
+ location: 'left' | 'right';
11
+ readonly dateChange: OutputEmitterRef<moment.Moment>;
12
+ readonly viewChange: OutputEmitterRef<MatCalendarView>;
13
+ readonly disabled: InputSignal<boolean>;
14
+ constructor(location: 'left' | 'right', element: ElementRef<HTMLElement>, calendar: MatCalendar<moment.Moment>, dateAdapter: DateAdapter<moment.Moment>);
15
+ prevMonth(): void;
16
+ nextMonth(): void;
17
+ prevYear(): void;
18
+ nextYear(): void;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDataRangeCalendar, never>;
20
+ static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmDataRangeCalendar, never, never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "dateChange": "dateChange"; "viewChange": "viewChange"; }, never, never, false, never>;
21
+ }
@@ -0,0 +1,3 @@
1
+ export declare enum WlcmDateRangeValidation {
2
+ format = "wlcmDateRangeFormat"
3
+ }
@@ -0,0 +1,2 @@
1
+ import { ValidatorFn } from '@angular/forms';
2
+ export declare function WlcmDateRangeInputValidator(): ValidatorFn;
@@ -0,0 +1,4 @@
1
+ export declare class DateRangePickerErrors {
2
+ static throwNoStartInputError(): void;
3
+ static throwNoEndInputError(): void;
4
+ }
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, HostBinding, Inject, Optional, ViewChild, forwardRef, } from '@angular/core';
3
- import { Validators, NgControl } from '@angular/forms';
3
+ import { Validators, ControlContainer, NgControl } from '@angular/forms';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { WlcmErrorComponent } from '../error/error.component';
6
6
  import { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER } from '../../constants/form-state-handlers.constants';
@@ -8,8 +8,8 @@ import { WlcmFormFieldCustomContainerDirective } from '../../directives/form-fie
8
8
  import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
9
9
  import { ErrorsMapperPipe } from '../../pipes/errors-mapper.pipe';
10
10
  import { WLCM_FORM_FIELD, WLCM_INPUT } from '../../constants/form-elements.constants';
11
- import { merge } from 'rxjs';
12
11
  import { WlcmFormFieldPrefixDirective } from '../../directives/form-field-prefix.directive';
12
+ import { merge } from 'rxjs';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "@angular/common";
15
15
  let WlcmFormFieldComponent = class WlcmFormFieldComponent {
@@ -40,7 +40,7 @@ let WlcmFormFieldComponent = class WlcmFormFieldComponent {
40
40
  this.inputRef?.focus();
41
41
  }
42
42
  get control() {
43
- return this.ngControl?.control;
43
+ return this.controlContainer?.control || this.ngControl.control;
44
44
  }
45
45
  get inputContainer() {
46
46
  return this.customContainer?.elementRef || this.defaultContainer;
@@ -71,7 +71,7 @@ let WlcmFormFieldComponent = class WlcmFormFieldComponent {
71
71
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFormFieldComponent, isStandalone: true, selector: "wlcm-form-field", host: { properties: { "class.wlcm-field-focused": "this.isFocused", "class.wlcm-field-required": "this.isRequired", "class.wlcm-field-invalid": "this.isInvalid", "class.wlcm-field-touched": "this.isTouched" }, classAttribute: "wlcm-form-field" }, providers: [
72
72
  WLCM_FORM_CONTROL_PROVIDER,
73
73
  { provide: WLCM_FORM_FIELD, useExisting: forwardRef(() => WlcmFormFieldComponent) },
74
- ], queries: [{ propertyName: "ngControl", first: true, predicate: NgControl, descendants: true }, { propertyName: "_inputRef", first: true, predicate: WLCM_INPUT, descendants: true }, { propertyName: "prefix", first: true, predicate: WlcmFormFieldPrefixDirective, descendants: true }, { propertyName: "customContainer", first: true, predicate: WlcmFormFieldCustomContainerDirective, descendants: true }], viewQueries: [{ propertyName: "defaultContainer", first: true, predicate: ["defaultContainer"], descendants: true }], ngImport: i0, template: "<ng-content select=\"wlcm-label\"></ng-content>\n\n<ng-content select=\"[wlcmFormFieldCustomContainer]\"></ng-content>\n\n<div\n class=\"wlcm-field-container\"\n (click)=\"focus()\"\n #defaultContainer\n *ngIf=\"!customContainer\"\n>\n <div class=\"wlcm-field-prefix\" [class.contains-children]=\"prefix\">\n <ng-content select=\"[wlcmFormFieldPrefix]\"></ng-content>\n </div>\n\n <ng-content select=\"[wlcmInput], wlcm-autocomplete\"></ng-content>\n\n <div class=\"wlcm-field-suffix\">\n <ng-content select=\"[wlcmFormFieldSuffix]\"></ng-content>\n </div>\n</div>\n\n<ng-content select=\"[wlcmFormFieldHint]\"></ng-content>\n\n<div class=\"wlcm-field-error-container\" *ngIf=\"control\">\n <wlcm-error>{{ $any(control) | errorsMapper }}</wlcm-error>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: WlcmErrorComponent, selector: "wlcm-error" }, { kind: "pipe", type: ErrorsMapperPipe, name: "errorsMapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
74
+ ], queries: [{ propertyName: "ngControl", first: true, predicate: NgControl, descendants: true }, { propertyName: "controlContainer", first: true, predicate: ControlContainer, descendants: true }, { propertyName: "_inputRef", first: true, predicate: WLCM_INPUT, descendants: true }, { propertyName: "prefix", first: true, predicate: WlcmFormFieldPrefixDirective, descendants: true }, { propertyName: "customContainer", first: true, predicate: WlcmFormFieldCustomContainerDirective, descendants: true }], viewQueries: [{ propertyName: "defaultContainer", first: true, predicate: ["defaultContainer"], descendants: true }], ngImport: i0, template: "<ng-content select=\"wlcm-label\"></ng-content>\n\n<ng-content select=\"[wlcmFormFieldCustomContainer]\"></ng-content>\n\n<div\n class=\"wlcm-field-container\"\n (click)=\"focus()\"\n #defaultContainer\n *ngIf=\"!customContainer\"\n>\n <div class=\"wlcm-field-prefix\" [class.contains-children]=\"prefix\">\n <ng-content select=\"[wlcmFormFieldPrefix]\"></ng-content>\n </div>\n\n <ng-content select=\"[wlcmInput], wlcm-autocomplete\"></ng-content>\n\n <div class=\"wlcm-field-suffix\">\n <ng-content select=\"[wlcmFormFieldSuffix]\"></ng-content>\n </div>\n</div>\n\n<ng-content select=\"[wlcmFormFieldHint]\"></ng-content>\n\n<div class=\"wlcm-field-error-container\" *ngIf=\"control\">\n <wlcm-error>{{ $any(control) | errorsMapper }}</wlcm-error>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: WlcmErrorComponent, selector: "wlcm-error" }, { kind: "pipe", type: ErrorsMapperPipe, name: "errorsMapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
75
75
  };
76
76
  WlcmFormFieldComponent = __decorate([
77
77
  UntilDestroy(),
@@ -92,6 +92,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
92
92
  }] }, { type: i0.ChangeDetectorRef }], propDecorators: { ngControl: [{
93
93
  type: ContentChild,
94
94
  args: [NgControl, { descendants: true }]
95
+ }], controlContainer: [{
96
+ type: ContentChild,
97
+ args: [ControlContainer, { descendants: true }]
95
98
  }], _inputRef: [{
96
99
  type: ContentChild,
97
100
  args: [WLCM_INPUT]
@@ -117,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
117
120
  type: HostBinding,
118
121
  args: ['class.wlcm-field-touched']
119
122
  }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2Zvcm1zL3NyYy9saWIvZm9ybXMvY29tcG9uZW50cy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMvRyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHdEYsT0FBTyxFQUFjLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7O0FBZ0JyRixJQUFNLHNCQUFzQixHQUE1QixNQUFNLHNCQUFzQjtJQWFqQyxJQUE2QyxTQUFTO1FBQ3BELE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxLQUFLLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQThDLFVBQVU7UUFDdEQsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELElBQTZDLFNBQVM7UUFDcEQsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBNkMsU0FBUztRQUNwRCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRCxZQUdVLGdCQUFpQyxFQUNqQyxpQkFBb0M7UUFEcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQzNDLENBQUM7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVSxJQUFLLElBQUksQ0FBQyxnQkFBNEMsQ0FBQztJQUNoRyxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sTUFBTSxHQUEwQixJQUFJLENBQUMsYUFBYSxDQUFDO1FBRXpELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQzthQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDMUIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFZLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFZLGFBQWE7UUFDdkIsTUFBTSxNQUFNLEdBQTBCLEVBQUUsQ0FBQztRQUV6QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs4R0FwRlUsc0JBQXNCLGtCQStCdkIsaUJBQWlCO2tHQS9CaEIsc0JBQXNCLHFUQUx0QjtZQUNULDBCQUEwQjtZQUMxQixFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1NBQ3BGLGlFQUdhLFNBQVMsNEVBRVQsVUFBVSx5RUFFViw0QkFBNEIsa0ZBRTVCLHFDQUFxQyxzS0MvQ3JELDB3QkEwQkEseURESVksWUFBWSxtSUFBRSxrQkFBa0Isa0RBQUUsZ0JBQWdCOztBQVVqRCxzQkFBc0I7SUFkbEMsWUFBWSxFQUFFOzZDQStDZ0IsaUJBQWlCO0dBakNuQyxzQkFBc0IsQ0FxRmxDOzsyRkFyRlksc0JBQXNCO2tCQWJsQyxTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQyxRQUN2RCxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxtQkFHakIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVCwwQkFBMEI7d0JBQzFCLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQyxFQUFFO3FCQUNwRjs7MEJBZ0NFLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsaUJBQWlCO3lFQTlCNkIsU0FBUztzQkFBaEUsWUFBWTt1QkFBQyxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUVaLFNBQVM7c0JBQTFDLFlBQVk7dUJBQUMsVUFBVTtnQkFFOEIsTUFBTTtzQkFBM0QsWUFBWTt1QkFBQyw0QkFBNEI7Z0JBR2hDLGVBQWU7c0JBRHhCLFlBQVk7dUJBQUMscUNBQXFDO2dCQUl6QyxnQkFBZ0I7c0JBRHpCLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUdnQixTQUFTO3NCQUFyRCxXQUFXO3VCQUFDLDBCQUEwQjtnQkFJTyxVQUFVO3NCQUF2RCxXQUFXO3VCQUFDLDJCQUEyQjtnQkFJSyxTQUFTO3NCQUFyRCxXQUFXO3VCQUFDLDBCQUEwQjtnQkFJTSxTQUFTO3NCQUFyRCxXQUFXO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycywgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgV2xjbUVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZXJyb3IvZXJyb3IuY29tcG9uZW50JztcbmltcG9ydCB7IFdMQ01fRk9STV9DT05UUk9MLCBXTENNX0ZPUk1fQ09OVFJPTF9QUk9WSURFUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9mb3JtLXN0YXRlLWhhbmRsZXJzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBXbGNtRm9ybUZpZWxkQ3VzdG9tQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3JtLWZpZWxkLWN1c3RvbS1jb250YWluZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgRXJyb3JzTWFwcGVyUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2Vycm9ycy1tYXBwZXIucGlwZSc7XG5pbXBvcnQgeyBXTENNX0ZPUk1fRklFTEQsIFdMQ01fSU5QVVQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZm9ybS1lbGVtZW50cy5jb25zdGFudHMnO1xuaW1wb3J0IHsgV2xjbUZvcm1Db250cm9sIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWxzJztcbmltcG9ydCB7IFdsY21Gb3JtRmllbGRJbnB1dCwgV2xjbUlucHV0R2V0dGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2lucHV0Lm1vZGVscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgV2xjbUZvcm1GaWVsZFByZWZpeERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9ybS1maWVsZC1wcmVmaXguZGlyZWN0aXZlJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3bGNtLWZvcm0tZmllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBXbGNtRXJyb3JDb21wb25lbnQsIEVycm9yc01hcHBlclBpcGVdLFxuICBob3N0OiB7IGNsYXNzOiAnd2xjbS1mb3JtLWZpZWxkJyB9LFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIFdMQ01fRk9STV9DT05UUk9MX1BST1ZJREVSLFxuICAgIHsgcHJvdmlkZTogV0xDTV9GT1JNX0ZJRUxELCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXbGNtRm9ybUZpZWxkQ29tcG9uZW50KSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXbGNtRm9ybUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBDb250ZW50Q2hpbGQoTmdDb250cm9sLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHByaXZhdGUgbmdDb250cm9sITogTmdDb250cm9sO1xuXG4gIEBDb250ZW50Q2hpbGQoV0xDTV9JTlBVVCkgcHJpdmF0ZSBfaW5wdXRSZWY/OiBXbGNtSW5wdXRHZXR0ZXI7XG5cbiAgQENvbnRlbnRDaGlsZChXbGNtRm9ybUZpZWxkUHJlZml4RGlyZWN0aXZlKSBwcm90ZWN0ZWQgcHJlZml4PzogV2xjbUZvcm1GaWVsZFByZWZpeERpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkKFdsY21Gb3JtRmllbGRDdXN0b21Db250YWluZXJEaXJlY3RpdmUpXG4gIHByb3RlY3RlZCBjdXN0b21Db250YWluZXI/OiBXbGNtRm9ybUZpZWxkQ3VzdG9tQ29udGFpbmVyRGlyZWN0aXZlO1xuXG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRDb250YWluZXInKVxuICBwcm90ZWN0ZWQgZGVmYXVsdENvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mud2xjbS1maWVsZC1mb2N1c2VkJykgZ2V0IGlzRm9jdXNlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFJlZj8uaXNGb2N1c2VkKCkgPz8gZmFsc2U7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLndsY20tZmllbGQtcmVxdWlyZWQnKSBnZXQgaXNSZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLndsY20tZmllbGQtaW52YWxpZCcpIGdldCBpc0ludmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbD8uaW52YWxpZDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mud2xjbS1maWVsZC10b3VjaGVkJykgZ2V0IGlzVG91Y2hlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sPy50b3VjaGVkO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KFdMQ01fRk9STV9DT05UUk9MKVxuICAgIHByaXZhdGUgcGFyZW50Rm9ybU1lbWJlcjogV2xjbUZvcm1Db250cm9sLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlucHV0UmVmICYmICF0aGlzLmN1c3RvbUNvbnRhaW5lcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBlbGVtZW50IHNob3VsZCBiZSBib3VuZCB0byB0aGUgd2xjbUlucHV0IGRpcmVjdGl2ZS4nKTtcbiAgICB9XG5cbiAgICB0aGlzLmhhbmRsZVN0YXRlQ2hhbmdlcygpO1xuICB9XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRm9jdXNlZCkgdGhpcy5pbnB1dFJlZj8uZm9jdXMoKTtcbiAgfVxuXG4gIGdldCBjb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm5nQ29udHJvbD8uY29udHJvbDtcbiAgfVxuXG4gIGdldCBpbnB1dENvbnRhaW5lcigpOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tQ29udGFpbmVyPy5lbGVtZW50UmVmIHx8ICh0aGlzLmRlZmF1bHRDb250YWluZXIgYXMgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdGF0ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRzOiBPYnNlcnZhYmxlPHVua25vd24+W10gPSB0aGlzLmNvbnRyb2xFdmVudHM7XG5cbiAgICBpZiAodGhpcy5wYXJlbnRGb3JtTWVtYmVyKSB7XG4gICAgICBldmVudHMucHVzaCh0aGlzLnBhcmVudEZvcm1NZW1iZXIuc3RhdGVDaGFuZ2VzJCk7XG4gICAgfVxuXG4gICAgbWVyZ2UoLi4uZXZlbnRzKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaW5wdXRSZWYoKTogV2xjbUZvcm1GaWVsZElucHV0IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRSZWY/LmdldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgY29udHJvbEV2ZW50cygpOiBPYnNlcnZhYmxlPHVua25vd24+W10ge1xuICAgIGNvbnN0IGV2ZW50czogT2JzZXJ2YWJsZTx1bmtub3duPltdID0gW107XG5cbiAgICBpZiAodGhpcy5pbnB1dFJlZikge1xuICAgICAgZXZlbnRzLnB1c2godGhpcy5pbnB1dFJlZi5mb2N1cyQsIHRoaXMuaW5wdXRSZWYuYmx1ciQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgIGV2ZW50cy5wdXNoKHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJ3bGNtLWxhYmVsXCI+PC9uZy1jb250ZW50PlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJbd2xjbUZvcm1GaWVsZEN1c3RvbUNvbnRhaW5lcl1cIj48L25nLWNvbnRlbnQ+XG5cbjxkaXZcbiAgY2xhc3M9XCJ3bGNtLWZpZWxkLWNvbnRhaW5lclwiXG4gIChjbGljayk9XCJmb2N1cygpXCJcbiAgI2RlZmF1bHRDb250YWluZXJcbiAgKm5nSWY9XCIhY3VzdG9tQ29udGFpbmVyXCJcbj5cbiAgPGRpdiBjbGFzcz1cIndsY20tZmllbGQtcHJlZml4XCIgW2NsYXNzLmNvbnRhaW5zLWNoaWxkcmVuXT1cInByZWZpeFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt3bGNtRm9ybUZpZWxkUHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3dsY21JbnB1dF0sIHdsY20tYXV0b2NvbXBsZXRlXCI+PC9uZy1jb250ZW50PlxuXG4gIDxkaXYgY2xhc3M9XCJ3bGNtLWZpZWxkLXN1ZmZpeFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt3bGNtRm9ybUZpZWxkU3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3dsY21Gb3JtRmllbGRIaW50XVwiPjwvbmctY29udGVudD5cblxuPGRpdiBjbGFzcz1cIndsY20tZmllbGQtZXJyb3ItY29udGFpbmVyXCIgKm5nSWY9XCJjb250cm9sXCI+XG4gIDx3bGNtLWVycm9yPnt7ICRhbnkoY29udHJvbCkgfCBlcnJvcnNNYXBwZXIgfX08L3dsY20tZXJyb3I+XG48L2Rpdj5cbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2Zvcm1zL3NyYy9saWIvZm9ybXMvY29tcG9uZW50cy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQW1CLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMvRyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFHNUYsT0FBTyxF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MEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgT3B0aW9uYWwsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzLCBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBXbGNtRXJyb3JDb21wb25lbnQgfSBmcm9tICcuLi9lcnJvci9lcnJvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgV0xDTV9GT1JNX0NPTlRST0wsIFdMQ01fRk9STV9DT05UUk9MX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2Zvcm0tc3RhdGUtaGFuZGxlcnMuY29uc3RhbnRzJztcbmltcG9ydCB7IFdsY21Gb3JtRmllbGRDdXN0b21Db250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2Zvcm0tZmllbGQtY3VzdG9tLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBFcnJvcnNNYXBwZXJQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvZXJyb3JzLW1hcHBlci5waXBlJztcbmltcG9ydCB7IFdMQ01fRk9STV9GSUVMRCwgV0xDTV9JTlBVVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9mb3JtLWVsZW1lbnRzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBXbGNtRm9ybUZpZWxkUHJlZml4RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3JtLWZpZWxkLXByZWZpeC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2xjbUZvcm1GaWVsZElucHV0LCBXbGNtSW5wdXRHZXR0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5wdXQubW9kZWxzJztcbmltcG9ydCB7IFdsY21Gb3JtQ29udHJvbCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLm1vZGVscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dsY20tZm9ybS1maWVsZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFdsY21FcnJvckNvbXBvbmVudCwgRXJyb3JzTWFwcGVyUGlwZV0sXG4gIGhvc3Q6IHsgY2xhc3M6ICd3bGNtLWZvcm0tZmllbGQnIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgV0xDTV9GT1JNX0NPTlRST0xfUFJPVklERVIsXG4gICAgeyBwcm92aWRlOiBXTENNX0ZPUk1fRklFTEQsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21Gb3JtRmllbGRDb21wb25lbnQpIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdsY21Gb3JtRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQENvbnRlbnRDaGlsZChOZ0NvbnRyb2wsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcHJpdmF0ZSBuZ0NvbnRyb2w/OiBOZ0NvbnRyb2w7XG5cbiAgQENvbnRlbnRDaGlsZChDb250cm9sQ29udGFpbmVyLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHByaXZhdGUgY29udHJvbENvbnRhaW5lcj86IENvbnRyb2xDb250YWluZXI7XG5cbiAgQENvbnRlbnRDaGlsZChXTENNX0lOUFVUKSBwcml2YXRlIF9pbnB1dFJlZj86IFdsY21JbnB1dEdldHRlcjtcblxuICBAQ29udGVudENoaWxkKFdsY21Gb3JtRmllbGRQcmVmaXhEaXJlY3RpdmUpIHByb3RlY3RlZCBwcmVmaXg/OiBXbGNtRm9ybUZpZWxkUHJlZml4RGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGQoV2xjbUZvcm1GaWVsZEN1c3RvbUNvbnRhaW5lckRpcmVjdGl2ZSlcbiAgcHJvdGVjdGVkIGN1c3RvbUNvbnRhaW5lcj86IFdsY21Gb3JtRmllbGRDdXN0b21Db250YWluZXJEaXJlY3RpdmU7XG5cbiAgQFZpZXdDaGlsZCgnZGVmYXVsdENvbnRhaW5lcicpXG4gIHByb3RlY3RlZCBkZWZhdWx0Q29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy53bGNtLWZpZWxkLWZvY3VzZWQnKSBnZXQgaXNGb2N1c2VkKCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0UmVmPy5pc0ZvY3VzZWQoKSA/PyBmYWxzZTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mud2xjbS1maWVsZC1yZXF1aXJlZCcpIGdldCBpc1JlcXVpcmVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mud2xjbS1maWVsZC1pbnZhbGlkJykgZ2V0IGlzSW52YWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sPy5pbnZhbGlkO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy53bGNtLWZpZWxkLXRvdWNoZWQnKSBnZXQgaXNUb3VjaGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2w/LnRvdWNoZWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoV0xDTV9GT1JNX0NPTlRST0wpXG4gICAgcHJpdmF0ZSBwYXJlbnRGb3JtTWVtYmVyOiBXbGNtRm9ybUNvbnRyb2wsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW5wdXRSZWYgJiYgIXRoaXMuY3VzdG9tQ29udGFpbmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IGVsZW1lbnQgc2hvdWxkIGJlIGJvdW5kIHRvIHRoZSB3bGNtSW5wdXQgZGlyZWN0aXZlLicpO1xuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlU3RhdGVDaGFuZ2VzKCk7XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKSB0aGlzLmlucHV0UmVmPy5mb2N1cygpO1xuICB9XG5cbiAgZ2V0IGNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbENvbnRhaW5lcj8uY29udHJvbCB8fCB0aGlzLm5nQ29udHJvbCEuY29udHJvbDtcbiAgfVxuXG4gIGdldCBpbnB1dENvbnRhaW5lcigpOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tQ29udGFpbmVyPy5lbGVtZW50UmVmIHx8ICh0aGlzLmRlZmF1bHRDb250YWluZXIgYXMgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdGF0ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRzOiBPYnNlcnZhYmxlPHVua25vd24+W10gPSB0aGlzLmNvbnRyb2xFdmVudHM7XG5cbiAgICBpZiAodGhpcy5wYXJlbnRGb3JtTWVtYmVyKSB7XG4gICAgICBldmVudHMucHVzaCh0aGlzLnBhcmVudEZvcm1NZW1iZXIuc3RhdGVDaGFuZ2VzJCk7XG4gICAgfVxuXG4gICAgbWVyZ2UoLi4uZXZlbnRzKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaW5wdXRSZWYoKTogV2xjbUZvcm1GaWVsZElucHV0IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRSZWY/LmdldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgY29udHJvbEV2ZW50cygpOiBPYnNlcnZhYmxlPHVua25vd24+W10ge1xuICAgIGNvbnN0IGV2ZW50czogT2JzZXJ2YWJsZTx1bmtub3duPltdID0gW107XG5cbiAgICBpZiAodGhpcy5pbnB1dFJlZikge1xuICAgICAgZXZlbnRzLnB1c2godGhpcy5pbnB1dFJlZi5mb2N1cyQsIHRoaXMuaW5wdXRSZWYuYmx1ciQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgIGV2ZW50cy5wdXNoKHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJ3bGNtLWxhYmVsXCI+PC9uZy1jb250ZW50PlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJbd2xjbUZvcm1GaWVsZEN1c3RvbUNvbnRhaW5lcl1cIj48L25nLWNvbnRlbnQ+XG5cbjxkaXZcbiAgY2xhc3M9XCJ3bGNtLWZpZWxkLWNvbnRhaW5lclwiXG4gIChjbGljayk9XCJmb2N1cygpXCJcbiAgI2RlZmF1bHRDb250YWluZXJcbiAgKm5nSWY9XCIhY3VzdG9tQ29udGFpbmVyXCJcbj5cbiAgPGRpdiBjbGFzcz1cIndsY20tZmllbGQtcHJlZml4XCIgW2NsYXNzLmNvbnRhaW5zLWNoaWxkcmVuXT1cInByZWZpeFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt3bGNtRm9ybUZpZWxkUHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3dsY21JbnB1dF0sIHdsY20tYXV0b2NvbXBsZXRlXCI+PC9uZy1jb250ZW50PlxuXG4gIDxkaXYgY2xhc3M9XCJ3bGNtLWZpZWxkLXN1ZmZpeFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt3bGNtRm9ybUZpZWxkU3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3dsY21Gb3JtRmllbGRIaW50XVwiPjwvbmctY29udGVudD5cblxuPGRpdiBjbGFzcz1cIndsY20tZmllbGQtZXJyb3ItY29udGFpbmVyXCIgKm5nSWY9XCJjb250cm9sXCI+XG4gIDx3bGNtLWVycm9yPnt7ICRhbnkoY29udHJvbCkgfCBlcnJvcnNNYXBwZXIgfX08L3dsY20tZXJyb3I+XG48L2Rpdj5cbiJdfQ==