{"version":3,"file":"ontimize-web-ngx-report.mjs","sources":["../../projects/ontimize-web-ngx-report/src/lib/util/report-mapping-utils.ts","../../projects/ontimize-web-ngx-report/src/lib/services/o-report-response.adapter.ts","../../projects/ontimize-web-ngx-report/src/lib/services/o-report-request-argument.adapter.ts","../../projects/ontimize-web-ngx-report/src/lib/services/o-report.service.ts","../../projects/ontimize-web-ngx-report/src/lib/services/ontimize-report-data-base-provider.service.ts","../../projects/ontimize-web-ngx-report/src/lib/services/ontimize-report-data-provider.service.ts","../../projects/ontimize-web-ngx-report/src/lib/types/report-preferences.type.ts","../../projects/ontimize-web-ngx-report/src/lib/util/constants.ts","../../projects/ontimize-web-ngx-report/src/lib/util/utils.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report-on-demand/apply-configuration/apply-configuration-dialog.component.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report-on-demand/apply-configuration/apply-configuration-dialog.component.html","../../projects/ontimize-web-ngx-report/src/lib/components/report-on-demand/save-preferences-dialog/save-preferences-dialog.component.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report-on-demand/save-preferences-dialog/save-preferences-dialog.component.html","../../projects/ontimize-web-ngx-report/src/lib/components/report-on-demand/select-function-dialog/select-function-dialog.component.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report-on-demand/select-function-dialog/select-function-dialog.component.html","../../projects/ontimize-web-ngx-report/src/lib/components/report-on-demand/style-dialog/style-dialog.component.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report-on-demand/style-dialog/style-dialog.component.html","../../projects/ontimize-web-ngx-report/src/lib/components/report-on-demand/report-on-demand/report-on-demand.component.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report-on-demand/report-on-demand/report-on-demand.component.html","../../projects/ontimize-web-ngx-report/src/lib/services/ontimize-report.service.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report/o-report-skeleton/o-report-skeleton.component.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report/o-report-skeleton/o-report-skeleton.component.html","../../projects/ontimize-web-ngx-report/src/lib/components/report/o-report-viewer/o-report-viewer.component.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report/o-report-viewer/o-report-viewer.component.html","../../projects/ontimize-web-ngx-report/src/lib/services/o-report-store.service.ts","../../projects/ontimize-web-ngx-report/src/lib/services/o-alert.service.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report/o-report-home/o-report-home.component.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report/o-report-home/o-report-home.component.html","../../projects/ontimize-web-ngx-report/src/lib/components/report/o-report-new/o-report-new.component.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report/o-report-new/o-report-new.component.html","../../projects/ontimize-web-ngx-report/src/lib/components/report/o-report-detail/o-report-detail.component.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report/o-report-detail/o-report-detail.component.html","../../projects/ontimize-web-ngx-report/src/lib/config/o-components.ts","../../projects/ontimize-web-ngx-report/src/lib/i18n/i18n.ts","../../projects/ontimize-web-ngx-report/src/lib/services/report-translate.service.ts","../../projects/ontimize-web-ngx-report/src/lib/services/jsonapi-report.service.ts","../../projects/ontimize-web-ngx-report/src/lib/services/jsonapi-report-store.service.ts","../../projects/ontimize-web-ngx-report/src/lib/config/o-providers.ts","../../projects/ontimize-web-ngx-report/src/lib/ontimize-web-ngx-report.module.ts","../../projects/ontimize-web-ngx-report/src/lib/components/report/o-report-routing.module.ts","../../projects/ontimize-web-ngx-report/src/public-api.ts","../../projects/ontimize-web-ngx-report/src/ontimize-web-ngx-report.ts"],"sourcesContent":["\n\nexport class OReportMappingUtils {\n\n  static readonly STANDARDREPORTMAPPING = {\n    \"REPORT_TYPE\": \"REPORTTYPE\",\n    \"DESCRIPTION\": \"REPORTDESCRIPTION\",\n    \"MAIN_REPORT_FILENAME\": \"REPORTFILENAME\",\n    \"UUID\": \"REPORTUUID\",\n    \"NAME\": \"REPORTNAME\"\n  };\n  static readonly STANDARDPARAMETERMAPPING = {\n    \"name\": \"reportParameterName\",\n    \"description\": \"reportParameterDescription\"\n  };\n\n  static readonly ONTIMIZEPARAMETERMAPPING = {\n    \"reportParameterName\": \"name\",\n    \"reportParameterDescription\": \"description\"\n  };\n\n  static readonly ONTIMIZEREPORTMAPPING = {\n    \"REPORTTYPE\": \"REPORT_TYPE\",\n    \"REPORTDESCRIPTION\": \"DESCRIPTION\",\n    \"REPORTFILENAME\": \"MAIN_REPORT_FILENAME\",\n    \"REPORTUUID\": \"UUID\",\n    \"REPORTNAME\": \"NAME\"\n  };\n\n  static transformKeys(data: string[], keyMapping: { [key: string]: string }): string[] {\n    if (!Array.isArray(data)) {\n      return data\n    }\n    return data.map((key) => keyMapping[key] || key);\n\n  }\n\n  /**\n    * Transforma un objeto mapeando sus claves según el diccionario proporcionado.\n    */\n\n  private static mapObjectKeys(\n    obj: any,\n    keyMapping: { [key: string]: string },\n    parameterKeyMapping ?: { [key: string]: string }\n  ): { [key: string]: any } {\n    return Object.entries(obj).reduce<Record<string, any>>((newObj, [key, value]) => {\n      const newKey = keyMapping[key] || key;\n\n      if (Array.isArray(value) && value.every((item) => typeof item === \"object\" && !Array.isArray(item))) {\n        // Transformar claves de objetos dentro de arrays\n        newObj[newKey] = value.map((item) => this.mapObjectKeys(item, parameterKeyMapping || {}));\n      } else if (typeof value === \"object\" && value !== null) {\n        // Transformar claves de objetos anidados\n        newObj[newKey] = this.mapObjectKeys(value, parameterKeyMapping || {});\n      } else {\n        newObj[newKey] = value;\n      }\n\n      return newObj;\n    }, {});\n  }\n\n  /**\n   * Transforma los datos, ya sea un solo objeto o un array de objetos, aplicando los mapeos de claves.\n   */\n  static transformData(data: { [key: string]: any }[], keyMapping: { [key: string]: string }, parameterKeyMapping?: { [key: string]: string }): { [key: string]: any }[]  | { [key: string]: any } {\n    if (Array.isArray(data)) {\n      return data.map((obj) => this.mapObjectKeys(obj, keyMapping, parameterKeyMapping));\n    } else if (typeof data === \"object\" && data !== null) {\n      return this.mapObjectKeys(data, keyMapping, parameterKeyMapping);\n    }\n    return data;\n  }\n\n  static standarDataMapping(array: { [key: string]: any }[]): { [key: string]: any }[] | { [key: string]: any } {\n    return OReportMappingUtils.transformData(array, OReportMappingUtils.STANDARDREPORTMAPPING, OReportMappingUtils.STANDARDPARAMETERMAPPING);\n  }\n\n  static standarMappingKeys(array: string[]): string[] {\n    return OReportMappingUtils.transformKeys(array, OReportMappingUtils.STANDARDREPORTMAPPING);\n  }\n\n  static ontimizeMappingKeys(array: string[]): string[] {\n    return OReportMappingUtils.transformKeys(array, OReportMappingUtils.ONTIMIZEREPORTMAPPING);\n  }\n\n  static ontimizeDataMapping(array: { [key: string]: any }[]): { [key: string]: any }[] | { [key: string]: any }{\n    return OReportMappingUtils.transformData(array, OReportMappingUtils.ONTIMIZEREPORTMAPPING, OReportMappingUtils.ONTIMIZEPARAMETERMAPPING);\n\n  }\n\n}","import { HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { OntimizeServiceResponse, OntimizeServiceResponseAdapter } from 'ontimize-web-ngx';\n\nimport { OReportMappingUtils } from '../util/report-mapping-utils';\n\n@Injectable()\nexport class OReportResponseAdapter implements OntimizeServiceResponseAdapter {\n\n  context: any;\n\n\n  adapt(res: HttpResponse<any>): OntimizeServiceResponse {\n\n    if (res.body?.data) {\n      res.body.data = OReportMappingUtils.standarDataMapping(res.body.data);\n    }\n\n    if (res.body.sqlTypes) {\n      res.body.sqlTypes = OReportMappingUtils.standarDataMapping(res.body.sqlTypes);\n    }\n\n    return new OntimizeServiceResponse(\n      res.body.code,\n      res.body.data,\n      res.body.message,\n      res.body.sqlTypes,\n      res.body.startRecordIndex,\n      res.body.totalQueryRecordsNumber\n    );\n  }\n\n  adaptError(error: HttpErrorResponse): HttpErrorResponse {\n    return error;\n  }\n\n\n\n}\n","import { OntimizeRequestArgumentsAdapter } from 'ontimize-web-ngx';\n\nimport { OReportMappingUtils } from '../util/report-mapping-utils';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class OReportRequestArgumentsAdapter extends OntimizeRequestArgumentsAdapter {\n\n  parseQueryParameters(args: any): any[] {\n    args.columns = OReportMappingUtils.ontimizeMappingKeys(args.columns);\n    args.sqlTypes = OReportMappingUtils.ontimizeDataMapping(args.sqlTypes);\n    return super.parseQueryParameters(args);\n  }\n}\n\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable, OErrorDialogManager, OntimizeEEService } from 'ontimize-web-ngx';\n\nimport { OReportParam } from '../types/report-param.type';\nimport { OReportResponseAdapter } from './o-report-response.adapter';\nimport { OReportRequestArgumentsAdapter } from './o-report-request-argument.adapter';\n\n\n@Injectable()\nexport class OReportService extends OntimizeEEService {\n  protected oErrorDialogManager: OErrorDialogManager;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    super.configureService(this.getDefaultServiceConfiguration('report'));\n    this.oErrorDialogManager = injector.get<OErrorDialogManager>(OErrorDialogManager);\n    this.requestArgumentAdapter = this.injector.get(OReportRequestArgumentsAdapter);\n  }\n\n  public configureAdapter() {\n    this.adapter = this.injector.get(OReportResponseAdapter);\n  }\n\n  public createReport(reportparams: OReportParam): Observable<any> {\n\n    const body = JSON.stringify(\n      reportparams\n    )\n    const url = this.urlBase + '/dynamicjasper/report';\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body\n    });\n  }\n\n\n  public getFunctions(functionparams?: object): Observable<any> {\n\n    const body = JSON.stringify(\n      functionparams\n    )\n    const url = this.urlBase + '/dynamicjasper/functionsName';\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body\n    });\n  }\n\n\n\n}\n","import { Injectable, InjectionToken, Injector } from '@angular/core';\nimport { AppConfig, FilterExpressionUtils, OTableBase, OTranslateService, Util } from 'ontimize-web-ngx';\n\nimport { IReportDataProvider } from '../interfaces/report-data-provider.interface';\nimport { OReportParam, OReportPreferences } from '../types';\nimport { OFilterParameter } from '../types/filter-parameter.type';\n\nexport const O_REPORT_DATA_SERVICE = new InjectionToken<IReportDataProvider>('Report data provider');\n\n@Injectable()\nexport class OntimizeReportDataBaseProvider implements IReportDataProvider {\n  appConfig: any;\n  translateService: OTranslateService;\n  language: string;\n\n  constructor(\n    public injector: Injector\n  ) {\n    this.appConfig = this.injector.get<AppConfig>(AppConfig);\n    this.translateService = this.injector.get<OTranslateService>(OTranslateService);\n    this.language = this.translateService.getCurrentLang();\n  }\n\n  public getDefaultServiceConfiguration(serviceName?: string): any {\n    const configuration = this.appConfig.getServiceConfiguration();\n    let servConfig = {};\n    if (serviceName && configuration.hasOwnProperty(serviceName)) {\n      servConfig = configuration[serviceName];\n    }\n    return servConfig;\n  }\n\n  getComponentFilter(table: OTableBase): any {\n    let firstFilter = {};\n    let filter = {};\n\n    const beColFilter = table.getColumnFiltersExpression();\n    // Add column filters basic expression to current filter\n    if (beColFilter && !Util.isDefined(firstFilter[FilterExpressionUtils.FILTER_EXPRESSION_KEY])) {\n      firstFilter[FilterExpressionUtils.FILTER_EXPRESSION_KEY] = beColFilter;\n    } else if (beColFilter) {\n      firstFilter[FilterExpressionUtils.FILTER_EXPRESSION_KEY] =\n        FilterExpressionUtils.buildComplexExpression(firstFilter[FilterExpressionUtils.FILTER_EXPRESSION_KEY], beColFilter, FilterExpressionUtils.OP_AND);\n    }\n\n    const filterParentKeys = table.getParentKeysValues();\n    filter = Object.assign(firstFilter || {}, filterParentKeys);\n\n    const quickFilterExpr = Util.isDefined(table.oTableQuickFilterComponent) ? table.oTableQuickFilterComponent.filterExpression : undefined;\n    const filterBuilderExpr = Util.isDefined(table.filterBuilder) ? table.filterBuilder.getExpression() : undefined;\n    let complexExpr = quickFilterExpr || filterBuilderExpr;\n    if (quickFilterExpr && filterBuilderExpr) {\n      complexExpr = FilterExpressionUtils.buildComplexExpression(quickFilterExpr, filterBuilderExpr, FilterExpressionUtils.OP_AND);\n    }\n\n    if (complexExpr && !Util.isDefined(filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY])) {\n      filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY] = complexExpr;\n    } else if (complexExpr) {\n      filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY] =\n        FilterExpressionUtils.buildComplexExpression(filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY], complexExpr, FilterExpressionUtils.OP_AND);\n    }\n\n    return filter;\n\n  }\n\n  getServicePath(service: string): string {\n    const serviceConfiguration = this.getDefaultServiceConfiguration(service);\n    if (Util.isObject(serviceConfiguration) && serviceConfiguration.hasOwnProperty('path')) {\n      return serviceConfiguration.path;\n    }\n    return '';\n  }\n\n  getReportConfiguration(currentPreference: OReportPreferences, table: OTableBase): OReportParam {\n\n    let reportConfiguration: OReportParam;\n\n    const pathService = this.getServicePath(currentPreference.service);\n\n    let filters: OFilterParameter = {\n      columns: table.oTableOptions.visibleColumns.filter(c => table.getColumnsNotIncluded().indexOf(c) === -1),\n      sqltypes: table.getSqlTypes(),\n      filter: this.getComponentFilter(table),\n      offset: table.pageable ? table.currentPage * table.queryRows : -1,\n      pageSize: table.queryRows,\n\n    };\n\n    reportConfiguration = {\n      \"title\": currentPreference.title,\n      \"groups\": currentPreference.groups,\n      \"entity\": currentPreference.entity,\n      \"path\": pathService,\n      \"service\": currentPreference.service,\n      \"vertical\": currentPreference.vertical,\n      \"functions\": currentPreference.functions,\n      \"style\": currentPreference.style,\n      \"subtitle\": currentPreference.subtitle,\n      \"columns\": currentPreference.columns,\n      \"orderBy\": currentPreference.orderBy,\n      \"language\": this.language,\n      \"filters\": filters,\n      \"advQuery\": table.pageable\n\n    }\n\n    return reportConfiguration;\n  }\n\n\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { OntimizeReportDataBaseProvider } from './ontimize-report-data-base-provider.service';\nimport { IReportDataProvider } from '../interfaces/report-data-provider.interface';\n\n@Injectable()\nexport class OntimizeReportDataProvider extends OntimizeReportDataBaseProvider implements IReportDataProvider {\n\n  constructor(\n    public injector: Injector\n  ) {\n    super(injector)\n  }\n\n}\n","import { OReportColumn } from \"./report-column.type\"\nimport { OReportFunction } from \"./report-function.type\"\nimport { OReportOrderBy } from \"./report-orderBy.type\"\nimport { OReportStyleParams } from \"./report-style-params.type\"\n\nexport type OReportPreferences = {\n  title: string\n  subtitle: string,\n  vertical: boolean,\n  style: OReportStyleParams,\n  columns: Array<OReportColumn>,\n  orderBy?: Array<OReportOrderBy>,\n  functions?: Array<OReportFunction>,\n  groups?: Array<string>,\n  entity: string,\n  service: string\n}\n\nexport class DefaultOReportPreferences implements OReportPreferences {\n  public title: string;\n  public subtitle: string;\n  public vertical: boolean;\n  public columns: OReportColumn[];\n  public groups: string[];\n  public functions: OReportFunction[];\n  public style: OReportStyleParams;\n  public orderBy: OReportOrderBy[];\n  public entity: string;\n  public service: string;\n\n  constructor() {\n    this.title = '';\n    this.subtitle = '';\n    this.vertical = true;\n    this.columns = [];\n    this.groups = [];\n    this.functions = [];\n    this.style = {\n      grid: false, rowNumber: false, columnName: true, backgroundOnOddRows: false, hideGroupDetails: false, groupNewPage: false, firstGroupNewPage: false\n    };\n    this.orderBy = [];\n    this.entity = '';\n    this.service = '';\n\n  }\n}\n\n\n","import { OReportFunction } from \"../types\";\nexport class Constants {\n  public static DEFAULT_WIDTH_DIALOG = '70%';\n  public static DEFAULT_HEIGHT_DIALOG = '90%';\n  public static DEFAULT_WIDTH_COLUMN_STYLE = 85;\n  public static DEFAULT_ALIGNMENT_COLUMN_STYLE: 'center' | 'right' | 'left' = 'left';\n  public static DEFAULT_COLUMN_FUNCTION: OReportFunction = { columnName: 'TOTAL', type: 'TOTAL' };\n}\n","import { MatDialog } from \"@angular/material/dialog\";\nimport { Constants } from \"./constants\";\n\nexport class Utils {\n  static setFullscreenDialog(fullscreen: boolean, dialogRef: any): void {\n    if (!fullscreen) {\n      dialogRef.updateSize(\"100%\", \"100%\");\n    } else {\n      dialogRef.updateSize(Constants.DEFAULT_WIDTH_DIALOG, Constants.DEFAULT_HEIGHT_DIALOG);\n    }\n  }\n  static cloneObject(data: Object) {\n    return JSON.parse(JSON.stringify(data));\n  }\n\n  static openModalVisor(dialog: MatDialog, component: any, data: object) {\n    dialog.open(component, {\n      maxWidth: '100vw',\n      maxHeight: '100vh',\n      height: Constants.DEFAULT_HEIGHT_DIALOG,\n      width: Constants.DEFAULT_WIDTH_DIALOG,\n      panelClass: ['o-dialog-class', 'o-table-dialog', 'o-report'],\n      data: data\n    });\n  }\n}\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { Component, Inject, Injector, OnDestroy, OnInit, Optional, ViewChild } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatListOption, MatSelectionList } from '@angular/material/list';\nimport { DialogService, OntimizePreferencesService, OPreference, preferencesServiceFactory, Util } from 'ontimize-web-ngx';\nimport { Subscription } from 'rxjs';\n\n\n@Component({\n  selector: 'apply-configuration-dialog',\n  templateUrl: './apply-configuration-dialog.component.html',\n  providers: [\n    { provide: OntimizePreferencesService, useFactory: preferencesServiceFactory, deps: [Injector] }\n  ],\n})\n\nexport class ApplyConfigurationDialogComponent implements OnInit, OnDestroy {\n  @ViewChild(MatSelectionList, { static: true })\n  protected configurationList: MatSelectionList;\n\n  public configurationListData: OPreference[] = [];\n  public selectedConfiguration: OPreference;\n  private dialogService: DialogService;\n  private preferenceService: OntimizePreferencesService;\n  protected preferencesSubscription: Subscription = new Subscription();\n\n  constructor(\n    public dialogo: MatDialogRef<ApplyConfigurationDialogComponent>,\n    protected injector: Injector,\n    @Optional() @Inject(MAT_DIALOG_DATA) public data: any) {\n\n    this.dialogService = this.injector.get(DialogService);\n    this.preferenceService = this.injector.get(OntimizePreferencesService);\n    this.preferenceService.configureService(this.preferenceService.getDefaultServiceConfiguration('preferences'));\n    this.getConfigurations();\n  }\n  ngOnInit(): void {\n    this.configurationList.selectedOptions = new SelectionModel<MatListOption>(false);\n  }\n\n  loadConfiguration(): void {\n    this.dialogo.close(this.selectedConfiguration);\n  }\n\n  remove(): void {\n    this.dialogService.confirm('CONFIRM', 'TABLE.DIALOG.CONFIRM_REMOVE_CONFIGURATION').then(result => {\n      if (result) {\n        this.preferencesSubscription.add(this.preferenceService.deletePreferences(this.selectedConfiguration.PREFERENCEID).subscribe(res => {\n          if (res && res.code === 0) {\n            this.getConfigurations();\n          }\n        }));\n      }\n    });\n  }\n  onClickConfigurationList(option) {\n    this.selectedConfiguration = option;\n  }\n\n  getConfigurations() {\n    this.preferencesSubscription.add(this.preferenceService.getPreferences(this.data.entity, this.data.service, 'REPORT').subscribe(resp => {\n      if (resp.isSuccessful()) {\n        this.setDataArray(resp.data);\n      }\n    }));\n  }\n\n  setDataArray(data: any) {\n    if (Util.isArray(data)) {\n      this.configurationListData = data;\n    } else {\n      this.configurationListData = []\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.preferencesSubscription) {\n      this.preferencesSubscription.unsubscribe();\n    }\n\n  }\n}\n","<span mat-dialog-title>{{ 'TABLE.BUTTONS.APPLY_CONFIGURATION' | oTranslate }}</span>\n<mat-dialog-content fxLayout=\"column\">\n  <div mat-subheader>{{ 'TABLE.DIALOG.APPLY_CONFIGURATION' | oTranslate }}</div>\n  <mat-selection-list #configurationList dense class=\"apply-configuration-dialog-list\">\n    <mat-list-option (click)=\"onClickConfigurationList(configuration)\" checkboxPosition=\"before\" *ngFor=\"let configuration of configurationListData\"\n      [value]=\"configuration\">\n      <span matListItemTitle>{{ configuration.PREFERENCENAME }}</span>\n      <span matListItemLine>{{ configuration.PREFERENCEDESCRIPTION }}</span>\n    </mat-list-option>\n  </mat-selection-list>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n  <button type=\"button\" (click)=\"remove()\" mat-stroked-button [disabled]=\"configurationList.selectedOptions.selected.length!==1\"\n    class=\"o-button-danger\">\n    {{ 'DELETE' | oTranslate }}\n  </button>\n  <span fxFlex></span>\n  <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default\">{{ 'CANCEL' | oTranslate }}</button>\n  <button type=\"button\" (click)=\"loadConfiguration()\" mat-stroked-button [mat-dialog-close]=\"true\"\n    [disabled]=\"configurationList.selectedOptions.selected.length!==1\" class=\"o-button-primary\">{{ 'OK' | oTranslate}}</button>\n</mat-dialog-actions>\n","import { Component, Injector } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { OTableBaseDialogClass } from 'ontimize-web-ngx';\n\n@Component({\n  selector: 'app-save-preferences-dialog',\n  templateUrl: './save-preferences-dialog.component.html'\n})\n\nexport class SavePreferencesDialogComponent extends OTableBaseDialogClass {\n  public name: string;\n  public description: string;\n\n  public formGroup: UntypedFormGroup = new UntypedFormGroup({\n    name: new UntypedFormControl('', [\n      Validators.required\n    ]),\n    description: new UntypedFormControl('')\n  });\n\n  constructor(\n    public dialogo: MatDialogRef<SavePreferencesDialogComponent>,\n    protected injector: Injector) {\n    super(injector);\n    this.setFormControl(this.formGroup.get('name'));\n  }\n\n  save(): void {\n    this.dialogo.close({ \"name\": this.name, \"description\": this.description });\n  }\n}\n","<span mat-dialog-title>{{ 'TABLE.BUTTONS.SAVE_CONFIGURATION' | oTranslate }}</span>\n\n<mat-dialog-content>\n  <div mat-subheader>{{ 'TABLE.DIALOG.SAVE_CONFIGURATION' | oTranslate }}</div>\n  <form #form [formGroup]=\"formGroup\" fxLayout=\"column\">\n    <mat-form-field subscriptSizing='dynamic'>\n      <input [(ngModel)]=\"name\" matInput [matTooltip]=\"tooltipText\" [matTooltipClass]=\"tooltipClass\"\n        placeholder=\"{{ 'TABLE.DIALOG.CONFIGURATION_NAME' | oTranslate }}\" formControlName=\"name\" required>\n      <mat-error *oMatError=\"hasError(formGroup.controls['name'], 'required')\">{{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}</mat-error>\n    </mat-form-field>\n\n    <mat-form-field subscriptSizing='dynamic'>\n      <textarea [(ngModel)]=\"description\" matInput placeholder=\"{{ 'TABLE.DIALOG.CONFIGURATION_DESCRIPTION' | oTranslate }}\"\n        formControlName=\"description\" rows=\"4\" cols=\"50\"></textarea>\n    </mat-form-field>\n\n  </form>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n  <button type=\"button\" mat-stroked-button class=\"mat-primary\" [mat-dialog-close]=\"false\" class=\"o-button-default\">\n    {{ 'CANCEL' | oTranslate }}</button>\n  <button type=\"button\" mat-stroked-button class=\"mat-primary\" (click)=\"save()\" [mat-dialog-close]=\"true\" [disabled]=\"formGroup.invalid\">\n    {{ 'SAVE' | oTranslate }}</button>\n</mat-dialog-actions>\n","import { Component, Inject, Optional } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { OReportFunction } from '../../../types/report-function.type';\n\n@Component({\n  selector: 'app-select-function-dialog',\n  templateUrl: './select-function-dialog.component.html',\n  styleUrls: ['./select-function-dialog.component.scss'],\n})\nexport class SelectFunctionDialogComponent {\n  public selectedFunction: string;\n  public functions: { id: string, value: string }[] = [\n    { id: 'SUM', value: 'DIALOG.SELECT_FUNCTION.SUM' },\n    { id: 'AVERAGE', value: 'DIALOG.SELECT_FUNCTION.AVG' },\n    { id: 'MAX', value: 'DIALOG.SELECT_FUNCTION.MAX' },\n    { id: 'MIN', value: 'DIALOG.SELECT_FUNCTION.MIN' }];\n  constructor(\n    public dialogo: MatDialogRef<SelectFunctionDialogComponent>,\n    @Optional() @Inject(MAT_DIALOG_DATA) public reportFunction: OReportFunction) {\n    this.selectedFunction = reportFunction.type;\n  }\n\n  public save(): void {\n    this.dialogo.close({ columnName: this.reportFunction.columnName, type: this.selectedFunction });\n  }\n\n}\n","<span mat-dialog-title> {{ 'DIALOG.SELECT_FUNCTION.TITLE' | oTranslate }}</span>\n\n<mat-dialog-content>\n  <div mat-subheader>{{ 'DIALOG.SELECT_FUNCTION.DESCRIPTION' | oTranslate }}</div>\n\n  <mat-radio-group name=\"Function\" [(ngModel)]=\"selectedFunction\" fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"12px\">\n    <mat-radio-button *ngFor=\"let function of functions\" [value]=\"function.id\">\n      {{ function.value | oTranslate }}\n    </mat-radio-button>\n  </mat-radio-group>\n\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n  <button type=\"button\" mat-stroked-button class=\"mat-primary\" [mat-dialog-close]=\"false\" class=\"o-button-default\">\n    {{ 'CANCEL' | oTranslate }}</button>\n  <button type=\"button\" mat-stroked-button class=\"mat-primary\" (click)=\"save()\" [mat-dialog-close]=\"true\" [disabled]=\"!selectedFunction\">\n    {{'SAVE' | oTranslate }}</button>\n</mat-dialog-actions>\n","import { Component, Inject, Optional } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Util } from 'ontimize-web-ngx';\nimport { OReportColumn } from '../../../types/report-column.type';\nimport { Constants } from '../../../util/constants';\nimport { Utils } from '../../../util/utils';\n\n@Component({\n  selector: 'app-style-dialog',\n  templateUrl: './style-dialog.component.html'\n})\nexport class StyleDialogComponent {\n\n  public reportColumn: OReportColumn;\n\n  public dataAlignment = [\n    { \"name\": \"left\", \"icon\": \"format_align_left\" },\n    { \"name\": \"center\", \"icon\": \"format_align_center\" },\n    { \"name\": \"right\", \"icon\": \"format_align_right\" }\n  ]\n\n  constructor(\n    @Optional() public dialogo: MatDialogRef<StyleDialogComponent>,\n    @Optional() @Inject(MAT_DIALOG_DATA) public data: OReportColumn) {\n\n    this.reportColumn = Utils.cloneObject(data);\n\n    if (this.reportColumn.columnStyle && !Util.isDefined(this.reportColumn.columnStyle.width)) {\n      this.reportColumn.columnStyle.width = Constants.DEFAULT_WIDTH_COLUMN_STYLE;\n    }\n    if (this.reportColumn.columnStyle && !Util.isDefined(this.reportColumn.columnStyle.alignment)) {\n      this.reportColumn.columnStyle.alignment = Constants.DEFAULT_ALIGNMENT_COLUMN_STYLE;\n    }\n    if (!this.reportColumn.columnStyle) {\n      this.reportColumn.columnStyle = { width: Constants.DEFAULT_WIDTH_COLUMN_STYLE, alignment: Constants.DEFAULT_ALIGNMENT_COLUMN_STYLE }\n    }\n  }\n\n  confirm(): void {\n    this.dialogo.close(this.reportColumn);\n  }\n\n}\n","<span mat-dialog-title>{{ 'COLUMN_CONFIGURATION' | oTranslate }}</span>\n<mat-dialog-content>\n  <div mat-subheader>{{ 'SAVE_COLUMN_CONFIGURATION' | oTranslate }}</div>\n  <div fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"12px\">\n    <form #form>\n      <mat-form-field subscriptSizing='dynamic' fxFill>\n        <mat-label>{{ 'COLUMN_NAME' | oTranslate }}</mat-label>\n        <input id=\"columnNameInput\" name=\"columnNameInput\" matInput placeholder=\"{{ 'COLUMN_NAME' | oTranslate }}\" required\n          [(ngModel)]=\"reportColumn.name\" #columnNameInput=\"ngModel\" [ngModelOptions]=\"{standalone: true}\">\n      </mat-form-field>\n      <mat-form-field subscriptSizing='dynamic' fxFill>\n        <input id=\"widthColumnInput\" name=\"widthColumnInput\" matInput type=\"number\" placeholder=\"{{ 'COLUMN_WIDTH' | oTranslate }}\" required\n          [(ngModel)]=\"reportColumn.columnStyle.width\" #widthColumnInput=\"ngModel\" [ngModelOptions]=\"{standalone: true}\">\n        <span matSuffix>px</span>\n        <mat-hint></mat-hint>\n      </mat-form-field>\n      <mat-radio-group [(ngModel)]=\"reportColumn.columnStyle.alignment\" fxFill fxLayout=\"row\" fxLayoutAlign=\"space-between center\"\n        [ngModelOptions]=\"{standalone: true}\">\n        <mat-radio-button *ngFor=\"let aligmentItem of dataAlignment\" [value]=\"aligmentItem.name\"\n          [checked]=\"reportColumn.columnStyle.alignment === aligmentItem\">\n          <mat-icon fxFlex>\n            {{ aligmentItem.icon }}\n          </mat-icon>\n        </mat-radio-button>\n      </mat-radio-group>\n    </form>\n  </div>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n  <button type=\"button\" mat-stroked-button class=\"mat-primary\" [mat-dialog-close]=\"false\" class=\"o-button-default\">\n    {{ 'CANCEL' | oTranslate }}</button>\n  <button type=\"button\" mat-stroked-button class=\"mat-primary\" (click)=\"confirm()\" [mat-dialog-close]=\"true\"\n    [disabled]=\"columnNameInput.invalid || widthColumnInput.invalid\">\n    {{ 'SAVE' | oTranslate }}</button>\n</mat-dialog-actions>\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { Component, Inject, Injector, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatSelectionList, MatSelectionListChange } from '@angular/material/list';\nimport {\n  AppConfig,\n  AppearanceService,\n  DialogService,\n  FactoryUtil,\n  OColumn,\n  OConfigureServiceArgs,\n  OntimizePreferencesService,\n  OPreference,\n  OTableBase,\n  OTranslateService,\n  preferencesServiceFactory,\n  SnackBarService,\n  Util\n} from 'ontimize-web-ngx';\n\nimport { OReportService } from '../../../services/o-report.service';\nimport { OntimizeReportDataProvider } from '../../../services/ontimize-report-data-provider.service';\nimport { OReportColumnStyle } from '../../../types/report-column-style.type';\nimport { OReportColumn } from '../../../types/report-column.type';\nimport { OReportFunction } from '../../../types/report-function.type';\nimport { OReportOrderBy } from '../../../types/report-orderBy.type';\nimport { DefaultOReportPreferences, OReportPreferences } from '../../../types/report-preferences.type';\nimport { Utils } from '../../../util/utils';\nimport { ApplyConfigurationDialogComponent } from '../apply-configuration/apply-configuration-dialog.component';\nimport { SavePreferencesDialogComponent } from '../save-preferences-dialog/save-preferences-dialog.component';\nimport { SelectFunctionDialogComponent } from '../select-function-dialog/select-function-dialog.component';\nimport { StyleDialogComponent } from '../style-dialog/style-dialog.component';\nimport { OReportParam } from './../../../types/report-param.type';\n\n@Component({\n  selector: 'o-report-on-demand',\n  templateUrl: './report-on-demand.component.html',\n  styleUrls: ['./report-on-demand.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { provide: OntimizePreferencesService, useFactory: preferencesServiceFactory, deps: [Injector] }\n  ],\n  host: {\n    '[class.o-report-on-demand]': 'true'\n  }\n})\n\nexport class ReportOnDemandComponent implements OnInit {\n\n  @ViewChild('columnsList', { static: false }) columnsList: MatSelectionList;\n  @ViewChild('groupsList', { static: false }) groupsList: MatSelectionList;\n  @ViewChild('functionsList', { static: false }) functionsList: MatSelectionList;\n  @ViewChild('orderByList', { static: false }) orderByList: MatSelectionList;\n\n  public orientations = [{ text: \"vertical\", value: true }, { text: \"horizontal\", value: false }];\n  public functionsData: OReportFunction[] = [];\n  private initialFunctionsData: OReportFunction[] = [];\n  public appliedConfiguration: boolean = false;\n  public selectedFunctions = [];\n  isDarkMode: boolean;\n  public stylesArray = [\n    { value: 'grid', viewValue: 'GRID' },\n    { value: 'rowNumber', viewValue: 'ROW_NUMBER' },\n    { value: 'columnName', viewValue: 'COLUMNS_NAMES' },\n    { value: 'backgroundOnOddRows', viewValue: 'BACKGROUND_ODD_ROWS' },\n    { value: 'hideGroupDetails', viewValue: 'GROUP_DETAILS' },\n    { value: 'groupNewPage', viewValue: 'GROUP_PAGE' },\n    { value: 'firstGroupNewPage', viewValue: 'FIRST_GROUP_PAGE' }\n  ];\n\n\n  public columnsData: Array<OReportColumn>;\n  private initialColumnsData: Array<OReportColumn>;\n  public selectedColumnsData: string[];\n  public columnsOrderBy: Array<OReportOrderBy> = [];\n  public enabledReport = false;\n\n  public columnsToGroupData: any[];\n  private initialColumnsToGroupData: any[];\n  public openedSidenav: boolean = true;\n  public fullscreen: boolean = false;\n\n  protected service: string;\n  protected language: string;\n  protected columnsArray: Array<string>;\n  protected visibleColumnsArray = [];\n  protected table: OTableBase;\n  private blankPdf: string = 'JVBERi0xLjYKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nDPQM1Qo5ypUMFAw0DMwslAwtTTVMzI3VbAwMdSzMDNUKErlCtdSyOMKVAAAtxIIrgplbmRzdHJlYW0KZW5kb2JqCgozIDAgb2JqCjUwCmVuZG9iagoKNSAwIG9iago8PAo+PgplbmRvYmoKCjYgMCBvYmoKPDwvRm9udCA1IDAgUgovUHJvY1NldFsvUERGL1RleHRdCj4+CmVuZG9iagoKMSAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50IDQgMCBSL1Jlc291cmNlcyA2IDAgUi9NZWRpYUJveFswIDAgNTk1LjMwMzkzNzAwNzg3NCA4NDEuODg5NzYzNzc5NTI4XS9Hcm91cDw8L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQi9JIHRydWU+Pi9Db250ZW50cyAyIDAgUj4+CmVuZG9iagoKNCAwIG9iago8PC9UeXBlL1BhZ2VzCi9SZXNvdXJjZXMgNiAwIFIKL01lZGlhQm94WyAwIDAgNTk1IDg0MSBdCi9LaWRzWyAxIDAgUiBdCi9Db3VudCAxPj4KZW5kb2JqCgo3IDAgb2JqCjw8L1R5cGUvQ2F0YWxvZy9QYWdlcyA0IDAgUgovT3BlbkFjdGlvblsxIDAgUiAvWFlaIG51bGwgbnVsbCAwXQovTGFuZyhlcy1FUykKPj4KZW5kb2JqCgo4IDAgb2JqCjw8L0F1dGhvcjxGRUZGMDA1MDAwNjEwMDc0MDA3MjAwNjkwMDYzMDA2OTAwNjEwMDIwMDA0RDAwNjEwMDcyMDA3NDAwRUQwMDZFMDA2NTAwN0EwMDIwMDA1NDAwNjkwMDZDMDA3NjAwNjU+Ci9DcmVhdG9yPEZFRkYwMDU3MDA3MjAwNjkwMDc0MDA2NTAwNzI+Ci9Qcm9kdWNlcjxGRUZGMDA0QzAwNjkwMDYyMDA3MjAwNjUwMDRGMDA2NjAwNjYwMDY5MDA2MzAwNjUwMDIwMDAzNzAwMkUwMDMxPgovQ3JlYXRpb25EYXRlKEQ6MjAyMjA1MTAxNDUyMDYrMDInMDAnKT4+CmVuZG9iagoKeHJlZgowIDkKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMjM0IDAwMDAwIG4gCjAwMDAwMDAwMTkgMDAwMDAgbiAKMDAwMDAwMDE0MCAwMDAwMCBuIAowMDAwMDAwNDAyIDAwMDAwIG4gCjAwMDAwMDAxNTkgMDAwMDAgbiAKMDAwMDAwMDE4MSAwMDAwMCBuIAowMDAwMDAwNTAwIDAwMDAwIG4gCjAwMDAwMDA1OTYgMDAwMDAgbiAKdHJhaWxlcgo8PC9TaXplIDkvUm9vdCA3IDAgUgovSW5mbyA4IDAgUgovSUQgWyA8RDdBODhCRTRFREFDRkU1RDFGMTIwMzNFMDUyN0JERkU+CjxEN0E4OEJFNEVEQUNGRTVEMUYxMjAzM0UwNTI3QkRGRT4gXQovRG9jQ2hlY2tzdW0gLzgwNTA5NDU4QjgyN0RCRDQ2QzlEODdBMjY4NjdCNEFDCj4+CnN0YXJ0eHJlZgo4NzYKJSVFT0YK';\n\n  public currentPreference: OReportPreferences;\n  public currentConfiguration: OPreference;\n  public pdf: string;\n\n  public translateService: OTranslateService;\n  protected appConfig: AppConfig;\n  protected snackBarService: SnackBarService;\n  protected reportService: OReportService;\n  protected dialogService: DialogService;\n  public dialog: MatDialog;\n  reportDataProvider: OntimizeReportDataProvider;\n  preferenceService: OntimizePreferencesService;\n  constructor(\n    public injector: Injector,\n    public dialogRef: MatDialogRef<ReportOnDemandComponent>,\n    @Inject(MAT_DIALOG_DATA) public data: OTableBase,\n    private appearanceService: AppearanceService\n  ) {\n    this.appConfig = this.injector.get(AppConfig);\n    this.translateService = this.injector.get<OTranslateService>(OTranslateService);\n    this.snackBarService = this.injector.get<SnackBarService>(SnackBarService);\n    this.reportService = this.injector.get<OReportService>(OReportService);\n    this.dialogService = this.injector.get<DialogService>(DialogService);\n    this.dialog = this.injector.get<MatDialog>(MatDialog);\n    this.reportDataProvider = this.injector.get<OntimizeReportDataProvider>(OntimizeReportDataProvider);\n\n  }\n\n  public configurePrefereceService(): void {\n    let configureServiceArgs: OConfigureServiceArgs = { injector: this.injector, baseService: OntimizePreferencesService, entity: 'preferences', service: 'preferences', serviceType: null };\n    this.preferenceService = FactoryUtil.configureService(configureServiceArgs);\n  }\n\n  public configureReportService(): void {\n    this.reportService.configureService(this.reportService.getDefaultServiceConfiguration(this.table.service || this.table.serviceType));\n  }\n\n\n  ngOnInit() {\n    this.initialize();\n    this.configurePrefereceService();\n    this.configureReportService();\n    this.getFunctions();\n  }\n\n  protected initialize() {\n    this.table = this.data;\n    this.service = this.table.service;\n    this.columnsArray = this.parseColumnsVisible();\n    this.visibleColumnsArray = this.getVisibleColumns();\n    this.initialColumnsData = this.parseReportColumn(this.visibleColumnsArray);\n    this.initialColumnsToGroupData = this.columnsArray;\n    this.currentConfiguration = { PREFERENCEENTITY: this.table.entity };\n    this.isDarkMode = this.appearanceService.isDarkMode();\n    this.initializeReportPreferences();\n  }\n\n  public getDefaultServiceConfiguration(serviceName?: string): any {\n    const configuration = this.appConfig.getServiceConfiguration();\n    let servConfig = {};\n    if (serviceName && configuration.hasOwnProperty(serviceName)) {\n      servConfig = configuration[serviceName];\n    }\n    return servConfig;\n  }\n\n  public previewReport(): void {\n    this.enabledReport = false;\n    this.openReport();\n  }\n\n  public clearCurrentPreferences() {\n    this.initializeReportPreferences();\n    if (this.columnsList) {\n      this.columnsList.deselectAll();\n    }\n    if (this.groupsList) {\n      this.groupsList.deselectAll();\n    }\n    if (this.functionsList) {\n      this.functionsList.deselectAll();\n    }\n\n    if (this.orderByList) {\n      this.orderByList.deselectAll();\n    }\n    this.checkEnabledReport();\n  }\n\n  protected initializeReportPreferences() {\n    /* initialize columnsData and functionsData because they are modified by\n    changing settings */\n    this.columnsData = Utils.cloneObject(this.initialColumnsData);\n    this.functionsData = Utils.cloneObject(this.initialFunctionsData);\n    this.columnsToGroupData = Utils.cloneObject(this.initialColumnsToGroupData);\n    this.columnsOrderBy = [];\n    this.pdf = this.blankPdf;\n    this.currentPreference = new DefaultOReportPreferences();\n    this.currentPreference.entity = this.table.entity;\n    this.currentPreference.service = this.table.service;\n  }\n\n  protected parseColumnsVisible() {\n    const columnsArray = Util.parseArray(this.table.columns);\n    return this.table.oTableOptions.columns.filter(oCol => oCol.type !== \"image\" && oCol.type !== \"action\" && oCol.visible && columnsArray.findIndex(column => column === oCol.attr) > -1).map(\n      (x: OColumn) => {\n        return x.attr;\n      }\n    )\n  }\n\n  protected getVisibleColumns() {\n    const columnsArray = Util.parseArray(this.table.columns);\n    return this.table.oTableOptions.columns.filter(oCol => oCol.type !== \"image\" && oCol.type !== \"action\" && oCol.visible && columnsArray.findIndex(column => column === oCol.attr) > -1).map(\n      (x: OColumn) => {\n        return { id: x.attr, name: x.title };\n      }\n    )\n  }\n\n  protected parseReportColumn(columns: any[]): OReportColumn[] {\n    return columns.map(column => {\n      let reportColumn: OReportColumn = {\n        id: column.id, name: column.name != '' ? this.translateService.get(column.name) : this.translateService.get(column.id)\n      };\n      let columnStyle = this.parseColumnStyle(column.id);\n      if (Util.isObject(columnStyle) && Object.keys(columnStyle).length > 0) {\n        reportColumn.columnStyle = columnStyle;\n      }\n      return reportColumn;\n    });\n  }\n\n  protected parseColumnStyle(column: string): OReportColumnStyle {\n    let columnStyle: OReportColumnStyle = {};\n    const renderer = this.createRenderer(column);\n    if (Util.isDefined(renderer) && Util.isDefined(renderer.type)) {\n      columnStyle.renderer = renderer;\n    }\n    return columnStyle;\n  }\n\n  protected parseColumnsOrderBy(columnsOrderBy: any): OReportOrderBy[] {\n    return columnsOrderBy.map(column => {\n      return { columnId: column.columnId, columnName: column.name, ascendent: column.ascendent }\n    });\n  }\n\n\n\n\n  protected openReport() {\n    const reportConfiguration: OReportParam = this.reportDataProvider.getReportConfiguration(this.currentPreference, this.table)\n    this.reportService.createReport(reportConfiguration).subscribe(res => {\n      if (res && res.data.length && res.code === 0) {\n        this.pdf = res.data[0].file;\n        this.enabledReport = true;\n      }\n    });\n  }\n\n  getFunctions() {\n    this.reportService.getFunctions({\n      \"columns\": this.columnsArray, \"entity\": this.currentPreference.entity,\n      \"service\": this.currentPreference.service, \"language\": this.language, \"path\": this.reportDataProvider.getServicePath(this.currentPreference.service)\n    }).subscribe(res => {\n      if (res && res.data.length && res.code === 0) {\n        this.functionsData = this.parseDefaultFunctionsData(res.data[0].functions);\n        this.initialFunctionsData = Utils.cloneObject(this.functionsData);\n      }\n    });\n  }\n\n  parseDefaultFunctionsData(listColumns: OReportFunction[]) {\n    return listColumns.filter(column =>\n      this.columnsData.\n        findIndex(columnData =>\n          columnData.columnStyle && columnData.columnStyle.renderer && columnData.columnStyle.renderer.type === 'service' && columnData.id === column.columnName\n        ) === -1\n    );\n  }\n\n  /**\n   * Checks preference data is consistent with the table data\n   */\n  private checkPreferenceData() {\n    this.currentPreference.columns = this.currentPreference.columns.filter(column => this.initialColumnsData.findIndex(columnData => columnData.id === column.id) > -1);\n    this.currentPreference.groups = Object.values(this.currentPreference.groups).filter(column => this.initialColumnsToGroupData.findIndex(columnData => columnData === column) > -1);\n    this.currentPreference.functions = this.currentPreference.functions.filter(column => this.initialFunctionsData.findIndex(columnData => columnData.columnName === column.columnName) > -1);\n    this.currentPreference.orderBy = this.currentPreference.orderBy.filter(column => this.columnsOrderBy.findIndex(columnData => columnData.columnId === column.columnId) > -1);\n  }\n\n  applyConfiguration(configuration: any) {\n    this.clearCurrentPreferences();\n    this.currentConfiguration = configuration;\n    if (FactoryUtil.isJsonApiService(this.injector)) {\n      this.currentPreference = JSON.parse(atob(this.currentConfiguration.PREFERENCEPREFERENCES));\n    } else {\n      this.currentPreference = JSON.parse(this.currentConfiguration.PREFERENCEPREFERENCES);\n    }\n    this.currentPreference.columns.forEach((column: OReportColumn) => this.updateColumnsOrderByData(column.id, column.name));\n\n    this.checkPreferenceData();\n    // Set the functionsData with the data that is loaded from the configuration because it changes\n    this.functionsData = this.functionsData.map((functionData: OReportFunction) => {\n      const index = this.currentPreference.functions.findIndex(x => x.columnName === functionData.columnName);\n      if (index > -1) {\n        functionData.type = this.currentPreference.functions[index].type;\n      }\n      return functionData\n    });\n\n    this.columnsData.sort((a: OReportColumn, b: OReportColumn) => {\n      let indexA = this.currentPreference.columns.findIndex(x => x.id === a.id);\n      let indexB = this.currentPreference.columns.findIndex(x => x.id === b.id);\n      return this.getSortIndex(indexA, indexB);\n\n    });\n    this.columnsOrderBy.sort((a: OReportOrderBy, b: OReportOrderBy) => {\n      let indexA = this.currentPreference.orderBy.findIndex(x => x.columnId === a.columnId);\n      let indexB = this.currentPreference.orderBy.findIndex(x => x.columnId === b.columnId);\n      return this.getSortIndex(indexA, indexB);\n\n    });\n    this.columnsToGroupData.sort((a: string, b: string) => {\n      let indexA = this.currentPreference.groups.findIndex(x => x === a);\n      let indexB = this.currentPreference.groups.findIndex(x => x === b);\n      return this.getSortIndex(indexA, indexB);\n    });\n\n  }\n\n  private getSortIndex(indexA: number, indexB: number): number {\n    if (indexA === -1) {\n      return 0;\n    }\n    if (indexB === -1) {\n      return indexB;\n    } else {\n      return indexA - indexB;\n    }\n\n  }\n\n  showColumnStyleDialog(event: Event, id: string): void {\n    event.stopPropagation();\n    const columnData: OReportColumn = Object.assign({}, this.currentPreference.columns.find((x: OReportColumn) => x.id === id));\n    if (Util.isDefined(columnData)) {\n      this.dialog\n        .open(StyleDialogComponent, {\n          data: columnData,\n          panelClass: ['o-dialog-class', 'o-table-dialog']\n        })\n        .afterClosed()\n        .subscribe((data: OReportColumn) => {\n          if (Util.isDefined(data) && data) {\n            const column = Utils.cloneObject(data);\n            this.updateColumnStyleConfigurationData(column);\n          }\n        });\n    }\n  }\n\n  updateColumnStyleConfigurationData(data: OReportColumn) {\n\n\n    let columns = Utils.cloneObject(this.currentPreference.columns);\n    this.currentPreference.columns = [];\n    const indexColumnData = this.columnsData.findIndex(x => x.id === data.id);\n    if (indexColumnData > -1) {\n      this.columnsData[indexColumnData] = data;\n    }\n    const indexColumnStyleData = columns.findIndex(x => x.id === data.id);\n    if (indexColumnStyleData > -1) {\n      columns[indexColumnStyleData] = data;\n    }\n\n    this.currentPreference.columns = columns;\n\n  }\n\n\n  selectFunction(event, reportFunction: OReportFunction): void {\n    event.stopPropagation();\n    if (reportFunction.columnName != 'TOTAL') {\n      this.dialog\n        .open(SelectFunctionDialogComponent, {\n          data: reportFunction,\n          panelClass: ['o-dialog-class', 'o-table-dialog']\n        })\n        .afterClosed()\n        .subscribe((data: any) => {\n          //Updated current functions selected and functionsData\n          if (data) {\n            this.updatedFunctionData(data);\n            this.updatedSelectFunction(data);\n          }\n        });\n    }\n  }\n\n  private updatedFunctionData(data: OReportFunction) {\n    const index = this.functionsData.findIndex(x => x.columnName === data.columnName);\n    if (index === -1) {\n      this.functionsData.push(data);\n    } else {\n      this.functionsData[index] = data;\n    }\n  }\n\n  private updatedSelectFunction(selectedFunction: OReportFunction) {\n    this.currentPreference.functions.forEach((data: any, i: number) => {\n      if (data.columnName === selectedFunction.columnName) {\n        this.currentPreference.functions[i] = data;\n      }\n    })\n  }\n\n  openSaveAsPreferences(): void {\n    this.dialog\n      .open(SavePreferencesDialogComponent, {\n        panelClass: ['o-dialog-class', 'o-table-dialog']\n      })\n      .afterClosed()\n      .subscribe((data: { name: string, description: string }) => {\n        if (Util.isDefined(data) && data) {\n          this.savePreferences(data);\n        }\n      });\n\n  }\n\n  dropColumns(event: CdkDragDrop<string[]>) {\n    moveItemInArray(this.columnsData, event.previousIndex, event.currentIndex);\n    this.updateColumnsSort();\n  }\n\n  dropGroups(event: CdkDragDrop<any[]>) {\n    moveItemInArray(this.columnsToGroupData, event.previousIndex, event.currentIndex)\n    this.updateColumnToGroupSort();\n  }\n\n  dropColumnsOrderBy(event: CdkDragDrop<string[]>) {\n    moveItemInArray(this.columnsOrderBy, event.previousIndex, event.currentIndex);\n    this.updateColumnGroupBySort();\n  }\n\n  updateColumnsSort() {\n    this.currentPreference.columns.sort((a: OReportColumn, b: OReportColumn) => {\n      let indexA = this.columnsData.findIndex(x => x.id === a.id);\n      let indexB = this.columnsData.findIndex(x => x.id === b.id);\n      return indexA - indexB;\n    });\n  }\n\n  updateColumnGroupBySort() {\n    this.currentPreference.orderBy.sort((a: OReportOrderBy, b: OReportOrderBy) => {\n      let indexA = this.columnsOrderBy.findIndex(x => x.columnId === a.columnId);\n      let indexB = this.columnsOrderBy.findIndex(x => x.columnId === b.columnId);\n      return indexA - indexB;\n    });\n  }\n\n  updateColumnToGroupSort() {\n    this.currentPreference.groups.sort((a: string, b: string) => {\n      let indexA = this.columnsToGroupData.findIndex(x => x === a);\n      let indexB = this.columnsToGroupData.findIndex(x => x === b);\n      return indexA - indexB;\n    });\n  }\n\n  public onApplyConfigurationClicked(): void {\n    this.dialog.open(ApplyConfigurationDialogComponent, {\n      width: 'calc((75em - 100%) * 1000)',\n      maxWidth: '65vw',\n      minWidth: '30vw',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-table-dialog'],\n      data: { entity: this.currentPreference.entity, service: this.currentPreference.service },\n    }).afterClosed()\n      .subscribe((data: OPreference) => {\n        if (Util.isDefined(data) && data) {\n          this.applyConfiguration(data);\n          this.appliedConfiguration = true;\n          this.checkEnabledReport();\n        }\n      }, _error => {\n        this.appliedConfiguration = false;\n      });\n  }\n\n  openSavePreferences(): void {\n    if (Util.isDefined(this.currentConfiguration.PREFERENCEID)) {\n      this.savePreferences({ name: this.currentConfiguration.PREFERENCENAME, description: this.currentConfiguration.PREFERENCEDESCRIPTION }, true);\n    } else {\n      this.dialog\n        .open(SavePreferencesDialogComponent, {\n          panelClass: ['o-dialog-class', 'o-table-dialog']\n        })\n        .afterClosed()\n        .subscribe((data: { name: string, description: string }) => {\n          if (Util.isDefined(data) && data) {\n            this.savePreferences(data, true);\n          }\n        });\n    }\n\n  }\n\n  savePreferences(data: any, update?: boolean) {\n    let preference: { [key: string]: any } = {\n      \"preferencename\": data.name,\n      \"preferencedescription\": data.description,\n      \"preferenceentity\": this.currentPreference.entity,\n      \"preferenceservice\": this.currentPreference.service,\n      \"preferencetype\": \"REPORT\",\n      \"preferenceparameters\": {\n        \"title\": this.currentPreference.title, \"groups\": this.currentPreference.groups,\n        \"vertical\": this.currentPreference.vertical, \"functions\": this.currentPreference.functions, \"style\": this.currentPreference.style,\n        \"subtitle\": this.currentPreference.subtitle,\n        \"columns\": this.currentPreference.columns,\n        \"orderBy\": this.currentPreference.orderBy,\n        \"entity\": this.currentPreference.entity,\n        \"service\": this.currentPreference.service\n      }\n    }\n\n    if (update) {\n      this.preferenceService.savePreferences(this.currentConfiguration.PREFERENCEID, preference).subscribe(res => {\n        this.showConfirmOperatinInSnackBar(res);\n      });\n    } else {\n      this.preferenceService.saveAsPreferences(preference).subscribe( res => {\n        if (res && res.code === 0) {\n          this.showConfirmOperatinInSnackBar(res);\n        }\n      }, error => {\n        this.dialogService.alert('ERROR', error);\n      });\n    }\n  }\n\n  private showConfirmOperatinInSnackBar(res: any) {\n    if (res && res.code === 0) {\n      this.snackBarService.open('MESSAGES.SAVED', { icon: 'check_circle' });\n    }\n  }\n\n  setFullscreenDialog(): void {\n    Utils.setFullscreenDialog(this.fullscreen, this.dialogRef);\n    this.fullscreen = !this.fullscreen;\n  }\n\n  onSelectionChangeColumns(event: MatSelectionListChange) {\n    const selectedColumn: OReportColumn = event.options[0].value;\n    const selectColumnId = selectedColumn.id;\n    const selectColumnName = selectedColumn.name;\n    this.updateColumnsOrderByData(selectColumnId, selectColumnName, event);\n    this.checkEnabledReport();\n\n  }\n\n  checkEnabledReport() {\n    this.enabledReport = this.currentPreference.columns.length !== 0;\n  }\n  onSelectionChangeGroups(event: MatSelectionListChange) {\n    if (!event.options[0].selected) return;\n    let groupSelected: string = event.options[0].value;\n    let groupSelectedName = this.columnsData.find(x => x.id === groupSelected).name;\n    this.updateColumnsOrderByData(groupSelected, groupSelectedName, event);\n    if (event.options[0].selected &&\n      this.currentPreference.columns.findIndex(x => x.id === groupSelected) === -1) {\n      const columnStyleSelected: OReportColumn[] = this.columnsData.filter((x: OReportColumn) => x.id === groupSelected)\n      if (columnStyleSelected.length > 0) {\n        this.addColumnData(columnStyleSelected[0]);\n      }\n    }\n    this.checkEnabledReport();\n  }\n\n\n  updateColumnsOrderByData(columnId: string, columnName: string, event?: MatSelectionListChange) {\n\n    if (!event) {\n      const existColumn = this.columnsArray.findIndex(col => col === columnId);\n      if (existColumn === -1) {\n        console.warn('The loaded configuration has the column ' + columnId + ' configured but this column does not exist as a table column');\n        return;\n      }\n    }\n\n    const columnGroupBySelected: OReportOrderBy = { columnId: columnId, columnName: columnName, ascendent: true }\n    let index = this.columnsOrderBy.findIndex(x => x.columnId === columnId);\n    if ((!event) || (event && event.options[0].selected)) {\n      if (index === -1) {\n        this.columnsOrderBy.push(columnGroupBySelected);\n      }\n    }\n    else if (index > -1) {\n      this.columnsOrderBy.splice(index);\n    }\n\n  }\n\n\n  addColumnData(columnSelected) {\n    //Object Deep Cloning\n    let currentPreference = Utils.cloneObject(this.currentPreference);\n    currentPreference.columns.push(columnSelected);\n    this.currentPreference = currentPreference;\n    this.updateColumnsSort();\n  }\n\n  onSelectionChangeFunctions(event: MatSelectionListChange) {\n    if (!event.options[0].selected || event.options[0].value.columnName === 'TOTAL') return;\n    const functionSelect = event.options[0].value;\n    const columnSelectedToGroup = functionSelect.columnName;\n\n    if (event.options[0].selected &&\n      this.currentPreference.columns.findIndex(x => x.id === columnSelectedToGroup) === -1) {\n      const column = this.columnsData.find(x => x.id === columnSelectedToGroup);\n      this.addColumnData(column);\n    }\n  }\n\n\n  changeOrder(column: OReportOrderBy, event) {\n    const columnSelectedToOrder = this.columnsOrderBy.find(x => x.columnId === column.columnId);\n    if (columnSelectedToOrder) {\n      columnSelectedToOrder.ascendent = !columnSelectedToOrder.ascendent;\n    }\n    event.stopPropagation();\n  }\n\n  isCheckedColumn(column: OReportColumn) {\n    return this.currentPreference.columns.length > 0 ? this.currentPreference.columns.filter(x => x.id === column.id).length > 0 : false;\n  }\n\n  isCheckedFunction(column: OReportFunction) {\n    return this.currentPreference.functions.length > 0 ? this.currentPreference.functions.filter(x => (x.columnName === column.columnName && x.type === column.type) && x.type !== 'TOTAL').length > 0 : false;\n  }\n\n  columnsOrderByCompareFunction(co1: OReportOrderBy, co2: OReportOrderBy) {\n    return co1.columnId === co2.columnId;\n  }\n\n  onCheckboxStyleClick(value) {\n    if (this.currentPreference.style[value]) {\n      this.currentPreference.style[value] = false;\n    } else {\n      this.currentPreference.style[value] = true;\n    }\n  }\n\n  columnsCompareFunction(co1: OReportColumn, co2: OReportColumn) {\n    return co1.id === co2.id;\n  }\n\n  functionsCompareFunction(co1: OReportFunction, co2: OReportFunction) {\n    return co1.columnName === co2.columnName;\n  }\n\n\n\n  protected createRenderer(column: string): any {\n    let oColumn: OColumn = this.table.oTableOptions.columns.find(x => x.attr === column);\n    let newRenderer: any;\n    if (Util.isDefined(oColumn) && Util.isDefined(oColumn.type) && oColumn.type !== 'string') {\n      const type = oColumn.type;\n      newRenderer = {};\n\n      let columnRenderer: any = oColumn.renderer;\n      switch (type) {\n        case 'boolean':\n          newRenderer.type = type;\n          newRenderer.renderType = 'string';\n          newRenderer.trueValue = this.translateService.get('REPORT.COLUMN.TRUEVALUE');\n          newRenderer.falseValue = this.translateService.get('REPORT.COLUMN.FALSEVALUE');\n          break;\n        case 'currency':\n          newRenderer.type = type\n          newRenderer.currencySymbol = columnRenderer.currencySymbol;\n          newRenderer.currencySymbolPosition = columnRenderer.currencySymbolPosition;\n          break;\n        case 'date':\n          newRenderer.type = type\n          newRenderer.format = columnRenderer.format;\n          break;\n        case 'integer':\n          newRenderer.type = type\n          newRenderer.grouping = columnRenderer.grouping;\n          newRenderer.thousandSeparator = columnRenderer.thousandSeparator;\n          break;\n        case 'real':\n          newRenderer.type = type\n          newRenderer.decimalSeparator = columnRenderer.decimalSeparator;\n          newRenderer.grouping = columnRenderer.grouping;\n          newRenderer.thousandSeparator = columnRenderer.thousandSeparator;\n          break;\n        case 'service':\n          newRenderer.type = type\n          newRenderer.entity = columnRenderer.entity;\n          newRenderer.service = columnRenderer.service;\n          newRenderer.keyColumn = oColumn.attr;\n          newRenderer.columns = Util.parseArray(columnRenderer.columns);\n          newRenderer.valueColumn = columnRenderer.valueColumn;\n          newRenderer.parentKeys = Util.parseArray(columnRenderer.parentKeys);\n          const serviceConfiguration = this.getDefaultServiceConfiguration(columnRenderer.service);\n          if (Util.isObject(serviceConfiguration) && Object.hasOwnProperty(serviceConfiguration.path)) {\n            newRenderer.path = serviceConfiguration.path;\n          }\n          break;\n      }\n    }\n    return newRenderer;\n  }\n}\n\n","<div mat-dialog-title class=\"dialog-title\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n  {{ 'REPORT_ON_DEMAND_TITLE' | oTranslate }}\n  <div>\n    <mat-icon svgIcon=\"ontimize:settings\" #configurationMenuButton [matMenuTriggerFor]=\"configurationMenu\"></mat-icon>\n    <mat-icon aria-label=\"fullscreen dialog\" (click)=\"setFullscreenDialog()\">\n      <ng-container *ngIf=\"fullscreen\">fullscreen_exit</ng-container>\n      <ng-container *ngIf=\"!fullscreen\">fullscreen</ng-container>\n    </mat-icon>\n    <mat-icon svgIcon=\"ontimize:close\" [mat-dialog-close]=\"true\"></mat-icon>\n\n    <mat-menu #configurationMenu=\"matMenu\" class=\"o-mat-menu\">\n      <button type=\"button\" [disabled]=\"!appliedConfiguration\" mat-menu-item (click)=\"openSavePreferences()\">\n        {{ 'BUTTONS.SAVE_CONFIGURATION' | oTranslate }}\n      </button>\n      <button type=\"button\" mat-menu-item (click)=\"openSaveAsPreferences()\">\n        {{ 'BUTTONS.SAVEAS_CONFIGURATION' | oTranslate }}\n      </button>\n      <button type=\"button\" mat-menu-item (click)=\"onApplyConfigurationClicked()\">\n        {{'BUTTONS.APPLY_CONFIGURATION'| oTranslate }}\n      </button>\n    </mat-menu>\n  </div>\n</div>\n<div #dialog mat-dialog-content class=\"dialog-container\">\n  <mat-sidenav-container class=\"mat-sidenav-container\" [class.opened]=\"openedSidenav\" fxFill>\n    <mat-sidenav #sidenav [(opened)]=\"openedSidenav\" mode=\"side\" class=\"report-on-demand-sidenav\">\n      <div fxLayout=\"column\" fxFill fxLayoutGap=\"20px\">\n        <o-button *ngIf=\"openedSidenav\" (click)=\"openedSidenav=!openedSidenav\" svg-icon=\"ontimize:menu\" type=\"ICON\" label=\"\"\n          [matTooltip]=\"(sidenav.opened?'HIDE_FILTERS':'SHOW_FILTERS') | oTranslate\">\n        </o-button>\n\n        <div fxLayout=\"column\" *ngIf=\"openedSidenav\" class=\"container-title\" fxLayoutGap=\"10px\">\n          <mat-form-field subscriptSizing='dynamic'>\n            <input [(ngModel)]=\"currentPreference.title\" matInput placeholder=\"{{ 'TITLE' | oTranslate }}\">\n          </mat-form-field>\n          <mat-form-field subscriptSizing='dynamic'>\n            <input [(ngModel)]=\"currentPreference.subtitle\" matInput placeholder=\"{{ 'SUBTITLE' | oTranslate }}\">\n          </mat-form-field>\n        </div>\n\n        <mat-accordion multi=\"true\" displayMode=\"flat\" fxFlex=\"1 1 auto\" *ngIf=\"openedSidenav\" [@.disabled]=\"true\">\n          <mat-expansion-panel class=\"acordions\">\n            <mat-expansion-panel-header collapsedHeight=\"32px\" expandedHeight=\"32px\">\n              <mat-panel-title>\n                {{ 'ORIENTATION' | oTranslate }}\n              </mat-panel-title>\n            </mat-expansion-panel-header>\n            <mat-radio-group name=\"Orientation\" [(ngModel)]=\"currentPreference.vertical\" fxLayout=\"column\" fxLayoutGap=\"12px\">\n              <mat-radio-button *ngFor=\"let orientation of orientations\" name=\"Orientation\" [value]=\"orientation.value\"\n                [checked]=\"currentPreference.vertical === orientation.value\">\n                {{ orientation.text | oTranslate}}\n              </mat-radio-button>\n            </mat-radio-group>\n          </mat-expansion-panel>\n\n          <mat-expansion-panel class=\"acordions\">\n            <mat-expansion-panel-header collapsedHeight=\"32px\" expandedHeight=\"32px\">\n              <mat-panel-title>\n                {{ 'STYLE' | oTranslate }}\n              </mat-panel-title>\n            </mat-expansion-panel-header>\n            <mat-selection-list dense #settings>\n              <mat-list-option checkboxPosition=\"before\" [selected]=\"currentPreference.style[choice.value]\" *ngFor=\"let choice of stylesArray\"\n                [value]=\"choice.value\" (click)=\"onCheckboxStyleClick(choice.value)\">\n                <div fxLayout=\"row\">\n                  <span matListItemLine fxFlex>\n                    {{choice.viewValue | oTranslate}}\n                  </span>\n                </div>\n              </mat-list-option>\n            </mat-selection-list>\n          </mat-expansion-panel>\n\n          <mat-expansion-panel class=\"acordions\" expanded=\"true\">\n            <mat-expansion-panel-header collapsedHeight=\"32px\" expandedHeight=\"32px\">\n              <mat-panel-title>\n                {{ 'COLUMNS' | oTranslate }}\n              </mat-panel-title>\n            </mat-expansion-panel-header>\n            <mat-selection-list dense #columnsList cdkDropList [cdkDropListData]=\"columnsData\" (cdkDropListDropped)=\"dropColumns($event)\"\n              class=\"columns\" [(ngModel)]=\"currentPreference.columns\" (selectionChange)=\"onSelectionChangeColumns($event)\"\n              [compareWith]=\"columnsCompareFunction\">\n              <mat-list-option checkboxPosition=\"before\" *ngFor=\"let column of columnsData\" [value]=\"column\" cdkDrag>\n                <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n                  <span matListItemLine fxFlex>\n                    {{column.name | oTranslate}}\n                  </span>\n                  <mat-icon mat-list-icon *ngIf=\"isCheckedColumn(column)\" (click)=\"showColumnStyleDialog($event, column.id)\" class=\"button-edit\">\n                    edit\n                  </mat-icon>\n                  <mat-icon mat-list-icon class=\"button-edit\">drag_handle</mat-icon>\n                </div>\n              </mat-list-option>\n            </mat-selection-list>\n          </mat-expansion-panel>\n          <mat-expansion-panel class=\"acordions\" *ngIf=\"columnsOrderBy.length > 0\">\n            <mat-expansion-panel-header collapsedHeight=\"32px\" expandedHeight=\"32px\">\n              <mat-panel-title>\n                {{ 'ORDER_BY' | oTranslate }}\n              </mat-panel-title>\n            </mat-expansion-panel-header>\n            <mat-selection-list dense #orderByList cdkDropList [cdkDropListData]=\"columnsOrderBy\" (cdkDropListDropped)=\"dropColumnsOrderBy($event)\"\n              class=\"columns\" [(ngModel)]=\"currentPreference.orderBy\" [compareWith]=\"columnsOrderByCompareFunction\">\n              <mat-list-option checkboxPosition=\"before\" *ngFor=\"let column of columnsOrderBy\"\n                [value]=\"{ columnId: column.columnId, ascendent: column.ascendent }\" cdkDrag>\n                <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n                  <span matListItemLine fxFlex>\n                    {{column.columnName | oTranslate}}\n                  </span>\n                  <mat-icon *ngIf=\"column.ascendent\" (click)=\"changeOrder(column, $event)\" mat-list-icon svgIcon=\"ontimize:sort_by_alpha_asc\"\n                    class=\"button-edit\"></mat-icon>\n                  <mat-icon *ngIf=\"!column.ascendent\" (click)=\"changeOrder(column, $event)\" mat-list-icon svgIcon=\"ontimize:sort_by_alpha_desc\"\n                    class=\"button-edit\"></mat-icon>\n                  <mat-icon mat-list-icon class=\"button-edit\">drag_handle</mat-icon>\n                </div>\n              </mat-list-option>\n            </mat-selection-list>\n          </mat-expansion-panel>\n          <mat-expansion-panel class=\"acordions\">\n            <mat-expansion-panel-header collapsedHeight=\"32px\" expandedHeight=\"32px\">\n              <mat-panel-title>\n                {{ 'GROUPS' | oTranslate }}\n              </mat-panel-title>\n            </mat-expansion-panel-header>\n            <mat-selection-list #groupsList dense cdkDropList [cdkDropListData]=\"columnsToGroupData\" (cdkDropListDropped)=\"dropGroups($event)\"\n              [(ngModel)]=\"currentPreference.groups\" (selectionChange)=\"onSelectionChangeGroups($event)\">\n              <mat-list-option checkboxPosition=\"before\" *ngFor=\"let column of columnsData\" [value]=\"column.id\" cdkDrag>\n                <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n                  <span matListItemLine fxFlex>\n                    {{ column.name | oTranslate }}\n                  </span>\n                  <mat-icon mat-list-icon class=\"button-edit\">drag_handle</mat-icon>\n                </div>\n              </mat-list-option>\n            </mat-selection-list>\n          </mat-expansion-panel>\n\n          <mat-expansion-panel class=\"acordions\" *ngIf=\"functionsData.length>0\">\n            <mat-expansion-panel-header collapsedHeight=\"32px\" expandedHeight=\"32px\">\n              <mat-panel-title>\n                {{ 'FUNCTIONS' | oTranslate }}\n              </mat-panel-title>\n            </mat-expansion-panel-header>\n            <mat-selection-list #functionsList dense [(ngModel)]=\"currentPreference.functions\" [compareWith]=\"functionsCompareFunction\"\n              (selectionChange)=\"onSelectionChangeFunctions($event)\">\n              <mat-list-option checkboxPosition=\"before\" *ngFor=\"let function of functionsData\" [value]=\"function\">\n                <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n                  <span matListItemLine fxFlex>\n                    <ng-container *ngIf=\"function.columnName==='TOTAL'; else functionColumnTemplate\">\n                      {{function.type | oTranslate}}\n                    </ng-container>\n                  </span>\n                  <ng-template #functionColumnTemplate>\n                    {{function.type | oTranslate }}({{function.columnName | oTranslate }})\n                  </ng-template>\n\n                  <mat-icon *ngIf=\"isCheckedFunction(function)\" mat-list-icon (click)=\"selectFunction($event, function)\" class=\"button-edit\">\n                    edit\n                  </mat-icon>\n                </div>\n              </mat-list-option>\n            </mat-selection-list>\n          </mat-expansion-panel>\n        </mat-accordion>\n\n        <div mat-dialog-actions fxLayout=\"row\" fxLayoutAlign=\"center center\" *ngIf=\"openedSidenav\">\n          <button type=\"button\" mat-stroked-button class=\"o-report-on-demand-clear-button\" (click)=\"clearCurrentPreferences()\">\n            {{'CLEAR' | oTranslate }}</button>\n          <button type=\"button\" mat-stroked-button class=\"mat-primary\" (click)=\"previewReport()\" [disabled]=\"!enabledReport\">\n            {{'PREVIEW' | oTranslate }}</button>\n        </div>\n\n      </div>\n    </mat-sidenav>\n    <mat-sidenav-content>\n      <div class=\"sidenav-container-content\">\n        <ngx-extended-pdf-viewer [base64Src]=\"pdf\" [filenameForDownload]=\"currentPreference.title\" [customToolbar]=\"additionalButtons\"\n          useBrowserLocale=\"true\" delayFirstView=\"1000\" [textLayer]=\"true\" [theme]=\"isDarkMode ? 'dark' : 'light'\"\n          [backgroundColor]=\"isDarkMode ? '#5c5c5c' : '#e4e6e8'\"></ngx-extended-pdf-viewer>\n        <ng-template #additionalButtons>\n          <div id=\"toolbarViewer\">\n            <div id=\"toolbarViewerLeft\">\n              <o-button *ngIf=\"!openedSidenav\" (click)=\"openedSidenav=!openedSidenav\" svg-icon=\"ontimize:menu\" type=\"ICON\" label=\"\"\n                [matTooltip]=\"(sidenav.opened?'HIDE_FILTERS':'SHOW_FILTERS') | oTranslate\">\n              </o-button>\n              <div class=\"toolbarButtonSpacer\"></div>\n              <pdf-find-button [showFindButton]=\"true\" [textLayer]=\"true\"></pdf-find-button>\n              <pdf-paging-area></pdf-paging-area>\n            </div>\n            <pdf-zoom-toolbar></pdf-zoom-toolbar> <!-- toolbar viewer middle -->\n            <div id=\"toolbarViewerRight\">\n              <pdf-rotate-page></pdf-rotate-page>\n              <pdf-print></pdf-print>\n              <pdf-download></pdf-download>\n              <div class=\"verticalToolbarSeparator hiddenSmallView\"></div>\n            </div>\n          </div>\n        </ng-template>\n      </div>\n    </mat-sidenav-content>\n  </mat-sidenav-container>\n</div>\n","import { Injectable, Injector } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogService, IReportService } from 'ontimize-web-ngx';\nimport { OTableBase } from 'ontimize-web-ngx/lib/components/table/o-table-base.class';\nimport { ReportOnDemandComponent } from '../components/report-on-demand/report-on-demand/report-on-demand.component';\nimport { Utils } from '../util/utils';\n\n\n@Injectable()\nexport class OntimizeReportService implements IReportService {\n  protected dialogService: DialogService;\n  protected dialog: MatDialog;\n\n  constructor(\n    private injector: Injector\n  ) {\n    this.dialogService = this.injector.get<DialogService>(DialogService);\n    this.dialog = this.injector.get<MatDialog>(MatDialog);\n  }\n\n  openReportOnDemand(table: OTableBase) {\n    Utils.openModalVisor(this.dialog, ReportOnDemandComponent, table);\n  }\n\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n  selector: 'o-report-skeleton',\n  templateUrl: './o-report-skeleton.component.html',\n  styleUrls: ['./o-report-skeleton.component.scss'],\n  host: {\n    '[class.o-report-skeleton]': 'true'\n  }\n})\nexport class OReportSkeletonComponent { }","<div class=\"fb-item\">\n  <div class=\"first-section-wrapper\">\n    <div class=\"gravatar\">\n      <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{ width: '80px', height: '80px' }\">\n      </ngx-skeleton-loader>\n    </div>\n    <div class=\"gravatar-title\">\n      <div>\n        <ngx-skeleton-loader [theme]=\"{\n            width: '200px',\n            'border-radius': '0',\n            height: '15px',\n            'margin-bottom': '10px'\n          }\"></ngx-skeleton-loader>\n      </div>\n      <div>\n        <ngx-skeleton-loader [theme]=\"{ width: '170px', 'border-radius': '0', height: '15px' }\">\n        </ngx-skeleton-loader>\n      </div>\n    </div>\n  </div>\n  <div class=\"second-section-wrapper\">\n    <div class=\"wrapper\">\n      <ngx-skeleton-loader [theme]=\"{\n          width: '80%',\n          'border-radius': '0',\n          height: '15px',\n          'margin-bottom': '10px'\n        }\"></ngx-skeleton-loader>\n    </div>\n    <div class=\"wrapper\">\n      <ngx-skeleton-loader [theme]=\"{\n          width: '90%',\n          'border-radius': '0',\n          height: '15px',\n          'margin-bottom': '10px'\n        }\"></ngx-skeleton-loader>\n    </div>\n    <div class=\"wrapper\">\n      <ngx-skeleton-loader [theme]=\"{\n          width: '60%',\n          'border-radius': '0',\n          height: '15px',\n          'margin-bottom': '10px'\n        }\"></ngx-skeleton-loader>\n    </div>\n    <div class=\"wrapper\">\n      <ngx-skeleton-loader [theme]=\"{\n                width: '80%',\n                'border-radius': '0',\n                height: '15px',\n                'margin-bottom': '10px'\n              }\"></ngx-skeleton-loader>\n    </div>\n    <div class=\"wrapper\">\n      <ngx-skeleton-loader [theme]=\"{\n                width: '90%',\n                'border-radius': '0',\n                height: '15px',\n                'margin-bottom': '10px'\n              }\"></ngx-skeleton-loader>\n    </div>\n    <div class=\"wrapper\">\n      <ngx-skeleton-loader [theme]=\"{\n                width: '60%',\n                'border-radius': '0',\n                height: '15px',\n                'margin-bottom': '10px'\n              }\"></ngx-skeleton-loader>\n    </div>\n    <div class=\"wrapper\">\n      <ngx-skeleton-loader [theme]=\"{\n                width: '80%',\n                'border-radius': '0',\n                height: '15px',\n                'margin-bottom': '10px'\n              }\"></ngx-skeleton-loader>\n    </div>\n    <div class=\"wrapper\">\n      <ngx-skeleton-loader [theme]=\"{\n                width: '90%',\n                'border-radius': '0',\n                height: '15px',\n                'margin-bottom': '10px'\n              }\"></ngx-skeleton-loader>\n    </div>\n    <div class=\"wrapper\">\n      <ngx-skeleton-loader [theme]=\"{\n                width: '60%',\n                'border-radius': '0',\n                height: '15px',\n                'margin-bottom': '10px'\n              }\"></ngx-skeleton-loader>\n    </div>\n    <div class=\"wrapper\">\n      <ngx-skeleton-loader [theme]=\"{\n                width: '80%',\n                'border-radius': '0',\n                height: '15px',\n                'margin-bottom': '10px'\n              }\"></ngx-skeleton-loader>\n    </div>\n    <div class=\"wrapper\">\n      <ngx-skeleton-loader [theme]=\"{\n                width: '90%',\n                'border-radius': '0',\n                height: '15px',\n                'margin-bottom': '10px'\n              }\"></ngx-skeleton-loader>\n    </div>\n    <div class=\"wrapper\">\n      <ngx-skeleton-loader [theme]=\"{\n                width: '60%',\n                'border-radius': '0',\n                height: '15px',\n                'margin-bottom': '10px'\n              }\"></ngx-skeleton-loader>\n    </div>\n  </div>\n  <div class=\"wrapper\">\n    <ngx-skeleton-loader [theme]=\"{\n              width: '80%',\n              'border-radius': '0',\n              height: '15px',\n              'margin-bottom': '10px'\n            }\"></ngx-skeleton-loader>\n  </div>\n  <div class=\"wrapper\">\n    <ngx-skeleton-loader [theme]=\"{\n              width: '90%',\n              'border-radius': '0',\n              height: '15px',\n              'margin-bottom': '10px'\n            }\"></ngx-skeleton-loader>\n  </div>\n  <div class=\"wrapper\">\n    <ngx-skeleton-loader [theme]=\"{\n              width: '60%',\n              'border-radius': '0',\n              height: '15px',\n              'margin-bottom': '10px'\n            }\"></ngx-skeleton-loader>\n  </div>\n  <div class=\"wrapper\">\n    <ngx-skeleton-loader [theme]=\"{\n              width: '80%',\n              'border-radius': '0',\n              height: '15px',\n              'margin-bottom': '10px'\n            }\"></ngx-skeleton-loader>\n  </div>\n  <div class=\"wrapper\">\n    <ngx-skeleton-loader [theme]=\"{\n              width: '90%',\n              'border-radius': '0',\n              height: '15px',\n              'margin-bottom': '10px'\n            }\"></ngx-skeleton-loader>\n  </div>\n  <div class=\"wrapper\">\n    <ngx-skeleton-loader [theme]=\"{\n              width: '60%',\n              'border-radius': '0',\n              height: '15px',\n              'margin-bottom': '10px'\n            }\"></ngx-skeleton-loader>\n  </div>\n</div>\n","import { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { AppearanceService, DialogService, Util } from 'ontimize-web-ngx';\nimport { OReportStoreService } from '../../../services/o-report-store.service';\nimport { Utils } from '../../../util/utils';\nimport { OReportStoreParam } from '../../../types/report-store-param.type';\n\n@Component({\n  selector: 'o-report-viewer',\n  templateUrl: './o-report-viewer.component.html',\n  styleUrls: ['./o-report-viewer.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-report-viewer]': 'true'\n  }\n})\nexport class OReportViewerComponent {\n\n  public pdf: string;\n  private blankPdf: string = 'JVBERi0xLjYKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nDPQM1Qo5ypUMFAw0DMwslAwtTTVMzI3VbAwMdSzMDNUKErlCtdSyOMKVAAAtxIIrgplbmRzdHJlYW0KZW5kb2JqCgozIDAgb2JqCjUwCmVuZG9iagoKNSAwIG9iago8PAo+PgplbmRvYmoKCjYgMCBvYmoKPDwvRm9udCA1IDAgUgovUHJvY1NldFsvUERGL1RleHRdCj4+CmVuZG9iagoKMSAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50IDQgMCBSL1Jlc291cmNlcyA2IDAgUi9NZWRpYUJveFswIDAgNTk1LjMwMzkzNzAwNzg3NCA4NDEuODg5NzYzNzc5NTI4XS9Hcm91cDw8L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQi9JIHRydWU+Pi9Db250ZW50cyAyIDAgUj4+CmVuZG9iagoKNCAwIG9iago8PC9UeXBlL1BhZ2VzCi9SZXNvdXJjZXMgNiAwIFIKL01lZGlhQm94WyAwIDAgNTk1IDg0MSBdCi9LaWRzWyAxIDAgUiBdCi9Db3VudCAxPj4KZW5kb2JqCgo3IDAgb2JqCjw8L1R5cGUvQ2F0YWxvZy9QYWdlcyA0IDAgUgovT3BlbkFjdGlvblsxIDAgUiAvWFlaIG51bGwgbnVsbCAwXQovTGFuZyhlcy1FUykKPj4KZW5kb2JqCgo4IDAgb2JqCjw8L0F1dGhvcjxGRUZGMDA1MDAwNjEwMDc0MDA3MjAwNjkwMDYzMDA2OTAwNjEwMDIwMDA0RDAwNjEwMDcyMDA3NDAwRUQwMDZFMDA2NTAwN0EwMDIwMDA1NDAwNjkwMDZDMDA3NjAwNjU+Ci9DcmVhdG9yPEZFRkYwMDU3MDA3MjAwNjkwMDc0MDA2NTAwNzI+Ci9Qcm9kdWNlcjxGRUZGMDA0QzAwNjkwMDYyMDA3MjAwNjUwMDRGMDA2NjAwNjYwMDY5MDA2MzAwNjUwMDIwMDAzNzAwMkUwMDMxPgovQ3JlYXRpb25EYXRlKEQ6MjAyMjA1MTAxNDUyMDYrMDInMDAnKT4+CmVuZG9iagoKeHJlZgowIDkKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMjM0IDAwMDAwIG4gCjAwMDAwMDAwMTkgMDAwMDAgbiAKMDAwMDAwMDE0MCAwMDAwMCBuIAowMDAwMDAwNDAyIDAwMDAwIG4gCjAwMDAwMDAxNTkgMDAwMDAgbiAKMDAwMDAwMDE4MSAwMDAwMCBuIAowMDAwMDAwNTAwIDAwMDAwIG4gCjAwMDAwMDA1OTYgMDAwMDAgbiAKdHJhaWxlcgo8PC9TaXplIDkvUm9vdCA3IDAgUgovSW5mbyA4IDAgUgovSUQgWyA8RDdBODhCRTRFREFDRkU1RDFGMTIwMzNFMDUyN0JERkU+CjxEN0E4OEJFNEVEQUNGRTVEMUYxMjAzM0UwNTI3QkRGRT4gXQovRG9jQ2hlY2tzdW0gLzgwNTA5NDU4QjgyN0RCRDQ2QzlEODdBMjY4NjdCNEFDCj4+CnN0YXJ0eHJlZgo4NzYKJSVFT0YK';\n\n  public name = '';\n  public fullscreen: boolean = false;\n  isDarkMode: boolean;\n  public showReport: boolean = false;\n\n  constructor(\n    public dialogRef: MatDialogRef<OReportViewerComponent>,\n    private reportStoreService: OReportStoreService,\n    protected dialogService: DialogService,\n    @Inject(MAT_DIALOG_DATA) public data: any, private appearanceService: AppearanceService) {\n    this.pdf = this.blankPdf;\n\n    this.reportStoreService.configureService(this.reportStoreService.getDefaultServiceConfiguration('reportstore'));\n    this.reportStoreService.configureAdapter();\n\n    this.name = Util.isDefined(this.data['name']) ? this.data.name : '';\n    const uuid = this.data['id'];\n    const reportStoreParam: OReportStoreParam = Util.isDefined(this.data['param']) ? this.data['param'] : {};\n    this.reportStoreService.fillReport(uuid, reportStoreParam, 'fillReport', {},).subscribe(\n      res => {\n        if (res && res.data.length && res.code === 0) {\n          this.pdf = res.data[0].file;\n          this.showReport = true;\n        }\n      },\n      err => {\n        if (this.dialogService) {\n          this.dialogService.error('ERROR',\n            'SERVER_ERROR_MESSAGE');\n        }\n        console.log(err);\n      }\n    );\n    this.isDarkMode = this.appearanceService.isDarkMode();\n  }\n  setFullscreenDialog(): void {\n    Utils.setFullscreenDialog(this.fullscreen, this.dialogRef);\n    this.fullscreen = !this.fullscreen;\n  }\n\n}\n","<div mat-dialog-title class=\"dialog-title\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n  {{ name }}\n  <div>\n    <mat-icon aria-label=\"fullscreen dialog\" (click)=\"setFullscreenDialog()\">\n      <ng-container *ngIf=\"fullscreen\">fullscreen_exit</ng-container>\n      <ng-container *ngIf=\"!fullscreen\">fullscreen</ng-container>\n    </mat-icon>\n    <mat-icon svgIcon=\"ontimize:close\" [mat-dialog-close]=\"true\"></mat-icon>\n  </div>\n</div>\n<div #dialog mat-dialog-content class=\"dialog-container\">\n  <o-report-skeleton *ngIf=\"!showReport\"></o-report-skeleton>\n  <ngx-extended-pdf-viewer *ngIf=\"showReport\" [base64Src]=\"pdf\" [filenameForDownload]=\"name\" [showPropertiesButton]=\"false\" [showOpenFileButton]=\"false\"\n    [showDrawEditor]=\"false\" [showTextEditor]=\"false\" useBrowserLocale=\"true\" delayFirstView=\"1000\" [textLayer]=\"true\"\n    [theme]=\"isDarkMode ? 'dark' : 'light'\" [backgroundColor]=\"isDarkMode ? '#5c5c5c' : '#e4e6e8'\"></ngx-extended-pdf-viewer>\n</div>\n","import { HttpEventType, HttpHeaders, HttpRequest } from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogService, Observable, Util } from 'ontimize-web-ngx';\nimport { share } from 'rxjs/operators';\n\nimport { OReportViewerComponent } from '../components/report/o-report-viewer/o-report-viewer.component';\nimport { OFilterParameter } from '../types/filter-parameter.type';\nimport { OReportStoreParam, OReportStoreParamValue } from '../types/report-store-param.type';\nimport { Utils } from '../util/utils';\nimport { OReportService } from './o-report.service';\nimport { OReportMappingUtils } from '../util/report-mapping-utils';\n\n@Injectable()\nexport class OReportStoreService extends OReportService {\n  protected dialogService: DialogService;\n  protected dialog: MatDialog\n  readonly DEFAULT_PATH = '/reportstore';\n\n  constructor(\n    protected injector: Injector\n  ) {\n    super(injector);\n    this.dialogService = this.injector.get<DialogService>(DialogService);\n    this.dialog = this.injector.get<MatDialog>(MatDialog);\n  }\n\n  configureService(config: any): void {\n    super.configureService(config);\n    this.path = config.path || this.DEFAULT_PATH;\n  }\n\n  public query(kv?: Object, _av?: Array<string>, entity?: string, _sqltypes?: Object): Observable<any> {\n    const identifier = kv['REPORTUUID'];\n    let url = '';\n    if (Object.keys(kv).length === 0) {\n      url = `${this.urlBase}${this.path}/listReports`;\n    } else {\n      url = `${this.urlBase}${this.path}/getReport/` + identifier;\n    }\n\n    return this.doRequest({\n      method: 'GET',\n      url: url\n    });\n  }\n\n\n  public advancedQuery(_kv?: Object, _av?: Array<string>, entity?: string, _sqltypes?: Object, offset?: number, _pagesize?: number, _orderby?: Array<Object>): Observable<any> {\n    offset = (Util.isDefined(offset)) ? offset : this.offset;\n\n    // Calculate page\n    let page = 0;\n    if (Util.isDefined(offset)) {\n      page = Math.trunc(offset / 10) + 1;\n    }\n\n    let url = this.urlBase + this.path + '/' + entity + '/?format=json' + '&page=' + page;\n\n    return this.doRequest({\n      method: 'GET',\n      url: url\n    });\n  }\n\n  public delete(kv?: Object, _entity?: string, _sqltypes?: Object): Observable<any> {\n    const identifier = kv.valueOf()[Object.keys(kv)[0]];\n    let url = `${this.urlBase}${this.path}/removeReport/` + identifier;\n\n    return this.doRequest({\n      method: 'DELETE',\n      url: url\n    });\n  }\n\n  public update(kv?: Object, av?: any, _entity?: string, _sqltypes?: Object): Observable<any> {\n    delete av['REPORTID'];\n    const identifier = kv.valueOf()[Object.keys(kv)[0]];\n    let url = `${this.urlBase}${this.path}/updateReport/` + identifier;\n    av = OReportMappingUtils.ontimizeDataMapping(av);\n    return this.doRequest({\n      method: 'PUT',\n      url: url,\n      body: av\n    });\n  }\n\n  public fillReport(uuid: string, reportStoreParam: OReportStoreParam, entity?: string, _sqltypes?: Object): Observable<any> {\n    let body = JSON.stringify(reportStoreParam);\n    let url = `${this.urlBase}${this.path}/${entity}/` + uuid;\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body\n    });\n  }\n\n  openFillReport(uuid: string, parametersValues: Array<OReportStoreParamValue> = [], filter: OFilterParameter = { filter: {} }) {\n    this.configureService(this.getDefaultServiceConfiguration('reportstore'));\n    this.configureAdapter();\n    let kv = { 'UUID': uuid };\n    this.query(kv, null, 'getReport', {}).subscribe(\n      res => {\n        if (res && res.data.length && res.code === 0) {\n          let name = res.data[0].NAME;\n\n          const reportStoreParam: OReportStoreParam = {\n            filters: filter,\n            parameters: parametersValues\n          }\n          const data = {\n            'id': uuid,\n            'name': name,\n            'param': reportStoreParam\n          };\n          Utils.openModalVisor(this.dialog, OReportViewerComponent, data)\n\n        }\n      },\n      err => {\n        if (this.dialogService) {\n          this.dialogService.error('ERROR',\n            'SERVER_ERROR_MESSAGE');\n        }\n        console.log(err);\n      }\n    );\n\n  }\n\n  upload(files: any[], entity: string, data?: object): Observable<any> {\n    const dataObservable = new Observable(observer => {\n\n      let url = `${this.urlBase}${this.path}/addReport`;\n\n      const toUpload: any = new FormData();\n      files.forEach(item => {\n        item.prepareToUpload();\n        item.isUploading = true;\n        toUpload.append('name', item.name);\n        toUpload.append('file', item.file);\n      });\n\n      if (data) {\n        toUpload.append('data', JSON.stringify(data));\n      }\n\n      const request = new HttpRequest('POST', url, toUpload, {\n        headers: this.buildHeadersReport(),\n        reportProgress: true\n      });\n\n      this.httpClient.request(request).subscribe(resp => {\n        if (HttpEventType.UploadProgress === resp.type) {\n          // Upload progress event received\n          const progressData = {\n            loaded: resp.loaded,\n            total: resp.total\n          };\n          observer.next(progressData);\n        } else if (HttpEventType.Response === resp.type) {\n          // Full response received\n          if (resp.body) {\n            this.bodyCode(resp, observer);\n          } else {\n            observer.next(resp.body);\n          }\n        }\n      }, error => {\n        console.error(error);\n        if (error.status === 401) {\n          this.authService.logout();\n        } else {\n          observer.error(error);\n        }\n      },\n        () => observer.complete());\n    });\n    return dataObservable.pipe(share());\n  }\n\n  protected buildHeadersReport(): HttpHeaders {\n    let headers = new HttpHeaders({ 'Access-Control-Allow-Origin': '*' });\n    const sessionId = this.authService.getSessionInfo().id;\n    if (Util.isDefined(sessionId)) {\n      headers = headers.append('Authorization', 'Bearer ' + sessionId);\n    }\n    return headers;\n  }\n\n  protected bodyCode(resp, observer) {\n    if (resp.body['code'] === 3) {\n      this.authService.logout();\n    } else if (resp.body['code'] === 1) {\n      observer.error(resp.body['message']);\n    } else if (resp.body['code'] === 0) {\n      // RESPONSE\n      observer.next(resp.body);\n    } else {\n      // Unknow state -> error\n      observer.error('Service unavailable');\n    }\n  }\n\n\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class OAlertService {\n\n  // Observable string\n  private alertSource = new Subject<string>();\n\n  // Observable string streams\n  alert$ = this.alertSource.asObservable();\n\n  // Service message commands\n  announceAlert(alert: string) {\n    this.alertSource.next(alert);\n  }\n\n}\n","import { Component, Injector, ViewChild } from '@angular/core';\nimport { OTableComponent, OConfigureServiceArgs, AppConfig } from 'ontimize-web-ngx';\nimport { OAlertService } from '../../../services/o-alert.service';\nimport { OReportStoreService } from '../../../services';\n\n@Component({\n  selector: 'o-report-home',\n  templateUrl: './o-report-home.component.html',\n})\nexport class OReportHomeComponent {\n\n  @ViewChild('table', { static: true })\n  table: OTableComponent;\n  appConfig: AppConfig;\n\n  constructor(private alertService: OAlertService,\n    protected injector: Injector) {\n    alertService.alert$.subscribe(\n      _res => {\n        this.table.refresh();\n      });\n    this.appConfig = this.injector.get(AppConfig);\n  }\n\n  configureServiceReportStore(): OConfigureServiceArgs {\n    let configureArgs: OConfigureServiceArgs;\n    configureArgs = {\n      injector: this.injector, baseService: OReportStoreService, entity: this.table.entity, service: this.table.service, serviceType: null\n    };\n\n    return configureArgs;\n  }\n}\n","<o-form-layout-manager attr=\"report-layout-mgn\" title=\"REPORTS\" separator=\" \" mode=\"tab\" label-columns=\"NAME\">\n  <div fxLayout=\"column\" fxLayoutAlign=\"start start\" fxFill>\n    <o-table #table fxFlex attr=\"report\" service=\"reportstore\" entity=\"Report\" keys=\"REPORTUUID\"\n      columns=\"REPORTUUID;REPORTNAME;REPORTDESCRIPTION;REPORTTYPE;REPORTFILENAME\" visible-columns=\"REPORTNAME;REPORTDESCRIPTION;REPORTTYPE\"\n      query-rows=\"20\" show-report-on-demand-option=\"no\" show-chart-on-demand-option=\"no\" [configure-service-args]=\"configureServiceReportStore()\">\n      >\n      <o-table-column attr=\"REPORTNAME\" title=\"REPORT_NAME\" orderable=\"yes\" searchable=\"yes\"\n        class=\"o-table-column-centered\"></o-table-column>\n      <o-table-column attr=\"REPORTDESCRIPTION\" title=\"REPORT_DESCRIPTION\" orderable=\"yes\" searchable=\"no\"\n        class=\"o-table-column-centered\"></o-table-column>\n      <o-table-column attr=\"REPORTTYPE\" title=\"REPORT_TYPE\" orderable=\"yes\" searchable=\"no\"\n        class=\"o-table-column-centered\"></o-table-column>\n    </o-table>\n  </div>\n</o-form-layout-manager>\n","import { Component, Injector, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { AppConfig, DialogService, OConfigureServiceArgs, OFileInputComponent, OFormComponent, OTextInputComponent } from 'ontimize-web-ngx';\nimport { Subscription } from 'rxjs';\nimport { OAlertService } from '../../../services/o-alert.service';\nimport { OReportStoreService } from '../../../services/o-report-store.service';\n\n@Component({\n  selector: 'o-report-new',\n  templateUrl: './o-report-new.component.html',\n  styleUrls: ['./o-report-new.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.app-report-store-new]': 'true'\n  }\n})\nexport class OReportNewComponent {\n\n  @ViewChild('name', { static: true })\n  name: OTextInputComponent;\n  @ViewChild('type', { static: true })\n  type: OTextInputComponent;\n  @ViewChild('description', { static: true })\n  description: OTextInputComponent;\n  @ViewChild('form', { static: true })\n  form: OFormComponent;\n  @ViewChild('file', { static: true })\n  file: OFileInputComponent;\n\n  subscription: Subscription;\n  loading: boolean = false;\n  appConfig: AppConfig;\n\n  constructor(\n    private alertService: OAlertService,\n    private dialogService: DialogService,\n    protected injector: Injector\n  ) {\n    this.appConfig = this.injector.get(AppConfig);\n  }\n\n  getFileData() {\n    return {\n      'name': this.name.getValue(),\n      'type': this.type.getValue(),\n      'description': this.description.getValue(),\n    };\n  }\n\n  onUploadFile() {\n    this.loading = false;\n    this.confirm();\n    this.form._clearAndCloseFormAfterInsert();\n  }\n\n  onError() {\n    if (this.dialogService) {\n      this.dialogService.error('ERROR',\n        'SERVER_ERROR_MESSAGE');\n      this.loading = false;\n    }\n  }\n\n  confirm() {\n    this.alertService.announceAlert('alert');\n  }\n\n  onClickSave(e: Event) {\n    Object.keys(this.form.formGroup.controls).forEach((control) => {\n      this.form.formGroup.controls[control].markAsTouched();\n    });\n\n    if (!this.form.formGroup.valid) {\n      this.dialogService.alert('ERROR', 'MESSAGES.FORM_VALIDATION_ERROR');\n      return;\n    }\n    this.loading = true;\n    this.file.onClickUpload(e);\n  }\n\n  configureServiceReportStore(): OConfigureServiceArgs {\n    let configureArgs: OConfigureServiceArgs = { injector: this.injector, baseService: OReportStoreService, entity: 'report', service: 'reportstore', serviceType: null }\n    return configureArgs;\n  }\n\n}\n","<o-form #form service=\"reportstore\" entity=\"report\" keys=\"REPORTID\" header-actions=\"R;I;U;D\" show-header-navigation=\"no\"\n  [configure-service-args]=\"configureServiceReportStore()\">\n  <div o-form-toolbar-buttons>\n    <button type=\"button\" class=\"o-form-toolbar-button\" mat-stroked-button (click)=\"onClickSave($event)\" attr=\"fillreport\">\n      <mat-icon>save</mat-icon>\n      <span>{{ 'SAVE'| oTranslate}}</span>\n    </button>\n  </div>\n  <o-column attr=\"row1\" title=\"REPORT_DATA\" icon=\"description\" layout-gap=\"14px\" fxFill>\n    <div fxLayout=\"row wrap\" fxLayoutGap=\"14px\" fxLayoutAlign=\"start start\" fxFlex>\n      <o-text-input #name class=\"input-padding\" attr=\"REPORTNAME\" label=\"REPORT_NAME\" fxFlex=\"50\" required=\"yes\"></o-text-input>\n      <o-text-input #type class=\"input-padding\" attr=\"REPORTTYPE\" label=\"REPORT_TYPE\" fxFlex required=\"yes\"></o-text-input>\n    </div>\n    <o-textarea-input #description attr=\"REPORTDESCRIPTION\" label=\"REPORT_DESCRIPTION\" fxFlex required=\"yes\"></o-textarea-input>\n    <o-file-input #file attr=\"file\" fxFlex=\"50\" service=\"reportstore\" entity=\"report\" label=\"REPORT_ZIPFOLDER\" show-info=\"yes\" workspace-key=\"id\"\n      required=\"yes\" (onUploadFile)=\"onUploadFile()\" accept-file-type=\".zip\" [additional-data]=\"getFileData()\" (onErrorFile)=\"onError()\"\n      [configure-service-args]=\"configureServiceReportStore()\">\n    </o-file-input>\n  </o-column>\n</o-form>\n<div class=\"loading\" *ngIf=\"loading\">\n  <div class=\"spinner\">\n    <mat-spinner mode=\"indeterminate\"></mat-spinner>\n  </div>\n</div>\n","import { Component, Injector, OnDestroy, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport {\n  AppConfig,\n  createServiceInstance,\n  DialogService,\n  FactoryUtil,\n  OConfigureServiceArgs,\n  OFileInputComponent,\n  OFormComponent,\n  OntimizeService,\n  OTextInputComponent,\n  Util\n} from 'ontimize-web-ngx';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\nimport { OReportStoreService } from '../../../services/o-report-store.service';\nimport { OReportStoreParam, OReportStoreParamValue } from '../../../types/report-store-param.type';\nimport { Utils } from '../../../util/utils';\nimport { OReportViewerComponent } from '../o-report-viewer/o-report-viewer.component';\n\n\nexport type JasperReportParameter = {\n  reportParameterName: string,\n  reportParameterDescription: string,\n  reportParameterValueClass: string,\n  reportParameterType?: string\n}\n\n@Component({\n  selector: 'o-report-detail',\n  templateUrl: './o-report-detail.component.html'\n})\nexport class OReportDetailComponent implements OnDestroy {\n\n  paramForm: OFormComponent;\n  id: string;\n\n  public parameters: Array<JasperReportParameter>;\n  public hasParams: boolean = false;\n\n  protected formCacheSubscription: Subscription;\n  protected existChangesSubject = new BehaviorSubject<boolean>(false);\n  public existsParameterChanges: Observable<boolean>;\n  loading: boolean = false;\n\n  @ViewChild('form', { static: true })\n  form: OFormComponent;\n\n  name:string=''\n\n  @ViewChild('type', { static: true })\n  type: OTextInputComponent;\n\n  @ViewChild('description', { static: true })\n  description: OTextInputComponent;\n\n  @ViewChild('file', { static: true })\n  file: OFileInputComponent;\n\n  appConfig: AppConfig;\n  reportParameterService: OntimizeService;\n\n  constructor(\n    protected dialogService: DialogService,\n    protected dialog: MatDialog,\n    protected injector: Injector\n  ) {\n    this.existsParameterChanges = this.existChangesSubject.asObservable();\n    this.appConfig = this.injector.get(AppConfig);\n  }\n\n  @ViewChild('paramForm', { static: false }) set content(content: OFormComponent) {\n    if (content) { // initially setter gets called with undefined\n      this.paramForm = content;\n      this.doSubscription();\n    }\n  }\n\n  protected doSubscription(): void {\n    if (this.hasParams && !this.formCacheSubscription && this.paramForm) {\n      this.formCacheSubscription = this.paramForm.getFormCache().onCacheStateChanges.subscribe((value: any) => {\n        this.canFillReport();\n      });\n    }\n  }\n\n  public ngOnDestroy(): void {\n    if (this.formCacheSubscription) {\n      this.formCacheSubscription.unsubscribe();\n    }\n  }\n\n  private getParameterValues(): Array<OReportStoreParamValue> {\n    const parameterValues: Array<OReportStoreParamValue> = [];\n    if (this.hasParams) {\n      const formValues = this.paramForm.getAttributesValuesToInsert();\n      const sqlTypes = this.paramForm.getAttributesSQLTypes();\n      for (let currentParam of this.parameters) {\n        if (Util.isDefined(formValues[currentParam.reportParameterName])) {\n          let current = {\n            name: currentParam.reportParameterName,\n            value: formValues[currentParam.reportParameterName]\n          };\n          if (Util.isDefined(sqlTypes[currentParam.reportParameterName])) {\n            current[\"sqlType\"] = sqlTypes[currentParam.reportParameterName];\n          }\n          parameterValues.push(current);\n        }\n      }\n    }\n    return parameterValues;\n  }\n\n  public fillReport() {\n    let paramValues: Array<OReportStoreParamValue> = [];\n    if (this.hasParams) {\n      paramValues = this.getParameterValues();\n    }\n    const reportStoreParam: OReportStoreParam = {\n      parameters: paramValues\n    }\n    const data = {\n      'id': this.id,\n      'name': this.name,\n      'param': reportStoreParam\n    };\n    Utils.openModalVisor(this.dialog, OReportViewerComponent, data)\n  }\n\n  onDataLoaded(e: object) {\n    const { REPORTUUID, REPORTNAME, PARAMETERS } = e as any;\n\n    if (FactoryUtil.isJsonApiService(this.injector)) {\n      this.reportParameterService = createServiceInstance(this.appConfig.getConfiguration().serviceType, this.injector);\n      this.reportParameterService.configureService(this.reportParameterService.getDefaultServiceConfiguration('reportparameter'));\n      this.reportParameterService.query({ filter: { 'REPORTUUID': e['REPORTUUID'] } }).subscribe(resp => {\n        if (resp.isSuccessful() && Util.isArray(resp.data) && resp.data.length > 0) {\n          this.parameters = resp.data.map(({ REPORTPARAMETERNAME, REPORTPARAMETERDESCRIPTION, REPORTPARAMETERVALUECLASS, REPORTPARAMETERTYPE }) => ({\n            reportParameterName: REPORTPARAMETERNAME,\n            reportParameterDescription: REPORTPARAMETERDESCRIPTION,\n            reportParameterValueClass: REPORTPARAMETERVALUECLASS,\n            reportParameterType: REPORTPARAMETERTYPE\n          }));\n        } else {\n          this.parameters = [];\n        }\n\n        this.finalizeDataLoading(REPORTNAME, REPORTUUID);\n      });\n    } else {\n\n      this.parameters = Util.isArray(PARAMETERS) ? PARAMETERS : [];\n      this.finalizeDataLoading(REPORTNAME, REPORTUUID);\n    }\n  }\n\n  private finalizeDataLoading(reportName?: string, reportUuid?: string) {\n    this.hasParams = !!this.parameters.length;\n    this.id = reportUuid ?? undefined;\n    this.name = reportName ?? ''\n\n    if (!this.hasParams) {\n      this.canFillReport();\n    }\n  }\n\n  onError() {\n    if (this.dialogService) {\n      this.dialogService.error('ERROR',\n        'SERVER_ERROR_MESSAGE');\n      this.loading = false;\n    }\n  }\n\n  canFillReport(): void {\n    let result = this.form?.formGroup?.valid;\n    if (this.hasParams) {\n      result = result && this.paramForm?.formGroup?.valid\n    }\n    this.existChangesSubject.next(result);\n  }\n\n  configureServiceReportStore(): OConfigureServiceArgs {\n    return { baseService: OReportStoreService, entity: 'report' };\n  }\n\n  configureServiceReportParameter(): OConfigureServiceArgs {\n    return { baseService: OReportStoreService, entity: 'reportparameter' };\n  }\n\n  onBeforeUpdate(data) {\n\n    if (Util.isDefined(this.form.getDataValue('REPORTID'))) {\n      data['REPORTID'] = this.form.getDataValue('REPORTID').value;\n    }\n    console.log('onBeforeUpdate => ', data);\n  }\n}\n","<o-form #form attr=\"report\" service=\"reportstore\" entity=\"Report\" keys=\"REPORTUUID\" header-actions=\"R;I;U;D\" show-header=\"yes\"\n  show-header-navigation=\"yes\" fxLayout=\"column\" (onDataLoaded)=\"onDataLoaded($event)\" [configure-service-args]=\"configureServiceReportStore()\"\n  (onBeforeUpdate)=\"onBeforeUpdate($event)\" columns=\"REPORTID\">\n  <o-column attr=\"row1\" title=\"REPORT_DATA\" icon=\"description\" layout-gap=\"14px\" fxFill>\n    <o-text-input #id attr=\"REPORTUUID\" label=\"REPORT_ID\" enabled=\"no\" fxFlex=\"100\"></o-text-input>\n    <div fxLayout=\"row wrap\" fxLayoutGap=\"14px\" fxLayoutAlign=\"start start\" fxFlex>\n      <o-text-input #name attr=\"REPORTNAME\" label=\"REPORT_NAME\" required=\"yes\" fxFlex=\"50\"></o-text-input>\n      <o-text-input #type attr=\"REPORTTYPE\" label=\"REPORT_TYPE\" required=\"yes\" fxFlex></o-text-input>\n    </div>\n    <o-text-input class=\"form-field\" attr=\"REPORTFILENAME\" label=\"REPORT_FILENAME\" required=\"yes\" fxFlex></o-text-input>\n    <o-textarea-input #description class=\"form-field\" attr=\"REPORTDESCRIPTION\" label=\"REPORT_DESCRIPTION\" required=\"yes\" fxFlex></o-textarea-input>\n  </o-column>\n\n  <div *ngIf=\"hasParams\">\n    <o-column #params title=\"PARAMETERS\" icon=\"info\" class=\"vertical-margin-10\" layout-align=\"start stretch\" appearance=\"outline\">\n      <o-form #paramForm attr=\"reportParams\" service=\"reportstore\" entity=\"fillReport\" keys=\"id\" header-mode=\"none\" show-header=\"no\"\n        layout-direction=\"column\" query-on-init=\"no\" confirm-exit=\"no\" [configure-service-args]=\"configureServiceReportStore()\">\n        <div fxLayout=\"column wrap\" fxLayoutGap=\"14px\" fxLayoutAlign=\"start start\" fxFlex>\n          <ng-container *ngFor=\"let elem of parameters; let i = index\" [ngSwitch]=\"elem.valueClass\">\n            <o-date-input *ngSwitchCase=\"'java.util.Date'\" [attr]=\"elem.reportParameterName\" [label]=\"elem.reportParameterDescription\" required=\"yes\"\n              value-type=\"string\" format=\"YYYY-MM-DD\" fxFill></o-date-input>\n            <o-time-input *ngSwitchCase=\"'java.sql.Timestamp'\" [attr]=\"elem.reportParameterName\" [label]=\"elem.reportParameterDescription\"\n              required=\"yes\" value-type=\"string\" date-placeholder=\"YYYY-MM-DD\" hour-placeholder=\"hh:mm\" fxFill></o-time-input>\n            <o-integer-input *ngSwitchCase=\"'java.lang.Integer'\" [attr]=\"elem.reportParameterName\" [label]=\"elem.reportParameterDescription\"\n              required=\"yes\" fxFill></o-integer-input>\n            <o-integer-input *ngSwitchCase=\"'java.lang.Long'\" [attr]=\"elem.reportParameterName\" [label]=\"elem.reportParameterDescription\"\n              required=\"yes\" fxFill></o-integer-input>\n            <o-real-input *ngSwitchCase=\"'java.lang.Float'\" [attr]=\"elem.reportParameterName\" [label]=\"elem.reportParameterDescription\" required=\"yes\"\n              fxFill></o-real-input>\n            <o-real-input *ngSwitchCase=\"'java.lang.Double'\" [attr]=\"elem.reportParameterName\" [label]=\"elem.reportParameterDescription\"\n              required=\"yes\" fxFill></o-real-input>\n            <o-checkbox *ngSwitchCase=\"'java.lang.Boolean'\" [attr]=\"elem.reportParameterName\" [label]=\"elem.reportParameterDescription\" required=\"yes\"\n              fxFill></o-checkbox>\n            <o-text-input *ngSwitchDefault [attr]=\"elem.reportParameterName\" [label]=\"elem.reportParameterDescription\" required=\"yes\"\n              fxFill></o-text-input>\n          </ng-container>\n        </div>\n      </o-form>\n    </o-column>\n  </div>\n  <o-button type=\"RAISED\" (click)=\"fillReport()\" (keyup)=\"fillReport()\" label=\"FILL_REPORT\" icon=\"download\" layout-padding color=\"accent\"\n    [enabled]=\"existsParameterChanges | async\"></o-button>\n</o-form>\n","import { FlexLayoutModule } from '@angular/flex-layout';\nimport { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';\nimport { OntimizeWebModule } from 'ontimize-web-ngx';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { OReportHomeComponent } from '../components/report/o-report-home/o-report-home.component';\nimport { OReportNewComponent } from '../components/report/o-report-new/o-report-new.component';\nimport { OReportDetailComponent } from '../components/report/o-report-detail/o-report-detail.component';\nimport { OReportViewerComponent } from '../components/report/o-report-viewer/o-report-viewer.component';\nimport { ReportOnDemandComponent } from '../components/report-on-demand/report-on-demand/report-on-demand.component';\nimport { StyleDialogComponent } from '../components/report-on-demand/style-dialog/style-dialog.component';\nimport { SelectFunctionDialogComponent } from '../components/report-on-demand/select-function-dialog/select-function-dialog.component';\nimport { SavePreferencesDialogComponent } from '../components/report-on-demand/save-preferences-dialog/save-preferences-dialog.component';\nimport { ApplyConfigurationDialogComponent } from '../components/report-on-demand/apply-configuration/apply-configuration-dialog.component';\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\nimport { OReportSkeletonComponent } from '../components/report/o-report-skeleton/o-report-skeleton.component';\n\n\nexport const OREPORT_DECLARATION_MODULES: any = [\n  OReportHomeComponent,\n  OReportNewComponent,\n  OReportDetailComponent,\n  OReportViewerComponent,\n  OReportSkeletonComponent,\n  ReportOnDemandComponent,\n  StyleDialogComponent,\n  SelectFunctionDialogComponent,\n  SavePreferencesDialogComponent,\n  ApplyConfigurationDialogComponent\n];\nexport const OREPORT_IMPORTS_MODULES: any = [\n  CommonModule,\n  OntimizeWebModule,\n  NgxExtendedPdfViewerModule,\n  NgxSkeletonLoaderModule,\n  FlexLayoutModule,\n  DragDropModule\n]\nexport const OREPORT_EXPORT_MODULES: any = [];\n","export const MAP = {\n\n  // English\n  en: {\n    'REPORT_ON_DEMAND_TITLE': 'Dynamic Reports',\n\n    'BUTTONS.SAVE_CONFIGURATION': 'Save configuration',\n    'BUTTONS.SAVEAS_CONFIGURATION': 'Save as configuration',\n    'BUTTONS.APPLY_CONFIGURATION': 'Load configuration',\n\n    'TITLE': 'Title',\n    'SUBTITLE': 'Subtitle',\n    'ORIENTATION': 'Orientation',\n    'STYLE': 'Style',\n    'COLUMNS': 'Columns to print',\n    'GROUPS': 'Groups',\n    'FUNCTIONS': 'Functions',\n    'PREVIEW': 'Preview',\n    'COLUMN_CONFIGURATION': 'Column Configuration',\n    'SAVE_COLUMN_CONFIGURATION': 'Enter a name, a with and a alignment for the column',\n    'GRID': 'Draw grid',\n    'ROW_NUMBER': 'Row numbers',\n    'COLUMNS_NAMES': 'Column names',\n    'GROUP_DETAILS': 'Hide group details',\n    'GROUP_PAGE': 'Group in page',\n    'BACKGROUND_ODD_ROWS': 'Background on odd rows',\n    'FIRST_GROUP_PAGE': 'First group in page',\n    'DIALOG.SELECT_FUNCTION.TITLE': 'Select function',\n    'DIALOG.SELECT_FUNCTION.DESCRIPTION': 'Select one of the following functions',\n    'COLUMN_NAME': 'Column name',\n    'COLUMN_WIDTH': 'Column width',\n    'DIALOG.SELECT_FUNCTION.MIN': 'Minumun',\n    'DIALOG.SELECT_FUNCTION.MAX': 'Maximun',\n    'DIALOG.SELECT_FUNCTION.AVG': 'Average',\n    'DIALOG.SELECT_FUNCTION.SUM': 'Sum',\n    'ORDER_BY': 'Order by',\n    'CLEAR': 'Clear',\n    'MIN': 'Minumun',\n    'MAX': 'Maximun',\n    'AVERAGE': 'Average',\n    'SUM': 'Sum',\n    'TOTAL': 'Total',\n    \"REPORTS\": \"Reports\",\n    \"REPORT_DATA\": \"Report information\",\n    \"REPORT_ID\": \"Id.\",\n    \"REPORT_NAME\": \"Name\",\n    \"REPORT_DESCRIPTION\": \"Description\",\n    \"REPORT_TYPE\": \"Report types\",\n    \"REPORT_FILENAME\": \"Main report filename\",\n    \"REPORT_ZIPFOLDER\": \"Report file (ZIP folder)\",\n    \"FILL_REPORT\": \"Generate report\",\n    \"PARAMETERS\": \"Report parameters\",\n    \"GENERATE\": \"Generate\",\n  },\n\n  // Spanish\n  es: {\n    'REPORT_ON_DEMAND_TITLE': 'Informes Dinámicos',\n    'BUTTONS.SAVE_CONFIGURATION': 'Guardar configuración',\n    'BUTTONS.SAVEAS_CONFIGURATION': 'Guardar configuración como',\n    'BUTTONS.APPLY_CONFIGURATION': 'Aplicar configuración',\n\n    'TITLE': 'Título',\n    'SUBTITLE': 'Subtítulo',\n    'ORIENTATION': 'Orientación',\n    'STYLE': 'Estilo',\n    'COLUMNS': 'Columnas a imprimir',\n    'GROUPS': 'Grupos',\n    'FUNCTIONS': 'Funciones',\n    'PREVIEW': 'Previsualizar',\n    'COLUMN_CONFIGURATION': 'Configuración de columna',\n    'SAVE_COLUMN_CONFIGURATION': 'Introduzca un nombre, un ancho y una alineación para la columna',\n    'GRID': 'Dibujar rejilla',\n    'ROW_NUMBER': 'Números de fila',\n    'COLUMNS_NAMES': 'Nombre de columnas',\n    'GROUP_DETAILS': 'Ocultar detalles grupo',\n    'GROUP_PAGE': 'Grupo en página',\n    'BACKGROUND_ODD_ROWS': 'Fondo sobre filas impares',\n    'FIRST_GROUP_PAGE': 'Primer grupo en página',\n    'DIALOG.SELECT_FUNCTION.TITLE': 'Seleccionar función',\n    'DIALOG.SELECT_FUNCTION.DESCRIPTION': 'Seleccione una de las siguientes funciones',\n    'COLUMN_NAME': 'Nombre de la columna',\n    'COLUMN_WIDTH': 'Ancho de la columna',\n    'DIALOG.SELECT_FUNCTION.MIN': 'Mínimo',\n    'DIALOG.SELECT_FUNCTION.MAX': 'Máximo',\n    'DIALOG.SELECT_FUNCTION.AVG': 'Media',\n    'DIALOG.SELECT_FUNCTION.SUM': 'Suma',\n    'ORDER_BY': 'Ordenar por',\n    'CLEAR': 'Limpiar',\n    'MIN': 'Mínimo',\n    'MAX': 'Máximo',\n    'AVERAGE': 'Media',\n    'SUM': 'Suma',\n    'TOTAL': 'Total',\n    \"REPORTS\": \"Informes\",\n    \"REPORT_DATA\": \"Datos informe\",\n    \"REPORT_ID\": \"Id.\",\n    \"REPORT_NAME\": \"Nombre\",\n    \"REPORT_DESCRIPTION\": \"Descripción\",\n    \"REPORT_TYPE\": \"Tipos de informe\",\n    \"REPORT_FILENAME\": \"Archivo principal\",\n    \"REPORT_ZIPFOLDER\": \"Archivo informe (carpeta ZIP)\",\n    \"FILL_REPORT\": \"Generar informe\",\n    \"PARAMETERS\": \"Parámetros\",\n    \"GENERATE\": \"Generar\",\n  }\n\n};\n","import { Injectable } from '@angular/core';\nimport { OTranslateService } from 'ontimize-web-ngx';\n\nimport { MAP } from '../i18n/i18n';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ReportTranslateService {\n\n  private static initialized = false;\n  constructor(\n    public translate: OTranslateService\n  ) {\n    this.translate.onLanguageChanged.subscribe((event: Event) => {\n      ReportTranslateService.initialized = false;\n      this.loadTranslations();\n    });\n\n    if (!ReportTranslateService.initialized) {\n      this.loadTranslations();\n    }\n  }\n\n  loadTranslations() {\n    if (!ReportTranslateService.initialized) {\n      const lang = this.translate.getCurrentLang();\n      this.translate.getNgxTranslateService().setTranslation(lang, MAP[lang], true); // `true` => merge\n      ReportTranslateService.initialized = true;\n    }\n  }\n\n\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { JSONAPIService, Observable, OErrorDialogManager } from 'ontimize-web-ngx';\n\nimport { OReportParam } from '../types/report-param.type';\nimport { JSONAPIResponse } from 'ontimize-web-ngx/lib/interfaces/jsonapi-response.interface';\nimport { OReportMappingUtils } from '../util/report-mapping-utils';\n\n\n@Injectable()\nexport class JSONAPIReportService extends JSONAPIService {\n  protected oErrorDialogManager: OErrorDialogManager;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    super.configureService(this.getDefaultServiceConfiguration('report'));\n    this.oErrorDialogManager = injector.get<OErrorDialogManager>(OErrorDialogManager);\n  }\n\n  public createReport(reportparams: OReportParam): Observable<any> {\n\n    const body = JSON.stringify(\n      reportparams\n    )\n    const url = `${this.urlBase}${this.path}/dynamicjasper/report`;\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body\n    });\n  }\n\n  public getFunctions(functionparams?: object): Observable<any> {\n\n    const body = JSON.stringify(\n      functionparams\n    )\n    const url = `${this.urlBase}${this.path}/dynamicjasper/functionsName`;\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body\n    });\n  }\n\n  public update(id: string, attributes: any, type: string): Observable<JSONAPIResponse> {\n    attributes = OReportMappingUtils.ontimizeMappingKeys(attributes);\n    return super.update(id, attributes, type);\n  }\n\n\n}\n","import { HttpEventType, HttpHeaders, HttpRequest } from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogService, Observable, Util } from 'ontimize-web-ngx';\nimport { JSONAPIResponse } from 'ontimize-web-ngx/lib/interfaces/jsonapi-response.interface';\nimport { share } from 'rxjs/operators';\n\nimport { OReportStoreParam, OReportStoreParamValue } from '../types/report-store-param.type';\nimport { Utils } from '../util/utils';\nimport { JSONAPIReportService } from './jsonapi-report.service';\nimport { OFilterParameter } from '../types/filter-parameter.type';\nimport { JSONAPIQueryParameter } from 'ontimize-web-ngx/lib/types/json-query-parameter.type';\nimport { OReportViewerComponent } from '../components/report/o-report-viewer/o-report-viewer.component';\n\n@Injectable()\nexport class JSONAPIReportStoreService extends JSONAPIReportService {\n  protected dialogService: DialogService;\n  protected dialog: MatDialog;\n  readonly DEFAULT_PATH = '/reportstore';\n\n  constructor(\n    protected injector: Injector\n  ) {\n    super(injector);\n    this.dialogService = this.injector.get<DialogService>(DialogService);\n    this.dialog = this.injector.get<MatDialog>(MatDialog);\n  }\n\n  public configureService(config: any): void {\n    super.configureService(config);\n    this._startSessionPath = this._appConfig.startSessionPath ? this._appConfig.startSessionPath : '/auth/login';\n    this.path = config.path || this.DEFAULT_PATH;\n  }\n\n  public fillReport(uuid: string, reportStoreParam: OReportStoreParam, type?: string): Observable<any> {\n    let body = JSON.stringify(reportStoreParam);\n\n    let url = `${this.urlBase}${this.path}/${type}/` + uuid;\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body\n    });\n  }\n\n  update(id: string, attributes: object, type: string): Observable<JSONAPIResponse> {\n\n    /**Replace key UUID by REPORTID */\n    return super.update(id, attributes, type);\n  }\n\n  openFillReport(uuid: string, parametersValues: Array<OReportStoreParamValue> = [], filter: OFilterParameter = { filter: {} }) {\n    this.configureService(this.getDefaultServiceConfiguration('reportstore'));\n    this.configureAdapter();\n    this.path = `${this.path}/getReport`;\n    let queryParams: JSONAPIQueryParameter = {\n      filter: { 'REPORTUUID': uuid }\n    };\n    this.query(queryParams).subscribe({\n\n      next: (res: JSONAPIResponse) => {\n        if (Util.isArray(res) && res.isSuccessful()) {\n          let name = res.data[0].NAME;\n\n          const reportStoreParam: OReportStoreParam = {\n            filters: filter,\n            parameters: parametersValues\n          }\n          const data = {\n            'id': uuid,\n            'name': name,\n            'param': reportStoreParam\n          };\n          Utils.openModalVisor(this.dialog, OReportViewerComponent, data)\n\n        }\n      },\n      error: (err) => {\n        if (this.dialogService) {\n          this.dialogService.error('ERROR',\n            'SERVER_ERROR_MESSAGE');\n        }\n        console.log(err);\n      }\n    });\n\n  }\n\n  upload(files: any[], entity: string, data?: object): Observable<any> {\n    const dataObservable = new Observable(observer => {\n\n      let url = `${this.urlBase}${this.path}/addReport`;\n\n      const toUpload: any = new FormData();\n      files.forEach(item => {\n        item.prepareToUpload();\n        item.isUploading = true;\n        toUpload.append('name', item.name);\n        toUpload.append('file', item.file);\n      });\n\n      if (data) {\n        toUpload.append('data', JSON.stringify(data));\n      }\n\n      const request = new HttpRequest('POST', url, toUpload, {\n        headers: this.buildHeadersReport(),\n        reportProgress: true\n      });\n\n      this.httpClient.request(request).subscribe(resp => {\n        if (HttpEventType.UploadProgress === resp.type) {\n          // Upload progress event received\n          const progressData = {\n            loaded: resp.loaded,\n            total: resp.total\n          };\n          observer.next(progressData);\n        } else if (HttpEventType.Response === resp.type) {\n          // Full response received\n          if (resp.body) {\n            this.bodyCode(resp, observer);\n          } else {\n            observer.next(resp.body);\n          }\n        }\n      }, error => {\n        console.error(error);\n        if (error.status === 401) {\n          this.authService.logout();\n        } else {\n          observer.error(error);\n        }\n      },\n        () => observer.complete());\n    });\n    return dataObservable.pipe(share());\n  }\n\n  protected buildHeadersReport(): HttpHeaders {\n    let headers = new HttpHeaders({ 'Access-Control-Allow-Origin': '*' });\n    const sessionId = this.authService.getSessionInfo().id;\n    if (Util.isDefined(sessionId)) {\n      headers = headers.append('Authorization', 'Bearer ' + sessionId);\n    }\n    return headers;\n  }\n\n  protected bodyCode(resp, observer) {\n    if (resp.body['code'] === 3) {\n      this.authService.logout();\n    } else if (resp.body['code'] === 1) {\n      observer.error(resp.body['message']);\n    } else if (resp.body['code'] === 0) {\n      // RESPONSE\n      observer.next(resp.body);\n    } else {\n      // Unknow state -> error\n      observer.error('Service unavailable');\n    }\n  }\n\n}\n","import { ReportTranslateService } from './../services/report-translate.service';\nimport { Injector } from '@angular/core';\nimport { _getInjectionTokenValue, AppConfig, FactoryUtil, O_REPORT_SERVICE, Util } from 'ontimize-web-ngx';\n\nimport { IReportDataProvider } from '../interfaces/report-data-provider.interface';\nimport { JSONAPIReportStoreService } from '../services/jsonapi-report-store.service';\nimport { JSONAPIReportService } from '../services/jsonapi-report.service';\nimport { OAlertService } from '../services/o-alert.service';\nimport { OReportRequestArgumentsAdapter } from '../services/o-report-request-argument.adapter';\nimport { OReportResponseAdapter } from '../services/o-report-response.adapter';\nimport { OReportStoreService } from '../services/o-report-store.service';\nimport { OReportService } from '../services/o-report.service';\nimport { O_REPORT_DATA_SERVICE } from '../services/ontimize-report-data-base-provider.service';\nimport { OntimizeReportDataProvider } from '../services/ontimize-report-data-provider.service';\nimport { OntimizeReportService } from '../services/ontimize-report.service';\n\n\nexport function reportDataFactory(injector: Injector): IReportDataProvider {\n  const provider = _getInjectionTokenValue(O_REPORT_DATA_SERVICE, injector);\n  const service = Util.createServiceInstance(provider, injector);\n  if (Util.isDefined(service)) {\n    return service;\n  } else {\n    return new OntimizeReportDataProvider(injector);\n  }\n}\n\n/**\n * Creates a new instance of the report on demand service.\n */\nexport function getReportOnDemandServiceProvider(injector: Injector): OReportService | JSONAPIReportService {\n  // TODO modificar core para tener el Injection Token (Ojo, ya existe un O_REPORT_SERVICE para el servicio de abrir)\n  // const serviceClass = _getInjectionTokenValue(O_REPORT_SERVICE, injector);\n  // const service = Util.createServiceInstance(serviceClass, injector);\n  // return Util.isDefined(service) ? service : new OReportService(injector);\n\n  const config = injector.get(AppConfig).getConfiguration();\n  if (!Util.isDefined(config.serviceType)) {\n    return new OReportService(injector);\n  } else if (FactoryUtil.isOntimizeEEService(injector)) {\n      return new OReportService(injector);\n  } else if (FactoryUtil.isJsonApiService(injector)) {\n      return new JSONAPIReportService(injector);\n    }\n\n  return new OReportService(injector);\n}\n\n/**\n * Creates a new instance of the report store service.\n */\nexport function getReportStoreServiceProvider(injector: Injector): OReportStoreService | JSONAPIReportStoreService {\n  // TODO modificar core para tener el Injection Token\n  // const serviceClass = _getInjectionTokenValue(O_REPORT_STORE_SERVICE, injector);\n  // const service = Util.createServiceInstance(serviceClass, injector);\n  // return Util.isDefined(service) ? service : new OReportStoreService(injector);\n  const config = injector.get(AppConfig).getConfiguration();\n  if (!Util.isDefined(config.serviceType)) {\n    return new OReportStoreService(injector);\n  }\n  if (FactoryUtil.isOntimizeEEService(injector)) {\n    return new OReportStoreService(injector);\n  } else if (FactoryUtil.isJsonApiService(injector)) {\n    return new JSONAPIReportStoreService(injector);\n  }\n  return new OReportStoreService(injector);\n}\n\nexport const OREPORT_PROVIDERS: any = [\n  { provide: O_REPORT_SERVICE, useClass: OntimizeReportService },\n  { provide: OReportService, useFactory: getReportOnDemandServiceProvider, deps: [Injector] },\n  { provide: OReportStoreService, useFactory: getReportStoreServiceProvider, deps: [Injector] },\n  {\n    provide: OntimizeReportDataProvider,\n    useFactory: reportDataFactory,\n    deps: [Injector]\n  },\n  OAlertService,\n  OReportResponseAdapter,\n  OReportRequestArgumentsAdapter,\n  ReportTranslateService\n];\n","import { NgModule } from '@angular/core';\n\nimport { OREPORT_DECLARATION_MODULES, OREPORT_IMPORTS_MODULES } from './config/o-components';\nimport { OREPORT_PROVIDERS } from './config/o-providers';\nimport { ReportTranslateService } from './services/report-translate.service';\n\n@NgModule({\n    declarations: OREPORT_DECLARATION_MODULES,\n    imports: OREPORT_IMPORTS_MODULES,\n    providers: OREPORT_PROVIDERS\n})\n\nexport class OReportModule {\n  constructor(private readonly translationService: ReportTranslateService) {\n    this.translationService.loadTranslations();\n  }\n }\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\nimport { OReportDetailComponent } from \"./o-report-detail/o-report-detail.component\";\nimport { OReportNewComponent } from \"./o-report-new/o-report-new.component\";\nimport { OReportHomeComponent } from \"./o-report-home/o-report-home.component\";\n\nconst routes: Routes = [{\n  path: '',\n  component: OReportHomeComponent\n},{\n  path: 'new',\n  component: OReportNewComponent\n},{\n  path: ':REPORTUUID',\n  component: OReportDetailComponent\n}];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class OReportRoutingModule { }\n","/*\n * Public API Surface of ontimize-web-ngx-report\n */\nexport * from './lib/ontimize-web-ngx-report.module';\nexport * from './lib/components/index';\nexport * from './lib/services/index';\nexport * from './lib/types/index';\nexport * from './lib/interfaces/index';\n\nexport { OREPORT_PROVIDERS } from './lib/config/o-providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i5","i6","i7","i8","i9","i10","i11","i13","i15","i1","i8.OReportSkeletonComponent","i1.OAlertService","i1.ReportTranslateService","i2.OReportHomeComponent","i3.OReportNewComponent","i4.OReportDetailComponent","i5.OReportViewerComponent","i6.OReportSkeletonComponent","i7.ReportOnDemandComponent","i8.StyleDialogComponent","i9.SelectFunctionDialogComponent","i10.SavePreferencesDialogComponent","i11.ApplyConfigurationDialogComponent","i12","i14","i16"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEa,mBAAmB,CAAA;AA2B9B,IAAA,OAAO,aAAa,CAAC,IAAc,EAAE,UAAqC,EAAA;AACxE,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACxB,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;KAElD;AAED;;AAEI;AAEI,IAAA,OAAO,aAAa,CAC1B,GAAQ,EACR,UAAqC,EACrC,mBAAgD,EAAA;AAEhD,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAsB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC9E,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AAEtC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;;gBAEnG,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3F,aAAA;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;;AAEtD,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAC;AACvE,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AACxB,aAAA;AAED,YAAA,OAAO,MAAM,CAAC;SACf,EAAE,EAAE,CAAC,CAAC;KACR;AAED;;AAEG;AACH,IAAA,OAAO,aAAa,CAAC,IAA8B,EAAE,UAAqC,EAAE,mBAA+C,EAAA;AACzI,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACpF,SAAA;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;YACpD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAClE,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,OAAO,kBAAkB,CAAC,KAA+B,EAAA;AACvD,QAAA,OAAO,mBAAmB,CAAC,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;KAC1I;IAED,OAAO,kBAAkB,CAAC,KAAe,EAAA;QACvC,OAAO,mBAAmB,CAAC,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;KAC5F;IAED,OAAO,mBAAmB,CAAC,KAAe,EAAA;QACxC,OAAO,mBAAmB,CAAC,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;KAC5F;IAED,OAAO,mBAAmB,CAAC,KAA+B,EAAA;AACxD,QAAA,OAAO,mBAAmB,CAAC,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;KAE1I;;AAtFe,mBAAA,CAAA,qBAAqB,GAAG;AACtC,IAAA,aAAa,EAAE,YAAY;AAC3B,IAAA,aAAa,EAAE,mBAAmB;AAClC,IAAA,sBAAsB,EAAE,gBAAgB;AACxC,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,MAAM,EAAE,YAAY;CACrB,CAAC;AACc,mBAAA,CAAA,wBAAwB,GAAG;AACzC,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,aAAa,EAAE,4BAA4B;CAC5C,CAAC;AAEc,mBAAA,CAAA,wBAAwB,GAAG;AACzC,IAAA,qBAAqB,EAAE,MAAM;AAC7B,IAAA,4BAA4B,EAAE,aAAa;CAC5C,CAAC;AAEc,mBAAA,CAAA,qBAAqB,GAAG;AACtC,IAAA,YAAY,EAAE,aAAa;AAC3B,IAAA,mBAAmB,EAAE,aAAa;AAClC,IAAA,gBAAgB,EAAE,sBAAsB;AACxC,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,YAAY,EAAE,MAAM;CACrB;;MCpBU,sBAAsB,CAAA;AAKjC,IAAA,KAAK,CAAC,GAAsB,EAAA;;AAE1B,QAAA,IAAI,MAAA,GAAG,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,EAAE;AAClB,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvE,SAAA;AAED,QAAA,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACrB,YAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,OAAO,IAAI,uBAAuB,CAChC,GAAG,CAAC,IAAI,CAAC,IAAI,EACb,GAAG,CAAC,IAAI,CAAC,IAAI,EACb,GAAG,CAAC,IAAI,CAAC,OAAO,EAChB,GAAG,CAAC,IAAI,CAAC,QAAQ,EACjB,GAAG,CAAC,IAAI,CAAC,gBAAgB,EACzB,GAAG,CAAC,IAAI,CAAC,uBAAuB,CACjC,CAAC;KACH;AAED,IAAA,UAAU,CAAC,KAAwB,EAAA;AACjC,QAAA,OAAO,KAAK,CAAC;KACd;;oHA3BU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAtB,sBAAsB,EAAA,CAAA,CAAA;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;;ACAL,MAAO,8BAA+B,SAAQ,+BAA+B,CAAA;AAEjF,IAAA,oBAAoB,CAAC,IAAS,EAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvE,QAAA,OAAO,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;KACzC;;4HANU,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gIAA9B,8BAA8B,EAAA,CAAA,CAAA;4FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C,UAAU;;;ACIL,MAAO,cAAe,SAAQ,iBAAiB,CAAA;AAGnD,IAAA,WAAA,CAAsB,QAAkB,EAAA;QACtC,KAAK,CAAC,QAAQ,CAAC,CAAC;AADI,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAEtC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,GAAG,CAAsB,mBAAmB,CAAC,CAAC;QAClF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;KACjF;IAEM,gBAAgB,GAAA;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;KAC1D;AAEM,IAAA,YAAY,CAAC,YAA0B,EAAA;QAE5C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CACzB,YAAY,CACb,CAAA;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,uBAAuB,CAAC;QAEnD,OAAO,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC,CAAC;KACJ;AAGM,IAAA,YAAY,CAAC,cAAuB,EAAA;QAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CACzB,cAAc,CACf,CAAA;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,8BAA8B,CAAC;QAE1D,OAAO,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC,CAAC;KACJ;;4GAzCU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAd,cAAc,EAAA,CAAA,CAAA;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;MCDE,qBAAqB,GAAG,IAAI,cAAc,CAAsB,sBAAsB,EAAE;MAGxF,8BAA8B,CAAA;AAKzC,IAAA,WAAA,CACS,QAAkB,EAAA;AAAlB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAEzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAY,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAoB,iBAAiB,CAAC,CAAC;QAChF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;KACxD;AAEM,IAAA,8BAA8B,CAAC,WAAoB,EAAA;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;QAC/D,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,WAAW,IAAI,aAAa,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;AAC5D,YAAA,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;AACzC,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;AAED,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QAClC,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,MAAM,GAAG,EAAE,CAAC;AAEhB,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,0BAA0B,EAAE,CAAC;;AAEvD,QAAA,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC,EAAE;AAC5F,YAAA,WAAW,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC;AACxE,SAAA;AAAM,aAAA,IAAI,WAAW,EAAE;AACtB,YAAA,WAAW,CAAC,qBAAqB,CAAC,qBAAqB,CAAC;AACtD,gBAAA,qBAAqB,CAAC,sBAAsB,CAAC,WAAW,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,EAAE,WAAW,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACrJ,SAAA;AAED,QAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;QACrD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAE5D,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,0BAA0B,CAAC,GAAG,KAAK,CAAC,0BAA0B,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACzI,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;AAChH,QAAA,IAAI,WAAW,GAAG,eAAe,IAAI,iBAAiB,CAAC;QACvD,IAAI,eAAe,IAAI,iBAAiB,EAAE;AACxC,YAAA,WAAW,GAAG,qBAAqB,CAAC,sBAAsB,CAAC,eAAe,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9H,SAAA;AAED,QAAA,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC,EAAE;AACtF,YAAA,MAAM,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC;AAClE,SAAA;AAAM,aAAA,IAAI,WAAW,EAAE;AACtB,YAAA,MAAM,CAAC,qBAAqB,CAAC,oBAAoB,CAAC;AAChD,gBAAA,qBAAqB,CAAC,sBAAsB,CAAC,MAAM,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC/I,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KAEf;AAED,IAAA,cAAc,CAAC,OAAe,EAAA;QAC5B,MAAM,oBAAoB,GAAG,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;AAC1E,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,oBAAoB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;YACtF,OAAO,oBAAoB,CAAC,IAAI,CAAC;AAClC,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,sBAAsB,CAAC,iBAAqC,EAAE,KAAiB,EAAA;AAE7E,QAAA,IAAI,mBAAiC,CAAC;QAEtC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAEnE,QAAA,IAAI,OAAO,GAAqB;YAC9B,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxG,YAAA,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE;AAC7B,YAAA,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACtC,YAAA,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;YACjE,QAAQ,EAAE,KAAK,CAAC,SAAS;SAE1B,CAAC;AAEF,QAAA,mBAAmB,GAAG;YACpB,OAAO,EAAE,iBAAiB,CAAC,KAAK;YAChC,QAAQ,EAAE,iBAAiB,CAAC,MAAM;YAClC,QAAQ,EAAE,iBAAiB,CAAC,MAAM;AAClC,YAAA,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,iBAAiB,CAAC,OAAO;YACpC,UAAU,EAAE,iBAAiB,CAAC,QAAQ;YACtC,WAAW,EAAE,iBAAiB,CAAC,SAAS;YACxC,OAAO,EAAE,iBAAiB,CAAC,KAAK;YAChC,UAAU,EAAE,iBAAiB,CAAC,QAAQ;YACtC,SAAS,EAAE,iBAAiB,CAAC,OAAO;YACpC,SAAS,EAAE,iBAAiB,CAAC,OAAO;YACpC,UAAU,EAAE,IAAI,CAAC,QAAQ;AACzB,YAAA,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,KAAK,CAAC,QAAQ;SAE3B,CAAA;AAED,QAAA,OAAO,mBAAmB,CAAC;KAC5B;;4HAlGU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gIAA9B,8BAA8B,EAAA,CAAA,CAAA;4FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C,UAAU;;;ACHL,MAAO,0BAA2B,SAAQ,8BAA8B,CAAA;AAE5E,IAAA,WAAA,CACS,QAAkB,EAAA;QAEzB,KAAK,CAAC,QAAQ,CAAC,CAAA;AAFR,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAG1B;;wHANU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4HAA1B,0BAA0B,EAAA,CAAA,CAAA;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;;MCaE,yBAAyB,CAAA;AAYpC,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG;YACX,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK;SACpJ,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KAEnB;AACF;;MC5CY,SAAS,CAAA;;AACN,SAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;AAC7B,SAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;AAC9B,SAA0B,CAAA,0BAAA,GAAG,EAAE,CAAC;AAChC,SAA8B,CAAA,8BAAA,GAAgC,MAAM,CAAC;AACrE,SAAuB,CAAA,uBAAA,GAAoB,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;;MCHpF,KAAK,CAAA;AAChB,IAAA,OAAO,mBAAmB,CAAC,UAAmB,EAAE,SAAc,EAAA;QAC5D,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,SAAA;AAAM,aAAA;YACL,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,oBAAoB,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;AACvF,SAAA;KACF;IACD,OAAO,WAAW,CAAC,IAAY,EAAA;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;KACzC;AAED,IAAA,OAAO,cAAc,CAAC,MAAiB,EAAE,SAAc,EAAE,IAAY,EAAA;AACnE,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;AACrB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,SAAS,EAAE,OAAO;YAClB,MAAM,EAAE,SAAS,CAAC,qBAAqB;YACvC,KAAK,EAAE,SAAS,CAAC,oBAAoB;AACrC,YAAA,UAAU,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,CAAC;AAC5D,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC,CAAC;KACJ;AACF;;MCTY,iCAAiC,CAAA;AAU5C,IAAA,WAAA,CACS,OAAwD,EACrD,QAAkB,EACgB,IAAS,EAAA;AAF9C,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiD;AACrD,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AACgB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;AAThD,QAAA,IAAqB,CAAA,qBAAA,GAAkB,EAAE,CAAC;AAIvC,QAAA,IAAA,CAAA,uBAAuB,GAAiB,IAAI,YAAY,EAAE,CAAC;QAOnE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACtD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9G,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IACD,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,IAAI,cAAc,CAAgB,KAAK,CAAC,CAAC;KACnF;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;KAChD;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,2CAA2C,CAAC,CAAC,IAAI,CAAC,MAAM,IAAG;AAC/F,YAAA,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACjI,oBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;wBACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,qBAAA;iBACF,CAAC,CAAC,CAAC;AACL,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AACD,IAAA,wBAAwB,CAAC,MAAM,EAAA;AAC7B,QAAA,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;KACrC;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACrI,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAA;SACF,CAAC,CAAC,CAAC;KACL;AAED,IAAA,YAAY,CAAC,IAAS,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACnC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAA;AAChC,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;AAC5C,SAAA;KAEF;;AAhEU,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iCAAiC,sEAatB,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAb1B,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,EALjC,QAAA,EAAA,4BAAA,EAAA,SAAA,EAAA;AACT,QAAA,EAAE,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;KACjG,EAIU,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,gBAAgB,8DCjB7B,g3CAsBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EAAAC,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gNAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDNa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAR7C,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAE3B,SAAA,EAAA;AACT,wBAAA,EAAE,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;AACjG,qBAAA,EAAA,QAAA,EAAA,g3CAAA,EAAA,CAAA;;;8BAgBE,QAAQ;;8BAAI,MAAM;+BAAC,eAAe,CAAA;;yBAX3B,iBAAiB,EAAA,CAAA;sBAD1B,SAAS;gBAAC,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AEPzC,MAAO,8BAA+B,SAAQ,qBAAqB,CAAA;IAWvE,WACS,CAAA,OAAqD,EAClD,QAAkB,EAAA;QAC5B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAFT,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8C;AAClD,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AATvB,QAAA,IAAS,CAAA,SAAA,GAAqB,IAAI,gBAAgB,CAAC;AACxD,YAAA,IAAI,EAAE,IAAI,kBAAkB,CAAC,EAAE,EAAE;AAC/B,gBAAA,UAAU,CAAC,QAAQ;aACpB,CAAC;AACF,YAAA,WAAW,EAAE,IAAI,kBAAkB,CAAC,EAAE,CAAC;AACxC,SAAA,CAAC,CAAC;AAMD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;KACjD;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;KAC5E;;4HApBU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,0FCV3C,04CAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDfa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,04CAAA,EAAA,CAAA;;;MEG5B,6BAA6B,CAAA;IAOxC,WACS,CAAA,OAAoD,EACf,cAA+B,EAAA;AADpE,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAA6C;AACf,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAiB;QAPtE,IAAA,CAAA,SAAS,GAAoC;AAClD,YAAA,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE;AAClD,YAAA,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,4BAA4B,EAAE;AACtD,YAAA,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE;AAClD,YAAA,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE;SAAC,CAAC;AAIpD,QAAA,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC,IAAI,CAAC;KAC7C;IAEM,IAAI,GAAA;QACT,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;KACjG;;AAfU,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,8CASlB,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAT1B,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,kECT1C,u7BAmBA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,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,EAAAC,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDVa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;+BACE,4BAA4B,EAAA,QAAA,EAAA,u7BAAA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,CAAA;;;8BAanC,QAAQ;;8BAAI,MAAM;+BAAC,eAAe,CAAA;;;;MEP1B,oBAAoB,CAAA;IAU/B,WACqB,CAAA,OAA2C,EAClB,IAAmB,EAAA;AAD5C,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoC;AAClB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAe;QAR1D,IAAA,CAAA,aAAa,GAAG;AACrB,YAAA,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE;AAC/C,YAAA,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE;AACnD,YAAA,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE;SAClD,CAAA;QAMC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAE5C,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YACzF,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC,0BAA0B,CAAC;AAC5E,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YAC7F,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC,8BAA8B,CAAC;AACpF,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AAClC,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,0BAA0B,EAAE,SAAS,EAAE,SAAS,CAAC,8BAA8B,EAAE,CAAA;AACrI,SAAA;KACF;IAED,OAAO,GAAA;QACL,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACvC;;AA7BU,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,8DAYT,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAZ1B,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,wDCXjC,yjEAmCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,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,EAAAC,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gNAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDxBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,yjEAAA,EAAA,CAAA;;;8BAczB,QAAQ;;8BACR,QAAQ;;8BAAI,MAAM;+BAAC,eAAe,CAAA;;;;MEwB1B,uBAAuB,CAAA;AAsDlC,IAAA,WAAA,CACS,QAAkB,EAClB,SAAgD,EACvB,IAAgB,EACxC,iBAAoC,EAAA;AAHrC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAClB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAuC;AACvB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AACxC,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAnDvC,IAAY,CAAA,YAAA,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACzF,QAAA,IAAa,CAAA,aAAA,GAAsB,EAAE,CAAC;AACrC,QAAA,IAAoB,CAAA,oBAAA,GAAsB,EAAE,CAAC;AAC9C,QAAA,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;AACtC,QAAA,IAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;QAEvB,IAAA,CAAA,WAAW,GAAG;AACnB,YAAA,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;AACpC,YAAA,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE;AAC/C,YAAA,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE;AACnD,YAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,qBAAqB,EAAE;AAClE,YAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE;AACzD,YAAA,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE;AAClD,YAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,kBAAkB,EAAE;SAC9D,CAAC;AAMK,QAAA,IAAc,CAAA,cAAA,GAA0B,EAAE,CAAC;AAC3C,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAItB,QAAA,IAAa,CAAA,aAAA,GAAY,IAAI,CAAC;AAC9B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAKzB,QAAA,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;AAE3B,QAAA,IAAQ,CAAA,QAAA,GAAW,0oDAA0oD,CAAC;QAoBpqD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAoB,iBAAiB,CAAC,CAAC;QAChF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAkB,eAAe,CAAC,CAAC;QAC3E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAiB,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAgB,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAY,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAA6B,0BAA0B,CAAC,CAAC;KAErG;IAEM,yBAAyB,GAAA;QAC9B,IAAI,oBAAoB,GAA0B,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACzL,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;KAC7E;IAEM,sBAAsB,GAAA;QAC3B,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;KACtI;IAGD,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAES,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACpD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,YAAY,CAAC;AACnD,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;QACtD,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;AAEM,IAAA,8BAA8B,CAAC,WAAoB,EAAA;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;QAC/D,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,WAAW,IAAI,aAAa,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;AAC5D,YAAA,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;AACzC,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAEM,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAEM,uBAAuB,GAAA;QAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAChC,SAAA;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAC/B,SAAA;QACD,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AAClC,SAAA;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAChC,SAAA;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAES,2BAA2B,GAAA;AACnC;AACoB;QACpB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,yBAAyB,EAAE,CAAC;QACzD,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAClD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;KACrD;IAES,mBAAmB,GAAA;AAC3B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CACxL,CAAC,CAAU,KAAI;YACb,OAAO,CAAC,CAAC,IAAI,CAAC;AAChB,SAAC,CACF,CAAA;KACF;IAES,iBAAiB,GAAA;AACzB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CACxL,CAAC,CAAU,KAAI;AACb,YAAA,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACvC,SAAC,CACF,CAAA;KACF;AAES,IAAA,iBAAiB,CAAC,OAAc,EAAA;AACxC,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;AAC1B,YAAA,IAAI,YAAY,GAAkB;AAChC,gBAAA,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;aACvH,CAAC;YACF,IAAI,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACnD,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACrE,gBAAA,YAAY,CAAC,WAAW,GAAG,WAAW,CAAC;AACxC,aAAA;AACD,YAAA,OAAO,YAAY,CAAC;AACtB,SAAC,CAAC,CAAC;KACJ;AAES,IAAA,gBAAgB,CAAC,MAAc,EAAA;QACvC,IAAI,WAAW,GAAuB,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC7C,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC7D,YAAA,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,SAAA;AACD,QAAA,OAAO,WAAW,CAAC;KACpB;AAES,IAAA,mBAAmB,CAAC,cAAmB,EAAA;AAC/C,QAAA,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,IAAG;AACjC,YAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAA;AAC5F,SAAC,CAAC,CAAC;KACJ;IAKS,UAAU,GAAA;AAClB,QAAA,MAAM,mBAAmB,GAAiB,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;AAC5H,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACnE,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC5C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC3B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM;YACrE,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACrJ,SAAA,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACjB,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;AAC5C,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC3E,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnE,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,yBAAyB,CAAC,WAA8B,EAAA;QACtD,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,IAC9B,IAAI,CAAC,WAAW;AACd,YAAA,SAAS,CAAC,UAAU,IAClB,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC,QAAQ,IAAI,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC,UAAU,CACvJ,KAAK,CAAC,CAAC,CACX,CAAC;KACH;AAED;;AAEG;IACK,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpK,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,UAAU,IAAI,UAAU,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClL,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1L,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC7K;AAED,IAAA,kBAAkB,CAAC,aAAkB,EAAA;QACnC,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC;QAC1C,IAAI,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC5F,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;AACtF,SAAA;QACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAqB,KAAK,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzH,IAAI,CAAC,mBAAmB,EAAE,CAAC;;AAE3B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAA6B,KAAI;YAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC;AACxG,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,gBAAA,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAClE,aAAA;AACD,YAAA,OAAO,YAAY,CAAA;AACrB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAgB,EAAE,CAAgB,KAAI;YAC3D,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1E,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3C,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,CAAiB,KAAI;YAChE,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;YACtF,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;YACtF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3C,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,CAAS,KAAI;AACpD,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;KAEJ;IAEO,YAAY,CAAC,MAAc,EAAE,MAAc,EAAA;AACjD,QAAA,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE;AACjB,YAAA,OAAO,CAAC,CAAC;AACV,SAAA;AACD,QAAA,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE;AACjB,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;AAAM,aAAA;YACL,OAAO,MAAM,GAAG,MAAM,CAAC;AACxB,SAAA;KAEF;IAED,qBAAqB,CAAC,KAAY,EAAE,EAAU,EAAA;QAC5C,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,MAAM,UAAU,GAAkB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC5H,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,MAAM;iBACR,IAAI,CAAC,oBAAoB,EAAE;AAC1B,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,UAAU,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;aACjD,CAAC;AACD,iBAAA,WAAW,EAAE;AACb,iBAAA,SAAS,CAAC,CAAC,IAAmB,KAAI;gBACjC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;oBAChC,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACvC,oBAAA,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC;AACjD,iBAAA;AACH,aAAC,CAAC,CAAC;AACN,SAAA;KACF;AAED,IAAA,kCAAkC,CAAC,IAAmB,EAAA;AAGpD,QAAA,IAAI,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,EAAE,CAAC;QACpC,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1E,QAAA,IAAI,eAAe,GAAG,CAAC,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;AAC1C,SAAA;AACD,QAAA,MAAM,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AACtE,QAAA,IAAI,oBAAoB,GAAG,CAAC,CAAC,EAAE;AAC7B,YAAA,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,OAAO,CAAC;KAE1C;IAGD,cAAc,CAAC,KAAK,EAAE,cAA+B,EAAA;QACnD,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,cAAc,CAAC,UAAU,IAAI,OAAO,EAAE;AACxC,YAAA,IAAI,CAAC,MAAM;iBACR,IAAI,CAAC,6BAA6B,EAAE;AACnC,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,UAAU,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;aACjD,CAAC;AACD,iBAAA,WAAW,EAAE;AACb,iBAAA,SAAS,CAAC,CAAC,IAAS,KAAI;;AAEvB,gBAAA,IAAI,IAAI,EAAE;AACR,oBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC/B,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAClC,iBAAA;AACH,aAAC,CAAC,CAAC;AACN,SAAA;KACF;AAEO,IAAA,mBAAmB,CAAC,IAAqB,EAAA;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;AAClF,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAClC,SAAA;KACF;AAEO,IAAA,qBAAqB,CAAC,gBAAiC,EAAA;AAC7D,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,CAAS,KAAI;AAChE,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,gBAAgB,CAAC,UAAU,EAAE;gBACnD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC5C,aAAA;AACH,SAAC,CAAC,CAAA;KACH;IAED,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM;aACR,IAAI,CAAC,8BAA8B,EAAE;AACpC,YAAA,UAAU,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;SACjD,CAAC;AACD,aAAA,WAAW,EAAE;AACb,aAAA,SAAS,CAAC,CAAC,IAA2C,KAAI;YACzD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;AAChC,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC5B,aAAA;AACH,SAAC,CAAC,CAAC;KAEN;AAED,IAAA,WAAW,CAAC,KAA4B,EAAA;AACtC,QAAA,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3E,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED,IAAA,UAAU,CAAC,KAAyB,EAAA;AAClC,QAAA,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAA;QACjF,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;AAED,IAAA,kBAAkB,CAAC,KAA4B,EAAA;AAC7C,QAAA,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAC9E,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAgB,EAAE,CAAgB,KAAI;YACzE,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5D,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;IAED,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,CAAiB,KAAI;YAC3E,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC3E,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC3E,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;IAED,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,CAAS,KAAI;AAC1D,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;IAEM,2BAA2B,GAAA;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;AAClD,YAAA,KAAK,EAAE,4BAA4B;AACnC,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,UAAU,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AAChD,YAAA,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;SACzF,CAAC,CAAC,WAAW,EAAE;AACb,aAAA,SAAS,CAAC,CAAC,IAAiB,KAAI;YAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;AAChC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9B,gBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC3B,aAAA;SACF,EAAE,MAAM,IAAG;AACV,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AACpC,SAAC,CAAC,CAAC;KACN;IAED,mBAAmB,GAAA;QACjB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE;YAC1D,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9I,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,MAAM;iBACR,IAAI,CAAC,8BAA8B,EAAE;AACpC,gBAAA,UAAU,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;aACjD,CAAC;AACD,iBAAA,WAAW,EAAE;AACb,iBAAA,SAAS,CAAC,CAAC,IAA2C,KAAI;gBACzD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;AAChC,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClC,iBAAA;AACH,aAAC,CAAC,CAAC;AACN,SAAA;KAEF;IAED,eAAe,CAAC,IAAS,EAAE,MAAgB,EAAA;AACzC,QAAA,IAAI,UAAU,GAA2B;YACvC,gBAAgB,EAAE,IAAI,CAAC,IAAI;YAC3B,uBAAuB,EAAE,IAAI,CAAC,WAAW;AACzC,YAAA,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM;AACjD,YAAA,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO;AACnD,YAAA,gBAAgB,EAAE,QAAQ;AAC1B,YAAA,sBAAsB,EAAE;AACtB,gBAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM;gBAC9E,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK;AACjI,gBAAA,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ;AAC3C,gBAAA,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO;AACzC,gBAAA,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO;AACzC,gBAAA,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM;AACvC,gBAAA,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO;AAC1C,aAAA;SACF,CAAA;AAED,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACzG,gBAAA,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC;AAC1C,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,SAAS,CAAE,GAAG,IAAG;AACpE,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;AACzB,oBAAA,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC;AACzC,iBAAA;aACF,EAAE,KAAK,IAAG;gBACT,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3C,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAEO,IAAA,6BAA6B,CAAC,GAAQ,EAAA;AAC5C,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;AACvE,SAAA;KACF;IAED,mBAAmB,GAAA;QACjB,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;KACpC;AAED,IAAA,wBAAwB,CAAC,KAA6B,EAAA;QACpD,MAAM,cAAc,GAAkB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7D,QAAA,MAAM,cAAc,GAAG,cAAc,CAAC,EAAE,CAAC;AACzC,QAAA,MAAM,gBAAgB,GAAG,cAAc,CAAC,IAAI,CAAC;QAC7C,IAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACvE,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAE3B;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;KAClE;AACD,IAAA,uBAAuB,CAAC,KAA6B,EAAA;QACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;YAAE,OAAO;QACvC,IAAI,aAAa,GAAW,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACnD,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC;QAChF,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACvE,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;YAC3B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9E,YAAA,MAAM,mBAAmB,GAAoB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAA;AAClH,YAAA,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,aAAA;AACF,SAAA;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAGD,IAAA,wBAAwB,CAAC,QAAgB,EAAE,UAAkB,EAAE,KAA8B,EAAA;QAE3F,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,QAAQ,CAAC,CAAC;AACzE,YAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;gBACtB,OAAO,CAAC,IAAI,CAAC,0CAA0C,GAAG,QAAQ,GAAG,8DAA8D,CAAC,CAAC;gBACrI,OAAO;AACR,aAAA;AACF,SAAA;AAED,QAAA,MAAM,qBAAqB,GAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;AAC7G,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,CAAC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;AACpD,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACjD,aAAA;AACF,SAAA;AACI,aAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,SAAA;KAEF;AAGD,IAAA,aAAa,CAAC,cAAc,EAAA;;QAE1B,IAAI,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAClE,QAAA,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED,IAAA,0BAA0B,CAAC,KAA6B,EAAA;QACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO;YAAE,OAAO;QACxF,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9C,QAAA,MAAM,qBAAqB,GAAG,cAAc,CAAC,UAAU,CAAC;AAExD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;YAC3B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;AACtF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,qBAAqB,CAAC,CAAC;AAC1E,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC5B,SAAA;KACF;IAGD,WAAW,CAAC,MAAsB,EAAE,KAAK,EAAA;QACvC,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5F,QAAA,IAAI,qBAAqB,EAAE;AACzB,YAAA,qBAAqB,CAAC,SAAS,GAAG,CAAC,qBAAqB,CAAC,SAAS,CAAC;AACpE,SAAA;QACD,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;AAED,IAAA,eAAe,CAAC,MAAqB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;KACtI;AAED,IAAA,iBAAiB,CAAC,MAAuB,EAAA;QACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;KAC5M;IAED,6BAA6B,CAAC,GAAmB,EAAE,GAAmB,EAAA;AACpE,QAAA,OAAO,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC;KACtC;AAED,IAAA,oBAAoB,CAAC,KAAK,EAAA;QACxB,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC7C,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAC5C,SAAA;KACF;IAED,sBAAsB,CAAC,GAAkB,EAAE,GAAkB,EAAA;AAC3D,QAAA,OAAO,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;KAC1B;IAED,wBAAwB,CAAC,GAAoB,EAAE,GAAoB,EAAA;AACjE,QAAA,OAAO,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,CAAC;KAC1C;AAIS,IAAA,cAAc,CAAC,MAAc,EAAA;QACrC,IAAI,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;AACrF,QAAA,IAAI,WAAgB,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;AACxF,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,WAAW,GAAG,EAAE,CAAC;AAEjB,YAAA,IAAI,cAAc,GAAQ,OAAO,CAAC,QAAQ,CAAC;AAC3C,YAAA,QAAQ,IAAI;AACV,gBAAA,KAAK,SAAS;AACZ,oBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,oBAAA,WAAW,CAAC,UAAU,GAAG,QAAQ,CAAC;oBAClC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;oBAC7E,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;oBAC/E,MAAM;AACR,gBAAA,KAAK,UAAU;AACb,oBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA;AACvB,oBAAA,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC;AAC3D,oBAAA,WAAW,CAAC,sBAAsB,GAAG,cAAc,CAAC,sBAAsB,CAAC;oBAC3E,MAAM;AACR,gBAAA,KAAK,MAAM;AACT,oBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA;AACvB,oBAAA,WAAW,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;oBAC3C,MAAM;AACR,gBAAA,KAAK,SAAS;AACZ,oBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA;AACvB,oBAAA,WAAW,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;AAC/C,oBAAA,WAAW,CAAC,iBAAiB,GAAG,cAAc,CAAC,iBAAiB,CAAC;oBACjE,MAAM;AACR,gBAAA,KAAK,MAAM;AACT,oBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA;AACvB,oBAAA,WAAW,CAAC,gBAAgB,GAAG,cAAc,CAAC,gBAAgB,CAAC;AAC/D,oBAAA,WAAW,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;AAC/C,oBAAA,WAAW,CAAC,iBAAiB,GAAG,cAAc,CAAC,iBAAiB,CAAC;oBACjE,MAAM;AACR,gBAAA,KAAK,SAAS;AACZ,oBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA;AACvB,oBAAA,WAAW,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;AAC3C,oBAAA,WAAW,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;AAC7C,oBAAA,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;oBACrC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC9D,oBAAA,WAAW,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;oBACrD,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;oBACpE,MAAM,oBAAoB,GAAG,IAAI,CAAC,8BAA8B,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACzF,oBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE;AAC3F,wBAAA,WAAW,CAAC,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC;AAC9C,qBAAA;oBACD,MAAM;AACT,aAAA;AACF,SAAA;AACD,QAAA,OAAO,WAAW,CAAC;KACpB;;AAjpBU,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,sEAyDxB,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAzDd,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EARvB,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA,EAAE,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;KACjG,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzCH,mpXA0MA,EAAA,MAAA,EAAA,CAAA,20HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gNAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,KAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FD3Ja,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAbnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAGf,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA;AACT,wBAAA,EAAE,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;AACjG,qBAAA,EACK,IAAA,EAAA;AACJ,wBAAA,4BAA4B,EAAE,MAAM;qBACrC,EAAA,QAAA,EAAA,mpXAAA,EAAA,MAAA,EAAA,CAAA,20HAAA,CAAA,EAAA,CAAA;;;8BA4DE,MAAM;+BAAC,eAAe,CAAA;;yBAvDoB,WAAW,EAAA,CAAA;sBAAvD,SAAS;gBAAC,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACC,UAAU,EAAA,CAAA;sBAArD,SAAS;gBAAC,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACK,aAAa,EAAA,CAAA;sBAA3D,SAAS;gBAAC,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACA,WAAW,EAAA,CAAA;sBAAvD,SAAS;gBAAC,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;ME3ChC,qBAAqB,CAAA;AAIhC,IAAA,WAAA,CACU,QAAkB,EAAA;AAAlB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAE1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAgB,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAY,SAAS,CAAC,CAAC;KACvD;AAED,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QAClC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;KACnE;;mHAbU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uHAArB,qBAAqB,EAAA,CAAA,CAAA;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;;MCEE,wBAAwB,CAAA;;sHAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,sHCVrC,2vKAwKA,EAAA,MAAA,EAAA,CAAA,gTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD9Ja,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAGvB,IAAA,EAAA;AACJ,wBAAA,2BAA2B,EAAE,MAAM;qBACpC,EAAA,QAAA,EAAA,2vKAAA,EAAA,MAAA,EAAA,CAAA,gTAAA,CAAA,EAAA,CAAA;;;MEQU,sBAAsB,CAAA;IAUjC,WACS,CAAA,SAA+C,EAC9C,kBAAuC,EACrC,aAA4B,EACN,IAAS,EAAU,iBAAoC,EAAA;AAHhF,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsC;AAC9C,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAqB;AACrC,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AACN,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;AAAU,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAXjF,QAAA,IAAQ,CAAA,QAAA,GAAW,0oDAA0oD,CAAC;AAE/pD,QAAA,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;AACV,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAE5B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAOjC,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;AAEzB,QAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC,CAAC;AAChH,QAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;QAE3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,gBAAgB,GAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AACzG,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,CAAE,CAAC,SAAS,CACrF,GAAG,IAAG;AACJ,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC5C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,aAAA;SACF,EACD,GAAG,IAAG;YACJ,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAC9B,sBAAsB,CAAC,CAAC;AAC3B,aAAA;AACD,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,SAAC,CACF,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;KACvD;IACD,mBAAmB,GAAA;QACjB,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;KACpC;;AA3CU,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,6GAcvB,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAdd,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,kHChBnC,qgCAgBA,EAAA,MAAA,EAAA,CAAA,yjCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,KAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDAa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGZ,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACJ,wBAAA,yBAAyB,EAAE,MAAM;qBAClC,EAAA,QAAA,EAAA,qgCAAA,EAAA,MAAA,EAAA,CAAA,yjCAAA,CAAA,EAAA,CAAA;;;8BAgBE,MAAM;+BAAC,eAAe,CAAA;;;;AEhBrB,MAAO,mBAAoB,SAAQ,cAAc,CAAA;AAKrD,IAAA,WAAA,CACY,QAAkB,EAAA;QAE5B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAFN,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAHrB,QAAA,IAAY,CAAA,YAAA,GAAG,cAAc,CAAC;QAMrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAgB,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAY,SAAS,CAAC,CAAC;KACvD;AAED,IAAA,gBAAgB,CAAC,MAAW,EAAA;AAC1B,QAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC;KAC9C;AAEM,IAAA,KAAK,CAAC,EAAW,EAAE,GAAmB,EAAE,MAAe,EAAE,SAAkB,EAAA;AAChF,QAAA,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;QACpC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA,YAAA,CAAc,CAAC;AACjD,SAAA;AAAM,aAAA;AACL,YAAA,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,WAAA,CAAa,GAAG,UAAU,CAAC;AAC7D,SAAA;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,GAAG,EAAE,GAAG;AACT,SAAA,CAAC,CAAC;KACJ;AAGM,IAAA,aAAa,CAAC,GAAY,EAAE,GAAmB,EAAE,MAAe,EAAE,SAAkB,EAAE,MAAe,EAAE,SAAkB,EAAE,QAAwB,EAAA;AACxJ,QAAA,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;QAGzD,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC1B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACpC,SAAA;AAED,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,GAAG,eAAe,GAAG,QAAQ,GAAG,IAAI,CAAC;QAEtF,OAAO,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,GAAG,EAAE,GAAG;AACT,SAAA,CAAC,CAAC;KACJ;AAEM,IAAA,MAAM,CAAC,EAAW,EAAE,OAAgB,EAAE,SAAkB,EAAA;AAC7D,QAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,QAAA,IAAI,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAG,EAAA,IAAI,CAAC,IAAI,CAAgB,cAAA,CAAA,GAAG,UAAU,CAAC;QAEnE,OAAO,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,GAAG,EAAE,GAAG;AACT,SAAA,CAAC,CAAC;KACJ;AAEM,IAAA,MAAM,CAAC,EAAW,EAAE,EAAQ,EAAE,OAAgB,EAAE,SAAkB,EAAA;AACvE,QAAA,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;AACtB,QAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,QAAA,IAAI,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAG,EAAA,IAAI,CAAC,IAAI,CAAgB,cAAA,CAAA,GAAG,UAAU,CAAC;AACnE,QAAA,EAAE,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,IAAI,EAAE,EAAE;AACT,SAAA,CAAC,CAAC;KACJ;AAEM,IAAA,UAAU,CAAC,IAAY,EAAE,gBAAmC,EAAE,MAAe,EAAE,SAAkB,EAAA;QACtG,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAA,IAAI,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,CAAI,CAAA,EAAA,MAAM,CAAG,CAAA,CAAA,GAAG,IAAI,CAAC;QAE1D,OAAO,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,cAAc,CAAC,IAAY,EAAE,gBAAkD,GAAA,EAAE,EAAE,MAAA,GAA2B,EAAE,MAAM,EAAE,EAAE,EAAE,EAAA;QAC1H,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,SAAS,CAC7C,GAAG,IAAG;AACJ,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC5C,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAE5B,gBAAA,MAAM,gBAAgB,GAAsB;AAC1C,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,UAAU,EAAE,gBAAgB;iBAC7B,CAAA;AACD,gBAAA,MAAM,IAAI,GAAG;AACX,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,OAAO,EAAE,gBAAgB;iBAC1B,CAAC;gBACF,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAA;AAEhE,aAAA;SACF,EACD,GAAG,IAAG;YACJ,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAC9B,sBAAsB,CAAC,CAAC;AAC3B,aAAA;AACD,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,SAAC,CACF,CAAC;KAEH;AAED,IAAA,MAAM,CAAC,KAAY,EAAE,MAAc,EAAE,IAAa,EAAA;AAChD,QAAA,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,QAAQ,IAAG;YAE/C,IAAI,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,UAAA,CAAY,CAAC;AAElD,YAAA,MAAM,QAAQ,GAAQ,IAAI,QAAQ,EAAE,CAAC;AACrC,YAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;gBACnB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,aAAA;YAED,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE;AACrD,gBAAA,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAClC,gBAAA,cAAc,EAAE,IAAI;AACrB,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAChD,gBAAA,IAAI,aAAa,CAAC,cAAc,KAAK,IAAI,CAAC,IAAI,EAAE;;AAE9C,oBAAA,MAAM,YAAY,GAAG;wBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;qBAClB,CAAC;AACF,oBAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC7B,iBAAA;AAAM,qBAAA,IAAI,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE;;oBAE/C,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,wBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,qBAAA;AAAM,yBAAA;AACL,wBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,qBAAA;AACF,iBAAA;aACF,EAAE,KAAK,IAAG;AACT,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;AACxB,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AAC3B,iBAAA;AAAM,qBAAA;AACL,oBAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvB,iBAAA;aACF,EACC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACrC;IAES,kBAAkB,GAAA;QAC1B,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,6BAA6B,EAAE,GAAG,EAAE,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC;AACvD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YAC7B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;AAClE,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;IAES,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAA;QAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AAC3B,SAAA;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAClC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACtC,SAAA;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;;AAElC,YAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA;;AAEL,YAAA,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACvC,SAAA;KACF;;iHA7LU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAAnB,mBAAmB,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;MCTE,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;;AAIU,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAU,CAAC;;QAG5C,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KAO1C;;AAJC,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;;2GAXU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAb,aAAa,EAAA,CAAA,CAAA;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;MCME,oBAAoB,CAAA;IAM/B,WAAoB,CAAA,YAA2B,EACnC,QAAkB,EAAA;AADV,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAe;AACnC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAC5B,QAAA,YAAY,CAAC,MAAM,CAAC,SAAS,CAC3B,IAAI,IAAG;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACvB,SAAC,CAAC,CAAC;QACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KAC/C;IAED,2BAA2B,GAAA;AACzB,QAAA,IAAI,aAAoC,CAAC;AACzC,QAAA,aAAa,GAAG;YACd,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI;SACrI,CAAC;AAEF,QAAA,OAAO,aAAa,CAAC;KACtB;;kHAtBU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,mKCTjC,uoCAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gNAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,+BAAA,EAAA,WAAA,EAAA,iCAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,8BAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,yBAAA,EAAA,gCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,4BAAA,EAAA,OAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,YAAA,EAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,SAAA,EAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,mCAAA,EAAA,cAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDNa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,uoCAAA,EAAA,CAAA;wHAMzB,KAAK,EAAA,CAAA;sBADJ,SAAS;gBAAC,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEIzB,mBAAmB,CAAA;AAiB9B,IAAA,WAAA,CACU,YAA2B,EAC3B,aAA4B,EAC1B,QAAkB,EAAA;AAFpB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAe;AAC3B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC1B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAN9B,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QAQvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KAC/C;IAED,WAAW,GAAA;QACT,OAAO;AACL,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAA,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;SAC3C,CAAC;KACH;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC;KAC3C;IAED,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAC9B,sBAAsB,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,SAAA;KACF;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC1C;AAED,IAAA,WAAW,CAAC,CAAQ,EAAA;AAClB,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAC5D,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;AACxD,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAC;YACpE,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;KAC5B;IAED,2BAA2B,GAAA;QACzB,IAAI,aAAa,GAA0B,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AACrK,QAAA,OAAO,aAAa,CAAC;KACtB;;iHAnEU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAa,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,kmBCfhC,ymDAyBA,EAAA,MAAA,EAAA,CAAA,2TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gNAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,+BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDVa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAGT,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACJ,wBAAA,8BAA8B,EAAE,MAAM;qBACvC,EAAA,QAAA,EAAA,ymDAAA,EAAA,MAAA,EAAA,CAAA,2TAAA,CAAA,EAAA,CAAA;sJAKD,IAAI,EAAA,CAAA;sBADH,SAAS;gBAAC,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAGnC,IAAI,EAAA,CAAA;sBADH,SAAS;gBAAC,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAGnC,WAAW,EAAA,CAAA;sBADV,SAAS;gBAAC,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAG1C,IAAI,EAAA,CAAA;sBADH,SAAS;gBAAC,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAGnC,IAAI,EAAA,CAAA;sBADH,SAAS;gBAAC,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEQxB,sBAAsB,CAAA;AA8BjC,IAAA,WAAA,CACY,aAA4B,EAC5B,MAAiB,EACjB,QAAkB,EAAA;AAFlB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC5B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AACjB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AA3BvB,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAGxB,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAEpE,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;AAKzB,QAAA,IAAI,CAAA,IAAA,GAAQ,EAAE,CAAA;QAmBZ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KAC/C;IAED,IAA+C,OAAO,CAAC,OAAuB,EAAA;QAC5E,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;KACF;IAES,cAAc,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,SAAS,EAAE;AACnE,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,KAAU,KAAI;gBACtG,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAEM,WAAW,GAAA;QAChB,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;AAC1C,SAAA;KACF;IAEO,kBAAkB,GAAA;QACxB,MAAM,eAAe,GAAkC,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,2BAA2B,EAAE,CAAC;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;AACxD,YAAA,KAAK,IAAI,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;gBACxC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,EAAE;AAChE,oBAAA,IAAI,OAAO,GAAG;wBACZ,IAAI,EAAE,YAAY,CAAC,mBAAmB;AACtC,wBAAA,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,mBAAmB,CAAC;qBACpD,CAAC;oBACF,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,EAAE;wBAC9D,OAAO,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;AACjE,qBAAA;AACD,oBAAA,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,eAAe,CAAC;KACxB;IAEM,UAAU,GAAA;QACf,IAAI,WAAW,GAAkC,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACzC,SAAA;AACD,QAAA,MAAM,gBAAgB,GAAsB;AAC1C,YAAA,UAAU,EAAE,WAAW;SACxB,CAAA;AACD,QAAA,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,IAAI,CAAC,EAAE;YACb,MAAM,EAAE,IAAI,CAAC,IAAI;AACjB,YAAA,OAAO,EAAE,gBAAgB;SAC1B,CAAC;QACF,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAA;KAChE;AAED,IAAA,YAAY,CAAC,CAAS,EAAA;QACpB,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,CAAQ,CAAC;QAExD,IAAI,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClH,YAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC5H,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;gBAChG,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC1E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM;AACxI,wBAAA,mBAAmB,EAAE,mBAAmB;AACxC,wBAAA,0BAA0B,EAAE,0BAA0B;AACtD,wBAAA,yBAAyB,EAAE,yBAAyB;AACpD,wBAAA,mBAAmB,EAAE,mBAAmB;AACzC,qBAAA,CAAC,CAAC,CAAC;AACL,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACtB,iBAAA;AAED,gBAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACnD,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AAEL,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,EAAE,CAAC;AAC7D,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAClD,SAAA;KACF;IAEO,mBAAmB,CAAC,UAAmB,EAAE,UAAmB,EAAA;QAClE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,EAAE,GAAG,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,UAAU,GAAI,SAAS,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,UAAU,GAAI,EAAE,CAAA;AAE5B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,SAAA;KACF;IAED,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAC9B,sBAAsB,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,SAAA;KACF;IAED,aAAa,GAAA;;QACX,IAAI,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;QACzC,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,MAAM,GAAG,MAAM,KAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,CAAA;AACpD,SAAA;AACD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACvC;IAED,2BAA2B,GAAA;QACzB,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;KAC/D;IAED,+BAA+B,GAAA;QAC7B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;KACxE;AAED,IAAA,cAAc,CAAC,IAAI,EAAA;AAEjB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;AAC7D,SAAA;AACD,QAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;KACzC;;oHApKU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAY,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,+hBCjCnC,qyHA2CA,EAAA,YAAA,EAAA,CAAA,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,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gNAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,+BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDVa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,qyHAAA,EAAA,CAAA;qJAiB3B,IAAI,EAAA,CAAA;sBADH,SAAS;gBAAC,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAMnC,IAAI,EAAA,CAAA;sBADH,SAAS;gBAAC,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAInC,WAAW,EAAA,CAAA;sBADV,SAAS;gBAAC,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAI1C,IAAI,EAAA,CAAA;sBADH,SAAS;gBAAC,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAeY,OAAO,EAAA,CAAA;sBAArD,SAAS;gBAAC,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;AEtDpC,MAAM,2BAA2B,GAAQ;IAC9C,oBAAoB;IACpB,mBAAmB;IACnB,sBAAsB;IACtB,sBAAsB;IACtB,wBAAwB;IACxB,uBAAuB;IACvB,oBAAoB;IACpB,6BAA6B;IAC7B,8BAA8B;IAC9B,iCAAiC;CAClC,CAAC;AACK,MAAM,uBAAuB,GAAQ;IAC1C,YAAY;IACZ,iBAAiB;IACjB,0BAA0B;IAC1B,uBAAuB;IACvB,gBAAgB;IAChB,cAAc;CACf,CAAA;AACM,MAAM,sBAAsB,GAAQ,EAAE;;ACtCtC,MAAM,GAAG,GAAG;;AAGjB,IAAA,EAAE,EAAE;AACF,QAAA,wBAAwB,EAAE,iBAAiB;AAE3C,QAAA,4BAA4B,EAAE,oBAAoB;AAClD,QAAA,8BAA8B,EAAE,uBAAuB;AACvD,QAAA,6BAA6B,EAAE,oBAAoB;AAEnD,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,sBAAsB,EAAE,sBAAsB;AAC9C,QAAA,2BAA2B,EAAE,qDAAqD;AAClF,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,YAAY,EAAE,aAAa;AAC3B,QAAA,eAAe,EAAE,cAAc;AAC/B,QAAA,eAAe,EAAE,oBAAoB;AACrC,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,qBAAqB,EAAE,wBAAwB;AAC/C,QAAA,kBAAkB,EAAE,qBAAqB;AACzC,QAAA,8BAA8B,EAAE,iBAAiB;AACjD,QAAA,oCAAoC,EAAE,uCAAuC;AAC7E,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,cAAc,EAAE,cAAc;AAC9B,QAAA,4BAA4B,EAAE,SAAS;AACvC,QAAA,4BAA4B,EAAE,SAAS;AACvC,QAAA,4BAA4B,EAAE,SAAS;AACvC,QAAA,4BAA4B,EAAE,KAAK;AACnC,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,aAAa,EAAE,oBAAoB;AACnC,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,aAAa,EAAE,MAAM;AACrB,QAAA,oBAAoB,EAAE,aAAa;AACnC,QAAA,aAAa,EAAE,cAAc;AAC7B,QAAA,iBAAiB,EAAE,sBAAsB;AACzC,QAAA,kBAAkB,EAAE,0BAA0B;AAC9C,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,YAAY,EAAE,mBAAmB;AACjC,QAAA,UAAU,EAAE,UAAU;AACvB,KAAA;;AAGD,IAAA,EAAE,EAAE;AACF,QAAA,wBAAwB,EAAE,oBAAoB;AAC9C,QAAA,4BAA4B,EAAE,uBAAuB;AACrD,QAAA,8BAA8B,EAAE,4BAA4B;AAC5D,QAAA,6BAA6B,EAAE,uBAAuB;AAEtD,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,SAAS,EAAE,qBAAqB;AAChC,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,sBAAsB,EAAE,0BAA0B;AAClD,QAAA,2BAA2B,EAAE,iEAAiE;AAC9F,QAAA,MAAM,EAAE,iBAAiB;AACzB,QAAA,YAAY,EAAE,iBAAiB;AAC/B,QAAA,eAAe,EAAE,oBAAoB;AACrC,QAAA,eAAe,EAAE,wBAAwB;AACzC,QAAA,YAAY,EAAE,iBAAiB;AAC/B,QAAA,qBAAqB,EAAE,2BAA2B;AAClD,QAAA,kBAAkB,EAAE,wBAAwB;AAC5C,QAAA,8BAA8B,EAAE,qBAAqB;AACrD,QAAA,oCAAoC,EAAE,4CAA4C;AAClF,QAAA,aAAa,EAAE,sBAAsB;AACrC,QAAA,cAAc,EAAE,qBAAqB;AACrC,QAAA,4BAA4B,EAAE,QAAQ;AACtC,QAAA,4BAA4B,EAAE,QAAQ;AACtC,QAAA,4BAA4B,EAAE,OAAO;AACrC,QAAA,4BAA4B,EAAE,MAAM;AACpC,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,SAAS,EAAE,UAAU;AACrB,QAAA,aAAa,EAAE,eAAe;AAC9B,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,aAAa,EAAE,QAAQ;AACvB,QAAA,oBAAoB,EAAE,aAAa;AACnC,QAAA,aAAa,EAAE,kBAAkB;AACjC,QAAA,iBAAiB,EAAE,mBAAmB;AACtC,QAAA,kBAAkB,EAAE,+BAA+B;AACnD,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,YAAY,EAAE,YAAY;AAC1B,QAAA,UAAU,EAAE,SAAS;AACtB,KAAA;CAEF;;MCnGY,sBAAsB,CAAA;AAGjC,IAAA,WAAA,CACS,SAA4B,EAAA;AAA5B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAmB;QAEnC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,KAAY,KAAI;AAC1D,YAAA,sBAAsB,CAAC,WAAW,GAAG,KAAK,CAAC;YAC3C,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;KACF;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9E,YAAA,sBAAsB,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3C,SAAA;KACF;;AApBc,sBAAW,CAAA,WAAA,GAAG,KAAK,CAAC;oHAFxB,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA;4FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACEK,MAAO,oBAAqB,SAAQ,cAAc,CAAA;AAGtD,IAAA,WAAA,CAAsB,QAAkB,EAAA;QACtC,KAAK,CAAC,QAAQ,CAAC,CAAC;AADI,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAEtC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,GAAG,CAAsB,mBAAmB,CAAC,CAAC;KACnF;AAEM,IAAA,YAAY,CAAC,YAA0B,EAAA;QAE5C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CACzB,YAAY,CACb,CAAA;QACD,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,qBAAA,CAAuB,CAAC;QAE/D,OAAO,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC,CAAC;KACJ;AAEM,IAAA,YAAY,CAAC,cAAuB,EAAA;QAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CACzB,cAAc,CACf,CAAA;QACD,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,4BAAA,CAA8B,CAAC;QAEtE,OAAO,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC,CAAC;KACJ;AAEM,IAAA,MAAM,CAAC,EAAU,EAAE,UAAe,EAAE,IAAY,EAAA;AACrD,QAAA,UAAU,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;KAC3C;;kHAxCU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sHAApB,oBAAoB,EAAA,CAAA,CAAA;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;;ACOL,MAAO,yBAA0B,SAAQ,oBAAoB,CAAA;AAKjE,IAAA,WAAA,CACY,QAAkB,EAAA;QAE5B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAFN,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAHrB,QAAA,IAAY,CAAA,YAAA,GAAG,cAAc,CAAC;QAMrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAgB,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAY,SAAS,CAAC,CAAC;KACvD;AAEM,IAAA,gBAAgB,CAAC,MAAW,EAAA;AACjC,QAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,aAAa,CAAC;QAC7G,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC;KAC9C;AAEM,IAAA,UAAU,CAAC,IAAY,EAAE,gBAAmC,EAAE,IAAa,EAAA;QAChF,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAE5C,QAAA,IAAI,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,CAAI,CAAA,EAAA,IAAI,CAAG,CAAA,CAAA,GAAG,IAAI,CAAC;QAExD,OAAO,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,MAAM,CAAC,EAAU,EAAE,UAAkB,EAAE,IAAY,EAAA;;QAGjD,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;KAC3C;AAED,IAAA,cAAc,CAAC,IAAY,EAAE,gBAAkD,GAAA,EAAE,EAAE,MAAA,GAA2B,EAAE,MAAM,EAAE,EAAE,EAAE,EAAA;QAC1H,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,YAAY,CAAC;AACrC,QAAA,IAAI,WAAW,GAA0B;AACvC,YAAA,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;SAC/B,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;AAEhC,YAAA,IAAI,EAAE,CAAC,GAAoB,KAAI;gBAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,EAAE;oBAC3C,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAE5B,oBAAA,MAAM,gBAAgB,GAAsB;AAC1C,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,UAAU,EAAE,gBAAgB;qBAC7B,CAAA;AACD,oBAAA,MAAM,IAAI,GAAG;AACX,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,OAAO,EAAE,gBAAgB;qBAC1B,CAAC;oBACF,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAA;AAEhE,iBAAA;aACF;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;gBACb,IAAI,IAAI,CAAC,aAAa,EAAE;oBACtB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAC9B,sBAAsB,CAAC,CAAC;AAC3B,iBAAA;AACD,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aAClB;AACF,SAAA,CAAC,CAAC;KAEJ;AAED,IAAA,MAAM,CAAC,KAAY,EAAE,MAAc,EAAE,IAAa,EAAA;AAChD,QAAA,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,QAAQ,IAAG;YAE/C,IAAI,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,UAAA,CAAY,CAAC;AAElD,YAAA,MAAM,QAAQ,GAAQ,IAAI,QAAQ,EAAE,CAAC;AACrC,YAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;gBACnB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,aAAA;YAED,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE;AACrD,gBAAA,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAClC,gBAAA,cAAc,EAAE,IAAI;AACrB,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAChD,gBAAA,IAAI,aAAa,CAAC,cAAc,KAAK,IAAI,CAAC,IAAI,EAAE;;AAE9C,oBAAA,MAAM,YAAY,GAAG;wBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;qBAClB,CAAC;AACF,oBAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC7B,iBAAA;AAAM,qBAAA,IAAI,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE;;oBAE/C,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,wBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,qBAAA;AAAM,yBAAA;AACL,wBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,qBAAA;AACF,iBAAA;aACF,EAAE,KAAK,IAAG;AACT,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;AACxB,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AAC3B,iBAAA;AAAM,qBAAA;AACL,oBAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvB,iBAAA;aACF,EACC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACrC;IAES,kBAAkB,GAAA;QAC1B,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,6BAA6B,EAAE,GAAG,EAAE,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC;AACvD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YAC7B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;AAClE,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;IAES,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAA;QAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AAC3B,SAAA;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAClC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACtC,SAAA;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;;AAElC,YAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA;;AAEL,YAAA,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACvC,SAAA;KACF;;uHAlJU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2HAAzB,yBAAyB,EAAA,CAAA,CAAA;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;;;ACGL,SAAU,iBAAiB,CAAC,QAAkB,EAAA;IAClD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/D,IAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AAC3B,QAAA,OAAO,OAAO,CAAC;AAChB,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,IAAI,0BAA0B,CAAC,QAAQ,CAAC,CAAC;AACjD,KAAA;AACH,CAAC;AAED;;AAEG;AACG,SAAU,gCAAgC,CAAC,QAAkB,EAAA;;;;;IAMjE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AACvC,QAAA,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;AACrC,KAAA;AAAM,SAAA,IAAI,WAAW,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE;AAClD,QAAA,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;AACvC,KAAA;AAAM,SAAA,IAAI,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AAC/C,QAAA,OAAO,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAC3C,KAAA;AAEH,IAAA,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED;;AAEG;AACG,SAAU,6BAA6B,CAAC,QAAkB,EAAA;;;;;IAK9D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AACvC,QAAA,OAAO,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC1C,KAAA;AACD,IAAA,IAAI,WAAW,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE;AAC7C,QAAA,OAAO,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC1C,KAAA;AAAM,SAAA,IAAI,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AACjD,QAAA,OAAO,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAChD,KAAA;AACD,IAAA,OAAO,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAEY,MAAA,iBAAiB,GAAQ;AACpC,IAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,qBAAqB,EAAE;AAC9D,IAAA,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,gCAAgC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;AAC3F,IAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,6BAA6B,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;AAC7F,IAAA;AACE,QAAA,OAAO,EAAE,0BAA0B;AACnC,QAAA,UAAU,EAAE,iBAAiB;QAC7B,IAAI,EAAE,CAAC,QAAQ,CAAC;AACjB,KAAA;IACD,aAAa;IACb,sBAAsB;IACtB,8BAA8B;IAC9B,sBAAsB;;;MCpEX,aAAa,CAAA;AACxB,IAAA,WAAA,CAA6B,kBAA0C,EAAA;AAA1C,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAwB;AACrE,QAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;KAC5C;;2GAHU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;4GAAb,aAAa,EAAA,YAAA,EAAA,CAAAC,oBAAA,EAAAC,mBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,wBAAA,EAAAC,uBAAA,EAAAC,oBAAA,EAAAC,6BAAA,EAAAC,8BAAA,EAAAC,iCAAA,CAAA,EAAA,OAAA,EAAA,CAAAC,EAAA,CAAA,YAAA,EAAAhB,IAAA,CAAA,iBAAA,EAAAiB,GAAA,CAAA,0BAAA,EAAAhB,IAAA,CAAA,uBAAA,EAAAiB,KAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,EAAA,CAAA,CAAA;4GAAb,aAAa,EAAA,SAAA,EAHX,iBAAiB,EAAA,OAAA,EAAA,CADnB,uBAAuB,CAAA,EAAA,CAAA,CAAA;4FAIvB,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,2BAA2B;AACzC,oBAAA,OAAO,EAAE,uBAAuB;AAChC,oBAAA,SAAS,EAAE,iBAAiB;iBAC/B,CAAA;;;ACJD,MAAM,MAAM,GAAW,CAAC;AACtB,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,oBAAoB;KAChC,EAAC;AACA,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,SAAS,EAAE,mBAAmB;KAC/B,EAAC;AACA,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,SAAS,EAAE,sBAAsB;AAClC,KAAA,CAAC,CAAC;MAMU,oBAAoB,CAAA;;kHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,0CAFrB,YAAY,CAAA,EAAA,CAAA,CAAA;mHAEX,oBAAoB,EAAA,OAAA,EAAA,CAHrB,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC7B,YAAY,CAAA,EAAA,CAAA,CAAA;4FAEX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACxC,OAAO,EAAE,CAAC,YAAY,CAAC;iBACxB,CAAA;;;ACpBD;;AAEG;;ACFH;;AAEG;;;;"}