@period-year-norway/ngx-bootstrap
Version:
1 lines • 301 kB
Source Map (JSON)
{"version":3,"file":"period-year-norway-ngx-bootstrap-datepicker.mjs","sources":["../../../../src/datepicker/bs-datepicker.config.ts","../../../../src/datepicker/datepicker-animations.ts","../../../../src/datepicker/base/bs-datepicker-container.ts","../../../../src/datepicker/reducer/bs-datepicker.actions.ts","../../../../src/datepicker/bs-locale.service.ts","../../../../src/datepicker/reducer/bs-datepicker.effects.ts","../../../../src/datepicker/reducer/_defaults.ts","../../../../src/datepicker/reducer/bs-datepicker.state.ts","../../../../src/datepicker/utils/bs-calendar-utils.ts","../../../../src/datepicker/utils/matrix-utils.ts","../../../../src/datepicker/engine/calc-days-calendar.ts","../../../../src/datepicker/engine/format-days-calendar.ts","../../../../src/datepicker/engine/flag-days-calendar.ts","../../../../src/datepicker/engine/view-mode.ts","../../../../src/datepicker/engine/format-months-calendar.ts","../../../../src/datepicker/engine/flag-months-calendar.ts","../../../../src/datepicker/engine/format-years-calendar.ts","../../../../src/datepicker/engine/flag-years-calendar.ts","../../../../src/datepicker/utils/copy-time-utils.ts","../../../../src/datepicker/reducer/bs-datepicker.reducer.ts","../../../../src/datepicker/reducer/bs-datepicker.store.ts","../../../../src/datepicker/themes/bs/bs-custom-dates-view.component.ts","../../../../src/datepicker/models/index.ts","../../../../src/datepicker/themes/bs/bs-current-date-view.component.ts","../../../../src/datepicker/themes/bs/bs-timepicker-view.component.ts","../../../../src/datepicker/themes/bs/bs-calendar-layout.component.ts","../../../../src/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ts","../../../../src/datepicker/themes/bs/bs-datepicker-navigation-view.component.ts","../../../../src/datepicker/themes/bs/bs-days-calendar-view.component.ts","../../../../src/datepicker/themes/bs/bs-months-calendar-view.component.ts","../../../../src/datepicker/themes/bs/bs-years-calendar-view.component.ts","../../../../src/datepicker/themes/bs/bs-datepicker-container.component.ts","../../../../src/datepicker/themes/bs/bs-datepicker-view.html","../../../../src/datepicker/bs-datepicker.component.ts","../../../../src/datepicker/bs-datepicker-inline.config.ts","../../../../src/datepicker/themes/bs/bs-datepicker-inline-container.component.ts","../../../../src/datepicker/bs-datepicker-inline.component.ts","../../../../src/datepicker/bs-daterangepicker-inline.config.ts","../../../../src/datepicker/themes/bs/bs-daterangepicker-container.component.ts","../../../../src/datepicker/themes/bs/bs-daterangepicker-inline-container.component.ts","../../../../src/datepicker/bs-daterangepicker-inline.component.ts","../../../../src/datepicker/bs-datepicker-input.directive.ts","../../../../src/datepicker/bs-daterangepicker.config.ts","../../../../src/datepicker/bs-daterangepicker.component.ts","../../../../src/datepicker/bs-daterangepicker-input.directive.ts","../../../../src/datepicker/bs-datepicker.module.ts","../../../../src/datepicker/period-year-norway-ngx-bootstrap-datepicker.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport {\r\n DatepickerRenderOptions,\r\n BsDatepickerViewMode,\r\n DatepickerDateCustomClasses,\r\n DatepickerDateTooltipText\r\n} from './models';\r\nimport { BsCustomDates } from './themes/bs/bs-custom-dates-view.component';\r\n\r\n\r\n/**\r\n * For date range picker there are `BsDaterangepickerConfig` which inherits all properties,\r\n * except `displayMonths`, for range picker it default to `2`\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BsDatepickerConfig implements DatepickerRenderOptions {\r\n /** sets use adaptive position */\r\n adaptivePosition = false;\r\n /** sets use UTC date time format */\r\n useUtc = false;\r\n /** turn on/off animation */\r\n isAnimated = false;\r\n value?: Date | Date[];\r\n isDisabled?: boolean;\r\n /**\r\n * Default min date for all date/range pickers\r\n */\r\n minDate?: Date;\r\n /**\r\n * Default max date for all date/range pickers\r\n */\r\n maxDate?: Date;\r\n /**\r\n * The view that the datepicker should start in\r\n */\r\n startView: BsDatepickerViewMode = 'day';\r\n /**\r\n * Default date custom classes for all date/range pickers\r\n */\r\n dateCustomClasses?: DatepickerDateCustomClasses[];\r\n /**\r\n * Default tooltip text for all date/range pickers\r\n */\r\n dateTooltipTexts?: DatepickerDateTooltipText[];\r\n /**\r\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\r\n */\r\n daysDisabled?: number[];\r\n /**\r\n * Disable specific dates\r\n */\r\n datesDisabled?: Date[];\r\n /**\r\n * Show one months for special cases (only for dateRangePicker)\r\n * 1. maxDate is equal to today's date\r\n * 2. minDate's month is equal to maxDate's month\r\n */\r\n displayOneMonthRange?: boolean;\r\n /**\r\n * Enable specific dates\r\n */\r\n datesEnabled?: Date[];\r\n /**\r\n * Makes dates from other months active\r\n */\r\n selectFromOtherMonth?: boolean;\r\n\r\n /**\r\n * Allows select first date of the week by click on week number\r\n */\r\n selectWeek?: boolean;\r\n\r\n /**\r\n * Allows select daterange as first and last day of week by click on week number (dateRangePicker only)\r\n */\r\n selectWeekDateRange?: boolean;\r\n\r\n /**\r\n * Shows previous and current month, instead of current and next (dateRangePicker only)\r\n */\r\n showPreviousMonth?: boolean;\r\n\r\n /**\r\n * Prevents change to next month for right calendar in two calendars view (dateRangePicker only)\r\n */\r\n preventChangeToNextMonth?: boolean;\r\n\r\n /**\r\n * Add class to current day\r\n */\r\n customTodayClass?: string;\r\n\r\n /**\r\n * Default mode for all date pickers\r\n */\r\n minMode?: BsDatepickerViewMode;\r\n\r\n /**\r\n * If true, returns focus to the datepicker / daterangepicker input after date selection\r\n */\r\n returnFocusToInput = false;\r\n\r\n /** CSS class which will be applied to datepicker container,\r\n * usually used to set color theme\r\n */\r\n containerClass = 'theme-green';\r\n\r\n // DatepickerRenderOptions\r\n displayMonths = 1;\r\n /**\r\n * Allows to hide week numbers in datepicker\r\n */\r\n showWeekNumbers = true;\r\n\r\n dateInputFormat = 'L';\r\n // range picker\r\n rangeSeparator = ' - ';\r\n /**\r\n * Date format for date range input field\r\n */\r\n rangeInputFormat = 'L';\r\n\r\n /**\r\n * Predefined ranges\r\n */\r\n ranges?: BsCustomDates[];\r\n\r\n /**\r\n * Max Date Range in days\r\n */\r\n maxDateRange?: number;\r\n\r\n // DatepickerFormatOptions\r\n monthTitle = 'MMMM';\r\n yearTitle = 'YYYY';\r\n dayLabel = 'D';\r\n monthLabel = 'MMMM';\r\n yearLabel = 'YYYY';\r\n weekNumbers = 'w';\r\n\r\n /**\r\n * Shows 'today' button\r\n */\r\n showTodayButton = false;\r\n\r\n /**\r\n * Shows clear button\r\n */\r\n showClearButton = false;\r\n\r\n /**\r\n * Positioning of 'today' button\r\n */\r\n todayPosition = 'center';\r\n\r\n /**\r\n * Positioning of 'clear' button\r\n */\r\n clearPosition = 'right';\r\n\r\n /**\r\n * Label for 'today' button\r\n */\r\n todayButtonLabel = 'Today';\r\n\r\n /**\r\n * Label for 'clear' button\r\n */\r\n clearButtonLabel = 'Clear';\r\n\r\n /**\r\n * Label for 'custom range' button\r\n */\r\n customRangeButtonLabel = 'Custom Range';\r\n\r\n /**\r\n * Shows timepicker under datepicker\r\n */\r\n withTimepicker = false;\r\n /**\r\n * Set current hours, minutes, seconds and milliseconds for bsValue\r\n */\r\n initCurrentTime?: boolean;\r\n /**\r\n * Set allowed positions of container.\r\n */\r\n allowedPositions = ['top', 'bottom'];\r\n}\r\n","import {\r\n animate,\r\n style,\r\n AnimationTriggerMetadata,\r\n state,\r\n transition,\r\n trigger\r\n} from '@angular/animations';\r\n\r\nexport const DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\r\n\r\nexport const datepickerAnimation: AnimationTriggerMetadata =\r\n trigger('datepickerAnimation', [\r\n state('animated-down', style({ height: '*', overflow: 'hidden'})),\r\n transition('* => animated-down', [\r\n style({ height: 0, overflow: 'hidden' }),\r\n animate(DATEPICKER_ANIMATION_TIMING)\r\n ]),\r\n state('animated-up', style({ height: '*', overflow: 'hidden'})),\r\n transition('* => animated-up', [\r\n style({ height: '*', overflow: 'hidden' }),\r\n animate(DATEPICKER_ANIMATION_TIMING)\r\n ]),\r\n transition('* => unanimated', animate('0s'))\r\n ]);\r\n","// datepicker container component\r\nimport { BsCustomDates } from '../themes/bs/bs-custom-dates-view.component';\r\nimport { BsDatepickerEffects } from '../reducer/bs-datepicker.effects';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport {\r\n BsDatepickerViewMode,\r\n BsNavigationEvent,\r\n CalendarCellViewModel,\r\n CellHoverEvent,\r\n DatepickerRenderOptions,\r\n DatepickerDateCustomClasses,\r\n DatepickerDateTooltipText,\r\n DaysCalendarViewModel,\r\n DayViewModel,\r\n MonthsCalendarViewModel,\r\n WeekViewModel,\r\n YearsCalendarViewModel\r\n} from '../models';\r\n\r\nexport abstract class BsDatepickerAbstractComponent {\r\n containerClass = '';\r\n isOtherMonthsActive?: boolean;\r\n showTodayBtn?: boolean;\r\n todayBtnLbl?: string;\r\n todayPos?: string;\r\n showClearBtn?: boolean;\r\n clearBtnLbl?: string;\r\n clearPos?: string;\r\n\r\n _effects?: BsDatepickerEffects;\r\n customRanges: BsCustomDates[] = [];\r\n customRangeBtnLbl?: string;\r\n chosenRange: Date[] = [];\r\n\r\n multipleCalendars?: boolean;\r\n\r\n isRangePicker?: boolean;\r\n withTimepicker?: boolean;\r\n\r\n set minDate(value: Date|undefined) {\r\n this._effects?.setMinDate(value);\r\n }\r\n\r\n set maxDate(value: Date|undefined) {\r\n this._effects?.setMaxDate(value);\r\n }\r\n set daysDisabled(value: number[]|undefined) {\r\n this._effects?.setDaysDisabled(value);\r\n }\r\n set datesDisabled(value: Date[]|undefined) {\r\n this._effects?.setDatesDisabled(value);\r\n }\r\n\r\n set datesEnabled(value: Date[]|undefined) {\r\n this._effects?.setDatesEnabled(value);\r\n }\r\n\r\n set isDisabled(value: boolean|undefined) {\r\n this._effects?.setDisabled(value);\r\n }\r\n\r\n set dateCustomClasses(value: DatepickerDateCustomClasses[]|undefined) {\r\n this._effects?.setDateCustomClasses(value);\r\n }\r\n\r\n set dateTooltipTexts(value: DatepickerDateTooltipText[]|undefined) {\r\n this._effects?.setDateTooltipTexts(value);\r\n }\r\n\r\n viewMode?: Observable<BsDatepickerViewMode|undefined>;\r\n monthsCalendar?: Observable<MonthsCalendarViewModel[]|undefined>;\r\n yearsCalendar?: Observable<YearsCalendarViewModel[]|undefined>;\r\n options$!: Observable<DatepickerRenderOptions|undefined>;\r\n\r\n _daysCalendar$!: Observable<DaysCalendarViewModel[]|undefined>;\r\n _daysCalendarSub = new Subscription();\r\n\r\n set daysCalendar$(value: Observable<DaysCalendarViewModel[]|undefined>) {\r\n this._daysCalendar$ = value;\r\n this._daysCalendarSub.unsubscribe();\r\n this._daysCalendarSub.add(this._daysCalendar$.subscribe(value => {\r\n this.multipleCalendars = !!value && value.length > 1;\r\n }));\r\n }\r\n\r\n get daysCalendar$(): Observable<DaysCalendarViewModel[]|undefined> {\r\n return this._daysCalendar$;\r\n }\r\n\r\n selectedTime?: Observable<Date[]|undefined>;\r\n selectedTimeSub = new Subscription();\r\n\r\n // todo: valorkin fix\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function\r\n setViewMode(event: BsDatepickerViewMode): void {}\r\n\r\n // eslint-disable-next-line\r\n navigateTo(event: BsNavigationEvent): void {}\r\n\r\n // eslint-disable-next-line\r\n dayHoverHandler(event: CellHoverEvent): void {}\r\n\r\n // eslint-disable-next-line\r\n weekHoverHandler(event: WeekViewModel): void {}\r\n\r\n // eslint-disable-next-line\r\n monthHoverHandler(event: CellHoverEvent): void {}\r\n\r\n // eslint-disable-next-line\r\n yearHoverHandler(event: CellHoverEvent): void {}\r\n\r\n // eslint-disable-next-line\r\n timeSelectHandler(date: Date, index: number): void {}\r\n\r\n // eslint-disable-next-line\r\n daySelectHandler(day: DayViewModel): void {}\r\n\r\n // eslint-disable-next-line\r\n monthSelectHandler(event: CalendarCellViewModel): void {}\r\n\r\n // eslint-disable-next-line\r\n yearSelectHandler(event: CalendarCellViewModel): void {}\r\n\r\n // eslint-disable-next-line\r\n setRangeOnCalendar(dates: BsCustomDates): void {}\r\n\r\n // eslint-disable-next-line\r\n setToday(): void {}\r\n\r\n // eslint-disable-next-line\r\n clearDate(): void {}\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n _stopPropagation(event: any): void {\r\n event.stopPropagation();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TimeUnit } from '@period-year-norway/ngx-bootstrap/chronos';\r\nimport { Action } from '@period-year-norway/ngx-bootstrap/mini-ngrx';\r\nimport {\r\n BsDatepickerViewMode,\r\n BsViewNavigationEvent,\r\n CellHoverEvent,\r\n DatepickerRenderOptions,\r\n DatepickerDateCustomClasses,\r\n DatepickerDateTooltipText\r\n} from '../models';\r\n\r\n@Injectable({providedIn: 'platform'})\r\nexport class BsDatepickerActions {\r\n static readonly CALCULATE = '[datepicker] calculate dates matrix';\r\n static readonly FORMAT = '[datepicker] format datepicker values';\r\n static readonly FLAG = '[datepicker] set flags';\r\n static readonly SELECT = '[datepicker] select date';\r\n static readonly NAVIGATE_OFFSET = '[datepicker] shift view date';\r\n static readonly NAVIGATE_TO = '[datepicker] change view date';\r\n static readonly SET_OPTIONS = '[datepicker] update render options';\r\n static readonly HOVER = '[datepicker] hover date';\r\n static readonly CHANGE_VIEWMODE = '[datepicker] switch view mode';\r\n\r\n static readonly SET_MIN_DATE = '[datepicker] set min date';\r\n static readonly SET_MAX_DATE = '[datepicker] set max date';\r\n static readonly SET_DAYSDISABLED = '[datepicker] set days disabled';\r\n static readonly SET_DATESDISABLED = '[datepicker] set dates disabled';\r\n static readonly SET_DATESENABLED = '[datepicker] set dates enabled';\r\n static readonly SET_IS_DISABLED = '[datepicker] set is disabled';\r\n static readonly SET_DATE_CUSTOM_CLASSES = '[datepicker] set date custom classes';\r\n static readonly SET_DATE_TOOLTIP_TEXTS = '[datepicker] set date tooltip texts';\r\n static readonly SET_LOCALE = '[datepicker] set datepicker locale';\r\n static readonly SELECT_TIME = '[datepicker] select time';\r\n\r\n static readonly SELECT_RANGE = '[daterangepicker] select dates range';\r\n\r\n calculate(): Action {\r\n return { type: BsDatepickerActions.CALCULATE };\r\n }\r\n\r\n format(): Action {\r\n return { type: BsDatepickerActions.FORMAT };\r\n }\r\n\r\n flag(): Action {\r\n return { type: BsDatepickerActions.FLAG };\r\n }\r\n\r\n select(date?: Date): Action {\r\n return {\r\n type: BsDatepickerActions.SELECT,\r\n payload: date\r\n };\r\n }\r\n\r\n selectTime(date: Date, index: number): Action {\r\n return {\r\n type: BsDatepickerActions.SELECT_TIME,\r\n payload: { date, index },\r\n };\r\n }\r\n\r\n changeViewMode(event: BsDatepickerViewMode): Action {\r\n return {\r\n type: BsDatepickerActions.CHANGE_VIEWMODE,\r\n payload: event\r\n };\r\n }\r\n\r\n navigateTo(event: BsViewNavigationEvent): Action {\r\n return {\r\n type: BsDatepickerActions.NAVIGATE_TO,\r\n payload: event\r\n };\r\n }\r\n\r\n navigateStep(step?: TimeUnit): Action {\r\n return {\r\n type: BsDatepickerActions.NAVIGATE_OFFSET,\r\n payload: step\r\n };\r\n }\r\n\r\n setOptions(options: DatepickerRenderOptions): Action {\r\n return {\r\n type: BsDatepickerActions.SET_OPTIONS,\r\n payload: options\r\n };\r\n }\r\n\r\n // date range picker\r\n selectRange(value?: (Date|undefined)[] | undefined): Action {\r\n return {\r\n type: BsDatepickerActions.SELECT_RANGE,\r\n payload: value\r\n };\r\n }\r\n\r\n hoverDay(event: CellHoverEvent): Action {\r\n return {\r\n type: BsDatepickerActions.HOVER,\r\n payload: event.isHovered ? event.cell.date : null\r\n };\r\n }\r\n\r\n minDate(date?: Date): Action {\r\n return {\r\n type: BsDatepickerActions.SET_MIN_DATE,\r\n payload: date\r\n };\r\n }\r\n\r\n maxDate(date?: Date): Action {\r\n return {\r\n type: BsDatepickerActions.SET_MAX_DATE,\r\n payload: date\r\n };\r\n }\r\n\r\n daysDisabled(days?: number[]): Action {\r\n return {\r\n type: BsDatepickerActions.SET_DAYSDISABLED,\r\n payload: days\r\n };\r\n }\r\n\r\n datesDisabled(dates?: Date[]): Action {\r\n return {\r\n type: BsDatepickerActions.SET_DATESDISABLED,\r\n payload: dates\r\n };\r\n }\r\n\r\n datesEnabled(dates?: Date[]): Action {\r\n return {\r\n type: BsDatepickerActions.SET_DATESENABLED,\r\n payload: dates\r\n };\r\n }\r\n\r\n isDisabled(value?: boolean): Action {\r\n return {\r\n type: BsDatepickerActions.SET_IS_DISABLED,\r\n payload: value\r\n };\r\n }\r\n\r\n setDateCustomClasses(value?: DatepickerDateCustomClasses[]): Action {\r\n return {\r\n type: BsDatepickerActions.SET_DATE_CUSTOM_CLASSES,\r\n payload: value\r\n };\r\n }\r\n\r\n setDateTooltipTexts(value?: DatepickerDateTooltipText[]): Action {\r\n return {\r\n type: BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS,\r\n payload: value\r\n };\r\n }\r\n\r\n setLocale(locale: string): Action {\r\n return {\r\n type: BsDatepickerActions.SET_LOCALE,\r\n payload: locale\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({providedIn: 'platform'})\r\nexport class BsLocaleService {\r\n private _defaultLocale = 'en';\r\n private _locale = new BehaviorSubject<string>(this._defaultLocale);\r\n private _localeChange: Observable<string> = this._locale.asObservable();\r\n\r\n get locale(): BehaviorSubject<string> {\r\n return this._locale;\r\n }\r\n\r\n get localeChange(): Observable<string> {\r\n return this._localeChange;\r\n }\r\n\r\n get currentLocale(): string {\r\n return this._locale.getValue();\r\n }\r\n\r\n use(locale: string): void {\r\n if (locale === this.currentLocale) {\r\n return;\r\n }\r\n\r\n this._locale.next(locale);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { combineLatest, Observable, Subscription } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\n\r\nimport { BsDatepickerAbstractComponent } from '../base/bs-datepicker-container';\r\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\r\nimport { BsLocaleService } from '../bs-locale.service';\r\n\r\nimport {\r\n BsDatepickerViewMode,\r\n BsNavigationEvent,\r\n CellHoverEvent,\r\n DatepickerDateCustomClasses,\r\n DatepickerDateTooltipText,\r\n DatepickerRenderOptions,\r\n DaysCalendarViewModel,\r\n DayViewModel,\r\n MonthsCalendarViewModel,\r\n YearsCalendarViewModel\r\n} from '../models';\r\nimport { BsDatepickerActions } from './bs-datepicker.actions';\r\nimport { BsDatepickerStore } from './bs-datepicker.store';\r\n\r\n\r\n@Injectable({providedIn: 'platform'})\r\nexport class BsDatepickerEffects {\r\n viewMode?: Observable<BsDatepickerViewMode>;\r\n daysCalendar?: Observable<DaysCalendarViewModel[]>;\r\n monthsCalendar?: Observable<MonthsCalendarViewModel[]>;\r\n yearsCalendar?: Observable<YearsCalendarViewModel[]>;\r\n options?: Observable<DatepickerRenderOptions>;\r\n\r\n private _store?: BsDatepickerStore;\r\n private _subs: Subscription[] = [];\r\n\r\n constructor(private _actions: BsDatepickerActions,\r\n private _localeService: BsLocaleService) {\r\n }\r\n\r\n init(_bsDatepickerStore: BsDatepickerStore): BsDatepickerEffects {\r\n this._store = _bsDatepickerStore;\r\n\r\n return this;\r\n }\r\n\r\n /** setters */\r\n\r\n setValue(value?: Date): void {\r\n this._store?.dispatch(this._actions.select(value));\r\n }\r\n\r\n setRangeValue(value?: (Date|undefined)[] | undefined): void {\r\n this._store?.dispatch(this._actions.selectRange(value));\r\n }\r\n\r\n setMinDate(value?: Date): BsDatepickerEffects {\r\n this._store?.dispatch(this._actions.minDate(value));\r\n\r\n return this;\r\n }\r\n\r\n setMaxDate(value?: Date): BsDatepickerEffects {\r\n this._store?.dispatch(this._actions.maxDate(value));\r\n\r\n return this;\r\n }\r\n\r\n setDaysDisabled(value?: number[]): BsDatepickerEffects {\r\n this._store?.dispatch(this._actions.daysDisabled(value));\r\n\r\n return this;\r\n }\r\n\r\n setDatesDisabled(value?: Date[]): BsDatepickerEffects {\r\n this._store?.dispatch(this._actions.datesDisabled(value));\r\n\r\n return this;\r\n }\r\n\r\n setDatesEnabled(value?: Date[]): BsDatepickerEffects {\r\n this._store?.dispatch(this._actions.datesEnabled(value));\r\n\r\n return this;\r\n }\r\n\r\n setDisabled(value?: boolean): BsDatepickerEffects {\r\n this._store?.dispatch(this._actions.isDisabled(value));\r\n\r\n return this;\r\n }\r\n\r\n setDateCustomClasses(value?: DatepickerDateCustomClasses[]): BsDatepickerEffects {\r\n this._store?.dispatch(this._actions.setDateCustomClasses(value));\r\n\r\n return this;\r\n }\r\n\r\n setDateTooltipTexts(value?: DatepickerDateTooltipText[]): BsDatepickerEffects {\r\n this._store?.dispatch(this._actions.setDateTooltipTexts(value));\r\n\r\n return this;\r\n }\r\n\r\n /* Set rendering options */\r\n setOptions(_config: BsDatepickerConfig): BsDatepickerEffects {\r\n const _options = Object.assign({ locale: this._localeService.currentLocale }, _config);\r\n this._store?.dispatch(this._actions.setOptions(_options));\r\n\r\n return this;\r\n }\r\n\r\n /** view to mode bindings */\r\n setBindings(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\r\n if (!this._store) {\r\n return this;\r\n }\r\n\r\n container.selectedTime = this._store.select(state => state.selectedTime)\r\n .pipe(filter(times => !!times));\r\n\r\n container.daysCalendar$ = this._store.select(state => state.flaggedMonths)\r\n .pipe(filter(months => !!months));\r\n\r\n // month calendar\r\n container.monthsCalendar = this._store.select(state => state.flaggedMonthsCalendar)\r\n .pipe(filter(months => !!months));\r\n\r\n // year calendar\r\n container.yearsCalendar = this._store.select(state => state.yearsCalendarFlagged)\r\n .pipe(filter(years => !!years));\r\n\r\n container.viewMode = this._store.select(state => state.view?.mode);\r\n\r\n container.options$ = combineLatest([\r\n this._store.select(state => state.showWeekNumbers),\r\n this._store.select(state => state.displayMonths)\r\n ])\r\n .pipe(map((latest) => ({\r\n showWeekNumbers: latest[0],\r\n displayMonths: latest[1]\r\n })\r\n ));\r\n\r\n return this;\r\n }\r\n\r\n /** event handlers */\r\n setEventHandlers(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\r\n container.setViewMode = (event: BsDatepickerViewMode): void => {\r\n this._store?.dispatch(this._actions.changeViewMode(event));\r\n };\r\n\r\n container.navigateTo = (event: BsNavigationEvent): void => {\r\n this._store?.dispatch(this._actions.navigateStep(event.step));\r\n };\r\n\r\n container.dayHoverHandler = (event: CellHoverEvent): void => {\r\n const _cell = event.cell as DayViewModel;\r\n if (_cell.isOtherMonth || _cell.isDisabled) {\r\n return;\r\n }\r\n\r\n this._store?.dispatch(this._actions.hoverDay(event));\r\n _cell.isHovered = event.isHovered;\r\n };\r\n\r\n container.monthHoverHandler = (event: CellHoverEvent): void => {\r\n event.cell.isHovered = event.isHovered;\r\n };\r\n\r\n container.yearHoverHandler = (event: CellHoverEvent): void => {\r\n event.cell.isHovered = event.isHovered;\r\n };\r\n\r\n return this;\r\n }\r\n\r\n registerDatepickerSideEffects(): BsDatepickerEffects {\r\n if (!this._store) {\r\n return this;\r\n }\r\n\r\n this._subs.push(\r\n this._store.select(state => state.view).subscribe(() => {\r\n this._store?.dispatch(this._actions.calculate());\r\n })\r\n );\r\n\r\n // format calendar values on month model change\r\n this._subs.push(\r\n this._store\r\n .select(state => state.monthsModel)\r\n .pipe(\r\n filter(monthModel => !!monthModel)\r\n )\r\n .subscribe(() => this._store?.dispatch(this._actions.format()))\r\n );\r\n\r\n // flag day values\r\n this._subs.push(\r\n this._store\r\n .select(state => state.formattedMonths)\r\n .pipe(\r\n filter(month => !!month)\r\n )\r\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\r\n );\r\n\r\n // flag day values\r\n this._subs.push(\r\n this._store\r\n .select(state => state.selectedDate)\r\n .pipe(\r\n filter(selectedDate => !!selectedDate)\r\n )\r\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\r\n );\r\n\r\n // flag for date range picker\r\n this._subs.push(\r\n this._store\r\n .select(state => state.selectedRange)\r\n .pipe(\r\n filter(selectedRange => !!selectedRange)\r\n )\r\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\r\n );\r\n\r\n // monthsCalendar\r\n this._subs.push(\r\n this._store\r\n .select(state => state.monthsCalendar)\r\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\r\n );\r\n\r\n // years calendar\r\n this._subs.push(\r\n this._store\r\n .select(state => state.yearsCalendarModel)\r\n .pipe(\r\n filter(state => !!state)\r\n )\r\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\r\n );\r\n\r\n // on hover\r\n this._subs.push(\r\n this._store\r\n .select(state => state.hoveredDate)\r\n .pipe(\r\n filter(hoveredDate => !!hoveredDate)\r\n )\r\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\r\n );\r\n\r\n // date custom classes\r\n this._subs.push(\r\n this._store\r\n .select(state => state.dateCustomClasses)\r\n .pipe(\r\n filter(dateCustomClasses => !!dateCustomClasses)\r\n )\r\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\r\n );\r\n\r\n // date tooltip texts\r\n this._subs.push(\r\n this._store\r\n .select(state => state.dateTooltipTexts)\r\n .pipe(\r\n filter(dateTooltipTexts => !!dateTooltipTexts)\r\n )\r\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\r\n );\r\n\r\n // on locale change\r\n this._subs.push(\r\n this._localeService.localeChange\r\n .subscribe(locale => this._store?.dispatch(this._actions.setLocale(locale)))\r\n );\r\n\r\n return this;\r\n }\r\n\r\n destroy(): void {\r\n for (const sub of this._subs) {\r\n sub.unsubscribe();\r\n }\r\n }\r\n}\r\n","import {\r\n MonthViewOptions\r\n} from '../models';\r\n\r\nexport const defaultMonthOptions: MonthViewOptions = {\r\n width: 7,\r\n height: 6\r\n};\r\n\r\nexport const dayInMilliseconds = 24 * 60 * 60 * 1000;\r\n","import {\r\n BsDatepickerViewMode,\r\n DatepickerFormatOptions,\r\n DatepickerRenderOptions,\r\n DatepickerDateCustomClasses,\r\n DatepickerDateTooltipText,\r\n DaysCalendarModel,\r\n DaysCalendarViewModel,\r\n MonthsCalendarViewModel,\r\n MonthViewOptions,\r\n YearsCalendarViewModel\r\n} from '../models';\r\nimport { defaultMonthOptions } from './_defaults';\r\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\r\n\r\nexport interface BsDatepickerViewState {\r\n date: Date;\r\n mode: BsDatepickerViewMode;\r\n}\r\n\r\nexport class BsDatepickerState\r\n implements DatepickerRenderOptions, DatepickerFormatOptions {\r\n // date picker\r\n selectedDate?: Date;\r\n // daterange picker\r\n selectedRange?: Date[];\r\n // time picker\r\n selectedTime?: Date[];\r\n\r\n // initial date of calendar, today by default\r\n view?: BsDatepickerViewState;\r\n\r\n isDisabled?: boolean;\r\n // bounds\r\n minDate?: Date;\r\n maxDate?: Date;\r\n daysDisabled?: number[];\r\n datesDisabled?: Date[];\r\n datesEnabled?: Date[];\r\n minMode?: BsDatepickerViewMode;\r\n dateCustomClasses?: DatepickerDateCustomClasses[];\r\n dateTooltipTexts?: DatepickerDateTooltipText[];\r\n\r\n hoveredDate?: Date;\r\n hoveredMonth?: Date;\r\n hoveredYear?: Date;\r\n\r\n // days calendar\r\n monthsModel?: DaysCalendarModel[];\r\n formattedMonths?: DaysCalendarViewModel[];\r\n flaggedMonths?: DaysCalendarViewModel[];\r\n selectFromOtherMonth?: boolean;\r\n showPreviousMonth?: boolean; // dateRangePicker only;\r\n preventChangeToNextMonth?: boolean; // dateRangePicker only;\r\n displayOneMonthRange?: boolean; // dateRangePicker only;\r\n\r\n // months calendar\r\n monthsCalendar?: MonthsCalendarViewModel[];\r\n flaggedMonthsCalendar?: MonthsCalendarViewModel[];\r\n\r\n // years calendar\r\n yearsCalendarModel?: YearsCalendarViewModel[];\r\n yearsCalendarFlagged?: YearsCalendarViewModel[];\r\n\r\n // options\r\n monthViewOptions?: MonthViewOptions;\r\n\r\n // DatepickerRenderOptions\r\n showWeekNumbers = true;\r\n displayMonths = 1;\r\n\r\n // DatepickerFormatOptions\r\n locale?: string;\r\n\r\n monthTitle?: string;\r\n yearTitle?: string;\r\n\r\n dayLabel?: string;\r\n monthLabel?: string;\r\n yearLabel?: string;\r\n\r\n weekNumbers?: string;\r\n}\r\n\r\nconst _initialView: BsDatepickerViewState = { date: new Date(), mode: 'day' };\r\n\r\nexport const initialDatepickerState: BsDatepickerState = Object.assign(\r\n new BsDatepickerConfig(),\r\n {\r\n locale: 'en',\r\n view: _initialView,\r\n selectedRange: [],\r\n selectedTime: [],\r\n monthViewOptions: defaultMonthOptions\r\n }\r\n);\r\n","import {\r\n getDay,\r\n isFirstDayOfWeek,\r\n isAfter,\r\n isBefore,\r\n shiftDate,\r\n endOf,\r\n startOf,\r\n isArray,\r\n isSame\r\n} from '@period-year-norway/ngx-bootstrap/chronos';\r\nimport { BsDatepickerState } from '../reducer/bs-datepicker.state';\r\nimport { BsCustomDates } from '../themes/bs/bs-custom-dates-view.component';\r\n\r\nexport function getStartingDayOfCalendar(date: Date,\r\n options: { firstDayOfWeek?: number }): Date {\r\n if (isFirstDayOfWeek(date, options.firstDayOfWeek)) {\r\n return date;\r\n }\r\n\r\n const weekDay = getDay(date);\r\n const offset = calculateDateOffset(weekDay, options.firstDayOfWeek);\r\n\r\n return shiftDate(date, {day: -offset});\r\n}\r\n\r\nexport function calculateDateOffset(weekday: number, startingDayOffset?: number): number {\r\n const _startingDayOffset = Number(startingDayOffset);\r\n if (isNaN(_startingDayOffset)) {\r\n return 0;\r\n }\r\n\r\n if (_startingDayOffset === 0) {\r\n return weekday;\r\n }\r\n\r\n const offset = weekday - _startingDayOffset % 7;\r\n\r\n return offset < 0 ? offset + 7 : offset;\r\n}\r\n\r\nexport function isMonthDisabled(date: Date, min?: Date, max?: Date): boolean {\r\n const minBound = min && isBefore(endOf(date, 'month'), min, 'day');\r\n const maxBound = max && isAfter(startOf(date, 'month'), max, 'day');\r\n\r\n return minBound || maxBound || false;\r\n}\r\n\r\nexport function isYearDisabled(date: Date, min?: Date, max?: Date): boolean {\r\n const minBound = min && isBefore(endOf(date, 'year'), min, 'day');\r\n const maxBound = max && isAfter(startOf(date, 'year'), max, 'day');\r\n\r\n return minBound || maxBound || false;\r\n}\r\n\r\nexport function isDisabledDate(date?: Date, datesDisabled?: Date[], unit?: 'year' | 'date' | 'month'): boolean {\r\n if (!datesDisabled || !isArray(datesDisabled) || !datesDisabled.length) {\r\n return false;\r\n }\r\n\r\n if (unit && unit === 'year' && !datesDisabled[0].getDate()) {\r\n return datesDisabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'year'));\r\n }\r\n\r\n return datesDisabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'date'));\r\n}\r\n\r\nexport function isEnabledDate(date?: Date, datesEnabled?: Date[], unit?: 'year' | 'date' | 'month'): boolean {\r\n if (!datesEnabled || !isArray(datesEnabled) || !datesEnabled.length) {\r\n return false;\r\n }\r\n\r\n return !datesEnabled.some((enabledDate: Date) => isSame(date, enabledDate, unit || 'date'));\r\n}\r\n\r\nexport function getYearsCalendarInitialDate(state: BsDatepickerState, calendarIndex = 0): Date | undefined {\r\n const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\r\n\r\n return model?.years[0] && model.years[0][0] && model.years[0][0].date;\r\n}\r\n\r\nexport function checkRangesWithMaxDate(ranges?: BsCustomDates[], maxDate?: Date): BsCustomDates[] | undefined {\r\n if (!ranges) return ranges;\r\n if (!maxDate) return ranges;\r\n if (!ranges.length && !ranges[0].value) return ranges;\r\n\r\n ranges.forEach((item: BsCustomDates) => {\r\n if (!item || !item.value) return ranges;\r\n if (item.value instanceof Date) return ranges;\r\n if (!(item.value instanceof Array && item.value.length) ) return ranges;\r\n item.value = compareDateWithMaxDateHelper(item.value, maxDate);\r\n return ranges;\r\n });\r\n return ranges;\r\n}\r\n\r\nexport function checkBsValue(date?: Array<Date> | Date | (Date | undefined)[], maxDate?: Date): Array<Date> | Date | (Date|undefined)[] | undefined {\r\n if (!date) return date;\r\n if (!maxDate) return date;\r\n if (date instanceof Array && !date.length) return date;\r\n if (date instanceof Date) return date;\r\n return compareDateWithMaxDateHelper(date, maxDate);\r\n}\r\n\r\nfunction compareDateWithMaxDateHelper <T>(date: T, maxDate: Date): T | Date[] {\r\n if (date instanceof Array) {\r\n const editedValues = date.map(item => {\r\n if (!item) return item;\r\n if (isAfter(item, maxDate, 'date')) item = maxDate;\r\n return item;\r\n });\r\n return editedValues;\r\n }\r\n return date;\r\n}\r\n\r\nexport function setCurrentTimeOnDateSelect(value?: Date): Date | undefined {\r\n if (!value) return value;\r\n\r\n return setCurrentTimeHelper(value);\r\n}\r\n\r\nexport function setDateRangesCurrentTimeOnDateSelect(value?: (Date|undefined)[]): (Date|undefined)[] | undefined {\r\n if (!value?.length) return value;\r\n\r\n value.map((date) => {\r\n if (!date) {\r\n return date;\r\n }\r\n return setCurrentTimeHelper(date);\r\n });\r\n\r\n return value;\r\n}\r\n\r\nfunction setCurrentTimeHelper(date: Date): Date {\r\n const now = new Date();\r\n date.setMilliseconds(now.getMilliseconds());\r\n date.setSeconds(now.getSeconds());\r\n date.setMinutes(now.getMinutes());\r\n date.setHours(now.getHours());\r\n return date;\r\n}\r\n","import { TimeUnit, shiftDate } from '@period-year-norway/ngx-bootstrap/chronos';\r\n\r\nexport type CreateMatrixCb<T> = (date: Date) => T;\r\n\r\nexport interface MatrixOptions {\r\n height: number;\r\n width: number;\r\n initialDate: Date;\r\n shift: TimeUnit;\r\n}\r\n\r\nexport function createMatrix<T>(\r\n options: MatrixOptions,\r\n fn: CreateMatrixCb<T>\r\n): T[][] {\r\n let prevValue = options.initialDate;\r\n const matrix: T[][] = new Array(options.height);\r\n for (let i = 0; i < options.height; i++) {\r\n matrix[i] = new Array(options.width);\r\n for (let j = 0; j < options.width; j++) {\r\n matrix[i][j] = fn(prevValue);\r\n prevValue = shiftDate(prevValue, options.shift);\r\n }\r\n }\r\n\r\n return matrix;\r\n}\r\n","// user and model input should handle parsing and validating input values\r\nimport { getFirstDayOfMonth } from '@period-year-norway/ngx-bootstrap/chronos';\r\n// should accept some options\r\n// todo: split out formatting\r\nimport { DaysCalendarModel, MonthViewOptions } from '../models';\r\nimport { getStartingDayOfCalendar } from '../utils/bs-calendar-utils';\r\nimport { createMatrix, MatrixOptions } from '../utils/matrix-utils';\r\n\r\nexport function calcDaysCalendar(\r\n startingDate: Date,\r\n options: MonthViewOptions\r\n): DaysCalendarModel {\r\n const firstDay = getFirstDayOfMonth(startingDate);\r\n const initialDate = getStartingDayOfCalendar(firstDay, options);\r\n\r\n // todo test\r\n const matrixOptions: MatrixOptions = {\r\n width: options.width || 0,\r\n height: options.height || 0,\r\n initialDate,\r\n shift: { day: 1 }\r\n };\r\n const daysMatrix = createMatrix<Date>(matrixOptions, date => date);\r\n\r\n return {\r\n daysMatrix,\r\n month: firstDay\r\n };\r\n}\r\n","import {\r\n DatepickerFormatOptions,\r\n DaysCalendarModel,\r\n DaysCalendarViewModel\r\n} from '../models';\r\nimport { formatDate, getLocale } from '@period-year-norway/ngx-bootstrap/chronos';\r\n\r\nexport function formatDaysCalendar(daysCalendar: DaysCalendarModel,\r\n formatOptions: DatepickerFormatOptions,\r\n monthIndex: number): DaysCalendarViewModel {\r\n return {\r\n month: daysCalendar.month,\r\n monthTitle: formatDate(\r\n daysCalendar.month,\r\n formatOptions.monthTitle,\r\n formatOptions.locale\r\n ),\r\n yearTitle: formatDate(\r\n daysCalendar.month,\r\n formatOptions.yearTitle,\r\n formatOptions.locale\r\n ),\r\n weekNumbers: getWeekNumbers(\r\n daysCalendar.daysMatrix,\r\n formatOptions.weekNumbers,\r\n formatOptions.locale\r\n ),\r\n weekdays: getShiftedWeekdays(formatOptions.locale),\r\n weeks: daysCalendar.daysMatrix.map((week: Date[], weekIndex: number) => ({\r\n days: week.map((date: Date, dayIndex: number) => ({\r\n date,\r\n label: formatDate(date, formatOptions.dayLabel, formatOptions.locale),\r\n monthIndex,\r\n weekIndex,\r\n dayIndex\r\n }))\r\n })),\r\n hideLeftArrow: false,\r\n hideRightArrow: false,\r\n disableLeftArrow: false,\r\n disableRightArrow: false\r\n };\r\n}\r\n\r\nexport function getWeekNumbers(daysMatrix: Date[][],\r\n format?: string,\r\n locale?: string): string[] {\r\n return daysMatrix.map(\r\n (days: Date[]) => (days[0] ? formatDate(days[0], format, locale) : '')\r\n );\r\n}\r\n\r\nexport function getShiftedWeekdays(locale?: string): string[] {\r\n const _locale = getLocale(locale);\r\n const weekdays = _locale.weekdaysShort() as string[];\r\n const firstDayOfWeek = _locale.firstDayOfWeek();\r\n\r\n return [...weekdays.slice(firstDayOfWeek), ...weekdays.slice(0, firstDayOfWeek)];\r\n}\r\n","import {\r\n DaysCalendarViewModel,\r\n DayViewModel,\r\n WeekViewModel,\r\n DatepickerDateCustomClasses,\r\n DatepickerDateTooltipText\r\n} from '../models';\r\n\r\nimport {\r\n isAfter,\r\n isBefore,\r\n isDisabledDay,\r\n isSameDay,\r\n isSameMonth,\r\n shiftDate\r\n} from '@period-year-norway/ngx-bootstrap/chronos';\r\n\r\nimport { isMonthDisabled, isDisabledDate, isEnabledDate } from '../utils/bs-calendar-utils';\r\n\r\nexport interface FlagDaysCalendarOptions {\r\n isDisabled: boolean;\r\n minDate: Date;\r\n maxDate: Date;\r\n daysDisabled: number[];\r\n datesDisabled: Date[];\r\n datesEnabled: Date[];\r\n hoveredDate: Date;\r\n selectedDate: Date;\r\n selectedRange: Date[];\r\n displayMonths: number;\r\n monthIndex: number;\r\n dateCustomClasses: DatepickerDateCustomClasses[];\r\n dateTooltipTexts: DatepickerDateTooltipText[];\r\n}\r\n\r\nexport function flagDaysCalendar(\r\n formattedMonth: DaysCalendarViewModel,\r\n options: Partial<FlagDaysCalendarOptions>\r\n): DaysCalendarViewModel {\r\n formattedMonth.weeks.forEach((week: WeekViewModel) => {\r\n week.days.forEach((day: DayViewModel, dayIndex: number) => {\r\n // datepicker\r\n const isOtherMonth = !isSameMonth(day.date, formattedMonth.month);\r\n\r\n const isHovered =\r\n !isOtherMonth && isSameDay(day.date, options.hoveredDate);\r\n // date range picker\r\n const isSelectionStart =\r\n !isOtherMonth &&\r\n options.selectedRange &&\r\n isSameDay(day.date, options.selectedRange[0]);\r\n const isSelectionEnd =\r\n !isOtherMonth &&\r\n options.selectedRange &&\r\n isSameDay(day.date, options.selectedRange[1]);\r\n\r\n const isSelected =\r\n (!isOtherMonth && isSameDay(day.date, options.selectedDate)) ||\r\n isSelectionStart ||\r\n isSelectionEnd;\r\n\r\n const isInRange =\r\n !isOtherMonth &&\r\n options.selectedRange &&\r\n isDateInRange(day.date, options.selectedRange, options.hoveredDate);\r\n\r\n const isDisabled =\r\n options.isDisabled ||\r\n isBefore(day.date, options.minDate, 'day') ||\r\n isAfter(day.date, options.maxDate, 'day') ||\r\n isDisabledDay(day.date, options.daysDisabled) ||\r\n isDisabledDate(day.date, options.datesDisabled) ||\r\n isEnabledDate(day.date, options.datesEnabled);\r\n\r\n const currentDate = new Date();\r\n const isToday = !isOtherMonth && isSameDay(day.date, currentDate);\r\n\r\n const customClasses = options.dateCustomClasses && options.dateCustomClasses\r\n .map(dcc => isSameDay(day.date, dcc.date) ? dcc.classes : [])\r\n .reduce((previousValue, currentValue) => previousValue.concat(currentValue), [])\r\n .join(' ')\r\n || '';\r\n\r\n const tooltipText = options.dateTooltipTexts && options.dateTooltipTexts\r\n .map(tt => isSameDay(day.date, tt.date) ? tt.tooltipText : '')\r\n .reduce((previousValue, currentValue) => {\r\n previousValue.push(currentValue);\r\n return previousValue;\r\n }, [] as string[])\r\n .join(' ')\r\n || '';\r\n\r\n // decide update or not\r\n const newDay = Object.assign({}, day, {\r\n isOtherMonth,\r\n isHovered,\r\n isSelected,\r\n isSelectionStart,\r\n isSelectionEnd,\r\n isInRange,\r\n isDisabled,\r\n isToday,\r\n customClasses,\r\n tooltipText\r\n });\r\n\r\n if (\r\n day.isOtherMonth !== newDay.isOtherMonth ||\r\n day.isHovered !== newDay.isHovered ||\r\n day.isSelected !== newDay.isSelected ||\r\n day.isSelectionStart !== newDay.isSelectionStart ||\r\n day.isSelectionEnd !== newDay.isSelectionEnd ||\r\n day.isDisabled !== newDay.isDisabled ||\r\n day.isInRange !== newDay.isInRange ||\r\n day.customClasses !== newDay.customClasses ||\r\n day.tooltipText !== newDay.tooltipText\r\n ) {\r\n week.days[dayIndex] = newDay;\r\n }\r\n });\r\n });\r\n\r\n // todo: add check for linked calendars\r\n formattedMonth.hideLeftArrow =\r\n options.isDisabled ||\r\n (!!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths);\r\n formattedMonth.hideRightArrow =\r\n options.isDisabled ||\r\n ((!!options.monthIndex || options.monthIndex === 0) && !!options.displayMonths && options.monthIndex < options.displayMonths &&\r\n options.monthIndex + 1 !== options.displayMonths);\r\n\r\n formattedMonth.disableLeftArrow = isMonthDisabled(\r\n shiftDate(formattedMonth.month, { month: -1 }),\r\n options.minDate,\r\n options.maxDate\r\n );\r\n formattedMonth.disableRightArrow = isMonthDisabled(\r\n shiftDate(formattedMonth.month, { month: 1 }),\r\n options.minDate,\r\n options.maxDate\r\n );\r\n return formattedMonth;\r\n}\r\n\r\nfunction isDateInRange(\r\n date: Date,\r\n selectedRange?: Date[],\r\n hoveredDate?: Date\r\n): boolean {\r\n if (!date || !selectedRange || !selectedRange[0]) {\r\n return false;\r\n }\r\n\r\n if (selectedRange[1]) {\r\n return date > selectedRange[0] && date <= selectedRange[1];\r\n }\r\n\r\n if (hoveredDate) {\r\n return date > selectedRange[0] && date <= hoveredDate;\r\n }\r\n\r\n return false;\r\n}\r\n","import { BsDatepickerViewMode } from '../models';\r\n\r\nexport function canSwitchMode(mode: BsDatepickerViewMode, minMode?: BsDatepickerViewMode): boolean {\r\n return minMode ? mode >= minMode : true;\r\n}\r\n","import {\r\n DatepickerFormatOptions,\r\n MonthsCalendarViewModel,\r\n CalendarCellViewModel\r\n} from '../models';\r\nimport { startOf, formatDate } from '@period-year-norway/ngx-bootstrap/chronos';\r\nimport { createMatrix } from '../utils/matrix-utils';\r\n\r\nconst height = 4;\r\nconst width = 3;\r\nconst shift = { month: 1 };\r\n\r\nexport function formatMonthsCalendar(\r\n viewDate: Date,\r\n formatOptions: DatepickerFormatOptions\r\n): MonthsCalendarViewModel {\r\n const initialDate = startOf(viewDate, 'year');\r\n const matrixOptions = { width, height, initialDate, shift };\r\n const monthMatrix = createMatrix<\r\n CalendarCellViewModel\r\n >(matrixOptions, date => ({\r\n date,\r\n label: formatDate(date, formatOptions.monthLabel, formatOptions.locale)\r\n }));\r\n\r\n return {\r\n months: monthMatrix,\r\n monthTitle: '',\r\n yearTitle: formatDate(\r\n viewDate,\r\n formatOptions.yearTitle,\r\n formatOptions.locale\r\n ),\r\n hideRightArrow: false,\r\n hideLeftArrow: false,\r\n disableRightArrow: false,\r\n disableLeftArrow: false\r\n };\r\n}\r\n","import { isSameMonth, shiftDate } from '@period-year-norway/ngx-bootstrap/chronos';\r\nimport {\r\n MonthsCalendarViewModel,\r\n CalendarCellViewModel\r\n} from '../models';\r\nimport { isDisabledDate, isEnabledDate, isMonthDisabled, isYearDisabled } from '../utils/bs-calendar-utils';\r\n\r\nexport interface FlagMonthCalendarOptions {\r\n isDisabled: boolean;\r\n minDate: Date;\r\n maxDate: Date;\r\n hoveredMonth: Date;\r\n selectedDate: Date;\r\n selectedRange: Date[];\r\n datesDisabled: Date[];\r\n datesEnabled: Date[];\r\n displayMonths: number;\r\n monthIndex: number;\r\n}\r\n\r\nexport function flagMonthsCalendar(\r\n monthCalendar: MonthsCalendarViewModel,\r\n options: Partial<FlagMonthCalendarOptions>\r\n): MonthsCalendarViewModel {\r\n monthCalendar.months.forEach(\r\n (months: CalendarCellViewModel[], rowIndex: number) => {\r\n months.forEach((month: CalendarCellViewModel, monthIndex: number) => {\r\n let isSelected: boolean;\r\n const isHovered = isSameMonth(month.date, options.hoveredMonth);\r\n const isDisabled =\r\n options.isDisabled ||\r\n isDisabledDate(month.date, options.datesDisabled) ||\r\n isEnabledDate(month.date, options.datesEnabled, 'month') ||\r\n isMonthDisabled(month.date, options.minDate, options.maxDate);\r\n\r\n if (!options.selectedDate && options.selectedRange) {\r\n isSelected = isSameMonth(month.date, options.selectedRange[0]);\r\n if (!isSelected) {\r\n isSelected = isSameMonth(month.date, options.selectedRange[1]);\r\n }\r\n } else {\r\n isSelected = isSameMonth(month.date, options.selectedDate);\r\n }\r\n const newMonth = Object.assign(/*{},*/ month, {\r\n isHovered,\r\n isDisabled,\r\n isSelected\r\n });\r\n if (\r\n month.isHovered !== newMonth.isHovered ||\r\n month.isDisabled !== newMonth.isDisabled ||\r\n month.isSelected !== newMonth.isSelected\r\n ) {\r\n monthCalendar.months[rowIndex][monthIndex] = newMonth;\r\n }\r\n });\r\n }\r\n );\r\n\r\n // todo: add check for linked calendars\r\n monthCalendar.hideLeftArrow =\r\n !!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths;\r\n\r\n monthCalendar.hideRightArrow =\r\n (!!options.monthIndex || options.monthIndex === 0 )\r\n && (!!options.displayMonths || options.displayMonths === 0)\r\n && options.monthIndex < options.displayMonths\r\n && options.monthIndex + 1 !== options.displayMonths;\r\n\r\n monthCalendar.disableLeftArrow = isYearDisabled(\r\n shiftDate(monthCalendar.months[0][0].date, { year: -1 }),\r\n options.minDate,\r\n options.maxDate\r\n );\r\n monthCalendar.disableRightArrow = isYearDisabled(\r\n shiftDate(monthCalendar.months[0][0].date, { year: 1 }),\r\n options.minDate,\r\n options.maxDate\r\n );\r\n\r\n return monthCalendar;\r\n}\r\n","import {\r\n DatepickerFormatOptions,\r\n YearsCalendarViewModel,\r\n CalendarCellViewModel\r\n} from '../models';\r\nimport { shiftDate, formatDate } from '@period-year-norway/ngx-bootstrap/chronos';\r\nimport { createMatrix } from '../utils/matrix-utils';\r\n\r\nconst height = 4;\r\nconst width = 4;\r\nexport const yearsPerCalendar = height * width;\r\nexport const initialYearShift = (Math.floor(yearsPerCalendar / 2) - 1) * -1;\r\nconst shift = { year: 1 };\r\n\r\nexport function formatYearsCalendar(\r\n viewDate: Date,\r\n formatOptions: DatepickerFormatOptions,\r\n previousInitialDate?: Date\r\n): YearsCalendarViewModel {\r\n const initialDate = calculateInitialDate(viewDate, previousInitialDate);\r\n const matrixOptions = { width, height, initialDate, shift };\r\n const yearsMatrix = createMatrix<\r\n CalendarCellViewModel\r\n >(matrixOptions, date => ({\r\n date,\r\n label: formatDate(date, formatOptions.yearLabel, formatOptions.locale)\r\n }));\r\n const yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions);\r\n\r\n return {\r\n years: yearsMatrix,\r\n monthTitle: '',\r\n yearTitle,\r\n hideLeftArrow: false,\r\n hideRightArrow: false,\r\n disableLeftArrow: false,\r\n disableRightArrow: false\r\n };\r\n}\r\n\r\nfunction calculateInitialDate(viewDate: Date, previousInitialDate?: Date): Date {\r\n if (previousInitialDate\r\n && viewDate.getFullYear() >= previousInitialDate.getFullYear()\r\n && viewDate.getFullYear() < previousInitialDate.getFullYear() + yearsPerCalendar) {\r\n return previousInitialDate;\r\n }\r\n\r\n return shiftDate(viewDate, { year: initialYearShift });\r\n}\r\n\r\nfunction formatYearRangeTitle(\r\n yearsMatrix: CalendarCellViewModel[][],\r\n formatOptions: DatepickerFormatOptions\r\n): string {\r\n const from = formatDate(\r\n yearsMatrix[0][0].date,\r\n formatOptions.yearTitle,\r\n formatOptions.locale\r\n );\r\n const to = formatDate(\r\n yearsMatrix[height - 1][width - 1].date,\r\n formatOptions.yearTitle,\r\n formatOptions.locale\r\n );\r\n\r\n return `${from} - ${to}`;\r\n}\r\n","import { isSameYear, shiftDate } from '@period-year-norway/ngx-bootstrap/chronos';\r\nimport { YearsCalendarViewModel, CalendarCellViewModel } from '../models';\r\nimport { isDisabledDate, isEnabledDate, isYearDisabled } from '../utils/bs-calendar-utils';\r\n\r\nexport interface FlagYearsCalendarOptions {\r\n isDisabled: boolean;\r\n minDate: Date;\r\n maxDate: Date;\r\n hoveredYear: Date;\r\n selectedDate: Date;\r\n selectedRange: Date[];\r\n datesDisabled: Date[];\r\n datesEnabled: Date[];\r\n displayMonths: number;\r\n yearIndex: number;\r\n}\r\n\r\nexport function flagYearsCalendar(\r\n yearsCalendar: YearsCalendarViewModel,\r\n options: Partial<FlagYearsCalendarOptions>\r\n): YearsCalendarViewModel {\r\n yearsCalendar.years.forEach(\r\n (years: CalendarCellViewModel[], rowIndex: number) => {\r\n years.forEach((year: CalendarCellViewModel, yearIndex: number) => {\r\n let isSelected: boolean;\r\n const isHovered = isSameYear(year.date, options.hoveredYear);\r\n const isDisabled =\r\n options.isDisabled ||\r\n isDisabledDate(year.date, options.datesDisabled, 'year') ||\r\n isEnabledDate(year.date, options.datesEnabled, 'year') ||\r\n isYearDisabled(year.date, options.minDate, options.maxDate);\r\n\r\n if (!options.selectedDate && options.selectedRange) {\r\n isSelected = isSameYear(year.date, options.selectedRange[0]);\r\n if (!isSelected) {\r\n isSelected = isSameYear(year.date, options.selectedRange[1]);\r\n }\r\n } else {\r\n isSelected = isSameYear(year.date, options.selectedDate);\r\n }\r\n\r\n const newMonth = Object.assign(/*{},*/ year, { isHovered, isDisabled, isSelected });\r\n if (\r\n year.isHovered !== newMonth.isHovered ||\r\n year.isDisabled !== newMonth.isDisabled ||\r\n year.isSelected !== newMonth.isSelected\r\n ) {\r\n yearsCalendar.years[rowIndex][yearIndex] = newMonth;\r\n }\r\n });\r\n }\r\n );\r\n\r\n // todo: add check for linked calendars\r\n yearsCalendar.hideLeftArrow =\r\n !!options.yearIndex && options.yearIndex > 0 && options.yearIndex !== options.displayMonths;\r\n yearsCalendar.hideRightArrow =\r\n !!options.yearIndex && !!options.displayMonths &&\r\n options.yearIndex < options.displayMonths &&\r\n options.yearIndex + 1 !== options.displayMonths;\r\n\r\n yearsCalendar.disableLeftArrow = isYearDisabled(\r\n shiftDate(yearsCalendar.years[0][0].date, { year: -1 }),\r\n options.minDate,\r\n options.maxDate\r\n );\r\n const i = yearsCalendar.years.length - 1;\r\n const j = yearsCalendar.years[i].length - 1;\r\n yearsCalendar.disableRightArrow = isYearDisabled(\r\n shiftDate(yearsCalendar.years[i][j].date, { year: 1 }),\r\n options.minDate,\r\n options.maxDate\r\n );\r\n\r\n return yearsCalendar;\r\n}\r\n","export function copyTime(sourceDate: Date, time: Date) {\r\n if (!sourceDate || !isNaN(sourceDate.getTime())) {\r\n return;\r\n }\r\n\r\n sourceDate.setHours(time.getHours());\r\n sourceDate.setMinutes(time.getMinutes());\r\n sourceDate.setSeconds(time.getSeconds());\r\n sourceDate.setMilliseconds(time.getMilliseconds());\r\n}\r\n","import { BsDatepickerState, BsDatepickerViewState, initialDatepickerState } from './bs-datepicker.state';\r\nimport { Action } from '@period-year-norway/ngx-bootstrap/mini-ngrx';\r\nimport { BsDatepickerActions } from './bs-datepicker.actions';\r\nimport { calcDaysCalendar } from '../engine/calc-days-calendar';\r\nimport { formatDaysCalendar } from '../engine/format-days-calendar';\r\nimport { flagDaysCalendar } from '../engine/flag-days-calendar';\r\nimport {\r\n setFullDate,\r\n shiftDate,\r\n isArray,\r\n isDateValid,\r\n startOf,\r\n getLocale,\r\n isAfter,\r\n isBefore,\r\n isSame\r\n} from '@period-year-norway/ngx-bootstrap/chronos';\r\nimport { canSwitchMode } from '../engine/view-mode';\r\nimport { formatMonthsCalendar } from '../engine/format-months-calendar';\r\nimport { flagMonthsCalendar } from '../engine/flag-months-calendar';\r\nimport { formatYearsCalendar, initialYearShift, yearsPerCalendar } from '../engine/format-years-calendar';\r\nimport { flagYearsCalendar } from '../engine/flag-years-calendar';\r\nimport { BsViewNavigationEvent, DatepickerFormatOptions, BsDatepickerViewMode } from '../models';\r\nimport { getYearsCalendarInitialDate } from '../utils/bs-calendar-utils';\r\nimport { copyTime } from '../utils/copy-time-utils';\r\n\r\n\r\nexport function bsDatepickerReducer(state: BsDatepickerState = initialDatepickerState,\r\n action: Action): BsDatepickerState {\r\n switch (action.type) {\r\n case BsDatepickerActions.CALCULATE: {\r\n return calculateReducer(state);\r\n }\r\n\r\n case BsDatepickerActions.FORMAT: {\r\n return formatReducer(state);\r\n }\r\n\r\n case BsDatepickerActions.FLAG: {\r\n return flagReducer(state);\r\n }\r\n\r\n case BsDatepickerActions.NAVIGATE_OFFSET: {\r\n return navigateOffsetReducer(state, action);\r\n }\r\n\r\n case BsDatepickerActions.NAVIGATE_TO: {\r\n const payload: BsViewNavigationEvent = action.payload;\r\n if (!state.view || !payload.unit) {\r\n return state;\r\n }\r\n\r\n const date = setFullDate(state.view.date, payload.unit);\r\n let newState;\r\n let mode: BsDatepickerViewMode;\r\n if (canSwitchMode(payload.viewMode, state.minMode)) {\r\n mode = payload.viewMode;\r\n newState = { view: { date, mode } };\r\n } else {\r\n mode = state.view.mode;\r\n newState = { selectedDate: date, view: { date, mode } };\r\n }\r\n\r\n return Object.assign({}, state, newState);\r\n }\r\n\r\n case BsDatepickerActions.CHANGE_VIEWMODE: {\r\n if (!canSwitchMode(action.payload, state.minMode) || !state.view) {\r\n return state;\r\n }\r\n\r\n const date = state.view.date;\r\n const mode = action.payload;\r\n const newState = { view: { date, mode } };\r\n\r\n return Object.assign({}, state, newState);\r\n }\r\n\r\n case BsDatepickerActions.HOVER: {\r\n return Object.assign({}, state, { hoveredDate: action.payload });\r\n }\r\n\r\n case BsDatepickerActions.SELECT: {\r\n if (!state.view) {\r\n return state;\r\n }\r\n\r\n const newState = {\r\n selectedDate: action.payload,\r\n view: state.view\r\n };\r\n\r\n if (Array.isArray(state.selectedTime)) {\r\n const _time = state.selectedTime[0];\r\n if (newState.selectedDate && _time) {\r\n copyTime(newState.selectedDate, _time);\r\n }\r\n }\r\n\r\n const mode = state.view.mode;\r\n const _date = action.payload || state.view.date;\r\n const date = getViewDate(_date, state.minDate, state.maxDate);\r\n newState.view = { mode, date };\r\n\r\n return Object.assign({}, state, newState);\r\n }\r\n\r\n case BsDatepickerActions.SELECT_TIME: {\r\n const {date, index} = action.payload;\r\n const selectedTime = state.selectedTime ? [...state.selectedTime] : [];\r\n selectedTime[index] = date;\r\n return Object.assign({}, state, { selectedTime });\r\n }\r\n\r\n case BsDatepickerActions.SET_OPTIONS: {\r\n if (!state.view) {\r\n return state;\r\n }\r\n\r\n const newState = action.payload;\r\n // preserve view mode\r\n const mode = newState.minMode ? newState.minMode : state.view.mode;\r\n const _viewDate = isDateValid(newState.value) && newState.value\r\n || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0]\r\n || state.view.date;\r\n const date = getViewDate(_viewDate, newState.minDate, newState.maxDate);\r\n newState.view = { mode, date };\r\n // update selected value\r\n if (newState.value) {\r\n // if new value is array we work with date range\r\n if (isArray(newState.value)) {\r\n newState.selectedRange = newState.value;\r\n newState.selectedTime = newState.value.map((i: Date) => i);\r\n }\r\n\r\n // if new value is a date -> datepicker\r\n if (newState.value instanceof Date) {\r\n newState.selectedDate = newState.value;\r\n newState.selectedTime = [newState.value];\r\n }\r\n\r\n // provided value is not supported :)\r\n // need to report it somehow\r\n }\r\n\r\n return Object.assign({}, state, newState);\r\n }\r\n\r\n // date range picker\r\n case BsDatepickerActions.SELECT_RANGE: {\r\n if (!state.view) {\r\n return state;\r\n }\r\n\r\n const newState = {\r\n selectedRange: action.payload,\r\n view: state.view\r\n };\r\n newState.selectedRange?.forEach((dte: Date, index: number) => {\r\n if (Array.isArray(state.selectedTime)) {\r\n const _time = state.selectedTime[index];\r\n if (_time) {\r\n copyTime(dte, _time);\r\n }\r\n }\r\n });\r\n\r\n const mode = state.view.mode;\r\n const _date = action.payload && action.payload[0] || state.view.date;\r\n const date = getViewDate(_date, state.minDate, state.maxDate);\r\n newState.view = { mode, date };\r\n\r\n return Object.assign({}, state, newState);\r\n }\r\n\r\n case BsDatepickerActions.SET_MIN_DATE: {\r\n return Object.assign({}, state, {\r\n minDate: action.payload\r\n });\r\n }\r\n case BsDatepickerActions.SET_MAX_DATE: {\r\n return Object.assign({}, state, {\r\n maxDate: action.payload\r\n });\r\n }\r\n case BsDatepickerActions.SET_IS_DISABLED: {\r\n return Object.assign({}, state, {\r\n isDisabled: action.payload\r\n });\r\n }\r\n case BsDatepickerActions.SET_DATE_CUSTOM_CLASSES: {\r\n return Object.assign({}, state, {\r\n dateCustomClasses: action.payload\r\n });\r\n }\r\n case BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS: {\r\n return Object.assign({}, state, {\r\n dateTooltipTexts: action.payload\r\n });\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nfunction calculateReducer(state: BsDatepickerState): BsDatepickerState {\r\n if (!state.view) {\r\n return state;\r\n }\r\n\r\n // how many calendars\r\n let displayMonths: number | undefined;\r\n if (state.displayOneMonthRange &&\r\n isDisplayOneMonth(state.view.date, state.minDate, state.maxDate)) {\r\n displayMonths = 1;\r\n } else {\r\n displayMonths = state.displayMonths || 1;\r\n }\r\n\r\n // use selected date on initial rendering if set\r\n let viewDate = state.view.date;\r\n\r\n if (state.view.mode === 'day' && state.monthViewOptions) {\r\n if (state.showPreviousMonth && state.selectedRange && state.selectedRange.length === 0) {\r\n viewDate = shiftDate(viewDate, { month: -1 });\r\n }\r\n\r\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\r\n let monthsModel = new Array(displayMonths);\r\n for (let monthIndex = 0; monthIndex < displayMonths; monthIndex++) {\r\n // todo: for unlinked calendars it will be harder\r\n monthsModel[monthIndex] = calcDaysCalendar(\r\n viewDate,\r\n state.monthViewOptions\r\n );\r\n viewDate = shiftDate(viewDate, { month: 1 });\r\n }\r\n // Check if parameter enabled and check if it's not months navigation event\r\n if (state.preventChangeToNextMonth && state.flaggedMonths && state.hoveredDate) {\r\n const viewMonth = calcDaysCalendar(state.view.date, state.monthViewOptions);\r\n // Check if viewed right month same as in flaggedMonths state, then override months model with flaggedMonths\r\n if (state.flaggedMonths.length && state.flaggedMonths[1].month.getMonth() === viewMonth.month.getMonth()) {\r\n monthsModel = state.flaggedMonths\r\n .map(item => {\r\n if (state.monthViewOptions) {\r\n return calcDaysCalendar(\r\n item.month,\r\n state.monthViewOptions\r\n );\r\n }\r\n return null;\r\n })\r\n .filter(item => item !== null);\r\n }\r\n }\r\n\r\n return Object.assign({}, state, { monthsModel });\r\n }\r\n\r\n if (state.view.mode === 'month') {\r\n const monthsCalendar = new Array(displayMonths);\r\n for (\r\n let calendarIndex = 0;\r\n calendarIndex < displayMonths;\r\n calendarIndex++\r\n ) {\r\n // todo: for unlinked calendars it will be harder\r\n monthsCalendar[calendarIndex] = formatMonthsCalendar(\r\n viewDate,\r\n getFormatOptions(state)\r\n );\r\n viewDate = shiftDate(viewDate, { year: 1 });\r\n }\r\n\r\n return Object.assign({}, state, { monthsCalendar });\r\n }\r\n\r\n if (state.view.mode === 'year') {\r\n const yearsCalendarModel = new Array(displayMonths);\r\n\r\n for (\r\n let calendarIndex = 0;\r\n calendarIndex < displayMonths;\r\n calendarIndex++\r\n ) {\r\n // todo: for unlinked calendars it will be harder\r\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(\r\n viewDate,\r\n getFormatOptions(state),\r\n state.minMode === 'year' ? getYearsCalendarInitialDate(state, calendarIndex) : undefined\r\n );\r\n viewDate = shiftDate(viewDate, { year: yearsPerCalendar });\r\n }\r\n\r\n return Object.assign({}, state, { yearsCalendarModel });\r\n }\r\n\r\n return state;\r\n}\r\n\r\nfunction formatReducer(state: BsDatepickerState): BsDatepickerState {\r\n if (!state.view) {\r\n return state;\r\n }\r\n\r\n if (state.view.mode === 'day' && state.monthsModel) {\r\n const formattedMonths = state.monthsModel.map((month, monthIndex) =>\r\n formatDaysCalendar(month, getFormatOptions(state), monthIndex)\r\n );\r\n\r\n return Object.assign({}, state, { formattedMonths });\r\n }\r\n\r\n // how many calendars\r\n const displayMonths = state.displayMonths || 1;\r\n // check initial rendering\r\n // use selected date on initial rendering if set\r\n let viewDate = state.view.date;\r\n\r\n if (state.view.mode === 'month') {\r\n const monthsCalendar = new Array(displayMonths);\r\n for (\r\n let calendarIndex = 0;\r\n calendarIndex < displayMonths;\r\n calendarIndex++\r\n ) {\r\n // todo: for unlinked calendars it will be harder\r\n monthsCalendar[calendarIndex] = formatMonthsCalendar(\r\n viewDate,\r\n getFormatOptions(state)\r\n );\r\n viewDate = shiftDate(viewDate, { year: 1 });\r\n }\r\n\r\n return Object.assign({}, state, { monthsCalendar });\r\n }\r\n\r\n if (state.view.mode === 'year') {\r\n const yearsCalendarModel = new Array(displayMonths);\r\n for (\r\n let calendarIndex = 0;\r\n calendarIndex < displayMonths;\r\n calendarIndex++\r\n ) {\r\n // todo: for unlinked calendars it will be harder\r\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(\r\n viewDate,\r\n getFormatOptions(state)\r\n );\r\n viewDate = shiftDate(viewDate, { year: 16 });\r\n }\r\n\r\n return Object.assign({}, state, { yearsCalendarModel });\r\n }\r\n\r\n return state;\r\n}\r\n\r\nfunction flagReducer(state: BsDatepickerState): BsDatepickerState {\r\n if (!state.view) {\r\n return state;\r\n }\r\n\r\n const displayMonths = isDisplayOneMonth(state.view.date, state.minDate, state.maxDate) ? 1 : state.displayMonths;\r\n if (state.formattedMonths && state.view.mode === 'day') {\r\n const flaggedMonths = state.formattedMonths.map(\r\n (formattedMonth, monthIndex) =>\r\n flagDaysCalendar(formattedMonth, {\r\n isDisabled: state.isDisabled,\r\n minDate: state.minDate,\r\n maxDate: state.maxDate,\r\n daysDisabled: state.daysDisabled,\r\n datesDisabled: state.datesDisabled,\r\n datesEnabled: state.datesEnabled,\r\n hoveredDate: state.hoveredDate,\r\n selectedDate: state.selectedDate,\r\n selectedRange: state.selectedRange,\r\n displayMonths,\r\n dateCustomClasses: state.dateCustomClasses,\r\n dateTooltipTexts: state.dateTooltipTexts,\r\n monthIndex\r\n })\r\n );\r\n\r\n return Object.assign({}, state, { flaggedMonths });\r\n }\r\n\r\n if (state.view.mode === 'month' && state.monthsCalendar) {\r\n const flaggedMonthsCalendar = state.monthsCalendar.map(\r\n (formattedMonth, monthIndex) =>\r\n flagMonthsCalendar(formattedMonth, {\r\n isDisabled: state.isDisabled,\r\n minDate: state.minDate,\r\n maxDate: state.maxDate,\r\n hoveredMonth: state.hoveredMonth,\r\n selectedDate: state.selectedDate,\r\n datesDisabled: state.datesDisabled,\r\n datesEnabled: state.datesEnabled,\r\n selectedRange: state.selectedRange,\r\n displayMonths,\r\n monthIndex\r\n })\r\n );\r\n\r\n return Object.assign({}, state, { flaggedMonthsCalendar });\r\n }\r\n\r\n if (state.view.mode === 'year' && state.yearsCalendarModel) {\r\n const yearsCalendarFlagged = state.yearsCalendarModel.map(\r\n (formattedMonth, yearIndex) =>\r\n flagYearsCalendar(formattedMonth, {\r\n isDisabled: state.isDisabled,\r\n minDate: state.minDate,\r\n maxDate: state.maxDate,\r\n hoveredYear: state.hoveredYear,\r\n selectedDate: state.selectedDate,\r\n datesDisabled: state.datesDisabled,\r\n datesEnabled: state.datesEnabled,\r\n selectedRange: state.selectedRange,\r\n displayMonths,\r\n yearIndex\r\n })\r\n );\r\n\r\n return Object.assign({}, state, { yearsCalendarFlagged });\r\n }\r\n\r\n return state;\r\n}\r\n\r\nfunction navigateOffsetReducer(state: BsDatepickerState, action: Action): BsDatepickerState {\r\n if (!state.view) {\r\n return state;\r\n }\r\n\r\n const date = shiftViewDate(state, action);\r\n if (!date) {\r\n return state;\r\n }\r\n\r\n const newState: {view: BsDatepickerViewState} = {\r\n view: {\r\n mode: state.view.mode,\r\n date\r\n }\r\n };\r\n\r\n return Object.assign({}, state, newState);\r\n}\r\n\r\nfunction shiftViewDate(state: BsDatepickerState, action: Action): Date | undefined {\r\n if (!state.view) {\r\n return undefined;\r\n }\r\n\r\n if (state.view.mode === 'year' && state.minMode === 'year') {\r\n const initialDate = getYearsCalendarInitialDate(state, 0);\r\n if (initialDate) {\r\n const middleDate = shiftDate(initialDate, { year: -initialYearShift });\r\n return shiftDate(middleDate, action.payload);\r\n }\r\n }\r\n\r\n return shiftDate(startOf(state.view.date, 'month'), action.payload);\r\n}\r\n\r\nfunction getFormatOptions(state: BsDatepickerState): DatepickerFormatOptions {\r\n return {\r\n locale: state.locale,\r\n\r\n monthTitle: state.monthTitle,\r\n yearTitle: state.yearTitle,\r\n\r\n dayLabel: state.dayLabel,\r\n monthLabel: state.monthLabel,\r\n yearLabel: state.yearLabel,\r\n\r\n weekNumbers: state.weekNumbers\r\n };\r\n}\r\n\r\n/**\r\n * if view date is provided (bsValue|ngModel) it should be shown\r\n * if view date is not provider:\r\n * if minDate>currentDate (default view value), show minDate\r\n * if maxDate<currentDate(default view value) show maxDate\r\n */\r\nfunction getViewDate(viewDate: Date | Date[], minDate?: Date, maxDate?: Date) {\r\n const _date = Array.isArray(viewDate) ? viewDate[0] : viewDate;\r\n\r\n if (minDate && isAfter(minDate, _date, 'day')) {\r\n return minDate;\r\n }\r\n\r\n if (maxDate && isBefore(maxDate, _date, 'day')) {\r\n return maxDate;\r\n }\r\n\r\n return _date;\r\n}\r\n\r\nfunction isDisplayOneMonth(viewDate: Date, minDate?: Date, maxDate?: Date) {\r\n if (maxDate && isSame(maxDate, viewDate, 'day')) {\r\n return true;\r\n }\r\n\r\n return minDate && maxDate && minDate.getMonth() === maxDate.getMonth();\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MiniStore, Action, MiniState } from '@period-year-norway/ngx-bootstrap/mini-ngrx';\r\nimport { BsDatepickerState, initialDatepickerState } from './bs-datepicker.state';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { bsDatepickerReducer } from './bs-datepicker.reducer';\r\n\r\n@Injectable({providedIn: 'platform'})\r\nexport class BsDatepickerStore extends MiniStore<BsDatepickerState> {\r\n constructor() {\r\n const _dispatcher = new BehaviorSubject<Action>({\r\n type: '[datepicker] dispatcher init'\r\n });\r\n const state = new MiniState<BsDatepickerState>(\r\n initialDatepickerState,\r\n _dispatcher,\r\n bsDatepickerReducer\r\n );\r\n super(_dispatcher, bsDatepickerReducer, state);\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\r\n\r\nexport interface BsCustomDates {\r\n label: string;\r\n value: Date | Date[];\r\n}\r\n\r\n@Component({\n selector: 'bs-custom-date-view',\n template: `\r\n <div class=\"bs-datepicker-predefined-btns\">\r\n <button *ngFor=\"let range of ranges\"\r\n type=\"button\"\r\n class=\"btn\"\r\n (click)=\"selectFromRanges(range)\"\r\n [class.selected]=\"range.value === selectedRange\">\r\n {{ range.label }}\r\n </button>\r\n </div>\r\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\r\nexport class BsCustomDatesViewComponent {\r\n @Input() ranges?: BsCustomDates[];\r\n @Input() selectedRange?: Date[];\r\n @Input() customRangeLabel?: string;\r\n @Output() onSelect = new EventEmitter<BsCustomDates>();\r\n\r\n selectFromRanges(range?: BsCustomDates) {\r\n this.onSelect.emit(range);\r\n }\r\n}\r\n","import { TimeUnit } from '@period-year-norway/ngx-bootstrap/chronos';\r\n\r\nexport type BsDatepickerViewMode = 'day' | 'month' | 'year';\r\n\r\n/** *************** */\r\n// navigation bar settings\r\nexport interface NavigationViewModel {\r\n monthTitle: string;\r\n yearTitle: string;\r\n hideLeftArrow: boolean;\r\n hideRightArrow: boolean;\r\n disableLeftArrow: boolean;\r\n disableRightArrow: boolean;\r\n}\r\n\r\nexport interface CalendarCellViewModel {\r\n date: Date;\r\n label: string;\r\n isDisabled?: boolean;\r\n isHovered?: boolean;\r\n isSelected?: boolean;\r\n}\r\n\r\n/** *************** */\r\n// days matrix: day cell view model\r\nexport interface DayViewModel extends CalendarCellViewModel {\r\n isOtherMonthHovered?: boolean;\r\n isOtherMonth?: boolean;\r\n isInRange?: boolean;\r\n isSelectionStart?: boolean;\r\n isSelectionEnd?: boolean;\r\n isToday?: boolean;\r\n customClasses?: string;\r\n tooltipText?: string;\r\n // day index\r\n monthIndex?: number;\r\n weekIndex?: number;\r\n dayIndex?: number;\r\n}\r\n\r\nexport interface WeekViewModel {\r\n days: DayViewModel[];\r\n isHovered?: boolean;\r\n}\r\n\r\n// todo: split navigation settings\r\nexport interface DaysCalendarViewModel extends NavigationViewModel {\r\n weeks: WeekViewModel[];\r\n // additional information\r\n month: Date;\r\n weekNumbers: string[];\r\n weekdays: string[];\r\n}\r\n\r\n/** *************** */\r\n// months calendar\r\nexport interface MonthsCalendarViewModel extends NavigationViewModel {\r\n months: CalendarCellViewModel[][];\r\n}\r\n\r\n/** *************** */\r\n// years calendar\r\nexport interface YearsCalendarViewModel extends NavigationViewModel {\r\n years: CalendarCellViewModel[][];\r\n}\r\n\r\n/** *************** */\r\n\r\n// math model\r\n/** *************** */\r\n\r\n// days Date's array\r\nexport interface DaysCalendarModel {\r\n daysMatrix: Date[][];\r\n month: Date;\r\n}\r\n\r\n/** *************** */\r\n// some func options\r\nexport interface MonthViewOptions {\r\n width?: number;\r\n height?: number;\r\n firstDayOfWeek?: number;\r\n}\r\n\r\n/** *************** */\r\n// rendering options\r\nexport interface DatepickerFormatOptions {\r\n locale?: string;\r\n\r\n monthTitle?: string;\r\n yearTitle?: string;\r\n\r\n dayLabel?: string;\r\n monthLabel?: string;\r\n yearLabel?: string;\r\n\r\n weekNumbers?: string;\r\n}\r\n\r\nexport interface DatepickerRenderOptions {\r\n showWeekNumbers: boolean;\r\n displayMonths: number;\r\n}\r\n\r\nexport interface DatepickerDateCustomClasses {\r\n date: Date;\r\n classes: string[];\r\n}\r\n\r\nexport interface DatepickerDateTooltipText {\r\n date: Date;\r\n tooltipText: string;\r\n}\r\n\r\n/** *************** */\r\n// events\r\n/** *************** */\r\nexport enum BsNavigationDirection {\r\n UP,\r\n DOWN\r\n}\r\n\r\n// used for navigation events, to change view date in state\r\nexport interface BsNavigationEvent {\r\n direction?: BsNavigationDirection;\r\n step?: TimeUnit;\r\n}\r\n\r\nexport interface BsViewNavigationEvent {\r\n unit?: TimeUnit;\r\n viewMode: BsDatepickerViewMode;\r\n}\r\n\r\nexport interface CellHoverEvent {\r\n cell: CalendarCellViewModel;\r\n isHovered: boolean;\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\n selector: 'bs-current-date',\n template: `<div class=\"current-timedate\"><span>{{ title }}</span></div>`,\n standalone: false\n})\r\nexport class BsCurrentDateViewComponent {\r\n @Input() title?: string;\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\n selector: 'bs-timepicker',\n template: `\r\n <div class=\"bs-timepicker-container\">\r\n <div class=\"bs-timepicker-controls\">\r\n <button class=\"bs-decrease\" type=\"button\">-</button>\r\n <input type=\"text\" [value]=\"hours\" placeholder=\"00\">\r\n <button class=\"bs-increase\" type=\"button\">+</button>\r\n </div>\r\n <div class=\"bs-timepicker-controls\">\r\n <button class=\"bs-decrease\" type=\"button\">-</button>\r\n <input type=\"text\" [value]=\"minutes\" placeholder=\"00\">\r\n <button class=\"bs-increase\" type=\"button\">+</button>\r\n </div>\r\n <button class=\"switch-time-format\" type=\"button\">{{ ampm }}\r\n <img\r\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg==\"\r\n alt=\"\">\r\n </button>\r\n </div>\r\n `,\n standalone: false\n})\r\nexport class BsTimepickerViewComponent {\r\n ampm = 'ok';\r\n hours = 0;\r\n minutes = 0;\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\n selector: 'bs-calendar-layout',\n template: `\r\n <!-- current date, will be added in nearest releases -->\r\n <bs-current-date title=\"hey there\" *ngIf=\"false\"></bs-current-date>\r\n\r\n <!--navigation-->\r\n <div class=\"bs-datepicker-head\">\r\n <ng-content select=\"bs-datepicker-navigation-view\"></ng-content>\r\n </div>\r\n\r\n <div class=\"bs-datepicker-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <!--timepicker-->\r\n <bs-timepicker *ngIf=\"false\"></bs-timepicker>\r\n `,\n standalone: false\n})\r\nexport class BsCalendarLayoutComponent {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n Renderer2\r\n} from '@angular/core';\r\n\r\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\r\nimport { DayViewModel } from '../../models';\r\n\r\n@Component({\n selector: '[bsDatepickerDayDecorator]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'day.isDisabled',\n '[class.is-highlighted]': 'day.isHovered',\n '[class.is-other-month]': 'day.isOtherMonth',\n '[class.is-active-other-month]': 'day.isOtherMonthHovered',\n '[class.in-range]': 'day.isInRange',\n '[class.select-start]': 'day.isSelectionStart',\n '[class.select-end]': 'day.isSelectionEnd',\n '[class.selected]': 'day.isSelected'\n },\n template: `{{ day && day.label || '' }}`,\n standalone: false\n})\r\nexport class BsDatepickerDayDecoratorComponent implements OnInit {\r\n @Input() day: DayViewModel = { date: new Date(), label: '' };\r\n\r\n constructor(\r\n private _config: BsDatepickerConfig,\r\n private _elRef: ElementRef,\r\n private _renderer: Renderer2\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.day?.isToday && this._config && this._config.customTodayClass) {\r\n this._renderer.addClass(this._elRef.nativeElement, this._config.customTodayClass);\r\n }\r\n\r\n if (typeof this.day?.customClasses === 'string') {\r\n this.day?.customClasses.split(' ')\r\n .filter((className: string) => className)\r\n .forEach((className: string) => {\r\n this._renderer.addClass(this._elRef.nativeElement, className);\r\n });\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { BsDatepickerViewMode, BsNavigationDirection, NavigationViewModel } from '../../models';\r\n\r\n@Component({\n selector: 'bs-datepicker-navigation-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\r\n <button class=\"previous\"\r\n [disabled]=\"calendar.disableLeftArrow\"\r\n [style.visibility]=\"calendar.hideLeftArrow ? 'hidden' : 'visible'\"\r\n type=\"button\"\r\n (click)=\"navTo(true)\">\r\n <span>‹</span>\r\n </button>\r\n\r\n <ng-container *ngIf=\"calendar && calendar.monthTitle\">\r\n ​ <!-- zero-width space needed for correct alignment\r\n with preserveWhitespaces: false in Angular -->\r\n\r\n <button class=\"current\"\r\n type=\"button\"\r\n (click)=\"view('month')\"\r\n ><span>{{ calendar.monthTitle }}</span>\r\n </button>\r\n </ng-container>\r\n\r\n ​ <!-- zero-width space needed for correct alignment\r\n with preserveWhitespaces: false in Angular -->\r\n\r\n <button class=\"current\" (click)=\"view('year')\" type=\"button\">\r\n <span>{{ calendar.yearTitle }}</span>\r\n </button>\r\n\r\n ​ <!-- zero-width space needed for correct alignment\r\n with preserveWhitespaces: false in Angular -->\r\n\r\n <button class=\"next\"\r\n [disabled]=\"calendar.disableRightArrow\"\r\n [style.visibility]=\"calendar.hideRightArrow ? 'hidden' : 'visible'\"\r\n type=\"button\"\r\n (click)=\"navTo(false)\"><span>›</span>\r\n </button>\r\n `,\n standalone: false\n})\r\nexport class BsDatepickerNavigationViewComponent {\r\n @Input() calendar!: NavigationViewModel;\r\n\r\n @Output() onNavigate = new EventEmitter<BsNavigationDirection>();\r\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\r\n\r\n navTo(down: boolean): void {\r\n this.onNavigate.emit(\r\n down ? BsNavigationDirection.DOWN : BsNavigationDirection.UP\r\n );\r\n }\r\n\r\n view(viewMode: BsDatepickerViewMode): void {\r\n this.onViewMode.emit(viewMode);\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\n\r\nimport { isSameDay } from '@period-year-norway/ngx-bootstrap/chronos';\r\n\r\nimport {\r\n BsDatepickerViewMode,\r\n BsNavigationDirection,\r\n BsNavigationEvent,\r\n CellHoverEvent, DatepickerDateTooltipText,\r\n DatepickerRenderOptions,\r\n DaysCalendarViewModel,\r\n DayViewModel, WeekViewModel\r\n} from '../../models';\r\n\r\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\r\n\r\n@Component({\n selector: 'bs-days-calendar-view',\n // changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\r\n <bs-calendar-layout>\r\n <bs-datepicker-navigation-view\r\n [calendar]=\"calendar\"\r\n (onNavigate)=\"navigateTo($event)\"\r\n (onViewMode)=\"changeViewMode($event)\"\r\n ></bs-datepicker-navigation-view>\r\n <!--days matrix-->\r\n <table role=\"grid\" class=\"days weeks\">\r\n <thead>\r\n <tr>\r\n <!--if show weeks-->\r\n <th *ngIf=\"options && options.showWeekNumbers\"></th>\r\n <th *ngFor=\"let weekday of calendar.weekdays; let i = index\"\r\n aria-label=\"weekday\">{{ calendar.weekdays[i] }}\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let week of calendar.weeks; let i = index\">\r\n <td class=\"week\" [class.active-week]=\"isWeekHovered\" *ngIf=\"options && options.showWeekNumbers\">\r\n <span *ngIf=\"isiOS\" (click)=\"selectWeek(week)\">{{ calendar.weekNumbers[i] }}</span>\r\n <span *ngIf=\"!isiOS\"\r\n (click)=\"selectWeek(week)\"\r\n (mouseenter)=\"weekHoverHandler(week, true)\"\r\n (mouseleave)=\"weekHoverHandler(week, false)\">{{ calendar.weekNumbers[i] }}</span>\r\n </td>\r\n <td *ngFor=\"let day of week.days\" role=\"gridcell\">\r\n\r\n <!-- When we want to show tooltips for dates -->\r\n <span *ngIf=\"!isiOS && isShowTooltip\" bsDatepickerDayDecorator\r\n [day]=\"day\"\r\n (click)=\"selectDay(day)\"\r\n tooltip=\"{{day.tooltipText}}\"\r\n (mouseenter)=\"hoverDay(day, true)\"\r\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }} 3</span>\r\n <!-- When tooltips for dates are disabled -->\r\n <span *ngIf=\"!isiOS && !isShowTooltip\" bsDatepickerDayDecorator\r\n [day]=\"day\"\r\n (click)=\"selectDay(day)\"\r\n (mouseenter)=\"hoverDay(day, true)\"\r\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }} 2</span>\r\n\r\n <!-- For mobile iOS view, tooltips are not needed -->\r\n <span *ngIf=\"isiOS\" bsDatepickerDayDecorator\r\n [day]=\"day\"\r\n (click)=\"selectDay(day)\">{{ day.label }} 1</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n </bs-calendar-layout>\r\n `,\n standalone: false\n})\r\nexport class BsDaysCalendarViewComponent {\r\n @Input() calendar!: DaysCalendarViewModel;\r\n @Input() options?: DatepickerRenderOptions | null;\r\n\r\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\r\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\r\n\r\n @Output() onSelect = new EventEmitter<DayViewModel>();\r\n @Output() onHover = new EventEmitter<CellHoverEvent>();\r\n @Output() onHoverWeek = new EventEmitter<WeekViewModel>();\r\n\r\n isWeekHovered?: boolean;\r\n isiOS: boolean;\r\n isShowTooltip?: boolean;\r\n\r\n constructor(private _config: BsDatepickerConfig) {\r\n this.isiOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\r\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n if (this._config.dateTooltipTexts && this._config.dateTooltipTexts.length > 0) {\r\n this.isShowTooltip = true;\r\n }\r\n }\r\n\r\n navigateTo(event: BsNavigationDirection): void {\r\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\r\n this.onNavigate.emit({ step: { month: step } });\r\n }\r\n\r\n changeViewMode(event: BsDatepickerViewMode): void {\r\n this.onViewMode.emit(event);\r\n }\r\n\r\n selectDay(event: DayViewModel): void {\r\n this.onSelect.emit(event);\r\n }\r\n\r\n selectWeek(week: WeekViewModel): void {\r\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\r\n return;\r\n }\r\n\r\n if (week.days.length === 0) {\r\n return;\r\n }\r\n\r\n if (this._config.selectWeek && week.days[0]\r\n && !week.days[0].isDisabled\r\n && this._config.selectFromOtherMonth) {\r\n\r\n this.onSelect.emit(week.days[0]);\r\n\r\n return;\r\n }\r\n\r\n const selectedDay = week.days.find((day: DayViewModel) => {\r\n return this._config.selectFromOtherMonth\r\n ? !day.isDisabled\r\n : !day.isOtherMonth && !day.isDisabled;\r\n });\r\n\r\n this.onSelect.emit(selectedDay);\r\n\r\n if (this._config.selectWeekDateRange) {\r\n const days = week.days.slice(0);\r\n const lastDayOfRange = days.reverse().find((day: DayViewModel) => {\r\n return this._config.selectFromOtherMonth\r\n ? !day.isDisabled\r\n : !day.isOtherMonth && !day.isDisabled;\r\n });\r\n\r\n this.onSelect.emit(lastDayOfRange);\r\n }\r\n }\r\n\r\n weekHoverHandler(cell: WeekViewModel, isHovered: boolean): void {\r\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\r\n return;\r\n }\r\n\r\n const hasActiveDays = cell.days.find((day: DayViewModel) => {\r\n return this._config.selectFromOtherMonth\r\n ? !day.isDisabled\r\n : !day.isOtherMonth && !day.isDisabled;\r\n });\r\n\r\n if (hasActiveDays) {\r\n cell.isHovered = isHovered;\r\n this.isWeekHovered = isHovered;\r\n this.onHoverWeek.emit(cell);\r\n }\r\n }\r\n\r\n hoverDay(cell: DayViewModel, isHovered: boolean): void {\r\n if (this._config.selectFromOtherMonth && cell.isOtherMonth) {\r\n cell.isOtherMonthHovered = isHovered;\r\n }\r\n\r\n if (this._config.dateTooltipTexts) {\r\n cell.tooltipText = '';\r\n this._config.dateTooltipTexts.forEach((dateData: DatepickerDateTooltipText) => {\r\n\r\n if (isSameDay(dateData.date, cell.date)) {\r\n cell.tooltipText = dateData.tooltipText;\r\n\r\n return;\r\n }\r\n });\r\n }\r\n\r\n this.onHover.emit({ cell, isHovered });\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport {\r\n BsDatepickerViewMode,\r\n BsNavigationDirection,\r\n BsNavigationEvent,\r\n CellHoverEvent,\r\n MonthsCalendarViewModel,\r\n CalendarCellViewModel\r\n} from '../../models';\r\n\r\n@Component({\n selector: 'bs-month-calendar-view',\n template: `\r\n <bs-calendar-layout>\r\n <bs-datepicker-navigation-view\r\n [calendar]=\"calendar\"\r\n (onNavigate)=\"navigateTo($event)\"\r\n (onViewMode)=\"changeViewMode($event)\"\r\n ></bs-datepicker-navigation-view>\r\n\r\n <table role=\"grid\" class=\"months\">\r\n <tbody>\r\n <tr *ngFor=\"let row of calendar?.months\">\r\n <td *ngFor=\"let month of row\" role=\"gridcell\"\r\n (click)=\"viewMonth(month)\"\r\n (mouseenter)=\"hoverMonth(month, true)\"\r\n (mouseleave)=\"hoverMonth(month, false)\"\r\n [class.disabled]=\"month.isDisabled\"\r\n [class.is-highlighted]=\"month.isHovered\">\r\n <span [class.selected]=\"month.isSelected\">{{ month.label }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </bs-calendar-layout>\r\n `,\n standalone: false\n})\r\nexport class BsMonthCalendarViewComponent {\r\n @Input() calendar!: MonthsCalendarViewModel;\r\n\r\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\r\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\r\n\r\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\r\n @Output() onHover = new EventEmitter<CellHoverEvent>();\r\n\r\n navigateTo(event: BsNavigationDirection): void {\r\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\r\n this.onNavigate.emit({ step: { year: step } });\r\n }\r\n\r\n viewMonth(month: CalendarCellViewModel) {\r\n this.onSelect.emit(month);\r\n }\r\n\r\n hoverMonth(cell: CalendarCellViewModel, isHovered: boolean) {\r\n this.onHover.emit({ cell, isHovered });\r\n }\r\n\r\n changeViewMode(event: BsDatepickerViewMode): void {\r\n this.onViewMode.emit(event as BsDatepickerViewMode);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { yearsPerCalendar } from '../../engine/format-years-calendar';\r\nimport {\r\n BsDatepickerViewMode,\r\n BsNavigationDirection,\r\n BsNavigationEvent,\r\n CalendarCellViewModel,\r\n CellHoverEvent,\r\n YearsCalendarViewModel\r\n} from '../../models';\r\n\r\n@Component({\n selector: 'bs-years-calendar-view',\n template: `\r\n <bs-calendar-layout>\r\n <bs-datepicker-navigation-view\r\n [calendar]=\"calendar\"\r\n (onNavigate)=\"navigateTo($event)\"\r\n (onViewMode)=\"changeViewMode($event)\"\r\n ></bs-datepicker-navigation-view>\r\n\r\n <table role=\"grid\" class=\"years\">\r\n <tbody>\r\n <tr *ngFor=\"let row of calendar?.years\">\r\n <td *ngFor=\"let year of row\" role=\"gridcell\"\r\n (click)=\"viewYear(year)\"\r\n (mouseenter)=\"hoverYear(year, true)\"\r\n (mouseleave)=\"hoverYear(year, false)\"\r\n [class.disabled]=\"year.isDisabled\"\r\n [class.is-highlighted]=\"year.isHovered\">\r\n <span [class.selected]=\"year.isSelected\">{{ year.label }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </bs-calendar-layout>\r\n `,\n standalone: false\n})\r\nexport class BsYearsCalendarViewComponent {\r\n @Input() calendar!: YearsCalendarViewModel;\r\n\r\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\r\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\r\n\r\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\r\n @Output() onHover = new EventEmitter<CellHoverEvent>();\r\n\r\n navigateTo(event: BsNavigationDirection): void {\r\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\r\n this.onNavigate.emit({ step: { year: step * yearsPerCalendar } });\r\n }\r\n\r\n viewYear(year: CalendarCellViewModel) {\r\n this.onSelect.emit(year);\r\n }\r\n\r\n hoverYear(cell: CalendarCellViewModel, isHovered: boolean) {\r\n this.onHover.emit({ cell, isHovered });\r\n }\r\n\r\n changeViewMode(event: BsDatepickerViewMode): void {\r\n this.onViewMode.emit(event);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { take } from 'rxjs/operators';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { getFullYear, getMonth } from '@period-year-norway/ngx-bootstrap/chronos';\r\nimport { PositioningService } from '@period-year-norway/ngx-bootstrap/positioning';\r\nimport { TimepickerComponent } from '@period-year-norway/ngx-bootstrap/timepicker';\r\n\r\nimport { datepickerAnimation } from '../../datepicker-animations';\r\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\r\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\r\nimport { CalendarCellViewModel, DayViewModel } from '../../models';\r\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\r\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\r\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\r\n\r\n@Component({\n selector: 'bs-datepicker-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation],\n standalone: false\n})\r\nexport class BsDatepickerContainerComponent extends BsDatepickerAbstractComponent\r\n implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n set value(value: Date|undefined) {\r\n this._effects?.setValue(value);\r\n }\r\n\r\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n animationState = 'void';\r\n override isRangePicker = false;\r\n\r\n _subs: Subscription[] = [];\r\n\r\n @ViewChild('startTP') startTimepicker?: TimepickerComponent;\r\n\r\n constructor(\r\n _renderer: Renderer2,\r\n private _config: BsDatepickerConfig,\r\n private _store: BsDatepickerStore,\r\n private _element: ElementRef,\r\n private _actions: BsDatepickerActions,\r\n _effects: BsDatepickerEffects,\r\n private _positionService: PositioningService\r\n ) {\r\n super();\r\n this._effects = _effects;\r\n\r\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\r\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\r\n }\r\n\r\n ngOnInit(): void {\r\n this._positionService.setOptions({\r\n modifiers: {\r\n flip: {\r\n enabled: this._config.adaptivePosition\r\n },\r\n preventOverflow: {\r\n enabled: this._config.adaptivePosition\r\n }\r\n },\r\n allowedPositions: this._config.allowedPositions\r\n });\r\n\r\n this._positionService.event$?.pipe(take(1))\r\n .subscribe(() => {\r\n this._positionService.disable();\r\n\r\n if (this._config.isAnimated) {\r\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\r\n\r\n return;\r\n }\r\n\r\n this.animationState = 'unanimated';\r\n });\r\n\r\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\r\n this.containerClass = this._config.containerClass;\r\n this.showTodayBtn = this._config.showTodayButton;\r\n this.todayBtnLbl = this._config.todayButtonLabel;\r\n this.todayPos = this._config.todayPosition;\r\n this.showClearBtn = this._config.showClearButton;\r\n this.clearBtnLbl = this._config.clearButtonLabel;\r\n this.clearPos = this._config.clearPosition;\r\n this.customRangeBtnLbl = this._config.customRangeButtonLabel;\r\n this.withTimepicker = this._config.withTimepicker;\r\n this._effects?.init(this._store)\r\n // intial state options\r\n .setOptions(this._config)\r\n // data binding view --> model\r\n .setBindings(this)\r\n // set event handlers\r\n .setEventHandlers(this)\r\n .registerDatepickerSideEffects();\r\n\r\n let currentDate: Date;\r\n // todo: move it somewhere else\r\n // on selected date change\r\n this._subs.push(\r\n this._store.select((state: any) => state.selectedDate).subscribe((date: any) => {\r\n currentDate = date;\r\n this.valueChange.emit(date);\r\n })\r\n );\r\n this._subs.push(\r\n this._store.select((state: any) => state.selectedTime).subscribe((time: any) => {\r\n if (!time[0] || !(time[0] instanceof Date) || time[0] === currentDate) {\r\n return;\r\n }\r\n\r\n this.valueChange.emit(time[0]);\r\n })\r\n );\r\n\r\n this._store.dispatch(this._actions.changeViewMode(this._config.startView));\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.selectedTimeSub.add(this.selectedTime?.subscribe((val) => {\r\n if (Array.isArray(val) && val.length >= 1) {\r\n this.startTimepicker?.writeValue(val[0]);\r\n }\r\n }));\r\n this.startTimepicker?.registerOnChange((val: any) => {\r\n this.timeSelectHandler(val, 0);\r\n });\r\n }\r\n\r\n get isTopPosition(): boolean {\r\n return this._element.nativeElement.classList.contains('top');\r\n }\r\n\r\n positionServiceEnable(): void {\r\n this._positionService.enable();\r\n }\r\n\r\n override timeSelectHandler(date: Date, index: number) {\r\n this._store.dispatch(this._actions.selectTime(date, index));\r\n }\r\n\r\n override daySelectHandler(day: DayViewModel): void {\r\n if (!day) {\r\n return;\r\n }\r\n\r\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\r\n\r\n if (isDisabled) {\r\n return;\r\n }\r\n\r\n this._store.dispatch(this._actions.select(day.date));\r\n }\r\n\r\n override monthSelectHandler(day: CalendarCellViewModel): void {\r\n if (!day || day.isDisabled) {\r\n return;\r\n }\r\n\r\n this._store.dispatch(\r\n this._actions.navigateTo({\r\n unit: {\r\n month: getMonth(day.date),\r\n year: getFullYear(day.date)\r\n },\r\n viewMode: 'day'\r\n })\r\n );\r\n }\r\n\r\n override yearSelectHandler(day: CalendarCellViewModel): void {\r\n if (!day || day.isDisabled) {\r\n return;\r\n }\r\n\r\n this._store.dispatch(\r\n this._actions.navigateTo({\r\n unit: {\r\n year: getFullYear(day.date)\r\n },\r\n viewMode: 'month'\r\n })\r\n );\r\n }\r\n\r\n override setToday(): void {\r\n this._store.dispatch(this._actions.select(new Date()));\r\n }\r\n\r\n override clearDate(): void {\r\n this._store.dispatch(this._actions.select(undefined));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n for (const sub of this._subs) {\r\n sub.unsubscribe();\r\n }\r\n this.selectedTimeSub.unsubscribe();\r\n this._effects?.destroy();\r\n }\r\n}\r\n","<!-- days calendar view mode -->\r\n<div class=\"bs-datepicker\" [ngClass]=\"containerClass\" *ngIf=\"viewMode | async\">\r\n <div class=\"bs-datepicker-container\"\r\n [@datepickerAnimation]=\"animationState\"\r\n (@datepickerAnimation.done)=\"positionServiceEnable()\">\r\n <!--calendars-->\r\n <div class=\"bs-calendar-container\" [ngSwitch]=\"viewMode | async\" role=\"application\">\r\n <!--days calendar-->\r\n <ng-container *ngSwitchCase=\"'day'\">\r\n <div class=\"bs-media-container\">\r\n <bs-days-calendar-view\r\n *ngFor=\"let calendar of daysCalendar$ | async\"\r\n [class.bs-datepicker-multiple]=\"multipleCalendars\"\r\n [calendar]=\"calendar\"\r\n [options]=\"options$ | async\"\r\n (onNavigate)=\"navigateTo($event)\"\r\n (onViewMode)=\"setViewMode($event)\"\r\n (onHover)=\"dayHoverHandler($event)\"\r\n (onHoverWeek)=\"weekHoverHandler($event)\"\r\n (onSelect)=\"daySelectHandler($event)\">\r\n </bs-days-calendar-view>\r\n </div>\r\n <div *ngIf=\"withTimepicker\" class=\"bs-timepicker-in-datepicker-container\">\r\n <timepicker #startTP></timepicker>\r\n <timepicker #endTP *ngIf=\"isRangePicker\"></timepicker>\r\n </div>\r\n </ng-container>\r\n\r\n <!--months calendar-->\r\n <div *ngSwitchCase=\"'month'\" class=\"bs-media-container\">\r\n <bs-month-calendar-view\r\n *ngFor=\"let calendar of monthsCalendar | async\"\r\n [class.bs-datepicker-multiple]=\"multipleCalendars\"\r\n [calendar]=\"calendar\"\r\n (onNavigate)=\"navigateTo($event)\"\r\n (onViewMode)=\"setViewMode($event)\"\r\n (onHover)=\"monthHoverHandler($event)\"\r\n (onSelect)=\"monthSelectHandler($event)\">\r\n </bs-month-calendar-view>\r\n </div>\r\n\r\n <!--years calendar-->\r\n <div *ngSwitchCase=\"'year'\" class=\"bs-media-container\">\r\n <bs-years-calendar-view\r\n *ngFor=\"let calendar of yearsCalendar | async\"\r\n [class.bs-datepicker-multiple]=\"multipleCalendars\"\r\n [calendar]=\"calendar\"\r\n (onNavigate)=\"navigateTo($event)\"\r\n (onViewMode)=\"setViewMode($event)\"\r\n (onHover)=\"yearHoverHandler($event)\"\r\n (onSelect)=\"yearSelectHandler($event)\">\r\n </bs-years-calendar-view>\r\n </div>\r\n </div>\r\n\r\n <!--applycancel buttons-->\r\n <div class=\"bs-datepicker-buttons\" *ngIf=\"false\">\r\n <button class=\"btn btn-success\" type=\"button\">Apply</button>\r\n <button class=\"btn btn-default\" type=\"button\">Cancel</button>\r\n </div>\r\n\r\n <div class=\"bs-datepicker-buttons\" *ngIf=\"showTodayBtn || showClearBtn\">\r\n <div class=\"btn-today-wrapper\"\r\n [class.today-left]=\"todayPos === 'left'\"\r\n [class.today-right]=\"todayPos === 'right'\"\r\n [class.today-center]=\"todayPos === 'center'\"\r\n *ngIf=\"showTodayBtn\">\r\n <button class=\"btn btn-success\" (click)=\"setToday()\">{{todayBtnLbl}}</button>\r\n </div>\r\n\r\n <div class=\"btn-clear-wrapper\"\r\n [class.clear-left]=\"clearPos === 'left'\"\r\n [class.clear-right]=\"clearPos === 'right'\"\r\n [class.clear-center]=\"clearPos === 'center'\"\r\n *ngIf=\"showClearBtn\">\r\n <button class=\"btn btn-success\" (click)=\"clearDate()\">{{clearBtnLbl}}</button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!--custom dates or date ranges picker-->\r\n <div class=\"bs-datepicker-custom-range\" *ngIf=\"customRanges && customRanges.length > 0\">\r\n <bs-custom-date-view\r\n [selectedRange]=\"chosenRange\"\r\n [ranges]=\"customRanges\"\r\n [customRangeLabel]=\"customRangeBtnLbl\"\r\n (onSelect)=\"setRangeOnCalendar($event)\">\r\n </bs-custom-date-view>\r\n </div>\r\n</div>\r\n","import {\r\n AfterViewInit,\r\n ComponentRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { ComponentLoader, ComponentLoaderFactory } from '@period-year-norway/ngx-bootstrap/component-loader';\r\nimport { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { BsDatepickerConfig } from './bs-datepicker.config';\r\nimport { BsDatepickerViewMode, DatepickerDateCustomClasses, DatepickerDateTooltipText } from './models';\r\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\r\nimport { copyTime } from './utils/copy-time-utils';\r\nimport { checkBsValue, setCurrentTimeOnDateSelect } from './utils/bs-calendar-utils';\r\n\r\n@Directive({\n selector: '[bsDatepicker]',\n exportAs: 'bsDatepicker',\n standalone: false\n})\r\nexport class BsDatepickerDirective implements OnInit, OnDestroy, OnChanges, AfterViewInit {\r\n /**\r\n * Placement of a datepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\r\n */\r\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\r\n /**\r\n * Specifies events that should trigger. Supports a space separated list of\r\n * event names.\r\n */\r\n @Input() triggers = 'click';\r\n /**\r\n * Close datepicker on outside click\r\n */\r\n @Input() outsideClick = true;\r\n /**\r\n * A selector specifying the element the datepicker should be appended to.\r\n */\r\n @Input() container = 'body';\r\n\r\n @Input() outsideEsc = true;\r\n /**\r\n * Emits an event when the datepicker is shown\r\n */\r\n @Output() onShown: EventEmitter<unknown>;\r\n /**\r\n * Emits an event when the datepicker is hidden\r\n */\r\n @Output() onHidden: EventEmitter<unknown>;\r\n isOpen$: BehaviorSubject<boolean>;\r\n isDestroy$ = new Subject();\r\n /**\r\n * Indicates whether datepicker's content is enabled or not\r\n */\r\n @Input() isDisabled = false;\r\n /**\r\n * Minimum date which is available for selection\r\n */\r\n @Input() minDate?: Date;\r\n /**\r\n * Maximum date which is available for selection\r\n */\r\n @Input() maxDate?: Date;\r\n /**\r\n * Minimum view mode : day, month, or year\r\n */\r\n @Input() minMode?: BsDatepickerViewMode;\r\n /**\r\n * Disable Certain days in the week\r\n */\r\n @Input() daysDisabled?: number[];\r\n /**\r\n * Disable specific dates\r\n */\r\n @Input() datesDisabled?: Date[];\r\n /**\r\n * Enable specific dates\r\n */\r\n @Input() datesEnabled?: Date[];\r\n /**\r\n * Date custom classes\r\n */\r\n @Input() dateCustomClasses?: DatepickerDateCustomClasses[];\r\n /**\r\n * Date tooltip text\r\n */\r\n @Input() dateTooltipTexts?: DatepickerDateTooltipText[];\r\n /**\r\n * Emits when datepicker value has been changed\r\n */\r\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\r\n protected _subs: Subscription[] = [];\r\n private _datepicker: ComponentLoader<BsDatepickerContainerComponent>;\r\n private _datepickerRef?: ComponentRef<BsDatepickerContainerComponent>;\r\n private readonly _dateInputFormat$ = new Subject<string | undefined>();\r\n\r\n constructor(public _config: BsDatepickerConfig,\r\n private _elementRef: ElementRef,\r\n private _renderer: Renderer2,\r\n _viewContainerRef: ViewContainerRef,\r\n cis: ComponentLoaderFactory) {\r\n // todo: assign only subset of fields\r\n Object.assign(this, this._config);\r\n this._datepicker = cis.createLoader<BsDatepickerContainerComponent>(\r\n _elementRef,\r\n _viewContainerRef,\r\n _renderer\r\n );\r\n this.onShown = this._datepicker.onShown;\r\n this.onHidden = this._datepicker.onHidden;\r\n this.isOpen$ = new BehaviorSubject(this.isOpen);\r\n }\r\n\r\n /**\r\n * Returns whether or not the datepicker is currently being shown\r\n */\r\n @Input()\r\n get isOpen(): boolean {\r\n return this._datepicker.isShown;\r\n }\r\n\r\n set isOpen(value: boolean) {\r\n this.isOpen$.next(value);\r\n }\r\n\r\n _bsValue?: Date;\r\n\r\n /**\r\n * Initial value of datepicker\r\n */\r\n @Input()\r\n set bsValue(value: Date | undefined) {\r\n if (this._bsValue && value && this._bsValue.getTime() === value.getTime()) {\r\n return;\r\n }\r\n\r\n if (!this._bsValue && value && !this._config.withTimepicker) {\r\n const now = new Date();\r\n copyTime(value, now);\r\n }\r\n\r\n if (value && this.bsConfig?.initCurrentTime) {\r\n value = setCurrentTimeOnDateSelect(value);\r\n }\r\n\r\n this._bsValue = value;\r\n this.bsValueChange.emit(value);\r\n }\r\n\r\n get dateInputFormat$(): Observable<string | undefined> {\r\n return this._dateInputFormat$;\r\n }\r\n\r\n /**\r\n * Config object for datepicker\r\n */\r\n @Input() bsConfig?: Partial<BsDatepickerConfig>;\r\n\r\n ngOnInit(): void {\r\n this._datepicker.listen({\r\n outsideClick: this.outsideClick,\r\n outsideEsc: this.outsideEsc,\r\n triggers: this.triggers,\r\n show: () => this.show()\r\n });\r\n this.setConfig();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"bsConfig\"]) {\r\n if (changes[\"bsConfig\"].currentValue?.initCurrentTime && changes[\"bsConfig\"].currentValue?.initCurrentTime !== changes[\"bsConfig\"].previousValue?.initCurrentTime && this._bsValue) {\r\n this._bsValue = setCurrentTimeOnDateSelect(this._bsValue);\r\n this.bsValueChange.emit(this._bsValue);\r\n }\r\n\r\n this.setConfig();\r\n this._dateInputFormat$.next(this.bsConfig && this.bsConfig.dateInputFormat);\r\n }\r\n\r\n if (!this._datepickerRef || !this._datepickerRef.instance) {\r\n return;\r\n }\r\n\r\n if (changes[\"minDate\"]) {\r\n this._datepickerRef.instance.minDate = this.minDate;\r\n }\r\n\r\n if (changes[\"maxDate\"]) {\r\n this._datepickerRef.instance.maxDate = this.maxDate;\r\n }\r\n\r\n if (changes[\"daysDisabled\"]) {\r\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\r\n }\r\n\r\n if (changes[\"datesDisabled\"]) {\r\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\r\n }\r\n\r\n if (changes[\"datesEnabled\"]) {\r\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\r\n }\r\n\r\n if (changes[\"isDisabled\"]) {\r\n if (this._elementRef?.nativeElement) {\r\n this._elementRef.nativeElement.setAttribute('readonly', this.isDisabled);\r\n }\r\n this._datepickerRef.instance.isDisabled = this.isDisabled;\r\n }\r\n\r\n if (changes[\"dateCustomClasses\"]) {\r\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\r\n }\r\n\r\n if (changes[\"dateTooltipTexts\"]) {\r\n this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\r\n }\r\n }\r\n\r\n initSubscribes() {\r\n // if date changes from external source (model -> view)\r\n this._subs.push(\r\n this.bsValueChange.subscribe((value: Date) => {\r\n if (this._datepickerRef) {\r\n this._datepickerRef.instance.value = value;\r\n }\r\n })\r\n );\r\n\r\n // if date changes from picker (view -> model)\r\n if (this._datepickerRef) {\r\n this._subs.push(\r\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\r\n this.bsValue = value;\r\n this.hide();\r\n })\r\n );\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.isOpen$.pipe(\r\n filter(isOpen => isOpen !== this.isOpen),\r\n takeUntil(this.isDestroy$)\r\n )\r\n .subscribe(() => this.toggle());\r\n }\r\n\r\n /**\r\n * Opens an element’s datepicker. This is considered a “manual” triggering of\r\n * the datepicker.\r\n */\r\n show(): void {\r\n if (this._datepicker.isShown) {\r\n return;\r\n }\r\n\r\n this.setConfig();\r\n\r\n this._datepickerRef = this._datepicker\r\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\r\n .attach(BsDatepickerContainerComponent)\r\n .to(this.container)\r\n .position({ attachment: this.placement })\r\n .show({ placement: this.placement });\r\n\r\n this.initSubscribes();\r\n }\r\n\r\n /**\r\n * Closes an element’s datepicker. This is considered a “manual” triggering of\r\n * the datepicker.\r\n */\r\n hide(): void {\r\n if (this.isOpen) {\r\n this._datepicker.hide();\r\n }\r\n for (const sub of this._subs) {\r\n sub.unsubscribe();\r\n }\r\n\r\n if (this._config.returnFocusToInput) {\r\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\r\n }\r\n }\r\n\r\n /**\r\n * Toggles an element’s datepicker. This is considered a “manual” triggering\r\n * of the datepicker.\r\n */\r\n toggle(): void {\r\n if (this.isOpen) {\r\n return this.hide();\r\n }\r\n\r\n this.show();\r\n }\r\n\r\n /**\r\n * Set config for datepicker\r\n */\r\n setConfig(): void {\r\n this._config = Object.assign({}, this._config, this.bsConfig, {\r\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\r\n isDisabled: this.isDisabled,\r\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\r\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\r\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\r\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\r\n dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,\r\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\r\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\r\n minMode: this.minMode || this.bsConfig && this.bsConfig.minMode,\r\n initCurrentTime: this.bsConfig?.initCurrentTime\r\n });\r\n }\r\n\r\n unsubscribeSubscriptions() {\r\n if (this._subs?.length) {\r\n this._subs.map(sub => sub.unsubscribe());\r\n this._subs.length = 0;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._datepicker.dispose();\r\n this.isOpen$.next(false);\r\n if (this.isDestroy$) {\r\n this.isDestroy$.next(null);\r\n this.isDestroy$.complete();\r\n }\r\n this.unsubscribeSubscriptions();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BsDatepickerConfig } from './bs-datepicker.config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BsDatepickerInlineConfig extends BsDatepickerConfig { }\r\n","import { Component, ElementRef, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { BsDatepickerContainerComponent } from './bs-datepicker-container.component';\r\n\r\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\r\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\r\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\r\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\r\n\r\nimport { PositioningService } from '@period-year-norway/ngx-bootstrap/positioning';\r\nimport { datepickerAnimation } from '../../datepicker-animations';\r\n\r\n@Component({\n selector: 'bs-datepicker-inline-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation],\n standalone: false\n})\r\nexport class BsDatepickerInlineContainerComponent extends BsDatepickerContainerComponent\r\n implements OnInit, OnDestroy {\r\n\r\n constructor(\r\n _renderer: Renderer2,\r\n _config: BsDatepickerConfig,\r\n _store: BsDatepickerStore,\r\n _element: ElementRef,\r\n _actions: BsDatepickerActions,\r\n _effects: BsDatepickerEffects,\r\n _positioningService: PositioningService\r\n ) {\r\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\r\n\r\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\r\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\r\n }\r\n}\r\n","import {\r\n ComponentRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewContainerRef\r\n} from '@angular/core';\r\n\r\nimport { ComponentLoader, ComponentLoaderFactory } from '@period-year-norway/ngx-bootstrap/component-loader';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { BsDatepickerInlineConfig } from './bs-datepicker-inline.config';\r\n\r\nimport { BsDatepickerConfig } from './bs-datepicker.config';\r\nimport { DatepickerDateCustomClasses, DatepickerDateTooltipText } from './models';\r\nimport { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\r\nimport { copyTime } from './utils/copy-time-utils';\r\nimport { checkBsValue, setCurrentTimeOnDateSelect } from './utils/bs-calendar-utils';\r\n\r\n@Directive({\n selector: 'bs-datepicker-inline',\n exportAs: 'bsDatepickerInline',\n standalone: false\n})\r\nexport class BsDatepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\r\n /**\r\n * Config object for datepicker\r\n */\r\n @Input() bsConfig?: Partial<BsDatepickerInlineConfig>;\r\n /**\r\n * Indicates whether datepicker is enabled or not\r\n */\r\n @Input() isDisabled = false;\r\n /**\r\n * Minimum date which is available for selection\r\n */\r\n @Input() minDate?: Date;\r\n /**\r\n * Maximum date which is available for selection\r\n */\r\n @Input() maxDate?: Date;\r\n /**\r\n * Date custom classes\r\n */\r\n @Input() dateCustomClasses?: DatepickerDateCustomClasses[];\r\n /**\r\n * Date tooltip text\r\n */\r\n @Input() dateTooltipTexts?: DatepickerDateTooltipText[];\r\n /**\r\n * Disable specific dates\r\n */\r\n @Input() datesEnabled?: Date[];\r\n /**\r\n * Enable specific dates\r\n */\r\n @Input() datesDisabled?: Date[];\r\n /**\r\n * Emits when datepicker value has been changed\r\n */\r\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\r\n protected _subs: Subscription[] = [];\r\n private readonly _datepicker: ComponentLoader<BsDatepickerInlineContainerComponent>;\r\n private _datepickerRef?: ComponentRef<BsDatepickerInlineContainerComponent>;\r\n\r\n constructor(\r\n public _config: BsDatepickerInlineConfig,\r\n private _elementRef: ElementRef,\r\n _renderer: Renderer2,\r\n _viewContainerRef: ViewContainerRef,\r\n cis: ComponentLoaderFactory\r\n ) {\r\n // todo: assign only subset of fields\r\n Object.assign(this, this._config);\r\n this._datepicker = cis.createLoader<BsDatepickerInlineContainerComponent>(\r\n _elementRef,\r\n _viewContainerRef,\r\n _renderer\r\n );\r\n }\r\n\r\n _bsValue?: Date;\r\n\r\n /**\r\n * Initial value of datepicker\r\n */\r\n @Input()\r\n set bsValue(value: Date | undefined) {\r\n if (this._bsValue === value) {\r\n return;\r\n }\r\n\r\n if (!this._bsValue && value && !this._config.withTimepicker) {\r\n const now = new Date();\r\n copyTime(value, now);\r\n }\r\n\r\n if (value && this.bsConfig?.initCurrentTime) {\r\n value = setCurrentTimeOnDateSelect(value);\r\n }\r\n\r\n this._bsValue = value;\r\n this.bsValueChange.emit(value);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setConfig();\r\n this.initSubscribes();\r\n }\r\n\r\n initSubscribes() {\r\n this.unsubscribeSubscriptions();\r\n this._subs.push(\r\n this.bsValueChange.subscribe((value: Date) => {\r\n if (this._datepickerRef) {\r\n this._datepickerRef.instance.value = value;\r\n }\r\n })\r\n );\r\n\r\n if (this._datepickerRef) {\r\n this._subs.push(\r\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\r\n this.bsValue = value;\r\n })\r\n );\r\n }\r\n }\r\n\r\n unsubscribeSubscriptions() {\r\n if (this._subs?.length) {\r\n this._subs.map(sub => sub.unsubscribe());\r\n this._subs.length = 0;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"bsConfig\"]) {\r\n if (changes[\"bsConfig\"].currentValue?.initCurrentTime && changes[\"bsConfig\"].currentValue?.initCurrentTime !== changes[\"bsConfig\"].previousValue?.initCurrentTime && this._bsValue) {\r\n this._bsValue = setCurrentTimeOnDateSelect(this._bsValue);\r\n this.bsValueChange.emit(this._bsValue);\r\n }\r\n }\r\n\r\n if (!this._datepickerRef || !this._datepickerRef.instance) {\r\n return;\r\n }\r\n\r\n if (changes[\"minDate\"]) {\r\n this._datepickerRef.instance.minDate = this.minDate;\r\n }\r\n\r\n if (changes[\"maxDate\"]) {\r\n this._datepickerRef.instance.maxDate = this.maxDate;\r\n }\r\n\r\n if (changes[\"datesDisabled\"]) {\r\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\r\n }\r\n\r\n if (changes[\"datesEnabled\"]) {\r\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\r\n this._datepickerRef.instance.value = this._bsValue;\r\n }\r\n\r\n if (changes[\"isDisabled\"]) {\r\n this._datepickerRef.instance.isDisabled = this.isDisabled;\r\n }\r\n\r\n if (changes[\"dateCustomClasses\"]) {\r\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\r\n }\r\n\r\n if (changes[\"dateTooltipTexts\"]) {\r\n this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\r\n }\r\n\r\n this.setConfig();\r\n }\r\n\r\n /**\r\n * Set config for datepicker\r\n */\r\n setConfig(): void {\r\n if (this._datepicker) {\r\n this._datepicker.hide();\r\n }\r\n\r\n this._config = Object.assign({}, this._config, this.bsConfig, {\r\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\r\n isDisabled: this.isDisabled,\r\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\r\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\r\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\r\n dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,\r\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\r\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\r\n initCurrentTime: this.bsConfig?.initCurrentTime\r\n });\r\n\r\n\r\n this._datepickerRef = this._datepicker\r\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\r\n .attach(BsDatepickerInlineContainerComponent)\r\n .to(this._elementRef)\r\n .show();\r\n\r\n this.initSubscribes();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._datepicker.dispose();\r\n this.unsubscribeSubscriptions();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BsDatepickerConfig } from './bs-datepicker.config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BsDaterangepickerInlineConfig extends BsDatepickerConfig {\r\n // DatepickerRenderOptions\r\n override displayMonths = 2;\r\n /** turn on/off animation */\r\n override isAnimated = false;\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { take } from 'rxjs/operators';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { getFullYear, getMonth } from '@period-year-norway/ngx-bootstrap/chronos';\r\nimport { PositioningService } from '@period-year-norway/ngx-bootstrap/positioning';\r\nimport { TimepickerComponent } from '@period-year-norway/ngx-bootstrap/timepicker';\r\n\r\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\r\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\r\nimport { CalendarCellViewModel, DayViewModel } from '../../models';\r\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\r\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\r\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\r\nimport { datepickerAnimation } from '../../datepicker-animations';\r\nimport { BsCustomDates } from './bs-custom-dates-view.component';\r\nimport { dayInMilliseconds } from '../../reducer/_defaults';\r\n\r\n@Component({\n selector: 'bs-daterangepicker-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation],\n standalone: false\n})\r\nexport class BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent\r\n implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n set value(value: (Date|undefined)[] | undefined) {\r\n this._effects?.setRangeValue(value);\r\n }\r\n\r\n valueChange = new EventEmitter<Date[]>();\r\n animationState = 'void';\r\n\r\n _rangeStack: Date[] = [];\r\n override chosenRange: Date[] = [];\r\n _subs: Subscription[] = [];\r\n override isRangePicker = true;\r\n\r\n @ViewChild('startTP') startTimepicker?: TimepickerComponent;\r\n @ViewChild('endTP') endTimepicker?: TimepickerComponent;\r\n\r\n constructor(\r\n _renderer: Renderer2,\r\n private _config: BsDatepickerConfig,\r\n private _store: BsDatepickerStore,\r\n private _element: ElementRef,\r\n private _actions: BsDatepickerActions,\r\n _effects: BsDatepickerEffects,\r\n private _positionService: PositioningService\r\n ) {\r\n super();\r\n this._effects = _effects;\r\n\r\n this.customRanges = this._config.ranges || [];\r\n this.customRangeBtnLbl = this._config.customRangeButtonLabel;\r\n\r\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\r\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\r\n }\r\n\r\n ngOnInit(): void {\r\n this._positionService.setOptions({\r\n modifiers: {\r\n flip: {\r\n enabled: this._config.adaptivePosition\r\n },\r\n preventOverflow: {\r\n enabled: this._config.adaptivePosition\r\n }\r\n },\r\n allowedPositions: this._config.allowedPositions\r\n });\r\n\r\n this._positionService.event$?.pipe(take(1))\r\n .subscribe(() => {\r\n this._positionService.disable();\r\n\r\n if (this._config.isAnimated) {\r\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\r\n\r\n return;\r\n }\r\n\r\n this.animationState = 'unanimated';\r\n });\r\n this.containerClass = this._config.containerClass;\r\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\r\n this.withTimepicker = this._config.withTimepicker;\r\n this._effects?.init(this._store)\r\n // intial state options\r\n // todo: fix this, split configs\r\n .setOptions(this._config)\r\n // data binding view --> model\r\n .setBindings(this)\r\n // set event handlers\r\n .setEventHandlers(this)\r\n .registerDatepickerSideEffects();\r\n let currentDate: Date[] | undefined;\r\n // todo: move it somewhere else\r\n // on selected date change\r\n this._subs.push(\r\n this._store\r\n .select(state => state.selectedRange)\r\n .subscribe(dateRange => {\r\n currentDate = dateRange;\r\n this.valueChange.emit(dateRange);\r\n this.chosenRange = dateRange || [];\r\n })\r\n );\r\n\r\n this._subs.push(\r\n this._store\r\n .select(state => state.selectedTime)\r\n .subscribe((time:any) => {\r\n if ((!time[0] || !time[1]) ||\r\n (!(time[0] instanceof Date) || !(time[1] instanceof Date)) ||\r\n (currentDate && (time[0] === currentDate[0] && time[1] === currentDate[1]))\r\n ) {\r\n return;\r\n }\r\n\r\n this.valueChange.emit(time);\r\n this.chosenRange = time || [];\r\n })\r\n );\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.selectedTimeSub.add(this.selectedTime?.subscribe((val) => {\r\n if (Array.isArray(val) && val.length >= 2) {\r\n this.startTimepicker?.writeValue(val[0]);\r\n this.endTimepicker?.writeValue(val[1]);\r\n }\r\n }));\r\n this.startTimepicker?.registerOnChange((val) => {\r\n this.timeSelectHandler(val, 0);\r\n });\r\n this.endTimepicker?.registerOnChange((val) => {\r\n this.timeSelectHandler(val, 1);\r\n });\r\n }\r\n\r\n get isTopPosition(): boolean {\r\n return this._element.nativeElement.classList.contains('top');\r\n }\r\n\r\n positionServiceEnable(): void {\r\n this._positionService.enable();\r\n }\r\n\r\n override timeSelectHandler(date: Date, index: number): void {\r\n this._store.dispatch(this._actions.selectTime(date, index));\r\n }\r\n\r\n override daySelectHandler(day: DayViewModel): void {\r\n if (!day) {\r\n return;\r\n }\r\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\r\n\r\n if (isDisabled) {\r\n return;\r\n }\r\n this.rangesProcessing(day);\r\n }\r\n\r\n override monthSelectHandler(day: CalendarCellViewModel): void {\r\n if (!day || day.isDisabled) {\r\n return;\r\n }\r\n\r\n day.isSelected = true;\r\n\r\n if (this._config.minMode !== 'month') {\r\n if (day.isDisabled) {\r\n return;\r\n }\r\n this._store.dispatch(\r\n this._actions.navigateTo({\r\n unit: {\r\n month: getMonth(day.date),\r\n year: getFullYear(day.date)\r\n },\r\n viewMode: 'day'\r\n })\r\n );\r\n\r\n return;\r\n }\r\n this.rangesProcessing(day);\r\n }\r\n\r\n override yearSelectHandler(day: CalendarCellViewModel): void {\r\n if (!day || day.isDisabled) {\r\n return;\r\n }\r\n\r\n day.isSelected = true;\r\n\r\n if (this._config.minMode !== 'year') {\r\n if (day.isDisabled) {\r\n return;\r\n }\r\n this._store.dispatch(\r\n this._actions.navigateTo({\r\n unit: {\r\n year: getFullYear(day.date)\r\n },\r\n viewMode: 'month'\r\n })\r\n );\r\n\r\n return;\r\n }\r\n this.rangesProcessing(day);\r\n }\r\n\r\n rangesProcessing(day: CalendarCellViewModel): void {\r\n // if only one date is already selected\r\n // and user clicks on previous date\r\n // start selection from new date\r\n // but if new date is after initial one\r\n // than finish selection\r\n\r\n if (this._rangeStack.length === 1) {\r\n this._rangeStack =\r\n day.date >= this._rangeStack[0]\r\n ? [this._rangeStack[0], day.date]\r\n : [day.date];\r\n }\r\n\r\n if (this._config.maxDateRange) {\r\n this.setMaxDateRangeOnCalendar(day.date);\r\n }\r\n\r\n if (this._rangeStack.length === 0) {\r\n this._rangeStack = [day.date];\r\n\r\n if (this._config.maxDateRange) {\r\n this.setMaxDateRangeOnCalendar(day.date);\r\n }\r\n }\r\n\r\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\r\n\r\n if (this._rangeStack.length === 2) {\r\n this._rangeStack = [];\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n for (const sub of this._subs) {\r\n sub.unsubscribe();\r\n }\r\n this.selectedTimeSub.unsubscribe();\r\n this._effects?.destroy();\r\n }\r\n\r\n override setRangeOnCalendar(dates: BsCustomDates): void {\r\n if (dates) {\r\n this._rangeStack = dates.value instanceof Date ? [dates.value] : dates.value;\r\n }\r\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\r\n }\r\n\r\n setMaxDateRangeOnCalendar(currentSelection: Date): void {\r\n let maxDateRange = new Date(currentSelection);\r\n\r\n if (this._config.maxDate) {\r\n const maxDateValueInMilliseconds = this._config.maxDate.getTime();\r\n const maxDateRangeInMilliseconds = currentSelection.getTime() + ((this._config.maxDateRange || 0) * dayInMilliseconds );\r\n maxDateRange = maxDateRangeInMilliseconds > maxDateValueInMilliseconds ?\r\n new Date(this._config.maxDate) :\r\n new Date(maxDateRangeInMilliseconds);\r\n } else {\r\n maxDateRange.setDate(currentSelection.getDate() + (this._config.maxDateRange || 0));\r\n }\r\n\r\n this._effects?.setMaxDate(maxDateRange);\r\n }\r\n}\r\n","import { OnInit, OnDestroy, ElementRef, Component, Renderer2 } from '@angular/core';\r\nimport { BsDaterangepickerContainerComponent } from './bs-daterangepicker-container.component';\r\n\r\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\r\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\r\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\r\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\r\n\r\nimport { PositioningService } from '@period-year-norway/ngx-bootstrap/positioning';\r\nimport { datepickerAnimation } from '../../datepicker-animations';\r\n\r\n@Component({\n selector: 'bs-daterangepicker-inline-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation],\n standalone: false\n})\r\nexport class BsDaterangepickerInlineContainerComponent extends BsDaterangepickerContainerComponent\r\n implements OnInit, OnDestroy {\r\n\r\n constructor(\r\n _renderer: Renderer2,\r\n _config: BsDatepickerConfig,\r\n _store: BsDatepickerStore,\r\n _element: ElementRef,\r\n _actions: BsDatepickerActions,\r\n _effects: BsDatepickerEffects,\r\n _positioningService: PositioningService\r\n ) {\r\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\r\n\r\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\r\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\r\n }\r\n}\r\n","import {\r\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\r\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\r\n} from '@angular/core';\r\n\r\nimport { ComponentLoader, ComponentLoaderFactory } from '@period-year-norway/ngx-bootstrap/component-loader';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { BsDatepickerConfig } from './bs-datepicker.config';\r\nimport { BsDaterangepickerInlineConfig } from './bs-daterangepicker-inline.config';\r\nimport { BsDaterangepickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\r\nimport { DatepickerDateCustomClasses } from './models';\r\nimport {\r\n checkBsValue,\r\n checkRangesWithMaxDate,\r\n setDateRangesCurrentTimeOnDateSelect\r\n} from './utils/bs-calendar-utils';\r\n\r\n@Directive({\n selector: 'bs-daterangepicker-inline',\n exportAs: 'bsDaterangepickerInline',\n standalone: false\n})\r\nexport class BsDaterangepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\r\n _bsValue?: (Date|undefined)[] | undefined;\r\n /**\r\n * Initial value of datepicker\r\n */\r\n @Input()\r\n set bsValue(value: (Date|undefined)[] | undefined) {\r\n if (this._bsValue === value) {\r\n return;\r\n }\r\n\r\n if (value && this.bsConfig?.initCurrentTime) {\r\n value = setDateRangesCurrentTimeOnDateSelect(value);\r\n }\r\n\r\n this._bsValue = value;\r\n this.bsValueChange.emit(value);\r\n }\r\n\r\n /**\r\n * Config object for datepicker\r\n */\r\n @Input() bsConfig?: Partial<BsDaterangepickerInlineConfig>;\r\n /**\r\n * Indicates whether datepicker is enabled or not\r\n */\r\n @Input() isDisabled = false;\r\n /**\r\n * Minimum date which is available for selection\r\n */\r\n @Input() minDate?: Date;\r\n /**\r\n * Maximum date which is available for selection\r\n */\r\n @Input() maxDate?: Date;\r\n /**\r\n * Date custom classes\r\n */\r\n @Input() dateCustomClasses?: DatepickerDateCustomClasses[];\r\n /**\r\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\r\n */\r\n @Input() daysDisabled?: number[];\r\n /**\r\n * Disable specific dates\r\n */\r\n @Input() datesDisabled?: Date[];\r\n /**\r\n * Disable specific dates\r\n */\r\n @Input() datesEnabled?: Date[];\r\n /**\r\n * Emits when daterangepicker value has been changed\r\n */\r\n @Output() bsValueChange: EventEmitter<(Date|undefined)[] | undefined> = new EventEmitter();\r\n\r\n protected _subs: Subscription[] = [];\r\n\r\n private readonly _datepicker: ComponentLoader<BsDaterangepickerInlineContainerComponent>;\r\n private _datepickerRef?: ComponentRef<BsDaterangepickerInlineContainerComponent>;\r\n\r\n constructor(\r\n public _config: BsDaterangepickerInlineConfig,\r\n private _elementRef: ElementRef,\r\n _renderer: Renderer2,\r\n _viewContainerRef: ViewContainerRef,\r\n cis: ComponentLoaderFactory\r\n ) {\r\n // todo: assign only subset of fields\r\n Object.assign(this, this._config);\r\n this._datepicker = cis.createLoader<BsDaterangepickerInlineContainerComponent>(\r\n _elementRef,\r\n _viewContainerRef,\r\n _renderer\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setConfig();\r\n this.initSubscribes();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"bsConfig\"]) {\r\n if (changes[\"bsConfig\"].currentValue.initCurrentTime && changes[\"bsConfig\"].currentValue.initCurrentTime !== changes[\"bsConfig\"].previousValue.initCurrentTime && this._bsValue) {\r\n this._bsValue = setDateRangesCurrentTimeOnDateSelect(this._bsValue);\r\n this.bsValueChange.emit(this._bsValue);\r\n }\r\n }\r\n\r\n if (!this._datepickerRef || !this._datepickerRef.instance) {\r\n return;\r\n }\r\n\r\n if (changes[\"minDate\"]) {\r\n this._datepickerRef.instance.minDate = this.minDate;\r\n }\r\n\r\n if (changes[\"maxDate\"]) {\r\n this._datepickerRef.instance.maxDate = this.maxDate;\r\n }\r\n\r\n if (changes[\"datesEnabled\"]) {\r\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\r\n this._datepickerRef.instance.value = this._bsValue;\r\n }\r\n\r\n if (changes[\"datesDisabled\"]) {\r\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\r\n }\r\n\r\n if (changes[\"daysDisabled\"]) {\r\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\r\n }\r\n\r\n if (changes[\"isDisabled\"]) {\r\n this._datepickerRef.instance.isDisabled = this.isDisabled;\r\n }\r\n\r\n if (changes[\"dateCustomClasses\"]) {\r\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\r\n }\r\n\r\n this.setConfig();\r\n }\r\n\r\n /**\r\n * Set config for datepicker\r\n */\r\n setConfig(): void {\r\n if (this._datepicker) {\r\n this._datepicker.hide();\r\n }\r\n\r\n this._config = Object.assign({}, this._config, this.bsConfig, {\r\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\r\n isDisabled: this.isDisabled,\r\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\r\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\r\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\r\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\r\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\r\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\r\n ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\r\n maxDateRange: this.bsConfig && this.bsConfig.maxDateRange,\r\n initCurrentTime: this.bsConfig?.initCurrentTime\r\n });\r\n\r\n this._datepickerRef = this._datepicker\r\n .provide({provide: BsDatepickerConfig, useValue: this._config})\r\n .attach(BsDaterangepickerInlineContainerComponent)\r\n .to(this._elementRef)\r\n .show();\r\n\r\n this.initSubscribes();\r\n }\r\n\r\n initSubscribes() {\r\n this.unsubscribeSubscriptions();\r\n // if date changes from external source (model -> view)\r\n this._subs.push(\r\n this.bsValueChange.subscribe((value: Date[]) => {\r\n if (this._datepickerRef) {\r\n this._datepickerRef.instance.value = value;\r\n }\r\n })\r\n );\r\n\r\n // if date changes from picker (view -> model)\r\n if (this._datepickerRef) {\r\n this._subs.push(\r\n this._datepickerRef.instance.valueChange\r\n .pipe(\r\n filter((range: Date[]) => range && range[0] && !!range[1])\r\n )\r\n .subscribe((value: Date[]) => {\r\n this.bsValue = value;\r\n })\r\n );\r\n }\r\n }\r\n\r\n unsubscribeSubscriptions() {\r\n if (this._subs?.length) {\r\n this._subs.map(sub => sub.unsubscribe());\r\n this._subs.length = 0;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._datepicker.dispose();\r\n this.unsubscribeSubscriptions();\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n forwardRef,\r\n Host,\r\n OnDestroy,\r\n OnInit,\r\n Provider,\r\n Renderer2\r\n} from '@angular/core';\r\n\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\n\r\nimport {\r\n formatDate,\r\n getLocale,\r\n isAfter,\r\n isBefore,\r\n isDate,\r\n isDateValid,\r\n parseDate,\r\n utcAsLocal\r\n} from '@period-year-norway/ngx-bootstrap/chronos';\r\n\r\nimport { BsDatepickerDirective } from './bs-datepicker.component';\r\nimport { BsLocaleService } from './bs-locale.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\n\r\nconst BS_DATEPICKER_VALUE_ACCESSOR: Provider = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BsDatepickerInputDirective),\r\n multi: true\r\n};\r\n\r\nconst BS_DATEPICKER_VALIDATOR: Provider = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => BsDatepickerInputDirective),\r\n multi: true\r\n};\r\n\r\n@Directive({\r\n selector: `input[bsDatepicker]`,\r\n host: {\r\n '(change)': 'onChange($event)',\r\n '(keyup.esc)': 'hide()',\r\n '(keydown)': 'onKeydownEvent($event)',\r\n '(blur)': 'onBlur()'\r\n },\r\n providers: [BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR],\r\n standalone: false\r\n})\r\nexport class BsDatepickerInputDirective implements ControlValueAccessor, Validator, OnInit, OnDestroy {\r\n private _onChange = Function.prototype;\r\n private _onTouched = Function.prototype;\r\n private _validatorChange = Function.prototype;\r\n private _value?: Date;\r\n private _subs = new Subscription();\r\n\r\n constructor(\r\n @Host() private _picker: BsDatepickerDirective,\r\n private _localeService: BsLocaleService,\r\n private _renderer: Renderer2,\r\n private _elRef: ElementRef,\r\n private changeDetection: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n const setBsValue = (value: Date) => {\r\n this._setInputValue(value);\r\n if (this._value !== value) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched();\r\n }\r\n this.changeDetection.markForCheck();\r\n };\r\n\r\n // if value set via [bsValue] it will not get into value change\r\n if (this._picker._bsValue) {\r\n setBsValue(this._picker._bsValue);\r\n }\r\n\r\n // update input value on datepicker value update\r\n this._subs.add(this._picker.bsValueChange.subscribe(setBsValue));\r\n\r\n // update input value on locale change\r\n this._subs.add(\r\n this._localeService.localeChange.subscribe(() => {\r\n this._setInputValue(this._value);\r\n })\r\n );\r\n\r\n this._subs.add(\r\n this._picker.dateInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\r\n this._setInputValue(this._value);\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n }\r\n\r\n onKeydownEvent(event: KeyboardEvent): void {\r\n if (event.keyCode === 13 || event.code === 'Enter') {\r\n this.hide();\r\n }\r\n }\r\n\r\n _setInputValue(value?: Date): void {\r\n const initialDate = !value\r\n ? ''\r\n : formatDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\r\n\r\n this._renderer.setProperty(this._elRef.nativeElement, 'value', initialDate);\r\n }\r\n\r\n onChange(event: Event) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.writeValue((event.target as any).value);\r\n this._onChange(this._value);\r\n if (this._picker._config.returnFocusToInput) {\r\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\r\n }\r\n this._onTouched();\r\n }\r\n\r\n validate(c: AbstractControl): ValidationErrors | null {\r\n const _value: Date | string = c.value;\r\n\r\n if (_value === null || _value === undefined || _value === '') {\r\n return null;\r\n }\r\n\r\n if (isDate(_value)) {\r\n const _isDateValid = isDateValid(_value);\r\n if (!_isDateValid) {\r\n return { bsDate: { invalid: _value } };\r\n }\r\n\r\n if (this._picker && this._picker.minDate && isBefore(_value, this._picker.minDate, 'date')) {\r\n this.writeValue(this._picker.minDate);\r\n\r\n return { bsDate: { minDate: this._picker.minDate } };\r\n }\r\n\r\n if (this._picker && this._picker.maxDate && isAfter(_value, this._picker.maxDate, 'date')) {\r\n this.writeValue(this._picker.maxDate);\r\n\r\n return { bsDate: { maxDate: this._picker.maxDate } };\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this._validatorChange = fn;\r\n }\r\n\r\n writeValue(value: Date | string) {\r\n if (!value) {\r\n this._value = void 0;\r\n } else {\r\n const _localeKey = this._localeService.currentLocale;\r\n const _locale = getLocale(_localeKey);\r\n if (!_locale) {\r\n throw new Error(`Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`);\r\n }\r\n\r\n this._value = parseDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\r\n\r\n if (this._picker._config.useUtc) {\r\n this._value = utcAsLocal(this._value);\r\n }\r\n }\r\n\r\n this._picker.bsValue = this._value;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._picker.isDisabled = isDisabled;\r\n if (isDisabled) {\r\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\r\n\r\n return;\r\n }\r\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\r\n }\r\n\r\n registerOnChange(fn: () => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n onBlur() {\r\n this._onTouched();\r\n }\r\n\r\n hide() {\r\n this._picker.hide();\r\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\r\n if (this._picker._config.returnFocusToInput) {\r\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BsDatepickerConfig } from './bs-datepicker.config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BsDaterangepickerConfig extends BsDatepickerConfig {\r\n // DatepickerRenderOptions\r\n override displayMonths = 2;\r\n}\r\n","import { AfterViewInit, ComponentRef,\r\n Directive, ElementRef, EventEmitter,\r\n Input, OnChanges, OnDestroy, OnInit,\r\n Output, Renderer2, SimpleChanges,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { BsDaterangepickerConfig } from './bs-daterangepicker.config';\r\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\r\nimport { Observable, Subscription, Subject, BehaviorSubject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { ComponentLoaderFactory, ComponentLoader } from '@period-year-norway/ngx-bootstrap/component-loader';\r\nimport { BsDatepickerConfig } from './bs-datepicker.config';\r\nimport { DatepickerDateCustomClasses } from './models';\r\nimport {\r\n checkBsValue,\r\n checkRangesWithMaxDate,\r\n setDateRangesCurrentTimeOnDateSelect\r\n} from './utils/bs-calendar-utils';\r\n\r\n@Directive({\n selector: '[bsDaterangepicker]',\n exportAs: 'bsDaterangepicker',\n standalone: false\n})\r\nexport class BsDaterangepickerDirective\r\n implements OnInit, OnDestroy, OnChanges, AfterViewInit {\r\n /**\r\n * Placement of a daterangepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\r\n */\r\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\r\n /**\r\n * Specifies events that should trigger. Supports a space separated list of\r\n * event names.\r\n */\r\n @Input() triggers = 'click';\r\n /**\r\n * Close daterangepicker on outside click\r\n */\r\n @Input() outsideClick = true;\r\n /**\r\n * A selector specifying the element the daterangepicker should be appended to.\r\n */\r\n @Input() container = 'body';\r\n\r\n @Input() outsideEsc = true;\r\n\r\n /**\r\n * Returns whether or not the daterangepicker is currently being shown\r\n */\r\n @Input()\r\n get isOpen(): boolean {\r\n return this._datepicker.isShown;\r\n }\r\n\r\n set isOpen(value: boolean) {\r\n this.isOpen$.next(value);\r\n }\r\n\r\n /**\r\n * Emits an event when the daterangepicker is shown\r\n */\r\n @Output() onShown: EventEmitter<unknown>;\r\n /**\r\n * Emits an event when the daterangepicker is hidden\r\n */\r\n @Output() onHidden: EventEmitter<unknown>;\r\n\r\n _bsValue?: (Date|undefined)[];\r\n isOpen$: BehaviorSubject<boolean>;\r\n isDestroy$ = new Subject();\r\n\r\n /**\r\n * Initial value of daterangepicker\r\n */\r\n @Input()\r\n set bsValue(value: (Date|undefined)[] | undefined) {\r\n if (this._bsValue === value) {\r\n return;\r\n }\r\n\r\n if (value && this.bsConfig?.initCurrentTime) {\r\n value = setDateRangesCurrentTimeOnDateSelect(value);\r\n }\r\n\r\n this._bsValue = value;\r\n this.bsValueChange.emit(value);\r\n }\r\n\r\n /**\r\n * Config object for daterangepicker\r\n */\r\n @Input() bsConfig?: Partial<BsDaterangepickerConfig>;\r\n /**\r\n * Indicates whether daterangepicker's content is enabled or not\r\n */\r\n @Input() isDisabled = false;\r\n /**\r\n * Minimum date which is available for selection\r\n */\r\n @Input() minDate?: Date;\r\n /**\r\n * Maximum date which is available for selection\r\n */\r\n @Input() maxDate?: Date;\r\n /**\r\n * Date custom classes\r\n */\r\n @Input() dateCustomClasses?: DatepickerDateCustomClasses[];\r\n /**\r\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\r\n */\r\n @Input() daysDisabled?: number[];\r\n /**\r\n * Disable specific dates\r\n */\r\n @Input() datesDisabled?: Date[];\r\n\r\n /**\r\n * Enable specific dates\r\n */\r\n @Input() datesEnabled?: Date[];\r\n /**\r\n * Emits when daterangepicker value has been changed\r\n */\r\n @Output() bsValueChange = new EventEmitter<((Date|undefined)[]|undefined)>();\r\n\r\n get rangeInputFormat$(): Observable<string> {\r\n return this._rangeInputFormat$;\r\n }\r\n\r\n protected _subs: Subscription[] = [];\r\n private _datepicker: ComponentLoader<BsDaterangepickerContainerComponent>;\r\n private _datepickerRef?: ComponentRef<BsDaterangepickerContainerComponent>;\r\n private readonly _rangeInputFormat$ = new Subject<string>();\r\n\r\n constructor(public _config: BsDaterangepickerConfig,\r\n private _elementRef: ElementRef,\r\n private _renderer: Renderer2,\r\n _viewContainerRef: ViewContainerRef,\r\n cis: ComponentLoaderFactory) {\r\n this._datepicker = cis.createLoader<BsDaterangepickerContainerComponent>(\r\n _elementRef,\r\n _viewContainerRef,\r\n _renderer\r\n );\r\n Object.assign(this, _config);\r\n this.onShown = this._datepicker.onShown;\r\n this.onHidden = this._datepicker.onHidden;\r\n this.isOpen$ = new BehaviorSubject(this.isOpen);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.isDestroy$ = new Subject();\r\n this._datepicker.listen({\r\n outsideClick: this.outsideClick,\r\n outsideEsc: this.outsideEsc,\r\n triggers: this.triggers,\r\n show: () => this.show()\r\n });\r\n this.setConfig();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"bsConfig\"]) {\r\n if (changes[\"bsConfig\"].currentValue?.initCurrentTime && changes[\"bsConfig\"].currentValue?.initCurrentTime !== changes[\"bsConfig\"].previousValue?.initCurrentTime && this._bsValue) {\r\n this._bsValue = setDateRangesCurrentTimeOnDateSelect(this._bsValue);\r\n this.bsValueChange.emit(this._bsValue);\r\n }\r\n\r\n this.setConfig();\r\n this._rangeInputFormat$.next(changes[\"bsConfig\"].currentValue && changes[\"bsConfig\"].currentValue.rangeInputFormat);\r\n }\r\n\r\n\r\n if (!this._datepickerRef || !this._datepickerRef.instance) {\r\n return;\r\n }\r\n if (changes[\"minDate\"]) {\r\n this._datepickerRef.instance.minDate = this.minDate;\r\n }\r\n if (changes[\"maxDate\"]) {\r\n this._datepickerRef.instance.maxDate = this.maxDate;\r\n }\r\n if (changes[\"datesDisabled\"]) {\r\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\r\n }\r\n if (changes[\"datesEnabled\"]) {\r\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\r\n }\r\n if (changes[\"daysDisabled\"]) {\r\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\r\n }\r\n if (changes[\"isDisabled\"]) {\r\n if (this._elementRef?.nativeElement) {\r\n this._elementRef.nativeElement.setAttribute('readonly', this.isDisabled);\r\n }\r\n this._datepickerRef.instance.isDisabled = this.isDisabled;\r\n }\r\n if (changes[\"dateCustomClasses\"]) {\r\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.isOpen$.pipe(\r\n filter(isOpen => isOpen !== this.isOpen),\r\n takeUntil(this.isDestroy$)\r\n )\r\n .subscribe(() => this.toggle());\r\n }\r\n\r\n /**\r\n * Opens an element’s datepicker. This is considered a “manual” triggering of\r\n * the datepicker.\r\n */\r\n show(): void {\r\n if (this._datepicker.isShown) {\r\n return;\r\n }\r\n\r\n this.setConfig();\r\n\r\n this._datepickerRef = this._datepicker\r\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\r\n .attach(BsDaterangepickerContainerComponent)\r\n .to(this.container)\r\n .position({ attachment: this.placement })\r\n .show({ placement: this.placement });\r\n\r\n this.initSubscribes();\r\n }\r\n\r\n initSubscribes() {\r\n // if date changes from external source (model -> view)\r\n this._subs.push(\r\n this.bsValueChange.subscribe((value: Date[]) => {\r\n if (this._datepickerRef) {\r\n this._datepickerRef.instance.value = value;\r\n }\r\n })\r\n );\r\n\r\n // if date changes from picker (view -> model)\r\n if (this._datepickerRef) {\r\n this._subs.push(\r\n this._datepickerRef.instance.valueChange\r\n .pipe(\r\n filter((range: Date[]) => range && range[0] && !!range[1])\r\n )\r\n .subscribe((value: Date[]) => {\r\n this.bsValue = value;\r\n this.hide();\r\n })\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Set config for daterangepicker\r\n */\r\n setConfig() {\r\n this._config = Object.assign(\r\n {},\r\n this._config,\r\n this.bsConfig,\r\n {\r\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\r\n isDisabled: this.isDisabled,\r\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\r\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\r\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\r\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\r\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\r\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\r\n ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\r\n maxDateRange: this.bsConfig && this.bsConfig.maxDateRange,\r\n initCurrentTime: this.bsConfig?.initCurrentTime\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Closes an element’s datepicker. This is considered a “manual” triggering of\r\n * the datepicker.\r\n */\r\n hide(): void {\r\n if (this.isOpen) {\r\n this._datepicker.hide();\r\n }\r\n for (const sub of this._subs) {\r\n sub.unsubscribe();\r\n }\r\n\r\n if (this._config.returnFocusToInput) {\r\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\r\n }\r\n }\r\n\r\n /**\r\n * Toggles an element’s datepicker. This is considered a “manual” triggering\r\n * of the datepicker.\r\n */\r\n toggle(): void {\r\n if (this.isOpen) {\r\n return this.hide();\r\n }\r\n\r\n this.show();\r\n }\r\n\r\n unsubscribeSubscriptions() {\r\n if (this._subs?.length) {\r\n this._subs.map(sub => sub.unsubscribe());\r\n this._subs.length = 0;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._datepicker.dispose();\r\n this.isOpen$.next(false);\r\n if (this.isDestroy$) {\r\n this.isDestroy$.next(null);\r\n this.isDestroy$.complete();\r\n }\r\n\r\n this.unsubscribeSubscriptions();\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n forwardRef,\r\n Host,\r\n OnDestroy,\r\n OnInit,\r\n Provider,\r\n Renderer2\r\n} from '@angular/core';\r\n\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\n\r\nimport {\r\n parseDate,\r\n formatDate,\r\n getLocale,\r\n isAfter,\r\n isBefore,\r\n isArray,\r\n isDateValid,\r\n utcAsLocal\r\n} from '@period-year-norway/ngx-bootstrap/chronos';\r\n\r\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\r\nimport { BsLocaleService } from './bs-locale.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\n\r\nconst BS_DATERANGEPICKER_VALUE_ACCESSOR: Provider = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\r\n multi: true\r\n};\r\n\r\nconst BS_DATERANGEPICKER_VALIDATOR: Provider = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\r\n multi: true\r\n};\r\n\r\n@Directive({\r\n selector: `input[bsDaterangepicker]`,\r\n host: {\r\n '(change)': 'onChange($event)',\r\n '(keyup.esc)': 'hide()',\r\n '(keydown)': 'onKeydownEvent($event)',\r\n '(blur)': 'onBlur()'\r\n },\r\n providers: [BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR],\r\n standalone: false\r\n})\r\nexport class BsDaterangepickerInputDirective implements ControlValueAccessor, Validator, OnInit, OnDestroy {\r\n private _onChange = Function.prototype;\r\n private _onTouched = Function.prototype;\r\n private _validatorChange = Function.prototype;\r\n private _value?: (Date | undefined)[];\r\n private _subs = new Subscription();\r\n\r\n constructor(\r\n @Host() private _picker: BsDaterangepickerDirective,\r\n private _localeService: BsLocaleService,\r\n private _renderer: Renderer2,\r\n private _elRef: ElementRef,\r\n private changeDetection: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n const setBsValue = (value: (Date | undefined)[]) => {\r\n this._setInputValue(value);\r\n if (this._value !== value) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched();\r\n }\r\n this.changeDetection.markForCheck();\r\n };\r\n\r\n // if value set via [bsValue] it will not get into value change\r\n if (this._picker._bsValue) {\r\n setBsValue(this._picker._bsValue);\r\n }\r\n\r\n // update input value on datepicker value update\r\n this._subs.add(\r\n this._picker.bsValueChange.subscribe((value: Date[]) => {\r\n this._setInputValue(value);\r\n if (this._value !== value) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched();\r\n }\r\n this.changeDetection.markForCheck();\r\n })\r\n );\r\n\r\n // update input value on locale change\r\n this._subs.add(\r\n this._localeService.localeChange.subscribe(() => {\r\n this._setInputValue(this._value);\r\n })\r\n );\r\n\r\n this._subs.add(\r\n // update input value on format change\r\n this._picker.rangeInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\r\n this._setInputValue(this._value);\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n }\r\n\r\n onKeydownEvent(event: KeyboardEvent) {\r\n if (event.keyCode === 13 || event.code === 'Enter') {\r\n this.hide();\r\n }\r\n }\r\n\r\n _setInputValue(date?: (Date | undefined)[]): void {\r\n let range = '';\r\n if (date) {\r\n const start: string = !date[0]\r\n ? ''\r\n : formatDate(date[0], this._picker._config.rangeInputFormat, this._localeService.currentLocale);\r\n const end: string = !date[1]\r\n ? ''\r\n : formatDate(date[1], this._picker._config.rangeInputFormat, this._localeService.currentLocale);\r\n range = start && end ? start + this._picker._config.rangeSeparator + end : '';\r\n }\r\n this._renderer.setProperty(this._elRef.nativeElement, 'value', range);\r\n }\r\n\r\n onChange(event: Event) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.writeValue((event.target as any).value);\r\n this._onChange(this._value);\r\n if (this._picker._config.returnFocusToInput) {\r\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\r\n }\r\n this._onTouched();\r\n }\r\n\r\n validate(c: AbstractControl): ValidationErrors | null {\r\n let _value: [Date, Date] = c.value;\r\n const errors: Record<string, unknown>[] = [];\r\n\r\n if (_value === null || _value === undefined || !isArray(_value)) {\r\n return null;\r\n }\r\n\r\n _value = _value.slice().sort((a, b) => a.getTime() - b.getTime()) as [Date, Date];\r\n\r\n const _isFirstDateValid = isDateValid(_value[0]);\r\n const _isSecondDateValid = isDateValid(_value[1]);\r\n\r\n if (!_isFirstDateValid) {\r\n return { bsDate: { invalid: _value[0] } };\r\n }\r\n\r\n if (!_isSecondDateValid) {\r\n return { bsDate: { invalid: _value[1] } };\r\n }\r\n\r\n if (this._picker && this._picker.minDate && isBefore(_value[0], this._picker.minDate, 'date')) {\r\n _value[0] = this._picker.minDate;\r\n errors.push({ bsDate: { minDate: this._picker.minDate } });\r\n }\r\n\r\n if (this._picker && this._picker.maxDate && isAfter(_value[1], this._picker.maxDate, 'date')) {\r\n _value[1] = this._picker.maxDate;\r\n errors.push({ bsDate: { maxDate: this._picker.maxDate } });\r\n }\r\n if (errors.length > 0) {\r\n this.writeValue(_value);\r\n\r\n return errors;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this._validatorChange = fn;\r\n }\r\n\r\n writeValue(value: Date[] | string) {\r\n if (!value) {\r\n this._value = void 0;\r\n } else {\r\n const _localeKey = this._localeService.currentLocale;\r\n const _locale = getLocale(_localeKey);\r\n if (!_locale) {\r\n throw new Error(`Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`);\r\n }\r\n\r\n let _input: (string | Date)[] = [];\r\n if (typeof value === 'string') {\r\n const trimmedSeparator = this._picker._config.rangeSeparator.trim();\r\n if (value.replace(/[^-]/g, '').length > 1) {\r\n _input = value.split(this._picker._config.rangeSeparator);\r\n } else {\r\n _input = value\r\n .split(trimmedSeparator.length > 0 ? trimmedSeparator : this._picker._config.rangeSeparator)\r\n .map((_val) => _val.trim());\r\n }\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n _input = value;\r\n }\r\n\r\n this._value = _input\r\n .map((_val: string | Date): Date => {\r\n if (this._picker._config.useUtc) {\r\n return utcAsLocal(\r\n parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale)\r\n );\r\n }\r\n\r\n return parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale);\r\n })\r\n .map((date: Date) => (isNaN(date.valueOf()) ? void 0 : date));\r\n }\r\n\r\n this._picker.bsValue = this._value;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._picker.isDisabled = isDisabled;\r\n if (isDisabled) {\r\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\r\n\r\n return;\r\n }\r\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n registerOnChange(fn: () => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n onBlur() {\r\n this._onTouched();\r\n }\r\n\r\n hide() {\r\n this._picker.hide();\r\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\r\n\r\n if (this._picker._config.returnFocusToInput) {\r\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { ComponentLoaderFactory } from '@period-year-norway/ngx-bootstrap/component-loader';\r\nimport { PositioningService } from '@period-year-norway/ngx-bootstrap/positioning';\r\n\r\nimport { TooltipModule } from '@period-year-norway/ngx-bootstrap/tooltip';\r\nimport { TimepickerModule, TimepickerActions } from '@period-year-norway/ngx-bootstrap/timepicker';\r\n\r\nimport { BsDatepickerInputDirective } from './bs-datepicker-input.directive';\r\nimport { BsDatepickerDirective } from './bs-datepicker.component';\r\nimport { BsDaterangepickerInputDirective } from './bs-daterangepicker-input.directive';\r\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\r\n\r\nimport { BsDatepickerInlineDirective } from './bs-datepicker-inline.component';\r\n\r\nimport { BsLocaleService } from './bs-locale.service';\r\nimport { BsDatepickerActions } from './reducer/bs-datepicker.actions';\r\nimport { BsDatepickerEffects } from './reducer/bs-datepicker.effects';\r\nimport { BsDatepickerStore } from './reducer/bs-datepicker.store';\r\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\r\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\r\n\r\nimport { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\r\nimport { BsDaterangepickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\r\n\r\nimport { BsDaterangepickerInlineDirective } from './bs-daterangepicker-inline.component';\r\n\r\nimport { BsCalendarLayoutComponent } from './themes/bs/bs-calendar-layout.component';\r\nimport { BsCurrentDateViewComponent } from './themes/bs/bs-current-date-view.component';\r\nimport { BsCustomDatesViewComponent } from './themes/bs/bs-custom-dates-view.component';\r\nimport { BsDatepickerDayDecoratorComponent } from './themes/bs/bs-datepicker-day-decorator.directive';\r\nimport { BsDatepickerNavigationViewComponent } from './themes/bs/bs-datepicker-navigation-view.component';\r\nimport { BsDaysCalendarViewComponent } from './themes/bs/bs-days-calendar-view.component';\r\nimport { BsMonthCalendarViewComponent } from './themes/bs/bs-months-calendar-view.component';\r\nimport { BsTimepickerViewComponent } from './themes/bs/bs-timepicker-view.component';\r\nimport { BsYearsCalendarViewComponent } from './themes/bs/bs-years-calendar-view.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, TooltipModule, TimepickerModule],\r\n declarations: [\r\n BsCalendarLayoutComponent,\r\n BsCurrentDateViewComponent,\r\n BsCustomDatesViewComponent,\r\n BsDatepickerDayDecoratorComponent,\r\n BsDatepickerNavigationViewComponent,\r\n BsDaysCalendarViewComponent,\r\n BsMonthCalendarViewComponent,\r\n BsTimepickerViewComponent,\r\n BsYearsCalendarViewComponent,\r\n BsDatepickerContainerComponent,\r\n BsDatepickerDirective,\r\n BsDatepickerInlineContainerComponent,\r\n BsDatepickerInlineDirective,\r\n BsDatepickerInputDirective,\r\n BsDaterangepickerContainerComponent,\r\n BsDaterangepickerDirective,\r\n BsDaterangepickerInlineContainerComponent,\r\n BsDaterangepickerInlineDirective,\r\n BsDaterangepickerInputDirective\r\n ],\r\n exports: [\r\n BsDatepickerContainerComponent,\r\n BsDatepickerDirective,\r\n BsDatepickerInlineContainerComponent,\r\n BsDatepickerInlineDirective,\r\n BsDatepickerInputDirective,\r\n BsDaterangepickerContainerComponent,\r\n BsDaterangepickerDirective,\r\n BsDaterangepickerInlineContainerComponent,\r\n BsDaterangepickerInlineDirective,\r\n BsDaterangepickerInputDirective\r\n ]\r\n})\r\nexport class BsDatepickerModule {\r\n static forRoot(): ModuleWithProviders<BsDatepickerModule> {\r\n return {\r\n ngModule: BsDatepickerModule,\r\n providers: [\r\n ComponentLoaderFactory,\r\n PositioningService,\r\n BsDatepickerStore,\r\n BsDatepickerActions,\r\n BsDatepickerEffects,\r\n BsLocaleService,\r\n TimepickerActions\r\n ]\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.BsDatepickerActions","i2.BsLocaleService","height","width","shift","i1","i2.BsCurrentDateViewComponent","i3.BsTimepickerViewComponent","i1.BsDatepickerConfig","i2","i4.BsCalendarLayoutComponent","i5.BsDatepickerDayDecoratorComponent","i6.BsDatepickerNavigationViewComponent","i2.BsCalendarLayoutComponent","i3.BsDatepickerNavigationViewComponent","i2.BsDatepickerStore","i3.BsDatepickerActions","i4.BsDatepickerEffects","i8.BsCustomDatesViewComponent","i9.BsDaysCalendarViewComponent","i10.BsMonthCalendarViewComponent","i11.BsYearsCalendarViewComponent","i1.BsDatepickerInlineConfig","i1.BsDaterangepickerInlineConfig","i1.BsDatepickerDirective","i1.BsDaterangepickerConfig","i1.BsDaterangepickerDirective"],"mappings":";;;;;;;;;;;;;;;;;;;AAUA;;;AAGG;MAIU,kBAAkB,CAAA;AAH/B,IAAA,WAAA,GAAA;;QAKE,IAAgB,CAAA,gBAAA,GAAG,KAAK;;QAExB,IAAM,CAAA,MAAA,GAAG,KAAK;;QAEd,IAAU,CAAA,UAAA,GAAG,KAAK;AAWlB;;AAEG;QACH,IAAS,CAAA,SAAA,GAAyB,KAAK;AA8DvC;;AAEG;QACH,IAAkB,CAAA,kBAAA,GAAG,KAAK;AAE1B;;AAEG;QACH,IAAc,CAAA,cAAA,GAAG,aAAa;;QAG9B,IAAa,CAAA,aAAA,GAAG,CAAC;AACjB;;AAEG;QACH,IAAe,CAAA,eAAA,GAAG,IAAI;QAEtB,IAAe,CAAA,eAAA,GAAG,GAAG;;QAErB,IAAc,CAAA,cAAA,GAAG,KAAK;AACtB;;AAEG;QACH,IAAgB,CAAA,gBAAA,GAAG,GAAG;;QAatB,IAAU,CAAA,UAAA,GAAG,MAAM;QACnB,IAAS,CAAA,SAAA,GAAG,MAAM;QAClB,IAAQ,CAAA,QAAA,GAAG,GAAG;QACd,IAAU,CAAA,UAAA,GAAG,MAAM;QACnB,IAAS,CAAA,SAAA,GAAG,MAAM;QAClB,IAAW,CAAA,WAAA,GAAG,GAAG;AAEjB;;AAEG;QACH,IAAe,CAAA,eAAA,GAAG,KAAK;AAEvB;;AAEG;QACH,IAAe,CAAA,eAAA,GAAG,KAAK;AAEvB;;AAEG;QACH,IAAa,CAAA,aAAA,GAAG,QAAQ;AAExB;;AAEG;QACH,IAAa,CAAA,aAAA,GAAG,OAAO;AAEvB;;AAEG;QACH,IAAgB,CAAA,gBAAA,GAAG,OAAO;AAE1B;;AAEG;QACH,IAAgB,CAAA,gBAAA,GAAG,OAAO;AAE1B;;AAEG;QACH,IAAsB,CAAA,sBAAA,GAAG,cAAc;AAEvC;;AAEG;QACH,IAAc,CAAA,cAAA,GAAG,KAAK;AAKtB;;AAEG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;AACrC;8GA5KY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACPM,MAAM,2BAA2B,GAAG,kCAAkC;AAEtE,MAAM,mBAAmB,GAC9B,OAAO,CAAC,qBAAqB,EAAE;AAC7B,IAAA,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;IACjE,UAAU,CAAC,oBAAoB,EAAE;QAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACxC,OAAO,CAAC,2BAA2B;KACpC,CAAC;AACF,IAAA,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;IAC/D,UAAU,CAAC,kBAAkB,EAAE;QAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC1C,OAAO,CAAC,2BAA2B;KACpC,CAAC;AACF,IAAA,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC;AAC5C,CAAA,CAAC;;MCLkB,6BAA6B,CAAA;AAAnD,IAAA,WAAA,GAAA;QACE,IAAc,CAAA,cAAA,GAAG,EAAE;QAUnB,IAAY,CAAA,YAAA,GAAoB,EAAE;QAElC,IAAW,CAAA,WAAA,GAAW,EAAE;AA2CxB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE;AAerC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAE;;IAnDpC,IAAI,OAAO,CAAC,KAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC;;IAGlC,IAAI,OAAO,CAAC,KAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC;;IAElC,IAAI,YAAY,CAAC,KAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC;;IAEvC,IAAI,aAAa,CAAC,KAAuB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC;;IAGxC,IAAI,YAAY,CAAC,KAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC;;IAGvC,IAAI,UAAU,CAAC,KAAwB,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC;;IAGnC,IAAI,iBAAiB,CAAC,KAA8C,EAAA;AAClE,QAAA,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,KAAK,CAAC;;IAG5C,IAAI,gBAAgB,CAAC,KAA4C,EAAA;AAC/D,QAAA,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,KAAK,CAAC;;IAW3C,IAAI,aAAa,CAAC,KAAoD,EAAA;AACpE,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAG;AAC9D,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;SACrD,CAAC,CAAC;;AAGL,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;;;IAQ5B,WAAW,CAAC,KAA2B,EAAA;;IAGvC,UAAU,CAAC,KAAwB,EAAA;;IAGnC,eAAe,CAAC,KAAqB,EAAA;;IAGrC,gBAAgB,CAAC,KAAoB,EAAA;;IAGrC,iBAAiB,CAAC,KAAqB,EAAA;;IAGvC,gBAAgB,CAAC,KAAqB,EAAA;;AAGtC,IAAA,iBAAiB,CAAC,IAAU,EAAE,KAAa;;IAG3C,gBAAgB,CAAC,GAAiB,EAAA;;IAGlC,kBAAkB,CAAC,KAA4B,EAAA;;IAG/C,iBAAiB,CAAC,KAA4B,EAAA;;IAG9C,kBAAkB,CAAC,KAAoB,EAAA;;AAGvC,IAAA,QAAQ;;AAGR,IAAA,SAAS;;AAGT,IAAA,gBAAgB,CAAC,KAAU,EAAA;QACzB,KAAK,CAAC,eAAe,EAAE;;AAE1B;;MC3HY,mBAAmB,CAAA;aACd,IAAS,CAAA,SAAA,GAAG,qCAAH,CAAyC;aAClD,IAAM,CAAA,MAAA,GAAG,uCAAH,CAA2C;aACjD,IAAI,CAAA,IAAA,GAAG,wBAAH,CAA4B;aAChC,IAAM,CAAA,MAAA,GAAG,0BAAH,CAA8B;aACpC,IAAe,CAAA,eAAA,GAAG,8BAAH,CAAkC;aACjD,IAAW,CAAA,WAAA,GAAG,+BAAH,CAAmC;aAC9C,IAAW,CAAA,WAAA,GAAG,oCAAH,CAAwC;aACnD,IAAK,CAAA,KAAA,GAAG,yBAAH,CAA6B;aAClC,IAAe,CAAA,eAAA,GAAG,+BAAH,CAAmC;aAElD,IAAY,CAAA,YAAA,GAAG,2BAAH,CAA+B;aAC3C,IAAY,CAAA,YAAA,GAAG,2BAAH,CAA+B;aAC3C,IAAgB,CAAA,gBAAA,GAAG,gCAAH,CAAoC;aACpD,IAAiB,CAAA,iBAAA,GAAG,iCAAH,CAAqC;aACtD,IAAgB,CAAA,gBAAA,GAAG,gCAAH,CAAoC;aACpD,IAAe,CAAA,eAAA,GAAG,8BAAH,CAAkC;aACjD,IAAuB,CAAA,uBAAA,GAAG,sCAAH,CAA0C;aACjE,IAAsB,CAAA,sBAAA,GAAG,qCAAH,CAAyC;aAC/D,IAAU,CAAA,UAAA,GAAG,oCAAH,CAAwC;aAClD,IAAW,CAAA,WAAA,GAAG,0BAAH,CAA8B;aAEzC,IAAY,CAAA,YAAA,GAAG,sCAAH,CAA0C;IAEtE,SAAS,GAAA;AACP,QAAA,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,SAAS,EAAE;;IAGhD,MAAM,GAAA;AACJ,QAAA,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAE;;IAG7C,IAAI,GAAA;AACF,QAAA,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE;;AAG3C,IAAA,MAAM,CAAC,IAAW,EAAA;QAChB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,YAAA,OAAO,EAAE;SACV;;IAGH,UAAU,CAAC,IAAU,EAAE,KAAa,EAAA;QAClC,OAAQ;YACN,IAAI,EAAE,mBAAmB,CAAC,WAAW;AACrC,YAAA,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACzB;;AAGH,IAAA,cAAc,CAAC,KAA2B,EAAA;QACxC,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,eAAe;AACzC,YAAA,OAAO,EAAE;SACV;;AAGH,IAAA,UAAU,CAAC,KAA4B,EAAA;QACrC,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,WAAW;AACrC,YAAA,OAAO,EAAE;SACV;;AAGH,IAAA,YAAY,CAAC,IAAe,EAAA;QAC1B,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,eAAe;AACzC,YAAA,OAAO,EAAE;SACV;;AAGH,IAAA,UAAU,CAAC,OAAgC,EAAA;QACzC,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,WAAW;AACrC,YAAA,OAAO,EAAE;SACV;;;AAIH,IAAA,WAAW,CAAC,KAAsC,EAAA;QAChD,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,YAAY;AACtC,YAAA,OAAO,EAAE;SACV;;AAGH,IAAA,QAAQ,CAAC,KAAqB,EAAA;QAC5B,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,KAAK;AAC/B,YAAA,OAAO,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG;SAC9C;;AAGH,IAAA,OAAO,CAAC,IAAW,EAAA;QACjB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,YAAY;AACtC,YAAA,OAAO,EAAE;SACV;;AAGH,IAAA,OAAO,CAAC,IAAW,EAAA;QACjB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,YAAY;AACtC,YAAA,OAAO,EAAE;SACV;;AAGH,IAAA,YAAY,CAAC,IAAe,EAAA;QAC1B,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,gBAAgB;AAC1C,YAAA,OAAO,EAAE;SACV;;AAGH,IAAA,aAAa,CAAC,KAAc,EAAA;QAC1B,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,iBAAiB;AAC3C,YAAA,OAAO,EAAE;SACV;;AAGH,IAAA,YAAY,CAAC,KAAc,EAAA;QACzB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,gBAAgB;AAC1C,YAAA,OAAO,EAAE;SACV;;AAGH,IAAA,UAAU,CAAC,KAAe,EAAA;QACxB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,eAAe;AACzC,YAAA,OAAO,EAAE;SACV;;AAGH,IAAA,oBAAoB,CAAC,KAAqC,EAAA;QACxD,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,uBAAuB;AACjD,YAAA,OAAO,EAAE;SACV;;AAGH,IAAA,mBAAmB,CAAC,KAAmC,EAAA;QACrD,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,sBAAsB;AAChD,YAAA,OAAO,EAAE;SACV;;AAGH,IAAA,SAAS,CAAC,MAAc,EAAA;QACtB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,UAAU;AACpC,YAAA,OAAO,EAAE;SACV;;8GAzJQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADP,UAAU,EAAA,CAAA,CAAA;;2FACtB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAC,UAAU,EAAE,UAAU,EAAC;;;MCRvB,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;QAEU,IAAc,CAAA,cAAA,GAAG,IAAI;QACrB,IAAO,CAAA,OAAA,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC,cAAc,CAAC;AAC1D,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAqBxE;AAnBC,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;AAGrB,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;AAG3B,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;;AAGhC,IAAA,GAAG,CAAC,MAAc,EAAA;AAChB,QAAA,IAAI,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE;YACjC;;AAGF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;;8GAtBhB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADH,UAAU,EAAA,CAAA,CAAA;;2FACtB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAC,UAAU,EAAE,UAAU,EAAC;;;MCuBvB,mBAAmB,CAAA;IAU9B,WAAoB,CAAA,QAA6B,EAC7B,cAA+B,EAAA;QAD/B,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAc,CAAA,cAAA,GAAd,cAAc;QAH1B,IAAK,CAAA,KAAA,GAAmB,EAAE;;AAMlC,IAAA,IAAI,CAAC,kBAAqC,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,GAAG,kBAAkB;AAEhC,QAAA,OAAO,IAAI;;;AAKb,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;;AAGpD,IAAA,aAAa,CAAC,KAAsC,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;AAGzD,IAAA,UAAU,CAAC,KAAY,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEnD,QAAA,OAAO,IAAI;;AAGb,IAAA,UAAU,CAAC,KAAY,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEnD,QAAA,OAAO,IAAI;;AAGb,IAAA,eAAe,CAAC,KAAgB,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAExD,QAAA,OAAO,IAAI;;AAGb,IAAA,gBAAgB,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEzD,QAAA,OAAO,IAAI;;AAGb,IAAA,eAAe,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAExD,QAAA,OAAO,IAAI;;AAGb,IAAA,WAAW,CAAC,KAAe,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEtD,QAAA,OAAO,IAAI;;AAGb,IAAA,oBAAoB,CAAC,KAAqC,EAAA;AACxD,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAEhE,QAAA,OAAO,IAAI;;AAGb,IAAA,mBAAmB,CAAC,KAAmC,EAAA;AACrD,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAE/D,QAAA,OAAO,IAAI;;;AAIb,IAAA,UAAU,CAAC,OAA2B,EAAA;AACpC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC;AACtF,QAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAEzD,QAAA,OAAO,IAAI;;;AAIb,IAAA,WAAW,CAAC,SAAwC,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,OAAO,IAAI;;AAGb,QAAA,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY;AACpE,aAAA,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AAEjC,QAAA,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa;AACtE,aAAA,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;;AAGnC,QAAA,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,qBAAqB;AAC/E,aAAA,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;;AAGnC,QAAA,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,oBAAoB;AAC7E,aAAA,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AAEjC,QAAA,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AAElE,QAAA,SAAS,CAAC,QAAQ,GAAG,aAAa,CAAC;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,eAAe,CAAC;AAClD,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa;SAChD;aACE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACnB,YAAA,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1B,YAAA,aAAa,EAAE,MAAM,CAAC,CAAC;SACxB,CAAC,CACH,CAAC;AAEJ,QAAA,OAAO,IAAI;;;AAIb,IAAA,gBAAgB,CAAC,SAAwC,EAAA;AACvD,QAAA,SAAS,CAAC,WAAW,GAAG,CAAC,KAA2B,KAAU;AAC5D,YAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5D,SAAC;AAED,QAAA,SAAS,CAAC,UAAU,GAAG,CAAC,KAAwB,KAAU;AACxD,YAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/D,SAAC;AAED,QAAA,SAAS,CAAC,eAAe,GAAG,CAAC,KAAqB,KAAU;AAC1D,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAoB;YACxC,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU,EAAE;gBAC1C;;AAGF,YAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpD,YAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;AACnC,SAAC;AAED,QAAA,SAAS,CAAC,iBAAiB,GAAG,CAAC,KAAqB,KAAU;YAC5D,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;AACxC,SAAC;AAED,QAAA,SAAS,CAAC,gBAAgB,GAAG,CAAC,KAAqB,KAAU;YAC3D,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;AACxC,SAAC;AAED,QAAA,OAAO,IAAI;;IAGb,6BAA6B,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,OAAO,IAAI;;QAGb,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAK;AACrD,YAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;SACjD,CAAC,CACH;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC;aACF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW;aACjC,IAAI,CACH,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC;AAEnC,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAClE;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC;aACF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,eAAe;aACrC,IAAI,CACH,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;AAEzB,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAChE;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC;aACF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY;aAClC,IAAI,CACH,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC;AAEvC,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAChE;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC;aACF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa;aACnC,IAAI,CACH,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC;AAEzC,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAChE;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC;aACF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,cAAc;AACpC,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAChE;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC;aACF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,kBAAkB;aACxC,IAAI,CACH,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;AAEzB,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAChE;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC;aACF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW;aACjC,IAAI,CACH,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC;AAErC,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAChE;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC;aACF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,iBAAiB;aACvC,IAAI,CACH,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,CAAC;AAEjD,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAChE;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC;aACF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB;aACtC,IAAI,CACH,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC,gBAAgB,CAAC;AAE/C,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAChE;;QAGD,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC;aACjB,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAC/E;AAED,QAAA,OAAO,IAAI;;IAGb,OAAO,GAAA;AACL,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,GAAG,CAAC,WAAW,EAAE;;;8GArQV,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADP,UAAU,EAAA,CAAA,CAAA;;2FACtB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAC,UAAU,EAAE,UAAU,EAAC;;;ACrB7B,MAAM,mBAAmB,GAAqB;AACnD,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,MAAM,EAAE;CACT;AAEM,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;;MCWvC,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;;QAgDE,IAAe,CAAA,eAAA,GAAG,IAAI;QACtB,IAAa,CAAA,aAAA,GAAG,CAAC;;AAalB;AAED,MAAM,YAAY,GAA0B,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAEtE,MAAM,sBAAsB,GAAsB,MAAM,CAAC,MAAM,CACpE,IAAI,kBAAkB,EAAE,EACxB;AACE,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,aAAa,EAAE,EAAE;AACjB,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,gBAAgB,EAAE;AACnB,CAAA,CACF;;ACjFe,SAAA,wBAAwB,CAAC,IAAU,EACV,OAAoC,EAAA;IAC3E,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE;AAClD,QAAA,OAAO,IAAI;;AAGb,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAC5B,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC;IAEnE,OAAO,SAAS,CAAC,IAAI,EAAE,EAAC,GAAG,EAAE,CAAC,MAAM,EAAC,CAAC;AACxC;AAEgB,SAAA,mBAAmB,CAAC,OAAe,EAAE,iBAA0B,EAAA;AAC7E,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACpD,IAAA,IAAI,KAAK,CAAC,kBAAkB,CAAC,EAAE;AAC7B,QAAA,OAAO,CAAC;;AAGV,IAAA,IAAI,kBAAkB,KAAK,CAAC,EAAE;AAC5B,QAAA,OAAO,OAAO;;AAGhB,IAAA,MAAM,MAAM,GAAG,OAAO,GAAG,kBAAkB,GAAG,CAAC;AAE/C,IAAA,OAAO,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM;AACzC;SAEgB,eAAe,CAAC,IAAU,EAAE,GAAU,EAAE,GAAU,EAAA;AAChE,IAAA,MAAM,QAAQ,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;AAClE,IAAA,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;AAEnE,IAAA,OAAO,QAAQ,IAAI,QAAQ,IAAI,KAAK;AACtC;SAEgB,cAAc,CAAC,IAAU,EAAE,GAAU,EAAE,GAAU,EAAA;AAC/D,IAAA,MAAM,QAAQ,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;AACjE,IAAA,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;AAElE,IAAA,OAAO,QAAQ,IAAI,QAAQ,IAAI,KAAK;AACtC;SAEgB,cAAc,CAAC,IAAW,EAAE,aAAsB,EAAE,IAAgC,EAAA;AAClG,IAAA,IAAI,CAAC,aAAa,IAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACvE,QAAA,OAAO,KAAK;;AAGd,IAAA,IAAI,IAAI,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;AAC1D,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,YAAkB,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;;AAGvF,IAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,YAAkB,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AACvF;SAEgB,aAAa,CAAC,IAAW,EAAE,YAAqB,EAAE,IAAgC,EAAA;AAChG,IAAA,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AACnE,QAAA,OAAO,KAAK;;IAGd,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAiB,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC;AAC7F;SAEgB,2BAA2B,CAAC,KAAwB,EAAE,aAAa,GAAG,CAAC,EAAA;AACrF,IAAA,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC;AAE1F,IAAA,OAAO,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACvE;AAEgB,SAAA,sBAAsB,CAAC,MAAwB,EAAE,OAAc,EAAA;AAC7E,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,MAAM;AAC1B,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,MAAM;IAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;AAAE,QAAA,OAAQ,MAAM;AAEtD,IAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAmB,KAAI;AACrC,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,MAAM;AACvC,QAAA,IAAI,IAAI,CAAC,KAAK,YAAY,IAAI;AAAE,YAAA,OAAQ,MAAM;AAC9C,QAAA,IAAI,EAAE,IAAI,CAAC,KAAK,YAAY,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAAG,YAAA,OAAO,MAAM;QACvE,IAAI,CAAC,KAAK,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;AAC9D,QAAA,OAAO,MAAM;AACf,KAAC,CAAC;AACF,IAAA,OAAO,MAAM;AACf;AAEgB,SAAA,YAAY,CAAC,IAAgD,EAAE,OAAc,EAAA;AAC3F,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;AACtB,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,IAAI;AACzB,IAAA,IAAI,IAAI,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;IACtD,IAAI,IAAI,YAAY,IAAI;AAAE,QAAA,OAAQ,IAAI;AACtC,IAAA,OAAO,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC;AACpD;AAEA,SAAS,4BAA4B,CAAK,IAAO,EAAE,OAAa,EAAA;AAC9D,IAAA,IAAI,IAAI,YAAY,KAAK,EAAE;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAG;AACnC,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAQ,IAAI;AACvB,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;gBAAE,IAAI,GAAG,OAAO;AAClD,YAAA,OAAO,IAAI;AACb,SAAC,CAAC;AACF,QAAA,OAAO,YAAY;;AAErB,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,0BAA0B,CAAC,KAAY,EAAA;AACrD,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,KAAK;AAExB,IAAA,OAAO,oBAAoB,CAAC,KAAK,CAAC;AACpC;AAEM,SAAU,oCAAoC,CAAC,KAA0B,EAAA;IAC7E,IAAI,CAAC,KAAK,EAAE,MAAM;AAAE,QAAA,OAAO,KAAK;AAEhC,IAAA,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;QACjB,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC;AACnC,KAAC,CAAC;AAEF,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,oBAAoB,CAAC,IAAU,EAAA;AACtC,IAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;IACtB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC7B,IAAA,OAAO,IAAI;AACb;;ACnIgB,SAAA,YAAY,CAC1B,OAAsB,EACtB,EAAqB,EAAA;AAErB,IAAA,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW;IACnC,MAAM,MAAM,GAAU,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAC/C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACpC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;YAC5B,SAAS,GAAG,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC;;;AAInD,IAAA,OAAO,MAAM;AACf;;AC1BA;AAQgB,SAAA,gBAAgB,CAC9B,YAAkB,EAClB,OAAyB,EAAA;AAEzB,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,YAAY,CAAC;IACjD,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC;;AAG/D,IAAA,MAAM,aAAa,GAAkB;AACnC,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AACzB,QAAA,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC;QAC3B,WAAW;AACX,QAAA,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC;KAChB;AACD,IAAA,MAAM,UAAU,GAAG,YAAY,CAAO,aAAa,EAAE,IAAI,IAAI,IAAI,CAAC;IAElE,OAAO;QACL,UAAU;AACV,QAAA,KAAK,EAAE;KACR;AACH;;SCrBgB,kBAAkB,CAAC,YAA+B,EAC/B,aAAsC,EACtC,UAAkB,EAAA;IACnD,OAAO;QACL,KAAK,EAAE,YAAY,CAAC,KAAK;AACzB,QAAA,UAAU,EAAE,UAAU,CACpB,YAAY,CAAC,KAAK,EAClB,aAAa,CAAC,UAAU,EACxB,aAAa,CAAC,MAAM,CACrB;AACD,QAAA,SAAS,EAAE,UAAU,CACnB,YAAY,CAAC,KAAK,EAClB,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,MAAM,CACrB;AACD,QAAA,WAAW,EAAE,cAAc,CACzB,YAAY,CAAC,UAAU,EACvB,aAAa,CAAC,WAAW,EACzB,aAAa,CAAC,MAAM,CACrB;AACD,QAAA,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC;AAClD,QAAA,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,SAAiB,MAAM;AACvE,YAAA,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,QAAgB,MAAM;gBAChD,IAAI;AACJ,gBAAA,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;gBACrE,UAAU;gBACV,SAAS;gBACT;AACD,aAAA,CAAC;AACH,SAAA,CAAC,CAAC;AACH,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,cAAc,EAAE,KAAK;AACrB,QAAA,gBAAgB,EAAE,KAAK;AACvB,QAAA,iBAAiB,EAAE;KACpB;AACH;SAEgB,cAAc,CAAC,UAAoB,EACpB,MAAe,EACf,MAAe,EAAA;AAC5C,IAAA,OAAO,UAAU,CAAC,GAAG,CACnB,CAAC,IAAY,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CACvE;AACH;AAEM,SAAU,kBAAkB,CAAC,MAAe,EAAA;AAChD,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC;AACjC,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAc;AACpD,IAAA,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE;AAE/C,IAAA,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AAClF;;ACvBgB,SAAA,gBAAgB,CAC9B,cAAqC,EACrC,OAAyC,EAAA;IAEzC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAmB,KAAI;QAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAiB,EAAE,QAAgB,KAAI;;AAE5D,YAAA,MAAM,YAAY,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;AAEjE,YAAA,MAAM,SAAS,GACb,CAAC,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC;;YAE3D,MAAM,gBAAgB,GACpB,CAAC,YAAY;AACb,gBAAA,OAAO,CAAC,aAAa;AACrB,gBAAA,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,cAAc,GAClB,CAAC,YAAY;AACb,gBAAA,OAAO,CAAC,aAAa;AACrB,gBAAA,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAE/C,YAAA,MAAM,UAAU,GACd,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;gBAC3D,gBAAgB;AAChB,gBAAA,cAAc;YAEhB,MAAM,SAAS,GACb,CAAC,YAAY;AACb,gBAAA,OAAO,CAAC,aAAa;AACrB,gBAAA,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC;AAErE,YAAA,MAAM,UAAU,GACd,OAAO,CAAC,UAAU;gBAClB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;gBACzC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;gBAC7C,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC;gBAC/C,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;AAE/C,YAAA,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE;AAC9B,YAAA,MAAM,OAAO,GAAG,CAAC,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC;YAEjE,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC;iBACxD,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,EAAE;AAC3D,iBAAA,MAAM,CAAC,CAAC,aAAa,EAAE,YAAY,KAAK,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE;iBAC9E,IAAI,CAAC,GAAG;AACN,mBAAA,EAAE;YAEP,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC;iBACnD,GAAG,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,GAAG,EAAE;AAC5D,iBAAA,MAAM,CAAC,CAAC,aAAa,EAAE,YAAY,KAAI;AACtC,gBAAA,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;AAChC,gBAAA,OAAO,aAAa;aACrB,EAAE,EAAc;iBAChB,IAAI,CAAC,GAAG;AACR,mBAAA,EAAE;;YAGP,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE;gBACpC,YAAY;gBACZ,SAAS;gBACT,UAAU;gBACV,gBAAgB;gBAChB,cAAc;gBACd,SAAS;gBACT,UAAU;gBACV,OAAO;gBACP,aAAa;gBACb;AACD,aAAA,CAAC;AAEF,YAAA,IACE,GAAG,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY;AACxC,gBAAA,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;AAClC,gBAAA,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU;AACpC,gBAAA,GAAG,CAAC,gBAAgB,KAAK,MAAM,CAAC,gBAAgB;AAChD,gBAAA,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC,cAAc;AAC5C,gBAAA,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU;AACpC,gBAAA,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;AAClC,gBAAA,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa;AAC1C,gBAAA,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,EACtC;AACA,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM;;AAEhC,SAAC,CAAC;AACJ,KAAC,CAAC;;AAGF,IAAA,cAAc,CAAC,aAAa;AAC1B,QAAA,OAAO,CAAC,UAAU;aACjB,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,aAAa,CAAC;AAClG,IAAA,cAAc,CAAC,cAAc;AAC3B,QAAA,OAAO,CAAC,UAAU;aACjB,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa;gBAC1H,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC;IAErD,cAAc,CAAC,gBAAgB,GAAG,eAAe,CAC/C,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAC9C,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB;IACD,cAAc,CAAC,iBAAiB,GAAG,eAAe,CAChD,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAC7C,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB;AACD,IAAA,OAAO,cAAc;AACvB;AAEA,SAAS,aAAa,CACpB,IAAU,EACV,aAAsB,EACtB,WAAkB,EAAA;AAElB,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AAChD,QAAA,OAAO,KAAK;;AAGd,IAAA,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;AACpB,QAAA,OAAO,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC;;IAG5D,IAAI,WAAW,EAAE;QACf,OAAO,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,WAAW;;AAGvD,IAAA,OAAO,KAAK;AACd;;AChKgB,SAAA,aAAa,CAAC,IAA0B,EAAE,OAA8B,EAAA;IACtF,OAAO,OAAO,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI;AACzC;;ACIA,MAAMC,QAAM,GAAG,CAAC;AAChB,MAAMC,OAAK,GAAG,CAAC;AACf,MAAMC,OAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;AAEV,SAAA,oBAAoB,CAClC,QAAc,EACd,aAAsC,EAAA;IAEtC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC7C,MAAM,aAAa,GAAG,SAAED,OAAK,UAAED,QAAM,EAAE,WAAW,SAAEE,OAAK,EAAE;IAC3D,MAAM,WAAW,GAAG,YAAY,CAE9B,aAAa,EAAE,IAAI,KAAK;QACxB,IAAI;AACJ,QAAA,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM;AACvE,KAAA,CAAC,CAAC;IAEH,OAAO;AACL,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,SAAS,EAAE,UAAU,CACnB,QAAQ,EACR,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,MAAM,CACrB;AACD,QAAA,cAAc,EAAE,KAAK;AACrB,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,iBAAiB,EAAE,KAAK;AACxB,QAAA,gBAAgB,EAAE;KACnB;AACH;;AClBgB,SAAA,kBAAkB,CAChC,aAAsC,EACtC,OAA0C,EAAA;IAE1C,aAAa,CAAC,MAAM,CAAC,OAAO,CAC1B,CAAC,MAA+B,EAAE,QAAgB,KAAI;QACpD,MAAM,CAAC,OAAO,CAAC,CAAC,KAA4B,EAAE,UAAkB,KAAI;AAClE,YAAA,IAAI,UAAmB;AACvB,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;AAC/D,YAAA,MAAM,UAAU,GACd,OAAO,CAAC,UAAU;gBAClB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC;gBACjD,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC;AACxD,gBAAA,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;YAE/D,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE;AAClD,gBAAA,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC9D,IAAI,CAAC,UAAU,EAAE;AACf,oBAAA,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;;;iBAE3D;gBACL,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;;YAE5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,SAAS,KAAK,EAAE;gBAC5C,SAAS;gBACT,UAAU;gBACV;AACD,aAAA,CAAC;AACF,YAAA,IACE,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;AACtC,gBAAA,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU;AACxC,gBAAA,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,EACxC;gBACA,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,QAAQ;;AAEzD,SAAC,CAAC;AACJ,KAAC,CACF;;AAGD,IAAA,aAAa,CAAC,aAAa;AACzB,QAAA,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,aAAa;AAEhG,IAAA,aAAa,CAAC,cAAc;QAC1B,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC;gBAC7C,CAAC,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,KAAK,CAAC;AACvD,eAAA,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC;eAC7B,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,OAAO,CAAC,aAAa;AAErD,IAAA,aAAa,CAAC,gBAAgB,GAAG,cAAc,CAC7C,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EACxD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB;AACD,IAAA,aAAa,CAAC,iBAAiB,GAAG,cAAc,CAC9C,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACvD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB;AAED,IAAA,OAAO,aAAa;AACtB;;ACzEA,MAAM,MAAM,GAAG,CAAC;AAChB,MAAM,KAAK,GAAG,CAAC;AACR,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK;AACvC,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3E,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;SAET,mBAAmB,CACjC,QAAc,EACd,aAAsC,EACtC,mBAA0B,EAAA;IAE1B,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvE,MAAM,aAAa,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE;IAC3D,MAAM,WAAW,GAAG,YAAY,CAE9B,aAAa,EAAE,IAAI,KAAK;QACxB,IAAI;AACJ,QAAA,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM;AACtE,KAAA,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,EAAE,aAAa,CAAC;IAElE,OAAO;AACL,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,UAAU,EAAE,EAAE;QACd,SAAS;AACT,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,cAAc,EAAE,KAAK;AACrB,QAAA,gBAAgB,EAAE,KAAK;AACvB,QAAA,iBAAiB,EAAE;KACpB;AACH;AAEA,SAAS,oBAAoB,CAAC,QAAc,EAAE,mBAA0B,EAAA;AACtE,IAAA,IAAI;AACC,WAAA,QAAQ,CAAC,WAAW,EAAE,IAAI,mBAAmB,CAAC,WAAW;WACzD,QAAQ,CAAC,WAAW,EAAE,GAAG,mBAAmB,CAAC,WAAW,EAAE,GAAG,gBAAgB,EAAE;AAClF,QAAA,OAAO,mBAAmB;;IAG5B,OAAO,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AACxD;AAEA,SAAS,oBAAoB,CAC3B,WAAsC,EACtC,aAAsC,EAAA;IAEtC,MAAM,IAAI,GAAG,UAAU,CACrB,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EACtB,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,MAAM,CACrB;IACD,MAAM,EAAE,GAAG,UAAU,CACnB,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EACvC,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,MAAM,CACrB;AAED,IAAA,OAAO,CAAG,EAAA,IAAI,CAAM,GAAA,EAAA,EAAE,EAAE;AAC1B;;ACjDgB,SAAA,iBAAiB,CAC/B,aAAqC,EACrC,OAA0C,EAAA;IAE1C,aAAa,CAAC,KAAK,CAAC,OAAO,CACzB,CAAC,KAA8B,EAAE,QAAgB,KAAI;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC,IAA2B,EAAE,SAAiB,KAAI;AAC/D,YAAA,IAAI,UAAmB;AACvB,YAAA,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC;AAC5D,YAAA,MAAM,UAAU,GACd,OAAO,CAAC,UAAU;gBAClB,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC;gBACxD,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;AACtD,gBAAA,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;YAE7D,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE;AAClD,gBAAA,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,UAAU,EAAE;AACf,oBAAA,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;;;iBAEzD;gBACL,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;;AAG1D,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,SAAS,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACnF,YAAA,IACE,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;AACrC,gBAAA,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU;AACvC,gBAAA,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,EACvC;gBACA,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,QAAQ;;AAEvD,SAAC,CAAC;AACJ,KAAC,CACF;;AAGD,IAAA,aAAa,CAAC,aAAa;AACzB,QAAA,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,aAAa;AAC7F,IAAA,aAAa,CAAC,cAAc;QAC1B,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa;AAC9C,YAAA,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,aAAa;YACzC,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,OAAO,CAAC,aAAa;AAEjD,IAAA,aAAa,CAAC,gBAAgB,GAAG,cAAc,CAC7C,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EACvD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB;IACD,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;AACxC,IAAA,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;AAC3C,IAAA,aAAa,CAAC,iBAAiB,GAAG,cAAc,CAC9C,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACtD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB;AAED,IAAA,OAAO,aAAa;AACtB;;AC3EgB,SAAA,QAAQ,CAAC,UAAgB,EAAE,IAAU,EAAA;AACnD,IAAA,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE;QAC/C;;IAGF,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACxC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACxC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AACpD;;SCkBgB,mBAAmB,CAAC,KAA2B,GAAA,sBAAsB,EACjD,MAAc,EAAA;AAChD,IAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,QAAA,KAAK,mBAAmB,CAAC,SAAS,EAAE;AAClC,YAAA,OAAO,gBAAgB,CAAC,KAAK,CAAC;;AAGhC,QAAA,KAAK,mBAAmB,CAAC,MAAM,EAAE;AAC/B,YAAA,OAAO,aAAa,CAAC,KAAK,CAAC;;AAG7B,QAAA,KAAK,mBAAmB,CAAC,IAAI,EAAE;AAC7B,YAAA,OAAO,WAAW,CAAC,KAAK,CAAC;;AAG3B,QAAA,KAAK,mBAAmB,CAAC,eAAe,EAAE;AACxC,YAAA,OAAO,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;;AAG7C,QAAA,KAAK,mBAAmB,CAAC,WAAW,EAAE;AACpC,YAAA,MAAM,OAAO,GAA0B,MAAM,CAAC,OAAO;YACrD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAChC,gBAAA,OAAO,KAAK;;AAGd,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;AACvD,YAAA,IAAI,QAAQ;AACZ,YAAA,IAAI,IAA0B;YAC9B,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;AAClD,gBAAA,IAAI,GAAG,OAAO,CAAC,QAAQ;gBACvB,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;;iBAC9B;AACL,gBAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;AACtB,gBAAA,QAAQ,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;;YAGzD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;;AAG3C,QAAA,KAAK,mBAAmB,CAAC,eAAe,EAAE;AACxC,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAChE,gBAAA,OAAO,KAAK;;AAGd,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;AAC5B,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO;YAC3B,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAEzC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;;AAG3C,QAAA,KAAK,mBAAmB,CAAC,KAAK,EAAE;AAC9B,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;;AAGlE,QAAA,KAAK,mBAAmB,CAAC,MAAM,EAAE;AAC/B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACf,gBAAA,OAAO,KAAK;;AAGd,YAAA,MAAM,QAAQ,GAAG;gBACf,YAAY,EAAE,MAAM,CAAC,OAAO;gBAC5B,IAAI,EAAE,KAAK,CAAC;aACb;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;gBACrC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACnC,gBAAA,IAAI,QAAQ,CAAC,YAAY,IAAI,KAAK,EAAE;AAClC,oBAAA,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC;;;AAI1C,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;YAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI;AAC/C,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YAC7D,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;YAE9B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;;AAG3C,QAAA,KAAK,mBAAmB,CAAC,WAAW,EAAE;YACpC,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,CAAC,OAAO;AACpC,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE;AACtE,YAAA,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI;AAC1B,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC;;AAGnD,QAAA,KAAK,mBAAmB,CAAC,WAAW,EAAE;AACpC,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACf,gBAAA,OAAO,KAAK;;AAGd,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO;;AAE/B,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;YAClE,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC;mBACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7E,mBAAA,KAAK,CAAC,IAAI,CAAC,IAAI;AACpB,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;YACvE,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;;AAE9B,YAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;;AAElB,gBAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3B,oBAAA,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,KAAK;AACvC,oBAAA,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAO,KAAK,CAAC,CAAC;;;AAI5D,gBAAA,IAAI,QAAQ,CAAC,KAAK,YAAY,IAAI,EAAE;AAClC,oBAAA,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK;oBACtC,QAAQ,CAAC,YAAY,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;;;;;YAO5C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;;;AAI3C,QAAA,KAAK,mBAAmB,CAAC,YAAY,EAAE;AACrC,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACf,gBAAA,OAAO,KAAK;;AAGd,YAAA,MAAM,QAAQ,GAAG;gBACf,aAAa,EAAE,MAAM,CAAC,OAAO;gBAC7B,IAAI,EAAE,KAAK,CAAC;aACb;YACD,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAS,EAAE,KAAa,KAAI;gBAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;oBACrC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;oBACvC,IAAI,KAAK,EAAE;AACT,wBAAA,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;;;AAG1B,aAAC,CAAC;AAEF,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;AAC5B,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI;AACpE,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YAC7D,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;YAE9B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;;AAG3C,QAAA,KAAK,mBAAmB,CAAC,YAAY,EAAE;AACrC,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;gBAC9B,OAAO,EAAE,MAAM,CAAC;AACjB,aAAA,CAAC;;AAEJ,QAAA,KAAK,mBAAmB,CAAC,YAAY,EAAE;AACrC,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;gBAC9B,OAAO,EAAE,MAAM,CAAC;AACjB,aAAA,CAAC;;AAEJ,QAAA,KAAK,mBAAmB,CAAC,eAAe,EAAE;AACxC,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;gBAC9B,UAAU,EAAE,MAAM,CAAC;AACpB,aAAA,CAAC;;AAEJ,QAAA,KAAK,mBAAmB,CAAC,uBAAuB,EAAE;AAChD,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;gBAC9B,iBAAiB,EAAE,MAAM,CAAC;AAC3B,aAAA,CAAC;;AAEJ,QAAA,KAAK,mBAAmB,CAAC,sBAAsB,EAAE;AAC/C,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;gBAC9B,gBAAgB,EAAE,MAAM,CAAC;AAC1B,aAAA,CAAC;;AAGJ,QAAA;AACE,YAAA,OAAO,KAAK;;AAElB;AAEA,SAAS,gBAAgB,CAAC,KAAwB,EAAA;AAChD,IAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACf,QAAA,OAAO,KAAK;;;AAId,IAAA,IAAI,aAAiC;IACrC,IAAI,KAAK,CAAC,oBAAoB;AAC5B,QAAA,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QAClE,aAAa,GAAG,CAAC;;SACZ;AACL,QAAA,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC;;;AAI1C,IAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;AAE9B,IAAA,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACvD,QAAA,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AACtF,YAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;;AAG/C,QAAA,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE;AAChF,QAAA,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;AAC1C,QAAA,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,aAAa,EAAE,UAAU,EAAE,EAAE;;AAEjE,YAAA,WAAW,CAAC,UAAU,CAAC,GAAG,gBAAgB,CACxC,QAAQ,EACR,KAAK,CAAC,gBAAgB,CACvB;YACD,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;;;AAG9C,QAAA,IAAI,KAAK,CAAC,wBAAwB,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,WAAW,EAAE;AAC9E,YAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC;;YAE3E,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;gBACxG,WAAW,GAAG,KAAK,CAAC;qBACjB,GAAG,CAAC,IAAI,IAAG;AACV,oBAAA,IAAI,KAAK,CAAC,gBAAgB,EAAE;wBAC1B,OAAO,gBAAgB,CACrB,IAAI,CAAC,KAAK,EACV,KAAK,CAAC,gBAAgB,CACvB;;AAEH,oBAAA,OAAO,IAAI;AACb,iBAAC;qBACA,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;;;AAIpC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC;;IAGlD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AAC/B,QAAA,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;AAC/C,QAAA,KACE,IAAI,aAAa,GAAG,CAAC,EACrB,aAAa,GAAG,aAAa,EAC7B,aAAa,EAAE,EACf;;AAEA,YAAA,cAAc,CAAC,aAAa,CAAC,GAAG,oBAAoB,CAClD,QAAQ,EACR,gBAAgB,CAAC,KAAK,CAAC,CACxB;YACD,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;AAG7C,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC;;IAGrD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AAC9B,QAAA,MAAM,kBAAkB,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;AAEnD,QAAA,KACE,IAAI,aAAa,GAAG,CAAC,EACrB,aAAa,GAAG,aAAa,EAC7B,aAAa,EAAE,EACf;;AAEA,YAAA,kBAAkB,CAAC,aAAa,CAAC,GAAG,mBAAmB,CACrD,QAAQ,EACR,gBAAgB,CAAC,KAAK,CAAC,EACvB,KAAK,CAAC,OAAO,KAAK,MAAM,GAAG,2BAA2B,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,SAAS,CACzF;YACD,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;;AAG5D,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,CAAC;;AAGzD,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,aAAa,CAAC,KAAwB,EAAA;AAC7C,IAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACf,QAAA,OAAO,KAAK;;AAGd,IAAA,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE;QAClD,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,KAC9D,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAC/D;AAED,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,CAAC;;;AAItD,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC;;;AAG9C,IAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;IAE9B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AAC/B,QAAA,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;AAC/C,QAAA,KACE,IAAI,aAAa,GAAG,CAAC,EACrB,aAAa,GAAG,aAAa,EAC7B,aAAa,EAAE,EACf;;AAEA,YAAA,cAAc,CAAC,aAAa,CAAC,GAAG,oBAAoB,CAClD,QAAQ,EACR,gBAAgB,CAAC,KAAK,CAAC,CACxB;YACD,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;AAG7C,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC;;IAGrD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AAC9B,QAAA,MAAM,kBAAkB,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;AACnD,QAAA,KACE,IAAI,aAAa,GAAG,CAAC,EACrB,aAAa,GAAG,aAAa,EAC7B,aAAa,EAAE,EACf;;AAEA,YAAA,kBAAkB,CAAC,aAAa,CAAC,GAAG,mBAAmB,CACrD,QAAQ,EACR,gBAAgB,CAAC,KAAK,CAAC,CACxB;YACD,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;;AAG9C,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,CAAC;;AAGzD,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,WAAW,CAAC,KAAwB,EAAA;AAC3C,IAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACf,QAAA,OAAO,KAAK;;AAGd,IAAA,MAAM,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa;AAChH,IAAA,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AACtD,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAC7C,CAAC,cAAc,EAAE,UAAU,KACzB,gBAAgB,CAAC,cAAc,EAAE;YAC/B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,aAAa;YACb,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC;AACD,SAAA,CAAC,CACL;AAED,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,CAAC;;AAGpD,IAAA,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,cAAc,EAAE;AACvD,QAAA,MAAM,qBAAqB,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CACpD,CAAC,cAAc,EAAE,UAAU,KACzB,kBAAkB,CAAC,cAAc,EAAE;YACjC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,aAAa;YACb;AACD,SAAA,CAAC,CACL;AAED,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,qBAAqB,EAAE,CAAC;;AAG5D,IAAA,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE;AAC1D,QAAA,MAAM,oBAAoB,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CACvD,CAAC,cAAc,EAAE,SAAS,KACxB,iBAAiB,CAAC,cAAc,EAAE;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,aAAa;YACb;AACD,SAAA,CAAC,CACL;AAED,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,oBAAoB,EAAE,CAAC;;AAG3D,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,qBAAqB,CAAC,KAAwB,EAAE,MAAc,EAAA;AACrE,IAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACf,QAAA,OAAO,KAAK;;IAGd,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,KAAK;;AAGd,IAAA,MAAM,QAAQ,GAAkC;AAC9C,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;YACrB;AACD;KACF;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC3C;AAEA,SAAS,aAAa,CAAC,KAAwB,EAAE,MAAc,EAAA;AAC7D,IAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACf,QAAA,OAAO,SAAS;;AAGlB,IAAA,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;QAC1D,MAAM,WAAW,GAAG,2BAA2B,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,IAAI,WAAW,EAAE;AACf,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAAC;YACtE,OAAO,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;;;AAIhD,IAAA,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;AACrE;AAEA,SAAS,gBAAgB,CAAC,KAAwB,EAAA;IAChD,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QAEpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAE1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAE1B,WAAW,EAAE,KAAK,CAAC;KACpB;AACH;AAEA;;;;;AAKG;AACH,SAAS,WAAW,CAAC,QAAuB,EAAE,OAAc,EAAE,OAAc,EAAA;AAC1E,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ;IAE9D,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;AAC7C,QAAA,OAAO,OAAO;;IAGhB,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;AAC9C,QAAA,OAAO,OAAO;;AAGhB,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,iBAAiB,CAAC,QAAc,EAAE,OAAc,EAAE,OAAc,EAAA;IACvE,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;AAC/C,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAO,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,QAAQ,EAAE;AACxE;;ACrfM,MAAO,iBAAkB,SAAQ,SAA4B,CAAA;AACjE,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,WAAW,GAAG,IAAI,eAAe,CAAS;AAC9C,YAAA,IAAI,EAAE;AACP,SAAA,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,SAAS,CACzB,sBAAsB,EACtB,WAAW,EACX,mBAAmB,CACpB;AACD,QAAA,KAAK,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,CAAC;;8GAVrC,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADL,UAAU,EAAA,CAAA,CAAA;;2FACtB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAC,UAAU,EAAE,UAAU,EAAC;;;MCiBvB,0BAA0B,CAAA;AAhBvC,IAAA,WAAA,GAAA;AAoBY,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAiB;AAKvD;AAHC,IAAA,gBAAgB,CAAC,KAAqB,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;8GAPhB,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAdzB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;AAUX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAhBtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;AAUX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAEU,MAAM,EAAA,CAAA;sBAAd;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACS,QAAQ,EAAA,CAAA;sBAAjB;;;ACwFH;AACA;AACA;AACA,IAAY,qBAGX;AAHD,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,qBAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAE;AACF,IAAA,qBAAA,CAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACN,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,GAGhC,EAAA,CAAA,CAAA;;MClHY,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,wGAHzB,CAA8D,4DAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAG/D,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAA8D,4DAAA,CAAA;AACxE,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAEU,KAAK,EAAA,CAAA;sBAAb;;;MCiBU,yBAAyB,CAAA;AAvBtC,IAAA,WAAA,GAAA;QAwBE,IAAI,CAAA,IAAA,GAAG,IAAI;QACX,IAAK,CAAA,KAAA,GAAG,CAAC;QACT,IAAO,CAAA,OAAA,GAAG,CAAC;AACZ;8GAJY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EArBxB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;AAkBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAvBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;AAkBX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCFY,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAlBxB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;AAeX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBApBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;AAeX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCOY,iCAAiC,CAAA;AAG5C,IAAA,WAAA,CACU,OAA2B,EAC3B,MAAkB,EAClB,SAAoB,EAAA;QAFpB,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAS,CAAA,SAAA,GAAT,SAAS;AALV,QAAA,IAAA,CAAA,GAAG,GAAiB,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;;IAQ5D,QAAQ,GAAA;AAEN,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AACtE,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;;QAGnF,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,aAAa,KAAK,QAAQ,EAAE;YAC/C,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG;AAC9B,iBAAA,MAAM,CAAC,CAAC,SAAiB,KAAK,SAAS;AACvC,iBAAA,OAAO,CAAC,CAAC,SAAiB,KAAI;AAC7B,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC;AAC/D,aAAC,CAAC;;;8GApBG,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,2dAHhC,CAA8B,4BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG/B,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAhB7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;oBACtC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACF,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,wBAAwB,EAAE,eAAe;AACzC,wBAAA,wBAAwB,EAAE,kBAAkB;AAC5C,wBAAA,+BAA+B,EAAE,yBAAyB;AAC1D,wBAAA,kBAAkB,EAAE,eAAe;AACnC,wBAAA,sBAAsB,EAAE,sBAAsB;AAC9C,wBAAA,oBAAoB,EAAE,oBAAoB;AAC1C,wBAAA,kBAAkB,EAAE;AACvB,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAA8B,4BAAA,CAAA;AACxC,oBAAA,UAAU,EAAE;AACf,iBAAA;qIAEU,GAAG,EAAA,CAAA;sBAAX;;;MCgBU,mCAAmC,CAAA;AA1ChD,IAAA,WAAA,GAAA;AA6CY,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAyB;AACtD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAwB;AAWhE;AATC,IAAA,KAAK,CAAC,IAAa,EAAA;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,GAAG,qBAAqB,CAAC,IAAI,GAAG,qBAAqB,CAAC,EAAE,CAC7D;;AAGH,IAAA,IAAI,CAAC,QAA8B,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;;8GAbrB,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,EAvClC,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGU,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBA1C/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,+BAA+B;oBACzC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAEU,QAAQ,EAAA,CAAA;sBAAhB;gBAES,UAAU,EAAA,CAAA;sBAAnB;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;MC+BU,2BAA2B,CAAA;AAetC,IAAA,WAAA,CAAoB,OAA2B,EAAA;QAA3B,IAAO,CAAA,OAAA,GAAP,OAAO;AAXjB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAqB;AAClD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAwB;AAErD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAgB;AAC3C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAkB;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAiB;QAOvD,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACvD,aAAC,SAAS,CAAC,QAAQ,KAAK,UAAU,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;AACtE,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7E,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;;AAI7B,IAAA,UAAU,CAAC,KAA4B,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AAC1D,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;;AAGjD,IAAA,cAAc,CAAC,KAA2B,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG7B,IAAA,SAAS,CAAC,KAAmB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG3B,IAAA,UAAU,CAAC,IAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACjE;;QAGF,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B;;QAGF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,eAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd,eAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;AAEtC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEhC;;QAGJ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAiB,KAAI;AACvD,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC;AAClB,kBAAE,CAAC,GAAG,CAAC;kBACL,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU;AAC1C,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AAE/B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,GAAiB,KAAI;AAC/D,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC;AAClB,sBAAE,CAAC,GAAG,CAAC;sBACL,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU;AAC1C,aAAC,CAAC;AAEF,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;;;IAItC,gBAAgB,CAAC,IAAmB,EAAE,SAAkB,EAAA;AACtD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACjE;;QAGF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAiB,KAAI;AACzD,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC;AAClB,kBAAE,CAAC,GAAG,CAAC;kBACL,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU;AAC1C,SAAC,CAAC;QAEF,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;;IAI/B,QAAQ,CAAC,IAAkB,EAAE,SAAkB,EAAA;QAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC,YAAY,EAAE;AAC1D,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;;AAGtC,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AACjC,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAmC,KAAI;gBAE5E,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AACvC,oBAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW;oBAEvC;;AAEJ,aAAC,CAAC;;QAGJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;8GA7G7B,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAxD1B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA3DvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;;AAEjC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;oFAEU,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAES,UAAU,EAAA,CAAA;sBAAnB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBAES,QAAQ,EAAA,CAAA;sBAAjB;gBACS,OAAO,EAAA,CAAA;sBAAhB;gBACS,WAAW,EAAA,CAAA;sBAApB;;;MCnDU,4BAA4B,CAAA;AA5BzC,IAAA,WAAA,GAAA;AA+BY,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAqB;AAClD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAwB;AAErD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAyB;AACpD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAkB;AAkBvD;AAhBC,IAAA,UAAU,CAAC,KAA4B,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AAC1D,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;;AAGhD,IAAA,SAAS,CAAC,KAA4B,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG3B,UAAU,CAAC,IAA2B,EAAE,SAAkB,EAAA;QACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;AAGxC,IAAA,cAAc,CAAC,KAA2B,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAA6B,CAAC;;8GAvB1C,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EA1B3B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA5BxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAEU,QAAQ,EAAA,CAAA;sBAAhB;gBAES,UAAU,EAAA,CAAA;sBAAnB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBAES,QAAQ,EAAA,CAAA;sBAAjB;gBACS,OAAO,EAAA,CAAA;sBAAhB;;;MCNU,4BAA4B,CAAA;AA5BzC,IAAA,WAAA,GAAA;AA+BY,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAqB;AAClD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAwB;AAErD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAyB;AACpD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAkB;AAkBvD;AAhBC,IAAA,UAAU,CAAC,KAA4B,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AAC1D,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,gBAAgB,EAAE,EAAE,CAAC;;AAGnE,IAAA,QAAQ,CAAC,IAA2B,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG1B,SAAS,CAAC,IAA2B,EAAE,SAAkB,EAAA;QACvD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;AAGxC,IAAA,cAAc,CAAC,KAA2B,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;8GAvBlB,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EA1B3B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA5BxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAEU,QAAQ,EAAA,CAAA;sBAAhB;gBAES,UAAU,EAAA,CAAA;sBAAnB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBAES,QAAQ,EAAA,CAAA;sBAAjB;gBACS,OAAO,EAAA,CAAA;sBAAhB;;;ACPG,MAAO,8BAA+B,SAAQ,6BAA6B,CAAA;IAG/E,IAAI,KAAK,CAAC,KAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC;;AAWhC,IAAA,WAAA,CACE,SAAoB,EACZ,OAA2B,EAC3B,MAAyB,EACzB,QAAoB,EACpB,QAA6B,EACrC,QAA6B,EACrB,gBAAoC,EAAA;AAE5C,QAAA,KAAK,EAAE;QAPC,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAER,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAf1B,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,YAAY,EAAQ;QAC1D,IAAc,CAAA,cAAA,GAAG,MAAM;QACd,IAAa,CAAA,aAAA,GAAG,KAAK;QAE9B,IAAK,CAAA,KAAA,GAAmB,EAAE;AAcxB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QAExB,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC;QAC9D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC;;IAGpE,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AAC/B,YAAA,SAAS,EAAE;AACT,gBAAA,IAAI,EAAE;AACJ,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;AACvB,iBAAA;AACD,gBAAA,eAAe,EAAE;AACf,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;AACvB;AACF,aAAA;AACD,YAAA,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC;AAChC,SAAA,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACvC,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAE/B,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAC3B,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,eAAe;gBAE1E;;AAGF,YAAA,IAAI,CAAC,cAAc,GAAG,YAAY;AACpC,SAAC,CAAC;QAEJ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB;QAC5D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;QACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe;QAChD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe;QAChD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;QAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB;QAC5D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;QACjD,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;;AAE5B,aAAA,UAAU,CAAC,IAAI,CAAC,OAAO;;aAEvB,WAAW,CAAC,IAAI;;aAEhB,gBAAgB,CAAC,IAAI;AACrB,aAAA,6BAA6B,EAAE;AAElC,QAAA,IAAI,WAAiB;;;QAGrB,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,IAAS,KAAI;YAC7E,WAAW,GAAG,IAAI;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;SAC5B,CAAC,CACH;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,IAAS,KAAI;YAC7E,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;gBACrE;;YAGA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjC,CAAC,CACH;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;IAG5E,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,GAAG,KAAI;AAC5D,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;gBACzC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;SAE3C,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC,GAAQ,KAAI;AAClD,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;AAChC,SAAC,CAAC;;AAGJ,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;;IAG9D,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;;IAGvB,iBAAiB,CAAC,IAAU,EAAE,KAAa,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;AAGpD,IAAA,gBAAgB,CAAC,GAAiB,EAAA;QACzC,IAAI,CAAC,GAAG,EAAE;YACT;;QAGD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC;QAEnG,IAAI,UAAU,EAAE;YACd;;AAGF,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;AAG7C,IAAA,kBAAkB,CAAC,GAA0B,EAAA;AACpD,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE;YAC1B;;QAGF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvB,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,gBAAA,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI;AAC3B,aAAA;AACD,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC,CACH;;AAGM,IAAA,iBAAiB,CAAC,GAA0B,EAAA;AACnD,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE;YAC1B;;QAGF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvB,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI;AAC3B,aAAA;AACD,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC,CACH;;IAGM,QAAQ,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;;IAG/C,SAAS,GAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;IAGvD,WAAW,GAAA;AACT,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,GAAG,CAAC,WAAW,EAAE;;AAEnB,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AAClC,QAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;;8GAnLf,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAX5B,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BvD,u7HA2FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EDvDgB,CAAC,mBAAmB,CAAC,EAAA,CAAA,CAAA;;2FAGxB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAb1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,aACxB,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,EAE7C,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,SAAS,EAAE,0BAA0B;AACrC,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,YAAY,EAAE;AACjB,qBAAA,EAAA,UAAA,EACW,CAAC,mBAAmB,CAAC,EAAA,UAAA,EACrB,KAAK,EAAA,QAAA,EAAA,u7HAAA,EAAA;iQAeG,eAAe,EAAA,CAAA;sBAApC,SAAS;uBAAC,SAAS;;;MEvBT,qBAAqB,CAAA;IA2EhC,WAAmB,CAAA,OAA2B,EACzB,WAAuB,EACvB,SAAoB,EAC7B,iBAAmC,EACnC,GAA2B,EAAA;QAJpB,IAAO,CAAA,OAAA,GAAP,OAAO;QACL,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAS,CAAA,SAAA,GAAT,SAAS;AA5E9B;;AAEG;QACM,IAAS,CAAA,SAAA,GAAwC,QAAQ;AAClE;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,OAAO;AAC3B;;AAEG;QACM,IAAY,CAAA,YAAA,GAAG,IAAI;AAC5B;;AAEG;QACM,IAAS,CAAA,SAAA,GAAG,MAAM;QAElB,IAAU,CAAA,UAAA,GAAG,IAAI;AAU1B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAE;AAC1B;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK;AAiC3B;;AAEG;AACO,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAE;QACtD,IAAK,CAAA,KAAA,GAAmB,EAAE;AAGnB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAsB;;QAQpE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CACjC,WAAW,EACX,iBAAiB,EACjB,SAAS,CACV;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGjD;;AAEG;AACH,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;;IAGjC,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAK1B;;AAEG;IACH,IACI,OAAO,CAAC,KAAuB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,EAAE;YACzE;;AAGF,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC3D,YAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;;QAGtB,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE;AAC3C,YAAA,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC;;AAG3C,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGhC,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB;;IAQ/B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACtB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI;AACtB,SAAA,CAAC;QACF,IAAI,CAAC,SAAS,EAAE;;AAGlB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACvB,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,eAAe,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClL,IAAI,CAAC,QAAQ,GAAG,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACzD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;YAGxC,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;;AAG7E,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YACzD;;AAGF,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;AAGrD,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;AAGrD,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;;AAG/D,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;;AAGjE,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;;AAG/D,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;AACzB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE;AACnC,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;;YAE1E,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;;AAG3D,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;YAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;;AAGzE,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;YAC/B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;;;IAIzE,cAAc,GAAA;;AAEZ,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAW,KAAI;AAC3C,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK;;SAE7C,CAAC,CACH;;AAGD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAW,KAAI;AACjE,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;gBACpB,IAAI,CAAC,IAAI,EAAE;aACZ,CAAC,CACH;;;IAIL,eAAe,GAAA;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,EACxC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;;AAGnC;;;AAGG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YAC5B;;QAGF,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,aAAA,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE;aAC/D,MAAM,CAAC,8BAA8B;AACrC,aAAA,EAAE,CAAC,IAAI,CAAC,SAAS;aACjB,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE;aACvC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAEtC,IAAI,CAAC,cAAc,EAAE;;AAGvB;;;AAGG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;AAEzB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,GAAG,CAAC,WAAW,EAAE;;AAGnB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE;;;AAI5E;;;AAGG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;;QAGpB,IAAI,CAAC,IAAI,EAAE;;AAGb;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;YAC5D,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC1F,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC/D,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC/D,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;AAC9E,YAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB;AAC7F,YAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB;AAC1F,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa;AACjF,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;AAC9E,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC/D,YAAA,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjC,SAAA,CAAC;;IAGJ,wBAAwB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;;;IAIzB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;QAE5B,IAAI,CAAC,wBAAwB,EAAE;;8GAtTtB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;yMAKU,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIQ,YAAY,EAAA,CAAA;sBAApB;gBAIQ,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAIS,OAAO,EAAA,CAAA;sBAAhB;gBAIS,QAAQ,EAAA,CAAA;sBAAjB;gBAMQ,UAAU,EAAA,CAAA;sBAAlB;gBAIQ,OAAO,EAAA,CAAA;sBAAf;gBAIQ,OAAO,EAAA,CAAA;sBAAf;gBAIQ,OAAO,EAAA,CAAA;sBAAf;gBAIQ,YAAY,EAAA,CAAA;sBAApB;gBAIQ,aAAa,EAAA,CAAA;sBAArB;gBAIQ,YAAY,EAAA,CAAA;sBAApB;gBAIQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAIQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAIS,aAAa,EAAA,CAAA;sBAAtB;gBA2BG,MAAM,EAAA,CAAA;sBADT;gBAeG,OAAO,EAAA,CAAA;sBADV;gBA0BQ,QAAQ,EAAA,CAAA;sBAAhB;;;AC9JG,MAAO,wBAAyB,SAAQ,kBAAkB,CAAA;8GAAnD,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFvB,MAAM,EAAA,CAAA,CAAA;;2FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACgBK,MAAO,oCAAqC,SAAQ,8BAA8B,CAAA;AAGtF,IAAA,WAAA,CACE,SAAoB,EACpB,OAA2B,EAC3B,MAAyB,EACzB,QAAoB,EACpB,QAA6B,EAC7B,QAA6B,EAC7B,mBAAuC,EAAA;AAEvC,QAAA,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,CAAC;QAEpF,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC;QACrE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC;;8GAfvD,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApC,oCAAoC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,SAAA,EARlC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EHbvD,u7HA2FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EGzEgB,CAAC,mBAAmB,CAAC,EAAA,CAAA,CAAA;;2FAGxB,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAVhD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,aAC/B,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,EAE7C,IAAA,EAAA;AACF,wBAAA,SAAS,EAAE;AACd,qBAAA,EAAA,UAAA,EACW,CAAC,mBAAmB,CAAC,EAAA,UAAA,EACrB,KAAK,EAAA,QAAA,EAAA,u7HAAA,EAAA;;;MCYR,2BAA2B,CAAA;IAyCtC,WACS,CAAA,OAAiC,EAChC,WAAuB,EAC/B,SAAoB,EACpB,iBAAmC,EACnC,GAA2B,EAAA;QAJpB,IAAO,CAAA,OAAA,GAAP,OAAO;QACN,IAAW,CAAA,WAAA,GAAX,WAAW;AAtCrB;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK;AAyB3B;;AAEG;AACO,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAE;QACtD,IAAK,CAAA,KAAA,GAAmB,EAAE;;QAYlC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CACjC,WAAW,EACX,iBAAiB,EACjB,SAAS,CACV;;AAKH;;AAEG;IACH,IACI,OAAO,CAAC,KAAuB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC3B;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC3D,YAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;;QAGvB,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE;AAC3C,YAAA,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC;;AAG3C,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGhC,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,cAAc,EAAE;;IAGvB,cAAc,GAAA;QACZ,IAAI,CAAC,wBAAwB,EAAE;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAW,KAAI;AAC3C,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK;;SAE7C,CAAC,CACH;AAED,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAW,KAAI;AACjE,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;aACrB,CAAC,CACH;;;IAIL,wBAAwB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;;;AAIzB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACvB,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,eAAe,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClL,IAAI,CAAC,QAAQ,GAAG,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACzD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;;AAI1C,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YACzD;;AAGF,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;AAGrD,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;AAGrD,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;;AAGjE,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;YAC7D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;;AAGpD,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;;AAG3D,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;YAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;;AAGzE,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;YAC/B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;;QAGvE,IAAI,CAAC,SAAS,EAAE;;AAGlB;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;AAGzB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;YAC5D,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC1F,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC/D,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC/D,YAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB;AAC7F,YAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB;AAC1F,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa;AACjF,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;AAC9E,YAAA,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjC,SAAA,CAAC;AAGF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,aAAA,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE;aAC/D,MAAM,CAAC,oCAAoC;AAC3C,aAAA,EAAE,CAAC,IAAI,CAAC,WAAW;AACnB,aAAA,IAAI,EAAE;QAET,IAAI,CAAC,cAAc,EAAE;;IAGvB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;QAC1B,IAAI,CAAC,wBAAwB,EAAE;;8GA5LtB,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE;AACf,iBAAA;+MAKU,QAAQ,EAAA,CAAA;sBAAhB;gBAIQ,UAAU,EAAA,CAAA;sBAAlB;gBAIQ,OAAO,EAAA,CAAA;sBAAf;gBAIQ,OAAO,EAAA,CAAA;sBAAf;gBAIQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAIQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAIQ,YAAY,EAAA,CAAA;sBAApB;gBAIQ,aAAa,EAAA,CAAA;sBAArB;gBAIS,aAAa,EAAA,CAAA;sBAAtB;gBA2BG,OAAO,EAAA,CAAA;sBADV;;;ACvFG,MAAO,6BAA8B,SAAQ,kBAAkB,CAAA;AAHrE,IAAA,WAAA,GAAA;;;QAKW,IAAa,CAAA,aAAA,GAAG,CAAC;;QAEjB,IAAU,CAAA,UAAA,GAAG,KAAK;AAC5B;8GALY,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cAF5B,MAAM,EAAA,CAAA,CAAA;;2FAEP,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACoCK,MAAO,mCAAoC,SAAQ,6BAA6B,CAAA;IAGpF,IAAI,KAAK,CAAC,KAAqC,EAAA;AAC7C,QAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC;;AAcrC,IAAA,WAAA,CACE,SAAoB,EACZ,OAA2B,EAC3B,MAAyB,EACzB,QAAoB,EACpB,QAA6B,EACrC,QAA6B,EACrB,gBAAoC,EAAA;AAE5C,QAAA,KAAK,EAAE;QAPC,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAER,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAlB1B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU;QACxC,IAAc,CAAA,cAAA,GAAG,MAAM;QAEvB,IAAW,CAAA,WAAA,GAAW,EAAE;QACf,IAAW,CAAA,WAAA,GAAW,EAAE;QACjC,IAAK,CAAA,KAAA,GAAmB,EAAE;QACjB,IAAa,CAAA,aAAA,GAAG,IAAI;AAe3B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QAExB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE;QAC7C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB;QAE5D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC;QAC9D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC;;IAGpE,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AAC/B,YAAA,SAAS,EAAE;AACT,gBAAA,IAAI,EAAE;AACJ,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;AACvB,iBAAA;AACD,gBAAA,eAAe,EAAE;AACf,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;AACvB;AACF,aAAA;AACD,YAAA,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC;AAChC,SAAA,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACvC,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAE/B,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAC3B,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,eAAe;gBAE1E;;AAGF,YAAA,IAAI,CAAC,cAAc,GAAG,YAAY;AACpC,SAAC,CAAC;QACJ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;QACjD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB;QAC5D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;QACjD,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;;;AAG5B,aAAA,UAAU,CAAC,IAAI,CAAC,OAAO;;aAEvB,WAAW,CAAC,IAAI;;aAEhB,gBAAgB,CAAC,IAAI;AACrB,aAAA,6BAA6B,EAAE;AAClC,QAAA,IAAI,WAA+B;;;AAGnC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC;aACF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa;aACnC,SAAS,CAAC,SAAS,IAAG;YACrB,WAAW,GAAG,SAAS;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;AAChC,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE;SACnC,CAAC,CACL;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC;aACF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY;AAClC,aAAA,SAAS,CAAC,CAAC,IAAQ,KAAI;AACtB,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtB,iBAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC;iBACzD,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5E;gBACA;;AAGF,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE;SAC9B,CAAC,CACL;;IAGH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,GAAG,KAAI;AAC5D,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;gBACzC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;SAEzC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC,GAAG,KAAI;AAC7C,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;AAChC,SAAC,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,GAAG,KAAI;AAC3C,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;AAChC,SAAC,CAAC;;AAGJ,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;;IAG9D,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;;IAGvB,iBAAiB,CAAC,IAAU,EAAE,KAAa,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;AAGpD,IAAA,gBAAgB,CAAC,GAAiB,EAAA;QACzC,IAAI,CAAC,GAAG,EAAE;YACR;;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC;QAEnG,IAAI,UAAU,EAAE;YACd;;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;;AAGnB,IAAA,kBAAkB,CAAC,GAA0B,EAAA;AACpD,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE;YAC1B;;AAGF,QAAA,GAAG,CAAC,UAAU,GAAG,IAAI;QAErB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE;AACpC,YAAA,IAAI,GAAG,CAAC,UAAU,EAAE;gBAClB;;YAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvB,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,oBAAA,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI;AAC3B,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACX,aAAA,CAAC,CACH;YAED;;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;;AAGnB,IAAA,iBAAiB,CAAC,GAA0B,EAAA;AACnD,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE;YAC1B;;AAGF,QAAA,GAAG,CAAC,UAAU,GAAG,IAAI;QAErB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE;AACnC,YAAA,IAAI,GAAG,CAAC,UAAU,EAAE;gBAClB;;YAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvB,gBAAA,IAAI,EAAE;AACJ,oBAAA,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI;AAC3B,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACX,aAAA,CAAC,CACH;YAED;;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;;AAG5B,IAAA,gBAAgB,CAAC,GAA0B,EAAA;;;;;;QAOzC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,WAAW;gBACd,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5B,sBAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI;AAChC,sBAAG,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGnB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAC7B,YAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC;;QAG1C,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAE7B,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAC7B,gBAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC;;;AAI5C,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEjE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE;;;IAIzB,WAAW,GAAA;AACT,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,GAAG,CAAC,WAAW,EAAE;;AAEnB,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AAClC,QAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;;AAGjB,IAAA,kBAAkB,CAAC,KAAoB,EAAA;QAC9C,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK;;AAE9E,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAGnE,IAAA,yBAAyB,CAAC,gBAAsB,EAAA;AAC9C,QAAA,IAAI,YAAY,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC;AAE7C,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB,MAAM,0BAA0B,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;YACjE,MAAM,0BAA0B,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,iBAAiB,CAAE;AACvH,YAAA,YAAY,GAAG,0BAA0B,GAAG,0BAA0B;gBACpE,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC9B,gBAAA,IAAI,IAAI,CAAC,0BAA0B,CAAC;;aACjC;AACL,YAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;;AAGrF,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC;;8GA/P9B,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnC,mCAAmC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAXjC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EN9BvD,u7HA2FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EMrDgB,CAAC,mBAAmB,CAAC,EAAA,CAAA,CAAA;;2FAGxB,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAb/C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,aAC7B,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,EAE7C,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,SAAS,EAAE,0BAA0B;AACrC,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,YAAY,EAAE;AACjB,qBAAA,EAAA,UAAA,EACW,CAAC,mBAAmB,CAAC,EAAA,UAAA,EACrB,KAAK,EAAA,QAAA,EAAA,u7HAAA,EAAA;iQAiBG,eAAe,EAAA,CAAA;sBAApC,SAAS;uBAAC,SAAS;gBACA,aAAa,EAAA,CAAA;sBAAhC,SAAS;uBAAC,OAAO;;;ACpCd,MAAO,yCAA0C,SAAQ,mCAAmC,CAAA;AAGhG,IAAA,WAAA,CACE,SAAoB,EACpB,OAA2B,EAC3B,MAAyB,EACzB,QAAoB,EACpB,QAA6B,EAC7B,QAA6B,EAC7B,mBAAuC,EAAA;AAEvC,QAAA,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,CAAC;QAEpF,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC;QACrE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC;;8GAfvD,yCAAyC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzC,yCAAyC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,SAAA,EARvC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EPbvD,u7HA2FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EOzEgB,CAAC,mBAAmB,CAAC,EAAA,CAAA,CAAA;;2FAGxB,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBAVrD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qCAAqC,aACpC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,EAE7C,IAAA,EAAA;AACF,wBAAA,SAAS,EAAE;AACd,qBAAA,EAAA,UAAA,EACW,CAAC,mBAAmB,CAAC,EAAA,UAAA,EACrB,KAAK,EAAA,QAAA,EAAA,u7HAAA,EAAA;;;MCMR,gCAAgC,CAAA;AAEzC;;AAEG;IACH,IACI,OAAO,CAAC,KAAqC,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC3B;;QAGF,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE;AAC3C,YAAA,KAAK,GAAG,oCAAoC,CAAC,KAAK,CAAC;;AAGrD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;IA6ChC,WACS,CAAA,OAAsC,EACrC,WAAuB,EAC/B,SAAoB,EACpB,iBAAmC,EACnC,GAA2B,EAAA;QAJpB,IAAO,CAAA,OAAA,GAAP,OAAO;QACN,IAAW,CAAA,WAAA,GAAX,WAAW;AAxCrB;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK;AAyB3B;;AAEG;AACO,QAAA,IAAA,CAAA,aAAa,GAAiD,IAAI,YAAY,EAAE;QAEhF,IAAK,CAAA,KAAA,GAAmB,EAAE;;QAalC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CACjC,WAAW,EACX,iBAAiB,EACjB,SAAS,CACV;;IAGH,QAAQ,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,cAAc,EAAE;;AAGzB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACvB,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,eAAe,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC/K,IAAI,CAAC,QAAQ,GAAG,oCAAoC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACnE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;;AAI1C,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YACzD;;AAGF,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;AAGrD,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;AAGrD,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;YAC7D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;;AAGpD,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;;AAGjE,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;;AAG/D,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;;AAG3D,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;YAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;;QAGzE,IAAI,CAAC,SAAS,EAAE;;AAGlB;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;AAGzB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;YAC5D,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC1F,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC/D,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC/D,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;AAC9E,YAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB;AAC7F,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa;AACjF,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;YAC9E,MAAM,EAAE,sBAAsB,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC7H,YAAY,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;AACzD,YAAA,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjC,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,aAAA,OAAO,CAAC,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAC;aAC7D,MAAM,CAAC,yCAAyC;AAChD,aAAA,EAAE,CAAC,IAAI,CAAC,WAAW;AACnB,aAAA,IAAI,EAAE;QAET,IAAI,CAAC,cAAc,EAAE;;IAGzB,cAAc,GAAA;QACZ,IAAI,CAAC,wBAAwB,EAAE;;AAE/B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAa,KAAI;AAC7C,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK;;SAE7C,CAAC,CACH;;AAGD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;iBAC1B,IAAI,CACH,MAAM,CAAC,CAAC,KAAa,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE3D,iBAAA,SAAS,CAAC,CAAC,KAAa,KAAI;AAC3B,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;aACrB,CAAC,CACL;;;IAIL,wBAAwB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;;;IAIvB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;QAC1B,IAAI,CAAC,wBAAwB,EAAE;;8GA/LxB,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAL5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE;AACf,iBAAA;oNAOO,OAAO,EAAA,CAAA;sBADV;gBAiBQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIQ,UAAU,EAAA,CAAA;sBAAlB;gBAIQ,OAAO,EAAA,CAAA;sBAAf;gBAIQ,OAAO,EAAA,CAAA;sBAAf;gBAIQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAIQ,YAAY,EAAA,CAAA;sBAApB;gBAIQ,aAAa,EAAA,CAAA;sBAArB;gBAIQ,YAAY,EAAA,CAAA;sBAApB;gBAIS,aAAa,EAAA,CAAA;sBAAtB;;;AC1CL,MAAM,4BAA4B,GAAa;AAC7C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,IAAA,KAAK,EAAE;CACR;AAED,MAAM,uBAAuB,GAAa;AACxC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,IAAA,KAAK,EAAE;CACR;MAaY,0BAA0B,CAAA;IAOrC,WACkB,CAAA,OAA8B,EACtC,cAA+B,EAC/B,SAAoB,EACpB,MAAkB,EAClB,eAAkC,EAAA;QAJ1B,IAAO,CAAA,OAAA,GAAP,OAAO;QACf,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAe,CAAA,eAAA,GAAf,eAAe;AAXjB,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,SAAS;AAC9B,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,SAAS;AAC/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,SAAS;AAErC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAE;;IAUlC,QAAQ,GAAA;AACN,QAAA,MAAM,UAAU,GAAG,CAAC,KAAW,KAAI;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AACzB,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACrB,IAAI,CAAC,UAAU,EAAE;;AAEnB,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,SAAC;;AAGD,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzB,YAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;;;AAInC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;;AAGhE,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AAC9C,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;SACjC,CAAC,CACH;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AACxE,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;SACjC,CAAC,CACH;;IAGH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;;AAG1B,IAAA,cAAc,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAClD,IAAI,CAAC,IAAI,EAAE;;;AAIf,IAAA,cAAc,CAAC,KAAY,EAAA;QACzB,MAAM,WAAW,GAAG,CAAC;AACnB,cAAE;AACF,cAAE,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;AAE9F,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,WAAW,CAAC;;AAG7E,IAAA,QAAQ,CAAC,KAAY,EAAA;;QAEnB,IAAI,CAAC,UAAU,CAAE,KAAK,CAAC,MAAc,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE;;QAErE,IAAI,CAAC,UAAU,EAAE;;AAGnB,IAAA,QAAQ,CAAC,CAAkB,EAAA;AACzB,QAAA,MAAM,MAAM,GAAkB,CAAC,CAAC,KAAK;AAErC,QAAA,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE;AAC5D,YAAA,OAAO,IAAI;;AAGb,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;AAClB,YAAA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC;YACxC,IAAI,CAAC,YAAY,EAAE;gBACjB,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;;YAGxC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;gBAC1F,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAErC,gBAAA,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;;YAGtD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;gBACzF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAErC,gBAAA,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;;;AAIxD,QAAA,OAAO,IAAI;;AAGb,IAAA,yBAAyB,CAAC,EAAc,EAAA;AACtC,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;;AAG5B,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC7B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;;aACf;AACL,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa;AACpD,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC;YACrC,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,CAAA,wDAAA,CAA0D,CAAC;;YAGlG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;YAEvG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC/B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;;;QAIzC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM;;AAGpC,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU;QACpC,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC;YAE9E;;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC;;AAGvE,IAAA,gBAAgB,CAAC,EAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;IAGtB,MAAM,GAAA;QACJ,IAAI,CAAC,UAAU,EAAE;;IAGnB,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE;QAClE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE;;;8GA3J5D,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAvB,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAH1B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,4BAA4B,EAAE,uBAAuB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGvD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAXtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,CAAqB,mBAAA,CAAA;AAC/B,oBAAA,IAAI,EAAE;AACJ,wBAAA,UAAU,EAAE,kBAAkB;AAC9B,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,WAAW,EAAE,wBAAwB;AACrC,wBAAA,QAAQ,EAAE;AACX,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,4BAA4B,EAAE,uBAAuB,CAAC;AAClE,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BASI;;;AC9DC,MAAO,uBAAwB,SAAQ,kBAAkB,CAAA;AAH/D,IAAA,WAAA,GAAA;;;QAKW,IAAa,CAAA,aAAA,GAAG,CAAC;AAC3B;8GAHY,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCmBY,0BAA0B,CAAA;AAsBrC;;AAEG;AACH,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;;IAGjC,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAgB1B;;AAEG;IACH,IACI,OAAO,CAAC,KAAqC,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC3B;;QAGF,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE;AAC3C,YAAA,KAAK,GAAG,oCAAoC,CAAC,KAAK,CAAC;;AAGrD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;AAyChC,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB;;IAQhC,WAAmB,CAAA,OAAgC,EAC9B,WAAuB,EACvB,SAAoB,EAC7B,iBAAmC,EACnC,GAA2B,EAAA;QAJpB,IAAO,CAAA,OAAA,GAAP,OAAO;QACL,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAS,CAAA,SAAA,GAAT,SAAS;AA/G9B;;AAEG;QACM,IAAS,CAAA,SAAA,GAAwC,QAAQ;AAClE;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,OAAO;AAC3B;;AAEG;QACM,IAAY,CAAA,YAAA,GAAG,IAAI;AAC5B;;AAEG;QACM,IAAS,CAAA,SAAA,GAAG,MAAM;QAElB,IAAU,CAAA,UAAA,GAAG,IAAI;AAyB1B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAE;AAuB1B;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK;AA0B3B;;AAEG;AACO,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAkC;QAMlE,IAAK,CAAA,KAAA,GAAmB,EAAE;AAGnB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAU;AAOzD,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CACjC,WAAW,EACX,iBAAiB,EACjB,SAAS,CACV;AACD,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;IAGjD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACtB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI;AACtB,SAAA,CAAC;QACF,IAAI,CAAC,SAAS,EAAE;;AAGlB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACvB,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,eAAe,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClL,IAAI,CAAC,QAAQ,GAAG,oCAAoC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACnE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;YAGxC,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC;;AAIrH,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YACzD;;AAEF,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;AAErD,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;AAErD,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;;AAEjE,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;;AAE/D,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;;AAE/D,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;AACzB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE;AACnC,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;;YAE1E,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;;AAE3D,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;YAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;;;IAI3E,eAAe,GAAA;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,EACxC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;;AAGnC;;;AAGG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YAC5B;;QAGF,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,aAAA,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE;aAC/D,MAAM,CAAC,mCAAmC;AAC1C,aAAA,EAAE,CAAC,IAAI,CAAC,SAAS;aACjB,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE;aACvC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAEtC,IAAI,CAAC,cAAc,EAAE;;IAGvB,cAAc,GAAA;;AAEZ,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAa,KAAI;AAC7C,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK;;SAE7C,CAAC,CACH;;AAGD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;iBAC1B,IAAI,CACH,MAAM,CAAC,CAAC,KAAa,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE3D,iBAAA,SAAS,CAAC,CAAC,KAAa,KAAI;AAC3B,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;gBACpB,IAAI,CAAC,IAAI,EAAE;aACZ,CAAC,CACL;;;AAIL;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAC1B,EAAE,EACF,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,QAAQ,EACb;YACE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC1F,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC/D,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC/D,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;AAC9E,YAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB;AAC7F,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa;AACjF,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;YAC9E,MAAM,EAAE,sBAAsB,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC7H,YAAY,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;AACzD,YAAA,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjC,SAAA,CACF;;AAGH;;;AAGG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;AAEzB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,GAAG,CAAC,WAAW,EAAE;;AAGnB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE;;;AAI5E;;;AAGG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;;QAGpB,IAAI,CAAC,IAAI,EAAE;;IAGb,wBAAwB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;;;IAIzB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;QAG5B,IAAI,CAAC,wBAAwB,EAAE;;8GA7StB,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAwB,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE;AACf,iBAAA;8MAMU,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIQ,YAAY,EAAA,CAAA;sBAApB;gBAIQ,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAMG,MAAM,EAAA,CAAA;sBADT;gBAYS,OAAO,EAAA,CAAA;sBAAhB;gBAIS,QAAQ,EAAA,CAAA;sBAAjB;gBAUG,OAAO,EAAA,CAAA;sBADV;gBAiBQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIQ,UAAU,EAAA,CAAA;sBAAlB;gBAIQ,OAAO,EAAA,CAAA;sBAAf;gBAIQ,OAAO,EAAA,CAAA;sBAAf;gBAIQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAIQ,YAAY,EAAA,CAAA;sBAApB;gBAIQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBAIS,aAAa,EAAA,CAAA;sBAAtB;;;ACvFH,MAAM,iCAAiC,GAAa;AAClD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,+BAA+B,CAAC;AAC9D,IAAA,KAAK,EAAE;CACR;AAED,MAAM,4BAA4B,GAAa;AAC7C,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,+BAA+B,CAAC;AAC9D,IAAA,KAAK,EAAE;CACR;MAaY,+BAA+B,CAAA;IAO1C,WACkB,CAAA,OAAmC,EAC3C,cAA+B,EAC/B,SAAoB,EACpB,MAAkB,EAClB,eAAkC,EAAA;QAJ1B,IAAO,CAAA,OAAA,GAAP,OAAO;QACf,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAe,CAAA,eAAA,GAAf,eAAe;AAXjB,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,SAAS;AAC9B,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,SAAS;AAC/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,SAAS;AAErC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAE;;IAUlC,QAAQ,GAAA;AACN,QAAA,MAAM,UAAU,GAAG,CAAC,KAA2B,KAAI;AACjD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AACzB,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACrB,IAAI,CAAC,UAAU,EAAE;;AAEnB,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,SAAC;;AAGD,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzB,YAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;;;AAInC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAa,KAAI;AACrD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AACzB,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACrB,IAAI,CAAC,UAAU,EAAE;;AAEnB,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;SACpC,CAAC,CACH;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AAC9C,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;SACjC,CAAC,CACH;QAED,IAAI,CAAC,KAAK,CAAC,GAAG;;AAEZ,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AACzE,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;SACjC,CAAC,CACH;;IAGH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;;AAG1B,IAAA,cAAc,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAClD,IAAI,CAAC,IAAI,EAAE;;;AAIf,IAAA,cAAc,CAAC,IAA2B,EAAA;QACxC,IAAI,KAAK,GAAG,EAAE;QACd,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,KAAK,GAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,kBAAE;kBACA,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;AACjG,YAAA,MAAM,GAAG,GAAW,CAAC,IAAI,CAAC,CAAC;AACzB,kBAAE;kBACA,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;YACjG,KAAK,GAAG,KAAK,IAAI,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,GAAG,GAAG,EAAE;;AAE/E,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC;;AAGvE,IAAA,QAAQ,CAAC,KAAY,EAAA;;QAEnB,IAAI,CAAC,UAAU,CAAE,KAAK,CAAC,MAAc,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE;;QAErE,IAAI,CAAC,UAAU,EAAE;;AAGnB,IAAA,QAAQ,CAAC,CAAkB,EAAA;AACzB,QAAA,IAAI,MAAM,GAAiB,CAAC,CAAC,KAAK;QAClC,MAAM,MAAM,GAA8B,EAAE;AAE5C,QAAA,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/D,YAAA,OAAO,IAAI;;QAGb,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAiB;QAEjF,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,iBAAiB,EAAE;AACtB,YAAA,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;;QAG3C,IAAI,CAAC,kBAAkB,EAAE;AACvB,YAAA,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;;QAG3C,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;YAC7F,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAChC,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;;QAG5D,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;YAC5F,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAChC,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;;AAE5D,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAEvB,YAAA,OAAO,MAAM;;AAGf,QAAA,OAAO,IAAI;;AAGb,IAAA,yBAAyB,CAAC,EAAc,EAAA;AACtC,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;;AAG5B,IAAA,UAAU,CAAC,KAAsB,EAAA;QAC/B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;;aACf;AACL,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa;AACpD,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC;YACrC,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,CAAA,wDAAA,CAA0D,CAAC;;YAGlG,IAAI,MAAM,GAAsB,EAAE;AAClC,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,gBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE;AACnE,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,oBAAA,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;;qBACpD;AACL,oBAAA,MAAM,GAAG;yBACN,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,GAAG,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc;yBAC1F,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;;;AAIjC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,MAAM,GAAG,KAAK;;YAGhB,IAAI,CAAC,MAAM,GAAG;AACX,iBAAA,GAAG,CAAC,CAAC,IAAmB,KAAU;gBACjC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;oBAC/B,OAAO,UAAU,CACf,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAC1F;;AAGH,gBAAA,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;AAClG,aAAC;iBACA,GAAG,CAAC,CAAC,IAAU,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;;QAGjE,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM;;AAGpC,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU;QACpC,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC;YAE9E;;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC;;;AAIvE,IAAA,gBAAgB,CAAC,EAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;;AAIrB,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;IAGtB,MAAM,GAAA;QACJ,IAAI,CAAC,UAAU,EAAE;;IAGnB,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE;QAElE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE;;;8GA/M5D,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAzB,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAH/B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,iCAAiC,EAAE,4BAA4B,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGjE,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAX3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,CAA0B,wBAAA,CAAA;AACpC,oBAAA,IAAI,EAAE;AACJ,wBAAA,UAAU,EAAE,kBAAkB;AAC9B,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,WAAW,EAAE,wBAAwB;AACrC,wBAAA,QAAQ,EAAE;AACX,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,iCAAiC,EAAE,4BAA4B,CAAC;AAC5E,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BASI;;;MCKQ,kBAAkB,CAAA;AAC7B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,SAAS,EAAE;gBACT,sBAAsB;gBACtB,kBAAkB;gBAClB,iBAAiB;gBACjB,mBAAmB;gBACnB,mBAAmB;gBACnB,eAAe;gBACf;AACD;SACF;;8GAbQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,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,kBAAkB,iBAjCvB,yBAAyB;YACzB,0BAA0B;YAC1B,0BAA0B;YAC1B,iCAAiC;YACjC,mCAAmC;YACnC,2BAA2B;YAC3B,4BAA4B;YAC5B,yBAAyB;YACzB,4BAA4B;YAC5B,8BAA8B;YAC9B,qBAAqB;YACrB,oCAAoC;YACpC,2BAA2B;YAC3B,0BAA0B;YAC1B,mCAAmC;YACnC,0BAA0B;YAC1B,yCAAyC;YACzC,gCAAgC;AAChC,YAAA,+BAA+B,aApBzB,YAAY,EAAE,aAAa,EAAE,gBAAgB,aAuBnD,8BAA8B;YAC9B,qBAAqB;YACrB,oCAAoC;YACpC,2BAA2B;YAC3B,0BAA0B;YAC1B,mCAAmC;YACnC,0BAA0B;YAC1B,yCAAyC;YACzC,gCAAgC;YAChC,+BAA+B,CAAA,EAAA,CAAA,CAAA;AAG1B,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,kBAAkB,EAnCjB,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAmC9C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBApC9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC;AACxD,oBAAA,YAAY,EAAE;wBACV,yBAAyB;wBACzB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,iCAAiC;wBACjC,mCAAmC;wBACnC,2BAA2B;wBAC3B,4BAA4B;wBAC5B,yBAAyB;wBACzB,4BAA4B;wBAC5B,8BAA8B;wBAC9B,qBAAqB;wBACrB,oCAAoC;wBACpC,2BAA2B;wBAC3B,0BAA0B;wBAC1B,mCAAmC;wBACnC,0BAA0B;wBAC1B,yCAAyC;wBACzC,gCAAgC;wBAChC;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,8BAA8B;wBAC9B,qBAAqB;wBACrB,oCAAoC;wBACpC,2BAA2B;wBAC3B,0BAA0B;wBAC1B,mCAAmC;wBACnC,0BAA0B;wBAC1B,yCAAyC;wBACzC,gCAAgC;wBAChC;AACH;AACJ,iBAAA;;;ACxED;;AAEG;;;;"}