{"version":3,"file":"c8y-ngx-components-widgets-implementations-linear-gauge.mjs","sources":["../../widgets/implementations/linear-gauge/linear-gauge-widget-config/linear-gauge-widget-config.component.ts","../../widgets/implementations/linear-gauge/linear-gauge-widget-config/linear-gauge-widget-config.component.html","../../widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.ts","../../widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.html","../../widgets/implementations/linear-gauge/linear-gauge.module.ts","../../widgets/implementations/linear-gauge/c8y-ngx-components-widgets-implementations-linear-gauge.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { FormBuilder, NgForm, ReactiveFormsModule, Validators } from '@angular/forms';\nimport type {\n  DatapointAttributesFormConfig,\n  DatapointSelectorModalOptions,\n  KPIDetails\n} from '@c8y/ngx-components/datapoint-selector';\nimport { WidgetConfigComponent } from '@c8y/ngx-components/context-dashboard';\nimport { CoreModule, OnBeforeSave } from '@c8y/ngx-components';\nimport { DatapointSelectorModule } from '@c8y/ngx-components/datapoint-selector';\nimport { LinearGaugeWidgetConfig } from '../linear-gauge.model';\n\n@Component({\n  selector: 'c8y-linear-gauge-widget-config',\n  templateUrl: './linear-gauge-widget-config.component.html',\n  standalone: true,\n  imports: [DatapointSelectorModule, ReactiveFormsModule, CoreModule]\n})\nexport class LinearGaugeWidgetConfigComponent implements OnInit, OnBeforeSave {\n  @Input() config: LinearGaugeWidgetConfig;\n  formGroup: ReturnType<LinearGaugeWidgetConfigComponent['createForm']>;\n  datapointSelectionConfig: Partial<DatapointSelectorModalOptions> = {};\n  defaultFormOptions: Partial<DatapointAttributesFormConfig> = {\n    showRedRange: true,\n    showYellowRange: true,\n    showRange: true,\n    showTarget: true\n  };\n  private limits = {\n    numberOfDecimalPlacesMax: 10,\n    numberOfDecimalPlacesMin: 0\n  } as const;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private form: NgForm,\n    private widgetConfig: WidgetConfigComponent\n  ) {}\n\n  onBeforeSave(\n    config?: LinearGaugeWidgetConfigComponent['config']\n  ): boolean | Promise<boolean> | Observable<boolean> {\n    if (this.formGroup.valid) {\n      Object.assign(config, this.formGroup.value);\n      return true;\n    }\n    return false;\n  }\n\n  ngOnInit() {\n    if (this.widgetConfig.context?.id) {\n      this.datapointSelectionConfig.contextAsset = this.widgetConfig?.context;\n    }\n    this.initForm();\n    if (this.config?.datapoints) {\n      this.formGroup.patchValue({ datapoints: this.config.datapoints });\n    }\n    if (typeof this.config?.fractionSize === 'number' && !Number.isNaN(this.config?.fractionSize)) {\n      this.formGroup.patchValue({ fractionSize: this.config.fractionSize });\n    }\n  }\n\n  private initForm(): void {\n    this.formGroup = this.createForm();\n    this.form.form.addControl('config', this.formGroup);\n    this.formGroup.patchValue(this.config);\n  }\n\n  private createForm() {\n    return this.formBuilder.group({\n      fractionSize: [\n        2,\n        [\n          Validators.required,\n          Validators.min(this.limits.numberOfDecimalPlacesMin),\n          Validators.max(this.limits.numberOfDecimalPlacesMax)\n        ]\n      ],\n      datapoints: this.formBuilder.control(new Array<KPIDetails>(), [Validators.required])\n    });\n  }\n}\n","<div class=\"p-l-24 p-r-24\">\n  <form\n    class=\"no-card-context\"\n    [formGroup]=\"formGroup\"\n  >\n    <div class=\"row\">\n      <div class=\"col-md-6\">\n        <c8y-datapoint-selection-list\n          class=\"bg-inherit p-t-8 d-block\"\n          name=\"datapoints\"\n          [defaultFormOptions]=\"defaultFormOptions\"\n          [config]=\"datapointSelectionConfig\"\n          [minActiveCount]=\"1\"\n          [maxActiveCount]=\"1\"\n          formControlName=\"datapoints\"\n        ></c8y-datapoint-selection-list>\n      </div>\n\n      <div class=\"col-md-6\">\n        <c8y-form-group class=\"p-t-8\">\n          <label translate>Decimal places</label>\n          <input\n            class=\"form-control\"\n            name=\"fractionSize\"\n            type=\"number\"\n            formControlName=\"fractionSize\"\n            step=\"1\"\n          />\n          <c8y-messages [show]=\"formGroup.controls.fractionSize.errors\"></c8y-messages>\n        </c8y-form-group>\n      </div>\n    </div>\n  </form>\n</div>\n","import { Component, Input, OnChanges, Optional } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, shareReplay, switchMap } from 'rxjs/operators';\nimport {\n  DynamicComponent,\n  DynamicComponentAlert,\n  DynamicComponentAlertAggregator,\n  DynamicComponentComponent,\n  MeasurementRealtimeService,\n  RangeDisplay,\n  RangeDisplayModule,\n  gettext\n} from '@c8y/ngx-components';\nimport type { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\nimport { IMeasurementValue } from '@c8y/client';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport { AsyncPipe, NgClass, NgIf } from '@angular/common';\nimport { ContextDashboardComponent } from '@c8y/ngx-components/context-dashboard';\nimport { LinearGaugeWidgetConfig } from '../linear-gauge.model';\n\n@Component({\n  selector: 'c8y-linear-gauge-widget-view',\n  templateUrl: './linear-gauge-widget-view.component.html',\n  providers: [MeasurementRealtimeService],\n  standalone: true,\n  imports: [NgIf, NgClass, AsyncPipe, RangeDisplayModule]\n})\nexport class LinearGaugeWidgetViewComponent implements OnChanges, DynamicComponent {\n  @Input() config: LinearGaugeWidgetConfig;\n\n  rangeDisplayConfig$: Observable<RangeDisplay>;\n  alerts: DynamicComponentAlertAggregator;\n  private activeDatapoint$ = new BehaviorSubject<KPIDetails>(null);\n\n  constructor(\n    private measurementRealtime: MeasurementRealtimeService,\n    @Optional() private dashboard: ContextDashboardComponent,\n    @Optional() private dynamicComponent?: DynamicComponentComponent\n  ) {\n    const activeDatapoint = this.activeDatapoint$.pipe(\n      filter(dp => !!dp),\n      map(dp => this.assignContextFromContextDashboard(dp)),\n      distinctUntilChanged()\n    );\n    this.rangeDisplayConfig$ = activeDatapoint.pipe(\n      switchMap(dp => this.getRangeDisplayConfig$(dp)),\n      shareReplay({ refCount: true, bufferSize: 1 })\n    );\n    this.rangeDisplayConfig$\n      .pipe(\n        map(data => this.getErrorType(data)),\n        distinctUntilChanged<ReturnType<LinearGaugeWidgetViewComponent['getErrorType']>>(),\n        takeUntilDestroyed<ReturnType<LinearGaugeWidgetViewComponent['getErrorType']>>()\n      )\n      .subscribe(inRange => this.updateAlertStatus(inRange));\n  }\n\n  ngOnChanges(): void {\n    const activeDp = this.config.datapoints.find(dp => dp.__active);\n    this.activeDatapoint$.next(activeDp);\n  }\n\n  private getRangeDisplayConfig$(dp: KPIDetails): Observable<RangeDisplay> {\n    return this.measurementRealtime\n      .latestValueOfSpecificMeasurement$(dp.fragment, dp.series, dp.__target, 1, true)\n      .pipe(\n        map(m => {\n          if (!m) {\n            return null;\n          }\n          const date = m.time;\n          const measurement: IMeasurementValue = m[dp.fragment][dp.series];\n          return {\n            current: measurement.value,\n            fractionSize: this.config.fractionSize || 1,\n            max: dp.max,\n            min: dp.min,\n            redRangeMax: dp.redRangeMax,\n            redRangeMin: dp.redRangeMin,\n            target: dp.target,\n            time: date,\n            yellowRangeMax: dp.yellowRangeMax,\n            yellowRangeMin: dp.yellowRangeMin,\n            unit: measurement.unit || dp.unit,\n            orientation: this.getOrientation()\n          };\n        })\n      );\n  }\n\n  private assignContextFromContextDashboard(datapoint: KPIDetails): KPIDetails {\n    if (!this.dashboard?.isDeviceTypeDashboard) {\n      return datapoint;\n    }\n    const context = this.dashboard?.context;\n    if (context?.id) {\n      const { name, id } = context;\n      datapoint.__target = { name, id };\n    }\n    return datapoint;\n  }\n\n  private getOrientation(): 'horizontal' | 'vertical' {\n    return this.dynamicComponent?.componentId === defaultWidgetIds.LINEAR_GAUGE\n      ? 'horizontal'\n      : 'vertical';\n  }\n\n  private getErrorType(data: RangeDisplay | null) {\n    if (!data) {\n      return 'NOT_FOUND';\n    }\n\n    if (!this.isInRange(data)) {\n      return 'OUT_OF_RANGE';\n    }\n\n    return 'NONE';\n  }\n\n  private isInRange(data: RangeDisplay): boolean {\n    if (!Number.isFinite(data.max) || !Number.isFinite(data.min)) {\n      // default range is 0-100\n      return data.current <= 100 && data.current >= 0;\n    }\n    return data.current <= data.max && data.current >= data.min;\n  }\n\n  private updateAlertStatus(\n    errorType: ReturnType<LinearGaugeWidgetViewComponent['getErrorType']>\n  ): void {\n    if (!this.alerts) {\n      return;\n    }\n    this.alerts.clear();\n    let msg: string;\n    if (errorType === 'OUT_OF_RANGE') {\n      msg = gettext('Current value out of defined range.');\n    } else if (errorType === 'NOT_FOUND') {\n      msg = gettext('Configured data point not available on the selected device.');\n    }\n\n    if (!msg) {\n      return;\n    }\n\n    this.alerts.addAlerts(\n      new DynamicComponentAlert({\n        type: 'warning',\n        text: msg\n      })\n    );\n  }\n}\n","<div\n  class=\"p-l-16 p-r-16 p-b-16 fit-h d-flex d-col flex-center\"\n  *ngIf=\"rangeDisplayConfig$ | async as rangeDisplayConfig\"\n  [ngClass]=\"{\n    'p-t-40 j-c-center': rangeDisplayConfig.orientation === 'horizontal',\n  }\"\n>\n  <c8y-range-display [config]=\"rangeDisplayConfig\" [ngClass]=\"{'flex-grow': rangeDisplayConfig.orientation == 'vertical'}\"></c8y-range-display>\n</div>\n","import { NgModule } from '@angular/core';\nimport { LinearGaugeWidgetConfigComponent } from './linear-gauge-widget-config/linear-gauge-widget-config.component';\nimport { LinearGaugeWidgetViewComponent } from './linear-gauge-widget-view/linear-gauge-widget-view.component';\n\n/**\n * @deprecated\n */\n@NgModule({\n  imports: [LinearGaugeWidgetViewComponent, LinearGaugeWidgetConfigComponent]\n})\nexport class LinearGaugeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4","i1"],"mappings":";;;;;;;;;;;;;;;MAmBa,gCAAgC,CAAA;AAe3C,IAAA,WAAA,CACU,WAAwB,EACxB,IAAY,EACZ,YAAmC,EAAA;QAFnC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAuB;QAf7C,IAAwB,CAAA,wBAAA,GAA2C,EAAE,CAAC;AACtE,QAAA,IAAA,CAAA,kBAAkB,GAA2C;AAC3D,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,UAAU,EAAE,IAAI;SACjB,CAAC;AACM,QAAA,IAAA,CAAA,MAAM,GAAG;AACf,YAAA,wBAAwB,EAAE,EAAE;AAC5B,YAAA,wBAAwB,EAAE,CAAC;SACnB,CAAC;KAMP;AAEJ,IAAA,YAAY,CACV,MAAmD,EAAA;AAEnD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACxB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5C,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,EAAE;YACjC,IAAI,CAAC,wBAAwB,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC;SACzE;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;SACnE;QACD,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,YAAY,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE;AAC7F,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;SACvE;KACF;IAEO,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACxC;IAEO,UAAU,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5B,YAAA,YAAY,EAAE;gBACZ,CAAC;AACD,gBAAA;AACE,oBAAA,UAAU,CAAC,QAAQ;oBACnB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;oBACpD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;AACrD,iBAAA;AACF,aAAA;AACD,YAAA,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,KAAK,EAAc,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrF,SAAA,CAAC,CAAC;KACJ;+GA9DU,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,wHCnB7C,ohCAkCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjBY,uBAAuB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,8mCAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAEvD,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;+BACE,gCAAgC,EAAA,UAAA,EAE9B,IAAI,EACP,OAAA,EAAA,CAAC,uBAAuB,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,ohCAAA,EAAA,CAAA;yIAG1D,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MEQK,8BAA8B,CAAA;AAOzC,IAAA,WAAA,CACU,mBAA+C,EACnC,SAAoC,EACpC,gBAA4C,EAAA;QAFxD,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAA4B;QACnC,IAAS,CAAA,SAAA,GAAT,SAAS,CAA2B;QACpC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA4B;AAL1D,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAa,IAAI,CAAC,CAAC;AAO/D,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAChD,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAClB,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC,EACrD,oBAAoB,EAAE,CACvB,CAAC;AACF,QAAA,IAAI,CAAC,mBAAmB,GAAG,eAAe,CAAC,IAAI,CAC7C,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,EAChD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AACF,QAAA,IAAI,CAAC,mBAAmB;aACrB,IAAI,CACH,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EACpC,oBAAoB,EAA8D,EAClF,kBAAkB,EAA8D,CACjF;AACA,aAAA,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;KAC1D;IAED,WAAW,GAAA;AACT,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtC;AAEO,IAAA,sBAAsB,CAAC,EAAc,EAAA;QAC3C,OAAO,IAAI,CAAC,mBAAmB;AAC5B,aAAA,iCAAiC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC;AAC/E,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAAG;YACN,IAAI,CAAC,CAAC,EAAE;AACN,gBAAA,OAAO,IAAI,CAAC;aACb;AACD,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACpB,YAAA,MAAM,WAAW,GAAsB,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE,WAAW,CAAC,KAAK;AAC1B,gBAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;gBAC3C,GAAG,EAAE,EAAE,CAAC,GAAG;gBACX,GAAG,EAAE,EAAE,CAAC,GAAG;gBACX,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,MAAM,EAAE,EAAE,CAAC,MAAM;AACjB,gBAAA,IAAI,EAAE,IAAI;gBACV,cAAc,EAAE,EAAE,CAAC,cAAc;gBACjC,cAAc,EAAE,EAAE,CAAC,cAAc;AACjC,gBAAA,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI;AACjC,gBAAA,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;aACnC,CAAC;SACH,CAAC,CACH,CAAC;KACL;AAEO,IAAA,iCAAiC,CAAC,SAAqB,EAAA;AAC7D,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE;AAC1C,YAAA,OAAO,SAAS,CAAC;SAClB;AACD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;AACxC,QAAA,IAAI,OAAO,EAAE,EAAE,EAAE;AACf,YAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;YAC7B,SAAS,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;SACnC;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;IAEO,cAAc,GAAA;QACpB,OAAO,IAAI,CAAC,gBAAgB,EAAE,WAAW,KAAK,gBAAgB,CAAC,YAAY;AACzE,cAAE,YAAY;cACZ,UAAU,CAAC;KAChB;AAEO,IAAA,YAAY,CAAC,IAAyB,EAAA;QAC5C,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,WAAW,CAAC;SACpB;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AACzB,YAAA,OAAO,cAAc,CAAC;SACvB;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,SAAS,CAAC,IAAkB,EAAA;QAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;;YAE5D,OAAO,IAAI,CAAC,OAAO,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;SACjD;AACD,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC;KAC7D;AAEO,IAAA,iBAAiB,CACvB,SAAqE,EAAA;AAErE,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,QAAA,IAAI,GAAW,CAAC;AAChB,QAAA,IAAI,SAAS,KAAK,cAAc,EAAE;AAChC,YAAA,GAAG,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC;SACtD;AAAM,aAAA,IAAI,SAAS,KAAK,WAAW,EAAE;AACpC,YAAA,GAAG,GAAG,OAAO,CAAC,6DAA6D,CAAC,CAAC;SAC9E;QAED,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;SACR;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CACnB,IAAI,qBAAqB,CAAC;AACxB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG;AACV,SAAA,CAAC,CACH,CAAC;KACH;+GA7HU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAJ9B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,CAAC,0BAA0B,CAAC,ECxBzC,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2YASA,EDiBY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,EAAE,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,6CAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAE3C,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAE7B,SAAA,EAAA,CAAC,0BAA0B,CAAC,cAC3B,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,2YAAA,EAAA,CAAA;;0BAWpD,QAAQ;;0BACR,QAAQ;yCATF,MAAM,EAAA,CAAA;sBAAd,KAAK;;;AEzBR;;AAEG;MAIU,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAjB,iBAAiB,EAAA,OAAA,EAAA,CAFlB,8BAA8B,EAAE,gCAAgC,CAAA,EAAA,CAAA,CAAA,EAAA;gHAE/D,iBAAiB,EAAA,OAAA,EAAA,CAFlB,8BAA8B,EAAE,gCAAgC,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAE/D,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,8BAA8B,EAAE,gCAAgC,CAAC;AAC5E,iBAAA,CAAA;;;ACTD;;AAEG;;;;"}