{"version":3,"file":"ngxs-form-plugin.mjs","sources":["../../../packages/form-plugin/src/actions.ts","../../../packages/form-plugin/src/form.plugin.ts","../../../packages/form-plugin/src/directive.ts","../../../packages/form-plugin/src/form.module.ts","../../../packages/form-plugin/index.ts","../../../packages/form-plugin/ngxs-form-plugin.ts"],"sourcesContent":["export class UpdateFormStatus {\n  static readonly type = '[Forms] Update Form Status';\n\n  constructor(\n    public payload: {\n      status: string | null;\n      path: string;\n    }\n  ) {}\n}\n\nexport class UpdateFormValue {\n  static readonly type = '[Forms] Update Form Value';\n\n  constructor(public payload: { value: any; path: string; propertyPath?: string }) {}\n}\n\nexport class UpdateForm {\n  static readonly type = '[Forms] Update Form';\n\n  constructor(\n    public payload: {\n      value: any;\n      errors: { [k: string]: string } | null;\n      dirty: boolean | null;\n      status: string | null;\n      path: string;\n    }\n  ) {}\n}\n\nexport class UpdateFormDirty {\n  static readonly type = '[Forms] Update Form Dirty';\n\n  constructor(public payload: { dirty: boolean | null; path: string }) {}\n}\n\nexport class SetFormDirty {\n  static readonly type = '[Forms] Set Form Dirty';\n\n  constructor(public payload: string) {}\n}\n\nexport class SetFormPristine {\n  static readonly type = '[Forms] Set Form Pristine';\n\n  constructor(public payload: string) {}\n}\n\nexport class UpdateFormErrors {\n  static readonly type = '[Forms] Update Form Errors';\n\n  constructor(public payload: { errors: { [k: string]: string } | null; path: string }) {}\n}\n\nexport class SetFormDisabled {\n  static readonly type = '[Forms] Set Form Disabled';\n\n  constructor(public payload: string) {}\n}\n\nexport class SetFormEnabled {\n  static readonly type = '[Forms] Set Form Enabled';\n\n  constructor(public payload: string) {}\n}\n\nexport class ResetForm {\n  static readonly type = '[Forms] Reset Form';\n\n  constructor(public payload: { path: string; value?: any }) {}\n}\n","import { Injectable } from '@angular/core';\nimport {\n  getActionTypeFromInstance,\n  getValue,\n  NgxsNextPluginFn,\n  NgxsPlugin,\n  setValue\n} from '@ngxs/store/plugins';\nimport {\n  ResetForm,\n  SetFormDirty,\n  SetFormDisabled,\n  SetFormEnabled,\n  SetFormPristine,\n  UpdateForm,\n  UpdateFormDirty,\n  UpdateFormErrors,\n  UpdateFormStatus,\n  UpdateFormValue\n} from './actions';\n\n@Injectable()\nexport class NgxsFormPlugin implements NgxsPlugin {\n  handle(state: any, event: any, next: NgxsNextPluginFn) {\n    const type = getActionTypeFromInstance(event);\n\n    let nextState = state;\n\n    if (type === UpdateFormValue.type || type === UpdateForm.type || type === ResetForm.type) {\n      const { value } = event.payload;\n      const payloadValue = Array.isArray(value)\n        ? value.slice()\n        : isObjectLike(value)\n          ? { ...value }\n          : value;\n      const path = this.joinPathWithPropertyPath(event);\n      nextState = setValue(nextState, path, payloadValue);\n    }\n\n    if (type === ResetForm.type) {\n      const model = getValue(nextState, `${event.payload.path}.model`);\n      nextState = setValue(nextState, `${event.payload.path}`, { model: model });\n    }\n\n    if (type === UpdateFormStatus.type || type === UpdateForm.type) {\n      nextState = setValue(nextState, `${event.payload.path}.status`, event.payload.status);\n    }\n\n    if (type === UpdateFormErrors.type || type === UpdateForm.type) {\n      nextState = setValue(nextState, `${event.payload.path}.errors`, {\n        ...event.payload.errors\n      });\n    }\n\n    if (type === UpdateFormDirty.type || type === UpdateForm.type) {\n      nextState = setValue(nextState, `${event.payload.path}.dirty`, event.payload.dirty);\n    }\n\n    if (type === SetFormDirty.type) {\n      nextState = setValue(nextState, `${event.payload}.dirty`, true);\n    }\n\n    if (type === SetFormPristine.type) {\n      nextState = setValue(nextState, `${event.payload}.dirty`, false);\n    }\n\n    if (type === SetFormDisabled.type) {\n      nextState = setValue(nextState, `${event.payload}.disabled`, true);\n    }\n\n    if (type === SetFormEnabled.type) {\n      nextState = setValue(nextState, `${event.payload}.disabled`, false);\n    }\n\n    return next(nextState, event);\n  }\n\n  private joinPathWithPropertyPath({ payload }: UpdateFormValue): string {\n    let path = `${payload.path}.model`;\n\n    if (payload.propertyPath) {\n      path += `.${payload.propertyPath}`;\n    }\n\n    return path;\n  }\n}\n\nfunction isObjectLike(target: unknown): target is object {\n  return target !== null && typeof target === 'object';\n}\n","import {\n  ChangeDetectorRef,\n  DestroyRef,\n  Directive,\n  inject,\n  Input,\n  OnInit\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormGroup, FormGroupDirective } from '@angular/forms';\nimport { Actions, ofActionDispatched, Store } from '@ngxs/store';\nimport { getValue } from '@ngxs/store/plugins';\nimport { Observable, debounceTime, distinctUntilChanged } from 'rxjs';\n\nimport {\n  ResetForm,\n  UpdateForm,\n  UpdateFormDirty,\n  UpdateFormErrors,\n  UpdateFormStatus,\n  UpdateFormValue\n} from './actions';\n\n@Directive({ selector: '[ngxsForm]', standalone: true })\nexport class NgxsFormDirective implements OnInit {\n  @Input('ngxsForm')\n  path: string = null!;\n\n  @Input('ngxsFormDebounce')\n  set debounce(debounce: string | number) {\n    this._debounce = Number(debounce);\n  }\n  get debounce() {\n    return this._debounce;\n  }\n  private _debounce = 100;\n\n  @Input('ngxsFormClearOnDestroy')\n  set clearDestroy(val: boolean) {\n    this._clearDestroy = val != null && `${val}` !== 'false';\n  }\n  get clearDestroy(): boolean {\n    return this._clearDestroy;\n  }\n  private _clearDestroy = false;\n\n  private _updating = false;\n\n  private _actions$ = inject(Actions);\n  private _store = inject(Store);\n  private _formGroupDirective = inject(FormGroupDirective);\n  private _cd = inject(ChangeDetectorRef);\n\n  private readonly _destroyRef = inject(DestroyRef);\n\n  constructor() {\n    this._destroyRef.onDestroy(() => {\n      if (this.clearDestroy) {\n        this._store.dispatch(\n          new UpdateForm({\n            path: this.path,\n            value: null,\n            dirty: null,\n            status: null,\n            errors: null\n          })\n        );\n      }\n    });\n  }\n\n  ngOnInit() {\n    const resetForm$ = this._actions$.pipe(\n      ofActionDispatched(ResetForm),\n      takeUntilDestroyed(this._destroyRef)\n    );\n\n    resetForm$.subscribe((action: ResetForm) => {\n      if (action.payload.path !== this.path) {\n        return;\n      }\n\n      this.form.reset(action.payload.value);\n      this.updateFormStateWithRawValue(true);\n      this._cd.markForCheck();\n    });\n\n    this.getStateStream(`${this.path}.model`).subscribe(model => {\n      if (this._updating || !model) {\n        return;\n      }\n\n      this.form.patchValue(model);\n      this._cd.markForCheck();\n    });\n\n    this.getStateStream(`${this.path}.dirty`).subscribe(dirty => {\n      if (this.form.dirty === dirty || typeof dirty !== 'boolean') {\n        return;\n      }\n\n      if (dirty) {\n        this.form.markAsDirty();\n      } else {\n        this.form.markAsPristine();\n      }\n\n      this._cd.markForCheck();\n    });\n\n    // On first state change, sync form model, status and dirty with state\n    this._store\n      .selectOnce(state => getValue(state, this.path))\n      .pipe(takeUntilDestroyed(this._destroyRef))\n      .subscribe(() => {\n        this._store.dispatch([\n          new UpdateFormValue({\n            path: this.path,\n            value: this.form.getRawValue()\n          }),\n          new UpdateFormStatus({\n            path: this.path,\n            status: this.form.status\n          }),\n          new UpdateFormDirty({\n            path: this.path,\n            dirty: this.form.dirty\n          })\n        ]);\n      });\n\n    this.getStateStream(`${this.path}.disabled`).subscribe(disabled => {\n      if (this.form.disabled === disabled || typeof disabled !== 'boolean') {\n        return;\n      }\n\n      if (disabled) {\n        this.form.disable();\n      } else {\n        this.form.enable();\n      }\n\n      this._cd.markForCheck();\n    });\n\n    this._formGroupDirective\n      .valueChanges!.pipe(\n        distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n        this.debounceChange()\n      )\n      .subscribe(() => {\n        this.updateFormStateWithRawValue();\n      });\n\n    this._formGroupDirective\n      .statusChanges!.pipe(distinctUntilChanged(), this.debounceChange())\n      .subscribe((status: string) => {\n        this._store.dispatch(\n          new UpdateFormStatus({\n            status,\n            path: this.path\n          })\n        );\n      });\n  }\n\n  updateFormStateWithRawValue(withFormStatus?: boolean) {\n    if (this._updating) return;\n\n    const value = this._formGroupDirective.control.getRawValue();\n\n    const actions: any[] = [\n      new UpdateFormValue({\n        path: this.path,\n        value\n      }),\n      new UpdateFormDirty({\n        path: this.path,\n        dirty: this._formGroupDirective.dirty\n      }),\n      new UpdateFormErrors({\n        path: this.path,\n        errors: this._formGroupDirective.errors\n      })\n    ];\n\n    if (withFormStatus) {\n      actions.push(\n        new UpdateFormStatus({\n          path: this.path,\n          status: this._formGroupDirective.status\n        })\n      );\n    }\n\n    this._updating = true;\n    this._store.dispatch(actions).subscribe({\n      error: () => (this._updating = false),\n      complete: () => (this._updating = false)\n    });\n  }\n\n  private debounceChange() {\n    const skipDebounceTime =\n      this._formGroupDirective.control.updateOn !== 'change' || this._debounce < 0;\n\n    return skipDebounceTime\n      ? (change: Observable<any>) => change.pipe(takeUntilDestroyed(this._destroyRef))\n      : (change: Observable<any>) =>\n          change.pipe(debounceTime(this._debounce), takeUntilDestroyed(this._destroyRef));\n  }\n\n  private get form(): FormGroup {\n    return this._formGroupDirective.form;\n  }\n\n  private getStateStream(path: string) {\n    return this._store\n      .select(state => getValue(state, path))\n      .pipe(takeUntilDestroyed(this._destroyRef));\n  }\n}\n","import { NgModule, ModuleWithProviders, EnvironmentProviders } from '@angular/core';\nimport { withNgxsPlugin } from '@ngxs/store';\n\nimport { NgxsFormPlugin } from './form.plugin';\nimport { NgxsFormDirective } from './directive';\n\n@NgModule({\n  imports: [NgxsFormDirective],\n  exports: [NgxsFormDirective]\n})\nexport class NgxsFormPluginModule {\n  static forRoot(): ModuleWithProviders<NgxsFormPluginModule> {\n    return {\n      ngModule: NgxsFormPluginModule,\n      providers: [withNgxsPlugin(NgxsFormPlugin)]\n    };\n  }\n}\n\nexport function withNgxsFormPlugin(): EnvironmentProviders {\n  return withNgxsPlugin(NgxsFormPlugin);\n}\n","/**\n * The public api for consumers of @ngxs/form-plugin\n */\nexport * from './src/public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAAa,gBAAgB,CAAA;AAIlB,IAAA,OAAA;AAHT,IAAA,OAAgB,IAAI,GAAG,4BAA4B;AAEnD,IAAA,WAAA,CACS,OAGN,EAAA;QAHM,IAAO,CAAA,OAAA,GAAP,OAAO;;;MAOL,eAAe,CAAA;AAGP,IAAA,OAAA;AAFnB,IAAA,OAAgB,IAAI,GAAG,2BAA2B;AAElD,IAAA,WAAA,CAAmB,OAA4D,EAAA;QAA5D,IAAO,CAAA,OAAA,GAAP,OAAO;;;MAGf,UAAU,CAAA;AAIZ,IAAA,OAAA;AAHT,IAAA,OAAgB,IAAI,GAAG,qBAAqB;AAE5C,IAAA,WAAA,CACS,OAMN,EAAA;QANM,IAAO,CAAA,OAAA,GAAP,OAAO;;;MAUL,eAAe,CAAA;AAGP,IAAA,OAAA;AAFnB,IAAA,OAAgB,IAAI,GAAG,2BAA2B;AAElD,IAAA,WAAA,CAAmB,OAAgD,EAAA;QAAhD,IAAO,CAAA,OAAA,GAAP,OAAO;;;MAGf,YAAY,CAAA;AAGJ,IAAA,OAAA;AAFnB,IAAA,OAAgB,IAAI,GAAG,wBAAwB;AAE/C,IAAA,WAAA,CAAmB,OAAe,EAAA;QAAf,IAAO,CAAA,OAAA,GAAP,OAAO;;;MAGf,eAAe,CAAA;AAGP,IAAA,OAAA;AAFnB,IAAA,OAAgB,IAAI,GAAG,2BAA2B;AAElD,IAAA,WAAA,CAAmB,OAAe,EAAA;QAAf,IAAO,CAAA,OAAA,GAAP,OAAO;;;MAGf,gBAAgB,CAAA;AAGR,IAAA,OAAA;AAFnB,IAAA,OAAgB,IAAI,GAAG,4BAA4B;AAEnD,IAAA,WAAA,CAAmB,OAAiE,EAAA;QAAjE,IAAO,CAAA,OAAA,GAAP,OAAO;;;MAGf,eAAe,CAAA;AAGP,IAAA,OAAA;AAFnB,IAAA,OAAgB,IAAI,GAAG,2BAA2B;AAElD,IAAA,WAAA,CAAmB,OAAe,EAAA;QAAf,IAAO,CAAA,OAAA,GAAP,OAAO;;;MAGf,cAAc,CAAA;AAGN,IAAA,OAAA;AAFnB,IAAA,OAAgB,IAAI,GAAG,0BAA0B;AAEjD,IAAA,WAAA,CAAmB,OAAe,EAAA;QAAf,IAAO,CAAA,OAAA,GAAP,OAAO;;;MAGf,SAAS,CAAA;AAGD,IAAA,OAAA;AAFnB,IAAA,OAAgB,IAAI,GAAG,oBAAoB;AAE3C,IAAA,WAAA,CAAmB,OAAsC,EAAA;QAAtC,IAAO,CAAA,OAAA,GAAP,OAAO;;;;MChDf,cAAc,CAAA;AACzB,IAAA,MAAM,CAAC,KAAU,EAAE,KAAU,EAAE,IAAsB,EAAA;AACnD,QAAA,MAAM,IAAI,GAAG,yBAAyB,CAAC,KAAK,CAAC;QAE7C,IAAI,SAAS,GAAG,KAAK;AAErB,QAAA,IAAI,IAAI,KAAK,eAAe,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;AACxF,YAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO;AAC/B,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK;AACtC,kBAAE,KAAK,CAAC,KAAK;AACb,kBAAE,YAAY,CAAC,KAAK;AAClB,sBAAE,EAAE,GAAG,KAAK;sBACV,KAAK;YACX,MAAM,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;YACjD,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC;;AAGrD,QAAA,IAAI,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;AAC3B,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA,MAAA,CAAQ,CAAC;AAChE,YAAA,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA,CAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;;AAG5E,QAAA,IAAI,IAAI,KAAK,gBAAgB,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE;AAC9D,YAAA,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA,OAAA,CAAS,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;;AAGvF,QAAA,IAAI,IAAI,KAAK,gBAAgB,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE;AAC9D,YAAA,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA,OAAA,CAAS,EAAE;AAC9D,gBAAA,GAAG,KAAK,CAAC,OAAO,CAAC;AAClB,aAAA,CAAC;;AAGJ,QAAA,IAAI,IAAI,KAAK,eAAe,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE;AAC7D,YAAA,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA,MAAA,CAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;;AAGrF,QAAA,IAAI,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE;AAC9B,YAAA,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,CAAA,MAAA,CAAQ,EAAE,IAAI,CAAC;;AAGjE,QAAA,IAAI,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE;AACjC,YAAA,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,CAAA,MAAA,CAAQ,EAAE,KAAK,CAAC;;AAGlE,QAAA,IAAI,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE;AACjC,YAAA,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,CAAA,SAAA,CAAW,EAAE,IAAI,CAAC;;AAGpE,QAAA,IAAI,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE;AAChC,YAAA,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,CAAA,SAAA,CAAW,EAAE,KAAK,CAAC;;AAGrE,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;;IAGvB,wBAAwB,CAAC,EAAE,OAAO,EAAmB,EAAA;AAC3D,QAAA,IAAI,IAAI,GAAG,CAAA,EAAG,OAAO,CAAC,IAAI,QAAQ;AAElC,QAAA,IAAI,OAAO,CAAC,YAAY,EAAE;AACxB,YAAA,IAAI,IAAI,CAAI,CAAA,EAAA,OAAO,CAAC,YAAY,EAAE;;AAGpC,QAAA,OAAO,IAAI;;0HA9DF,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;AAmED,SAAS,YAAY,CAAC,MAAe,EAAA;IACnC,OAAO,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;AACtD;;MClEa,iBAAiB,CAAA;IAE5B,IAAI,GAAW,IAAK;IAEpB,IACI,QAAQ,CAAC,QAAyB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAEnC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEf,SAAS,GAAG,GAAG;IAEvB,IACI,YAAY,CAAC,GAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG,IAAI,IAAI,IAAI,CAAA,EAAG,GAAG,CAAA,CAAE,KAAK,OAAO;;AAE1D,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAEnB,aAAa,GAAG,KAAK;IAErB,SAAS,GAAG,KAAK;AAEjB,IAAA,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;AAC3B,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AACtB,IAAA,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAChD,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEtB,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEjD,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAK;AAC9B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,UAAU,CAAC;oBACb,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,MAAM,EAAE;AACT,iBAAA,CAAC,CACH;;AAEL,SAAC,CAAC;;IAGJ,QAAQ,GAAA;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACpC,kBAAkB,CAAC,SAAS,CAAC,EAC7B,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC;AAED,QAAA,UAAU,CAAC,SAAS,CAAC,CAAC,MAAiB,KAAI;YACzC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;gBACrC;;YAGF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACtC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,CAAA,EAAG,IAAI,CAAC,IAAI,CAAQ,MAAA,CAAA,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAC1D,YAAA,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE;gBAC5B;;AAGF,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,CAAA,EAAG,IAAI,CAAC,IAAI,CAAQ,MAAA,CAAA,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAC1D,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;gBAC3D;;YAGF,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;;iBAClB;AACL,gBAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;;AAG5B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;;AAGF,QAAA,IAAI,CAAC;AACF,aAAA,UAAU,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;AAC9C,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aACzC,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnB,gBAAA,IAAI,eAAe,CAAC;oBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,oBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;iBAC7B,CAAC;AACF,gBAAA,IAAI,gBAAgB,CAAC;oBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,oBAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;iBACnB,CAAC;AACF,gBAAA,IAAI,eAAe,CAAC;oBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,oBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;iBAClB;AACF,aAAA,CAAC;AACJ,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,cAAc,CAAC,CAAA,EAAG,IAAI,CAAC,IAAI,CAAW,SAAA,CAAA,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAChE,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE;gBACpE;;YAGF,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;;iBACd;AACL,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;;AAGpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC;AACF,aAAA,YAAa,CAAC,IAAI,CACjB,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EACvE,IAAI,CAAC,cAAc,EAAE;aAEtB,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,2BAA2B,EAAE;AACpC,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;aACF,aAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE;AACjE,aAAA,SAAS,CAAC,CAAC,MAAc,KAAI;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,gBAAgB,CAAC;gBACnB,MAAM;gBACN,IAAI,EAAE,IAAI,CAAC;AACZ,aAAA,CAAC,CACH;AACH,SAAC,CAAC;;AAGN,IAAA,2BAA2B,CAAC,cAAwB,EAAA;QAClD,IAAI,IAAI,CAAC,SAAS;YAAE;QAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE;AAE5D,QAAA,MAAM,OAAO,GAAU;AACrB,YAAA,IAAI,eAAe,CAAC;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf;aACD,CAAC;AACF,YAAA,IAAI,eAAe,CAAC;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC;aACjC,CAAC;AACF,YAAA,IAAI,gBAAgB,CAAC;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC;aAClC;SACF;QAED,IAAI,cAAc,EAAE;AAClB,YAAA,OAAO,CAAC,IAAI,CACV,IAAI,gBAAgB,CAAC;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC;AAClC,aAAA,CAAC,CACH;;AAGH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;YACtC,KAAK,EAAE,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACrC,QAAQ,EAAE,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK;AACxC,SAAA,CAAC;;IAGI,cAAc,GAAA;AACpB,QAAA,MAAM,gBAAgB,GACpB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC;AAE9E,QAAA,OAAO;AACL,cAAE,CAAC,MAAuB,KAAK,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;cAC7E,CAAC,MAAuB,KACtB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAGvF,IAAA,IAAY,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI;;AAG9B,IAAA,cAAc,CAAC,IAAY,EAAA;QACjC,OAAO,IAAI,CAAC;aACT,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;aACrC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;0HAnMpC,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,EAAA,UAAA,CAAA,EAAA,YAAA,EAAA,CAAA,wBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE;wDAGrD,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,UAAU;gBAIb,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,kBAAkB;gBAUrB,YAAY,EAAA,CAAA;sBADf,KAAK;uBAAC,wBAAwB;;;MC3BpB,oBAAoB,CAAA;AAC/B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,SAAS,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC;SAC3C;;0HALQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;2HAApB,oBAAoB,EAAA,OAAA,EAAA,CAHrB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACjB,iBAAiB,CAAA,EAAA,CAAA;2HAEhB,oBAAoB,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,iBAAiB,CAAC;oBAC5B,OAAO,EAAE,CAAC,iBAAiB;AAC5B,iBAAA;;SAUe,kBAAkB,GAAA;AAChC,IAAA,OAAO,cAAc,CAAC,cAAc,CAAC;AACvC;;ACrBA;;AAEG;;ACFH;;AAEG;;;;"}