{"version":3,"file":"angular-material-components-moment-adapter.mjs","sources":["../../../../projects/moment-adapter/src/lib/moment-adapter.ts","../../../../projects/moment-adapter/src/lib/moment-formats.ts","../../../../projects/moment-adapter/src/lib/moment-adapter.module.ts","../../../../projects/moment-adapter/src/public-api.ts","../../../../projects/moment-adapter/src/angular-material-components-moment-adapter.ts"],"sourcesContent":["\r\n\r\nimport { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\r\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\r\n// Depending on whether rollup is used, moment needs to be imported differently.\r\n// Since Moment.js doesn't have a default export, we normally need to import using the `* as`\r\n// syntax. However, rollup creates a synthetic default module and we thus need to import it using\r\n// the `default as` syntax.\r\n// TODO(mmalerba): See if we can clean this up at some point.\r\nimport * as _moment from 'moment';\r\n// tslint:disable-next-line:no-duplicate-imports\r\nimport { default as _rollupMoment, Moment, MomentFormatSpecification, MomentInput } from 'moment';\r\nimport { NgxMatDateAdapter } from '@angular-material-components/datetime-picker';\r\n\r\nconst moment = _rollupMoment || _moment;\r\n\r\n/** Configurable options for {@see MomentDateAdapter}. */\r\nexport interface NgxMatMomentDateAdapterOptions {\r\n\r\n  /**\r\n   * When enabled, the dates have to match the format exactly.\r\n   * See https://momentjs.com/guides/#/parsing/strict-mode/.\r\n   */\r\n  strict?: boolean;\r\n\r\n  /**\r\n   * Turns the use of utc dates on or off.\r\n   * Changing this will change how Angular Material components like DatePicker output dates.\r\n   * {@default false}\r\n   */\r\n  useUtc?: boolean;\r\n}\r\n\r\n/** InjectionToken for moment date adapter to configure options. */\r\nexport const NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS = new InjectionToken<NgxMatMomentDateAdapterOptions>(\r\n  'NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS', {\r\n  providedIn: 'root',\r\n  factory: NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY\r\n});\r\n\r\n\r\n/** @docs-private */\r\nexport function NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY(): NgxMatMomentDateAdapterOptions {\r\n  return {\r\n    useUtc: false\r\n  };\r\n}\r\n\r\n\r\n/** Creates an array and fills it with values. */\r\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\r\n  const valuesArray = Array(length);\r\n  for (let i = 0; i < length; i++) {\r\n    valuesArray[i] = valueFunction(i);\r\n  }\r\n  return valuesArray;\r\n}\r\n\r\n\r\n/** Adapts Moment.js Dates for use with Angular Material. */\r\n@Injectable()\r\nexport class NgxMatMomentAdapter extends NgxMatDateAdapter<Moment> {\r\n\r\n  // Note: all of the methods that accept a `Moment` input parameter immediately call `this.clone`\r\n  // on it. This is to ensure that we're working with a `Moment` that has the correct locale setting\r\n  // while avoiding mutating the original object passed to us. Just calling `.locale(...)` on the\r\n  // input would mutate the object.\r\n\r\n  private _localeData: {\r\n    firstDayOfWeek: number,\r\n    longMonths: string[],\r\n    shortMonths: string[],\r\n    dates: string[],\r\n    longDaysOfWeek: string[],\r\n    shortDaysOfWeek: string[],\r\n    narrowDaysOfWeek: string[]\r\n  };\r\n\r\n  constructor(@Optional() @Inject(MAT_DATE_LOCALE) dateLocale: string,\r\n    @Optional() @Inject(NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS)\r\n    private _options?: NgxMatMomentDateAdapterOptions) {\r\n\r\n    super();\r\n    this.setLocale(dateLocale || moment.locale());\r\n  }\r\n\r\n  setLocale(locale: string) {\r\n    super.setLocale(locale);\r\n\r\n    let momentLocaleData = moment.localeData(locale);\r\n    this._localeData = {\r\n      firstDayOfWeek: momentLocaleData.firstDayOfWeek(),\r\n      longMonths: momentLocaleData.months(),\r\n      shortMonths: momentLocaleData.monthsShort(),\r\n      dates: range(31, (i) => this.createDate(2017, 0, i + 1).format('D')),\r\n      longDaysOfWeek: momentLocaleData.weekdays(),\r\n      shortDaysOfWeek: momentLocaleData.weekdaysShort(),\r\n      narrowDaysOfWeek: momentLocaleData.weekdaysMin(),\r\n    };\r\n  }\r\n\r\n  getYear(date: Moment): number {\r\n    return this.clone(date).year();\r\n  }\r\n\r\n  getMonth(date: Moment): number {\r\n    return this.clone(date).month();\r\n  }\r\n\r\n  getDate(date: Moment): number {\r\n    return this.clone(date).date();\r\n  }\r\n\r\n  getDayOfWeek(date: Moment): number {\r\n    return this.clone(date).day();\r\n  }\r\n\r\n  getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n    // Moment.js doesn't support narrow month names, so we just use short if narrow is requested.\r\n    return style == 'long' ? this._localeData.longMonths : this._localeData.shortMonths;\r\n  }\r\n\r\n  getDateNames(): string[] {\r\n    return this._localeData.dates;\r\n  }\r\n\r\n  getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n    if (style == 'long') {\r\n      return this._localeData.longDaysOfWeek;\r\n    }\r\n    if (style == 'short') {\r\n      return this._localeData.shortDaysOfWeek;\r\n    }\r\n    return this._localeData.narrowDaysOfWeek;\r\n  }\r\n\r\n  getYearName(date: Moment): string {\r\n    return this.clone(date).format('YYYY');\r\n  }\r\n\r\n  getFirstDayOfWeek(): number {\r\n    return this._localeData.firstDayOfWeek;\r\n  }\r\n\r\n  getNumDaysInMonth(date: Moment): number {\r\n    return this.clone(date).daysInMonth();\r\n  }\r\n\r\n  clone(date: Moment): Moment {\r\n    return date.clone().locale(this.locale);\r\n  }\r\n\r\n  createDate(year: number, month: number, date: number): Moment {\r\n    // Moment.js will create an invalid date if any of the components are out of bounds, but we\r\n    // explicitly check each case so we can throw more descriptive errors.\r\n    if (month < 0 || month > 11) {\r\n      throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\r\n    }\r\n\r\n    if (date < 1) {\r\n      throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\r\n    }\r\n\r\n    const result = this._createMoment({ year, month, date }).locale(this.locale);\r\n\r\n    // If the result isn't valid, the date must have been out of bounds for this month.\r\n    if (!result.isValid()) {\r\n      throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  today(): Moment {\r\n    return this._createMoment().locale(this.locale);\r\n  }\r\n\r\n  parse(value: any, parseFormat: string | string[]): Moment | null {\r\n    if (value && typeof value == 'string') {\r\n      return this._createMoment(value, parseFormat, this.locale);\r\n    }\r\n    return value ? this._createMoment(value).locale(this.locale) : null;\r\n  }\r\n\r\n  format(date: Moment, displayFormat: string): string {\r\n    date = this.clone(date);\r\n    if (!this.isValid(date)) {\r\n      throw Error('MomentDateAdapter: Cannot format invalid date.');\r\n    }\r\n    return date.format(displayFormat);\r\n  }\r\n\r\n  addCalendarYears(date: Moment, years: number): Moment {\r\n    return this.clone(date).add({ years });\r\n  }\r\n\r\n  addCalendarMonths(date: Moment, months: number): Moment {\r\n    return this.clone(date).add({ months });\r\n  }\r\n\r\n  addCalendarDays(date: Moment, days: number): Moment {\r\n    return this.clone(date).add({ days });\r\n  }\r\n\r\n  toIso8601(date: Moment): string {\r\n    return this.clone(date).format();\r\n  }\r\n\r\n  /**\r\n   * Returns the given value if given a valid Moment or null. Deserializes valid ISO 8601 strings\r\n   * (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid Moments and empty\r\n   * string into null. Returns an invalid date for all other values.\r\n   */\r\n  deserialize(value: any): Moment | null {\r\n    let date;\r\n    if (value instanceof Date) {\r\n      date = this._createMoment(value).locale(this.locale);\r\n    } else if (this.isDateInstance(value)) {\r\n      // Note: assumes that cloning also sets the correct locale.\r\n      return this.clone(value);\r\n    }\r\n    if (typeof value === 'string') {\r\n      if (!value) {\r\n        return null;\r\n      }\r\n      date = this._createMoment(value, moment.ISO_8601).locale(this.locale);\r\n    }\r\n    if (date && this.isValid(date)) {\r\n      return this._createMoment(date).locale(this.locale);\r\n    }\r\n    return super.deserialize(value);\r\n  }\r\n\r\n  isDateInstance(obj: any): boolean {\r\n    return moment.isMoment(obj);\r\n  }\r\n\r\n  isValid(date: Moment): boolean {\r\n    return this.clone(date).isValid();\r\n  }\r\n\r\n  invalid(): Moment {\r\n    return moment.invalid();\r\n  }\r\n\r\n  getHour(date: _moment.Moment): number {\r\n    return date.hours();\r\n  }\r\n  getMinute(date: _moment.Moment): number {\r\n    return date.minutes();\r\n  }\r\n  getSecond(date: _moment.Moment): number {\r\n    return date.seconds();\r\n  }\r\n  setHour(date: _moment.Moment, value: number): void {\r\n    date.hours(value);\r\n  }\r\n  setMinute(date: _moment.Moment, value: number): void {\r\n    date.minutes(value)\r\n  }\r\n  setSecond(date: _moment.Moment, value: number): void {\r\n    date.seconds(value);\r\n  }\r\n\r\n  /** Creates a Moment instance while respecting the current UTC settings. */\r\n  private _createMoment(\r\n    date?: MomentInput,\r\n    format?: MomentFormatSpecification,\r\n    locale?: string,\r\n  ): Moment {\r\n    const { strict, useUtc }: NgxMatMomentDateAdapterOptions = this._options || {};\r\n\r\n    return useUtc\r\n      ? moment.utc(date, format, locale, strict)\r\n      : moment(date, format, locale, strict);\r\n  }\r\n}\r\n","\r\n\r\nimport { NgxMatDateFormats } from '@angular-material-components/datetime-picker';\r\n\r\nconst DEFAULT_DATE_INPUT = 'l, LTS';\r\n\r\nexport const NGX_MAT_MOMENT_FORMATS: NgxMatDateFormats = {\r\n  parse: {\r\n    dateInput: DEFAULT_DATE_INPUT,\r\n  },\r\n  display: {\r\n    dateInput: DEFAULT_DATE_INPUT,\r\n    monthYearLabel: 'MMM YYYY',\r\n    dateA11yLabel: 'LL',\r\n    monthYearA11yLabel: 'MMMM YYYY',\r\n  },\r\n};\r\n","\r\n\r\nimport { NgxMatDateAdapter, NGX_MAT_DATE_FORMATS } from '@angular-material-components/datetime-picker';\r\nimport { NgModule } from '@angular/core';\r\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { NgxMatMomentAdapter, NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS } from './moment-adapter';\r\nimport { NGX_MAT_MOMENT_FORMATS } from './moment-formats';\r\n\r\n@NgModule({\r\n  providers: [\r\n    {\r\n      provide: NgxMatDateAdapter,\r\n      useClass: NgxMatMomentAdapter,\r\n      deps: [MAT_DATE_LOCALE, NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS]\r\n    }\r\n  ],\r\n})\r\nexport class NgxMomentDateModule { }\r\n\r\n\r\n@NgModule({\r\n  imports: [NgxMomentDateModule],\r\n  providers: [{ provide: NGX_MAT_DATE_FORMATS, useValue: NGX_MAT_MOMENT_FORMATS }],\r\n})\r\nexport class NgxMatMomentModule { }\r\n","/*\r\n * Public API Surface of ngx-mat-moment-adapter\r\n */\r\n\r\nexport * from './lib/moment-adapter';\r\nexport * from './lib/moment-formats';\r\nexport * from './lib/moment-adapter.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_rollupMoment","_moment"],"mappings":";;;;;;;AAcA,MAAM,MAAM,GAAGA,sBAAa,IAAIC,aAAO,CAAC;AAmBxC;MACa,mCAAmC,GAAG,IAAI,cAAc,CACnE,qCAAqC,EAAE;AACvC,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,2CAA2C;AACrD,CAAA,EAAE;AAGH;SACgB,2CAA2C,GAAA;IACzD,OAAO;AACL,QAAA,MAAM,EAAE,KAAK;KACd,CAAC;AACJ,CAAC;AAGD;AACA,SAAS,KAAK,CAAI,MAAc,EAAE,aAAmC,EAAA;AACnE,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AACnC,KAAA;AACD,IAAA,OAAO,WAAW,CAAC;AACrB,CAAC;AAGD;AAEM,MAAO,mBAAoB,SAAQ,iBAAyB,CAAA;IAiBhE,WAAiD,CAAA,UAAkB,EAEzD,QAAyC,EAAA;AAEjD,QAAA,KAAK,EAAE,CAAC;AAFA,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiC;QAGjD,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;KAC/C;AAED,IAAA,SAAS,CAAC,MAAc,EAAA;AACtB,QAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAExB,IAAI,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,cAAc,EAAE,gBAAgB,CAAC,cAAc,EAAE;AACjD,YAAA,UAAU,EAAE,gBAAgB,CAAC,MAAM,EAAE;AACrC,YAAA,WAAW,EAAE,gBAAgB,CAAC,WAAW,EAAE;YAC3C,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACpE,YAAA,cAAc,EAAE,gBAAgB,CAAC,QAAQ,EAAE;AAC3C,YAAA,eAAe,EAAE,gBAAgB,CAAC,aAAa,EAAE;AACjD,YAAA,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,EAAE;SACjD,CAAC;KACH;AAED,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;KAChC;AAED,IAAA,QAAQ,CAAC,IAAY,EAAA;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;KACjC;AAED,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;KAChC;AAED,IAAA,YAAY,CAAC,IAAY,EAAA;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;KAC/B;AAED,IAAA,aAAa,CAAC,KAAkC,EAAA;;AAE9C,QAAA,OAAO,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;KACrF;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAC/B;AAED,IAAA,iBAAiB,CAAC,KAAkC,EAAA;QAClD,IAAI,KAAK,IAAI,MAAM,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;AACxC,SAAA;QACD,IAAI,KAAK,IAAI,OAAO,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;AACzC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC;KAC1C;AAED,IAAA,WAAW,CAAC,IAAY,EAAA;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACxC;IAED,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;KACxC;AAED,IAAA,iBAAiB,CAAC,IAAY,EAAA;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;KACvC;AAED,IAAA,KAAK,CAAC,IAAY,EAAA;QAChB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACzC;AAED,IAAA,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAA;;;AAGlD,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE;AAC3B,YAAA,MAAM,KAAK,CAAC,CAAA,qBAAA,EAAwB,KAAK,CAAA,0CAAA,CAA4C,CAAC,CAAC;AACxF,SAAA;QAED,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,YAAA,MAAM,KAAK,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAA,iCAAA,CAAmC,CAAC,CAAC;AACvE,SAAA;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAG7E,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;YACrB,MAAM,KAAK,CAAC,CAAiB,cAAA,EAAA,IAAI,2BAA2B,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;AACxE,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;IAED,KAAK,GAAA;QACH,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACjD;IAED,KAAK,CAAC,KAAU,EAAE,WAA8B,EAAA;AAC9C,QAAA,IAAI,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;AACrC,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5D,SAAA;QACD,OAAO,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;KACrE;IAED,MAAM,CAAC,IAAY,EAAE,aAAqB,EAAA;AACxC,QAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACvB,YAAA,MAAM,KAAK,CAAC,gDAAgD,CAAC,CAAC;AAC/D,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KACnC;IAED,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACxC;IAED,iBAAiB,CAAC,IAAY,EAAE,MAAc,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACzC;IAED,eAAe,CAAC,IAAY,EAAE,IAAY,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACvC;AAED,IAAA,SAAS,CAAC,IAAY,EAAA;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;KAClC;AAED;;;;AAIG;AACH,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC;QACT,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;;AAErC,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACD,YAAA,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvE,SAAA;QACD,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,SAAA;AACD,QAAA,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACjC;AAED,IAAA,cAAc,CAAC,GAAQ,EAAA;AACrB,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KAC7B;AAED,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;KACnC;IAED,OAAO,GAAA;AACL,QAAA,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;KACzB;AAED,IAAA,OAAO,CAAC,IAAoB,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;KACrB;AACD,IAAA,SAAS,CAAC,IAAoB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACvB;AACD,IAAA,SAAS,CAAC,IAAoB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACvB;IACD,OAAO,CAAC,IAAoB,EAAE,KAAa,EAAA;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACnB;IACD,SAAS,CAAC,IAAoB,EAAE,KAAa,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpB;IACD,SAAS,CAAC,IAAoB,EAAE,KAAa,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACrB;;AAGO,IAAA,aAAa,CACnB,IAAkB,EAClB,MAAkC,EAClC,MAAe,EAAA;QAEf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAmC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAE/E,QAAA,OAAO,MAAM;AACX,cAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;cACxC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;KAC1C;;mIAtNU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAiBE,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACzB,mCAAmC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uIAlB9C,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;8BAkBI,QAAQ;;8BAAI,MAAM;+BAAC,eAAe,CAAA;;8BAC5C,QAAQ;;8BAAI,MAAM;+BAAC,mCAAmC,CAAA;;;;AC3E3D,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAEvB,MAAA,sBAAsB,GAAsB;AACvD,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,kBAAkB;AAC9B,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,kBAAkB,EAAE,WAAW;AAChC,KAAA;;;MCEU,mBAAmB,CAAA;;mIAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;oIAAnB,mBAAmB,EAAA,CAAA,CAAA;AAAnB,mBAAA,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EARnB,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,QAAQ,EAAE,mBAAmB;AAC7B,YAAA,IAAI,EAAE,CAAC,eAAe,EAAE,mCAAmC,CAAC;AAC7D,SAAA;AACF,KAAA,EAAA,CAAA,CAAA;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,mBAAmB;AAC7B,4BAAA,IAAI,EAAE,CAAC,eAAe,EAAE,mCAAmC,CAAC;AAC7D,yBAAA;AACF,qBAAA;iBACF,CAAA;;MAQY,kBAAkB,CAAA;;kIAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,mBAAA,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAPlB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAOnB,mBAAA,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAFlB,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC,YADtE,mBAAmB,CAAA,EAAA,CAAA,CAAA;2FAGlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,mBAAmB,CAAC;oBAC9B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;iBACjF,CAAA;;;ACvBD;;AAEG;;ACFH;;AAEG;;;;"}