{"version":3,"file":"onecx-angular-accelerator.mjs","sources":["../../../../libs/angular-accelerator/src/lib/directives/content-container.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/content.directive.ts","../../../../libs/angular-accelerator/src/lib/utils/logger.utils.ts","../../../../libs/angular-accelerator/src/lib/directives/if-permission.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/if-breakpoint.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/src.directive.ts","../../../../libs/angular-accelerator/src/lib/utils/observable-output.utils.ts","../../../../libs/angular-accelerator/src/lib/directives/tooltip.directive.ts","../../../../libs/angular-accelerator/src/lib/services/breadcrumb.service.ts","../../../../libs/angular-accelerator/src/lib/utils/action-router.utils.ts","../../../../libs/angular-accelerator/src/lib/pipes/dynamic.pipe.ts","../../../../libs/angular-accelerator/src/lib/components/page-header/page-header.component.ts","../../../../libs/angular-accelerator/src/lib/components/page-header/page-header.component.html","../../../../libs/angular-accelerator/src/lib/components/search-header/search-header.component.ts","../../../../libs/angular-accelerator/src/lib/components/search-header/search-header.component.html","../../../../libs/angular-accelerator/src/lib/directives/advanced.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/tooltipOnOverflow.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/template.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/basic.directive.ts","../../../../libs/angular-accelerator/src/lib/components/loading-indicator/loading-indicator.component.ts","../../../../libs/angular-accelerator/src/lib/components/loading-indicator/loading-indicator.component.html","../../../../libs/angular-accelerator/src/lib/directives/loading-indicator.directive.ts","../../../../libs/angular-accelerator/src/lib/components/column-group-selection/column-group-selection.component.ts","../../../../libs/angular-accelerator/src/lib/components/column-group-selection/column-group-selection.component.html","../../../../libs/angular-accelerator/src/lib/components/content/content.component.ts","../../../../libs/angular-accelerator/src/lib/components/content/content.component.html","../../../../libs/angular-accelerator/src/lib/components/content-container/content-container.component.ts","../../../../libs/angular-accelerator/src/lib/components/content-container/content-container.component.html","../../../../libs/angular-accelerator/src/lib/components/custom-group-column-selector/custom-group-column-selector.component.ts","../../../../libs/angular-accelerator/src/lib/components/custom-group-column-selector/custom-group-column-selector.component.html","../../../../libs/angular-accelerator/src/lib/components/data-layout-selection/data-layout-selection.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-layout-selection/data-layout-selection.component.html","../../../../libs/angular-accelerator/src/lib/model/column-type.model.ts","../../../../libs/angular-accelerator/src/lib/utils/objectutils.ts","../../../../libs/angular-accelerator/src/lib/functions/flatten-object.ts","../../../../libs/angular-accelerator/src/lib/model/filter.model.ts","../../../../libs/angular-accelerator/src/lib/components/data-sort-base/data-sort-base.ts","../../../../libs/angular-accelerator/src/lib/pipes/ocxtimeago.pipe.ts","../../../../libs/angular-accelerator/src/lib/components/data-list-grid/data-list-grid.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-list-grid/data-list-grid.component.html","../../../../libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.html","../../../../libs/angular-accelerator/src/lib/utils/template.utils.ts","../../../../libs/angular-accelerator/src/lib/components/data-table/data-table.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-table/data-table.component.html","../../../../libs/angular-accelerator/src/lib/utils/rxjs-utils.ts","../../../../libs/angular-accelerator/src/lib/components/data-view/data-view.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-view/data-view.component.html","../../../../libs/angular-accelerator/src/lib/utils/colorutils.ts","../../../../libs/angular-accelerator/src/lib/components/diagram/diagram.component.ts","../../../../libs/angular-accelerator/src/lib/components/diagram/diagram.component.html","../../../../libs/angular-accelerator/src/lib/utils/filter.utils.ts","../../../../libs/angular-accelerator/src/lib/components/filter-view/filter-view.component.ts","../../../../libs/angular-accelerator/src/lib/components/filter-view/filter-view.component.html","../../../../libs/angular-accelerator/src/lib/components/group-by-count-diagram/group-by-count-diagram.component.ts","../../../../libs/angular-accelerator/src/lib/components/group-by-count-diagram/group-by-count-diagram.component.html","../../../../libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.ts","../../../../libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.html","../../../../libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.ts","../../../../libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.html","../../../../libs/angular-accelerator/src/lib/components/consent/consent.component.ts","../../../../libs/angular-accelerator/src/lib/components/consent/consent.component.html","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-message-content/dialog-message-content.component.ts","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-message-content/dialog-message-content.component.html","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-content/dialog-content.component.ts","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-content/dialog-content.component.html","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-footer/dialog-footer.component.ts","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-footer/dialog-footer.component.html","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-inline/dialog-inline.component.ts","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-inline/dialog-inline.component.html","../../../../libs/angular-accelerator/src/lib/components/error-component/global-error.component.ts","../../../../libs/angular-accelerator/src/lib/components/error-component/global-error.component.html","../../../../libs/angular-accelerator/src/lib/services/portal-dialog.service.ts","../../../../libs/angular-accelerator/src/lib/utils/dateutils.ts","../../../../libs/angular-accelerator/src/lib/services/export-data.service.ts","../../../../libs/angular-accelerator/src/lib/pipes/relative-date.pipe.ts","../../../../libs/angular-accelerator/src/lib/angular-accelerator-primeng.module.ts","../../../../libs/angular-accelerator/src/version.ts","../../../../libs/angular-accelerator/src/lib/angular-accelerator.module.ts","../../../../libs/angular-accelerator/src/lib/functions/at-least-one-field-filled-validator.ts","../../../../libs/angular-accelerator/src/lib/utils/data-operation-strategy.ts","../../../../libs/angular-accelerator/src/lib/utils/enum-to-dropdown-options.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/criteria.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/string-and-array-helper-functions.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/image-logo-url.utils.ts","../../../../libs/angular-accelerator/src/index.ts","../../../../libs/angular-accelerator/src/onecx-angular-accelerator.ts"],"sourcesContent":["import { Directive, ElementRef, OnInit, effect, inject, input } from '@angular/core'\n\n@Directive({ selector: '[ocxContentContainer]', standalone: false })\nexport class OcxContentContainerDirective implements OnInit {\n  private el = inject(ElementRef)\n\n  /**\n   * Used for passing the direction, in which the content inside the container should be rendered.\n   * Default: horizontal\n   * @example [ocxContentContainer]=\"horizontal\"\n   * @example [ocxContentContainer]=\"vertical\"\n   */\n  layout = input<'horizontal' | 'vertical'>('horizontal')\n\n  /**\n   * Used for passing in the breakpoint below which a horizontal layout should switch to a vertical layout.\n   * Only necessary if horizontal layout is used\n   * Default: md\n   */\n  breakpoint = input<'sm' | 'md' | 'lg' | 'xl'>('md')\n\n  /**\n   * Optionally allows specifying styles for the container\n   */\n  ngClass = input<string | undefined>(undefined)\n\n  ngOnInit() {\n    this.el.nativeElement.classList.add('flex', 'gap-3', 'flex-column', 'md:flex-row')\n    this.addContainerStyles()\n  }\n\n  constructor() {\n    effect(() => {\n      // Read signals to establish dependencies\n      this.layout()\n      this.breakpoint()\n      this.ngClass()\n      this.addContainerStyles()\n    })\n  }\n\n  private addContainerStyles() {\n    const addClasses = (classes: string[]) => this.el.nativeElement.classList.add(...classes)\n    const removeClasses = (classes: string[]) => this.el.nativeElement.classList.remove(...classes)\n    // We need to ensure that all breakpoint dependent flex-row classes are removed from the element\n    // This way we can avoid multiple contradictory layout classes and unexpected effects\n    const removeResponsiveLayoutClasses = () => {\n      const classesToRemove: string[] = []\n      const regexPattern = /\\w+:flex-row$/\n      this.el.nativeElement.classList.forEach((className: string) => {\n        if (regexPattern.test(className)) {\n          classesToRemove.push(className)\n        }\n      })\n      removeClasses(classesToRemove)\n    }\n    const addSharedClasses = () => {\n      let styleClasses = Array.from(this.el.nativeElement.classList as string[])\n      const defaultClasses = ['gap-3', 'flex-column', 'md:flex-row']\n      removeClasses(defaultClasses)\n      if (styleClasses.some((cls) => cls.startsWith('gap-') && cls !== 'gap-3')) {\n        styleClasses = styleClasses.filter((cls) => !cls.startsWith('gap-3'))\n      }\n      const flexClasses = ['flex-row', 'flex-row-reverse', 'flex-column-reverse']\n      if (styleClasses.some((cls) => flexClasses.includes(cls))) {\n        styleClasses = styleClasses.filter((cls) => cls !== 'flex-column')\n      }\n      if (this.layout() != 'vertical') {\n        const responsiveLayoutClass = `${this.breakpoint() || 'md'}:flex-row`\n        styleClasses.push(responsiveLayoutClass)\n      }\n      addClasses(styleClasses)\n    }\n\n    removeResponsiveLayoutClasses()\n    addSharedClasses()\n  }\n}\n","import { Directive, ElementRef, OnInit, effect, inject, input, signal } from '@angular/core'\n\n@Directive({ selector: '[ocxContent]', standalone: false })\nexport class OcxContentDirective implements OnInit {\n  private readonly el = inject(ElementRef)\n\n  /**\n   * Used for passing a title text which should be rendered in the upper left corner of the content area.\n   * @example [ocxContent]=\"My Cool Title\"\n   */\n  ocxContent = input<string>('')\n\n  private readonly baseId = signal<string>('ocx_content_title_element')\n  private readonly titleElementId = signal<string | undefined>(undefined)\n\n  constructor() {\n    effect(() => {\n      this.init()\n    })\n  }\n\n  ngOnInit() {\n    this.titleElementId.set(this.getUniqueTitleID(this.baseId()))\n    this.init()\n  }\n\n  private init() {\n    this.addContentStyles()\n    if (this.ocxContent()) {\n      this.prependTitle()\n    } else {\n      this.removeTitle()\n    }\n  }\n\n  private addContentStyles() {\n    const addClasses = (classes: string[]) => this.el.nativeElement.classList.add(...classes)\n    addClasses(['ocx-card'])\n  }\n\n  private prependTitle() {\n    const titleElementId = this.titleElementId()\n    if (titleElementId) {\n      const titleElement = this.el.nativeElement.querySelector(`#${titleElementId}`)\n      if (titleElement) {\n        titleElement.textContent = this.ocxContent()\n      } else {\n        const title = document.createElement('p')\n        title.classList.add('font-medium')\n        title.classList.add('text-lg')\n        title.id = titleElementId\n        title.textContent = this.ocxContent()\n        this.el.nativeElement.prepend(title)\n      }\n    }\n  }\n\n  private getUniqueTitleID(baseId: string) {\n    let counter = 0\n    let generatedID = baseId\n\n    while (document.getElementById(generatedID)) {\n      generatedID = baseId + counter\n      counter++\n    }\n\n    return generatedID\n  }\n\n  private removeTitle() {\n    const titleElementId = this.titleElementId()\n    if (titleElementId) {\n      const titleElement = this.el.nativeElement.querySelector(`#${titleElementId}`)\n      if (titleElement) {\n        titleElement.remove()\n      }\n    }\n  }\n}\n","// This file is not planned to be in the index.ts so it is private to this lib\nimport { createLoggerFactory } from '@onecx/accelerator'\n\nexport const createLogger = createLoggerFactory('@onecx/angular-accelerator')\n","import {\n  Directive,\n  EmbeddedViewRef,\n  Renderer2,\n  TemplateRef,\n  ViewContainerRef,\n  computed,\n  DestroyRef,\n  inject,\n  input,\n  signal,\n} from '@angular/core'\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\nimport { from, Observable, of, switchMap } from 'rxjs'\nimport { createLogger } from '../utils/logger.utils'\nimport { OnMissingPermission, PermissionInput } from '../model/permission.model'\n\n@Directive({ selector: '[ocxIfPermission], [ocxIfNotPermission]', standalone: false })\nexport class IfPermissionDirective {\n  private readonly logger = createLogger('IfPermissionDirective')\n  private readonly renderer = inject(Renderer2)\n  private readonly viewContainer = inject(ViewContainerRef)\n  private readonly hasPermissionChecker = inject<HasPermissionChecker>(HAS_PERMISSION_CHECKER, { optional: true })\n  private readonly templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n  private readonly userService = inject(UserService, { optional: true })\n  private readonly destroyRef = inject(DestroyRef)\n\n  ocxIfPermission = input<PermissionInput>(undefined)\n  ocxIfNotPermission = input<PermissionInput>(undefined)\n\n  ocxIfPermissionOnMissingPermission = input<OnMissingPermission>('hide')\n  ocxIfNotPermissionOnMissingPermission = input<OnMissingPermission>('hide')\n\n  ocxIfPermissionPermissions = input<string[] | undefined>(undefined)\n  ocxIfNotPermissionPermissions = input<string[] | undefined>(undefined)\n\n  ocxIfPermissionElseTemplate = input<TemplateRef<any> | undefined>(undefined)\n  ocxIfNotPermissionElseTemplate = input<TemplateRef<any> | undefined>(undefined)\n\n  private readonly permissionChecker = computed<HasPermissionChecker | undefined>(() => {\n    return this.hasPermissionChecker ?? this.userService ?? undefined\n  })\n  private readonly isDisabled = signal<boolean>(false)\n  private readonly directiveContentRef = signal<EmbeddedViewRef<any> | undefined>(undefined)\n\n  private readonly permissionValidation = computed(() => {\n    const positive = this.ocxIfPermission()\n    const negative = this.ocxIfNotPermission()\n    const negate = negative !== undefined\n\n    const raw = negate ? negative : positive\n    const permissions = this.normalizePermissions(raw)\n    return {\n      permissions,\n      negate,\n      onMissing: negate ? this.ocxIfNotPermissionOnMissingPermission() : this.ocxIfPermissionOnMissingPermission(),\n      elseTemplate: negate ? this.ocxIfNotPermissionElseTemplate() : this.ocxIfPermissionElseTemplate(),\n      overridePermissions: negate ? this.ocxIfNotPermissionPermissions() : this.ocxIfPermissionPermissions(),\n    }\n  })\n\n  private normalizePermissions(raw: string | string[] | undefined): string[] {\n    if (raw === undefined) {\n      return []\n    }\n    if (Array.isArray(raw)) {\n      return raw\n    }\n    return [raw]\n  }\n\n  constructor() {\n    const validChecker = this.hasPermissionChecker || this.userService\n    if (!validChecker) {\n      throw 'IfPermission requires UserService or HasPermissionChecker to be provided!'\n    }\n\n    toObservable(this.permissionValidation)\n      .pipe(\n        switchMap((req) => {\n          if (!req.permissions.length) {\n            return of({ shouldShow: false, req })\n          }\n          return this.hasPermission(req.permissions, req.overridePermissions).pipe(\n            switchMap((has) => of({ shouldShow: req.negate ? !has : has, req }))\n          )\n        }),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe(({ shouldShow, req }) => {\n        if (shouldShow) {\n          return this.showTemplateOrClear()\n        }\n        return this.showElseTemplateOrDefaultView(req.elseTemplate, req.onMissing)\n      })\n  }\n\n  private hasPermission(permission: string[], overridePermissions?: string[]): Observable<boolean> {\n    if (overridePermissions) {\n      const result = permission.every((p) => overridePermissions?.includes(p))\n      if (!result) {\n        this.logger.debug('No permission in overwrites for:', permission)\n      }\n      return of(result)\n    }\n\n    const permissionChecker = this.permissionChecker()\n\n    if (permissionChecker?.getPermissions) {\n      return permissionChecker.getPermissions().pipe(\n        switchMap((permissions) => {\n          const result = permission.every((p) => permissions.includes(p))\n          if (!result) {\n            this.logger.debug('No permission from permission checker for:', permission)\n          }\n          return of(result)\n        })\n      )\n    }\n\n    if (permissionChecker?.hasPermission) {\n      return from(permissionChecker.hasPermission(permission))\n    }\n\n    return of(false)\n  }\n\n  private showTemplateOrClear() {\n    this.resetView()\n\n    if (this.templateRef) {\n      this.directiveContentRef.set(this.viewContainer.createEmbeddedView(this.templateRef))\n    }\n  }\n\n  private showElseTemplateOrDefaultView(elseTemplate?: TemplateRef<any>, onMissing: 'hide' | 'disable' = 'hide') {\n    this.resetView()\n\n    if (elseTemplate) {\n      this.viewContainer.createEmbeddedView(elseTemplate)\n      return\n    }\n\n    if (onMissing === 'disable' && this.templateRef) {\n      this.directiveContentRef.set(this.viewContainer.createEmbeddedView(this.templateRef))\n\n      const el = this.getElement()\n      if (el) {\n        this.renderer.setAttribute(el as any, 'disabled', 'disabled')\n      }\n      this.isDisabled.set(true)\n    }\n  }\n\n  private resetView() {\n    this.viewContainer.clear()\n    if (this.isDisabled()) {\n      this.isDisabled.set(false)\n      const el = this.getElement()\n      if (el) {\n        this.renderer.removeAttribute(el as any, 'disabled')\n      }\n    }\n  }\n\n  private getElement(): Node | undefined {\n    return this.directiveContentRef()?.rootNodes?.[0]\n  }\n}\n","import { Directive, HostListener, OnInit, TemplateRef, ViewContainerRef, inject, input, signal } from '@angular/core'\n\n@Directive({ selector: '[ocxIfBreakpoint]', standalone: false })\nexport class IfBreakpointDirective implements OnInit {\n  private readonly viewContainer = inject(ViewContainerRef)\n  private readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef, { optional: true })\n\n  breakpoint = input<'mobile' | 'desktop' | undefined>(undefined, { alias: 'ocxIfBreakpoint' })\n\n  ocxIfBreakpointElseTemplate = input<TemplateRef<any> | undefined>(undefined)\n\n  state = signal<'mobile' | 'desktop' | undefined>(undefined)\n\n  ngOnInit() {\n    this.onResize()\n  }\n\n  @HostListener('window:resize')\n  onResize() {\n    const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point')\n    const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches\n    const isDesktop = !isMobile\n    const newState = isMobile ? 'mobile' : 'desktop'\n\n    const breakpoint = this.breakpoint()\n    const elseTemplate = this.ocxIfBreakpointElseTemplate()\n\n    if ((breakpoint === 'mobile' && isMobile) || (breakpoint === 'desktop' && isDesktop)) {\n      if (this.templateRef && newState !== this.state()) {\n        this.viewContainer.clear()\n        this.viewContainer.createEmbeddedView(this.templateRef)\n      }\n    } else if (elseTemplate && newState !== this.state()) {\n      this.viewContainer.clear()\n      this.viewContainer.createEmbeddedView(elseTemplate)\n    }\n\n    this.state.set(newState)\n  }\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http'\nimport { Directive, ElementRef, EventEmitter, Output, effect, inject, input } from '@angular/core'\nimport { take } from 'rxjs'\nimport { createLogger } from '../utils/logger.utils'\n\n@Directive({ selector: '[ocxSrc]', standalone: false })\nexport class SrcDirective {\n  private readonly logger = createLogger('SrcDirective')\n  private readonly el = inject(ElementRef)\n  private readonly httpClient = inject(HttpClient)\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() error = new EventEmitter<void>()\n\n  ocxSrc = input<string | undefined>(undefined)\n\n  constructor() {\n    effect(() => {\n      const src = this.ocxSrc()\n      if (src && globalThis.location.hostname) {\n        try {\n          if (new URL(src, globalThis.location.origin).hostname === globalThis.location.hostname) {\n            this.httpClient\n              .get(src, { observe: 'response', responseType: 'blob' })\n              .pipe(take(1))\n              .subscribe({\n                next: (response: HttpResponse<Blob>) => {\n                  // ok with content\n                  if (response?.status === 200) {\n                    const url = URL.createObjectURL(response.body as Blob)\n                    const onLoad = () => {\n                      URL.revokeObjectURL(url)\n                      this.el.nativeElement.removeEventListener('load', onLoad)\n                    }\n                    this.el.nativeElement.addEventListener('load', onLoad)\n                    this.el.nativeElement.src = url\n                  }\n                  // no content\n                  if (response?.status === 204) {\n                    this.error.emit()\n                  }\n                },\n                error: () => {\n                  // on error\n                  this.error.emit()\n                },\n                complete: () => {\n                  // on complete\n                  this.el.nativeElement.style.visibility = 'initial'\n                },\n              })\n          } else {\n            this.el.nativeElement.src = src\n            this.el.nativeElement.style.visibility = 'initial'\n          }\n        } catch (error) {\n          this.logger.error('Cannot parse URL', src, error)\n          this.el.nativeElement.src = src\n          this.el.nativeElement.style.visibility = 'initial'\n        }\n      }\n    })\n    this.el.nativeElement.style.visibility = 'hidden'\n  }\n}\n","import { assertInInjectionContext, OutputEmitterRef, Signal, signal } from '@angular/core'\n\nclass ListenerArray {\n  private readonly _listeners: Array<(...args: any[]) => void> = []\n  observed = signal<boolean>(false)\n\n  indexOf(listener: (...args: any[]) => void): number {\n    return this._listeners.indexOf(listener)\n  }\n\n  splice(start: number, deleteCount: number): void {\n    this._listeners.splice(start, deleteCount)\n    this.observed.set(this._listeners.length > 0)\n  }\n\n  push(listener: (...args: any[]) => void): number {\n    const pushResult = this._listeners.push(listener)\n    this.observed.set(this._listeners.length > 0)\n    return pushResult\n  }\n\n  [Symbol.iterator]() {\n    return this._listeners[Symbol.iterator]()\n  }\n}\n\nexport class ObservableOutputEmitterRef<T> extends OutputEmitterRef<T> {\n  observed: Signal<boolean>\n\n  constructor() {\n    super()\n    ;(this as any).listeners = new ListenerArray()\n    this.observed = (this as any).listeners.observed\n  }\n}\n\nexport function observableOutput<T>(): ObservableOutputEmitterRef<T> {\n  if (ngDevMode) {\n    assertInInjectionContext(observableOutput)\n  }\n  return new ObservableOutputEmitterRef<T>()\n}\n","import { Directive, AfterViewInit, OnChanges, inject, Renderer2, TemplateRef, NgZone, ViewContainerRef, SimpleChanges, input, effect } from \"@angular/core\"\nimport { Tooltip, TooltipStyle } from \"primeng/tooltip\"\n\n@Directive({ selector: '[ocxTooltip]', providers: [TooltipStyle], standalone: true })\nexport class OcxTooltipDirective extends Tooltip implements AfterViewInit, OnChanges {\n  override readonly renderer = inject(Renderer2)\n  readonly ocxTooltip = input<string | TemplateRef<HTMLElement> | undefined>(undefined)\n\n  private generatedId: string | undefined\n  private resolvedId: string | undefined\n  private removeEscapeKeyListener: (() => void) | undefined\n  \n  constructor() {\n    const zone = inject(NgZone)\n    const viewContainer = inject(ViewContainerRef)\n    super(zone, viewContainer)\n    this.tooltipEvent = 'both'\n    effect(() => {\n      const value = this.ocxTooltip()\n      this.content = value\n      this.setOption({ tooltipLabel: value })\n      this.ensureIdAndAriaDescribedBy()\n      if (value) {\n        this.renderer.setStyle(this.el.nativeElement, 'cursor', 'pointer')\n      } else {\n        this.renderer.removeStyle(this.el.nativeElement, 'cursor')\n      }\n    })\n  }\n\n  override ngAfterViewInit(): void {\n    super.ngAfterViewInit()\n    this.ensureIdAndAriaDescribedBy()\n  }\n\n  override ngOnChanges(simpleChange: SimpleChanges): void {\n    super.ngOnChanges(simpleChange)\n    this.ensureIdAndAriaDescribedBy()\n  }\n\n  override create(): void {\n    super.create()\n    this.applyIdToContainer()\n    this.setEscapeKeyListener()\n  }\n\n  override show(): void {\n    super.show()\n  }\n\n  private ensureIdAndAriaDescribedBy(): void {\n    const idFromOptions = this.tooltipOptions?.id\n    const idFromInternal = this._tooltipOptions?.id\n    const resolvedId = this.normalizeId(idFromOptions) ?? this.normalizeId(idFromInternal) ?? this.getOrCreateGeneratedId()\n    this.resolvedId = resolvedId\n    if (this.tooltipOptions) {\n      const tooltipOptions = this.tooltipOptions\n      if (!this.normalizeId(tooltipOptions.id)) {\n        tooltipOptions.id = resolvedId\n      }\n    }\n\n    this.setOption({ id: resolvedId, tooltipEvent: 'both' })\n    this.renderer.setAttribute(this.el.nativeElement, 'aria-describedby', resolvedId)\n  }\n\n  private normalizeId(id: string | undefined | null): string | null {\n    if (!id) return null\n    const trimmed = String(id).trim()\n    return trimmed.length ? trimmed : null\n  }\n\n  private applyIdToContainer(): void {\n    if (!this.isTooltipCreated() || !this.resolvedId) return\n    this.renderer.setAttribute(this.container, 'id', this.resolvedId)\n  }\n\n  private isTooltipCreated(): boolean {\n    return this.container !== null && this.container !== undefined\n  }\n\n  private getOrCreateGeneratedId(): string {\n    if (this.generatedId) return this.generatedId\n    const randomPart = this.getRandomPart()\n    const timePart = Date.now().toString(36)\n    this.generatedId = `ocx-tooltip-${timePart}-${randomPart}`\n    return this.generatedId\n  }\n\n  private getRandomPart(): string {\n    const buffer = new Uint32Array(2)\n    globalThis.crypto.getRandomValues(buffer)\n    return Array.from(buffer, (value) => value.toString(36)).join('')\n  }\n\n  private setEscapeKeyListener(): void {\n    if (!this.container || this.removeEscapeKeyListener) return\n    this.removeEscapeKeyListener = this.renderer.listen(this.container, 'keydown', (event: KeyboardEvent) => {\n      if (!(event.key === 'Escape' || event.key === 'Esc')) return\n      this.hide()\n    })\n  }\n\n  override ngOnDestroy(): void {\n    if (this.removeEscapeKeyListener) {\n      this.removeEscapeKeyListener()\n      this.removeEscapeKeyListener = undefined\n    }\n    super.ngOnDestroy()\n  }\n}","import { Injectable, OnDestroy, inject } from '@angular/core'\nimport { ActivatedRoute, ActivatedRouteSnapshot, Data, NavigationEnd, ParamMap, Router } from '@angular/router'\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'\nimport { TranslateService } from '@ngx-translate/core'\nimport { Topic } from '@onecx/accelerator'\nimport { MenuItem } from 'primeng/api'\nimport { BehaviorSubject, filter, map, Observable } from 'rxjs'\nimport { BreadCrumbMenuItem } from '../model/breadcrumb-menu-item.model'\n\ninterface ManualBreadcrumbs {\n  menuItems: MenuItem[]\n}\n\n// This topic is defined here and not in integration-interface, because\n// it is not used as framework independent integration but for improving\n// angular specific things\nclass ManualBreadcrumbsTopic extends Topic<ManualBreadcrumbs> {\n  constructor() {\n    super('manualBreadcrumbs', 1)\n  }\n}\n\n@Injectable({ providedIn: 'any' })\n@UntilDestroy()\nexport class BreadcrumbService implements OnDestroy {\n  private readonly router = inject(Router)\n  private readonly activeRoute = inject(ActivatedRoute)\n  private readonly translateService = inject(TranslateService)\n\n  private _itemSource$: ManualBreadcrumbsTopic | undefined\n  private get itemsSource$() {\n    this._itemSource$ ??= new ManualBreadcrumbsTopic()\n    return this._itemSource$\n  }\n  private set itemsSource$(source: ManualBreadcrumbsTopic) {\n    this._itemSource$ = source\n  }\n  generatedItemsSource = new BehaviorSubject<MenuItem[]>([])\n\n  _itemsHandler: Observable<MenuItem[]> | undefined\n  get itemsHandler() {\n    this._itemsHandler ??= this.itemsSource$.pipe(map((manualBreadcrumbs) => manualBreadcrumbs.menuItems))\n    return this._itemsHandler\n  }\n\n  constructor() {\n    this.generateBreadcrumbs(this.activeRoute.snapshot)\n    this.router.events\n      .pipe(\n        untilDestroyed(this),\n        filter((e) => e instanceof NavigationEnd)\n      )\n      .subscribe(() => {\n        const root = this.router.routerState.snapshot.root\n        this.generateBreadcrumbs(root)\n      })\n  }\n\n  ngOnDestroy(): void {\n    this._itemSource$?.destroy()\n  }\n\n  private generateBreadcrumbs(route: ActivatedRouteSnapshot | null) {\n    if (route?.data['mfeInfo']) {\n      const breadcrumbs: MenuItem[] = [\n        {\n          label: route.data['mfeInfo'].productName,\n          routerLink: route.data['mfeInfo'].baseHref,\n        },\n      ]\n      const baseUrl: string[] = (route.data['mfeInfo'].baseHref as string).split('/').filter((value) => value)\n      const parentUrl: string[] = route.url.map((url) => url.path)\n      const isUsingMatcher = !parentUrl.every((item) => baseUrl.includes(item))\n      if (isUsingMatcher) {\n        this.createBreadcrumb(route, parentUrl, breadcrumbs)\n      }\n      this.addBreadcrumb(route.firstChild, parentUrl, breadcrumbs)\n      this.generatedItemsSource.next(breadcrumbs)\n    } else if (route?.data['breadcrumb']) {\n      const breadcrumbs: MenuItem[] = []\n      this.addBreadcrumb(route, [], breadcrumbs)\n      this.generatedItemsSource.next(breadcrumbs)\n    } else if (route) {\n      this.generateBreadcrumbs(route.firstChild)\n    }\n  }\n\n  private addBreadcrumb(route: ActivatedRouteSnapshot | null, parentUrl: string[], breadcrumbs: MenuItem[]) {\n    if (route?.url) {\n      const routeUrl = parentUrl.concat(route.url.map((url) => url.path))\n      if (route.routeConfig?.path) {\n        this.createBreadcrumb(route, routeUrl, breadcrumbs)\n      }\n\n      this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs)\n    }\n  }\n\n  private createBreadcrumb(route: ActivatedRouteSnapshot, routeUrl: string[], breadcrumbs: MenuItem[]) {\n    if (route.data['breadcrumb']) {\n      const breadcrumb: MenuItem = {\n        label: this.getLabel(route.data, route.paramMap),\n        routerLink: '/' + routeUrl.join('/'),\n      }\n      breadcrumbs.push(breadcrumb)\n    } else {\n      const breadcrumb: MenuItem = {\n        label: 'NA',\n        routerLink: '/' + routeUrl.join('/'),\n      }\n      breadcrumbs.push(breadcrumb)\n    }\n  }\n\n  private getLabel(data: Data, params: ParamMap) {\n    if (typeof data['breadcrumbFn'] === 'function') {\n      return data['breadcrumbFn'](data, params)\n    }\n    return data['breadcrumb']\n  }\n\n  setItems(items: BreadCrumbMenuItem[]) {\n    const translationKeys = [\n      ...items.map((i) => i.labelKey ?? '').filter((l) => !!l),\n      ...items.map((i) => i.titleKey ?? '').filter((l) => !!l),\n    ]\n    if (translationKeys.length) {\n      this.translateService.get(translationKeys).subscribe((translations: any) => {\n        this.itemsSource$.publish({\n          menuItems: items.map((i) => ({\n            ...i,\n            label: translations[i.labelKey ?? ''],\n            title: translations[i.titleKey ?? ''],\n          })),\n        })\n      })\n    } else {\n      this.itemsSource$.publish({\n        menuItems: items,\n      })\n    }\n  }\n}\n","import { Router } from '@angular/router'\nimport { DataAction, RouterLink } from '../model/data-action'\nimport { Action } from '../components/page-header/page-header.component'\n\n/**\n * Resolves a router link to a string, handling string, function, and Promise types\n */\nexport async function resolveRouterLink(routerLink: RouterLink): Promise<string> {\n  if (typeof routerLink === 'string') {\n    return routerLink\n  } else if (typeof routerLink === 'function') {\n    const result = routerLink()\n    return typeof result === 'string' ? result : await result\n  } else {\n    return await routerLink\n  }\n}\n\n/**\n * Base action handler that can be used directly or extended by components\n */\nexport async function handleAction(router: Router, action: Action | DataAction, data?: any): Promise<void> {\n  if (action.routerLink) {\n    const resolvedLink = await resolveRouterLink(action.routerLink)\n    await router.navigate([resolvedLink])\n  } else if ('callback' in action && typeof action.callback === 'function') {\n    action.callback(data)\n  } else if ('actionCallback' in action && typeof action.actionCallback === 'function') {\n    action.actionCallback()\n  }\n}\n\n/**\n * Synchronous wrapper for use in template event handlers where Promise return is not expected\n */\nexport function handleActionSync(router: Router, action: Action | DataAction, data?: any): void {\n  void handleAction(router, action, data)\n}","import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common'\nimport { Injector, LOCALE_ID, Pipe, PipeTransform, Type, inject } from '@angular/core'\n\n@Pipe({\n  name: 'dynamicPipe',\n  standalone: false,\n})\nexport class DynamicPipe implements PipeTransform {\n  private injector = inject(Injector)\n\n  knownPipes: { [name: string]: PipeTransform } = {}\n\n  public constructor() {\n    const locale = inject(LOCALE_ID)\n\n    this.knownPipes = {\n      currency: new CurrencyPipe(locale),\n      decimal: new DecimalPipe(locale),\n      date: new DatePipe(locale),\n    }\n  }\n\n  transform(value: any, requiredPipe?: Type<any>, pipeArgs?: any): any {\n    if (!requiredPipe) {\n      return value\n    }\n\n    const injector = Injector.create({\n      name: 'DynamicPipe',\n      parent: this.injector,\n      providers: [{ provide: requiredPipe }],\n    })\n    const pipe = injector.get(requiredPipe)\n    return pipe.transform(value, pipeArgs)\n  }\n\n  transform2(value: any, pipeToken: any, ...pipeArgs: any[]): any {\n    if (!pipeToken) {\n      return value\n    } else {\n      // eslint-disable-next-line no-prototype-builtins\n      if (pipeToken && this.knownPipes.hasOwnProperty(pipeToken)) {\n        const pipe = this.knownPipes[pipeToken]\n        if (Array.isArray(pipeArgs)) {\n          return pipe.transform(value, ...pipeArgs)\n        } else {\n          return pipe.transform(value, pipeArgs)\n        }\n      } else {\n        return value\n      }\n    }\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  OnInit,\n  Renderer2,\n  TemplateRef,\n  Type,\n  ViewChild,\n  ViewEncapsulation,\n  computed,\n  contentChild,\n  inject,\n  input,\n  model,\n  output,\n  signal,\n} from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { AppStateService, UserService } from '@onecx/angular-integration-interface'\nimport { MenuItem, PrimeIcons } from 'primeng/api'\nimport { Observable, concat, map, of, switchMap, tap } from 'rxjs'\nimport { BreadcrumbService } from '../../services/breadcrumb.service'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\nimport { TranslationKey } from '../../model/translation.model'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport { Router } from '@angular/router'\nimport { RouterLink } from '../../model/data-action'\nimport { handleAction, handleActionSync } from '../../utils/action-router.utils'\n\n/**\n * Action definition.\n */\nexport interface Action {\n  id?: string\n  label?: string\n  labelKey?: string\n  icon?: string\n  iconPos?: 'left' | 'right' | 'top' | 'bottom'\n  /**\n   * Permission for this action. If the current user does not have this permission, the action will not be shown.\n   */\n  permission?: string\n  title?: string\n  titleKey?: string\n  ariaLabel?: string\n  ariaLabelKey?: string\n  btnClass?: string\n  actionCallback(): void\n  routerLink?: RouterLink\n  loading?: boolean\n  disabled?: boolean\n  disabledTooltip?: string\n  disabledTooltipKey?: string\n  show?: 'always' | 'asOverflow'\n  conditional?: boolean\n  // Note: This currently doesn't work with dynamic values, since a passed in Action is just a copy of the original object.\n  // As a workaround, you can manually update/replace the passed in Action if you wish to update a showCondition\n  showCondition?: boolean\n}\n\nexport interface ObjectDetailItem {\n  label: string\n  value?: string\n  icon?: PrimeIcon\n  iconStyleClass?: string\n  labelPipe?: Type<any>\n  valuePipe?: Type<any>\n  valuePipeArgs?: string\n  valueCssClass?: string\n  actionItemIcon?: PrimeIcon\n  actionItemCallback?: () => void\n  actionItemAriaLabel?: string\n  actionItemAriaLabelKey?: TranslationKey\n  actionItemTooltipKey?: TranslationKey\n  labelTooltipKey?: TranslationKey\n  valueTooltipKey?: TranslationKey\n}\n\nexport interface HomeItem {\n  menuItem: MenuItem\n  page?: string\n}\n\nexport type GridColumnOptions = 1 | 2 | 3 | 4 | 6 | 12\n\n@Component({\n  standalone: false,\n  selector: 'ocx-page-header',\n  templateUrl: './page-header.component.html',\n  styleUrls: ['./page-header.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class PageHeaderComponent implements OnInit, AfterViewInit {\n  private readonly translateService = inject(TranslateService)\n  private readonly appStateService = inject(AppStateService)\n  private readonly userService = inject(UserService)\n  private readonly router = inject(Router)\n  private readonly renderer = inject(Renderer2)\n  private readonly hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n  protected readonly breadcrumbs = inject(BreadcrumbService)\n  private breadcrumbRef?: ElementRef<HTMLElement>\n  @ViewChild('breadcrumbRef', { read: ElementRef })\n  set breadcrumbElementRef(ref: ElementRef<HTMLElement> | undefined) {\n    this.breadcrumbRef = ref\n    this.applyBreadcrumbAriaLabels()\n  }\n\n  header = input<string | undefined>(undefined)\n\n  loading = input<boolean>(false)\n\n  figureBackground = input<boolean>(true)\n\n  showFigure = input<boolean>(true)\n\n  // image for preview in top-header left side\n  figureImage = input<string | undefined>(undefined)\n\n  disableDefaultActions = input<boolean>(false)\n\n  subheader = input<string | undefined>(undefined)\n\n  actions = model<Action[]>([])\n\n  objectDetails = input<ObjectDetailItem[] | undefined>(undefined)\n\n  showBreadcrumbs = input<boolean>(true)\n\n  manualBreadcrumbs = input<boolean>(false)\n\n  enableGridView = input<boolean | undefined>(undefined)\n\n  gridLayoutDesktopColumns = input<GridColumnOptions | undefined>(undefined)\n\n  save = output<void>()\n\n  _additionalToolbarContent = contentChild<TemplateRef<any> | undefined>('additionalToolbarContent')\n\n  _additionalToolbarContentLeft = contentChild<TemplateRef<any> | undefined>('additionalToolbarContentLeft')\n\n  overflowActions$: Observable<MenuItem[]> = toObservable(this.actions).pipe(\n    map(this.filterOverflowActions),\n    switchMap((actions) => {\n      return this.getActionTranslationKeys(actions).pipe(map((translations) => ({ actions, translations })))\n    }),\n    switchMap(({ actions, translations }) => {\n      return this.filterActionsBasedOnPermissions(actions).pipe(\n        map((filteredActions) => ({ filteredActions, translations }))\n      )\n    }),\n    map(({ filteredActions, translations }) => this.mapOverflowActionsToMenuItems(filteredActions, translations))\n  )\n  inlineActions$: Observable<Action[]> = toObservable(this.actions).pipe(\n    map(this.filterInlineActions),\n    switchMap((actions) => this.filterActionsBasedOnPermissions(actions))\n  )\n  breadcrumbs$!: Observable<MenuItem[]>\n\n  home$!: Observable<HomeItem>\n\n  figureImageLoadError = signal<boolean>(false)\n\n  objectPanelGridLayoutClasses = signal<string>('grid row-gap-2 m-0')\n  objectPanelColumnLayoutClasses = signal<string>('flex flex-row justify-content-between overflow-x-auto')\n  objectPanelDefaultLayoutClasses = signal<string>('flex flex-column row-gap-2 md:flex-row md:justify-content-between')\n  objectPanelLayoutClasses = computed(() => {\n    const enableGrid = this.enableGridView()\n    if (enableGrid) {\n      return this.objectPanelGridLayoutClasses()\n    }\n    if (enableGrid === false) {\n      return this.objectPanelColumnLayoutClasses()\n    }\n    return this.objectPanelDefaultLayoutClasses()\n  })\n\n  objectInfoGridLayoutClasses = signal<string>('col-12 flex gap-4 md:col-6 align-items-center p-0')\n  objectInfoColumnLayoutClasses = signal<string>('flex flex-column align-items-center gap-2 min-w-120')\n  objectInfoDefaultLayoutClasses = signal<string>('flex flex-row md:flex-column md:align-items-center md:gap-2')\n  objectInfoLayoutClasses = computed(() => {\n    const enableGridView = this.enableGridView()\n    if (enableGridView) {\n      return `${this.objectInfoGridLayoutClasses()} lg:col-${\n        this.gridLayoutDesktopColumns() ? 12 / this.gridLayoutDesktopColumns()! : 4\n      }`\n    }\n    if (enableGridView === false) {\n      return this.objectInfoColumnLayoutClasses()\n    }\n    return this.objectInfoDefaultLayoutClasses()\n  })\n\n  constructor() {\n    this.home$ = concat(\n      of({ menuItem: { icon: PrimeIcons.HOME, routerLink: '/' } }),\n      this.appStateService.currentWorkspace$.pipe(\n        map((workspace) => ({\n          menuItem: {\n            icon: PrimeIcons.HOME,\n            routerLink: workspace.baseUrl,\n          },\n          page: workspace.workspaceName,\n        }))\n      )\n    )\n  }\n\n  ngOnInit(): void {\n    if (this.manualBreadcrumbs()) {\n      this.breadcrumbs$ = this.breadcrumbs.itemsHandler.pipe(\n        tap(() => {\n          setTimeout(() => this.applyBreadcrumbAriaLabels(), 0)\n        })\n      )\n    } else {\n      this.breadcrumbs$ = this.breadcrumbs.generatedItemsSource.pipe(\n        tap(() => {\n          setTimeout(() => this.applyBreadcrumbAriaLabels(), 0)\n        })\n      )\n    }\n  }\n\n  ngAfterViewInit() {\n    this.applyBreadcrumbAriaLabels()\n  }\n\n  onAction(action: string) {\n    switch (action) {\n      case 'save':\n        this.save.emit()\n        break\n      default:\n        break\n    }\n  }\n\n  handleImageError() {\n    this.figureImageLoadError.set(true)\n  }\n\n  public generateItemStyle(item: ObjectDetailItem): string {\n    let style = ''\n    if (item.icon) style = style.concat(style, ' ', 'gap-1 align-items-center')\n    if (item.valueCssClass) style = style.concat(style, ' ', item.valueCssClass)\n    return style\n  }\n\n  private filterInlineActions(actions: Action[]): Action[] {\n    return actions\n      .filter((a) => a.show === 'always')\n      .filter((a) => {\n        if (a.conditional) {\n          return a.showCondition\n        }\n        return true\n      })\n  }\n\n  private filterOverflowActions(actions: Action[]): Action[] {\n    return actions\n      .filter((a) => a.show === 'asOverflow')\n      .filter((a) => {\n        if (a.conditional) {\n          return a.showCondition\n        }\n        return true\n      })\n  }\n\n  private filterActionsBasedOnPermissions(actions: Action[]): Observable<Action[]> {\n    const getPermissions =\n      this.hasPermissionChecker?.getPermissions?.bind(this.hasPermissionChecker) ||\n      this.userService.getPermissions.bind(this.userService)\n    return getPermissions().pipe(\n      map((permissions) => {\n        return actions.filter((action) => {\n          if (action.permission) {\n            return permissions.includes(action.permission!)\n          }\n          return true\n        })\n      })\n    )\n  }\n\n  private getActionTranslationKeys(actions: Action[]): Observable<{ [key: string]: string }> {\n    const translationKeys = [\n      ...actions.map((a) => a.labelKey || '').filter((a) => !!a),\n      ...actions.map((a) => a.titleKey || '').filter((a) => !!a),\n    ]\n    return translationKeys.length ? this.translateService.get(translationKeys) : of({})\n  }\n\n  private mapOverflowActionsToMenuItems(actions: Action[], translations: { [key: string]: string }): MenuItem[] {\n    return actions.map<MenuItem>((a) => ({\n      id: a.id,\n      label: a.labelKey ? translations[a.labelKey] : a.label,\n      icon: a.icon,\n      tooltipOptions: {\n        tooltipLabel: a.titleKey ? translations[a.titleKey] : a.title,\n        tooltipEvent: 'hover',\n        tooltipPosition: 'top',\n      },\n      routerLink: typeof a.routerLink === 'string' ? a.routerLink : undefined,\n      command: typeof a.routerLink === 'string' ? undefined : () => handleActionSync(this.router, a),\n      disabled: a.disabled,\n    }))\n  }\n\n  async onActionClick(action: Action): Promise<void> {\n    await handleAction(this.router, action)\n  }\n\n  private applyBreadcrumbAriaLabels(): void {\n    const breadcrumbHost = this.breadcrumbRef?.nativeElement\n    if (!breadcrumbHost) {\n      return\n    }\n\n    const breadcrumbItems = breadcrumbHost.querySelectorAll(`.p-breadcrumb-item .p-breadcrumb-item-link`)\n    breadcrumbItems.forEach((item: Element, index: number) => {\n      const text = (item as HTMLElement)?.innerText?.trim()\n      if (!text) return\n      \n      this.translateService.get('OCX_PAGE_HEADER.BREADCRUMB_ARIA_LABEL', { breadcrumb: text }).subscribe((ariaLabel) => {\n        this.renderer.setAttribute(item, 'aria-label', ariaLabel)\n      })\n      \n      if (index === breadcrumbItems.length - 1) {\n        this.renderer.setAttribute(item, 'aria-current', 'page')\n      }\n    })\n  }\n}\n","<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n  @if (showBreadcrumbs()) { @if (breadcrumbs$ | async ; as items) {\n  <p-breadcrumb\n    #breadcrumbRef\n    id=\"pageHeaderBreadcrumb\"\n    [model]=\"items\"\n    [home]=\"(home$ | async)?.menuItem ?? {}\"\n    [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n    [attr.manual]=\"manualBreadcrumbs()\"\n  ></p-breadcrumb>\n  } }\n  <div class=\"title-bar flex flex-row md:justify-content-between align-items-center p-3\">\n    <div class=\"title-wrap\">\n      @if (showFigure()) {\n      <div class=\"mr-2 figure relative flex h-2rem w-2rem md:h-3rem md:w-3rem\">\n        <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n          <ng-content select=\"[figureImage]\"></ng-content>\n          @if (figureImage() && !figureImageLoadError()) {\n          <img\n            [ocxSrc]=\"figureImage()\"\n            alt=\"Figure Image\"\n            class=\"w-full border-round-sm\"\n            (error)=\"handleImageError()\"\n          />\n          }\n        </div>\n        @if (previewImage.children.length === 0 || figureImageLoadError()) {\n        <div class=\"colorblob flex-1 border-round\"></div>\n        }\n      </div>\n      } @if (!loading()) {\n      <div class=\"header\">\n        @if (!!header()) {\n        <h1 id=\"page-header\">{{ header() }}</h1>\n        } @if (!!subheader()) {\n        <div id=\"page-subheader\" role=\"note\" [attr.aria-label]=\"'OCX_PAGE_HEADER.SUBHEADER' | translate\">\n          {{ subheader() }}\n        </div>\n        }\n      </div>\n      } @else {\n      <div class=\"header justify-content-evenly\">\n        <p-skeleton width=\"10rem\"></p-skeleton>\n        <p-skeleton width=\"10rem\"></p-skeleton>\n      </div>\n      }\n    </div>\n\n    <div class=\"action-items-wrap mt-2 md:mt-0\">\n      @if (_additionalToolbarContentLeft()) {\n      <ng-container [ngTemplateOutlet]=\"_additionalToolbarContentLeft()\"> </ng-container>\n      } @if (!loading()) { @if( inlineActions$ | async; as inlineActions) { @if (inlineActions && inlineActions.length >\n      0) {\n      <div class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n        @for (action of inlineActions; track action) {\n        <span\n          [ocxTooltip]=\"action.disabled ? (action.disabledTooltipKey ? (action.disabledTooltipKey | translate) : action.disabledTooltip) : (action.titleKey ? (action.titleKey | translate) : action.title)\"\n          tooltipPosition=\"top\"\n          tooltipEvent=\"hover\"\n        >\n          @if (typeof action.routerLink === 'string' && !action.disabled) {\n          <a\n            pButton\n            [id]=\"action.id\"\n            [icon]=\"action.icon ?? ''\"\n            [iconPos]=\"action.iconPos ?? 'left'\"\n            class=\"action-button no-underline\"\n            [ngClass]=\"action.btnClass\"\n            [routerLink]=\"action.routerLink\"\n            [attr.data-testid]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n            [attr.aria-label]=\" (action.ariaLabelKey ? (action.ariaLabelKey | translate) : action.ariaLabel) || (action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n            >{{ action.labelKey ? (action.labelKey | translate) : action.label }}</a\n          >\n          } @else {\n          <p-button\n            [id]=\"action.id\"\n            [icon]=\"action.icon ?? ''\"\n            [iconPos]=\"action.iconPos ?? 'left'\"\n            type=\"button\"\n            class=\"action-button\"\n            (onClick)=\"onActionClick(action)\"\n            [disabled]=\"action.disabled ? action.disabled : false\"\n            [loading]=\"action.loading ?? false\"\n            [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n            [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n            [ariaLabel]=\" (action.ariaLabelKey ? (action.ariaLabelKey | translate) : action.ariaLabel) || (action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n          ></p-button>\n          }\n        </span>\n        }\n      </div>\n      } }\n      <ng-content select=\"[toolbarItems]\"></ng-content>\n      <ng-container>\n        @if(overflowActions$ | async; as overflowActions) {@if (overflowActions.length !== 0) {\n        <div>\n          <button\n            id=\"pageHeaderMenuButton\"\n            type=\"button\"\n            pButton\n            icon=\"pi pi-ellipsis-v\"\n            class=\"more-actions-menu-button action-button ml-2\"\n            (click)=\"menu.toggle($event)\"\n            name=\"ocx-page-header-overflow-action-button\"\n            [attr.aria-label]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n            [ocxTooltip]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n            tooltipEvent=\"hover\"\n            tooltipPosition=\"top\"\n          ></button>\n          <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n        </div>\n        } }\n      </ng-container>\n      } @else {\n      <div class=\"flex\">\n        <p-skeleton shape=\"circle\" size=\"2rem\" class=\"mr-2\"></p-skeleton>\n        <p-skeleton shape=\"circle\" size=\"2rem\" class=\"mb-2\"></p-skeleton>\n      </div>\n      } @if (_additionalToolbarContent()) {\n      <ng-container [ngTemplateOutlet]=\"_additionalToolbarContent()\"> </ng-container>\n      }\n    </div>\n  </div>\n\n  <div class=\"object-panel\" [ngClass]=\"objectPanelLayoutClasses()\">\n    @if (objectDetails()) { @for (item of objectDetails(); track item) {\n    <div class=\"object-info\" [ngClass]=\"objectInfoLayoutClasses()\">\n      <span\n        class=\"flex font-medium text-600 object-info-grid-label\"\n        name=\"object-detail-label\"\n        [ocxTooltip]=\"item.labelTooltipKey ? ((typeof item.labelTooltipKey === 'string' ? item.labelTooltipKey : item.labelTooltipKey.key) | translate : (typeof item.labelTooltipKey === 'object' ? item.labelTooltipKey.parameters : undefined)) : ''\"\n        tooltipEvent=\"hover\"\n        tooltipPosition=\"top\"\n      >\n        {{ item.label | dynamicPipe:item.labelPipe }}\n      </span>\n      @if (item.icon || item.value) {\n      <span class=\"object-info-grid-value\">\n        <span\n          class=\"flex text-900 align-items-center gap-2 w-max\"\n          [ngClass]=\"generateItemStyle(item)\"\n          name=\"object-detail-value\"\n        >\n          <span\n            class=\"flex align-items-center gap-2\"\n            [ocxTooltip]=\"item.valueTooltipKey ? ((typeof item.valueTooltipKey === 'string' ? item.valueTooltipKey : item.valueTooltipKey.key) | translate : (typeof item.valueTooltipKey === 'object' ? item.valueTooltipKey.parameters : undefined)) : ''\"\n            tooltipEvent=\"hover\"\n            tooltipPosition=\"top\"\n          >\n            @if (item.icon) {\n            <i [class]=\"item.icon + ' ' + (item.iconStyleClass ?? '')\" name=\"object-detail-icon\" aria-hidden=\"true\"></i>\n            } {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}\n          </span>\n          @if (item.actionItemIcon && item.actionItemCallback) {\n          <p-button\n            [icon]=\"item.actionItemIcon\"\n            styleClass=\"p-button-text p-0 w-full\"\n            [ariaLabel]=\"item.actionItemAriaLabelKey ? ((typeof item.actionItemAriaLabelKey === 'string' ? item.actionItemAriaLabelKey : item.actionItemAriaLabelKey.key) | translate : (typeof item.actionItemAriaLabelKey === 'object' ? item.actionItemAriaLabelKey.parameters : undefined)) : 'button for ' + item.actionItemIcon\"\n            [ocxTooltip]=\"item.actionItemTooltipKey ? ((typeof item.actionItemTooltipKey === 'string' ? item.actionItemTooltipKey : item.actionItemTooltipKey.key) | translate : (typeof item.actionItemTooltipKey === 'object' ? item.actionItemTooltipKey.parameters : undefined)) : ''\"\n            tooltipPosition=\"top\"\n            tooltipEvent=\"hover\"\n            (onClick)=\"item.actionItemCallback()\"\n          ></p-button>\n          }\n        </span>\n      </span>\n      }\n    </div>\n    } }\n    <ng-content></ng-content>\n  </div>\n</div>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Output,\n  Signal,\n  TemplateRef,\n  contentChild,\n  contentChildren,\n  effect,\n  inject,\n  input,\n  model,\n  output,\n  signal,\n  untracked,\n  viewChild,\n} from '@angular/core'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport { FormControlName, FormGroup } from '@angular/forms'\nimport {\n  Observable,\n  combineLatest,\n  debounceTime,\n  filter,\n  firstValueFrom,\n  from,\n  map,\n  mergeMap,\n  of,\n  startWith,\n} from 'rxjs'\nimport { getLocation } from '@onecx/accelerator'\nimport { CONFIG_KEY, ConfigurationService } from '@onecx/angular-integration-interface'\nimport { Action } from '../page-header/page-header.component'\nimport { observableOutput } from '../../utils/observable-output.utils'\nimport { PermissionInput } from '../../model/permission.model'\nimport { LiveAnnouncer } from '@angular/cdk/a11y'\nimport { TranslateService } from '@ngx-translate/core'\n\nexport interface SearchHeaderComponentState {\n  activeViewMode?: 'basic' | 'advanced'\n  selectedSearchConfig?: string | null\n}\n\nexport interface SearchConfigData {\n  name: string | undefined\n  fieldValues: { [key: string]: string }\n  displayedColumnsIds: string[]\n  viewMode: 'basic' | 'advanced'\n}\n\n/**\n * To trigger the search when Enter key is pressed inside a search parameter field,\n * an EventListener for keyup enter event is added for HTML elements which have an input.\n * Please add the EventListener yourself manually, if you want to have that functionality for some other elements\n * which do not have an input element.\n */\n@Component({\n  standalone: false,\n  selector: 'ocx-search-header',\n  templateUrl: './search-header.component.html',\n  providers: [],\n})\nexport class SearchHeaderComponent {\n  private readonly translate = inject(TranslateService)\n  private readonly liveAnnouncer = inject(LiveAnnouncer)\n  header = input<string>('')\n  subheader = input<string | undefined>(undefined)\n\n  loading = input<boolean>(false)\n\n  viewMode = model<'basic' | 'advanced'>('basic')\n\n  manualBreadcrumbs = input<boolean>(false)\n\n  actions = input<Action[]>([])\n  searchResultsCount = input<number | null>(null)\n\n  searchConfigPermission = input<PermissionInput>(undefined)\n  searchButtonDisabled = input<boolean>(false)\n  resetButtonDisabled = input<boolean>(false)\n  pageName = input<string | undefined>(getLocation().applicationPath)\n\n  searched = output<void>()\n  @Output() resetted = observableOutput<void>()\n\n  @Output() selectedSearchConfigChanged = observableOutput<SearchConfigData | undefined>()\n  viewModeChanged = output<'basic' | 'advanced'>()\n  componentStateChanged = output<SearchHeaderComponentState>()\n  _additionalToolbarContent = contentChild<TemplateRef<any>>('additionalToolbarContent')\n\n  _additionalToolbarContentLeft = contentChild<TemplateRef<any>>('additionalToolbarContentLeft')\n\n  get searchConfigChangeObserved(): Signal<boolean> {\n    return this.selectedSearchConfigChanged.observed\n  }\n\n  formGroup = contentChild<FormGroup | undefined>(FormGroup)\n  visibleFormControls = contentChildren<FormControlName>(FormControlName, { descendants: true })\n\n  searchParameterFields = viewChild<ElementRef | undefined>('searchParameterFields')\n\n  hasAdvanced = signal<boolean>(false)\n\n  simpleAdvancedAction: Action = {\n    id: 'simpleAdvancedButton',\n    actionCallback: () => this.toggleViewMode(),\n    show: 'always',\n  }\n\n  headerActions = signal<Action[]>([])\n\n  searchButtonsReversed$: Observable<boolean | null> = of(null)\n  fieldValues$: Observable<{ [key: string]: unknown }> | undefined = combineLatest([\n    toObservable(this.formGroup).pipe(\n      filter((fg) => !!fg),\n      mergeMap((fg) => fg.valueChanges.pipe(startWith({})))\n    ),\n    toObservable(this.visibleFormControls).pipe(startWith(null)),\n  ]).pipe(\n    debounceTime(100),\n    map(([values, _]) =>\n      Object.entries(values ?? {}).reduce(\n        (acc, [key, value]) => ({\n          ...acc,\n          [key]: this.isVisible(key) ? value || undefined : undefined,\n        }),\n        {}\n      )\n    )\n  )\n  searchConfigChangedSlotEmitter: EventEmitter<SearchConfigData | undefined> = new EventEmitter()\n\n  constructor() {\n    effect(() => {\n      const viewMode = this.viewMode()\n      untracked(() => {\n        this.viewModeChanged?.emit(viewMode)\n        this.componentStateChanged.emit({\n          activeViewMode: viewMode,\n        })\n      })\n    })\n\n    // Update header actions whenever view mode, advanced availability or actions input changes\n    effect(() => {\n      this.viewMode()\n      this.hasAdvanced()\n      this.actions()\n      untracked(() => {\n        this.updateHeaderActions()\n        setTimeout(() => this.addKeyUpEventListener())\n      })\n    })\n\n    this.announceSearchResults()\n\n    const configurationService = inject(ConfigurationService)\n\n    this.searchConfigChangedSlotEmitter.subscribe((config) => {\n      this.componentStateChanged.emit({\n        selectedSearchConfig: config?.name ?? null,\n      })\n      this.selectedSearchConfigChanged.emit(config)\n    })\n    this.searchButtonsReversed$ = from(\n      configurationService.getProperty(CONFIG_KEY.ONECX_PORTAL_SEARCH_BUTTONS_REVERSED)\n    ).pipe(map((config) => config === 'true'))\n  }\n\n  toggleViewMode() {\n    this.viewMode.update((current) => (current === 'basic' ? 'advanced' : 'basic'))\n  }\n\n  onResetClicked() {\n    this.resetted.emit()\n  }\n\n  onSearchClicked() {\n    this.searched.emit()\n  }\n\n  updateHeaderActions() {\n    const headerActions: Action[] = []\n\n    if (this.hasAdvanced()) {\n      const simpleAdvancedAction = this.simpleAdvancedAction\n      simpleAdvancedAction.labelKey =\n        this.viewMode() === 'basic'\n          ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.TEXT'\n          : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.TEXT'\n      simpleAdvancedAction.titleKey =\n        this.viewMode() === 'basic'\n          ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.DETAIL'\n          : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.DETAIL'\n\n      headerActions.push(simpleAdvancedAction)\n    }\n\n    this.headerActions.set(headerActions.concat(this.actions()))\n  }\n\n  addKeyUpEventListener() {\n    const inputElements = this.searchParameterFields()?.nativeElement.querySelectorAll('input')\n    inputElements.forEach((inputElement: any) => {\n      if (!inputElement.listenerAdded) {\n        inputElement.addEventListener('keyup', (event: any) => this.onSearchKeyup(event))\n        inputElement.listenerAdded = true\n      }\n    })\n  }\n\n  onSearchKeyup(event: any) {\n    if (event.code === 'Enter') {\n      this.onSearchClicked()\n    }\n  }\n\n  private isVisible(control: string) {\n    return this.visibleFormControls().some(\n      (formControl) => formControl.name !== null && String(formControl.name) === control\n    )\n  }\n\n  private announceSearchResults() {\n    effect(() => {\n      let announmentKey = ''\n      if (this.loading()) {\n        announmentKey = 'OCX_SEARCH_HEADER.ANNOUNCEMENTS.SEARCHING'\n      } else if (!this.loading() && !this.searchResultsCount()) {\n        announmentKey = 'OCX_SEARCH_HEADER.ANNOUNCEMENTS.NO_RESULTS'\n      } else {\n        announmentKey = 'OCX_SEARCH_HEADER.ANNOUNCEMENTS.RESULTS_FOUND'\n      }\n\n      firstValueFrom(\n        this.translate.get(announmentKey, {\n          count: !this.loading() && this.searchResultsCount() ? this.searchResultsCount() : null,\n        })\n      ).then((translatedText: string) => {\n        this.liveAnnouncer.announce(translatedText, 'polite')\n      })\n    })\n  }\n}\n","<ng-template #searchBtn>\n  <p-button\n    id=\"searchButton\"\n    icon=\"pi pi-search\"\n    (onClick)=\"onSearchClicked()\"\n    (keydown.enter)=\"onSearchClicked()\"\n    (keydown.space)=\"onSearchClicked()\"\n    [disabled]=\"searchButtonDisabled() || formGroup()?.invalid\"\n    [label]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate\"\n    [ariaLabel]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.ARIA_LABEL' | translate\"\n    [ocxTooltip]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n    tooltipPosition=\"top\"\n    tooltipEvent=\"hover\"\n  ></p-button>\n</ng-template>\n<ng-template #resetBtn>\n  <p-button\n    id=\"resetButton\"\n    icon=\"pi pi-eraser\"\n    (onClick)=\"onResetClicked()\"\n    (keydown.enter)=\"onResetClicked()\"\n    (keydown.space)=\"onResetClicked()\"\n    [disabled]=\"resetButtonDisabled()\"\n    [label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate\"\n    [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.ARIA_LABEL' | translate\"\n    [ocxTooltip]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n    tooltipPosition=\"top\"\n    tooltipEvent=\"hover\"\n  ></p-button>\n</ng-template>\n\n<ocx-page-header\n  [header]=\"header() || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n  [subheader]=\"subheader()\"\n  [manualBreadcrumbs]=\"manualBreadcrumbs()\"\n  [actions]=\"headerActions()\"\n>\n  <ng-template #additionalToolbarContentLeft>\n    @if (searchConfigChangeObserved() && pageName()) {\n    <ocx-slot\n      *ocxIfPermission=\"searchConfigPermission()\"\n      name=\"onecx-search-config\"\n      [inputs]=\"{ pageName: pageName(), currentFieldValues: fieldValues$ | async, viewMode: viewMode() }\"\n      [outputs]=\"{ searchConfigSelected: searchConfigChangedSlotEmitter }\"\n    >\n      <ng-template #skeleton>\n        <div class=\"flex\">\n          <p-skeleton width=\"18rem\" height=\"3rem\"></p-skeleton>\n        </div>\n      </ng-template>\n    </ocx-slot>\n    } @if (_additionalToolbarContentLeft()) {\n    <ng-container [ngTemplateOutlet]=\"_additionalToolbarContentLeft()\"></ng-container>\n    }\n  </ng-template>\n  <ng-template #additionalToolbarContent>\n    @if (_additionalToolbarContent()) {\n    <ng-container [ngTemplateOutlet]=\"_additionalToolbarContent()\"></ng-container>\n    }\n  </ng-template>\n  <div class=\"flex row-gap-3 column-gap-6 flex-wrap align-items-center\">\n    <section #searchParameterFields [attr.aria-label]=\"'Search Criteria'\">\n      <ng-content></ng-content>\n    </section>\n    <section\n      class=\"flex flex-wrap gap-2\"\n      [ngClass]=\"'flex-row'\"\n      [attr.aria-label]=\"'OCX_SEARCH_HEADER.CONTROLS.ARIA_LABEL' | translate\"\n    >\n      @let searchButtonsReversed = (searchButtonsReversed$ | async);\n      @if (searchButtonsReversed !== null) {\n        @if (searchButtonsReversed) {\n          <ng-container [ngTemplateOutlet]=\"searchBtn\"></ng-container>\n          @if (resetted.observed()) {\n            <ng-container [ngTemplateOutlet]=\"resetBtn\"></ng-container>\n          }\n        } @else {\n          @if (resetted.observed()) {\n            <ng-container [ngTemplateOutlet]=\"resetBtn\"></ng-container>\n          }\n          <ng-container [ngTemplateOutlet]=\"searchBtn\"></ng-container>\n        }\n      }\n    </section>\n  </div>\n</ocx-page-header>\n","import { Directive, DoCheck, TemplateRef, ViewContainerRef, inject } from '@angular/core'\nimport { SearchHeaderComponent } from '../components/search-header/search-header.component'\n\n@Directive({ selector: '[ocxAdvanced]', standalone: false })\nexport class AdvancedDirective implements DoCheck {\n  private readonly viewContainer = inject(ViewContainerRef)\n  private readonly templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n  private readonly searchHeader = inject(SearchHeaderComponent, { optional: true })\n\n  constructor() {\n    const searchHeader = this.searchHeader\n\n    if (!searchHeader) {\n      throw new Error('Advanced directive can only be used inside search header component')\n    }\n    searchHeader.hasAdvanced.set(true)\n  }\n  ngDoCheck(): void {\n    if (this.searchHeader?.viewMode() === 'advanced') {\n      if (this.templateRef && !this.viewContainer.length) {\n        this.viewContainer.createEmbeddedView(this.templateRef)\n      }\n    } else {\n      this.viewContainer.clear()\n    }\n  }\n}\n","import {\n  AfterViewInit,\n  Directive,\n  Input,\n  OnDestroy,\n  Renderer2,\n  TemplateRef,\n  inject,\n} from '@angular/core'\nimport { TooltipStyle } from 'primeng/tooltip'\nimport { OcxTooltipDirective } from './tooltip.directive'\n\n@Directive({ selector: '[ocxTooltipOnOverflow]', standalone: false, providers: [TooltipStyle] })\nexport class TooltipOnOverflowDirective extends OcxTooltipDirective implements OnDestroy, AfterViewInit {\n  mutationObserver = new MutationObserver(() => {\n    this.zone.run(() => {\n      this.disabled = this.el.nativeElement.scrollWidth <= this.el.nativeElement.offsetWidth\n      this.setOption({ disabled: this.disabled })\n    }, this)\n  })\n\n  @Input()\n  get ocxTooltipOnOverflow(): string | TemplateRef<HTMLElement> | undefined {\n    return this.content\n  }\n  set ocxTooltipOnOverflow(value: string | TemplateRef<HTMLElement> | undefined) {\n    this.content = value\n    this.setOption({ tooltipLabel: value })\n  }\n\n  override ngOnDestroy(): void {\n    super.ngOnDestroy()\n    this.mutationObserver.disconnect()\n  }\n\n  override ngAfterViewInit(): void {\n    super.ngAfterViewInit()\n    setTimeout(() => {\n      // Needed to ensure change detection picks up the correct state of 'disabled'\n      // Without this the tooltip for some elements won't update properly\n      this.zone.run(() => {\n        this.disabled = this.el.nativeElement.scrollWidth <= this.el.nativeElement.offsetWidth\n        this.setOption({ disabled: this.disabled })\n      }, this)\n      this.mutationObserver.observe(this.el.nativeElement, { subtree: true, characterData: true, childList: true })\n    }, 0)\n  }\n  constructor() {\n    const renderer = inject(Renderer2)\n\n    super()\n    renderer.setStyle(this.el.nativeElement, 'text-overflow', 'ellipsis')\n    renderer.setStyle(this.el.nativeElement, 'overflow', 'hidden')\n    renderer.setStyle(this.el.nativeElement, 'white-space', 'nowrap')\n    this.disabled = true\n    this.setOption({ disabled: this.disabled })\n  }\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core'\n\n@Directive({ selector: '[ocxTemplate]', standalone: false })\nexport class TemplateDirective {\n  template = inject<TemplateRef<any>>(TemplateRef)\n\n  ocxTemplate = input.required<string>()\n\n  getType(): string {\n    return this.ocxTemplate()\n  }\n}\n","import { Directive, DoCheck, TemplateRef, ViewContainerRef, inject } from '@angular/core'\nimport { SearchHeaderComponent } from '../components/search-header/search-header.component'\n\n@Directive({ selector: '[ocxBasic]', standalone: false })\nexport class BasicDirective implements DoCheck {\n  private readonly viewContainer = inject(ViewContainerRef)\n  private readonly templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n  private readonly searchHeader = inject(SearchHeaderComponent, { optional: true })\n\n  constructor() {\n    const searchHeader = this.searchHeader\n\n    if (!searchHeader) {\n      throw new Error('Basic directive can only be used inside search header component')\n    }\n  }\n  ngDoCheck(): void {\n    if (this.searchHeader?.viewMode() === 'basic') {\n      if (this.templateRef && !this.viewContainer.length) {\n        this.viewContainer.createEmbeddedView(this.templateRef)\n      }\n    } else {\n      this.viewContainer.clear()\n    }\n  }\n}\n","import { Component } from '@angular/core'\n\n@Component({\n  standalone: false,\n  selector: 'ocx-loading-indicator',\n  templateUrl: './loading-indicator.component.html',\n  styleUrls: ['./loading-indicator.component.scss'],\n})\nexport class LoadingIndicatorComponent {}\n","<div class=\"full-overlay\">\n  <div class=\"overlay\">\n    <span class=\"loader\"></span>\n  </div>\n</div>","import { ComponentRef, Directive, ElementRef, Renderer2, ViewContainerRef, effect, inject, input } from '@angular/core'\nimport { LoadingIndicatorComponent } from '../components/loading-indicator/loading-indicator.component'\n\n@Directive({\n  selector: '[ocxLoadingIndicator]',\n  standalone: false,\n})\nexport class LoadingIndicatorDirective {\n  private readonly viewContainerRef = inject(ViewContainerRef)\n  private readonly el = inject(ElementRef)\n  private readonly renderer = inject(Renderer2)\n\n  ocxLoadingIndicator = input<boolean>(false)\n  overlayFullPage = input<boolean>(false)\n  isLoaderSmall = input<boolean>(false)\n\n  private componentRef: ComponentRef<LoadingIndicatorComponent> | undefined\n  private loaderElement: HTMLDivElement | undefined\n\n  constructor() {\n    effect(() => {\n      this.toggleLoadingIndicator()\n    })\n  }\n\n  private elementLoader() {\n    this.renderer.addClass(this.el.nativeElement, 'element-overlay')\n    this.loaderElement = document.createElement('div')\n    this.loaderElement.className = 'loader'\n    if (this.isLoaderSmall()) {\n      this.loaderElement.className = 'loader loader-small'\n    }\n    this.renderer.appendChild(this.el.nativeElement, this.loaderElement)\n  }\n\n  private toggleLoadingIndicator() {\n    if (this.ocxLoadingIndicator()) {\n      if (this.overlayFullPage()) {\n        this.componentRef = this.viewContainerRef.createComponent(LoadingIndicatorComponent)\n      } else {\n        this.elementLoader()\n      }\n    } else {\n      this.viewContainerRef.clear()\n      if (this.componentRef) {\n        this.componentRef.destroy()\n      } else {\n        this.renderer.removeClass(this.el.nativeElement, 'element-overlay')\n        if (this.loaderElement) { \n          this.loaderElement.remove()\n        }\n      }\n    }\n  }\n}\n","import { Component, OnInit, computed, effect, input, model, output } from '@angular/core'\nimport { DataTableColumn } from '../../model/data-table-column.model'\n\nexport type GroupSelectionChangedEvent = { activeColumns: DataTableColumn[]; groupKey: string }\nexport interface ColumnGroupSelectionComponentState {\n  activeColumnGroupKey?: string\n  displayedColumns?: DataTableColumn[]\n}\n\n@Component({\n  standalone: false,\n  templateUrl: './column-group-selection.component.html',\n  selector: 'ocx-column-group-selection',\n  styleUrls: ['./column-group-selection.component.scss'],\n})\nexport class ColumnGroupSelectionComponent implements OnInit {\n  readonly selectedGroupKey = model<string>('')\n\n  readonly columns = input<DataTableColumn[]>([])\n  readonly placeholderKey = input<string>('')\n  readonly defaultGroupKey = input<string>('')\n  readonly customGroupKey = input<string>('')\n\n  readonly groupSelectionChanged = output<GroupSelectionChangedEvent>()\n  readonly componentStateChanged = output<ColumnGroupSelectionComponentState>()\n\n  readonly allGroupKeys = computed<string[]>(() => {\n    const columns = this.columns()\n    const selectedGroupKey = this.selectedGroupKey()\n    const defaultGroupKey = this.defaultGroupKey()\n\n    return columns\n      .flatMap((c) => c.predefinedGroupKeys || [])\n      .concat([defaultGroupKey])\n      .concat([selectedGroupKey])\n      .filter((value) => !!value)\n      .filter((value, index, self) => self.indexOf(value) === index && value != null)\n  })\n\n  constructor() {\n    effect(() => {\n      const selected = this.selectedGroupKey()\n      const custom = this.customGroupKey()\n\n      if (selected === custom) {\n        this.componentStateChanged.emit({\n          activeColumnGroupKey: selected,\n        })\n      }\n    })\n  }\n\n  ngOnInit() {\n    const selected = this.selectedGroupKey()\n\n    if (selected === this.customGroupKey()) {\n      this.componentStateChanged.emit({\n        activeColumnGroupKey: selected,\n      })\n      return\n    }\n\n    const activeColumns = this.columns().filter((c) =>\n      c.predefinedGroupKeys?.includes(selected ?? this.defaultGroupKey())\n    )\n\n    this.componentStateChanged.emit({\n      activeColumnGroupKey: selected,\n      displayedColumns: activeColumns,\n    })\n  }\n\n  changeGroupSelection(event: { value: string }) {\n    if (event.value === this.customGroupKey()) {\n      return\n    }\n\n    // keep ngModel / model() in sync (PrimeNG also updates via ngModel)\n    this.selectedGroupKey.set(event.value)\n\n    const activeColumns = this.columns().filter((c) => c.predefinedGroupKeys?.includes(event.value))\n\n    this.groupSelectionChanged.emit({ activeColumns, groupKey: event.value })\n    this.componentStateChanged.emit({\n      activeColumnGroupKey: event.value,\n      displayedColumns: activeColumns,\n    })\n  }\n}\n","<p-floatlabel variant=\"on\">\n  @if (allGroupKeys().length) {\n  <p-select\n    class=\"p-inputwrapper-filled\"\n    inputId=\"columnGroupSelectionDropdown\"\n    id=\"columnGroupSelectionDropdownElement\"\n    (onChange)=\"changeGroupSelection($event)\"\n    [options]=\"allGroupKeys()\"\n    [placeholder]=\"placeholderKey() | translate\"\n    [(ngModel)]=\"selectedGroupKey\"\n    [ariaLabel]=\"'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABEL' | translate\"\n  >\n    <ng-template let-item #item> {{ item ? (item | translate) : ''}} </ng-template>\n    <ng-template let-item #selectedItem> {{ item ? (item | translate) : ''}} </ng-template>\n  </p-select>\n  } @if (allGroupKeys().length) {\n  <label for=\"columnGroupSelectionDropdown\"\n    >{{ (\"OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DROPDOWN_LABEL\" | translate) }}</label\n  >\n  }\n</p-floatlabel>\n","import { Component, input } from '@angular/core'\n\n@Component({\n  standalone: false,\n  selector: 'ocx-content',\n  templateUrl: './content.component.html',\n})\nexport class OcxContentComponent {\n  /**\n   * Optionally allows specifying a title for the content card\n   */\n  title = input<string>('')\n\n  /**\n   * Optionally allows specifying styles for the content card\n   */\n  styleClass = input<string | undefined>(undefined)\n}\n","<div [ocxContent]=\"title()\" [ngClass]=\"styleClass()\">\n  <ng-content></ng-content>\n</div>\n","import { Component, input } from '@angular/core'\n\n@Component({\n  standalone: false,\n  selector: 'ocx-content-container',\n  templateUrl: './content-container.component.html',\n})\nexport class OcxContentContainerComponent {\n  /**\n   * Allows specifying the layout direction of the container\n   */\n  layout = input<'vertical' | 'horizontal'>('horizontal')\n\n  /**\n   * Allows specifying the breakpoint below which a horizontal layout switches to a vertical layout.\n   * Only necessary if horizontal layout is used\n   * Default: md\n   */\n  breakpoint = input<'sm' | 'md' | 'lg' | 'xl'>('md')\n\n  /**\n   * Optionally allows specifying styles for the container\n   */\n  styleClass = input<string | undefined>(undefined)\n}\n","<div ocxContentContainer [layout]=\"layout()\" [breakpoint]=\"breakpoint()\" [ngClass]=\"styleClass()\">\n  <ng-content></ng-content>\n</div>\n","import { Component, OnInit, computed, effect, input, model, output, signal } from '@angular/core'\nimport { DataTableColumn } from '../../model/data-table-column.model'\n\nexport type ColumnSelectionChangedEvent = { activeColumns: DataTableColumn[] }\nexport type ActionColumnChangedEvent = {\n  frozenActionColumn: boolean\n  actionColumnPosition: 'left' | 'right'\n}\n\nexport interface CustomGroupColumnSelectorComponentState {\n  actionColumnConfig?: {\n    frozen: boolean\n    position: 'left' | 'right'\n  }\n  displayedColumns?: DataTableColumn[]\n  activeColumnGroupKey?: string\n}\n\n@Component({\n  standalone: false,\n  selector: 'ocx-custom-group-column-selector',\n  templateUrl: './custom-group-column-selector.component.html',\n  styleUrls: ['./custom-group-column-selector.component.scss'],\n})\nexport class CustomGroupColumnSelectorComponent implements OnInit {\n  readonly columns = input<DataTableColumn[]>([])\n  readonly displayedColumns = model<DataTableColumn[]>([])\n  readonly customGroupKey = input<string>('')\n  readonly dialogTitle = input<string>('')\n  readonly dialogTitleKey = input<string>('')\n  readonly openButtonTitle = input<string>('')\n  readonly openButtonTitleKey = input<string>('')\n  readonly openButtonAriaLabel = input<string>('')\n  readonly openButtonAriaLabelKey = input<string>('')\n  readonly saveButtonLabel = input<string>('')\n  readonly saveButtonLabelKey = input<string>('')\n  readonly saveButtonAriaLabel = input<string>('')\n  readonly saveButtonAriaLabelKey = input<string>('')\n  readonly cancelButtonLabel = input<string>('')\n  readonly cancelButtonLabelKey = input<string>('')\n  readonly cancelButtonAriaLabel = input<string>('')\n  readonly cancelButtonAriaLabelKey = input<string>('')\n  readonly activeColumnsLabel = input<string>('')\n  readonly activeColumnsLabelKey = input<string>('')\n  readonly inactiveColumnsLabel = input<string>('')\n  readonly inactiveColumnsLabelKey = input<string>('')\n\n  readonly frozenActionColumn = input<boolean>(false)\n  readonly actionColumnPosition = input<'left' | 'right'>('right')\n\n  readonly columnSelectionChanged = output<ColumnSelectionChangedEvent>()\n  readonly actionColumnConfigChanged = output<ActionColumnChangedEvent>()\n  readonly componentStateChanged = output<CustomGroupColumnSelectorComponentState>()\n\n  readonly hiddenColumnsModel = signal<DataTableColumn[]>([])\n  readonly displayedColumnsModel = signal<DataTableColumn[]>([])\n  readonly frozenActionColumnModel = signal<boolean>(false)\n  readonly actionColumnPositionModel = signal<'left' | 'right'>('right')\n  readonly visible = signal<boolean>(false)\n\n  readonly alignmentOptions = signal<{ label: string; value: 'left' | 'right' }[]>([\n    {\n      label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.LEFT',\n      value: 'left',\n    },\n    {\n      label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.RIGHT',\n      value: 'right',\n    },\n  ])\n\n  readonly frozenOptions = signal<{ label: string; value: boolean }[]>([\n    {\n      label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.YES',\n      value: true,\n    },\n    {\n      label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.NO',\n      value: false,\n    },\n  ])\n\n  private readonly _actionColumnState = computed(() => ({\n    frozen: this.frozenActionColumn(),\n    position: this.actionColumnPosition(),\n  }))\n\n  constructor() {\n    effect(() => {\n      this.componentStateChanged.emit({\n        actionColumnConfig: this._actionColumnState(),\n        displayedColumns: this.displayedColumns(),\n      })\n    })\n  }\n\n  ngOnInit(): void {\n    this.componentStateChanged.emit({\n      actionColumnConfig: this._actionColumnState(),\n      displayedColumns: this.displayedColumns(),\n    })\n  }\n\n  onOpenCustomGroupColumnSelectionDialogClick() {\n    this.displayedColumnsModel.set([...this.displayedColumns()])\n\n    const displayedIds = new Set(this.displayedColumnsModel().map((c) => c.id))\n    this.hiddenColumnsModel.set(this.columns().filter((column) => !displayedIds.has(column.id)))\n\n    this.frozenActionColumnModel.set(this.frozenActionColumn())\n    this.actionColumnPositionModel.set(this.actionColumnPosition())\n    this.visible.set(true)\n  }\n\n  onSaveClick() {\n    this.visible.set(false)\n\n    const before = this.displayedColumns().map((column) => column.id)\n    const after = this.displayedColumnsModel().map((column) => column.id)\n\n    if (!after.every((colId, i) => colId === before[i]) || after.length !== before.length) {\n      this.columnSelectionChanged.emit({ activeColumns: [...this.displayedColumnsModel()] })\n      this.componentStateChanged.emit({\n        displayedColumns: [...this.displayedColumnsModel()],\n      })\n    }\n\n    if (\n      this.frozenActionColumn() !== this.frozenActionColumnModel() ||\n      this.actionColumnPosition() !== this.actionColumnPositionModel()\n    ) {\n      this.actionColumnConfigChanged.emit({\n        frozenActionColumn: this.frozenActionColumnModel(),\n        actionColumnPosition: this.actionColumnPositionModel(),\n      })\n\n      this.componentStateChanged.emit({\n        displayedColumns: [...this.displayedColumnsModel()],\n        actionColumnConfig: {\n          frozen: this.frozenActionColumnModel(),\n          position: this.actionColumnPositionModel(),\n        },\n        activeColumnGroupKey: this.customGroupKey(),\n      })\n    }\n  }\n\n  onCancelClick() {\n    this.visible.set(false)\n  }\n}\n","<p-button\n  id=\"customGroupColumnSelectorButton\"\n  type=\"button\"\n  (onClick)=\"onOpenCustomGroupColumnSelectionDialogClick()\"\n  [ocxTooltip]=\"openButtonTitle() || (openButtonTitleKey() | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.OPEN_BUTTON_DETAIL' | translate)\"\n  tooltipPosition=\"top\"\n  icon=\"pi pi-cog\"\n  styleClass=\"p-button\"\n  [ariaLabel]=\"(openButtonAriaLabelKey() ? (openButtonAriaLabelKey() | translate) : openButtonAriaLabel()) || openButtonTitle() || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.OPEN_BUTTON_DETAIL' | translate)\"\n  [attr.aria-controls]=\"visible() ? 'customGroupColumnSelectorDialog' : null\"\n  [attr.aria-expanded]=\"visible() ? true : false\"\n></p-button>\n\n<p-dialog\n  #dialog\n  id=\"customGroupColumnSelectorDialog\"\n  [(visible)]=\"visible\"\n  [style]=\"{ width: '70%' }\"\n  [modal]=\"true\"\n  [closeAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.CLOSE' | translate)\"\n>\n  <ng-template pTemplate=\"header\">\n    <span [id]=\"dialog.ariaLabelledBy\" class=\"text-xl font-bold\"\n      >{{ dialogTitle() || (dialogTitleKey() | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DIALOG_TITLE' |\n      translate) }}</span\n    >\n  </ng-template>\n\n  @let resolvedActiveColumnsLabel = activeColumnsLabel() || (activeColumnsLabelKey() | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ACTIVE_COLUMNS_LABEL' | translate);\n  @let resolvedInactiveColumnsLabel = inactiveColumnsLabel() || (inactiveColumnsLabelKey() | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.INACTIVE_COLUMNS_LABEL' | translate);\n  <p-pickList\n    [source]=\"displayedColumnsModel()\"\n    [target]=\"hiddenColumnsModel()\"\n    [sourceHeader]=\"resolvedActiveColumnsLabel\"\n    [targetHeader]=\"resolvedInactiveColumnsLabel\"\n    [sourceAriaLabel]=\"resolvedActiveColumnsLabel\"\n    [targetAriaLabel]=\"resolvedInactiveColumnsLabel\"\n    [dragdrop]=\"true\"\n    [responsive]=\"false\" [sourceStyle]=\"{ height: '300px' }\"\n    [targetStyle]=\"{ height: '300px' }\"\n    [upButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.UP' | translate)\"\n    [topButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.TOP' | translate)\"\n    [downButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.DOWN' | translate)\"\n    [bottomButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.BOTTOM' | translate)\"\n    [rightButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.RIGHT' | translate)\"\n    [allRightButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.ALL_RIGHT' | translate)\"\n    [leftButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.LEFT' | translate)\"\n    [allLeftButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.ALL_LEFT' | translate)\">\n    <ng-template let-item #item>\n      <div>{{ item.nameKey | translate }}</div>\n    </ng-template>\n  </p-pickList>\n\n  <div class=\"pt-4\">\n    <p class=\"text-xl font-bold\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.TITLE' | translate}}</p>\n    <div class=\"flex gap-6 px-3\">\n      <div>\n        <p id=\"frozenActionColumnLabel\" class=\"mb-1\">\n          {{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.FREEZE' | translate}}\n        </p>\n        <p-selectbutton\n          [options]=\"frozenOptions()\"\n          [(ngModel)]=\"frozenActionColumnModel\"\n          optionLabel=\"label\"\n          optionValue=\"value\"\n          id=\"frozenActionColumn\"\n          name=\"frozen-action-column-select-button\"\n          [allowEmpty]=\"false\"\n          ariaLabelledBy=\"frozenActionColumnLabel\"\n        >\n          <ng-template #item let-option> {{option.label | translate}} </ng-template>\n        </p-selectbutton>\n      </div>\n      <div>\n        <p id=\"actionColumnPositionLabel\" class=\"mb-1\">\n          {{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.POSITION' | translate}}\n        </p>\n        <p-selectbutton\n          [options]=\"alignmentOptions()\"\n          [(ngModel)]=\"actionColumnPositionModel\"\n          optionLabel=\"label\"\n          optionValue=\"value\"\n          id=\"actionColumnPosition\"\n          name=\"action-column-position-select-button\"\n          [allowEmpty]=\"false\"\n          ariaLabelledBy=\"actionColumnPositionLabel\"\n        >\n          <ng-template #item let-option> {{option.label | translate}} </ng-template>\n        </p-selectbutton>\n      </div>\n    </div>\n  </div>\n\n  <ng-template pTemplate=\"footer\">\n    <p-button\n      id=\"cancelButton\"\n      (onClick)=\"onCancelClick()\"\n      [label]=\"cancelButtonLabel() || (cancelButtonLabelKey() | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CANCEL_BUTTON_LABEL' | translate)\"\n      styleClass=\"p-button\"\n      [ariaLabel]=\"cancelButtonLabel() || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CANCEL_BUTTON_ARIA_LABEL' | translate)\"\n    ></p-button>\n    <p-button\n      id=\"saveButton\"\n      (onClick)=\"onSaveClick()\"\n      [label]=\"saveButtonLabel() || (saveButtonLabelKey() | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.SAVE_BUTTON_LABEL' | translate)\"\n      [ariaLabel]=\"saveButtonAriaLabelKey() || (saveButtonAriaLabelKey() | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.SAVE_BUTTON_ARIA_LABEL' | translate)\"\n    ></p-button>\n  </ng-template>\n</p-dialog>\n","import { Component, computed, input, model, OnInit, output } from '@angular/core'\nimport { PrimeIcons } from 'primeng/api'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\n\ninterface ViewingLayouts {\n  id: string\n  icon: PrimeIcon\n  layout: 'grid' | 'list' | 'table'\n  tooltip?: string\n  tooltipKey: string\n  label?: string\n  labelKey: string\n}\n\nconst ALL_VIEW_LAYOUTS: ViewingLayouts[] = [\n  {\n    id: 'ocx-data-layout-selection-list',\n    icon: PrimeIcons.LIST,\n    layout: 'list',\n    tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.LIST',\n    labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.LIST',\n  },\n  {\n    id: 'ocx-data-layout-selection-grid',\n    icon: PrimeIcons.TH_LARGE,\n    layout: 'grid',\n    tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.GRID',\n    labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.GRID',\n  },\n  {\n    id: 'ocx-data-layout-selection-table',\n    icon: PrimeIcons.TABLE,\n    layout: 'table',\n    tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.TABLE',\n    labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.TABLE',\n  },\n]\n\nexport interface DataLayoutSelectionComponentState {\n  layout?: 'grid' | 'list' | 'table'\n}\n@Component({\n  standalone: false,\n  selector: 'ocx-data-layout-selection',\n  templateUrl: './data-layout-selection.component.html',\n  styleUrls: ['./data-layout-selection.component.scss'],\n})\nexport class DataLayoutSelectionComponent implements OnInit {\n  supportedViewLayouts = input<Array<string>>([])\n\n  layout = model<'grid' | 'list' | 'table'>('table')\n\n  dataViewLayoutChange = output<'grid' | 'list' | 'table'>()\n  componentStateChanged = output<DataLayoutSelectionComponentState>()\n\n  viewingLayouts = computed(() => ALL_VIEW_LAYOUTS.filter((vl) => this.supportedViewLayouts().includes(vl.layout)))\n\n  readonly selectedViewLayout = computed(() => ALL_VIEW_LAYOUTS.find((v) => v.layout === this.layout()))\n\n  ngOnInit(): void {\n    this.componentStateChanged.emit({\n      layout: this.layout(),\n    })\n  }\n\n  onDataViewLayoutChange(event: { icon: PrimeIcon; layout: 'grid' | 'list' | 'table' }): void {\n    this.layout.set(event.layout)\n    this.dataViewLayoutChange.emit(event.layout)\n    this.componentStateChanged.emit({\n      layout: event.layout,\n    })\n  }\n}\n","<div class=\"flex flex-wrap justify-content-between align-items-center py-1 gap-2\">\n  @if (viewingLayouts().length > 1) {\n  <p-selectbutton\n    [options]=\"viewingLayouts()\"\n    [ngModel]=\"selectedViewLayout()\"\n    optionLabel=\"id\"\n    (onChange)=\"onDataViewLayoutChange($event.value)\"\n    [ariaLabel]=\"'OCX_DATA_LAYOUT_SELECTION.SELECT_BUTTON.ARIA_LABEL' | translate\"\n  >\n    <ng-template #item let-item>\n      <i [class]=\"item.icon\" [ocxTooltip]=\"item.tooltipKey | translate\" tooltipPosition=\"top\" aria-hidden=\"true\"></i>\n      <span class=\"sr-only\" [attr.id]=\"item.id\">{{ item.labelKey | translate }}</span>\n    </ng-template>\n  </p-selectbutton>\n  }\n</div>\n","export enum ColumnType {\n  STRING = 'STRING',\n  NUMBER = 'NUMBER',\n  DATE = 'DATE',\n  RELATIVE_DATE = 'RELATIVE_DATE',\n  TRANSLATION_KEY = 'TRANSLATION_KEY',\n}\n","export class ObjectUtils {\n  public static resolveFieldData(data: any, field: any): any {\n    if (data && field) {\n      if (this.isFunction(field)) {\n        return field(data)\n      } else if (field.indexOf('.') == -1) {\n        return data[field]\n      } else {\n        const fields: string[] = field.split('.')\n        let value = data\n        for (let i = 0, len = fields.length; i < len; ++i) {\n          if (value == null) {\n            return null\n          }\n          value = value[fields[i]]\n        }\n        return value\n      }\n    } else {\n      return null\n    }\n  }\n\n  public static isFunction(obj: any) {\n    return !!(obj && obj.constructor && obj.call && obj.apply)\n  }\n}\n","type Extend<TObj extends Record<string, unknown>, K extends string> = {\n  [TKey in keyof TObj & string as `${K}${TKey}`]: TObj[TKey] extends Record<string, unknown>\n    ? Extend<TObj[TKey], `${K}${TKey}.`>\n    : TObj[TKey]\n}\n\ntype NonObjectKeysOf<T> = {\n  [K in keyof T]: T[K] extends Array<any> ? K : T[K] extends object ? (T[K] extends Date ? K : never) : K\n}[keyof T]\n\ntype ObjectKeysOf<T> = {\n  [K in keyof T]: T[K] extends Array<any> ? never : T[K] extends object ? K : never\n}[keyof T]\n\ntype Filter<TObj extends object, TKey = keyof TObj> = TKey extends keyof TObj\n  ? TObj[TKey] extends Array<any>\n    ? TObj\n    : TObj[TKey] extends object\n    ? Filter<TObj[TKey]>\n    : Pick<TObj, NonObjectKeysOf<TObj>> | Filter<Pick<TObj, ObjectKeysOf<TObj>>>\n  : never\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never\n\nexport type Result<TObj extends Record<string, unknown>> = UnionToIntersection<Filter<Extend<TObj, ''>>>\n\nexport function flattenObject<O extends Record<string, unknown>>(ob: O): Result<O> {\n  const toReturn: Record<string, unknown> = {}\n\n  for (const i in ob) {\n    if (!Object.prototype.hasOwnProperty.call(ob, i)) continue\n\n    if (!!ob[i] && typeof ob[i] == 'object' && !(ob[i] instanceof Date) && !Array.isArray(ob[i])) {\n      const flatObject = flattenObject(ob[i] as Record<string, unknown>)\n      for (const x in flatObject) {\n        if (!Object.prototype.hasOwnProperty.call(flatObject, x)) continue\n\n        toReturn[i + '.' + x] = (flatObject as any)[x]\n      }\n    } else {\n      toReturn[i] = ob[i]\n    }\n  }\n  return toReturn as Result<O>\n}\n","export interface ColumnFilterDataSelectOptions {\n  reverse: boolean\n}\n\nexport type FilterObject = { columnId: string; filterType?: FilterType }\n\nexport type Filter = FilterObject & { value: unknown }\n\nexport enum FilterType {\n  ENDS_WITH = 'endsWith',\n  STARTS_WITH = 'startsWith',\n  CONTAINS = 'contains',\n  NOT_CONTAINS = 'notContains',\n  EQUALS = 'equals',\n  NOT_EQUALS = 'notEquals',\n  LESS_THAN = 'lessThan',\n  GREATER_THAN = 'greaterThan',\n  LESS_THAN_OR_EQUAL = 'lessThanOrEqual',\n  GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual',\n  IS_EMPTY = 'isEmpty',\n  IS_NOT_EMPTY = 'isNotEmpty',\n}\n","import { TranslateService } from '@ngx-translate/core'\nimport { Observable, map, of } from 'rxjs'\nimport { flattenObject } from '../../functions/flatten-object'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { ListGridData } from '../../components/data-list-grid/data-list-grid.component'\nimport { Row } from '../../components/data-table/data-table.component'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { Filter, FilterType } from '../../model/filter.model'\n\ntype RowListGridData = ListGridData | Row\n\nexport class DataSortBase {\n  constructor(\n    protected locale: string,\n    protected translateService: TranslateService\n  ) {}\n\n  translateItems(\n    items: RowListGridData[],\n    columns: DataTableColumn[],\n    clientSideFiltering: boolean,\n    clientSideSorting: boolean\n  ): Observable<Record<string, Record<string, string>>> {\n    if (clientSideFiltering || clientSideSorting) {\n      let translationKeys: string[] = []\n      const translatedColumns = columns.filter((c) => c.columnType === ColumnType.TRANSLATION_KEY)\n      translatedColumns.forEach((c) => {\n        translationKeys = [\n          ...translationKeys,\n          ...items.map((i) => ObjectUtils.resolveFieldData(i, c.id)?.toString()).filter((v) => !!v),\n        ]\n      })\n      if (translationKeys.length) {\n        return this.translateService.get(translationKeys).pipe(\n          map((translatedValues: Record<string, string>) => {\n            const translations: Record<string, Record<string, string>> = {}\n            translatedColumns.forEach((c) => {\n              translations[c.id] = Object.fromEntries(\n                items.map((i) => [\n                  ObjectUtils.resolveFieldData(i, c.id)?.toString() || '',\n                  translatedValues[ObjectUtils.resolveFieldData(i, c.id)?.toString()],\n                ])\n              )\n            })\n            return translations\n          })\n        )\n      }\n    }\n    return of({})\n  }\n\n  filterItems(\n    [items, filters, translations]: [RowListGridData[], Filter[], Record<string, Record<string, string>>],\n    clientSideFiltering: boolean\n  ): RowListGridData[] {\n    if (!clientSideFiltering) {\n      return items\n    }\n    return items.filter((item) =>\n      filters\n        .map((filter) => filter.columnId)\n        .filter((value, index, self) => self.indexOf(value) === index && value != null)\n        .every((filterColumnId) =>\n          filters\n            .filter((filter) => filter.columnId === filterColumnId)\n            .some((filter) => {\n              const value = (\n                translations[filter.columnId]?.[ObjectUtils.resolveFieldData(item, filter.columnId)?.toString()] ||\n                ObjectUtils.resolveFieldData(item, filter.columnId)\n              )?.toString()\n              switch (filter.filterType) {\n                case undefined:\n                case FilterType.EQUALS:\n                  return value === String(filter.value)\n                case FilterType.IS_NOT_EMPTY: {\n                  return filter.value ? !!value : !value\n                }\n                default:\n                  return true\n              }\n            })\n        )\n    )\n  }\n\n  sortItems(\n    [items, sortColumn, sortDirection, translations]: [\n      RowListGridData[],\n      string,\n      DataSortDirection,\n      Record<string, Record<string, string>>,\n    ],\n    columns: DataTableColumn[],\n    clientSideSorting: boolean\n  ): RowListGridData[] {\n    if (!clientSideSorting || sortColumn === '') {\n      return items\n    }\n    const column = columns.find((h) => h.id === sortColumn)\n    let colValues: Record<string, string>\n    if (column?.columnType === ColumnType.DATE || column?.columnType === ColumnType.RELATIVE_DATE) {\n      colValues = Object.fromEntries(\n        items.map((i) => [\n          ObjectUtils.resolveFieldData(i, sortColumn) as Date,\n          ObjectUtils.resolveFieldData(i, sortColumn) as Date,\n        ])\n      )\n    } else {\n      colValues = Object.fromEntries(\n        items.map((i) => [\n          ObjectUtils.resolveFieldData(i, sortColumn)?.toString(),\n          ObjectUtils.resolveFieldData(i, sortColumn)?.toString(),\n        ])\n      )\n    }\n    if (column?.columnType === ColumnType.TRANSLATION_KEY) {\n      colValues = translations[sortColumn]\n    }\n    return [...items].sort(this.createCompareFunction(colValues, sortColumn, sortDirection))\n  }\n\n  flattenItems(items: RowListGridData[]) {\n    return items.map((i) => flattenObject(i))\n  }\n\n  createCompareFunction(\n    translatedColValues: Record<string, string>,\n    sortColumn: string,\n    sortDirection: DataSortDirection\n  ): (a: Record<string, any>, b: Record<string, any>) => number {\n    let direction = 0\n    if (sortDirection === DataSortDirection.ASCENDING) {\n      direction = 1\n    } else if (sortDirection === DataSortDirection.DESCENDING) {\n      direction = -1\n    }\n    return (data1, data2) => {\n      if (direction === 0) {\n        return 0\n      }\n      let result\n      const value1 = translatedColValues[ObjectUtils.resolveFieldData(data1, sortColumn)]\n      const value2 = translatedColValues[ObjectUtils.resolveFieldData(data2, sortColumn)]\n\n      if (value1 == null && value2 != null) result = -1\n      else if (value1 != null && value2 == null) result = 1\n      else if (value1 == null && value2 == null) result = 0\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\n        result = value1.localeCompare(value2, [this.locale, 'en', 'de'], { numeric: true })\n      else {\n        if (value1 < value2) {\n          result = -1\n        } else if (value1 > value2) {\n          result = 1\n        } else {\n          result = 0\n        }\n      }\n      return direction * result\n    }\n  }\n}\n","import { ChangeDetectorRef, NgZone, OnDestroy, Pipe, PipeTransform, inject } from '@angular/core'\nimport { TranslatePipe } from '@ngx-translate/core'\n\n@Pipe({\n  name: 'timeago',\n  standalone: false,\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class OcxTimeAgoPipe extends TranslatePipe implements OnDestroy, PipeTransform {\n  private readonly changeDetectorRef: ChangeDetectorRef\n  private readonly ngZone = inject(NgZone)\n\n  private timer: number | undefined | null\n\n  constructor() {\n    const changeDetectorRef = inject(ChangeDetectorRef)\n\n    super()\n\n    this.changeDetectorRef = changeDetectorRef\n  }\n  override transform(value: string) {\n    this.removeTimer()\n    const d = new Date(value)\n    const now = new Date()\n    const seconds = Math.round(Math.abs((now.getTime() - d.getTime()) / 1000))\n    const timeToUpdate = Number.isNaN(seconds) ? 1000 : this.getSecondsUntilUpdate(seconds) * 1000\n    this.timer = this.ngZone.runOutsideAngular(() => {\n      if (typeof window !== 'undefined') {\n        return window.setTimeout(() => {\n          this.ngZone.run(() => this.changeDetectorRef.markForCheck())\n        }, timeToUpdate)\n      }\n      return null\n    })\n    const minutes = Math.round(Math.abs(seconds / 60))\n    const hours = Math.round(Math.abs(minutes / 60))\n    const days = Math.round(Math.abs(hours / 24))\n    const months = Math.round(Math.abs(days / 30.416))\n    const years = Math.round(Math.abs(days / 365))\n    let translationKey = 'UNKNOWN'\n    if (Number.isNaN(seconds)) {\n      translationKey = 'NAN'\n    } else if (seconds <= 45) {\n      translationKey = 'A_FEW_SECONDS_AGO'\n    } else if (seconds <= 90) {\n      translationKey = 'A_MINUTE_AGO'\n    } else if (minutes <= 45) {\n      translationKey = 'MINUTES_AGO'\n    } else if (minutes <= 90) {\n      translationKey = 'AN_HOUR_AGO'\n    } else if (hours <= 22) {\n      translationKey = 'HOURS_AGO'\n    } else if (hours <= 36) {\n      translationKey = 'A_DAY_AGO'\n    } else if (days <= 25) {\n      translationKey = 'DAYS_AGO'\n    } else if (days <= 45) {\n      translationKey = 'A_MONTH_AGO'\n    } else if (days <= 345) {\n      translationKey = 'MONTHS_AGO'\n    } else if (days <= 545) {\n      translationKey = 'A_YEAR_AGO'\n    } else {\n      translationKey = 'YEARS_AGO'\n    }\n    return super.transform('OCX_TIMEAGO.' + translationKey, { minutes, hours, days, months, years })\n  }\n  override ngOnDestroy(): void {\n    this.removeTimer()\n    super.ngOnDestroy()\n  }\n  private removeTimer() {\n    if (this.timer) {\n      window.clearTimeout(this.timer)\n      this.timer = null\n    }\n  }\n  private getSecondsUntilUpdate(seconds: number) {\n    const min = 60\n    const hr = min * 60\n    const day = hr * 24\n    if (seconds < min) {\n      return 2\n    } else if (seconds < hr) {\n      return 30\n    } else if (seconds < day) {\n      return 300\n    } else {\n      return 3600\n    }\n  }\n}\n","import {\n  Component,\n  Injector,\n  LOCALE_ID,\n  OnInit,\n  Output,\n  TemplateRef,\n  computed,\n  contentChild,\n  contentChildren,\n  effect,\n  inject,\n  input,\n  model,\n  output,\n  signal,\n  untracked,\n  viewChildren,\n} from '@angular/core'\nimport { Router } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { AppStateService, UserService } from '@onecx/angular-integration-interface'\nimport { MfeInfo } from '@onecx/integration-interface'\nimport { MenuItem, PrimeIcons, PrimeTemplate } from 'primeng/api'\nimport { Menu } from 'primeng/menu'\nimport { Observable, combineLatest, debounceTime, firstValueFrom, map, mergeMap, of, switchMap } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter } from '../../model/filter.model'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { DataSortBase } from '../data-sort-base/data-sort-base'\nimport { Row } from '../data-table/data-table.component'\nimport { PermissionInput } from '../../model/permission.model'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\nimport { LiveAnnouncer } from '@angular/cdk/a11y'\nimport { observableOutput, ObservableOutputEmitterRef } from '../../utils/observable-output.utils'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport { computedPrevious } from 'ngxtension/computed-previous'\nimport equal from 'fast-deep-equal'\nimport { handleAction, handleActionSync } from '../../utils/action-router.utils'\n\nexport type ListGridData = {\n  id: string | number\n  imagePath: string | number\n  [columnId: string]: unknown\n}\n\ntype RowListGridData = ListGridData & Row\n\nexport interface ListGridDataMenuItem extends MenuItem {\n  permission: string\n}\n\nexport interface DataListGridComponentState {\n  activePage?: number\n  pageSize?: number\n}\n\n@Component({\n  standalone: false,\n  selector: 'ocx-data-list-grid',\n  templateUrl: './data-list-grid.component.html',\n  styleUrls: ['./data-list-grid.component.scss'],\n})\nexport class DataListGridComponent extends DataSortBase implements OnInit {\n  private readonly userService = inject(UserService)\n  private readonly router = inject(Router)\n  private readonly injector = inject(Injector)\n  private readonly appStateService = inject(AppStateService)\n  private readonly hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n  private readonly liveAnnouncer = inject(LiveAnnouncer)\n\n  titleLineId = input<string>()\n  subtitleLineIds = input<string[]>()\n  clientSideSorting = input<boolean>(true)\n  clientSideFiltering = input<boolean>(true)\n  sortStates = input<DataSortDirection[]>([])\n\n  pageSize = model<number | undefined>(undefined)\n  pageSizes = input<number[]>([10, 25, 50])\n\n  displayedPageSize = computed(() => {\n    const pageSize = this.pageSize()\n    const pageSizes = this.pageSizes()\n\n    return pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50\n  })\n\n  emptyResultsMessage = input<string | undefined>(undefined)\n  fallbackImage = input<string>('placeholder.png')\n  layout = input<'grid' | 'list'>('grid')\n  viewPermission = input<PermissionInput>(undefined)\n  editPermission = input<PermissionInput>(undefined)\n  deletePermission = input<PermissionInput>(undefined)\n  deleteActionVisibleField = input<string | undefined>(undefined)\n  deleteActionEnabledField = input<string | undefined>(undefined)\n  viewActionVisibleField = input<string | undefined>(undefined)\n  viewActionEnabledField = input<string | undefined>(undefined)\n  editActionVisibleField = input<string | undefined>(undefined)\n  editActionEnabledField = input<string | undefined>(undefined)\n  viewMenuItemKey = input<string | undefined>(undefined)\n  editMenuItemKey = input<string | undefined>(undefined)\n  deleteMenuItemKey = input<string | undefined>(undefined)\n  paginator = input<boolean>(true)\n  page = model<number>(0)\n  columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n  columns = input<DataTableColumn[]>([])\n  filteredColumns = computed(() => {\n    const subtitleLineIds = this.subtitleLineIds() ?? []\n    const ids: string[] = [...subtitleLineIds]\n    const titleLineId = this.titleLineId()\n    if (titleLineId) {\n      ids.unshift(titleLineId)\n    }\n    return this.columns().filter((c) => !ids.includes(c.id))\n  })\n\n  name = model<string | undefined>(undefined)\n  totalRecordsOnServer = input<number | undefined>(undefined)\n  currentPageShowingKey = input<string>('OCX_DATA_TABLE.SHOWING')\n  currentPageShowingWithTotalOnServerKey = input<string>('OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER')\n  params = computed(() => {\n    const totalRecordsOnServer = this.totalRecordsOnServer()\n    return {\n      currentPage: '{currentPage}',\n      totalPages: '{totalPages}',\n      rows: '{rows}',\n      first: '{first}',\n      last: '{last}',\n      totalRecords: '{totalRecords}',\n      totalRecordsOnServer,\n    }\n  })\n\n  data = input<RowListGridData[]>([])\n  previousData = computedPrevious(this.data)\n\n  filters = input<Filter[]>([])\n  previousFilters = computedPrevious(this.filters)\n\n  sortDirection = input<DataSortDirection>(DataSortDirection.NONE)\n  sortField = input<string>('')\n\n  private readonly permissions$ = this.getPermissions()\n\n  gridItemSubtitleLinesTemplate = input<TemplateRef<any> | undefined>(undefined)\n  gridItemSubtitleLinesChildTemplate = contentChild<TemplateRef<any>>('gridItemSubtitleLines')\n  get gridItemSubtitleLines(): TemplateRef<any> | undefined {\n    return this.gridItemSubtitleLinesTemplate() || this.gridItemSubtitleLinesChildTemplate()\n  }\n\n  listItemSubtitleLinesTemplate = input<TemplateRef<any> | undefined>(undefined)\n  listItemSubtitleLinesChildTemplate = contentChild<TemplateRef<any>>('listItemSubtitleLines')\n  get listItemSubtitleLines(): TemplateRef<any> | undefined {\n    return this.listItemSubtitleLinesTemplate() || this.listItemSubtitleLinesChildTemplate()\n  }\n\n  listItemTemplate = input<TemplateRef<any> | undefined>(undefined)\n  listItemChildTemplate = contentChild<TemplateRef<any>>('listItem')\n  get listItem(): TemplateRef<any> | undefined {\n    return this.listItemTemplate() || this.listItemChildTemplate()\n  }\n\n  gridItemTemplate = input<TemplateRef<any> | undefined>(undefined)\n  gridItemChildTemplate = contentChild<TemplateRef<any>>('gridItem')\n  get gridItem(): TemplateRef<any> | undefined {\n    return this.gridItemTemplate() || this.gridItemChildTemplate()\n  }\n\n  listValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n  listValueChildTemplate = contentChild<TemplateRef<any>>('listValue')\n  get listValue(): TemplateRef<any> | undefined {\n    return this.listValueTemplate() || this.listValueChildTemplate()\n  }\n\n  translationKeyListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n  translationKeyListValueChildTemplate = contentChild<TemplateRef<any>>('translationKeyListValue')\n  get translationKeyListValue(): TemplateRef<any> | undefined {\n    return this.translationKeyListValueTemplate() || this.translationKeyListValueChildTemplate()\n  }\n\n  numberListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n  numberListValueChildTemplate = contentChild<TemplateRef<any>>('numberListValue')\n  get numberListValue(): TemplateRef<any> | undefined {\n    return this.numberListValueTemplate() || this.numberListValueChildTemplate()\n  }\n\n  relativeDateListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n  relativeDateListValueChildTemplate = contentChild<TemplateRef<any>>('relativeDateListValue')\n  get relativeDateListValue(): TemplateRef<any> | undefined {\n    return this.relativeDateListValueTemplate() || this.relativeDateListValueChildTemplate()\n  }\n\n  stringListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n  stringListValueChildTemplate = contentChild<TemplateRef<any>>('stringListValue')\n  get stringListValue(): TemplateRef<any> | undefined {\n    return this.stringListValueTemplate() || this.stringListValueChildTemplate()\n  }\n\n  dateListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n  dateListValueChildTemplate = contentChild<TemplateRef<any>>('dateListValue')\n  get dateListValue(): TemplateRef<any> | undefined {\n    return this.dateListValueTemplate() || this.dateListValueChildTemplate()\n  }\n\n  additionalActions = input<DataAction[]>([])\n  inlineListActions = computed(() => {\n    return this.additionalActions().filter((action) => !action.showAsOverflow)\n  })\n  overflowListActions = computed(() => {\n    return this.additionalActions().filter((action) => action.showAsOverflow)\n  })\n  overflowListActions$ = toObservable(this.overflowListActions)\n  currentMenuRow = signal<Row | null>(null)\n  overflowListMenuItems$ = combineLatest([\n    toObservable(this.overflowListActions),\n    toObservable(this.currentMenuRow),\n    this.permissions$,\n  ]).pipe(\n    map(([actions, row, permissions]) => ({\n      actions: this.filterActionsBasedOnPermissions(actions, permissions),\n      row,\n    })),\n    mergeMap(({ actions, row }) => {\n      if (actions.length === 0) {\n        return of([])\n      }\n      return this.translateService.get([...actions.map((a) => a.labelKey || '')]).pipe(\n        map((translations) => {\n          return actions.map((a) => ({\n            label: translations[a.labelKey || ''],\n            icon: a.icon,\n            styleClass: (a.classes || []).join(' '),\n            disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(row, a.actionEnabledField)),\n            visible: !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField),\n            routerLink: typeof a.routerLink === 'string' ? a.routerLink : undefined,\n            command: typeof a.routerLink === 'string' ? undefined : this.createMenuItemCommand(a, row),\n          }))\n        })\n      )\n    })\n  )\n\n  @Output() viewItem = observableOutput<ListGridData | undefined>()\n  @Output() editItem = observableOutput<ListGridData | undefined>()\n  @Output() deleteItem = observableOutput<ListGridData | undefined>()\n  pageChanged = output<number>()\n  pageSizeChanged = output<number>()\n  componentStateChanged = output<DataListGridComponentState>()\n\n  get viewItemObserved(): boolean {\n    const dv = this.injector.get('DataViewComponent', null)\n    return dv?.viewItemObserved || dv?.viewItem.observed() || this.viewItem.observed()\n  }\n  get editItemObserved(): boolean {\n    const dv = this.injector.get('DataViewComponent', null)\n    return dv?.editItemObserved || dv?.editItem.observed() || this.editItem.observed()\n  }\n  get deleteItemObserved(): boolean {\n    const dv = this.injector.get('DataViewComponent', null)\n    return dv?.deleteItemObserved || dv?.deleteItem.observed() || this.deleteItem.observed()\n  }\n\n  observedOutputs = computed(() => {\n    return (this.viewItemObserved ? 1 : 0) + (this.deleteItemObserved ? 1 : 0) + (this.editItemObserved ? 1 : 0)\n  })\n\n  get sortDirectionNumber(): number {\n    if (this.sortDirection() === DataSortDirection.ASCENDING) return 1\n    if (this.sortDirection() === DataSortDirection.DESCENDING) return -1\n    return 0\n  }\n\n  selectedItem = signal<ListGridData | undefined>(undefined)\n\n  permittedAdditionalActions$ = combineLatest([this.permissions$, toObservable(this.additionalActions)]).pipe(\n    map(([permissions, additionalActions]) => {\n      return this.filterActionsBasedOnPermissions(additionalActions, permissions)\n    })\n  )\n\n  gridMenuState$ = combineLatest([\n    // Trigger the whole chain to recalculate when data changes, to update the enabled/visible state of menu items based on the selected row\n    toObservable(this.data),\n    this.permissions$,\n    this.permittedAdditionalActions$,\n    toObservable(this.selectedItem),\n    toObservable(this.observedOutputs),\n    toObservable(this.viewMenuItemKey),\n    toObservable(this.editMenuItemKey),\n    toObservable(this.deleteMenuItemKey),\n    toObservable(this.viewPermission),\n    toObservable(this.editPermission),\n    toObservable(this.deletePermission),\n    toObservable(this.viewActionEnabledField),\n    toObservable(this.editActionEnabledField),\n    toObservable(this.deleteActionEnabledField),\n    toObservable(this.viewActionVisibleField),\n    toObservable(this.editActionVisibleField),\n    toObservable(this.deleteActionVisibleField),\n  ]).pipe(\n    map(\n      ([\n        _data,\n        permissions,\n        additionalActions,\n        selectedItem,\n        _observedOutputs,\n        viewMenuItemKey,\n        editMenuItemKey,\n        deleteMenuItemKey,\n        viewPermission,\n        editPermission,\n        deletePermission,\n        viewActionEnabledField,\n        editActionEnabledField,\n        deleteActionEnabledField,\n        viewActionVisibleField,\n        editActionVisibleField,\n        deleteActionVisibleField,\n      ]) => {\n        return {\n          permissions,\n          additionalActions,\n          selectedItem,\n          viewMenuItemKey: viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW',\n          editMenuItemKey: editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT',\n          deleteMenuItemKey: deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE',\n          viewPermission,\n          editPermission,\n          deletePermission,\n          viewActionEnabledField,\n          editActionEnabledField,\n          deleteActionEnabledField,\n          viewActionVisibleField,\n          editActionVisibleField,\n          deleteActionVisibleField,\n        }\n      }\n    )\n  )\n\n  gridMenuItems$ = this.gridMenuState$.pipe(\n    switchMap((params) => {\n      return this.getGridActionsTranslations(params.additionalActions, {\n        viewMenuItem: params.viewMenuItemKey,\n        editMenuItem: params.editMenuItemKey,\n        deleteMenuItem: params.deleteMenuItemKey,\n      }).pipe(map((translations) => ({ ...params, translations })))\n    }),\n    map((params) =>\n      this.mapGridMenuItems(\n        params.permissions,\n        params.additionalActions,\n        params.selectedItem,\n        params.translations,\n        {\n          viewMenuItem: params.viewMenuItemKey,\n          editMenuItem: params.editMenuItemKey,\n          deleteMenuItem: params.deleteMenuItemKey,\n        },\n        {\n          viewPermission: params.viewPermission,\n          editPermission: params.editPermission,\n          deletePermission: params.deletePermission,\n        },\n        {\n          visible: {\n            viewAction: params.viewActionVisibleField,\n            editAction: params.editActionVisibleField,\n            deleteAction: params.deleteActionVisibleField,\n          },\n          enabled: {\n            viewAction: params.viewActionEnabledField,\n            editAction: params.editActionEnabledField,\n            deleteAction: params.deleteActionEnabledField,\n          },\n        }\n      )\n    )\n  )\n\n  displayedItems$ = combineLatest([\n    toObservable(this.data),\n    toObservable(this.filters),\n    toObservable(this.sortField),\n    toObservable(this.sortDirection),\n    toObservable(this.columns),\n    toObservable(this.clientSideFiltering),\n    toObservable(this.clientSideSorting),\n  ]).pipe(\n    map(([data, filters, sortField, sortDirection, columns, clientSideFiltering, clientSideSorting]) => {\n      return { data, filters, sortField, sortDirection, columns, clientSideFiltering, clientSideSorting }\n    }),\n    mergeMap((params) =>\n      this.translateItems(params.data, params.columns, params.clientSideFiltering, params.clientSideSorting).pipe(\n        map((translatedItems) => ({ ...params, translatedItems }))\n      )\n    ),\n    map((params) => ({\n      ...params,\n      data: this.filterItems([params.data, params.filters, params.translatedItems], params.clientSideFiltering),\n    })),\n    map((params) => ({\n      ...params,\n      data: this.sortItems(\n        [params.data, params.sortField, params.sortDirection, params.translatedItems],\n        params.columns,\n        params.clientSideSorting\n      ),\n    })),\n    map(({ data }) => data)\n  )\n  fallbackImagePath$!: Observable<string>\n\n  templates = contentChildren<PrimeTemplate>(PrimeTemplate)\n  templates$ = toObservable(this.templates)\n\n  viewTemplates = viewChildren<PrimeTemplate>(PrimeTemplate)\n  viewTemplates$ = toObservable(this.viewTemplates)\n\n  parentTemplates = model<PrimeTemplate[] | null | undefined>(undefined)\n  parentTemplates$ = toObservable(this.parentTemplates)\n\n  columnType = ColumnType\n  private templatesObservables: Record<string, Observable<TemplateRef<any> | null>> = {}\n  hasViewPermission$ = toObservable(this.viewPermission).pipe(\n    map((permission) => {\n      if (!permission) return []\n      return Array.isArray(permission) ? permission : [permission]\n    }),\n    switchMap((permissionArray) => {\n      if (permissionArray.length === 0) {\n        return of(true)\n      }\n      return this.permissions$.pipe(map((permissions) => permissionArray.every((p) => permissions.includes(p))))\n    })\n  )\n\n  constructor() {\n    const locale = inject(LOCALE_ID)\n    const translateService = inject(TranslateService)\n\n    super(locale, translateService)\n\n    effect(() => {\n      const data = this.data()\n      // Not track previousData change to avoid the trigger\n      untracked(() => {\n        const previousData = this.previousData()\n        if (previousData.length && !equal(data, previousData)) {\n          this.page.set(0)\n        }\n      })\n\n      const currentResults = data.length\n      const newStatus =\n        currentResults === 0 ? 'OCX_DATA_LIST_GRID.NO_SEARCH_RESULTS_FOUND' : 'OCX_DATA_LIST_GRID.SEARCH_RESULTS_FOUND'\n\n      firstValueFrom(this.translateService.get(newStatus, { results: currentResults })).then(\n        (translatedText: string) => {\n          this.liveAnnouncer.announce(translatedText)\n        }\n      )\n    })\n\n    effect(() => {\n      const columns = this.columns()\n      const obs = columns.map((c) => this.getTemplate(c))\n      this.columnTemplates$ = combineLatest(obs).pipe(\n        map((values) => Object.fromEntries(columns.map((c, i) => [c.id, values[i]]))),\n        debounceTime(50)\n      )\n    })\n\n    effect(() => {\n      this.filters()\n      // Not track previousFilters change to avoid the trigger\n      untracked(() => {\n        const previousFilters = this.previousFilters()\n        if (previousFilters.length && !equal(this.filters(), previousFilters)) {\n          this.page.set(0)\n        }\n      })\n    })\n\n    this.fallbackImagePath$ = this.appStateService.currentMfe$.pipe(\n      map((currentMfe) => this.getFallbackImagePath(currentMfe))\n    )\n\n    effect(() => {\n      this.emitComponentStateChanged()\n    })\n\n    effect(() => {\n      this.pageChanged.emit(this.page())\n    })\n\n    effect(() => {\n      const pageSize = this.pageSize()\n      if (pageSize === undefined) {\n        return\n      }\n      this.pageSizeChanged.emit(pageSize)\n    })\n  }\n\n  ngOnInit(): void {\n    this.name.set(this.name() || this.router.url.replace(/[^A-Za-z0-9]/, '_'))\n  }\n\n  onDeleteRow(element: ListGridData) {\n    this.deleteItem.emit(element)\n  }\n\n  onViewRow(element: ListGridData) {\n    this.viewItem.emit(element)\n  }\n\n  onEditRow(element: ListGridData) {\n    this.editItem.emit(element)\n  }\n\n  imgError(item: ListGridData) {\n    item.imagePath = ''\n  }\n\n  getFallbackImagePath(mfeInfo: MfeInfo) {\n    return mfeInfo?.remoteBaseUrl\n      ? `${mfeInfo.remoteBaseUrl}/onecx-portal-lib/assets/images/${this.fallbackImage}`\n      : `./onecx-portal-lib/assets/images/${this.fallbackImage}`\n  }\n\n  setSelectedItem(item: ListGridData) {\n    this.selectedItem.set(item)\n  }\n\n  resolveFieldData(object: any, key: any) {\n    return ObjectUtils.resolveFieldData(object, key)\n  }\n\n  emitComponentStateChanged() {\n    this.componentStateChanged.emit({\n      pageSize: this.displayedPageSize(),\n      activePage: this.page(),\n    })\n  }\n\n  onPageChange(event: any) {\n    const page = event.first / event.rows\n    this.page.set(page)\n    this.pageSize.set(event.rows)\n  }\n\n  fieldIsTruthy(object: any, key: any) {\n    return !!this.resolveFieldData(object, key)\n  }\n\n  hasVisibleOverflowMenuItems(row: any) {\n    return combineLatest([this.overflowListActions$, this.permissions$]).pipe(\n      map(([actions, permission]) => this.filterActionsBasedOnPermissions(actions, permission)),\n      map((actions) => actions.some((a) => !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField)))\n    )\n  }\n\n  toggleOverflowMenu(event: MouseEvent, menu: Menu, row: Row) {\n    this.currentMenuRow.set(row)\n    menu.toggle(event)\n  }\n\n  findTemplate(templates: PrimeTemplate[], names: string[]): PrimeTemplate | undefined {\n    for (let index = 0; index < names.length; index++) {\n      const name = names[index]\n      const template = templates.find((template) => template.name === name)\n      if (template) {\n        return template\n      }\n    }\n    return undefined\n  }\n\n  getTemplate(column: DataTableColumn): Observable<TemplateRef<any> | null> {\n    if (!this.templatesObservables[column.id]) {\n      this.templatesObservables[column.id] = combineLatest([\n        this.templates$,\n        this.viewTemplates$,\n        this.parentTemplates$,\n      ]).pipe(\n        map(([t, vt, pt]) => {\n          const templates = [...(t ?? []), ...(vt ?? []), ...(pt ?? [])]\n          const columnTemplate = templates.find((template) => template.name === column.id + 'IdListValue')?.template\n          if (columnTemplate) {\n            return columnTemplate\n          }\n          switch (column.columnType) {\n            case ColumnType.DATE:\n              return (\n                this.dateListValue ??\n                this.findTemplate(templates, ['dateListValue', 'defaultDateListValue'])?.template ??\n                null\n              )\n            case ColumnType.NUMBER:\n              return (\n                this.numberListValue ??\n                this.findTemplate(templates, ['numberListValue', 'defaultNumberListValue'])?.template ??\n                null\n              )\n            case ColumnType.RELATIVE_DATE:\n              return (\n                this.relativeDateListValue ??\n                this.findTemplate(templates, ['relativeDateListValue', 'defaultRelativeDateListValue'])?.template ??\n                null\n              )\n            case ColumnType.TRANSLATION_KEY:\n              return (\n                this.translationKeyListValue ??\n                this.findTemplate(templates, ['translationKeyListValue', 'defaultTranslationKeyListValue'])?.template ??\n                null\n              )\n            default:\n              return (\n                this.stringListValue ??\n                this.findTemplate(templates, ['stringListValue', 'defaultStringListValue'])?.template ??\n                null\n              )\n          }\n        })\n      )\n    }\n    return this.templatesObservables[column.id]\n  }\n\n  private mapGridMenuItems(\n    permissions: string[],\n    additionalActions: DataAction[],\n    selectedItem: ListGridData | undefined,\n    translations: Record<string, string>,\n    keys: {\n      viewMenuItem: string\n      editMenuItem: string\n      deleteMenuItem: string\n    },\n    actionPermissions: {\n      viewPermission: PermissionInput\n      editPermission: PermissionInput\n      deletePermission: PermissionInput\n    },\n    actionFields: {\n      visible: {\n        viewAction?: string\n        editAction?: string\n        deleteAction?: string\n      }\n      enabled: {\n        viewAction?: string\n        editAction?: string\n        deleteAction?: string\n      }\n    }\n  ): MenuItem[] {\n    let deleteDisabled = false\n    let editDisabled = false\n    let viewDisabled = false\n\n    let deleteVisible = true\n    let editVisible = true\n    let viewVisible = true\n\n    if (selectedItem) {\n      viewDisabled =\n        !!actionFields.enabled.viewAction && !this.fieldIsTruthy(selectedItem, actionFields.enabled.viewAction)\n      editDisabled =\n        !!actionFields.enabled.editAction && !this.fieldIsTruthy(selectedItem, actionFields.enabled.editAction)\n      deleteDisabled =\n        !!actionFields.enabled.deleteAction && !this.fieldIsTruthy(selectedItem, actionFields.enabled.deleteAction)\n\n      viewVisible = !actionFields.visible.viewAction || this.fieldIsTruthy(selectedItem, actionFields.visible.viewAction)\n      editVisible = !actionFields.visible.editAction || this.fieldIsTruthy(selectedItem, actionFields.visible.editAction)\n      deleteVisible =\n        !actionFields.visible.deleteAction || this.fieldIsTruthy(selectedItem, actionFields.visible.deleteAction)\n    }\n\n    const menuItems: MenuItem[] = []\n    const automationId = 'data-grid-action-button'\n    const automationIdHidden = 'data-grid-action-button-hidden'\n    if (this.shouldDisplayAction(actionPermissions.viewPermission, this.viewItem, permissions)) {\n      menuItems.push({\n        label: translations[keys.viewMenuItem],\n        icon: PrimeIcons.EYE,\n        command: () => this.viewItem.emit(selectedItem),\n        disabled: viewDisabled,\n        visible: viewVisible,\n        automationId: viewVisible ? automationId : automationIdHidden,\n      })\n    }\n    if (this.shouldDisplayAction(actionPermissions.editPermission, this.editItem, permissions)) {\n      menuItems.push({\n        label: translations[keys.editMenuItem],\n        icon: PrimeIcons.PENCIL,\n        command: () => this.editItem.emit(selectedItem),\n        disabled: editDisabled,\n        visible: editVisible,\n        automationId: editVisible ? automationId : automationIdHidden,\n      })\n    }\n    if (this.shouldDisplayAction(actionPermissions.deletePermission, this.deleteItem, permissions)) {\n      menuItems.push({\n        label: translations[keys.deleteMenuItem],\n        icon: PrimeIcons.TRASH,\n        command: () => this.deleteItem.emit(selectedItem),\n        disabled: deleteDisabled,\n        visible: deleteVisible,\n        automationId: deleteVisible ? automationId : automationIdHidden,\n      })\n    }\n    const val = menuItems.concat(\n      additionalActions.map((a) => {\n        const isVisible = !a.actionVisibleField || this.fieldIsTruthy(selectedItem, a.actionVisibleField)\n        return {\n          label: translations[a.labelKey || ''],\n          icon: a.icon,\n          styleClass: (a.classes || []).join(' '),\n          disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(selectedItem, a.actionEnabledField)),\n          visible: isVisible,\n          routerLink: typeof a.routerLink === 'string' ? a.routerLink : undefined,\n          command: typeof a.routerLink === 'string' ? undefined : () => handleActionSync(this.router, a, selectedItem),\n          automationId: isVisible ? automationId : automationIdHidden,\n        }\n      })\n    )\n    return val\n  }\n\n  private getGridActionsTranslations(\n    additionalActions: DataAction[],\n    keys: {\n      viewMenuItem: string\n      editMenuItem: string\n      deleteMenuItem: string\n    }\n  ): Observable<Record<string, string>> {\n    return this.translateService.get([\n      keys.viewMenuItem,\n      keys.editMenuItem,\n      keys.deleteMenuItem,\n      ...additionalActions.map((a) => a.labelKey || ''),\n    ])\n  }\n\n  private shouldDisplayAction(\n    permission: PermissionInput,\n    emitter: ObservableOutputEmitterRef<any>,\n    userPermissions: string[]\n  ): boolean {\n    const permissions = Array.isArray(permission) ? permission : permission ? [permission] : []\n    return emitter.observed() && permissions.every((p) => userPermissions.includes(p))\n  }\n\n  private filterActionsBasedOnPermissions(actions: DataAction[], permissions: string[]): DataAction[] {\n    return actions.filter((action) => {\n      const actionPermissions = Array.isArray(action.permission) ? action.permission : [action.permission]\n      return actionPermissions.every((p) => permissions.includes(p))\n    })\n  }\n\n  private getPermissions(): Observable<string[]> {\n    if (this.hasPermissionChecker?.getPermissions) {\n      return this.hasPermissionChecker.getPermissions()\n    }\n\n    return this.userService.getPermissions()\n  }\n\n  async onActionClick(action: DataAction, item: any): Promise<void> {\n    await handleAction(this.router, action, item)\n  }\n\n  private createMenuItemCommand(action: DataAction, row: any): () => void {\n    return () => handleActionSync(this.router, action, row)\n  }\n}\n","@if ((columnTemplates$ | async) ?? {}; as columnTemplates) {\n<p-dataView\n  [value]=\"(displayedItems$ | async) ?? []\"\n  [paginator]=\"paginator()\"\n  [first]=\"page() * displayedPageSize()\"\n  (onPage)=\"onPageChange($event)\"\n  [rows]=\"displayedPageSize()\"\n  [layout]=\"layout()\"\n  [showCurrentPageReport]=\"true\"\n  [currentPageReportTemplate]=\"(totalRecordsOnServer() !== undefined ? currentPageShowingWithTotalOnServerKey() : currentPageShowingKey()) | translate:params()\"\n  [rowsPerPageOptions]=\"pageSizes() ?? []\"\n  [id]=\"'dataListGrid_' + name()\"\n  paginatorDropdownAppendTo=\"body\"\n>\n  <ng-template #grid let-rows>\n    <div class=\"grid grid-cols-12 grid-nogutter gap-4 w-full\" role=\"list\">\n      @for (item of rows; track item) {\n      <ng-container\n        [ngTemplateOutlet]=\"gridItem ?? defaultGridItem\"\n        [ngTemplateOutletContext]=\"{$implicit:item}\"\n      ></ng-container>\n      }\n    </div>\n  </ng-template>\n  <ng-template #list let-rows>\n    <div class=\"p-grid p-nogutter grid grid-nogutter\" role=\"list\">\n      @for (item of rows; track item; let first = $first) { @defer (on viewport; on idle){\n      <ng-container\n        [ngTemplateOutlet]=\"listItem ?? defaultListItem\"\n        [ngTemplateOutletContext]=\"{\n              $implicit: item,\n              item:item,\n              first:first,\n              columnTemplates: columnTemplates\n              }\"\n      ></ng-container>\n      } @placeholder {\n      <div style=\"width: 100%; height: 80px\"></div>\n      } }\n    </div>\n  </ng-template>\n  <ng-template pTemplate=\"empty\">\n    <span>{{ emptyResultsMessage() || (\"OCX_DATA_LIST_GRID.EMPTY_RESULT\" | translate) }}</span>\n  </ng-template>\n</p-dataView>\n}\n\n<ng-template #defaultGridItem let-item>\n  <div class=\"col-12 lg:col-6 xl:col-4 p-1 flex justify-content-center grid-border-divider\" role=\"listitem\">\n    <div class=\"data-grid-item card flex flex-column justify-content-between w-12 lg:w-11 mb-4 mt-4 align-self-stretch\">\n      <div class=\"flex justify-content-center mb-3\">\n        <img\n          class=\"image\"\n          src=\"{{ item.imagePath || (fallbackImagePath$ | async) }}\"\n          (error)=\"imgError(item)\"\n          alt=\"{{ resolveFieldData(item, titleLineId()) || '' }}\"\n        />\n      </div>\n      <div class=\"flex flex-row justify-content-between align-items-center\">\n        <div class=\"data-grid-items flex-row\">\n          <div class=\"item-name font-medium mr-3 text-2xl\">\n            @if (hasViewPermission$ | async; as hasViewPermission) {\n            <a [routerLink]=\"\" (click)=\"onViewRow(item)\">{{ resolveFieldData(item, titleLineId()) || '' }}</a>\n            } @else {\n            <a [routerLink]=\"\">{{ resolveFieldData(item, titleLineId()) || '' }}</a>\n            }\n          </div>\n          <ng-container\n            [ngTemplateOutlet]=\"gridItemSubtitleLines ?? defaultGridItemSubtitleLines\"\n            [ngTemplateOutletContext]=\"{$implicit:item}\"\n          ></ng-container>\n        </div>\n        @if ((gridMenuItems$ | async); as gridMenuItems) {\n        <div>\n          <p-menu #menu [model]=\"gridMenuItems\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n          <button\n            pButton\n            (click)=\"setSelectedItem(item); menu.toggle($event)\"\n            icon=\"pi pi-ellipsis-v\"\n            [attr.aria-label]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_ARIA_LABEL' | translate\"\n            class=\"more-actions-menu-button menu-btn\"\n            [attr.name]=\"'data-grid-item-menu-button'\"\n            [ocxTooltip]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_TOOLTIP' | translate\"\n            tooltipPosition=\"top\"\n          ></button>\n        </div>\n        }\n      </div>\n    </div>\n  </div>\n</ng-template>\n<ng-template #defaultGridItemSubtitleLines let-item>\n  @for (subtitleLineId of subtitleLineIds() ?? []; track subtitleLineId) {\n  <div class=\"subtitleLine edit-time text-xl my-3\">{{ resolveFieldData(item, subtitleLineId) }}</div>\n  }\n</ng-template>\n<ng-template #defaultListItem let-item=\"item\" let-first=\"first\" let-columnTemplates=\"columnTemplates\">\n  @if (columnTemplates) {\n  <div class=\"col-12\" role=\"listitem\">\n    <div class=\"data-list-items p-1\" [ngClass]=\"{ 'list-border-divider': !first }\">\n      <div class=\"item-name-row flex flex-row justify-content-between\">\n        <div class=\"item-name mr-3 text-2xl font-medium align-content-center\">\n          @if (titleLineId()) {\n          <span>{{ resolveFieldData(item, titleLineId()) || '' }}</span>\n          }\n        </div>\n        <div class=\"flex flex-row\">\n          @if (viewItemObserved && (!viewActionVisibleField() || fieldIsTruthy(item, viewActionVisibleField()))) {\n          <button\n            id=\"{{resolveFieldData(item, 'id')}}-viewButton\"\n            type=\"button\"\n            icon=\"pi pi-eye\"\n            pButton\n            class=\"p-button-rounded p-button-text mb-1 mr-2 viewListItemButton\"\n            [ocxTooltip]=\"(viewMenuItemKey() || 'OCX_DATA_LIST_GRID.MENU.VIEW') | translate\"\n            tooltipPosition=\"top\"\n            [tooltipOptions]=\"{\n              disabled: !!viewActionEnabledField() && !fieldIsTruthy(item, viewActionEnabledField())\n            }\"\n            [attr.aria-label]=\"(viewMenuItemKey() || 'OCX_DATA_LIST_GRID.MENU.VIEW') | translate\"\n            (click)=\"onViewRow(item)\"\n            *ocxIfPermission=\"viewPermission()\"\n            [disabled]=\"!!viewActionEnabledField() && !fieldIsTruthy(item, viewActionEnabledField())\"\n            [attr.name]=\"'data-list-action-button'\"\n          ></button>\n          } @if (editItemObserved && (!editActionVisibleField() || fieldIsTruthy(item, editActionVisibleField()))) {\n          <button\n            id=\"{{resolveFieldData(item, 'id')}}-editButton\"\n            type=\"button\"\n            class=\"p-button-rounded p-button-text mb-1 mr-2 editListItemButton\"\n            icon=\"pi pi-pencil\"\n            pButton\n            [ocxTooltip]=\"(editMenuItemKey() || 'OCX_DATA_LIST_GRID.MENU.EDIT') | translate\"\n            tooltipPosition=\"top\"\n            [tooltipOptions]=\"{\n              disabled: !!editActionEnabledField() && !fieldIsTruthy(item, editActionEnabledField())\n            }\"\n            [attr.aria-label]=\"(editMenuItemKey() || 'OCX_DATA_LIST_GRID.MENU.EDIT') | translate\"\n            (click)=\"onEditRow(item)\"\n            *ocxIfPermission=\"editPermission()\"\n            [disabled]=\"!!editActionEnabledField() && !fieldIsTruthy(item, editActionEnabledField())\"\n            [attr.name]=\"'data-list-action-button'\"\n          ></button>\n          } @if (deleteItemObserved && (!deleteActionVisibleField() || fieldIsTruthy(item, deleteActionVisibleField())))\n          {\n          <button\n            id=\"{{resolveFieldData(item, 'id')}}-deleteButton\"\n            type=\"button\"\n            icon=\"pi pi-trash\"\n            class=\"p-button-rounded p-button-text p-button-danger mb-1 mr-2 deleteListItemButton\"\n            pButton\n            [ocxTooltip]=\"(deleteMenuItemKey() || 'OCX_DATA_LIST_GRID.MENU.DELETE') | translate\"\n            tooltipPosition=\"top\"\n            [tooltipOptions]=\"{\n              disabled: !!deleteActionEnabledField() && !fieldIsTruthy(item, deleteActionEnabledField())\n            }\"\n            [attr.aria-label]=\"(deleteMenuItemKey() || 'OCX_DATA_LIST_GRID.MENU.DELETE') | translate\"\n            (click)=\"onDeleteRow(item)\"\n            *ocxIfPermission=\"deletePermission()\"\n            [disabled]=\"!!deleteActionEnabledField() && !fieldIsTruthy(item, deleteActionEnabledField())\"\n            [attr.name]=\"'data-list-action-button'\"\n          ></button>\n          } @for (action of inlineListActions(); track action) { @if ((!action.actionVisibleField || fieldIsTruthy(item,\n          action.actionVisibleField))) {\n          @if (typeof action.routerLink === 'string' && !(action.disabled || (!!action.actionEnabledField && !fieldIsTruthy(item, action.actionEnabledField)))) {\n          <a\n            [id]=\"resolveFieldData(item, 'id') + '-' + (action.id ? action.id.concat('ActionButton') : 'inlineActionButton')\"\n            *ocxIfPermission=\"action.permission\"\n            pButton\n            class=\"p-button-rounded p-button-text no-underline\"\n            [ngClass]=\"action.classes\"\n            [icon]=\"action.icon || ''\"\n            [routerLink]=\"action.routerLink\"\n            [ocxTooltip]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n            tooltipPosition=\"top\"\n            [attr.aria-label]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n            [attr.data-testid]=\"'data-list-action-button'\"\n          ></a>\n          } @else {\n          <button\n            [id]=\"resolveFieldData(item, 'id') + '-' + (action.id ? action.id.concat('ActionButton') : 'inlineActionButton')\"\n            *ocxIfPermission=\"action.permission\"\n            pButton\n            class=\"p-button-rounded p-button-text\"\n            [ngClass]=\"action.classes\"\n            [icon]=\"action.icon || ''\"\n            (click)=\"onActionClick(action, item)\"\n            [ocxTooltip]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n            tooltipPosition=\"top\"\n            [tooltipOptions]=\"{\n              disabled: action.disabled || (!!action.actionEnabledField && !fieldIsTruthy(item, action.actionEnabledField))\n            }\"\n            [attr.aria-label]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n            [disabled]=\"action.disabled || (!!action.actionEnabledField && !fieldIsTruthy(item, action.actionEnabledField))\"\n            [attr.name]=\"'data-list-action-button'\"\n          ></button>\n          }\n          } } @if (hasVisibleOverflowMenuItems(item) | async) {\n          <p-menu #menu [model]=\"(overflowListMenuItems$ | async) || []\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n          <button\n            pButton\n            class=\"p-button-rounded p-button-text\"\n            [icon]=\"'pi pi-ellipsis-v'\"\n            (click)=\"toggleOverflowMenu($event, menu, item)\"\n            [attr.aria-label]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_ARIA_LABEL' | translate\"\n            [ocxTooltip]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_TOOLTIP' | translate\"\n            tooltipPosition=\"top\"\n            [attr.name]=\"'data-list-overflow-item-menu-button'\"\n          ></button>\n          }\n        </div>\n      </div>\n      <div class=\"text-base font-light my-1\">\n        <ng-container\n          [ngTemplateOutlet]=\"listItemSubtitleLines ?? defaultListItemSubtitleLines\"\n          [ngTemplateOutletContext]=\"{$implicit:item}\"\n        ></ng-container>\n      </div>\n      <div class=\"flex flex-wrap\">\n        @for (col of filteredColumns(); track col) {\n        <div class=\"w-12rem my-2 mr-2\">\n          <div class=\"font-bold\" [ocxTooltipOnOverflow]=\"col.nameKey | translate\" tooltipPosition=\"top\">\n            {{ col.nameKey | translate }}\n          </div>\n          <div\n            [ocxTooltipOnOverflow]=\"col.columnType === columnType.TRANSLATION_KEY ? (resolveFieldData(item,col.id) | translate) : resolveFieldData(item, col.id)\"\n            tooltipPosition=\"top\"\n          >\n            @defer(on viewport;){\n            <ng-container\n              [ngTemplateOutlet]=\"listValue ?? defaultListValue\"\n              [ngTemplateOutletContext]=\"{\n                rowObject: item,\n                column: col,\n                columnTemplates: columnTemplates\n                }\"\n            >\n            </ng-container>\n            } @placeholder {\n            <p-skeleton width=\"5rem\" />\n            }\n          </div>\n        </div>\n        }\n      </div>\n    </div>\n  </div>\n  }\n</ng-template>\n<ng-template #defaultListItemSubtitleLines let-item=\"$implicit\">\n  @for (subtitleLineId of subtitleLineIds() ?? []; track subtitleLineId) {\n  <div class=\"subtitleLine text-xl my-3\">{{ resolveFieldData(item, subtitleLineId) }}</div>\n  }\n</ng-template>\n\n<ng-template #defaultListValue let-rowObject=\"rowObject\" let-column=\"column\" let-columnTemplates=\"columnTemplates\">\n  @if (columnTemplates[column.id]) {\n  <ng-container\n    [ngTemplateOutlet]=\"columnTemplates[column.id]\"\n    [ngTemplateOutletContext]=\"{\n                rowObject: rowObject,\n                column: column\n            }\"\n  >\n  </ng-container>\n  }\n</ng-template>\n\n<ng-template pTemplate=\"defaultStringListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container> {{ resolveFieldData(rowObject, column.id) }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultNumberListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container> {{ resolveFieldData(rowObject, column.id) | number }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultDateListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container>\n    {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n  </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }} </ng-container>\n</ng-template>\n","import { Component, computed, effect, input, model, output } from '@angular/core'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataColumnNameId } from '../../model/data-column-name-id.model'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { SelectChangeEvent } from 'primeng/select'\n\nexport type ListGridSort = { sortColumn: string; sortDirection: DataSortDirection }\nexport interface DataListGridSortingComponentState {\n  sorting?: ListGridSort\n}\n\n@Component({\n  standalone: false,\n  selector: 'ocx-data-list-grid-sorting',\n  templateUrl: './data-list-grid-sorting.component.html',\n  styleUrls: ['./data-list-grid-sorting.component.scss'],\n})\nexport class DataListGridSortingComponent {\n  readonly columns = input<DataTableColumn[]>([])\n  readonly sortStates = input<DataSortDirection[]>([DataSortDirection.ASCENDING, DataSortDirection.DESCENDING])\n\n  readonly sortDirection = model<DataSortDirection>(DataSortDirection.NONE)\n  readonly sortField = model<string>('')\n\n  readonly sortChange = output<string>()\n  readonly sortDirectionChange = output<DataSortDirection>()\n  readonly componentStateChanged = output<DataListGridSortingComponentState>()\n  readonly columnsChange = output<string[]>()\n\n  readonly dropdownOptions = computed<DataColumnNameId[]>(() => {\n    return this.columns()\n      .filter((c) => !!c.sortable)\n      .map((c) => ({ columnId: c.id, columnName: c.nameKey }))\n  })\n\n  readonly selectedSortingOption = computed<DataColumnNameId | undefined>(() => {\n    const sortField = this.sortField()\n    return this.dropdownOptions().find((e) => e.columnId === sortField)\n  })\n\n  constructor() {\n    effect(() => {\n      this.componentStateChanged.emit({\n        sorting: {\n          sortColumn: this.sortField(),\n          sortDirection: this.sortDirection(),\n        },\n      })\n    })\n  }\n\n  selectSorting(event: SelectChangeEvent): void {\n    this.sortField.set(event.value.columnId)\n    this.sortChange.emit(event.value.columnId)\n  }\n\n  sortDirectionChanged(): void {\n    const newSortDirection = this.nextSortDirection()\n    this.sortDirection.set(newSortDirection)\n    this.sortDirectionChange.emit(newSortDirection)\n  }\n\n  nextSortDirection(): DataSortDirection {\n    const states = this.sortStates()\n    return states[(states.indexOf(this.sortDirection()) + 1) % states.length]\n  }\n\n  sortIcon(): string {\n    switch (this.sortDirection()) {\n      case DataSortDirection.ASCENDING:\n        return 'pi-sort-amount-up'\n      case DataSortDirection.DESCENDING:\n        return 'pi-sort-amount-down'\n      default:\n        return 'pi-sort-alt'\n    }\n  }\n\n  sortIconTitle(): string {\n    return this.sortDirectionToTitle(this.nextSortDirection())\n  }\n\n  sortDirectionToTitle(sortDirection: DataSortDirection): string {\n    switch (sortDirection) {\n      case DataSortDirection.ASCENDING:\n        return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.ASCENDING_TOOLTIP'\n      case DataSortDirection.DESCENDING:\n        return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.DESCENDING_TOOLTIP'\n      default:\n        return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.DEFAULT_TOOLTIP'\n    }\n  }\n}\n","<div class=\"flex align-items-center gap-2\">\n  <p-floatLabel variant=\"on\">\n    <p-select\n      id=\"dataListGridSortingDropdown\"\n      inputId=\"dataListGridSortingDropdownInput\"\n      [ngModel]=\"selectedSortingOption()\"\n      [options]=\"dropdownOptions()\"\n      (onChange)=\"selectSorting($event)\"\n      [ariaLabel]=\"('OCX_LIST_GRID_SORT.DROPDOWN.ARIA_LABEL' | translate)\"\n      optionLabel=\"columnName\"\n    >\n      <ng-template let-item #item> \n        <span [attr.aria-label]=\"item?.columnName ? (item.columnName | translate) : ''\">{{ item?.columnName ? (item.columnName | translate) : ''}}</span> \n      </ng-template>\n      <ng-template let-item #selectedItem>\n        <span [attr.aria-label]=\"item?.columnName ? (item.columnName | translate) : ''\">{{ item?.columnName ? (item.columnName | translate) : ''}}</span>\n      </ng-template></p-select\n    >\n    <label for=\"dataListGridSortingDropdownInput\">{{ (\"OCX_LIST_GRID_SORT.DROPDOWN.LABEL\" | translate) }}</label>\n  </p-floatLabel>\n  <p-button\n    id=\"dataListGridSortingButton\"\n    type=\"button\"\n    icon=\"pi {{sortIcon()}}\"\n    styleClass=\"p-button-outlined\"\n    (onClick)=\"sortDirectionChanged()\"\n    (keydown.enter)=\"sortDirectionChanged()\"\n    (keydown.space)=\"sortDirectionChanged()\"\n    [ocxTooltip]=\"(sortIconTitle() | translate)\"\n    tooltipPosition=\"top\"\n    [ariaLabel]=\"('OCX_LIST_GRID_SORT.SORTING_BUTTON_ARIA_LABEL' | translate:{currentDirection: sortDirection(), nextDirection: (sortDirectionToTitle(nextSortDirection())) | translate})\"\n  ></p-button>\n</div>","import { PrimeTemplate } from 'primeng/api'\n\nexport function findTemplate(templates: PrimeTemplate[], names: string[]): PrimeTemplate | undefined {\n  for (let index = 0; index < names.length; index++) {\n    const name = names[index]\n    const template = templates.find((template) => template.name === name)\n    if (template) {\n      return template\n    }\n  }\n  return undefined\n}\n","import { formatDate } from '@angular/common'\nimport {\n  Component,\n  Injector,\n  LOCALE_ID,\n  OnInit,\n  Output,\n  TemplateRef,\n  computed,\n  contentChild,\n  contentChildren,\n  effect,\n  inject,\n  input,\n  model,\n  output,\n  signal,\n  untracked,\n  viewChildren,\n} from '@angular/core'\nimport { computedPrevious } from 'ngxtension/computed-previous'\nimport { Router } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { isValidDate } from '@onecx/accelerator'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { PrimeTemplate, SelectItem } from 'primeng/api'\nimport { Menu } from 'primeng/menu'\nimport { MultiSelectItem } from 'primeng/multiselect'\nimport { Observable, combineLatest, debounceTime, filter, firstValueFrom, map, mergeMap, of, switchMap } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter, FilterType } from '../../model/filter.model'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { findTemplate } from '../../utils/template.utils'\nimport { PermissionInput } from '../../model/permission.model'\nimport { DataSortBase } from '../data-sort-base/data-sort-base'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\nimport { LiveAnnouncer } from '@angular/cdk/a11y'\nimport { observableOutput } from '../../utils/observable-output.utils'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport equal from 'fast-deep-equal'\nimport { handleAction, handleActionSync } from '../../utils/action-router.utils'\n\nexport type Primitive = number | string | boolean | bigint | Date\nexport type Row = {\n  id: string | number\n  [columnId: string]: unknown\n}\n\nexport enum TemplateType {\n  CELL = 'CELL',\n  FILTERCELL = 'FILTERCELL',\n  HEADER = 'HEADER',\n}\n\ninterface TemplatesData {\n  templatesObservables: Record<string, Observable<TemplateRef<any> | null>>\n  idSuffix: Array<string>\n  templateNames: Record<ColumnType, Array<string>> | Array<string>\n}\n\nexport type Sort = { sortColumn: string; sortDirection: DataSortDirection }\n\nexport interface DataTableComponentState {\n  filters?: Filter[]\n  sorting?: Sort\n  selectedRows?: Row[]\n  expandedRows?: Row[]\n  activePage?: number\n  pageSize?: number\n}\n\n@Component({\n  standalone: false,\n  selector: 'ocx-data-table',\n  templateUrl: './data-table.component.html',\n  styleUrls: ['./data-table.component.scss'],\n})\nexport class DataTableComponent extends DataSortBase implements OnInit {\n  private readonly router = inject(Router)\n  private readonly injector = inject(Injector)\n  private readonly userService = inject(UserService)\n  private readonly hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n  private readonly liveAnnouncer = inject(LiveAnnouncer)\n\n  FilterType = FilterType\n  TemplateType = TemplateType\n\n  rows = model<Row[]>([])\n  previousRows = computedPrevious(this.rows)\n  selectedRows = model<Row[]>([])\n  selectedIds = signal<Array<string | number>>([])\n\n  filters = model<Filter[]>([])\n  previousFilters = computedPrevious(this.filters)\n  sortDirection = model<DataSortDirection>(DataSortDirection.NONE)\n  sortColumn = model<string>('')\n  columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n  columnFilterTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n  columnHeaderTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n  columns = model<DataTableColumn[]>([])\n  clientSideFiltering = input(true)\n  clientSideSorting = input(true)\n  sortStates = model<DataSortDirection[]>([DataSortDirection.ASCENDING, DataSortDirection.DESCENDING])\n\n  pageSizes = model<number[]>([10, 25, 50])\n  displayedPageSize = computed(() => {\n    const pageSize = this.pageSize()\n    const pageSizes = this.pageSizes()\n\n    return pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50\n  })\n  pageSize = model<number | undefined>(undefined)\n\n  emptyResultsMessage = input<string | undefined>(undefined)\n  name = model<string>('')\n  deletePermission = input<PermissionInput>(undefined)\n  viewPermission = input<PermissionInput>(undefined)\n  editPermission = input<PermissionInput>(undefined)\n  deleteActionVisibleField = input<string | undefined>(undefined)\n  deleteActionEnabledField = input<string | undefined>(undefined)\n  viewActionVisibleField = input<string | undefined>(undefined)\n  viewActionEnabledField = input<string | undefined>(undefined)\n  editActionVisibleField = input<string | undefined>(undefined)\n  editActionEnabledField = input<string | undefined>(undefined)\n  selectionEnabledField = input<string | undefined>(undefined)\n  allowSelectAll = input<boolean>(true)\n  paginator = input<boolean>(true)\n\n  page = model<number>(0)\n  tableStyle = input<{ [klass: string]: any } | undefined>(undefined)\n  totalRecordsOnServer = input<number | undefined>(undefined)\n  currentPageShowingKey = input<string>('OCX_DATA_TABLE.SHOWING')\n  currentPageShowingWithTotalOnServerKey = input<string>('OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER')\n  params = computed(() => {\n    const totalRecordsOnServer = this.totalRecordsOnServer()\n    return {\n      currentPage: '{currentPage}',\n      totalPages: '{totalPages}',\n      rows: '{rows}',\n      first: '{first}',\n      last: '{last}',\n      totalRecords: '{totalRecords}',\n      totalRecordsOnServer,\n    }\n  })\n\n  captionTemplate = input<TemplateRef<any> | undefined>(undefined)\n  stringCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n  stringCellChildTemplate = contentChild<TemplateRef<any>>('stringCell')\n  stringCell = computed(() => {\n    return this.stringCellTemplate() || this.stringCellChildTemplate()\n  })\n\n  numberCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n  numberCellChildTemplate = contentChild<TemplateRef<any>>('numberCell')\n  numberCell = computed(() => {\n    return this.numberCellTemplate() || this.numberCellChildTemplate()\n  })\n\n  dateCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n  dateCellChildTemplate = contentChild<TemplateRef<any>>('dateCell')\n  dateCell = computed(() => {\n    return this.dateCellTemplate() || this.dateCellChildTemplate()\n  })\n\n  relativeDateCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n  relativeDateCellChildTemplate = contentChild<TemplateRef<any>>('relativeDateCell')\n  relativeDateCell = computed(() => {\n    return this.relativeDateCellTemplate() || this.relativeDateCellChildTemplate()\n  })\n\n  cellTemplate = input<TemplateRef<any> | undefined>(undefined)\n  cellChildTemplate = contentChild<TemplateRef<any>>('cell')\n  cell = computed(() => {\n    return this.cellTemplate() || this.cellChildTemplate()\n  })\n\n  translationKeyCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n  translationKeyCellChildTemplate = contentChild<TemplateRef<any>>('translationKeyCell')\n  translationKeyCell = computed(() => {\n    return this.translationKeyCellTemplate() || this.translationKeyCellChildTemplate()\n  })\n\n  stringFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n  stringFilterCellChildTemplate = contentChild<TemplateRef<any>>('stringFilterCell')\n  stringFilterCell = computed(() => {\n    return this.stringFilterCellTemplate() || this.stringFilterCellChildTemplate()\n  })\n\n  numberFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n  numberFilterCellChildTemplate = contentChild<TemplateRef<any>>('numberFilterCell')\n  numberFilterCell = computed(() => {\n    return this.numberFilterCellTemplate() || this.numberFilterCellChildTemplate()\n  })\n\n  dateFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n  dateFilterCellChildTemplate = contentChild<TemplateRef<any>>('dateFilterCell')\n  dateFilterCell = computed(() => {\n    return this.dateFilterCellTemplate() || this.dateFilterCellChildTemplate()\n  })\n\n  relativeDateFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n  relativeDateFilterCellChildTemplate = contentChild<TemplateRef<any>>('relativeDateFilterCell')\n  relativeDateFilterCell = computed(() => {\n    return this.relativeDateFilterCellTemplate() || this.relativeDateFilterCellChildTemplate()\n  })\n\n  filterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n  filterCellChildTemplate = contentChild<TemplateRef<any>>('filterCell')\n  filterCell = computed(() => {\n    return this.filterCellTemplate() || this.filterCellChildTemplate()\n  })\n\n  translationKeyFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n  translationKeyFilterCellChildTemplate = contentChild<TemplateRef<any>>('translationKeyFilterCell')\n  translationKeyFilterCell = computed(() => {\n    return this.translationKeyFilterCellTemplate() || this.translationKeyFilterCellChildTemplate()\n  })\n\n  columnHeaderTemplate = input<TemplateRef<any> | undefined>(undefined)\n  columnHeaderChildTemplate = contentChild<TemplateRef<any>>('columnHeaderTemplate')\n  columnHeader = computed(() => {\n    return this.columnHeaderTemplate() || this.columnHeaderChildTemplate()\n  })\n\n  additionalActions = model<DataAction[]>([])\n  frozenActionColumn = input<boolean>(false)\n  actionColumnPosition = input<'left' | 'right'>('right')\n\n  expandedRows = model<Row[] | string[] | number[]>([])\n  expandedRowIds = computed<(string | number)[]>(() =>\n    (this.expandedRows() ?? [])\n      .filter((row): row is Row | string | number => row !== null && row !== undefined)\n      .map((row): string | number => (typeof row === 'object' ? row.id : row))\n  )\n  expandedRowKeys = computed<Record<string, boolean>>(() =>\n    Object.fromEntries(this.expandedRowIds().map((id) => [id, true]))\n  )\n\n  expandable = input<boolean>(false)\n  frozenExpandColumn = input<boolean>(false)\n\n  filtered = output<Filter[]>()\n  sorted = output<Sort>()\n  @Output() viewTableRow = observableOutput<Row>()\n  @Output() editTableRow = observableOutput<Row>()\n  @Output() deleteTableRow = observableOutput<Row>()\n  @Output() selectionChanged = observableOutput<Row[]>()\n  pageChanged = output<number>()\n  pageSizeChanged = output<number>()\n  componentStateChanged = output<DataTableComponentState>()\n  @Output() rowExpanded = observableOutput<Row>()\n  @Output() rowCollapsed = observableOutput<Row>()\n\n  displayedRows$ = combineLatest([\n    toObservable(this.rows),\n    toObservable(this.filters),\n    toObservable(this.sortColumn),\n    toObservable(this.sortDirection),\n    toObservable(this.columns),\n    toObservable(this.clientSideFiltering),\n    toObservable(this.clientSideSorting),\n  ]).pipe(\n    map(([rows, filters, sortColumn, sortDirection, columns, clientSideFiltering, clientSideSorting]) => {\n      return { rows, filters, sortColumn, sortDirection, columns, clientSideFiltering, clientSideSorting }\n    }),\n    mergeMap((params) =>\n      this.translateItems(params.rows, params.columns, params.clientSideFiltering, params.clientSideSorting).pipe(\n        map((translations) => ({ ...params, translations }))\n      )\n    ),\n    map((params) => ({\n      ...params,\n      rows: this.filterItems([params.rows, params.filters, params.translations], params.clientSideFiltering),\n    })),\n    map((params) => ({\n      ...params,\n      rows: this.sortItems(\n        [params.rows, params.sortColumn, params.sortDirection, params.translations],\n        params.columns,\n        params.clientSideSorting\n      ),\n    })),\n    map(({ rows }) => this.flattenItems(rows))\n  )\n\n  selectedFilteredRows = computed(() => {\n    const selectionIds = this.selectedIds()\n    const rows = this.rows()\n    // Include page to force fresh array references on page navigation\n    // to satisfy PrimeNG DataTable selection tracking, because it needs new object references to detect changes\n    this.page()\n    return selectionIds.map((rowId) => rows.find((r) => r.id === rowId)).filter((row): row is Row => row !== undefined)\n  })\n\n  currentFilterColumn = signal<DataTableColumn | null>(null)\n  currentEqualFilterOptions$ = combineLatest([\n    toObservable(this.rows),\n    toObservable(this.currentFilterColumn),\n    toObservable(this.filters),\n    toObservable(this.columns),\n  ]).pipe(\n    filter(\n      ([_, currentFilterColumn, __, ___]) =>\n        !currentFilterColumn?.filterType || currentFilterColumn.filterType === FilterType.EQUALS\n    ),\n    mergeMap(([rows, currentFilterColumn, filters, columns]) => {\n      if (!currentFilterColumn?.id) {\n        return of({ options: [], column: undefined })\n      }\n\n      const currentFilters = filters\n        .filter(\n          (filter) =>\n            filter.columnId === currentFilterColumn?.id &&\n            (!currentFilterColumn.filterType || currentFilterColumn.filterType === FilterType.EQUALS)\n        )\n        .map((filter) => filter.value)\n\n      const columnValues = rows\n        .map((row) => row[currentFilterColumn?.id])\n        .filter((value) => value !== null && value !== undefined && value !== '')\n\n      if (currentFilterColumn.columnType === ColumnType.DATE) {\n        return of({\n          options: columnValues.map(\n            (c) =>\n              ({\n                label: c,\n                value: c,\n                toFilterBy: formatDate(`${c}`, currentFilterColumn.dateFormat ?? 'medium', this.locale),\n              }) as SelectItem\n          ),\n          column: currentFilterColumn,\n        })\n      }\n\n      const translateObservable =\n        columns.find((c) => c.id === currentFilterColumn?.id)?.columnType === ColumnType.TRANSLATION_KEY\n          ? this.translateColumnValues(columnValues as string[])\n          : of(Object.fromEntries(columnValues.map((cv) => [cv, cv])))\n      return translateObservable.pipe(\n        map((translatedValues) => {\n          return Object.values(translatedValues)\n            .concat(currentFilters)\n            .filter((value, index, self) => self.indexOf(value) === index && value !== null && value !== '')\n            .map(\n              (filterOption) =>\n                ({\n                  label: filterOption,\n                  value: filterOption,\n                  toFilterBy: filterOption,\n                }) as SelectItem\n            )\n        }),\n        map((options) => {\n          return {\n            options: options,\n            column: currentFilterColumn,\n          }\n        })\n      )\n    })\n  )\n\n  currentEqualSelectedFilters = computed(() => {\n    const filters = this.filters()\n    const currentFilterColumn = this.currentFilterColumn()\n    return filters\n      .filter(\n        (filter) =>\n          filter.columnId === currentFilterColumn?.id &&\n          (!currentFilterColumn.filterType || currentFilterColumn.filterType === FilterType.EQUALS)\n      )\n      .map((filter) => filter.value)\n  })\n\n  currentTruthySelectedFilters = computed(() => {\n    const filters = this.filters()\n    const currentFilterColumn = this.currentFilterColumn()\n    return filters\n      .filter(\n        (filter) =>\n          filter.columnId === currentFilterColumn?.id && currentFilterColumn.filterType === FilterType.IS_NOT_EMPTY\n      )\n      .map((filter) => filter.value)\n  })\n\n  filterAmounts = computed<Record<string, number>>(() => {\n    const filters = this.filters()\n    return filters\n      .map((filter) => filter.columnId)\n      .map((columnId) => ({ [columnId]: filters.filter((filter) => filter.columnId === columnId).length }))\n      .reduce((acc, curr) => ({ ...acc, ...curr }), {})\n  })\n\n  overflowActions = computed(() => {\n    return this.additionalActions().filter((action) => action.showAsOverflow)\n  })\n  overflowActions$ = toObservable(this.overflowActions)\n  inlineActions = computed(() => {\n    return this.additionalActions().filter((action) => !action.showAsOverflow)\n  })\n  currentMenuRow = signal<Row | null>(null)\n\n  overflowMenuItems$ = combineLatest([toObservable(this.overflowActions), toObservable(this.currentMenuRow)]).pipe(\n    switchMap(([actions, row]) =>\n      this.filterActionsBasedOnPermissions(actions).pipe(\n        map((permittedActions) => ({ actions: permittedActions, row: row }))\n      )\n    ),\n    mergeMap(({ actions, row }) => {\n      if (actions.length === 0) {\n        return of([])\n      }\n\n      return this.translateService.get([...actions.map((a) => a.labelKey || '')]).pipe(\n        map((translations) => {\n          return actions.map((a) => ({\n            label: translations[a.labelKey || ''],\n            icon: a.icon,\n            styleClass: (a.classes || []).join(' '),\n            disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(row, a.actionEnabledField)),\n            visible: !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField),\n            routerLink: typeof a.routerLink === 'string' ? a.routerLink : undefined,\n            command: typeof a.routerLink === 'string' ? undefined : this.createMenuItemCommand(a, row),\n          }))\n        })\n      )\n    })\n  )\n\n  templates = contentChildren<PrimeTemplate>(PrimeTemplate)\n  templates$ = toObservable(this.templates)\n\n  viewTemplates = viewChildren<PrimeTemplate>(PrimeTemplate)\n  viewTemplates$ = toObservable(this.viewTemplates)\n\n  parentTemplates = model<PrimeTemplate[] | null | undefined>(undefined)\n  parentTemplates$ = toObservable(this.parentTemplates)\n\n  expansionTemplate = computed<PrimeTemplate | undefined>(() => {\n    const all = [...this.templates(), ...this.viewTemplates(), ...(this.parentTemplates() ?? [])].filter(\n      (t, index, self) => self.findIndex((pt) => pt.getType() === t.getType()) === index\n    )\n\n    return all.find((t) => t.getType() === 'expansion')\n  })\n\n  get viewTableRowObserved(): boolean {\n    const dv = this.injector.get('DataViewComponent', null)\n    return dv?.viewItemObserved || dv?.viewItem.observed() || this.viewTableRow.observed()\n  }\n  get editTableRowObserved(): boolean {\n    const dv = this.injector.get('DataViewComponent', null)\n    return dv?.editItemObserved || dv?.editItem.observed() || this.editTableRow.observed()\n  }\n  get deleteTableRowObserved(): boolean {\n    const dv = this.injector.get('DataViewComponent', null)\n    return dv?.deleteItemObserved || dv?.deleteItem.observed() || this.deleteTableRow.observed()\n  }\n  get anyRowActionObserved(): boolean {\n    return this.viewTableRowObserved || this.editTableRowObserved || this.deleteTableRowObserved\n  }\n\n  get actionColumnVisible(): boolean {\n    return this.anyRowActionObserved || this.additionalActions().length > 0\n  }\n\n  getRowColspan(hasExpansionTemplate: boolean): number {\n    return (\n      this.columns().length +\n      (this.selectionChangedObserved ? 1 : 0) +\n      (this.expandable() && hasExpansionTemplate ? 1 : 0) +\n      (this.actionColumnVisible ? 1 : 0)\n    )\n  }\n\n  get selectionChangedObserved(): boolean {\n    const dv = this.injector.get('DataViewComponent', null)\n    return dv?.selectionChangedObserved || dv?.selectionChanged.observed() || this.selectionChanged.observed()\n  }\n\n  constructor() {\n    const locale = inject(LOCALE_ID)\n    const translateService = inject(TranslateService)\n\n    super(locale, translateService)\n\n    effect(() => {\n      const rows = this.rows()\n\n      // Not track previousRows change to avoid the trigger\n      untracked(() => {\n        const previousRows = this.previousRows()\n        if (previousRows.length && rows.length < previousRows.length) {\n          this.page.set(0)\n        }\n      })\n\n      const currentResults = rows.length\n      const newStatus =\n        currentResults === 0 ? 'OCX_DATA_TABLE.NO_SEARCH_RESULTS_FOUND' : 'OCX_DATA_TABLE.SEARCH_RESULTS_FOUND'\n\n      firstValueFrom(this.translateService.get(newStatus, { results: currentResults })).then(\n        (translatedText: string) => {\n          this.liveAnnouncer.announce(translatedText)\n        }\n      )\n    })\n\n    effect(() => {\n      const filters = this.filters()\n      // Not track previousFilters change to avoid the trigger\n      untracked(() => {\n        const previousFilters = this.previousFilters()\n        if (previousFilters.length && !equal(filters, previousFilters)) {\n          this.page.set(0)\n        }\n      })\n      this.filtered.emit(filters)\n    })\n\n    effect(() => {\n      const columns = this.columns()\n      const obs = columns.map((c) => this.getTemplate(c, TemplateType.CELL))\n      const filterObs = columns.map((c) => this.getTemplate(c, TemplateType.FILTERCELL))\n      const headerObs = columns.map((c) => this.getTemplate(c, TemplateType.HEADER))\n      this.columnTemplates$ = combineLatest(obs).pipe(\n        map((values) => Object.fromEntries(columns.map((c, i) => [c.id, values[i]]))),\n        debounceTime(50)\n      )\n      this.columnFilterTemplates$ = combineLatest(filterObs).pipe(\n        map((values) => Object.fromEntries(columns.map((c, i) => [c.id, values[i]])))\n      )\n      this.columnHeaderTemplates$ = combineLatest(headerObs).pipe(\n        map((values) => Object.fromEntries(columns.map((c, i) => [c.id, values[i]])))\n      )\n    })\n\n    effect(() => {\n      const selectedRows = this.selectedRows()\n      const selectedIds = selectedRows.map((row) => {\n        if (typeof row === 'object') {\n          return row.id\n        }\n        return row\n      })\n      this.selectedIds.set(selectedIds)\n    })\n\n    effect(() => {\n      this.emitComponentStateChanged()\n    })\n\n    effect(() => {\n      this.sorted.emit({ sortColumn: this.sortColumn(), sortDirection: this.sortDirection() })\n    })\n\n    effect(() => {\n      this.emitSelectionChanged()\n    })\n\n    effect(() => {\n      this.pageChanged.emit(this.page())\n    })\n\n    effect(() => {\n      const pageSize = this.pageSize()\n      if (pageSize === undefined) {\n        return\n      }\n      this.pageSizeChanged.emit(pageSize)\n    })\n\n    this.rowSelectable = this.rowSelectable.bind(this)\n  }\n\n  ngOnInit(): void {\n    this.name.set(this.name() || this.router.url.replace(/[^A-Za-z0-9]/, '_'))\n  }\n\n  translateColumnValues(columnValues: string[]): Observable<any> {\n    return columnValues.length ? this.translateService.get(columnValues as string[]) : of({})\n  }\n\n  emitComponentStateChanged() {\n    this.componentStateChanged.emit({\n      filters: this.filters(),\n      sorting: {\n        sortColumn: this.sortColumn(),\n        sortDirection: this.sortDirection(),\n      },\n      pageSize: this.displayedPageSize(),\n      activePage: this.page(),\n      selectedRows: this.rows().filter((row) => this.selectedIds().includes(row.id)),\n      expandedRows: this.rows().filter((row) => this.expandedRowIds().includes(row.id)),\n    })\n  }\n\n  emitSelectionChanged() {\n    this.selectionChanged.emit(this.rows().filter((row) => this.selectedIds().includes(row.id)))\n  }\n\n  onRowExpand(event: any) {\n    if (!this.expandedRowIds().includes(event.data.id)) {\n      this.expandedRows.update((rows) => [...(rows ?? []), event.data] as Row[])\n    }\n    this.rowExpanded.emit(event.data)\n  }\n\n  onRowCollapse(event: any) {\n    this.expandedRows.update(\n      (rows) =>\n        (rows ?? []).filter((r) =>\n          typeof r === 'object' ? (r as Row).id !== event.data.id : r !== event.data.id\n        ) as Row[] | string[] | number[]\n    )\n    this.rowCollapsed.emit(event.data)\n  }\n\n  isRowExpanded(row: Row): boolean {\n    return this.expandedRowIds().includes(row.id)\n  }\n\n  toggleRowExpansion(row: Row) {\n    if (this.isRowExpanded(row)) {\n      this.onRowCollapse({ data: row })\n    } else {\n      this.onRowExpand({ data: row })\n    }\n  }\n\n  onSortColumnClick(sortColumn: string) {\n    const newSortDirection = this.columnNextSortDirection(sortColumn)\n\n    this.sortColumn.set(sortColumn)\n    this.sortDirection.set(newSortDirection)\n  }\n\n  columnNextSortDirection(sortColumn: string) {\n    const sortStates = this.sortStates()\n    return sortColumn === this.sortColumn()\n      ? sortStates[(sortStates.indexOf(this.sortDirection()) + 1) % sortStates.length]\n      : sortStates[0]\n  }\n\n  onDeleteRow(selectedTableRow: Row) {\n    this.deleteTableRow.emit(selectedTableRow)\n  }\n\n  onViewRow(selectedTableRow: Row) {\n    this.viewTableRow.emit(selectedTableRow)\n  }\n\n  onEditRow(selectedTableRow: Row) {\n    this.editTableRow.emit(selectedTableRow)\n  }\n\n  onFilterChosen(column: DataTableColumn) {\n    this.currentFilterColumn.set(column)\n  }\n\n  onMultiselectFilterChange(column: DataTableColumn, event: any) {\n    const filters = this.filters()\n      .filter((filter) => filter.columnId !== column.id)\n      .concat(\n        event.value.map((value: Primitive) => ({\n          columnId: column.id,\n          value,\n          filterType: column.filterType,\n        }))\n      )\n    if (this.clientSideFiltering()) {\n      this.filters.set(filters)\n    }\n  }\n\n  sortIconTitle(sortColumn: string) {\n    return this.sortDirectionToTitle(this.columnNextSortDirection(sortColumn))\n  }\n\n  sortDirectionToTitle(sortDirection: DataSortDirection) {\n    switch (sortDirection) {\n      case DataSortDirection.ASCENDING:\n        return 'OCX_DATA_TABLE.TOGGLE_BUTTON.ASCENDING_TITLE'\n      case DataSortDirection.DESCENDING:\n        return 'OCX_DATA_TABLE.TOGGLE_BUTTON.DESCENDING_TITLE'\n      default:\n        return 'OCX_DATA_TABLE.TOGGLE_BUTTON.DEFAULT_TITLE'\n    }\n  }\n\n  isRowSelectionDisabled(rowObject: Row) {\n    return !!this.selectionEnabledField() && !this.fieldIsTruthy(rowObject, this.selectionEnabledField())\n  }\n\n  rowSelectable(event: any) {\n    return !this.isRowSelectionDisabled(event.data)\n  }\n\n  onSelectionChange(selection: Row[]) {\n    let newSelectionIds = selection.map((row) => row.id)\n    const rows = this.rows()\n\n    if (this.selectionEnabledField()) {\n      const disabledRowIds = rows\n        .filter((r) => !this.fieldIsTruthy(r, this.selectionEnabledField()))\n        .map((row) => row.id)\n      if (disabledRowIds.length > 0) {\n        newSelectionIds = this.mergeWithDisabledKeys(newSelectionIds, disabledRowIds)\n      }\n    }\n\n    this.selectedIds.set(newSelectionIds)\n  }\n\n  mergeWithDisabledKeys(newSelectionIds: (string | number)[], disabledRowIds: (string | number)[]) {\n    const previousSelectionIds = this.selectedIds()\n    const previouslySelectedAndDisabled = previousSelectionIds.filter((id) => disabledRowIds.includes(id))\n    const disabledAndPreviouslyDeselected = disabledRowIds.filter((id) => !previousSelectionIds.includes(id))\n    const updatedSelection = [...newSelectionIds]\n\n    previouslySelectedAndDisabled.forEach((id) => {\n      if (!updatedSelection.includes(id)) {\n        updatedSelection.push(id)\n      }\n    })\n\n    disabledAndPreviouslyDeselected.forEach((id) => {\n      const index = updatedSelection.indexOf(id)\n      if (index > -1) {\n        updatedSelection.splice(index, 1)\n      }\n    })\n\n    return updatedSelection\n  }\n\n  isSelected(row: Row) {\n    return this.selectedIds().includes(row.id)\n  }\n\n  onPageChange(event: any) {\n    const page = event.first / event.rows\n    this.page.set(page)\n    this.pageSize.set(event.rows)\n  }\n\n  fieldIsTruthy(object: any, key: any) {\n    return !!ObjectUtils.resolveFieldData(object, key)\n  }\n\n  toggleOverflowMenu(event: MouseEvent, menu: Menu, row: Row) {\n    this.currentMenuRow.set(row)\n    menu.toggle(event)\n  }\n\n  hasVisibleOverflowMenuItems(row: any) {\n    return this.overflowActions$.pipe(\n      switchMap((actions) => this.filterActionsBasedOnPermissions(actions)),\n      map((actions) => actions.some((a) => !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField)))\n    )\n  }\n\n  isDate(value: Date | string | number) {\n    if (value instanceof Date) {\n      return true\n    }\n    const d = new Date(value)\n    return isValidDate(d)\n  }\n\n  private readonly headerTemplatesData: TemplatesData = {\n    templatesObservables: {},\n    idSuffix: ['IdTableHeader', 'IdHeader'],\n    templateNames: ['columnHeader'],\n  }\n\n  private readonly cellTemplatesData: TemplatesData = {\n    templatesObservables: {},\n    idSuffix: ['IdTableCell', 'IdCell'],\n    templateNames: {\n      [ColumnType.DATE]: ['dateCell', 'dateTableCell', 'defaultDateCell'],\n      [ColumnType.NUMBER]: ['numberCell', 'numberTableCell', 'defaultNumberCell'],\n      [ColumnType.RELATIVE_DATE]: ['relativeDateCell', 'relativeDateTableCell', 'defaultRelativeDateCell'],\n      [ColumnType.TRANSLATION_KEY]: ['translationKeyCell', 'translationKeyTableCell', 'defaultTranslationKeyCell'],\n      [ColumnType.STRING]: ['stringCell', 'stringTableCell', 'defaultStringCell'],\n    },\n  }\n\n  private readonly filterTemplatesData: TemplatesData = {\n    templatesObservables: {},\n    idSuffix: ['IdTableFilterCell', 'IdFilterCell', 'IdTableCell', 'IdCell'],\n    templateNames: {\n      [ColumnType.DATE]: ['dateFilterCell', 'dateTableFilterCell', 'dateCell', 'dateTableCell', 'defaultDateCell'],\n      [ColumnType.NUMBER]: [\n        'numberFilterCell',\n        'numberTableFilterCell',\n        'numberCell',\n        'numberTableCell',\n        'defaultNumberCell',\n      ],\n      [ColumnType.RELATIVE_DATE]: [\n        'relativeDateFilterCell',\n        'relativeDateTableFilterCell',\n        'relativeDateCell',\n        'relativeDateTableCell',\n        'defaultRelativeDateCell',\n      ],\n      [ColumnType.TRANSLATION_KEY]: [\n        'translationKeyFilterCell',\n        'translationKeyTableFilterCell',\n        'defaultTranslationKeyCell',\n        'translationKeyCell',\n        'translationKeyTableCell',\n      ],\n      [ColumnType.STRING]: [\n        'stringFilterCell',\n        'stringTableFilterCell',\n        'stringCell',\n        'stringTableCell',\n        'defaultStringCell',\n      ],\n    },\n  }\n\n  private readonly templatesDataMap: Record<TemplateType, TemplatesData> = {\n    [TemplateType.CELL]: this.cellTemplatesData,\n    [TemplateType.FILTERCELL]: this.filterTemplatesData,\n    [TemplateType.HEADER]: this.headerTemplatesData,\n  }\n\n  getColumnTypeTemplate(templates: PrimeTemplate[], columnType: ColumnType, templateType: TemplateType) {\n    let template: TemplateRef<any> | undefined\n\n    switch (templateType) {\n      case TemplateType.HEADER:\n        return (\n          this.columnHeader() ??\n          findTemplate(templates, this.templatesDataMap[templateType].templateNames as string[])?.template ??\n          null\n        )\n      case TemplateType.CELL:\n        switch (columnType) {\n          case ColumnType.DATE:\n            template = this.dateCell()\n            break\n          case ColumnType.NUMBER:\n            template = this.numberCell()\n            break\n          case ColumnType.RELATIVE_DATE:\n            template = this.relativeDateCell()\n            break\n          case ColumnType.TRANSLATION_KEY:\n            template = this.translationKeyCell()\n            break\n          default:\n            template = this.stringCell()\n        }\n        break\n      case TemplateType.FILTERCELL:\n        switch (columnType) {\n          case ColumnType.DATE:\n            template = this.dateFilterCell()\n            break\n          case ColumnType.NUMBER:\n            template = this.numberFilterCell()\n            break\n          case ColumnType.RELATIVE_DATE:\n            template = this.relativeDateFilterCell()\n            break\n          case ColumnType.TRANSLATION_KEY:\n            template = this.translationKeyFilterCell()\n            break\n          default:\n            template = this.stringFilterCell()\n        }\n        break\n    }\n\n    const templateNames = this.templatesDataMap[templateType].templateNames as Record<ColumnType, string[]>\n    return (\n      template ??\n      findTemplate(templates, templateNames[columnType])?.template ??\n      null\n    )\n  }\n\n  getTemplate(column: DataTableColumn, templateType: TemplateType): Observable<TemplateRef<any> | null> {\n    const templatesData = this.templatesDataMap[templateType]\n\n    if (!templatesData.templatesObservables[column.id]) {\n      templatesData.templatesObservables[column.id] = combineLatest([\n        this.templates$,\n        this.viewTemplates$,\n        this.parentTemplates$,\n      ]).pipe(\n        map(([t, vt, pt]) => {\n          const templates = [...(t ?? []), ...(vt ?? []), ...(pt ?? [])]\n          const columnTemplate = findTemplate(\n            templates,\n            templatesData.idSuffix.map((suffix) => column.id + suffix)\n          )?.template\n          if (columnTemplate) {\n            return columnTemplate\n          }\n          return this.getColumnTypeTemplate(templates, column.columnType, templateType)\n        })\n      )\n    }\n    return templatesData.templatesObservables[column.id]\n  }\n\n  resolveFieldData(object: any, key: any) {\n    return ObjectUtils.resolveFieldData(object, key)\n  }\n\n  getRowObjectFromMultiselectItem(value: MultiSelectItem, column: DataTableColumn): Record<string, string | undefined> {\n    return {\n      [column.id]: value.label,\n    }\n  }\n\n  rowTrackByFunction = (index: number, item: any) => {\n    return item.id\n  }\n\n  private filterActionsBasedOnPermissions(actions: DataAction[]): Observable<DataAction[]> {\n    const getPermissions =\n      this.hasPermissionChecker?.getPermissions?.bind(this.hasPermissionChecker) ||\n      this.userService.getPermissions.bind(this.userService)\n\n    return getPermissions().pipe(\n      map((permissions) => {\n        return actions.filter((action) => {\n          const actionPermissions = Array.isArray(action.permission) ? action.permission : [action.permission]\n          return actionPermissions.every((p) => permissions.includes(p))\n        })\n      })\n    )\n  }\n\n  async onActionClick(action: DataAction, rowObject: any): Promise<void> {\n    await handleAction(this.router, action, rowObject)\n  }\n\n  private createMenuItemCommand(action: DataAction, row: any): () => void {\n    return () => handleActionSync(this.router, action, row)\n  }\n  \n  getRowSummary(rowObject: any): string {\n    let summary = ''\n    const columns = Object.entries(rowObject)\n    columns.forEach(([key, value], index) => {\n      summary += `${key}: ${value}${index < columns.length - 1 ? ',' : ''}`\n    })\n    \n    return summary.trim()\n  }\n}\n\n\n\n","<ng-template #actionColumn let-rowObject=\"localRowObject\">\n  @if (actionColumnVisible) {\n  <td\n    class=\"actions\"\n    pFrozenColumn\n    [frozen]=\"frozenActionColumn()\"\n    [alignFrozen]=\"actionColumnPosition()\"\n    [attr.name]=\"actionColumnPosition() === 'left' ? 'action-column-left' : 'action-column-right'\"\n    [ngClass]=\"(frozenActionColumn() && actionColumnPosition() === 'left') ? 'border-right-1' : (frozenActionColumn() && actionColumnPosition() === 'right') ? 'border-left-1' : ''\"\n  >\n    <div class=\"icon-button-row-wrapper\">\n      @if (viewTableRowObserved && (!viewActionVisibleField() || fieldIsTruthy(rowObject, viewActionVisibleField()))) {\n      <button\n        id=\"{{ resolveFieldData(rowObject, 'id') }}-viewButton\"\n        *ocxIfPermission=\"viewPermission()\"\n        [disabled]=\"!!viewActionEnabledField() && !fieldIsTruthy(rowObject, viewActionEnabledField())\"\n        pButton\n        class=\"p-button-rounded p-button-text viewTableRowButton\"\n        [title]=\"'OCX_DATA_TABLE.ACTIONS.VIEW' | translate\"\n        [attr.aria-label]=\"'OCX_DATA_TABLE.ACTIONS.VIEW' | translate\"\n        icon=\"pi pi-eye\"\n        (click)=\"onViewRow(rowObject)\"\n        [attr.name]=\"'data-table-action-button'\"\n      ></button>\n      } @if (editTableRowObserved && (!editActionVisibleField() || fieldIsTruthy(rowObject, editActionVisibleField())))\n      {\n      <button\n        [id]=\"resolveFieldData(rowObject, 'id')+'-editButton'\"\n        *ocxIfPermission=\"editPermission()\"\n        [disabled]=\"!!editActionEnabledField() && !fieldIsTruthy(rowObject, editActionEnabledField())\"\n        pButton\n        class=\"p-button-rounded p-button-text editTableRowButton\"\n        [title]=\"'OCX_DATA_TABLE.ACTIONS.EDIT' | translate\"\n        [attr.aria-label]=\"'OCX_DATA_TABLE.ACTIONS.EDIT' | translate\"\n        icon=\"pi pi-pencil\"\n        (click)=\"onEditRow(rowObject)\"\n        [attr.name]=\"'data-table-action-button'\"\n      ></button>\n      } @if ( deleteTableRowObserved && (!deleteActionVisibleField() || fieldIsTruthy(rowObject,\n      deleteActionVisibleField())) ) {\n      <button\n        [id]=\"resolveFieldData(rowObject, 'id')+'-deleteButton'\"\n        *ocxIfPermission=\"deletePermission()\"\n        [disabled]=\"!!deleteActionEnabledField() && !fieldIsTruthy(rowObject, deleteActionEnabledField())\"\n        pButton\n        class=\"p-button-rounded p-button-text p-button-danger deleteTableRowButton\"\n        [title]=\"'OCX_DATA_TABLE.ACTIONS.DELETE' | translate\"\n        [attr.aria-label]=\"'OCX_DATA_TABLE.ACTIONS.DELETE' | translate\"\n        icon=\"pi pi-trash\"\n        (click)=\"onDeleteRow(rowObject)\"\n        [attr.name]=\"'data-table-action-button'\"\n      ></button>\n      } @for (action of inlineActions(); track action) { @if (!action.actionVisibleField || fieldIsTruthy(rowObject,\n      action.actionVisibleField)) {\n      @if (typeof action.routerLink === 'string' && !(action.disabled || (!!action.actionEnabledField && !fieldIsTruthy(rowObject, action.actionEnabledField)))) {\n      <a\n        [id]=\"resolveFieldData(rowObject, 'id')+'-'+(action.id ? action.id.concat('ActionButton') : 'inlineActionButton')\"\n        *ocxIfPermission=\"action.permission\"\n        pButton\n        class=\"p-button-rounded p-button-text no-underline\"\n        [ngClass]=\"action.classes\"\n        [icon]=\"action.icon || ''\"\n        [routerLink]=\"action.routerLink\"\n        [title]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n        [attr.aria-label]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n        [attr.data-testid]=\"'data-table-action-button'\"\n      ></a>\n      } @else {\n      <button\n        [id]=\"resolveFieldData(rowObject, 'id')+'-'+(action.id ? action.id.concat('ActionButton') : 'inlineActionButton')\"\n        *ocxIfPermission=\"action.permission\"\n        pButton\n        class=\"p-button-rounded p-button-text\"\n        [ngClass]=\"action.classes\"\n        [icon]=\"action.icon || ''\"\n        (click)=\"onActionClick(action, rowObject)\"\n        [title]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n        [attr.aria-label]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n        [disabled]=\"\n            action.disabled ||\n            (!!action.actionEnabledField && !fieldIsTruthy(rowObject, action.actionEnabledField))\n          \"\n        [attr.name]=\"'data-table-action-button'\"\n      ></button>\n      }\n      } } @if (hasVisibleOverflowMenuItems(rowObject) | async) {\n      <p-menu #menu [model]=\"(overflowMenuItems$ | async) || []\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n      <button\n        pButton\n        class=\"p-button-rounded p-button-text\"\n        [icon]=\"'pi pi-ellipsis-v'\"\n        (click)=\"toggleOverflowMenu($event, menu, rowObject)\"\n        [attr.aria-label]=\"'OCX_DATA_TABLE.MORE_ACTIONS' | translate\"\n        [title]=\"'OCX_DATA_TABLE.MORE_ACTIONS' | translate\"\n        [name]=\"'data-table-overflow-action-button'\"\n      ></button>\n      }\n    </div>\n  </td>\n  }\n</ng-template>\n\n<ng-template #expansionColumnHeader>\n  @if (expandable() && expansionTemplate()) {\n  <th\n    pFrozenColumn\n    [frozen]=\"frozenExpandColumn()\"\n    alignFrozen=\"left\"\n    [attr.name]=\"'expansion-column-header'\"\n    style=\"width: 4rem\"\n    scope=\"col\"\n  >\n    <span class=\"sr-only\">{{ 'OCX_DATA_TABLE.EXPAND_COLLAPSE_COLUMN' | translate }}</span>\n</th>\n  }\n</ng-template>\n\n<ng-template #actionColumnHeader>\n  @if (actionColumnVisible) {\n  <th\n    pFrozenColumn\n    [frozen]=\"frozenActionColumn()\"\n    [alignFrozen]=\"actionColumnPosition()\"\n    [ngClass]=\"(frozenActionColumn() && actionColumnPosition() === 'left') ? 'border-right-1' : (frozenActionColumn() && actionColumnPosition() === 'right') ? 'border-left-1' : ''\"\n    [attr.name]=\"actionColumnPosition() === 'left' ? 'action-column-header-left' : 'action-column-header-right'\"\n    scope=\"col\"\n  >\n    {{ 'OCX_DATA_TABLE.ACTIONS_COLUMN_NAME' | translate }}\n  </th>\n  }\n</ng-template>\n\n@if (displayedPageSize(); as displayedPageSize) { @if ((columnTemplates$ | async) ?? {}; as columnTemplates) {\n@if ((columnHeaderTemplates$ | async) ?? {}; as columnHeaderTemplates) {\n<p-table\n  [value]=\"(displayedRows$ | async) ?? []\"\n  [paginator]=\"paginator()\"\n  [first]=\"page() * displayedPageSize\"\n  (onPage)=\"onPageChange($event)\"\n  [rows]=\"displayedPageSize\"\n  [showCurrentPageReport]=\"true\"\n  [currentPageReportTemplate]=\"\n      (totalRecordsOnServer() ? currentPageShowingWithTotalOnServerKey() : currentPageShowingKey())\n        | translate : params()\n    \"\n  [rowsPerPageOptions]=\"pageSizes()\"\n  [id]=\"'dataTable_' + name()\"\n  (selectionChange)=\"onSelectionChange($event)\"\n  dataKey=\"id\"\n  [rowTrackBy]=\"rowTrackByFunction\"\n  [selection]=\"selectedFilteredRows()\"\n  [scrollable]=\"true\"\n  scrollHeight=\"flex\"\n  [style]=\"tableStyle()\"\n  paginatorDropdownAppendTo=\"body\"\n  [rowSelectable]=\"rowSelectable\"\n  tableStyleClass=\"h-full\"\n  [expandedRowKeys]=\"expandedRowKeys()\"\n  (onRowExpand)=\"onRowExpand($event)\"\n  (onRowCollapse)=\"onRowCollapse($event)\"\n>\n  <ng-template #header>\n    <tr style=\"vertical-align: top\">\n      <ng-container *ngTemplateOutlet=\"expansionColumnHeader\"></ng-container>\n      @if (selectionChangedObserved) {\n      <th style=\"width: 4rem\" scope=\"col\">\n        @if (allowSelectAll()) {\n        <p-tableHeaderCheckbox\n          [ocxTooltip]=\"'OCX_DATA_TABLE.SELECT_ALL_TOOLTIP' | translate\"\n          [ariaLabel]=\"'OCX_DATA_TABLE.SELECT_ALL_ARIA_LABEL' | translate\"\n        ></p-tableHeaderCheckbox>\n        }\n        <span class=\"sr-only\">{{ 'OCX_DATA_TABLE.SELECTION_COLUMN' | translate }}</span>\n      </th>\n      } @if (actionColumnPosition() === 'left') {\n      <ng-container *ngTemplateOutlet=\"actionColumnHeader\"></ng-container>\n      } \n      @for (column of columns(); track column) { \n        @if (columnHeaderTemplates[column.id]; as columnHeaderTemplate){\n          <th scope=\"col\" [pSortableColumn]=\"column.sortable ? column.id : undefined\">\n            <ng-container\n              [ngTemplateOutlet]=\"columnHeaderTemplate\"\n              [ngTemplateOutletContext]=\"{ column: column, labelTemplate: columnHeaderLabel, sortTemplate: columnHeaderSortButton, filterTemplate: columnHeaderFilter }\"\n            ></ng-container>\n          </th>\n        } @else {\n          @if (column.sortable || column.filterable) {\n            <th scope=\"col\" [pSortableColumn]=\"column.sortable ? column.nameKey : undefined\">\n              <div\n                class=\"table-header-wrapper flex flex-column justify-content-between align-items-start\"\n                style=\"height: 100%\"\n              >\n                <span class=\"flex\" [id]=\"column.id + '-header-name'\">\n                  <ng-container [ngTemplateOutlet]=\"columnHeaderLabel\" [ngTemplateOutletContext]=\"{ column: column }\"></ng-container>\n                </span>\n                <span class=\"flex icon-button-header-wrapper\">  \n                  <ng-container [ngTemplateOutlet]=\"columnHeaderSortButton\" [ngTemplateOutletContext]=\"{ column: column }\"></ng-container>\n                  <ng-container [ngTemplateOutlet]=\"columnHeaderFilter\" [ngTemplateOutletContext]=\"{ column: column }\"></ng-container>\n                </span>\n              </div>\n            </th>\n          } @else {\n            <th scope=\"col\">\n              <ng-container [ngTemplateOutlet]=\"columnHeaderLabel\" [ngTemplateOutletContext]=\"{ column: column }\"></ng-container>\n            </th> \n          } \n        }\n    } \n    @if (actionColumnPosition() === 'right') {\n      <ng-container *ngTemplateOutlet=\"actionColumnHeader\"></ng-container>\n    }\n    </tr>\n  </ng-template>\n\n  <ng-template pTemplate=\"caption\">\n    @if (captionTemplate()) {\n    <ng-container>\n      <ng-container [ngTemplateOutlet]=\"captionTemplate()\"></ng-container>\n    </ng-container>\n    }\n  </ng-template>\n\n  <ng-template #body let-rowObject>\n    @if (columnTemplates) {\n    <tr [attr.id]=\"'ocx-expanded-row-' + rowObject.id\">\n      <ng-container *ngTemplateOutlet=\"expansionColumn; context: {localRowObject: rowObject}\"></ng-container>\n      @if (selectionChangedObserved) {\n      <td>\n        @if (isRowSelectionDisabled(rowObject) && isSelected(rowObject)) {\n        <p-checkbox\n          [value]=\"true\"\n          [binary]=\"true\"\n          [disabled]=\"true\"\n          [ariaLabel]=\"'OCX_DATA_TABLE.SELECT_ARIA_LABEL' | translate : { key: rowObject.id , rowSummary: getRowSummary(rowObject) }\"\n        ></p-checkbox>\n        } @else {\n        <p-tableCheckbox\n          [value]=\"rowObject\"\n          [disabled]=\"isRowSelectionDisabled(rowObject)\"\n          [ariaLabel]=\"'OCX_DATA_TABLE.SELECT_ARIA_LABEL' | translate : { key: rowObject.id , rowSummary: getRowSummary(rowObject) }\"\n        ></p-tableCheckbox>\n        }\n      </td>\n      } @if (actionColumnPosition() === 'left') {\n      <ng-container *ngTemplateOutlet=\"actionColumn; context: { localRowObject: rowObject }\"></ng-container>\n      } @for (column of columns(); track column) {\n      <td>\n        @defer (on viewport) { @if (columnTemplates[column.id]) {\n        <ng-container\n          [ngTemplateOutlet]=\"cell() ?? columnTemplates[column.id]\"\n          [ngTemplateOutletContext]=\"{ rowObject: rowObject, column: column }\"\n        >\n        </ng-container>\n        } } @placeholder {\n        <p-skeleton width=\"3rem\" />\n        }\n      </td>\n      } @if (actionColumnPosition() === 'right') {\n      <ng-container *ngTemplateOutlet=\"actionColumn; context: { localRowObject: rowObject }\"></ng-container>\n      }\n    </tr>\n    }\n  </ng-template>\n\n  <ng-template #expandedrow let-rowObject>\n    @if (expansionTemplate(); as expansionTemplate) {\n    <tr>\n      <td [attr.colspan]=\"getRowColspan(!!expansionTemplate)\">\n        <ng-container\n          [ngTemplateOutlet]=\"expansionTemplate.template\"\n          [ngTemplateOutletContext]=\"{\n            rowObject: rowObject\n          }\"\n        >\n        </ng-container>\n      </td>\n    </tr>\n    }\n  </ng-template>\n\n  <ng-template #emptymessage>\n    <tr>\n      <td\n        [colSpan]=\"\n            getRowColspan(!!expansionTemplate())\n          \"\n      >\n        {{ emptyResultsMessage() || ('OCX_DATA_TABLE.EMPTY_RESULT' | translate) }}\n      </td>\n    </tr>\n  </ng-template>\n</p-table>\n} } }\n\n<ng-template #expansionColumn let-rowObject=\"localRowObject\">\n  @if (expandable() && expansionTemplate()) {\n  <td pFrozenColumn [frozen]=\"frozenExpandColumn()\" alignFrozen=\"left\" [attr.name]=\"'expansion-column'\">\n    <button\n      type=\"button\"\n      pButton\n      pRipple\n      [icon]=\"isRowExpanded(rowObject) ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"\n      class=\"p-button-rounded p-button-text\"\n      (click)=\"toggleRowExpansion(rowObject)\"\n      [attr.aria-expanded]=\"isRowExpanded(rowObject)\"\n      [attr.aria-controls]=\"'ocx-expanded-row-' + rowObject.id\"\n      [attr.aria-label]=\"isRowExpanded(rowObject) ? ('OCX_DATA_TABLE.EXPANDED_ROW' | translate) : ('OCX_DATA_TABLE.COLLAPSED_ROW' | translate)\"\n      [title]=\"isRowExpanded(rowObject) ? ('OCX_DATA_TABLE.EXPANDED_ROW' | translate) : ('OCX_DATA_TABLE.COLLAPSED_ROW' | translate)\"\n    ></button>\n  </td>\n  }\n</ng-template>\n\n<ng-template pTemplate=\"defaultStringCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container> {{ resolveFieldData(rowObject, column.id) }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultNumberCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container> {{ resolveFieldData(rowObject, column.id) | number }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultDateCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container>\n    {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n  </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }} </ng-container>\n</ng-template>\n\n<ng-template #columnHeaderLabel let-column=\"column\">{{ column.nameKey | translate }}</ng-template>\n\n<ng-template #columnHeaderSortButton let-column=\"column\">\n  @if (column.sortable) {\n    <button\n      class=\"pi sortButton pl-0\"\n      [class.pi-sort-alt]=\"(column?.id === sortColumn() && sortDirection() === 'NONE') || column?.id !== sortColumn()\"\n      [class.pi-sort-amount-up]=\"column?.id === sortColumn() && sortDirection() === 'ASCENDING'\"\n      [class.pi-sort-amount-down]=\"column?.id === sortColumn() && sortDirection() === 'DESCENDING'\"\n      (click)=\"onSortColumnClick(column.id)\"\n      [ocxTooltip]=\"sortIconTitle(column.id) | translate\"\n      tooltipPosition=\"bottom\"\n      [attr.aria-label]=\"\n            'OCX_DATA_TABLE.TOGGLE_BUTTON.ARIA_LABEL'\n              | translate : {\n                  column: (column.nameKey | translate),\n                  direction: (sortDirectionToTitle(columnNextSortDirection(column.id)) | translate)\n                }\n          \"\n    ></button>\n  } \n</ng-template>\n\n<ng-template #columnHeaderFilter let-column=\"column\">\n  @if (currentEqualFilterOptions$ | async; as equalFilterOptions) { \n    @if (columnFilterTemplates$ | async; as columnFilterTemplates) { \n      @if (column.filterable && (!column.filterType || column.filterType === FilterType.EQUALS)) {\n        <p-multiselect\n          class=\"filterMultiSelect\"\n          [options]=\"equalFilterOptions.column?.id === column.id ? equalFilterOptions.options : []\"\n          [ngModel]=\"currentEqualSelectedFilters() || []\"\n          [showToggleAll]=\"true\"\n          [emptyFilterMessage]=\"'OCX_DATA_TABLE.EMPTY_FILTER_MESSAGE' | translate\"\n          [displaySelectedLabel]=\"false\"\n          [resetFilterOnHide]=\"true\"\n          (onChange)=\"onMultiselectFilterChange(column, $event)\"\n          placeholder=\" \"\n          appendTo=\"body\"\n          filterBy=\"toFilterBy\"\n          (onFocus)=\"onFilterChosen(column)\"\n          [title]=\"'OCX_DATA_TABLE.FILTER_TITLE' | translate\"\n          [ariaLabel]=\"'OCX_DATA_TABLE.COLUMN_FILTER_ARIA_LABEL' | translate\"\n          [filterPlaceHolder]=\"'OCX_DATA_TABLE.COLUMN_FILTER_PLACEHOLDER' | translate\"\n          [ariaFilterLabel]=\"\n                    'OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate : { column: column.nameKey | translate }\n                  \"\n        >\n          <ng-template #selecteditems let-value>\n            <div\n              class=\"pi\"\n              [class.pi-filter]=\"!filterAmounts()[column.id]\"\n              [class.pi-filter-fill]=\"filterAmounts()[column.id] > 0\"\n            ></div>\n          </ng-template>\n          <ng-template #item let-value>\n            @if (columnFilterTemplates[column.id]; as template) {\n            <ng-container\n              [ngTemplateOutlet]=\"template\"\n              [ngTemplateOutletContext]=\"{\n                        rowObject: getRowObjectFromMultiselectItem(value, column),\n                        column: column\n                      }\"\n            >\n            </ng-container>\n            }\n          </ng-template>\n        </p-multiselect>\n      } \n    } \n  } \n  @if (column.filterable && column.filterType === FilterType.IS_NOT_EMPTY) {\n    <p-multiselect\n      class=\"filterMultiSelect\"\n      [options]=\"[\n            { key: 'OCX_DATA_TABLE.FILTER_YES', value: true },\n            { key: 'OCX_DATA_TABLE.FILTER_NO', value: false }\n          ]\"\n      [ngModel]=\"currentTruthySelectedFilters() || []\"\n      [showToggleAll]=\"true\"\n      [emptyFilterMessage]=\"'OCX_DATA_TABLE.EMPTY_FILTER_MESSAGE' | translate\"\n      [displaySelectedLabel]=\"false\"\n      [resetFilterOnHide]=\"true\"\n      (onChange)=\"onMultiselectFilterChange(column, $event)\"\n      placeholder=\" \"\n      appendTo=\"body\"\n      (onFocus)=\"onFilterChosen(column)\"\n      [title]=\"'OCX_DATA_TABLE.FILTER_TITLE' | translate\"\n      [ariaLabel]=\"'OCX_DATA_TABLE.COLUMN_FILTER_ARIA_LABEL' | translate\"\n      [ariaFilterLabel]=\"\n            'OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate : { column: column.nameKey | translate }\n          \"\n    >\n      <ng-template #selecteditems let-value>\n        <div\n          class=\"pi\"\n          [class.pi-filter]=\"!filterAmounts()[column.id]\"\n          [class.pi-filter-fill]=\"filterAmounts()[column.id] > 0\"\n        ></div>\n      </ng-template>\n      <ng-template #item let-value> {{ value.key | translate }} </ng-template>\n    </p-multiselect>\n  }\n</ng-template>","import { Timestamp } from 'rxjs'\n\nexport function orderValuesByTimestamp(valuesWithTimestamp: Timestamp<any>[]) {\n  return valuesWithTimestamp.sort((a, b) => b.timestamp - a.timestamp).map((obj) => obj.value)\n}\n\nfunction mergeValues(values: any[]) {\n  return values.reduce((acc, curr) => {\n    return { ...acc, ...curr }\n  })\n}\n\nexport function orderAndMergeValuesByTimestamp(valuesWithTimestamp: Timestamp<any>[]) {\n  const sortedValues = valuesWithTimestamp.sort((a, b) => a.timestamp - b.timestamp).map((obj) => obj.value)\n  return mergeValues(sortedValues)\n}\n","import {\n  Component,\n  Injector,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef,\n  computed,\n  contentChild,\n  contentChildren,\n  effect,\n  inject,\n  input,\n  model,\n  output,\n  signal,\n  viewChild,\n} from '@angular/core'\nimport { PrimeTemplate } from 'primeng/api'\nimport { Observable, ReplaySubject, combineLatest, map, startWith, timestamp } from 'rxjs'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter } from '../../model/filter.model'\nimport { orderAndMergeValuesByTimestamp } from '../../utils/rxjs-utils'\nimport {\n  DataListGridComponent,\n  DataListGridComponentState,\n  ListGridData,\n} from '../data-list-grid/data-list-grid.component'\nimport { DataTableComponent, DataTableComponentState, Row, Sort } from '../data-table/data-table.component'\nimport { observableOutput } from '../../utils/observable-output.utils'\n\nexport type RowListGridData = ListGridData & Row\n\nexport type DataViewComponentState = DataListGridComponentState & DataTableComponentState\n\n@Component({\n  standalone: false,\n  selector: 'ocx-data-view',\n  templateUrl: './data-view.component.html',\n  styleUrls: ['./data-view.component.css'],\n  providers: [{ provide: 'DataViewComponent', useExisting: DataViewComponent }],\n})\nexport class DataViewComponent implements OnInit {\n  private readonly injector = inject(Injector)\n\n  dataListGridComponent = viewChild(DataListGridComponent)\n\n  dataTableComponent = viewChild(DataTableComponent)\n\n  dataTableComponentState$ = new ReplaySubject<DataTableComponentState>(1)\n  dataListGridComponentState$ = new ReplaySubject<DataListGridComponentState>(1)\n\n  deletePermission = input<string | string[]>()\n  editPermission = input<string | string[]>()\n  viewPermission = input<string | string[]>()\n  deleteActionVisibleField = input<string | undefined>()\n  deleteActionEnabledField = input<string | undefined>()\n  viewActionVisibleField = input<string | undefined>()\n  viewActionEnabledField = input<string | undefined>()\n  editActionVisibleField = input<string | undefined>()\n  editActionEnabledField = input<string | undefined>()\n  tableSelectionEnabledField = input<string | undefined>()\n  tableAllowSelectAll = input<boolean>(true)\n  data = input<RowListGridData[]>([])\n  name = input<string>('')\n  titleLineId = input<string | undefined>()\n  subtitleLineIds = input<string[]>()\n  layout = input<any>()\n  columns = input<DataTableColumn[]>([])\n  emptyResultsMessage = input<string | undefined>()\n  clientSideSorting = input<boolean>(true)\n  clientSideFiltering = input<boolean>(true)\n  fallbackImage = input<string>()\n  filters = model<Filter[]>([])\n  sortField = model<any>()\n  sortDirection = model<DataSortDirection>(DataSortDirection.NONE)\n  listGridPaginator = model<boolean>(true)\n  tablePaginator = model<boolean>(true)\n  @Input()\n  get paginator(): boolean {\n    return this.listGridPaginator() && this.tablePaginator()\n  }\n  set paginator(value: boolean) {\n    this.listGridPaginator.set(value)\n    this.tablePaginator.set(value)\n  }\n  page = model<number>(0)\n  totalRecordsOnServer = input<number | undefined>()\n  currentPageShowingKey = input<string>('OCX_DATA_TABLE.SHOWING')\n  currentPageShowingWithTotalOnServerKey = input<string>('OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER')\n  selectedRows = input<Row[]>([])\n  frozenActionColumn = input<boolean>(false)\n  actionColumnPosition = input<'left' | 'right'>('right')\n  expandable = input<boolean>(false)\n  frozenExpandColumn = input<boolean>(false)\n  expandedRows = model<Row[] | string[] | number[]>([])\n\n  sortStates = input<DataSortDirection[]>([])\n  pageSizes = input<number[]>([10, 25, 50])\n  pageSize = model<number | undefined>()\n\n  stringTableCellTemplate = input<TemplateRef<any> | undefined>()\n  stringTableCellChildTemplate = contentChild<TemplateRef<any>>('stringTableCellTemplate')\n  get stringTableCell(): TemplateRef<any> | undefined {\n    return this.stringTableCellTemplate() || this.stringTableCellChildTemplate()\n  }\n\n  numberTableCellTemplate = input<TemplateRef<any> | undefined>()\n  numberTableCellChildTemplate = contentChild<TemplateRef<any>>('numberTableCellTemplate')\n  get numberTableCell(): TemplateRef<any> | undefined {\n    return this.numberTableCellTemplate() || this.numberTableCellChildTemplate()\n  }\n\n  dateTableCellTemplate = input<TemplateRef<any> | undefined>()\n  dateTableCellChildTemplate = contentChild<TemplateRef<any>>('dateTableCellTemplate')\n  get dateTableCell(): TemplateRef<any> | undefined {\n    return this.dateTableCellTemplate() || this.dateTableCellChildTemplate()\n  }\n\n  tableCellTemplate = input<TemplateRef<any> | undefined>()\n  tableCellChildTemplate = contentChild<TemplateRef<any>>('tableCellTemplate')\n  get tableCell(): TemplateRef<any> | undefined {\n    return this.tableCellTemplate() || this.tableCellChildTemplate()\n  }\n\n  translationKeyTableCellTemplate = input<TemplateRef<any> | undefined>()\n  translationKeyTableCellChildTemplate = contentChild<TemplateRef<any>>('translationKeyTableCellTemplate')\n  get translationKeyTableCell(): TemplateRef<any> | undefined {\n    return this.translationKeyTableCellTemplate() || this.translationKeyTableCellChildTemplate()\n  }\n\n  gridItemSubtitleLinesTemplate = input<TemplateRef<any> | undefined>()\n  gridItemSubtitleLinesChildTemplate = contentChild<TemplateRef<any>>('gridItemSubtitleLinesTemplate')\n  get gridItemSubtitleLines(): TemplateRef<any> | undefined {\n    return this.gridItemSubtitleLinesTemplate() || this.gridItemSubtitleLinesChildTemplate()\n  }\n\n  listItemSubtitleLinesTemplate = input<TemplateRef<any> | undefined>()\n  listItemSubtitleLinesChildTemplate = contentChild<TemplateRef<any>>('listItemSubtitleLinesTemplate')\n  get listItemSubtitleLines(): TemplateRef<any> | undefined {\n    return this.listItemSubtitleLinesTemplate() || this.listItemSubtitleLinesChildTemplate()\n  }\n  gridItemTemplate = input<TemplateRef<any> | undefined>()\n  gridItemChildTemplate = contentChild<TemplateRef<any>>('gridItemTemplate')\n  get gridItem(): TemplateRef<any> | undefined {\n    return this.gridItemTemplate() || this.gridItemChildTemplate()\n  }\n\n  listItemTemplate = input<TemplateRef<any> | undefined>()\n  listItemChildTemplate = contentChild<TemplateRef<any>>('listItemTemplate')\n  get listItem(): TemplateRef<any> | undefined {\n    return this.listItemTemplate() || this.listItemChildTemplate()\n  }\n\n  relativeDateTableCellTemplate = input<TemplateRef<any> | undefined>()\n  relativeDateTableCellChildTemplate = contentChild<TemplateRef<any>>('relativeDateTableCellTemplate')\n  get relativeDateTableCell(): TemplateRef<any> | undefined {\n    return this.relativeDateTableCellTemplate() || this.relativeDateTableCellChildTemplate()\n  }\n\n  listValueTemplate = input<TemplateRef<any> | undefined>()\n  listValueChildTemplate = contentChild<TemplateRef<any>>('listValueTemplate')\n  get listValue(): TemplateRef<any> | undefined {\n    return this.listValueTemplate() || this.listValueChildTemplate()\n  }\n  translationKeyListValueTemplate = input<TemplateRef<any> | undefined>()\n  translationKeyListValueChildTemplate = contentChild<TemplateRef<any>>('translationKeyListValueTemplate')\n  get translationKeyListValue(): TemplateRef<any> | undefined {\n    return this.translationKeyListValueTemplate() || this.translationKeyListValueChildTemplate()\n  }\n  numberListValueTemplate = input<TemplateRef<any> | undefined>()\n  numberListValueChildTemplate = contentChild<TemplateRef<any>>('numberListValueTemplate')\n  get numberListValue(): TemplateRef<any> | undefined {\n    return this.numberListValueTemplate() || this.numberListValueChildTemplate()\n  }\n  relativeDateListValueTemplate = input<TemplateRef<any> | undefined>()\n  relativeDateListValueChildTemplate = contentChild<TemplateRef<any>>('relativeDateListValueTemplate')\n  get relativeDateListValue(): TemplateRef<any> | undefined {\n    return this.relativeDateListValueTemplate() || this.relativeDateListValueChildTemplate()\n  }\n  stringListValueTemplate = input<TemplateRef<any> | undefined>()\n  stringListValueChildTemplate = contentChild<TemplateRef<any>>('stringListValueTemplate')\n  get stringListValue(): TemplateRef<any> | undefined {\n    return this.stringListValueTemplate() || this.stringListValueChildTemplate()\n  }\n  dateListValueTemplate = input<TemplateRef<any> | undefined>()\n  dateListValueChildTemplate = contentChild<TemplateRef<any>>('dateListValueTemplate')\n  get dateListValue(): TemplateRef<any> | undefined {\n    return this.dateListValueTemplate() || this.dateListValueChildTemplate()\n  }\n  tableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n  tableFilterCellChildTemplate = contentChild<TemplateRef<any>>('tableFilterCellTemplate')\n  get tableFilterCell(): TemplateRef<any> | undefined {\n    return this.tableFilterCellTemplate() || this.tableFilterCellChildTemplate()\n  }\n  dateTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n  dateTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('dateTableFilterCellTemplate')\n  get dateTableFilterCell(): TemplateRef<any> | undefined {\n    return this.dateTableFilterCellTemplate() || this.dateTableFilterCellChildTemplate()\n  }\n  relativeDateTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n  relativeDateTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('relativeDateTableFilterCellTemplate')\n  get relativeDateTableFilterCell(): TemplateRef<any> | undefined {\n    return this.relativeDateTableFilterCellTemplate() || this.relativeDateTableFilterCellChildTemplate()\n  }\n  translationKeyTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n  translationKeyTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('translationKeyTableFilterCellTemplate')\n  get translationKeyTableFilterCell(): TemplateRef<any> | undefined {\n    return this.translationKeyTableFilterCellTemplate() || this.translationKeyTableFilterCellChildTemplate()\n  }\n  stringTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n  stringTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('stringTableFilterCellTemplate')\n  get stringTableFilterCell(): TemplateRef<any> | undefined {\n    return this.stringTableFilterCellTemplate() || this.stringTableFilterCellChildTemplate()\n  }\n  numberTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n  numberTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('numberTableFilterCellTemplate')\n  get numberTableFilterCell(): TemplateRef<any> | undefined {\n    return this.numberTableFilterCellTemplate() || this.numberTableFilterCellChildTemplate()\n  }\n  columnHeaderTemplate = input<TemplateRef<any> | undefined>()\n  columnHeaderChildTemplate = contentChild<TemplateRef<any>>('columnHeaderTemplate')\n  get columnHeader(): TemplateRef<any> | undefined {\n    return this.columnHeaderTemplate() || this.columnHeaderChildTemplate()\n  }\n\n\n  additionalActions = input<DataAction[]>([])\n\n  filtered = output<Filter[]>()\n  sorted = output<Sort>()\n  @Output() deleteItem = observableOutput<RowListGridData>()\n  @Output() viewItem = observableOutput<RowListGridData>()\n  @Output() editItem = observableOutput<RowListGridData>()\n  @Output() selectionChanged = observableOutput<Row[]>()\n  pageChanged = output<number>()\n  pageSizeChanged = output<number>()\n  componentStateChanged = output<DataViewComponentState>()\n  @Output() rowExpanded = observableOutput<Row>()\n  @Output() rowCollapsed = observableOutput<Row>()\n\n  firstColumnId = signal<string | undefined>(undefined)\n\n  parentTemplates = input<readonly PrimeTemplate[] | null | undefined>()\n\n  templates = contentChildren(PrimeTemplate)\n\n  templatesForChildren = computed(() => {\n    const t = this.templates()\n    const pt = this.parentTemplates()\n\n    return [...t, ...(pt ?? [])]\n  })\n\n  get viewItemObserved(): boolean {\n    return this.injector.get('InteractiveDataViewComponent', null)?.viewItem.observed() || this.viewItem.observed()\n  }\n  get editItemObserved(): boolean {\n    return this.injector.get('InteractiveDataViewComponent', null)?.editItem.observed() || this.editItem.observed()\n  }\n  get deleteItemObserved(): boolean {\n    return this.injector.get('InteractiveDataViewComponent', null)?.deleteItem.observed() || this.deleteItem.observed()\n  }\n  get selectionChangedObserved(): boolean {\n    return (\n      this.injector.get('InteractiveDataViewComponent', null)?.selectionChanged.observed() ||\n      this.selectionChanged.observed()\n    )\n  }\n\n  constructor() {\n    effect(() => {\n      this.registerEventListenerForListGrid()\n    })\n\n    effect(() => {\n      this.registerEventListenerForDataTable()\n    })\n\n    effect(() => {\n      const filters = this.filters()\n      if (filters) {\n        this.filtered.emit(filters)\n      }\n    })\n\n    effect(() => {\n      const sortField = this.sortField()\n      const sortDirection = this.sortDirection()\n      if (sortField && sortDirection) {\n        this.sorted.emit({ sortColumn: sortField, sortDirection: sortDirection })\n      }\n    })\n\n    effect(() => {\n      const page = this.page()\n      if (page !== undefined) {\n        this.pageChanged.emit(page)\n      }\n    })\n\n    effect(() => {\n      const pageSize = this.pageSize()\n      if (pageSize !== undefined) {\n        this.pageSizeChanged.emit(pageSize)\n      }\n    })\n  }\n\n  ngOnInit(): void {\n    const columns = this.columns()\n    if (columns && columns.length > 0) {\n      this.firstColumnId.set(columns[0]?.id)\n    }\n\n    let dataTableComponentState$: Observable<DataTableComponentState | Record<string, never>> =\n      this.dataTableComponentState$\n    let dataListGridComponentState$: Observable<DataListGridComponentState | Record<string, never>> =\n      this.dataListGridComponentState$\n    if (this.layout() === 'table') {\n      dataListGridComponentState$ = dataListGridComponentState$.pipe(startWith({}))\n    } else {\n      dataTableComponentState$ = dataTableComponentState$.pipe(startWith({}))\n    }\n\n    combineLatest([dataTableComponentState$.pipe(timestamp()), dataListGridComponentState$.pipe(timestamp())])\n      .pipe(\n        map((componentStates) => {\n          return orderAndMergeValuesByTimestamp(componentStates)\n        })\n      )\n      .subscribe((val) => {\n        this.componentStateChanged.emit(val)\n      })\n  }\n\n  registerEventListenerForListGrid() {\n    if (this.layout() !== 'table') {\n      if (this.deleteItem.observed()) {\n        if (!this.dataListGridComponent()?.deleteItem.observed()) {\n          this.dataListGridComponent()?.deleteItem.subscribe((event) => {\n            this.deletingElement(event)\n          })\n        }\n      }\n      if (this.viewItem.observed()) {\n        if (!this.dataListGridComponent()?.viewItem.observed()) {\n          this.dataListGridComponent()?.viewItem.subscribe((event) => {\n            this.viewingElement(event)\n          })\n        }\n      }\n      if (this.editItem.observed()) {\n        if (!this.dataListGridComponent()?.editItem.observed()) {\n          this.dataListGridComponent()?.editItem.subscribe((event) => {\n            this.editingElement(event)\n          })\n        }\n      }\n    }\n  }\n\n  registerEventListenerForDataTable() {\n    if (this.layout() === 'table') {\n      if (this.deleteItem.observed()) {\n        if (!this.dataTableComponent()?.deleteTableRow.observed()) {\n          this.dataTableComponent()?.deleteTableRow.subscribe((event) => {\n            this.deletingElement(event)\n          })\n        }\n      }\n      if (this.viewItem.observed()) {\n        if (!this.dataTableComponent()?.viewTableRow.observed()) {\n          this.dataTableComponent()?.viewTableRow.subscribe((event) => {\n            this.viewingElement(event)\n          })\n        }\n      }\n      if (this.editItem.observed()) {\n        if (!this.dataTableComponent()?.editTableRow.observed()) {\n          this.dataTableComponent()?.editTableRow.subscribe((event) => {\n            this.editingElement(event)\n          })\n        }\n      }\n      if (this.selectionChangedObserved) {\n        if (!this.dataTableComponent()?.selectionChanged.observed()) {\n          this.dataTableComponent()?.selectionChanged.subscribe((event) => {\n            this.onRowSelectionChange(event)\n          })\n        }\n      }\n    }\n  }\n\n  filtering(event: any) {\n    this.filters.set(event)\n  }\n\n  sorting(event: any) {\n    this.sortDirection.set(event.sortDirection)\n    this.sortField.set(event.sortColumn)\n  }\n\n  deletingElement(event: any) {\n    if (this.deleteItemObserved) {\n      this.deleteItem.emit(event)\n    }\n  }\n\n  viewingElement(event: any) {\n    if (this.viewItemObserved) {\n      this.viewItem.emit(event)\n    }\n  }\n  editingElement(event: any) {\n    if (this.editItemObserved) {\n      this.editItem.emit(event)\n    }\n  }\n\n  onRowSelectionChange(event: Row[]) {\n    if (this.selectionChangedObserved) {\n      this.selectionChanged.emit(event)\n    }\n  }\n\n  onPageChange(event: number) {\n    this.page.set(event)\n  }\n\n  onPageSizeChange(event: number) {\n    this.pageSize.set(event)\n  }\n}\n\n\n","@if (layout() !== 'table') {\n<div>\n  <ocx-data-list-grid\n    #ocxdatalistgrid\n    [name]=\"name()\"\n    [data]=\"data()\"\n    [columns]=\"columns()\"\n    [filters]=\"filters()\"\n    [sortDirection]=\"sortDirection()\"\n    [sortField]=\"sortField()\"\n    [sortStates]=\"sortStates()\"\n    [clientSideFiltering]=\"clientSideFiltering()\"\n    [clientSideSorting]=\"clientSideSorting()\"\n    [titleLineId]=\"titleLineId()\"\n    [subtitleLineIds]=\"subtitleLineIds()\"\n    [clientSideSorting]=\"true\"\n    [pageSizes]=\"pageSizes()\"\n    [pageSize]=\"pageSize()\"\n    [paginator]=\"listGridPaginator()\"\n    [page]=\"page()\"\n    (pageChanged)=\"onPageChange($event)\"\n    (pageSizeChanged)=\"onPageSizeChange($event)\"\n    (componentStateChanged)=\"dataListGridComponentState$.next($event)\"\n    [emptyResultsMessage]=\"emptyResultsMessage()\"\n    [layout]=\"layout()\"\n    [deletePermission]=\"deletePermission()\"\n    [editPermission]=\"editPermission()\"\n    [viewPermission]=\"viewPermission()\"\n    [deleteActionEnabledField]=\"deleteActionEnabledField()\"\n    [deleteActionVisibleField]=\"deleteActionVisibleField()\"\n    [editActionEnabledField]=\"editActionEnabledField()\"\n    [editActionVisibleField]=\"editActionVisibleField()\"\n    [viewActionEnabledField]=\"viewActionEnabledField()\"\n    [viewActionVisibleField]=\"viewActionVisibleField()\"\n    [additionalActions]=\"additionalActions()\"\n    [gridItemSubtitleLinesTemplate]=\"gridItemSubtitleLines\"\n    [listItemSubtitleLinesTemplate]=\"listItemSubtitleLines\"\n    [listItemTemplate]=\"listItem\"\n    [gridItemTemplate]=\"gridItem\"\n    [listValueTemplate]=\"listValue\"\n    [translationKeyListValueTemplate]=\"translationKeyListValue\"\n    [numberListValueTemplate]=\"numberListValue\"\n    [relativeDateListValueTemplate]=\"relativeDateListValue\"\n    [stringListValueTemplate]=\"stringListValue\"\n    [dateListValueTemplate]=\"dateListValue\"\n    [totalRecordsOnServer]=\"totalRecordsOnServer()\"\n    [parentTemplates]=\"templatesForChildren()\"\n  >\n  </ocx-data-list-grid>\n  <ng-template #listItemSubtitleLinesTemplate let-item>\n    @if (listItemSubtitleLines) {\n    <ng-container [ngTemplateOutlet]=\"listItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #gridItemSubtitleLinesTemplate let-item>\n    @if (gridItemSubtitleLines) {\n    <ng-container [ngTemplateOutlet]=\"gridItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #gridItemTemplate let-item>\n    @if (gridItem) {\n    <ng-container [ngTemplateOutlet]=\"gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n    }</ng-template\n  >\n  <ng-template #listItemTemplate let-item>\n    @if (listItem) {\n    <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n    }</ng-template\n  >\n  <ng-template #listValueTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (listValue) {\n    <ng-container [ngTemplateOutlet]=\"listValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #translationKeyListValueTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (translationKeyListValue) {\n    <ng-container\n      [ngTemplateOutlet]=\"translationKeyListValue\"\n      [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n    >\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #numberListValueTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (numberListValue) {\n    <ng-container\n      [ngTemplateOutlet]=\"numberListValue\"\n      [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n    >\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #relativeDateListValueTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (relativeDateListValue) {\n    <ng-container\n      [ngTemplateOutlet]=\"relativeDateListValue\"\n      [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n    >\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #stringListValueTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (stringListValue) {\n    <ng-container\n      [ngTemplateOutlet]=\"stringListValue\"\n      [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n    >\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #dateListValueTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (dateListValue) {\n    <ng-container [ngTemplateOutlet]=\"dateListValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n    </ng-container>\n    }</ng-template\n  >\n</div>\n} @if (layout() === 'table') {\n<div>\n  <ocx-data-table\n    #ocxdatatable\n    [rows]=\"data()\"\n    [columns]=\"columns()\"\n    [filters]=\"filters()\"\n    [sortDirection]=\"sortDirection()\"\n    [sortColumn]=\"sortField()\"\n    [sortStates]=\"sortStates()\"\n    [clientSideFiltering]=\"clientSideFiltering()\"\n    [clientSideSorting]=\"clientSideSorting()\"\n    [pageSizes]=\"pageSizes()\"\n    [pageSize]=\"pageSize()\"\n    [paginator]=\"tablePaginator()\"\n    [page]=\"page()\"\n    (pageChanged)=\"onPageChange($event)\"\n    (pageSizeChanged)=\"onPageSizeChange($event)\"\n    (componentStateChanged)=\"dataTableComponentState$.next($event)\"\n    [selectedRows]=\"selectedRows()\"\n    [frozenActionColumn]=\"frozenActionColumn()\"\n    [actionColumnPosition]=\"actionColumnPosition()\"\n    [emptyResultsMessage]=\"emptyResultsMessage()\"\n    [name]=\"name()\"\n    [deletePermission]=\"deletePermission()\"\n    [editPermission]=\"editPermission()\"\n    [viewPermission]=\"viewPermission()\"\n    [deleteActionEnabledField]=\"deleteActionEnabledField()\"\n    [deleteActionVisibleField]=\"deleteActionVisibleField()\"\n    [editActionEnabledField]=\"editActionEnabledField()\"\n    [editActionVisibleField]=\"editActionVisibleField()\"\n    [viewActionEnabledField]=\"viewActionEnabledField()\"\n    [viewActionVisibleField]=\"viewActionVisibleField()\"\n    [additionalActions]=\"additionalActions()\"\n    [stringCellTemplate]=\"stringTableCell\"\n    [numberCellTemplate]=\"numberTableCell\"\n    [dateCellTemplate]=\"dateTableCell\"\n    [relativeDateCellTemplate]=\"relativeDateTableCell\"\n    [cellTemplate]=\"tableCell\"\n    [translationKeyCellTemplate]=\"translationKeyTableCell\"\n    [filterCellTemplate]=\"tableFilterCell\"\n    [dateFilterCellTemplate]=\"dateTableFilterCell\"\n    [numberFilterCellTemplate]=\"numberTableFilterCell\"\n    [stringFilterCellTemplate]=\"stringTableFilterCell\"\n    [relativeDateFilterCellTemplate]=\"relativeDateTableFilterCell\"\n    [translationKeyFilterCellTemplate]=\"translationKeyTableFilterCell\"\n    [columnHeaderTemplate]=\"columnHeader\"\n    (sorted)=\"sorting($event)\"\n    (filtered)=\"filtering($event)\"\n    [totalRecordsOnServer]=\"totalRecordsOnServer()\"\n    [currentPageShowingKey]=\"currentPageShowingKey()\"\n    [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey()\"\n    [parentTemplates]=\"templatesForChildren()\"\n    [allowSelectAll]=\"tableAllowSelectAll()\"\n    [selectionEnabledField]=\"tableSelectionEnabledField()\"\n    [expandable]=\"expandable()\"\n    [frozenExpandColumn]=\"frozenExpandColumn()\"\n    [(expandedRows)]=\"expandedRows\"\n    (rowExpanded)=\"rowExpanded.emit($event)\"\n    (rowCollapsed)=\"rowCollapsed.emit($event)\"\n  >\n  </ocx-data-table>\n  <ng-template #stringCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (stringTableCell) {\n    <ng-container\n      [ngTemplateOutlet]=\"stringTableCell\"\n      [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n    >\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #numberCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (numberTableCell) {\n    <ng-container\n      [ngTemplateOutlet]=\"numberTableCell\"\n      [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n    >\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #dateCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (dateTableCell) {\n    <ng-container [ngTemplateOutlet]=\"dateTableCell\" [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\">\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #relativeDateCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (relativeDateTableCell) {\n    <ng-container\n      [ngTemplateOutlet]=\"relativeDateTableCell\"\n      [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n    >\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #cellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (tableCell) {\n    <ng-container [ngTemplateOutlet]=\"tableCell\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #translationKeyCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (translationKeyTableCell) {\n    <ng-container\n      [ngTemplateOutlet]=\"translationKeyTableCell\"\n      [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n    >\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #stringFilterCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (stringTableFilterCell) {\n    <ng-container\n      [ngTemplateOutlet]=\"stringTableFilterCell\"\n      [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n    >\n    </ng-container>\n    }</ng-template\n  >\n  <ng-template #filterCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (tableFilterCell) {\n    <ng-container [ngTemplateOutlet]=\"tableFilterCell\" [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\">\n    </ng-container>\n    }\n  </ng-template>\n  <ng-template #dateFilterCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (dateTableFilterCell) {\n    <ng-container\n      [ngTemplateOutlet]=\"dateTableFilterCell\"\n      [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n    >\n    </ng-container>\n    }\n  </ng-template>\n  <ng-template #numberFilterCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (numberTableFilterCell) {\n    <ng-container\n      [ngTemplateOutlet]=\"numberTableFilterCell\"\n      [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n    >\n    </ng-container>\n    }\n  </ng-template>\n  <ng-template #relativeDateFilterCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (relativeDateTableFilterCell) {\n    <ng-container\n      [ngTemplateOutlet]=\"relativeDateTableFilterCell\"\n      [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n    >\n    </ng-container>\n    }\n  </ng-template>\n  <ng-template #translationKeyFilterCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n    @if (translationKeyTableFilterCell) {\n    <ng-container\n      [ngTemplateOutlet]=\"translationKeyTableFilterCell\"\n      [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n    >\n    </ng-container>\n    }\n  </ng-template>\n  <ng-template #columnHeaderTemplate let-column=\"column\" let-labelTemplate=\"labelTemplate\" let-sortTemplate=\"sortTemplate\" let-filterTemplate=\"filterTemplate\">\n    @if (columnHeader) {\n    <ng-container\n      [ngTemplateOutlet]=\"columnHeader\"\n      [ngTemplateOutletContext]=\"{ column: column, labelTemplate: labelTemplate, sortTemplate: sortTemplate, filterTemplate: filterTemplate }\"\n    >\n    </ng-container>\n    }\n  </ng-template>\n</div>\n}\n","export class ColorUtils {\n  public static calculatePoint(\n    i: number,\n    intervalSize: number,\n    colorRangeInfo: { colorStart: any; colorEnd: any; useEndAsStart: any }\n  ): any {\n    const { colorStart, colorEnd, useEndAsStart } = colorRangeInfo\n    return useEndAsStart ? colorEnd - i * intervalSize : colorStart + i * intervalSize\n  }\n\n  public static interpolateColors(\n    dataLength: number,\n    colorScale: (arg0: any) => any,\n    colorRangeInfo: { colorStart: any; colorEnd: any; useEndAsStart: any }\n  ): any {\n    const { colorStart, colorEnd } = colorRangeInfo\n    const colorRange = colorEnd - colorStart\n    const intervalSize = colorRange / dataLength\n    let i, colorPoint\n    const colorArray = []\n\n    for (i = 0; i < dataLength; i++) {\n      colorPoint = this.calculatePoint(i, intervalSize, colorRangeInfo)\n      colorArray.push(colorScale(colorPoint))\n    }\n\n    return colorArray\n  }\n}\n","import { Component, computed, effect, input, model, output, signal } from '@angular/core'\nimport { ChartData, ChartOptions } from 'chart.js'\nimport * as d3 from 'd3-scale-chromatic'\nimport { PrimeIcons } from 'primeng/api'\nimport { DiagramData } from '../../model/diagram-data'\nimport { DiagramType } from '../../model/diagram-type'\nimport { ColorUtils } from '../../utils/colorutils'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\n\nexport interface DiagramLayouts {\n  id: string\n  icon: PrimeIcon\n  layout: DiagramType\n  tooltip?: string\n  tooltipKey: string\n  label?: string\n  labelKey: string\n}\n\nexport interface DiagramComponentState {\n  activeDiagramType?: DiagramType\n}\n\nexport type ChartType = 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar'\n\nconst allDiagramTypes: DiagramLayouts[] = [\n  {\n    id: 'diagram-pie',\n    icon: PrimeIcons.CHART_PIE,\n    layout: DiagramType.PIE,\n    tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.PIE',\n    labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.PIE',\n  },\n  {\n    id: 'diagram-horizontal-bar',\n    icon: PrimeIcons.BARS,\n    layout: DiagramType.HORIZONTAL_BAR,\n    tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.HORIZONTAL_BAR',\n    labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.HORIZONTAL_BAR',\n  },\n  {\n    id: 'diagram-vertical-bar',\n    icon: PrimeIcons.CHART_BAR,\n    layout: DiagramType.VERTICAL_BAR,\n    tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.VERTICAL_BAR',\n    labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.VERTICAL_BAR',\n  },\n]\n\n@Component({\n  standalone: false,\n  selector: 'ocx-diagram',\n  templateUrl: './diagram.component.html',\n  styleUrls: ['./diagram.component.scss'],\n})\nexport class DiagramComponent {\n  data = input<DiagramData[] | undefined>(undefined)\n  sumKey = input<string>('OCX_DIAGRAM.SUM')\n  fullHeight = input<boolean>(false)\n  chartTitleKey = input<string>('')\n  chartDescriptionKey = input<string>('')\n  /**\n   * This property determines if diagram should generate the colors for the data that does not have any set.\n   *\n   * Setting this property to false will result in using the provided colors only if every data item has one. In the scenario where at least one item does not have a color set, diagram will generate all colors.\n   */\n  fillMissingColors = input<boolean>(true)\n\n  diagramType = model<DiagramType>(DiagramType.PIE)\n\n  supportedDiagramTypes = input<DiagramType[]>([])\n\n  selectedDiagramType = computed(() => allDiagramTypes.find((v) => v.layout === this.diagramType()))\n  chartType = computed(() => this.diagramTypeToChartType(this.diagramType()))\n  dataSelected = output<any>()\n  diagramTypeChanged = output<DiagramType>()\n  componentStateChanged = output<DiagramComponentState>()\n  chartOptions = signal<ChartOptions>({})\n  chartData = signal<ChartData | undefined>(undefined)\n  amountOfData = signal<number | undefined | null>(undefined)\n  shownDiagramTypes = computed(() => \n    allDiagramTypes.filter((vl) => this.supportedDiagramTypes().includes(vl.layout))\n  )\n  // enabled for only pie chart as it contains legends which are hidden\n  useFullHeight = computed(() =>\n    this.diagramType() === DiagramType.PIE && this.fullHeight()\n  )\n  // Changing the colorRangeInfo, will change the range of the color palette of the diagram.\n  private colorRangeInfo = {\n    colorStart: 0,\n    colorEnd: 1,\n    useEndAsStart: false,\n  }\n  // Changing the colorScale, will change the thematic color appearance of the diagram.\n  private colorScale = d3.interpolateCool\n\n  private static nextUniqueId = 0;\n  uniqueInstanceId: number;\n\n  constructor() {\n    this.uniqueInstanceId = DiagramComponent.nextUniqueId++;\n    effect(() => {\n      this.generateChart(this.colorScale, this.colorRangeInfo)\n    })\n  }\n\n  public generateChart(colorScale: any, colorRangeInfo: any) {\n    const data = this.data()\n    if (!data) return\n    const inputData = data.map((diagramData) => diagramData.value)\n\n    this.amountOfData.set(data.reduce((acc, current) => acc + current.value, 0))\n    const COLORS = this.generateColors(data, colorScale, colorRangeInfo)\n    this.chartData.set({\n      labels: data.map((d) => d.label),\n      datasets: [\n        {\n          data: inputData,\n          backgroundColor: COLORS,\n        },\n      ],\n    })\n\n    this.chartOptions.set({\n      plugins: {\n        legend: {\n          position: 'bottom',\n        },\n      },\n      maintainAspectRatio: false,\n      ...(this.diagramType() === DiagramType.VERTICAL_BAR && {\n        plugins: { legend: { display: false } },\n        scales: { y: { ticks: { precision: 0 } } },\n      }),\n      ...(this.diagramType() === DiagramType.HORIZONTAL_BAR && {\n        indexAxis: 'y',\n        plugins: { legend: { display: false } },\n        scales: { x: { ticks: { precision: 0 } } },\n      }),\n    })\n  }\n\n  generateColors(data: DiagramData[], colorScale: any, colorRangeInfo: any) {\n    const dataColors = data.map((diagramData) => diagramData.backgroundColor)\n    if (dataColors.filter((v) => v !== undefined).length === data.length) {\n      return dataColors\n    } else if (this.fillMissingColors()) {\n      // it is intended to generate more colors than needed, so interval for generated colors is same as amount of items on the diagram\n      const interpolatedColors = interpolateColors(dataColors.length, colorScale, colorRangeInfo)\n      let interpolatedIndex = 0\n      return dataColors.map((color) => (color === undefined ? interpolatedColors[interpolatedIndex++] : color))\n    } else {\n      return interpolateColors(data.length, colorScale, colorRangeInfo)\n    }\n  }\n\n  generateTotal(data: DiagramData[]): number {\n    return data.reduce((acc, current) => acc + current.value, 0)\n  }\n\n  generateDiagramValueString(data: DiagramData[]): string {\n    return data.map((item) => `${item.label}:${item.value}`).join(', ')\n  }\n\n  private diagramTypeToChartType(value: DiagramType): ChartType {\n    if (value === DiagramType.PIE) return 'pie'\n    else if (value === DiagramType.HORIZONTAL_BAR || value === DiagramType.VERTICAL_BAR) return 'bar'\n    else return 'pie'\n  }\n\n  dataClicked(event: []) {\n    this.dataSelected.emit(event.length)\n  }\n\n  onDiagramTypeChanged(event: any) {\n    this.diagramType.set(event.value.layout)\n    this.diagramTypeChanged.emit(event.value.layout)\n    this.componentStateChanged.emit({\n      activeDiagramType: event.value.layout,\n    })\n  }\n}\nfunction interpolateColors(amountOfData: number, colorScale: any, colorRangeInfo: any) {\n  return ColorUtils.interpolateColors(amountOfData, colorScale, colorRangeInfo)\n}","@if (chartTitleKey() || chartDescriptionKey()) {\n  @if (chartTitleKey()) {\n    <header class=\"diagram-title  w-full flex justify-content-center\" [attr.id]=\"'ocx-' + uniqueInstanceId + '-title'\">\n      {{ chartTitleKey() | translate }}\n    </header>\n  }\n  @if (chartDescriptionKey()) {\n    <p class=\"diagram-description  w-full flex justify-content-center\" [attr.id]=\"'ocx-' + uniqueInstanceId + '-description'\">\n      {{chartDescriptionKey() | translate }}</p>\n  }\n}\n@if (data()) { @if (shownDiagramTypes().length > 1) {\n<div class=\"flex justify-content-center pb-2\">\n  <p-selectbutton [options]=\"shownDiagramTypes()\" [ngModel]=\"selectedDiagramType()\" optionLabel=\"id\"\n    (onChange)=\"onDiagramTypeChanged($event)\" name=\"diagram-type-select-button\" [allowEmpty]=\"false\"\n    [ariaLabel]=\"'OCX_DIAGRAM.SELECT_BUTTON.ARIA_LABEL' | translate\">\n    <ng-template #item let-item>\n      <i [class]=\"item.icon\" [ocxTooltip]=\"item.tooltipKey | translate\" tooltipPosition=\"top\" tooltipEvent=\"hover\"></i>\n      <span class=\"sr-only\" [attr.id]=\"'ocx-' + uniqueInstanceId + '-' + item.id\">{{item.label ? item.label : item.labelKey | translate}}</span>\n    </ng-template>\n  </p-selectbutton>\n</div>\n}\n<div class=\"w-full flex justify-content-center\" [ngClass]=\"{'h-full': useFullHeight()}\">\n  <p-chart tabindex=\"0\" \n    [attr.aria-describedby]=\"'ocx-' + uniqueInstanceId + '-sr-only-table'\" \n    [attr.id]=\"'ocx-' + uniqueInstanceId + '-chart'\"\n    [attr.data-automation-type]=\"chartType()\"\n    [type]=\"chartType()\"\n    [data]=\"chartData()\"\n    [responsive]=\"useFullHeight()\"\n    [attr.data-automation-options]=\"chartOptions()\" [options]=\"chartOptions()\" (onDataSelect)=\"dataClicked($event)\"\n    [ariaLabel]=\"(data() ? 'OCX_DIAGRAM.ARIA_LABEL' : 'OCX_DIAGRAM.EMPTY_ARIA_LABEL') | translate: {total: generateTotal(data() ?? []), valueString: generateDiagramValueString(data() ?? [])}\"></p-chart>\n  <ng-container [ngTemplateOutlet]=\"chartDetailsForSr\"></ng-container>\n</div>\n<div class=\"w-full flex justify-content-center mt-2 sumKey\" aria-hidden=\"true\">\n  <p class=\"text-md font-medium text-700\">\n    <span name=\"sumLabel\"> {{ sumKey() | translate }}</span> : <span name=\"amountOfData\">{{ amountOfData() }}</span>\n  </p>\n</div>\n} @if (!data()) {\n<div class=\"w-full flex justify-content-center\">\n  <p-message severity=\"info\" text=\"{{ 'OCX_DIAGRAM.NO_DATA' | translate }}\"></p-message>\n</div>\n}\n\n\n<!-- Table for screen readers -->\n<ng-template #chartDetailsForSr>\n  @if (data()) {\n  <div class=\"w-full flex justify-content-center sr-only\" [attr.id]=\"'ocx-' + uniqueInstanceId + '-sr-only-diagram-details'\">\n    <table [attr.id]=\"'ocx-' + uniqueInstanceId + '-sr-only-table'\">\n      <caption [attr.id]=\"'ocx-' + uniqueInstanceId + '-table-caption'\"> {{ chartTitleKey() | translate }} </caption>\n      <thead>\n        <tr>\n          <th scope=\"col\">{{ 'OCX_DIAGRAM.TABLE.COLOR' | translate }}</th>\n          <th scope=\"col\">{{ 'OCX_DIAGRAM.TABLE.LABEL' | translate }}</th>\n          <th scope=\"col\">{{ 'OCX_DIAGRAM.TABLE.COUNT' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody>\n        @for (item of data(); track item) {\n        <tr>\n          <td>\n            <span>{{ item.backgroundColor || ' ' }}</span>\n          </td>\n          <td>{{ item.label }}</td>\n          <td>{{ item.value }}</td>\n        </tr>\n        }\n        <tr>\n          <td colspan=\"2\">{{ sumKey() | translate }}</td>\n          <td>{{ amountOfData() }}</td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n}\n</ng-template>","import { ColumnFilterDataSelectOptions, Filter } from '../model/filter.model'\n\nexport function limit(columnFilterData: Filter[], amount: number, options: ColumnFilterDataSelectOptions): Filter[] {\n  return options.reverse\n    ? columnFilterData.slice(-amount, columnFilterData.length).reverse()\n    : columnFilterData.slice(0, amount)\n}\n","import {\n  Component,\n  computed,\n  effect,\n  inject,\n  input,\n  model,\n  output,\n  signal,\n  TemplateRef,\n  viewChild,\n  viewChildren,\n} from '@angular/core'\nimport { Filter, FilterType } from '../../model/filter.model'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport type { Observable } from 'rxjs'\nimport { combineLatest, debounceTime, firstValueFrom, map } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { PrimeTemplate } from 'primeng/api'\nimport { findTemplate } from '../../utils/template.utils'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { limit } from '../../utils/filter.utils'\nimport { Popover } from 'primeng/popover'\nimport { Row } from '../data-table/data-table.component'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport { Button } from 'primeng/button'\nimport { TranslateService } from '@ngx-translate/core'\nimport { LiveAnnouncer } from '@angular/cdk/a11y'\n\nexport type FilterViewDisplayMode = 'chips' | 'button'\nexport type FilterViewRowDisplayData = {\n  id: string\n  column: string\n  value: unknown\n}\nexport type FilterViewRowDetailData = FilterViewRowDisplayData & {\n  valueColumnId: string\n}\n\nexport interface FilterViewComponentState {\n  filters?: Filter[]\n}\n\n@Component({\n  standalone: false,\n  selector: 'ocx-filter-view',\n  templateUrl: './filter-view.component.html',\n  styleUrls: ['./filter-view.component.scss'],\n})\nexport class FilterViewComponent {\n  readonly translateService = inject(TranslateService)\n  readonly liveAnnouncer = inject(LiveAnnouncer)\n  \n  ColumnType = ColumnType\n  FilterType = FilterType\n\n  readonly filters = model<Filter[]>([])\n  readonly columns = model<DataTableColumn[]>([])\n  readonly displayMode = input<FilterViewDisplayMode>('button')\n  readonly selectDisplayedChips = input<(filters: Filter[], columns: DataTableColumn[]) => Filter[]>((filters) =>\n    limit(filters, 3, { reverse: true })\n  )\n  readonly chipStyleClass = input('')\n  readonly tableStyle = input<{ [klass: string]: any }>({ 'max-height': '50vh' })\n  readonly panelStyle = input<{ [klass: string]: any }>({ 'max-width': '90%' })\n\n  readonly filtered = output<Filter[]>()\n  readonly componentStateChanged = output<FilterViewComponentState>()\n\n  readonly columnFilterTableColumns = signal<DataTableColumn[]>([\n    {\n      id: 'column',\n      columnType: ColumnType.TRANSLATION_KEY,\n      nameKey: 'OCX_FILTER_VIEW.TABLE.COLUMN_NAME',\n    },\n    { id: 'value', columnType: ColumnType.STRING, nameKey: 'OCX_FILTER_VIEW.TABLE.VALUE' },\n    {\n      id: 'actions',\n      columnType: ColumnType.STRING,\n      nameKey: 'OCX_FILTER_VIEW.TABLE.ACTIONS',\n    },\n  ])\n\n  readonly panel = viewChild(Popover)\n  readonly manageButton = viewChild<Button>('manageButton')\n\n  readonly defaultTemplates = viewChildren(PrimeTemplate)\n  readonly defaultTemplates$ = toObservable(this.defaultTemplates)\n\n  readonly trigger = signal<HTMLElement | undefined>(undefined)\n\n  readonly filterViewNoSelection = signal<TemplateRef<any> | undefined>(undefined)\n  readonly filterViewChipContent = signal<TemplateRef<any> | undefined>(undefined)\n  readonly filterViewShowMoreChip = signal<TemplateRef<any> | undefined>(undefined)\n\n  readonly templates = input<readonly PrimeTemplate[] | null | undefined>(undefined)\n  readonly templates$ = toObservable(this.templates)\n\n  readonly columnFilterDataRows = computed(() => {\n    const filters = this.filters()\n    const columns = this.columns()\n\n    const columnIds = columns.map((c: DataTableColumn) => c.id)\n    return filters\n      .map((f: Filter) => {\n        const filterColumn = this.getColumnForFilter(f, columns)\n        if (!filterColumn) return undefined\n        return {\n          id: `${f.columnId}-${f.value}`,\n          column: filterColumn.nameKey,\n          value: f.value,\n          valueColumnId: filterColumn.id,\n        } satisfies FilterViewRowDetailData\n      })\n      .filter((v: FilterViewRowDetailData | undefined): v is FilterViewRowDetailData => v !== undefined)\n      .slice()\n      .sort(\n        (a: FilterViewRowDetailData, b: FilterViewRowDetailData) =>\n          columnIds.indexOf(a.valueColumnId) - columnIds.indexOf(b.valueColumnId)\n      )\n  })\n\n  chipTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n  tableTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n\n  private readonly chipIdSuffix: Array<string> = ['IdFilterChip', 'IdTableFilterCell', 'IdTableCell']\n  private readonly chipTemplateNames: Record<ColumnType, Array<string>> = {\n    [ColumnType.DATE]: ['dateFilterChipValue', 'dateTableFilterCell', 'dateTableCell', 'defaultDateValue'],\n    [ColumnType.NUMBER]: ['numberFilterChipValue', 'numberTableFilterCell', 'numberTableCell', 'defaultNumberValue'],\n    [ColumnType.RELATIVE_DATE]: [\n      'relativeDateFilterChipValue',\n      'relativeDateTableFilterCell',\n      'relativeDateTableCell',\n      'defaultRelativeDateValue',\n    ],\n    [ColumnType.TRANSLATION_KEY]: [\n      'translationKeyFilterChipValue',\n      'translationKeyTableFilterCell',\n      'translationKeyTableCell',\n      'defaultTranslationKeyValue',\n    ],\n    [ColumnType.STRING]: ['stringFilterChipValue', 'stringTableFilterCell', 'stringTableCell', 'defaultStringValue'],\n  }\n  private readonly chipTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n  private readonly tableIdSuffix: Array<string> = ['IdFilterViewCell', 'IdTableFilterCell', 'IdTableCell']\n  private readonly tableTemplateNames: Record<ColumnType, Array<string>> = {\n    [ColumnType.DATE]: ['dateFilterViewCell', 'dateTableFilterCell', 'dateTableCell', 'defaultDateValue'],\n    [ColumnType.NUMBER]: ['numberFilterViewCell', 'numberTableFilterCell', 'numberTableCell', 'defaultNumberValue'],\n    [ColumnType.RELATIVE_DATE]: [\n      'relativeDateFilterViewCell',\n      'relativeDateTableFilterCell',\n      'relativeDateTableCell',\n      'defaultRelativeDateValue',\n    ],\n    [ColumnType.TRANSLATION_KEY]: [\n      'translationKey',\n      'translationKeyTableFilterCell',\n      'translationKeyTableCell',\n      'defaultTranslationKeyValue',\n    ],\n    [ColumnType.STRING]: ['stringFilterViewCell', 'stringTableFilterCell', 'stringTableCell', 'defaultStringValue'],\n  }\n  private readonly tableTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n  constructor() {\n    effect(() => {\n      const t = this.templates()\n\n      t?.forEach((item) => {\n        switch (item.getType()) {\n          case 'filterViewNoSelection':\n            this.filterViewNoSelection.set(item.template)\n            break\n          case 'filterViewChipContent':\n            this.filterViewChipContent.set(item.template)\n            break\n          case 'filterViewShowMoreChip':\n            this.filterViewShowMoreChip.set(item.template)\n            break\n        }\n      })\n    })\n\n    effect(() => {\n      const cols = this.columns()\n      const columnFilterTableColumns = this.columnFilterTableColumns()\n\n      const chipObs = cols.map((c) =>\n        this.getTemplate(c, this.chipTemplateNames, this.chipTemplates, this.chipIdSuffix)\n      )\n      this.chipTemplates$ = chipObs.length\n        ? combineLatest(chipObs).pipe(map((values) => Object.fromEntries(cols.map((c, i) => [c.id, values[i]]))))\n        : undefined\n\n      const tableTemplateColumns = cols.concat(columnFilterTableColumns)\n      const tableObs = tableTemplateColumns.map((c) =>\n        this.getTemplate(c, this.tableTemplateNames, this.tableTemplates, this.tableIdSuffix)\n      )\n      this.tableTemplates$ = tableObs.length\n        ? combineLatest(tableObs).pipe(\n            map((values) => Object.fromEntries(tableTemplateColumns.map((c, i) => [c.id, values[i]])))\n          )\n        : undefined\n    })\n\n    effect(() => {\n      const filters = this.filters()\n      this.filtered.emit(filters)\n      this.componentStateChanged.emit({ filters })\n      this.annouceFilterCount()\n    })\n  }\n\n  getTemplate(\n    column: DataTableColumn,\n    templateNames: Record<ColumnType, Array<string>>,\n    templates: Record<string, Observable<TemplateRef<any> | null>>,\n    idSuffix: Array<string>\n  ): Observable<TemplateRef<any> | null> {\n    if (!templates[column.id]) {\n      templates[column.id] = combineLatest([this.defaultTemplates$, this.templates$]).pipe(\n        map(([dt, t]) => {\n          const allTemplates = [...(dt ?? []), ...(t ?? [])]\n          const columnTemplate = findTemplate(\n            allTemplates,\n            idSuffix.map((suffix) => column.id + suffix)\n          )?.template\n          if (columnTemplate) {\n            return columnTemplate\n          }\n          return findTemplate(allTemplates, templateNames[column.columnType])?.template ?? null\n        }),\n        debounceTime(50)\n      )\n    }\n\n    return templates[column.id]\n  }\n\n  onResetFilersClick() {\n    this.filters.set([])\n  }\n\n  onChipRemove(filter: Filter) {\n    const filters = this.filters().filter((f) => f.value !== filter.value)\n    this.filters.set(filters)\n  }\n\n  onFilterDelete(row: Row) {\n    const filters = this.filters().filter((f) => !(f.columnId === row['valueColumnId'] && f.value === row['value']))\n    this.filters.set(filters)\n  }\n\n  focusTrigger() {\n    const trigger = this.trigger()\n    const manageButton = this.manageButton()\n    if (trigger?.id === 'ocxFilterViewShowMore') {\n      trigger.focus()\n      return\n    }\n\n    manageButton?.el.nativeElement.firstChild.focus()\n  }\n\n  showPanel(event: any) {\n    this.trigger.set(event.srcElement)\n    this.panel()?.toggle(event)\n  }\n\n  getColumnForFilter(filter: Filter, columns: DataTableColumn[]) {\n    return columns.find((c) => c.id === filter.columnId)\n  }\n\n  getColumn(colId: string, columns: DataTableColumn[]) {\n    return columns.find((c) => c.id === colId)\n  }\n\n  resolveFieldData(object: any, key: any) {\n    return ObjectUtils.resolveFieldData(object, key)\n  }\n\n  getRowObjectFromFiterData(filter: Filter): Record<string, unknown> {\n    return {\n      [filter.columnId]: filter.value,\n    }\n  }\n\n  getRowForValueColumn(row: Row): Row {\n    return {\n      id: row.id,\n      [row['valueColumnId'] as string]: row['value'],\n    }\n  }\n\n  private annouceFilterCount() {\n    const currentCount = this.filters()?.length ?? 0\n\n    if (currentCount === 0) {\n      firstValueFrom(this.translateService.get('OCX_FILTER_VIEW.NO_FILTERS')).then(\n        (translatedText: string) => {\n          this.liveAnnouncer.announce(translatedText)\n        }\n      )\n      return\n    }\n\n    firstValueFrom(this.translateService.get('OCX_FILTER_VIEW.SELECTED_FILTERS_COUNT', { results: currentCount })).then(\n      (translatedText: string) => {\n        this.liveAnnouncer.announce(translatedText)\n      }\n    )\n  }\n}\n","@if (columns(); as columns) { @if (filters(); as filters) {\n<div class=\"flex flex-wrap align-items-center gap-2\">\n  @if (displayMode() === 'chips') {\n  <ng-container *ocxIfBreakpoint=\"'desktop'; elseTemplate: noChipsContent\">\n    @if (selectDisplayedChips()(filters, columns); as selectedFilters) {\n    <p-button\n      #chipFilterResetButton\n      id=\"ocxFilterViewReset\"\n      (onClick)=\"onResetFilersClick()\"\n      icon=\"pi pi-eraser\"\n      ocxTooltip=\"{{ 'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.DETAIL' | translate }}\"\n      tooltipPosition=\"top\"\n      tooltipEvent=\"hover\"\n      [ariaLabel]=\"'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n    ></p-button>\n    @if (filters.length <= 0) { @if (filterViewNoSelection()) {\n    <ng-container [ngTemplateOutlet]=\"filterViewNoSelection()\"> </ng-container>\n    } @else {\n    <span id=\"ocxFilterViewNoFilters\">{{ 'OCX_FILTER_VIEW.NO_FILTERS' | translate }}</span>\n    } } @if ((chipTemplates$ | async) ?? {}; as templates) { @for (filter of selectedFilters; track filter) { @if\n    (getColumnForFilter(filter, columns); as column) {\n    <p-chip [removable]=\"true\" (onRemove)=\"onChipRemove(filter)\" [styleClass]=\"chipStyleClass()\">\n      @if (filterViewChipContent()) {\n      <ng-container\n        [ngTemplateOutlet]=\"filterViewChipContent()\"\n        [ngTemplateOutletContext]=\"{\n                filter: filter,\n                column: column,\n                filterValueTemplates: templates,\n                truthyTemplate: truthyTemplate,\n                filterValueTemplate: chipTemplate\n              }\"\n      >\n      </ng-container>\n      } @else {\n      <span style=\"white-space: nowrap\" class=\"p-chip-text flex flex-nowrap\"\n        >{{column?.nameKey ?? '' | translate }}:@if (filter.filterType === FilterType.EQUALS || !filter.filterType) {\n        <ng-container\n          [ngTemplateOutlet]=\"chipTemplate\"\n          [ngTemplateOutletContext]=\"{\n                        templates: templates,\n                        filter: filter,\n                        column: column\n                      }\"\n        ></ng-container>\n        } @if (filter.filterType === FilterType.IS_NOT_EMPTY) {\n        <ng-container\n          [ngTemplateOutlet]=\"truthyTemplate\"\n          [ngTemplateOutletContext]=\"{\n                      value: filter.value\n                    }\"\n        ></ng-container>\n        }\n      </span>\n      }\n    </p-chip>\n    } } @if (selectedFilters.length < filters.length) {\n    <p-chip\n      #showMoreChip\n      id=\"ocxFilterViewShowMore\"\n      tabindex=\"0\"\n      role=\"button\"\n      (click)=\"showPanel($event)\"\n      class=\"cursor-pointer filter-view-focusable\"\n      (keydown.enter)=\"showPanel($event)\"\n      (keydown.space)=\"showPanel($event)\"\n    >\n      @if (filterViewShowMoreChip()) {\n      <ng-container\n        [ngTemplateOutlet]=\"filterViewShowMoreChip()\"\n        [ngTemplateOutletContext]=\"{\n            $implicit: filters.length - selectedFilters.length\n          }\"\n      >\n      </ng-container>\n      } @else {\n      <span class=\"p-chip-text flex flex-nowrap\"> +{{filters.length - selectedFilters.length}} </span>\n      }\n      <ng-container [ngTemplateOutlet]=\"filterTablePanel\"></ng-container>\n    </p-chip>\n    } } }\n  </ng-container>\n  } @else {\n  <ng-container [ngTemplateOutlet]=\"noChipsContent\"></ng-container>\n  }\n  <ng-template #noChipsContent>\n    <p-button\n      tabindex=\"0\"\n      #manageButton\n      id=\"ocxFilterViewManage\"\n      (onClick)=\"showPanel($event)\"\n      [disabled]=\"filters.length === 0\"\n      icon=\"pi pi-sliders-h\"\n      label=\"{{ 'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.LABEL' | translate }}\"\n      [ocxTooltip]=\"\n        filters.length === 0\n          ? ('OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.DISABLED_DETAIL' | translate)\n          : ('OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.DETAIL' | translate)\n      \"\n      tooltipPosition=\"top\"\n      tooltipEvent=\"hover\"\n      [badge]=\"filters.length.toString()\"\n      [ariaLabel]=\"'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n    ></p-button>\n    <ng-container [ngTemplateOutlet]=\"filterTablePanel\"></ng-container>\n  </ng-template>\n  <ng-template #filterTablePanel>\n    @if (tableTemplates$ | async; as templates) {\n    <p-popover #op [style]=\"panelStyle()\" (onHide)=\"focusTrigger()\">\n      <ng-template pTemplate=\"content\">\n        <div pFocusTrap>\n          <div class=\"flex justify-content-between align-items-center mb-2\">\n            <span class=\"text-2xl font-medium\">{{'OCX_FILTER_VIEW.PANEL_TITLE' | translate}}</span>\n            <div>\n              <p-button\n                pAutoFocus\n                [autofocus]=\"true\"\n                id=\"ocxFilterViewOverlayReset\"\n                (onClick)=\"onResetFilersClick()\"\n                icon=\"pi pi-eraser\"\n                ocxTooltip=\"{{ 'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.DETAIL' | translate }}\"\n                tooltipPosition=\"top\"\n                tooltipEvent=\"hover\"\n                [ariaLabel]=\"'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n              ></p-button>\n            </div>\n          </div>\n          <ocx-data-table\n            id=\"ocxFilterViewDataTable\"\n            [rows]=\"columnFilterDataRows()\"\n            [columns]=\"columnFilterTableColumns()\"\n            [emptyResultsMessage]=\"'OCX_FILTER_VIEW.NO_FILTERS' | translate\"\n            [paginator]=\"false\"\n            [tableStyle]=\"tableStyle()\"\n          >\n            <ng-template pTemplate=\"columnIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n              <ng-container\n                [ngTemplateOutlet]=\"templates[column.id]\"\n                [ngTemplateOutletContext]=\"{\n            rowObject: rowObject,\n            column: column,\n          }\"\n              >\n              </ng-container>\n            </ng-template>\n            <ng-template pTemplate=\"valueIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n              @if (getColumn(rowObject['valueColumnId'], columns); as valueColumn) { @if (!valueColumn.filterType ||\n              valueColumn.filterType === FilterType.EQUALS) {\n              <ng-container\n                [ngTemplateOutlet]=\"templates[valueColumn.id]\"\n                [ngTemplateOutletContext]=\"{\n              rowObject: getRowForValueColumn(rowObject),\n              column: valueColumn\n            }\"\n              >\n              </ng-container>\n              } @if (valueColumn.filterType === FilterType.IS_NOT_EMPTY) {\n              <ng-container\n                [ngTemplateOutlet]=\"truthyTemplate\"\n                [ngTemplateOutletContext]=\"{\n        value: resolveFieldData(rowObject, column.id)\n      }\"\n              >\n              </ng-container>\n              } }\n            </ng-template>\n            <ng-template pTemplate=\"actionsIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n              <div>\n                <button\n                  pButton\n                  class=\"p-button-rounded p-button-danger p-button-text\"\n                  title=\"{{ 'OCX_FILTER_VIEW.TABLE.REMOVE_FILTER_TITLE' | translate }}\"\n                  [attr.aria-label]=\"'OCX_FILTER_VIEW.TABLE.REMOVE_FILTER_ARIA_LABEL' | translate\"\n                  icon=\"pi pi-trash\"\n                  (click)=\"onFilterDelete(rowObject)\"\n                ></button>\n              </div>\n            </ng-template>\n          </ocx-data-table>\n        </div>\n      </ng-template>\n    </p-popover>\n    }\n  </ng-template>\n</div>\n} }\n\n<ng-template #chipTemplate let-templates=\"templates\" let-filter=\"filter\" let-column=\"column\">\n  @if (templates[column.id]; as template) {\n  <ng-container\n    [ngTemplateOutlet]=\"template\"\n    [ngTemplateOutletContext]=\"{\n            rowObject: getRowObjectFromFiterData(filter),\n            column: column\n          }\"\n  >\n  </ng-container>\n  }\n</ng-template>\n\n<ng-template #truthyTemplate let-value=\"value\">\n  @if (value) { {{'OCX_FILTER_VIEW.FILTER_YES' | translate}} } @if (!value) { {{'OCX_FILTER_VIEW.FILTER_NO' |\n  translate}} }\n</ng-template>\n\n<ng-template pTemplate=\"defaultStringValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container> {{ resolveFieldData(rowObject, column.id)}} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultNumberValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container> {{ resolveFieldData(rowObject, column.id) | number }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultCustomValue\" let-rowObject=\"rowObject\" let-column=\"column\"> </ng-template>\n\n<ng-template pTemplate=\"defaultDateValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container>\n    {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n  </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n  <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }}</ng-container>\n</ng-template>\n","import {\n  Component,\n  effect,\n  inject,\n  input,\n  model,\n  output,\n} from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { combineLatest, map, mergeMap, of } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DiagramColumn } from '../../model/diagram-column'\nimport { DiagramData } from '../../model/diagram-data'\nimport { DiagramType } from '../../model/diagram-type'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { toObservable } from '@angular/core/rxjs-interop'\n\nexport interface GroupByCountDiagramComponentState {\n  activeDiagramType?: DiagramType\n}\n\n@Component({\n  standalone: false,\n  selector: 'ocx-group-by-count-diagram',\n  templateUrl: './group-by-count-diagram.component.html',\n})\nexport class GroupByCountDiagramComponent {\n  private translateService = inject(TranslateService)\n\n  sumKey = input<string>('SEARCH.SUMMARY_TITLE')\n  diagramType = model<DiagramType>(DiagramType.PIE)\n  chartTitleKey = input<string>('')\n  chartDescriptionKey = input<string>('')\n  /**\n   * This property determines if diagram should generate the colors for the data that does not have any set.\n   *\n   * Setting this property to false will result in using the provided colors only if every data item has one.\n   *  In the scenario where at least one item does not have a color set, diagram will generate all colors.\n   */\n  fillMissingColors = input<boolean>(true)\n  supportedDiagramTypes = input<DiagramType[]>([])\n\n  data = model<unknown[]>([])\n\n  allLabelKeys = input<string[]>([])\n\n  showAllLabels = input<boolean>(false)\n\n  columnType = model<ColumnType>(ColumnType.STRING)\n\n  columnField = model<string>('')\n\n  column = input<DiagramColumn>()\n\n  fullHeight = input<boolean>(false)\n  \n  colors = model<Record<string, string>>({})\n\n  dataSelected = output<any>()\n  diagramTypeChanged = output<DiagramType>()\n  componentStateChanged = output<GroupByCountDiagramComponentState>()\n\n  diagramData$ = combineLatest([\n    toObservable(this.data),\n    toObservable(this.columnField),\n    toObservable(this.columnType),\n    toObservable(this.colors),\n    toObservable(this.allLabelKeys),\n    toObservable(this.showAllLabels),\n  ]).pipe(\n    mergeMap(([data, columnField, columnType, colors, allLabelKeys, showAllLabels]) => {\n      const columnData = data.map((d) => ObjectUtils.resolveFieldData(d, columnField))\n      let occurrences: DiagramData[] = []\n\n      if (showAllLabels && allLabelKeys.length > 0) {\n        occurrences = allLabelKeys.map((label) => ({\n          label: label,\n          value: 0,\n          backgroundColor: colors[label],\n        }))\n\n        columnData.forEach((current) => {\n          const foundColumn = occurrences.find((e) => e.label === current)\n          if (foundColumn) {\n            foundColumn.value++\n          } else {\n            occurrences.push({ label: current, value: 1, backgroundColor: colors[current.toString()] })\n          }\n        })\n      } else {\n        occurrences = columnData.reduce((acc, current) => {\n          return acc.some((e: { label: string }) => e.label === current)\n            ? (acc.find((e: { label: string }) => e.label === current).value++, acc)\n            : [...acc, { label: current, value: 1, backgroundColor: colors[current.toString()] }]\n        }, [])\n      }\n\n      if (columnType === ColumnType.TRANSLATION_KEY && occurrences.length > 0) {\n        return this.translateService.get(occurrences.map((o) => o.label)).pipe(\n          map((translations) =>\n            occurrences.map((o) => ({\n              label: translations[o.label],\n              value: o.value,\n              backgroundColor: o.backgroundColor,\n            }))\n          )\n        )\n      }\n      return of(occurrences)\n    })\n  )\n\n  constructor() {\n    effect(() => {\n      const column = this.column()\n      if (!column) return\n      this.columnType.set(column.columnType)\n      this.columnField.set(column.id)\n    })\n  }\n\n  dataClicked(event: any) {\n    this.dataSelected.emit(event)\n  }\n\n  onDiagramTypeChanged(newDiagramType: DiagramType) {\n    this.diagramType.set(newDiagramType)\n    this.diagramTypeChanged.emit(newDiagramType)\n    this.componentStateChanged.emit({\n      activeDiagramType: newDiagramType,\n    })\n  }\n}\n","<ocx-diagram\n  [data]=\"(diagramData$ | async) || []\"\n  [fillMissingColors]=\"fillMissingColors()\"\n  [sumKey]=\"sumKey()\"\n  [fullHeight]=\"fullHeight()\"\n  [diagramType]=\"diagramType()\"\n  [chartTitleKey]=\"chartTitleKey()\"\n  [chartDescriptionKey]=\"chartDescriptionKey()\"\n  (onDataSelect)=\"dataClicked($event)\"\n  [supportedDiagramTypes]=\"supportedDiagramTypes()\"\n  (diagramTypeChanged)=\"onDiagramTypeChanged($event)\"\n></ocx-diagram>","import {\n  Component,\n  DestroyRef,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  Signal,\n  TemplateRef,\n  computed,\n  contentChild,\n  contentChildren,\n  effect,\n  inject,\n  input,\n  model,\n  output,\n  signal,\n  untracked,\n  viewChild,\n} from '@angular/core'\nimport { SlotService } from '@onecx/angular-remote-components'\nimport { PrimeTemplate } from 'primeng/api'\nimport { Observable, ReplaySubject, combineLatest, map, startWith, timestamp } from 'rxjs'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter } from '../../model/filter.model'\nimport { limit } from '../../utils/filter.utils'\nimport { orderAndMergeValuesByTimestamp } from '../../utils/rxjs-utils'\nimport {\n  ColumnGroupSelectionComponentState,\n  GroupSelectionChangedEvent,\n} from '../column-group-selection/column-group-selection.component'\nimport {\n  ActionColumnChangedEvent,\n  ColumnSelectionChangedEvent,\n  CustomGroupColumnSelectorComponentState,\n} from '../custom-group-column-selector/custom-group-column-selector.component'\nimport { DataLayoutSelectionComponentState } from '../data-layout-selection/data-layout-selection.component'\nimport { DataListGridSortingComponentState } from '../data-list-grid-sorting/data-list-grid-sorting.component'\nimport { Row, Sort } from '../data-table/data-table.component'\nimport { DataViewComponent, DataViewComponentState, RowListGridData } from '../data-view/data-view.component'\nimport { FilterViewComponentState, FilterViewDisplayMode } from '../filter-view/filter-view.component'\nimport { observableOutput } from '../../utils/observable-output.utils'\nimport { toSignal } from '@angular/core/rxjs-interop'\nimport { PermissionInput } from '../../model/permission.model'\n\nexport type ViewLayout = 'grid' | 'list' | 'table'\n\nexport type InteractiveDataViewComponentState = ColumnGroupSelectionComponentState &\n  CustomGroupColumnSelectorComponentState &\n  DataLayoutSelectionComponentState &\n  DataListGridSortingComponentState &\n  DataViewComponentState &\n  FilterViewComponentState\n\nexport interface ColumnGroupData {\n  activeColumns: DataTableColumn[]\n  groupKey: string\n}\n@Component({\n  standalone: false,\n  selector: 'ocx-interactive-data-view',\n  templateUrl: './interactive-data-view.component.html',\n  styleUrls: ['./interactive-data-view.component.css'],\n  providers: [{ provide: 'InteractiveDataViewComponent', useExisting: InteractiveDataViewComponent }],\n})\nexport class InteractiveDataViewComponent implements OnInit {\n  private readonly slotService = inject(SlotService)\n  private readonly destroyRef = inject(DestroyRef)\n\n  dataViewComponent = viewChild(DataViewComponent)\n\n  columnGroupSelectionComponentState$ = new ReplaySubject<ColumnGroupSelectionComponentState>(1)\n  customGroupColumnSelectorComponentState$ = new ReplaySubject<CustomGroupColumnSelectorComponentState>(1)\n  dataLayoutComponentState$ = new ReplaySubject<DataLayoutSelectionComponentState>(1)\n  dataListGridSortingComponentState$ = new ReplaySubject<DataListGridSortingComponentState>(1)\n  dataViewComponentState$ = new ReplaySubject<DataViewComponentState>(1)\n  filterViewComponentState$ = new ReplaySubject<FilterViewComponentState>(1)\n\n  searchConfigPermission = input<PermissionInput>(undefined)\n  deletePermission = input<PermissionInput>(undefined)\n  editPermission = input<PermissionInput>(undefined)\n  viewPermission = input<PermissionInput>(undefined)\n  deleteActionVisibleField = input<string | undefined>(undefined)\n  deleteActionEnabledField = input<string | undefined>(undefined)\n  viewActionVisibleField = input<string | undefined>(undefined)\n  viewActionEnabledField = input<string | undefined>(undefined)\n  editActionVisibleField = input<string | undefined>(undefined)\n  editActionEnabledField = input<string | undefined>(undefined)\n  tableSelectionEnabledField = input<string | undefined>(undefined)\n  tableAllowSelectAll = input<boolean>(true)\n  name = input<string>('Data')\n  titleLineId = input<string | undefined>(undefined)\n  subtitleLineIds = input<string[] | undefined>(undefined)\n  supportedViewLayouts = input<ViewLayout[]>(['grid', 'list', 'table'])\n  columns = input<DataTableColumn[]>([])\n  emptyResultsMessage = input<string | undefined>(undefined)\n  clientSideSorting = input<boolean>(true)\n  clientSideFiltering = input<boolean>(true)\n  fallbackImage = input<string>('placeholder.png')\n  filters = model<Filter[]>([])\n  sortDirection = model<DataSortDirection>(DataSortDirection.NONE)\n  sortField = model<any>('')\n  sortStates = input<DataSortDirection[]>([\n    DataSortDirection.ASCENDING,\n    DataSortDirection.DESCENDING,\n    DataSortDirection.NONE,\n  ])\n  pageSizes = input<number[]>([10, 25, 50])\n  pageSize = model<number | undefined>(undefined)\n  totalRecordsOnServer = input<number | undefined>(undefined)\n  layout = model<ViewLayout>('table')\n  defaultGroupKey = input<string>('')\n  customGroupKey = input<string>('OCX_INTERACTIVE_DATA_VIEW.CUSTOM_GROUP')\n  groupSelectionNoGroupSelectedKey = input<string>('OCX_INTERACTIVE_DATA_VIEW.NO_GROUP_SELECTED')\n  currentPageShowingKey = input<string>('OCX_DATA_TABLE.SHOWING')\n  currentPageShowingWithTotalOnServerKey = input<string>('OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER')\n  additionalActions = input<DataAction[]>([])\n  listGridPaginator = model<boolean>(true)\n  tablePaginator = model<boolean>(true)\n  @Input()\n  get paginator(): boolean {\n    return this.listGridPaginator() && this.tablePaginator()\n  }\n  set paginator(value: boolean) {\n    this.listGridPaginator.set(value)\n    this.tablePaginator.set(value)\n  }\n  disableFilterView = input<boolean>(true)\n  filterViewDisplayMode = input<FilterViewDisplayMode>('button')\n  filterViewChipStyleClass = input<string>('')\n  filterViewTableStyle = input<{ [klass: string]: any }>({ 'max-height': '50vh' })\n  filterViewPanelStyle = input<{ [klass: string]: any }>({ 'max-width': '90%' })\n  selectDisplayedChips = input<(filters: Filter[], columns: DataTableColumn[]) => Filter[]>((filters) =>\n    limit(filters, 3, { reverse: true })\n  )\n  page = model<number>(0)\n  selectedRows = input<Row[]>([])\n  displayedColumnKeys = model<string[]>([])\n  displayedColumns = computed(() => {\n    const columnKeys = this.displayedColumnKeys()\n    return (\n      (columnKeys.map((key) => this.columns().find((col) => col.id === key)).filter(Boolean) as DataTableColumn[]) ??\n      []\n    )\n  })\n  frozenActionColumn = model<boolean>(false)\n  actionColumnPosition = model<'left' | 'right'>('right')\n  headerStyleClass = input<string | undefined>(undefined)\n  contentStyleClass = input<string | undefined>(undefined)\n  expandable = input<boolean>(false)\n  frozenExpandColumn = input<boolean>(false)\n  expandedRows = model<Row[] | string[] | number[]>([])\n\n  childTableCell = contentChild<TemplateRef<any> | undefined>('tableCell')\n  primeNgTableCell = computed(() => {\n    const templates = this.templates()\n    const tableCellTemplate = templates.find((t) => t.getType() === 'tableCell')\n    return tableCellTemplate?.template ?? undefined\n  })\n  _tableCell = computed(() => {\n    const primeNgTableCell = this.primeNgTableCell()\n    const childTableCell = this.childTableCell()\n    return primeNgTableCell ?? childTableCell ?? undefined\n  })\n\n  childDateTableCell = contentChild<TemplateRef<any> | undefined>('dateTableCell')\n  primeNgDateTableCell = computed(() => {\n    const templates = this.templates()\n    const dateTableCellTemplate = templates.find((t) => t.getType() === 'dateTableCell')\n    return dateTableCellTemplate?.template ?? undefined\n  })\n  _dateTableCell = computed(() => {\n    const primeNgDateTableCell = this.primeNgDateTableCell()\n    const childDateTableCell = this.childDateTableCell()\n    return primeNgDateTableCell ?? childDateTableCell ?? undefined\n  })\n\n  childRelativeDateTableCell = contentChild<TemplateRef<any> | undefined>('relativeDateTableCell')\n  primeNgRelativeDateTableCell = computed(() => {\n    const templates = this.templates()\n    const relativeDateTableCellTemplate = templates.find((t) => t.getType() === 'relativeDateTableCell')\n    return relativeDateTableCellTemplate?.template ?? undefined\n  })\n  _relativeDateTableCell = computed(() => {\n    const primeNgRelativeDateTableCell = this.primeNgRelativeDateTableCell()\n    const childRelativeDateTableCell = this.childRelativeDateTableCell()\n    return primeNgRelativeDateTableCell ?? childRelativeDateTableCell ?? undefined\n  })\n\n  childTranslationKeyTableCell = contentChild<TemplateRef<any> | undefined>('translationKeyTableCell')\n  primeNgTranslationKeyTableCell = computed(() => {\n    const templates = this.templates()\n    const translationKeyTableCellTemplate = templates.find((t) => t.getType() === 'translationKeyTableCell')\n    return translationKeyTableCellTemplate?.template ?? undefined\n  })\n  _translationKeyTableCell = computed(() => {\n    const primeNgTranslationKeyTableCell = this.primeNgTranslationKeyTableCell()\n    const childTranslationKeyTableCell = this.childTranslationKeyTableCell()\n    return primeNgTranslationKeyTableCell ?? childTranslationKeyTableCell ?? undefined\n  })\n\n  childGridItemSubtitleLines = contentChild<TemplateRef<any> | undefined>('gridItemSubtitleLines')\n  primeNgGridItemSubtitleLines = computed(() => {\n    const templates = this.templates()\n    const gridItemSubtitleLinesTemplate = templates.find((t) => t.getType() === 'gridItemSubtitleLines')\n    return gridItemSubtitleLinesTemplate?.template ?? undefined\n  })\n  _gridItemSubtitleLines = computed(() => {\n    const primeNgGridItemSubtitleLines = this.primeNgGridItemSubtitleLines()\n    const childGridItemSubtitleLines = this.childGridItemSubtitleLines()\n    return primeNgGridItemSubtitleLines ?? childGridItemSubtitleLines ?? undefined\n  })\n\n  childListItemSubtitleLines = contentChild<TemplateRef<any> | undefined>('listItemSubtitleLines')\n  primeNgListItemSubtitleLines = computed(() => {\n    const templates = this.templates()\n    const listItemSubtitleLinesTemplate = templates.find((t) => t.getType() === 'listItemSubtitleLines')\n    return listItemSubtitleLinesTemplate?.template ?? undefined\n  })\n  _listItemSubtitleLines = computed(() => {\n    const primeNgListItemSubtitleLines = this.primeNgListItemSubtitleLines()\n    const childListItemSubtitleLines = this.childListItemSubtitleLines()\n    return primeNgListItemSubtitleLines ?? childListItemSubtitleLines ?? undefined\n  })\n\n  childStringTableCell = contentChild<TemplateRef<any> | undefined>('stringTableCell')\n  primeNgStringTableCell = computed(() => {\n    const templates = this.templates()\n    const stringTableCellTemplate = templates.find((t) => t.getType() === 'stringTableCell')\n    return stringTableCellTemplate?.template ?? undefined\n  })\n  _stringTableCell = computed(() => {\n    const primeNgStringTableCell = this.primeNgStringTableCell()\n    const childStringTableCell = this.childStringTableCell()\n    return primeNgStringTableCell ?? childStringTableCell ?? undefined\n  })\n\n  childNumberTableCell = contentChild<TemplateRef<any> | undefined>('numberTableCell')\n  primeNgNumberTableCell = computed(() => {\n    const templates = this.templates()\n    const numberTableCellTemplate = templates.find((t) => t.getType() === 'numberTableCell')\n    return numberTableCellTemplate?.template ?? undefined\n  })\n  _numberTableCell = computed(() => {\n    const primeNgNumberTableCell = this.primeNgNumberTableCell()\n    const childNumberTableCell = this.childNumberTableCell()\n    return primeNgNumberTableCell ?? childNumberTableCell ?? undefined\n  })\n\n  childGridItem = contentChild<TemplateRef<any> | undefined>('gridItem')\n  primeNgGridItem = computed(() => {\n    const templates = this.templates()\n    const gridItemTemplate = templates.find((t) => t.getType() === 'gridItem')\n    return gridItemTemplate?.template ?? undefined\n  })\n  _gridItem = computed(() => {\n    const primeNgGridItem = this.primeNgGridItem()\n    const childGridItem = this.childGridItem()\n    return primeNgGridItem ?? childGridItem ?? undefined\n  })\n\n  childListItem = contentChild<TemplateRef<any> | undefined>('listItem')\n  primeNgListItem = computed(() => {\n    const templates = this.templates()\n    const listItemTemplate = templates.find((t) => t.getType() === 'listItem')\n    return listItemTemplate?.template ?? undefined\n  })\n  _listItem = computed(() => {\n    const primeNgListItem = this.primeNgListItem()\n    const childListItem = this.childListItem()\n    return primeNgListItem ?? childListItem ?? undefined\n  })\n\n  childTopCenter = contentChild<TemplateRef<any> | undefined>('topCenter')\n  primeNgTopCenter = computed(() => {\n    const templates = this.templates()\n    const topCenterTemplate = templates.find((t) => t.getType() === 'topCenter')\n    return topCenterTemplate?.template ?? undefined\n  })\n  _topCenter = computed(() => {\n    const primeNgTopCenter = this.primeNgTopCenter()\n    const childTopCenter = this.childTopCenter()\n    return primeNgTopCenter ?? childTopCenter ?? undefined\n  })\n\n  childListValue = contentChild<TemplateRef<any> | undefined>('listValue')\n  primeNgListValue = computed(() => {\n    const templates = this.templates()\n    const listValueTemplate = templates.find((t) => t.getType() === 'listValue')\n    return listValueTemplate?.template ?? undefined\n  })\n  _listValue = computed(() => {\n    const primeNgListValue = this.primeNgListValue()\n    const childListValue = this.childListValue()\n    return primeNgListValue ?? childListValue ?? undefined\n  })\n\n  childTranslationKeyListValue = contentChild<TemplateRef<any> | undefined>('translationKeyListValue')\n  primeNgTranslationKeyListValue = computed(() => {\n    const templates = this.templates()\n    const translationKeyListValueTemplate = templates.find((t) => t.getType() === 'translationKeyListValue')\n    return translationKeyListValueTemplate?.template ?? undefined\n  })\n  _translationKeyListValue = computed(() => {\n    const primeNgTranslationKeyListValue = this.primeNgTranslationKeyListValue()\n    const childTranslationKeyListValue = this.childTranslationKeyListValue()\n    return primeNgTranslationKeyListValue ?? childTranslationKeyListValue ?? undefined\n  })\n\n  childNumberListValue = contentChild<TemplateRef<any> | undefined>('numberListValue')\n  primeNgNumberListValue = computed(() => {\n    const templates = this.templates()\n    const numberListValueTemplate = templates.find((t) => t.getType() === 'numberListValue')\n    return numberListValueTemplate?.template ?? undefined\n  })\n  _numberListValue = computed(() => {\n    const primeNgNumberListValue = this.primeNgNumberListValue()\n    const childNumberListValue = this.childNumberListValue()\n    return primeNgNumberListValue ?? childNumberListValue ?? undefined\n  })\n\n  childRelativeDateListValue = contentChild<TemplateRef<any> | undefined>('relativeDateListValue')\n  primeNgRelativeDateListValue = computed(() => {\n    const templates = this.templates()\n    const relativeDateListValueTemplate = templates.find((t) => t.getType() === 'relativeDateListValue')\n    return relativeDateListValueTemplate?.template ?? undefined\n  })\n  _relativeDateListValue = computed(() => {\n    const primeNgRelativeDateListValue = this.primeNgRelativeDateListValue()\n    const childRelativeDateListValue = this.childRelativeDateListValue()\n    return primeNgRelativeDateListValue ?? childRelativeDateListValue ?? undefined\n  })\n\n  childStringListValue = contentChild<TemplateRef<any> | undefined>('stringListValue')\n  primeNgStringListValue = computed(() => {\n    const templates = this.templates()\n    const stringListValueTemplate = templates.find((t) => t.getType() === 'stringListValue')\n    return stringListValueTemplate?.template ?? undefined\n  })\n  _stringListValue = computed(() => {\n    const primeNgStringListValue = this.primeNgStringListValue()\n    const childStringListValue = this.childStringListValue()\n    return primeNgStringListValue ?? childStringListValue ?? undefined\n  })\n\n  childDateListValue = contentChild<TemplateRef<any> | undefined>('dateListValue')\n  primeNgDateListValue = computed(() => {\n    const templates = this.templates()\n    const dateListValueTemplate = templates.find((t) => t.getType() === 'dateListValue')\n    return dateListValueTemplate?.template ?? undefined\n  })\n  _dateListValue = computed(() => {\n    const primeNgDateListValue = this.primeNgDateListValue()\n    const childDateListValue = this.childDateListValue()\n    return primeNgDateListValue ?? childDateListValue ?? undefined\n  })\n\n  childTableFilterCell = contentChild<TemplateRef<any> | undefined>('tableFilterCell')\n  primeNgTableFilterCell = computed(() => {\n    const templates = this.templates()\n    const tableFilterCellTemplate = templates.find((t) => t.getType() === 'tableFilterCell')\n    return tableFilterCellTemplate?.template ?? undefined\n  })\n  _tableFilterCell = computed(() => {\n    const primeNgTableFilterCell = this.primeNgTableFilterCell()\n    const childTableFilterCell = this.childTableFilterCell()\n    return primeNgTableFilterCell ?? childTableFilterCell ?? undefined\n  })\n\n  childDateTableFilterCell = contentChild<TemplateRef<any> | undefined>('dateTableFilterCell')\n  primeNgDateTableFilterCell = computed(() => {\n    const templates = this.templates()\n    const dateTableFilterCellTemplate = templates.find((t) => t.getType() === 'dateTableFilterCell')\n    return dateTableFilterCellTemplate?.template ?? undefined\n  })\n  _dateTableFilterCell = computed(() => {\n    const primeNgDateTableFilterCell = this.primeNgDateTableFilterCell()\n    const childDateTableFilterCell = this.childDateTableFilterCell()\n    return primeNgDateTableFilterCell ?? childDateTableFilterCell ?? undefined\n  })\n\n  childRelativeDateTableFilterCell = contentChild<TemplateRef<any> | undefined>('relativeDateTableFilterCell')\n  primeNgRelativeDateTableFilterCell = computed(() => {\n    const templates = this.templates()\n    const relativeDateTableFilterCellTemplate = templates.find((t) => t.getType() === 'relativeDateTableFilterCell')\n    return relativeDateTableFilterCellTemplate?.template ?? undefined\n  })\n  _relativeDateTableFilterCell = computed(() => {\n    const primeNgRelativeDateTableFilterCell = this.primeNgRelativeDateTableFilterCell()\n    const childRelativeDateTableFilterCell = this.childRelativeDateTableFilterCell()\n    return primeNgRelativeDateTableFilterCell ?? childRelativeDateTableFilterCell ?? undefined\n  })\n\n  childTranslationKeyTableFilterCell = contentChild<TemplateRef<any> | undefined>('translationKeyTableFilterCell')\n  primeNgTranslationKeyTableFilterCell = computed(() => {\n    const templates = this.templates()\n    const translationKeyTableFilterCellTemplate = templates.find((t) => t.getType() === 'translationKeyTableFilterCell')\n    return translationKeyTableFilterCellTemplate?.template ?? undefined\n  })\n  _translationKeyTableFilterCell = computed(() => {\n    const primeNgTranslationKeyTableFilterCell = this.primeNgTranslationKeyTableFilterCell()\n    const childTranslationKeyTableFilterCell = this.childTranslationKeyTableFilterCell()\n    return primeNgTranslationKeyTableFilterCell ?? childTranslationKeyTableFilterCell ?? undefined\n  })\n\n  childStringTableFilterCell = contentChild<TemplateRef<any> | undefined>('stringTableFilterCell')\n  primeNgStringTableFilterCell = computed(() => {\n    const templates = this.templates()\n    const stringTableFilterCellTemplate = templates.find((t) => t.getType() === 'stringTableFilterCell')\n    return stringTableFilterCellTemplate?.template ?? undefined\n  })\n  _stringTableFilterCell = computed(() => {\n    const primeNgStringTableFilterCell = this.primeNgStringTableFilterCell()\n    const childStringTableFilterCell = this.childStringTableFilterCell()\n    return primeNgStringTableFilterCell ?? childStringTableFilterCell ?? undefined\n  })\n\n  childNumberTableFilterCell = contentChild<TemplateRef<any> | undefined>('numberTableFilterCell')\n  primeNgNumberTableFilterCell = computed(() => {\n    const templates = this.templates()\n    const numberTableFilterCellTemplate = templates.find((t) => t.getType() === 'numberTableFilterCell')\n    return numberTableFilterCellTemplate?.template ?? undefined\n  })\n  _numberTableFilterCell = computed(() => {\n    const primeNgNumberTableFilterCell = this.primeNgNumberTableFilterCell()\n    const childNumberTableFilterCell = this.childNumberTableFilterCell()\n    return primeNgNumberTableFilterCell ?? childNumberTableFilterCell ?? undefined\n  })\n\n  childColumnHeader = contentChild<TemplateRef<any> | undefined>('columnHeader')\n  primeNgColumnHeader = computed(() => {\n    const templates = this.templates()\n    const columnHeaderTemplate = templates.find((t) => t.getType() === 'columnHeader')\n    return columnHeaderTemplate?.template ?? undefined\n  })\n  _columnHeader = computed(() => {\n    const primeNgColumnHeader = this.primeNgColumnHeader()\n    const childColumnHeader = this.childColumnHeader()\n    return primeNgColumnHeader ?? childColumnHeader ?? undefined\n  })\n  \n  templates = contentChildren<PrimeTemplate>(PrimeTemplate)\n\n  filtered = output<Filter[]>()\n  sorted = output<Sort>()\n  @Output() deleteItem = observableOutput<RowListGridData>()\n  @Output() viewItem = observableOutput<RowListGridData>()\n  @Output() editItem = observableOutput<RowListGridData>()\n  @Output() selectionChanged = observableOutput<Row[]>()\n  dataViewLayoutChange = output<'grid' | 'list' | 'table'>()\n  displayedColumnKeysChange = output<string[]>()\n\n  pageChanged = output<number>()\n  pageSizeChanged = output<number>()\n\n  @Output() rowExpanded = observableOutput<Row>()\n  @Output() rowCollapsed = observableOutput<Row>()\n\n  componentStateChanged = output<InteractiveDataViewComponentState>()\n\n  selectedGroupKey = signal<string | undefined>(undefined)\n\n  data = input<RowListGridData[]>([])\n\n  readonly columnGroupSlotName = 'onecx-column-group-selection'\n  isColumnGroupSelectionComponentDefined$: Observable<boolean>\n  isColumnGroupSelectionComponentDefined: Signal<boolean | undefined>\n  groupSelectionChangedSlotEmitter = output<ColumnGroupData | undefined>()\n\n  // Internal EventEmitter for handling slot's groupSelectionChanged output\n  // Used for communication between the slot component and this component's internal logic\n  readonly slotGroupSelectionChangeListener = new EventEmitter<ColumnGroupData | undefined>()\n\n  constructor() {\n    this.isColumnGroupSelectionComponentDefined$ = this.slotService\n      .isSomeComponentDefinedForSlot(this.columnGroupSlotName)\n      .pipe(startWith(true))\n\n    this.isColumnGroupSelectionComponentDefined = toSignal(this.isColumnGroupSelectionComponentDefined$)\n\n    const subscription = this.slotGroupSelectionChangeListener.subscribe((event) => {\n      this.triggerGroupSelectionChanged(event)\n    })\n    this.destroyRef.onDestroy(() => subscription.unsubscribe())\n\n    effect(() => {\n      this.registerEventListenerForDataView()\n    })\n\n    effect(() => {\n      const filters = this.filters()\n      this.filtered.emit(filters)\n    })\n\n    effect(() => {\n      const sortField = this.sortField()\n      const sortDirection = this.sortDirection()\n      this.sorted.emit({ sortColumn: sortField, sortDirection })\n    })\n\n    effect(() => {\n      const layout = this.layout()\n      this.dataViewLayoutChange.emit(layout)\n    })\n\n    effect(() => {\n      const page = this.page()\n      this.pageChanged.emit(page)\n    })\n\n    effect(() => {\n      const pageSize = this.pageSize()\n      if (!pageSize) {\n        return\n      }\n      this.pageSizeChanged.emit(pageSize)\n    })\n\n    effect(() => {\n      const displayedColumnKeys = this.displayedColumnKeys()\n      this.displayedColumnKeysChange.emit(displayedColumnKeys)\n    })\n\n    effect(() => {\n      this.layout()\n      untracked(() => {\n        const columnGroupComponentDefined = this.isColumnGroupSelectionComponentDefined()\n        if (columnGroupComponentDefined) {\n          if (\n            !(\n              this.columns().some((c) => c.nameKey === this.selectedGroupKey()) ||\n              this.selectedGroupKey() === this.customGroupKey()\n            )\n          ) {\n            this.selectedGroupKey.set(undefined)\n          }\n        }\n      })\n    })\n\n  }\n\n  /**\n   * Triggers the group selection changed logic. This method should be called\n   * when the column group selection changes, either from the UI or programmatically.\n   * It updates the displayed columns, selected group key, and emits the change event.\n   * \n   * @param event The column group data, or undefined to use current state\n   */\n  triggerGroupSelectionChanged(event: ColumnGroupData | undefined): void {\n    event ??= {\n      activeColumns: this.displayedColumns(),\n      groupKey: this.selectedGroupKey() ?? this.defaultGroupKey(),\n    }\n    const displayedColumnKeys = event.activeColumns.map((col) => col.id)\n    this.displayedColumnKeys.set(displayedColumnKeys)\n    this.selectedGroupKey.set(event.groupKey)\n    this.columnGroupSelectionComponentState$.next({\n      activeColumnGroupKey: event.groupKey,\n      displayedColumns: event.activeColumns,\n    })\n    this.groupSelectionChangedSlotEmitter.emit(event)\n  }\n\n  ngOnInit(): void {\n    this.selectedGroupKey.set(this.defaultGroupKey())\n\n    if (this.defaultGroupKey() && this.defaultGroupKey() !== this.customGroupKey()) {\n      this.displayedColumnKeys.set(\n        this.columns()\n          .filter((column) => column.predefinedGroupKeys?.includes(this.defaultGroupKey()))\n          .map((column) => column.id)\n      )\n    }\n\n    let dataListGridSortingComponentState$: Observable<DataListGridSortingComponentState | Record<string, never>> =\n      this.dataListGridSortingComponentState$\n    let columnGroupSelectionComponentState$: Observable<ColumnGroupSelectionComponentState | Record<string, never>> =\n      this.columnGroupSelectionComponentState$\n    let customGroupColumnSelectorComponentState$: Observable<\n      CustomGroupColumnSelectorComponentState | Record<string, never>\n    > = this.customGroupColumnSelectorComponentState$\n\n    if (this.layout() === 'table') {\n      dataListGridSortingComponentState$ = dataListGridSortingComponentState$.pipe(startWith({}))\n    } else {\n      columnGroupSelectionComponentState$ = columnGroupSelectionComponentState$.pipe(\n        startWith({\n          activeColumnGroupKey: this.selectedGroupKey(),\n          displayedColumns: this.displayedColumns(),\n        })\n      )\n      customGroupColumnSelectorComponentState$ = customGroupColumnSelectorComponentState$.pipe(\n        startWith({\n          actionColumnConfig: {\n            frozen: this.frozenActionColumn(),\n            position: this.actionColumnPosition(),\n          },\n          displayedColumns: this.displayedColumns(),\n          activeColumnGroupKey: this.selectedGroupKey(),\n        })\n      )\n    }\n\n    let filterViewComponentState$: Observable<FilterViewComponentState | Record<string, never>> =\n      this.filterViewComponentState$\n    if (this.disableFilterView()) {\n      filterViewComponentState$ = filterViewComponentState$.pipe(\n        startWith({\n          filters: this.filters(),\n        })\n      )\n    }\n\n    combineLatest([\n      columnGroupSelectionComponentState$.pipe(timestamp()),\n      customGroupColumnSelectorComponentState$.pipe(timestamp()),\n      this.dataLayoutComponentState$.pipe(timestamp()),\n      dataListGridSortingComponentState$.pipe(timestamp()),\n      this.dataViewComponentState$.pipe(timestamp()),\n      filterViewComponentState$.pipe(timestamp()),\n    ])\n      .pipe(\n        map((componentStates) => {\n          return orderAndMergeValuesByTimestamp(componentStates)\n        })\n      )\n      .subscribe((val) => {\n        this.componentStateChanged.emit(val)\n      })\n  }\n\n  filtering(event: any) {\n    this.filters.set(event)\n  }\n\n  sorting(event: any) {\n    this.sortDirection.set(event.sortDirection)\n    this.sortField.set(event.sortColumn)\n  }\n\n  onDeleteElement(element: RowListGridData) {\n    if (this.deleteItem.observed()) {\n      this.deleteItem.emit(element)\n    }\n  }\n\n  onViewElement(element: RowListGridData) {\n    if (this.viewItem.observed()) {\n      this.viewItem.emit(element)\n    }\n  }\n\n  onEditElement(element: RowListGridData) {\n    if (this.editItem.observed()) {\n      this.editItem.emit(element)\n    }\n  }\n\n  onDataViewLayoutChange(layout: ViewLayout) {\n    this.layout.set(layout)\n  }\n\n  onSortChange($event: any) {\n    this.sortField.set($event)\n  }\n\n  onSortDirectionChange($event: any) {\n    this.sortDirection.set($event)\n  }\n\n  onColumnGroupSelectionChange(event: GroupSelectionChangedEvent) {\n    const displayedColumnKeys = event.activeColumns.map((col) => col.id)\n    this.displayedColumnKeys.set(displayedColumnKeys)\n    this.selectedGroupKey.set(event.groupKey)\n  }\n\n  registerEventListenerForDataView() {\n    if (this.deleteItem.observed()) {\n      if (!this.dataViewComponent()?.deleteItem.observed()) {\n        this.dataViewComponent()?.deleteItem.subscribe((event) => {\n          this.onDeleteElement(event)\n        })\n      }\n    }\n    if (this.viewItem.observed()) {\n      if (!this.dataViewComponent()?.viewItem.observed()) {\n        this.dataViewComponent()?.viewItem.subscribe((event) => {\n          this.onViewElement(event)\n        })\n      }\n    }\n    if (this.editItem.observed()) {\n      if (!this.dataViewComponent()?.editItem.observed()) {\n        this.dataViewComponent()?.editItem.subscribe((event) => {\n          this.onEditElement(event)\n        })\n      }\n    }\n    if (this.selectionChanged.observed()) {\n      if (!this.dataViewComponent()?.selectionChanged.observed()) {\n        this.dataViewComponent()?.selectionChanged.subscribe((event) => {\n          this.onRowSelectionChange(event)\n        })\n      }\n    }\n  }\n\n  onColumnSelectionChange(event: ColumnSelectionChangedEvent) {\n    const displayedColumnKeys = event.activeColumns.map((col) => col.id)\n    this.displayedColumnKeys.set(displayedColumnKeys)\n    this.selectedGroupKey.set(this.customGroupKey())\n  }\n\n  onActionColumnConfigChange(event: ActionColumnChangedEvent) {\n    this.frozenActionColumn.set(event.frozenActionColumn)\n    this.actionColumnPosition.set(event.actionColumnPosition)\n  }\n\n  onRowSelectionChange(event: Row[]) {\n    if (this.selectionChanged.observed()) {\n      this.selectionChanged.emit(event)\n    }\n  }\n\n  onPageChange(event: number) {\n    this.page.set(event)\n  }\n\n  onPageSizeChange(event: number) {\n    this.pageSize.set(event)\n  }\n}\n","<div class=\"p-3 border-bottom-1 surface-border\" [ngClass]=\"headerStyleClass()\" id=\"interactiveDataViewHeader\">\n  <div class=\"flex flex-wrap justify-content-between align-items-center py-1 gap-2\">\n    <div class=\"flex flex-wrap justify-content-start align-items-center gap-2\">\n      <ocx-data-layout-selection\n        [supportedViewLayouts]=\"supportedViewLayouts()\"\n        [layout]=\"layout()\"\n        (dataViewLayoutChange)=\"onDataViewLayoutChange($event)\"\n        (componentStateChanged)=\"dataLayoutComponentState$.next($event)\"\n      ></ocx-data-layout-selection>\n      @if (!disableFilterView()) {\n      <ocx-filter-view\n        [filters]=\"filters()\"\n        [columns]=\"columns()\"\n        [templates]=\"templates()\"\n        [displayMode]=\"filterViewDisplayMode()\"\n        [selectDisplayedChips]=\"selectDisplayedChips()\"\n        [chipStyleClass]=\"filterViewChipStyleClass()\"\n        [tableStyle]=\"filterViewTableStyle()\"\n        (filtered)=\"filtering($event)\"\n        (componentStateChanged)=\"filterViewComponentState$.next($event)\"\n      ></ocx-filter-view>\n      }\n    </div>\n\n    @if (_topCenter(); as topCenterTemplate) {\n    <div>\n      <ng-container [ngTemplateOutlet]=\"topCenterTemplate\"> </ng-container>\n    </div>\n    } @if (layout() !== 'table') {\n    <div class=\"flex align-items-center gap-2\">\n      <ocx-data-list-grid-sorting\n        [sortDirection]=\"sortDirection()\"\n        [sortField]=\"sortField()\"\n        [columns]=\"displayedColumns()\"\n        [sortStates]=\"sortStates()\"\n        (sortChange)=\"onSortChange($event)\"\n        (sortDirectionChange)=\"onSortDirectionChange($event)\"\n        (componentStateChanged)=\"dataListGridSortingComponentState$.next($event)\"\n      ></ocx-data-list-grid-sorting>\n    </div>\n    }\n\n    <div\n      [ngStyle]=\"layout() !== 'table' ? {\n      'position': 'absolute'\n    } : {}\"\n      class=\"flex flex-wrap justify-content-between align-items-center gap-2\"\n    >\n      @if (isColumnGroupSelectionComponentDefined() ?? true) {\n      <ocx-slot\n        [ngStyle]=\"layout() !== 'table' ? {'display' : 'none'}  : {}\"\n        *ocxIfPermission=\"searchConfigPermission(); elseTemplate: defaultColumnGroupSelectionComponent\"\n        name=\"{{columnGroupSlotName}}\"\n        [inputs]=\"{ placeholderKey: groupSelectionNoGroupSelectedKey(), defaultGroupKey: defaultGroupKey(), customGroupKey: customGroupKey(), columns: columns(), selectedGroupKey: selectedGroupKey(), layout: layout(), displayedColumnsIds: displayedColumnKeys() }\"\n        [outputs]=\"{ groupSelectionChanged: slotGroupSelectionChangeListener }\"\n      >\n        <ng-template #skeleton>\n          <div class=\"flex\">\n            <p-skeleton width=\"18rem\" height=\"3rem\"></p-skeleton>\n          </div>\n        </ng-template>\n      </ocx-slot>\n      } @else {\n      <ng-container [ngTemplateOutlet]=\"defaultColumnGroupSelectionComponent\"></ng-container>\n      } @if (layout() === 'table') {\n      <ocx-custom-group-column-selector\n        [columns]=\"columns()\"\n        [displayedColumns]=\"displayedColumns()\"\n        [customGroupKey]=\"customGroupKey()\"\n        (columnSelectionChanged)=\"onColumnSelectionChange($event)\"\n        [frozenActionColumn]=\"frozenActionColumn()\"\n        [actionColumnPosition]=\"actionColumnPosition()\"\n        (actionColumnConfigChanged)=\"onActionColumnConfigChange($event)\"\n        (componentStateChanged)=\"customGroupColumnSelectorComponentState$.next($event)\"\n      ></ocx-custom-group-column-selector>\n      }\n    </div>\n  </div>\n</div>\n<div class=\"p-3\" [ngClass]=\"contentStyleClass()\" id=\"interactiveDataViewContent\">\n  <ocx-data-view\n    [columns]=\"displayedColumns()\"\n    [sortStates]=\"sortStates()\"\n    [sortField]=\"sortField()\"\n    [filters]=\"filters()\"\n    [data]=\"data()\"\n    [sortDirection]=\"sortDirection()\"\n    [titleLineId]=\"titleLineId()\"\n    [subtitleLineIds]=\"subtitleLineIds()\"\n    [clientSideSorting]=\"clientSideSorting()\"\n    [clientSideFiltering]=\"clientSideFiltering()\"\n    [pageSizes]=\"pageSizes()\"\n    [pageSize]=\"pageSize()\"\n    [emptyResultsMessage]=\"emptyResultsMessage()\"\n    [layout]=\"layout()\"\n    [name]=\"name()\"\n    [deletePermission]=\"deletePermission()\"\n    [editPermission]=\"editPermission()\"\n    [viewPermission]=\"viewPermission()\"\n    [deleteActionEnabledField]=\"deleteActionEnabledField()\"\n    [deleteActionVisibleField]=\"deleteActionVisibleField()\"\n    [editActionEnabledField]=\"editActionEnabledField()\"\n    [editActionVisibleField]=\"editActionVisibleField()\"\n    [viewActionEnabledField]=\"viewActionEnabledField()\"\n    [viewActionVisibleField]=\"viewActionVisibleField()\"\n    [additionalActions]=\"additionalActions()\"\n    [listGridPaginator]=\"listGridPaginator()\"\n    [tablePaginator]=\"tablePaginator()\"\n    [page]=\"page()\"\n    (pageChanged)=\"onPageChange($event)\"\n    (pageSizeChanged)=\"onPageSizeChange($event)\"\n    [selectedRows]=\"selectedRows()\"\n    [frozenActionColumn]=\"frozenActionColumn()\"\n    [actionColumnPosition]=\"actionColumnPosition()\"\n    [stringTableCellTemplate]=\"_stringTableCell()\"\n    [numberTableCellTemplate]=\"_numberTableCell()\"\n    [dateTableCellTemplate]=\"_dateTableCell()\"\n    [relativeDateTableCellTemplate]=\"_relativeDateTableCell()\"\n    [tableCellTemplate]=\"_tableCell()\"\n    [translationKeyTableCellTemplate]=\"_translationKeyTableCell()\"\n    [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines()\"\n    [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines()\"\n    [listItemTemplate]=\"_listItem()\"\n    [listValueTemplate]=\"_listValue()\"\n    [translationKeyListValueTemplate]=\"_translationKeyListValue()\"\n    [numberListValueTemplate]=\"_numberListValue()\"\n    [relativeDateListValueTemplate]=\"_relativeDateListValue()\"\n    [stringListValueTemplate]=\"_stringListValue()\"\n    [dateListValueTemplate]=\"_dateListValue()\"\n    [gridItemTemplate]=\"_gridItem()\"\n    [tableFilterCellTemplate]=\"_tableFilterCell()\"\n    [dateTableFilterCellTemplate]=\"_dateTableFilterCell()\"\n    [numberTableFilterCellTemplate]=\"_numberTableFilterCell()\"\n    [stringTableFilterCellTemplate]=\"_stringTableFilterCell()\"\n    [relativeDateTableFilterCellTemplate]=\"_relativeDateTableFilterCell()\"\n    [translationKeyTableFilterCellTemplate]=\"_translationKeyTableFilterCell()\"\n    [columnHeaderTemplate]=\"_columnHeader()\"\n    (sorted)=\"sorting($event)\"\n    (filtered)=\"filtering($event)\"\n    [totalRecordsOnServer]=\"totalRecordsOnServer()\"\n    [currentPageShowingKey]=\"currentPageShowingKey()\"\n    [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey()\"\n    (componentStateChanged)=\"dataViewComponentState$.next($event)\"\n    [parentTemplates]=\"templates()\"\n    [tableAllowSelectAll]=\"tableAllowSelectAll()\"\n    [tableSelectionEnabledField]=\"tableSelectionEnabledField()\"\n    [expandable]=\"expandable()\"\n    [frozenExpandColumn]=\"frozenExpandColumn()\"\n    [(expandedRows)]=\"expandedRows\"\n    (rowExpanded)=\"rowExpanded.emit($event)\"\n    (rowCollapsed)=\"rowCollapsed.emit($event)\"\n  >\n  </ocx-data-view>\n</div>\n\n<ng-template #defaultColumnGroupSelectionComponent>\n  @if (layout() === 'table') {\n  <ocx-column-group-selection\n    [selectedGroupKey]=\"selectedGroupKey() ?? defaultGroupKey()\"\n    [columns]=\"columns()\"\n    [defaultGroupKey]=\"defaultGroupKey() !== customGroupKey() ? defaultGroupKey() : ''\"\n    [customGroupKey]=\"customGroupKey()\"\n    [placeholderKey]=\"groupSelectionNoGroupSelectedKey()\"\n    (groupSelectionChanged)=\"onColumnGroupSelectionChange($event)\"\n    (componentStateChanged)=\"columnGroupSelectionComponentState$.next($event)\"\n  ></ocx-column-group-selection>\n  }\n</ng-template>\n","import { Component, input } from '@angular/core'\n\nexport interface LifecycleStep {\n  id: string\n  title: string\n  details?: string\n}\n\n@Component({\n  standalone: false,\n  selector: 'ocx-lifecycle',\n  templateUrl: './lifecycle.component.html',\n})\nexport class LifecycleComponent {\n  steps = input<LifecycleStep[]>([])\n  activeStepId = input<string | undefined>(undefined)\n}\n","<p-timeline [value]=\"steps()\">\n  <ng-template pTemplate=\"marker\" let-step>\n    <span\n      class=\"p-timeline-event-marker\"\n      [ngClass]=\"activeStepId() && activeStepId() === step.id ? 'bg-primary' : ''\"\n    ></span>\n  </ng-template>\n  <ng-template pTemplate=\"content\" let-step>\n    <div class=\"pb-4 h-full\">\n      <div class=\"card h-full\" [ngClass]=\"activeStepId() && activeStepId() === step.id ? 'bg-primary' : ''\">\n        <p class=\"font-bold text-xl\" [ngClass]=\"step.details ? 'mb-2' : ''\">{{ step.title }}</p>\n        @if (step.details) {\n        <p [ngClass]=\"activeStepId() && activeStepId() === step.id ? '' : 'text-color-secondary'\">{{ step.details }}</p>\n        }\n      </div>\n    </div>\n  </ng-template>\n</p-timeline>\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core'\n\nconst STORAGE_KEY = 'onecx-consent'\nlet nextConsentComponentId = 0\n\ntype ConsentStorage = string[]\n\n/**\n * Payload emitted by {@link ConsentComponent.consentChanged}.\n *\n * Notes for GDPR/ePrivacy implementations:\n * - `hasConsent=true` indicates that the user has explicitly opted in for the given `url` (and optional `purpose`).\n * - `hasConsent=false` indicates that the previously stored consent was withdrawn via {@link ConsentComponent.resetConsent}.\n * - `purpose` is echoed back so consumers can handle multiple consent purposes (e.g. `maps`, `analytics`).\n */\nexport type ConsentChangedEvent = {\n  url: string\n  hasConsent: boolean\n  purpose?: string\n}\n\n@Component({\n  selector: 'ocx-consent',\n  standalone: false,\n  templateUrl: './consent.component.html',\n  styleUrls: ['./consent.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * UI component to gate projected content behind explicit user consent.\n *\n * Intended GDPR/ePrivacy usage (example: Leaflet + OpenStreetMap tiles):\n * - Put the map component (and any code that triggers network requests) inside the projected content.\n * - Do not instantiate/load third-party resources before consent, otherwise requests may be sent pre-consent.\n * - Provide sufficient information to the user (provider name, privacy policy) via the optional\n *   `[ocx-consent-info]` projection slot.\n * - Enable withdrawal with `[showWithdraw]=\"true\"` and handle `consentChanged` with `hasConsent=false`.\n *\n * Example:\n * ```html\n * <ocx-consent\n *   [url]=\"tileServerUrl\"\n *   purpose=\"maps\"\n *   [showWithdraw]=\"true\"\n *   (consentChanged)=\"onMapConsentChanged($event)\"\n * >\n *   <a ocx-consent-info href=\"/privacy\">Privacy policy</a>\n *\n *   <!-- Only render/init Leaflet after consent. -->\n *   <app-leaflet-map *ngIf=\"mapConsentGranted\" [tileUrl]=\"tileServerUrl\" />\n * </ocx-consent>\n * ```\n *\n * ```ts\n * import type { ConsentChangedEvent } from './consent.component'\n *\n * tileServerUrl = 'https://tile.openstreetmap.org'\n * mapConsentGranted = false\n *\n * onMapConsentChanged(e: ConsentChangedEvent) {\n *   if (e.purpose !== 'maps') return\n *   this.mapConsentGranted = e.hasConsent\n * }\n * ```\n *\n * Storage:\n * - Uses `localStorage` key `onecx-consent`.\n * - The stored JSON is a string array.\n * - Entries are either `<normalizedUrl>` (no purpose) or `<normalizedUrl>::<purpose>`.\n */\nexport class ConsentComponent {\n  protected readonly titleId = `ocx-consent-title-${++nextConsentComponentId}`\n  protected readonly messageId = `ocx-consent-message-${nextConsentComponentId}`\n\n  /**\n   * Target URL that the gated content will contact (e.g. the tile server URL).\n   * Used for display and for consent matching.\n   */\n  url = input.required<string>()\n\n  /**\n   * Optional purpose scope for consent (e.g. `maps`, `analytics`).\n   * When set, consent is stored and matched as `<url>::<purpose>`.\n   */\n  purpose = input<string | undefined>(undefined)\n\n  /** Translation key for the consent dialog title. */\n  titleKey = input<string>('OCX_CONSENT.TITLE')\n  /** Translation key for the consent dialog message (receives `{ url }`). */\n  messageKey = input<string>('OCX_CONSENT.MESSAGE')\n  /** Translation key for the agree button. */\n  agreeKey = input<string>('OCX_CONSENT.AGREE')\n  /** Translation key for the withdraw button. */\n  withdrawKey = input<string>('OCX_CONSENT.WITHDRAW')\n\n  /**\n   * When enabled, shows a withdraw button that removes the stored consent.\n   * This helps meeting the requirement that withdrawal should be as easy as opt-in.\n   */\n  showWithdraw = input<boolean>(true)\n\n  /**\n   * Emits whenever consent is granted or withdrawn.\n   * Consumers should only render/initialize third-party code after receiving `hasConsent=true`.\n   */\n  consentChanged = output<ConsentChangedEvent>()\n\n  localStorageUpdatedTimestamp = signal<number>(0)\n\n  protected normalizedUrl = computed(() => this.normalizeUrl(this.url()))\n\n  protected hasConsent = computed(() => {\n    // Manually call localStorageUpdatedTimestamp signal so that computation re-runs on each localStorage change\n    this.localStorageUpdatedTimestamp()\n    const normalized = this.normalizedUrl()\n    if (!normalized) return false\n\n    return this.hasStoredConsent(normalized)\n  })\n\n  protected giveConsent(): void {\n    const normalized = this.normalizedUrl()\n    if (!normalized) return\n\n    const current = this.readConsents()\n    const alreadyPresent = this.hasStoredConsent(normalized, current)\n    if (!alreadyPresent) {\n      const entry = this.toStorageEntry(normalized, this.purpose())\n      const updated = entry ? [...current, entry] : [...current]\n      this.writeConsents(updated)\n      this.consentChanged.emit({ url: normalized, hasConsent: true, purpose: this.purpose() })\n    }\n  }\n\n  protected resetConsent(): void {\n    const normalized = this.normalizedUrl()\n    if (!normalized) return\n\n    const purpose = this.purpose()\n    const updated = this.readConsents().filter((stored) => {\n      const parsed = this.fromStorageEntry(stored)\n      if (this.normalizeUrl(parsed.url) !== normalized) return true\n      if (purpose === undefined) return false\n      return parsed.purpose !== purpose\n    })\n\n    this.writeConsents(updated)\n    this.consentChanged.emit({ url: normalized, hasConsent: false, purpose })\n  }\n\n  private safeJsonParse(value: string): unknown {\n    try {\n      return JSON.parse(value)\n    } catch {\n      return undefined\n    }\n  }\n\n  private readConsents(): ConsentStorage {\n    const raw = localStorage.getItem(STORAGE_KEY)\n    if (!raw) return []\n\n    const parsed = this.safeJsonParse(raw)\n    return Array.isArray(parsed) && parsed.every((x) => typeof x === 'string') ? (parsed as string[]) : []\n  }\n\n  private writeConsents(value: ConsentStorage): void {\n    localStorage.setItem(STORAGE_KEY, JSON.stringify(value))\n    // Trigger re-computation of hasConsent\n    this.localStorageUpdatedTimestamp.set(Date.now())\n  }\n\n  private hasStoredConsent(normalizedUrl: string, storage: ConsentStorage = this.readConsents()): boolean {\n    const purpose = this.purpose()\n\n    return storage.some((stored) => {\n      const parsed = this.fromStorageEntry(stored)\n      if (this.normalizeUrl(parsed.url) !== normalizedUrl) return false\n      if (purpose === undefined) return true\n      return parsed.purpose === purpose\n    })\n  }\n\n  private toStorageEntry(url: string, purpose?: string): string {\n    const normalized = this.normalizeUrl(url)\n    if (!normalized) return ''\n    return purpose ? `${normalized}::${purpose}` : normalized\n  }\n\n  private fromStorageEntry(entry: string): { url: string; purpose?: string } {\n    const parts = entry.split('::')\n    const url = parts[0] ?? ''\n    const purpose = parts.length > 1 ? parts.slice(1).join('::') : undefined\n    return { url, purpose }\n  }\n\n  private normalizeUrl(raw: string): string {\n    const trimmed = raw.trim()\n    if (!trimmed) return ''\n\n    try {\n      const url = new URL(trimmed)\n      url.hash = ''\n      url.search = ''\n      url.hostname = url.hostname.toLowerCase()\n      return url.toString().replace(/\\/$/, '')\n    } catch {\n      return trimmed.replace(/\\/$/, '')\n    }\n  }\n}\n","@if (hasConsent()) {\n<ng-content />\n\n@if (showWithdraw()) {\n<div class=\"w-full flex justify-content-center mt-1\">\n  <a\n    (click)=\"resetConsent()\"\n    class=\"cursor-pointer text-primary underline\"\n    [attr.aria-label]=\"withdrawKey() | translate\"\n  >\n    {{ withdrawKey() | translate }}\n  </a>\n</div>\n} } @else {\n<section\n  class=\"flex w-full h-full align-items-center justify-content-center p-3 ocx-consent\"\n  [attr.aria-labelledby]=\"titleId\"\n  [attr.aria-describedby]=\"messageId\"\n>\n  <div class=\"flex flex-column gap-4 align-items-center justify-content-center text-center ocx-consent__content\">\n    <p class=\"m-0 text-xl font-semibold\" [id]=\"titleId\">{{ titleKey() | translate }}</p>\n    <p class=\"m-0\" [id]=\"messageId\" aria-live=\"polite\">{{ messageKey() | translate : { url: normalizedUrl() } }}</p>\n\n    <ng-content select=\"[ocx-consent-info]\" />\n\n    <button pButton pRipple type=\"button\" (click)=\"giveConsent()\" [attr.aria-label]=\"agreeKey() | translate\">\n      {{ agreeKey() | translate }}\n    </button>\n  </div>\n</section>\n}\n","import { Component, Input } from '@angular/core'\n\n@Component({\n  standalone: false,\n  templateUrl: `./dialog-message-content.component.html`,\n})\nexport class DialogMessageContentComponent {\n  @Input() message = 'message'\n  @Input() messageParameters: object = {}\n  @Input() icon = ''\n}\n","<div class=\"dialogMessageContent\">\n  <div>\n    @if (icon !== '') {\n      <i [class]=\"icon\" aria-hidden=\"true\"></i>\n    }\n    <span id=\"dialogMessage\">{{message | translate:messageParameters}}</span>\n  </div>\n</div>","import { Component, ComponentRef, OnDestroy, OnInit, ViewContainerRef, inject, viewChild } from '@angular/core'\nimport { Observable, Subscription, from, isObservable, of, startWith } from 'rxjs'\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog'\nimport { ButtonDialogData } from '../../../model/button-dialog'\nimport { DialogMessageContentComponent } from '../dialog-message-content/dialog-message-content.component'\nimport {\n  DialogButtonClicked,\n  DialogCustomButtonsDisabled,\n  DialogPrimaryButtonDisabled,\n  DialogResult,\n  DialogSecondaryButtonDisabled,\n  PortalDialogServiceData,\n} from '../../../services/portal-dialog.service'\n\n@Component({\n  standalone: false,\n  selector: 'ocx-dialog-content',\n  templateUrl: './dialog-content.component.html',\n  styleUrls: ['./dialog-content.component.scss'],\n})\nexport class DialogContentComponent implements OnInit, OnDestroy {\n  dynamicDialogConfig = inject(DynamicDialogConfig)\n  dynamicDialogRef = inject(DynamicDialogRef)\n\n  defaultDialogData: ButtonDialogData = {\n    component: DialogMessageContentComponent,\n    config: {},\n    componentData: {},\n  }\n\n  dialogHost = viewChild('container', { read: ViewContainerRef })\n\n  dialogData: ButtonDialogData = this.defaultDialogData\n  componentRef!: ComponentRef<any>\n\n  primaryButtonEnabledSub?: Subscription\n  secondaryButtonEnabledSub?: Subscription\n  customButtonEnabledSub?: Subscription\n  buttonClickedSub?: Subscription\n\n  ngOnInit(): void {\n    this.loadComponent()\n  }\n\n  ngOnDestroy(): void {\n    this.primaryButtonEnabledSub?.unsubscribe()\n    this.secondaryButtonEnabledSub?.unsubscribe()\n    this.customButtonEnabledSub?.unsubscribe()\n    this.buttonClickedSub?.unsubscribe()\n  }\n\n  loadComponent() {\n    if (this.dynamicDialogConfig.data) {\n      this.setUpDialogDataForDynamicConfig()\n    }\n  }\n\n  setUpDialogDataForDynamicConfig() {\n    const dynamicConfigData: ButtonDialogData = this.dynamicDialogConfig.data\n    const portalDialogServiceData: PortalDialogServiceData = this.dynamicDialogConfig.data.portalDialogServiceData\n    if (dynamicConfigData.component) {\n      this.dialogData.component = dynamicConfigData.component\n    }\n    if (dynamicConfigData.componentData) {\n      this.dialogData.componentData = dynamicConfigData.componentData\n    }\n\n    const viewContainerRef = this.dialogHost()!\n    viewContainerRef.clear()\n\n    this.buttonClickedSub = portalDialogServiceData.buttonClicked$.subscribe((state) => {\n      const component = this.componentRef.instance\n\n      const hasDialogResult = this.isDialogResultImplemented(component)\n      if (hasDialogResult) {\n        state.result = component.dialogResult\n      }\n      const closeResult = state\n      // check if component implements DialogButtonClicked\n      if (this.isDialogButtonClickedImplemented(component)) {\n        const buttonResult = component.ocxDialogButtonClicked(state)\n        // If undefined or void is returned, close dialog and return result\n        if (buttonResult === undefined) {\n          if (hasDialogResult) {\n            closeResult.result = component.dialogResult\n          }\n          return this.dynamicDialogRef.close(closeResult)\n        }\n        this.toObservable(buttonResult).subscribe((result: boolean) => {\n          if (result === true) {\n            if (hasDialogResult) {\n              closeResult.result = component.dialogResult\n            }\n            this.dynamicDialogRef.close(closeResult)\n          }\n        })\n      } else {\n        return this.dynamicDialogRef.close(closeResult)\n      }\n    })\n\n    if (this.dialogData.component) {\n      const componentRef = viewContainerRef.createComponent<any>(this.dialogData.component)\n\n      if (this.isDialogPrimaryButtonDisabledImplemented(componentRef.instance)) {\n        this.primaryButtonEnabledSub = componentRef.instance.primaryButtonEnabled\n          .pipe(startWith(false))\n          .subscribe((isEnabled) => {\n            portalDialogServiceData.primaryButtonEnabled$.next(isEnabled)\n          })\n      }\n      if (this.isDialogSecondaryButtonDisabledImplemented(componentRef.instance)) {\n        this.secondaryButtonEnabledSub = componentRef.instance.secondaryButtonEnabled\n          .pipe(startWith(false))\n          .subscribe((isEnabled) => {\n            portalDialogServiceData.secondaryButtonEnabled$.next(isEnabled)\n          })\n      }\n      if (this.isDialogCustomButtonDisabledImplemented(componentRef.instance)) {\n        this.customButtonEnabledSub = componentRef.instance.customButtonEnabled.subscribe((buttonEnabled) => {\n          portalDialogServiceData.customButtonEnabled$.next(buttonEnabled)\n        })\n      }\n\n      //populate container\n      Object.keys(this.dialogData.componentData).forEach((k) => {\n        componentRef.setInput(k, this.dialogData.componentData[k])\n      })\n      this.componentRef = componentRef\n    }\n  }\n\n  private toObservable(\n    ocxDialogButtonClickedResult: boolean | Observable<boolean> | Promise<boolean> | undefined\n  ): Observable<boolean> {\n    if (ocxDialogButtonClickedResult === undefined) {\n      return of(true)\n    }\n    if (isObservable(ocxDialogButtonClickedResult)) {\n      return ocxDialogButtonClickedResult\n    }\n    return from(Promise.resolve(ocxDialogButtonClickedResult))\n  }\n\n  private isDialogResultImplemented(component: any): component is DialogResult<unknown> {\n    return 'dialogResult' in component\n  }\n\n  private isDialogButtonClickedImplemented(component: any): component is DialogButtonClicked {\n    return typeof component.ocxDialogButtonClicked === 'function'\n  }\n\n  private isDialogPrimaryButtonDisabledImplemented(component: any): component is DialogPrimaryButtonDisabled {\n    return 'primaryButtonEnabled' in component\n  }\n\n  private isDialogSecondaryButtonDisabledImplemented(component: any): component is DialogSecondaryButtonDisabled {\n    return 'secondaryButtonEnabled' in component\n  }\n\n  private isDialogCustomButtonDisabledImplemented(component: any): component is DialogCustomButtonsDisabled {\n    return 'customButtonEnabled' in component\n  }\n}\n","<div class=\"buttonDialogScrollableContent\">\n  <ng-container #container></ng-container>\n  <ng-content></ng-content>\n</div>\n","import {\n  Component,\n  ElementRef,\n  OnInit,\n  effect,\n  inject,\n  input,\n  signal,\n  viewChild,\n  viewChildren,\n  output,\n} from '@angular/core'\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog'\nimport { BehaviorSubject, Observable, map, withLatestFrom } from 'rxjs'\nimport {\n  ButtonDialogButtonDetails,\n  ButtonDialogConfig,\n  ButtonDialogCustomButtonDetails,\n  ButtonDialogData,\n} from '../../../model/button-dialog'\nimport { DialogState, DialogStateButtonClicked, PortalDialogServiceData } from '../../../services/portal-dialog.service'\n\nexport const defaultPrimaryButtonDetails: ButtonDialogButtonDetails = {\n  key: 'OCX_BUTTON_DIALOG.CONFIRM',\n}\n\nexport const defaultSecondaryButtonDetails: ButtonDialogButtonDetails = {\n  key: 'OCX_BUTTON_DIALOG.CANCEL',\n}\n\nexport const defaultDialogData: ButtonDialogData = {\n  config: {\n    primaryButtonDetails: defaultPrimaryButtonDetails,\n    secondaryButtonIncluded: true,\n    secondaryButtonDetails: defaultSecondaryButtonDetails,\n  },\n  componentData: {},\n}\n\n@Component({\n  standalone: false,\n  selector: 'ocx-dialog-footer',\n  templateUrl: './dialog-footer.component.html',\n  styleUrls: ['./dialog-footer.component.scss'],\n})\nexport class DialogFooterComponent implements OnInit {\n  dynamicDialogConfig = inject(DynamicDialogConfig)\n  dynamicDialogRef = inject(DynamicDialogRef)\n\n  config = input<ButtonDialogConfig | undefined>(undefined)\n\n  dialogData = signal<ButtonDialogData>(defaultDialogData)\n  primaryButtonDisabled$: Observable<boolean | undefined> | undefined\n  secondaryButtonDisabled$: Observable<boolean | undefined> | undefined\n  customButtonsDisabled$: BehaviorSubject<Record<string, boolean>> = new BehaviorSubject({})\n  leftCustomButtons = signal<ButtonDialogCustomButtonDetails[]>([])\n  rightCustomButtons = signal<ButtonDialogCustomButtonDetails[]>([])\n\n  buttonClickedEmitter = output<DialogState<unknown>>()\n\n  primaryButton = viewChild<ElementRef>('primaryButton')\n  secondaryButton = viewChild<ElementRef>('secondaryButton')\n  customButtons = viewChildren<ElementRef>('customButton')\n\n  constructor() {\n    // Auto focus button effect for dynamic dialog\n    effect(() => {\n      const config = this.dynamicDialogConfig.data?.config\n\n      if (!config) return\n\n      if (config.autoFocusButton === 'primary') {\n        const primaryButton = this.primaryButton()\n        primaryButton?.nativeElement.focus()\n      } else if (config.autoFocusButton === 'secondary') {\n        const secondaryButton = this.secondaryButton()\n        secondaryButton?.nativeElement.focus()\n      } else if (config.autoFocusButton === 'custom') {\n        const button = this.customButtons().find((customButton) => {\n          return customButton.nativeElement.id === config.autoFocusButtonCustomId\n        })\n        setTimeout(() => {\n          button?.nativeElement.focus()\n        })\n      }\n    })\n\n    // config update effect for inline dialog\n    effect(() => {\n      // Run the effect only if config input is provided\n      const config = this.config()\n      if (!config) return\n\n      const dialogData = this.dialogData()\n      if (config) {\n        if (!!config.primaryButtonDetails && !!config.primaryButtonDetails?.key) {\n          dialogData.config.primaryButtonDetails = config.primaryButtonDetails\n        }\n        if (config.secondaryButtonIncluded) {\n          dialogData.config.secondaryButtonIncluded = config.secondaryButtonIncluded\n        }\n        if (!!config.secondaryButtonDetails && !!config.secondaryButtonDetails?.key) {\n          dialogData.config.secondaryButtonDetails = config.secondaryButtonDetails\n        }\n      }\n      dialogData.config.customButtons = config.customButtons\n      this.dialogData.set(dialogData)\n      this.setupCustomButtons(dialogData)\n    })\n  }\n\n  ngOnInit(): void {\n    this.loadComponent()\n  }\n\n  primaryButtonAction() {\n    return this.buttonAction('primary')\n  }\n\n  secondaryButtonAction() {\n    return this.buttonAction('secondary')\n  }\n\n  customButtonAction(button: ButtonDialogCustomButtonDetails) {\n    return this.buttonAction(`custom`, button.id)\n  }\n\n  resolveCustomButtonDisabled(customButtonsDisabled: Record<string, boolean>, buttonId: string) {\n    return buttonId in customButtonsDisabled ? customButtonsDisabled[buttonId] : true\n  }\n\n  loadComponent() {\n    if (this.dynamicDialogConfig.data) {\n      this.setUpDialogDataForDynamicConfig()\n    }\n  }\n\n  setUpDialogDataForDynamicConfig() {\n    const dynamicConfigData: ButtonDialogData = this.dynamicDialogConfig.data\n    const portalDialogServiceData: PortalDialogServiceData = this.dynamicDialogConfig.data.portalDialogServiceData\n    const dialogData = this.dialogData()\n    if (dynamicConfigData.config) {\n      const dialogConfig = dynamicConfigData.config\n      if (!!dialogConfig.primaryButtonDetails && !!dialogConfig.primaryButtonDetails.key) {\n        dialogData.config.primaryButtonDetails = dialogConfig.primaryButtonDetails\n      }\n      if (dialogConfig.secondaryButtonIncluded !== undefined) {\n        dialogData.config.secondaryButtonIncluded = dialogConfig.secondaryButtonIncluded\n      }\n      if (!!dialogConfig.secondaryButtonDetails && !!dialogConfig.secondaryButtonDetails.key) {\n        dialogData.config.secondaryButtonDetails = dialogConfig.secondaryButtonDetails\n      }\n    }\n\n    this.dialogData.set(dialogData)\n\n    const [leftButtons, rightButtons] = this.setupCustomButtons(dynamicConfigData)\n\n    this.primaryButtonDisabled$ = portalDialogServiceData.primaryButtonEnabled$.pipe(map((isEnabled) => !isEnabled))\n    this.secondaryButtonDisabled$ = portalDialogServiceData.secondaryButtonEnabled$.pipe(map((isEnabled) => !isEnabled))\n\n    const initCustomButtons: Record<string, boolean> = {}\n    rightButtons.concat(leftButtons).forEach((button) => {\n      initCustomButtons[button.id] = true\n    })\n    this.customButtonsDisabled$.next(initCustomButtons)\n    portalDialogServiceData.customButtonEnabled$\n      .pipe(\n        withLatestFrom(this.customButtonsDisabled$),\n        map(([buttonEnabled, customButtonsDisabled]) => {\n          if (customButtonsDisabled[buttonEnabled.id] !== !buttonEnabled.enabled) {\n            customButtonsDisabled[buttonEnabled.id] = !buttonEnabled.enabled\n          }\n          return customButtonsDisabled\n        })\n      )\n      .subscribe(this.customButtonsDisabled$)\n\n    this.buttonClickedEmitter.subscribe((dialogState) => {\n      portalDialogServiceData.buttonClicked$.next(dialogState)\n    })\n  }\n\n  private buttonAction(resultButtonClickedName: DialogStateButtonClicked, buttonId?: string) {\n    const state: DialogState<unknown> = {\n      button: resultButtonClickedName,\n      result: undefined,\n      id: buttonId,\n    }\n\n    this.buttonClickedEmitter?.emit(state)\n  }\n\n  private setupCustomButtons(dialogData: ButtonDialogData) {\n    const leftButtons = dialogData.config.customButtons?.filter((button) => button.alignment === 'left') ?? []\n    const rightButtons = dialogData.config.customButtons?.filter((button) => button.alignment === 'right') ?? []\n    this.leftCustomButtons.set(leftButtons)\n    this.rightCustomButtons.set(rightButtons)\n\n    return [leftButtons, rightButtons]\n  }\n}\n","<div class=\"w-full flex-row justify-content-end flex flex-wrap gap-2\">\n  @for (button of leftCustomButtons(); track button; let i = $index) {\n  <div [ngStyle]=\"{'margin-right': (i === leftCustomButtons().length - 1) ? 'auto' : 0}\">\n    <ng-container *ngTemplateOutlet=\"customButtonTemplate; context: {button: button}\"> </ng-container>\n  </div>\n  } @for (button of rightCustomButtons(); track button) {\n  <div>\n    <ng-container *ngTemplateOutlet=\"customButtonTemplate; context: {button: button}\"> </ng-container>\n  </div>\n  }\n  <div>\n    @if (dialogData().config.secondaryButtonIncluded) {\n    <button\n      #secondaryButton\n      id=\"{{dialogData().config.secondaryButtonDetails?.id ?? 'buttonDialogSecondaryButton'}}\"\n      pButton\n      [icon]=\"dialogData().config.secondaryButtonDetails!.icon ?? ''\"\n      (click)=\"secondaryButtonAction()\"\n      [label]=\"dialogData().config.secondaryButtonDetails!.key | translate:dialogData().config.secondaryButtonDetails?.parameters\"\n      [disabled]=\"secondaryButtonDisabled$ | async\"\n      [ocxTooltip]=\"dialogData().config.secondaryButtonDetails!.tooltipKey ? (dialogData().config.secondaryButtonDetails!.tooltipKey | translate) : null\"\n      [tooltipPosition]=\"dialogData().config.secondaryButtonDetails?.tooltipPosition ?? ''\"\n      [attr.aria-label]=\"dialogData().config.secondaryButtonDetails!.key | translate:dialogData().config.secondaryButtonDetails?.parameters\"\n    ></button>\n    }\n  </div>\n  <div>\n    <button\n      #primaryButton\n      id=\"{{dialogData().config.primaryButtonDetails?.id ?? 'buttonDialogPrimaryButton'}}\"\n      pButton\n      autofocus\n      [icon]=\"dialogData().config.primaryButtonDetails!.icon ?? ''\"\n      (click)=\"primaryButtonAction()\"\n      [label]=\"dialogData().config.primaryButtonDetails!.key | translate:dialogData().config.primaryButtonDetails?.parameters\"\n      [disabled]=\"primaryButtonDisabled$ | async\"\n      [ocxTooltip]=\"dialogData().config.primaryButtonDetails!.tooltipKey ? (dialogData().config.primaryButtonDetails!.tooltipKey | translate) : null\"\n      [tooltipPosition]=\"dialogData().config.primaryButtonDetails?.tooltipPosition ?? ''\"\n      [attr.aria-label]=\"dialogData().config.primaryButtonDetails!.key | translate:dialogData().config.primaryButtonDetails?.parameters\"\n    ></button>\n  </div>\n</div>\n\n<ng-template #customButtonTemplate let-button=\"button\">\n  <button\n    #customButton\n    id=\"{{button.id}}\"\n    pButton\n    [icon]=\"button.icon !== undefined ? button.icon : ''\"\n    (click)=\"customButtonAction(button)\"\n    [label]=\"button.key | translate:button.parameters\"\n    [disabled]=\"resolveCustomButtonDisabled((customButtonsDisabled$ | async) ?? {}, button.id)\"\n    [ocxTooltip]=\"button.tooltipKey ? (button.tooltipKey | translate) : null\"\n    [tooltipPosition]=\"button.tooltipPosition ?? ''\"\n    [attr.aria-label]=\"button.key | translate:button.parameters\"\n  ></button>\n</ng-template>\n","import { Component, input, output } from '@angular/core'\nimport { ButtonDialogConfig } from '../../../model/button-dialog'\nimport { DialogState } from '../../../services/portal-dialog.service'\n\n@Component({\n  standalone: false,\n  selector: 'ocx-dialog-inline',\n  templateUrl: './dialog-inline.component.html',\n  styleUrls: ['./dialog-inline.component.scss'],\n})\nexport class DialogInlineComponent {\n  config = input<ButtonDialogConfig>({})\n\n  resultEmitter = output<unknown>()\n\n  buttonClicked(event: DialogState<unknown>) {\n    this.resultEmitter.emit(event.button)\n  }\n}\n","<div>\n  <ocx-dialog-content>\n    <ng-content></ng-content>\n  </ocx-dialog-content>\n  <ocx-dialog-footer [config]=\"config()\" (buttonClickedEmitter)=\"buttonClicked($event)\"></ocx-dialog-footer>\n</div>\n","import { Component, effect, inject, model, signal } from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\n\n@Component({\n  standalone: false,\n  selector: 'ocx-error',\n  templateUrl: './global-error.component.html',\n  styleUrls: ['./global-error.component.scss'],\n})\nexport class GlobalErrorComponent {\n  private router = inject(Router)\n  private route = inject(ActivatedRoute)\n\n  errCode = model<string | undefined>(undefined)\n  backUrl = signal<string | undefined>(undefined)\n\n  constructor() {\n    effect(() => {\n      const errCode = this.errCode()\n      if (errCode) {\n        this.errCode.set(errCode)\n      }\n    })\n    this.errCode.set(this.route.snapshot.queryParamMap.get('err') || 'E1001_FAILED_START')\n    this.backUrl.set(this.route.snapshot.queryParamMap.get('return') || '/')\n  }\n\n  onGoBack() {\n    const backUrl = this.backUrl()\n    if (backUrl) {\n      this.router.navigateByUrl(backUrl)\n    }\n  }\n\n  reload() {\n    window.location.reload()\n  }\n}\n","<div class=\"pages-body error-page flex flex-column\">\n  <div class=\"align-self-center mt-auto mb-auto\">\n    <div class=\"pages-panel card flex flex-column\">\n      <div class=\"pages-header px-3 py-1\">\n        <h2>ERROR</h2>\n      </div>\n      <div class=\"card mt-3 px-6\">\n        <img src=\"assets/images/error.png\" alt=\"\" />\n      </div>\n      <div class=\"pages-detail pb-6\">{{ errCode() }}</div>\n      <button pButton pRipple type=\"button\" label=\"Try Again\" (click)=\"reload()\" class=\"p-button-text\"></button>\n    </div>\n  </div>\n</div>\n","import { Injectable, OnDestroy, Type, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { DialogService, DynamicDialog } from 'primeng/dynamicdialog'\nimport { Observable, Subject, filter, mergeMap, of, tap } from 'rxjs'\n\nimport { ButtonDialogButtonDetails, ButtonDialogCustomButtonDetails, ButtonDialogData } from '../model/button-dialog'\nimport { NavigationStart, Router } from '@angular/router'\nimport {\n  SKIP_STYLE_SCOPING,\n  dataNoPortalLayoutStylesKey,\n  dataStyleIdKey,\n  getScopeIdentifier,\n} from '@onecx/angular-utils'\nimport { REMOTE_COMPONENT_CONFIG } from '@onecx/angular-remote-components'\nimport { CurrentLocationTopicPayload, EventsTopic, EventType, TopicEventType } from '@onecx/integration-interface'\nimport { Capability, ShellCapabilityService, AppStateService } from '@onecx/angular-integration-interface'\nimport { PrimeIcon } from '../utils/primeicon.utils'\nimport { DialogContentComponent } from '../components/dialog/dialog-content/dialog-content.component'\nimport { DialogFooterComponent } from '../components/dialog/dialog-footer/dialog-footer.component'\nimport { DialogMessageContentComponent } from '../components/dialog/dialog-message-content/dialog-message-content.component'\nimport { TranslationKey, TranslationKeyWithParameters } from '../model/translation.model'\nimport { createLogger } from '../utils/logger.utils'\n\n/**\n * Object containing message of type {@link TranslationKey} and icon to be displayed along the message.\n *\n * @example\n * DialogMessage with TranslationKey will display 'text with parameter value = hello' and question mark icon\n *\n * ## Assume such translation is in the translation file\n * ```\n * const translations = {\n *   MY_KEY = 'text with parameter value = {{value}}',\n * }\n * ```\n *\n * ## DialogMessage declaration\n * ```\n * const myDialogMessage: DialogMessage = {\n *   message: {\n *     key: 'MY_KEY',\n *     parameters: {\n *       value = 'hello',\n *     },\n *   },\n *   icon: PrimeIcons.QUESTION\n * }\n * ```\n */\ntype DialogMessage = { message: TranslationKey; icon: PrimeIcon }\n\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use if you want {@link PortalDialogService.openDialog} to return state of displayed component's current dialogResult value alongside the clicked button.\n *\n * @example\n * Display component implementing DialogResult<string> and react on the returned value\n *\n * ## Component declaration\n * ```\n * ⁣@Component({template: `<div>\n * <input (change)=\"onInputChange($event)\">\n * </div>`})\n * export class MyInputComponent implements DialogResult<string> {\n *   dialogResult: string = ''\n *\n *   onInputChange(event: any) {\n *     this.dialogResult = event.target.value\n *   }\n * }\n * ```\n *\n * ## PortalDialogService call\n * ```\n * portalDialogService.openDialog(title, { type: MyInputComponent }, primaryButton, ...).subscribe((result: DialogState<string>) => {\n * // result.value === MyInputComponent.dialogResult (during button click)\n * // behavior when dialog closes\n * })\n * ```\n *\n */\nexport interface DialogResult<T> {\n  dialogResult: T\n}\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use to control the state of the primary button (disabled or enabled). Whenever your component wants to disable/enable primary button it should emit boolean equal to whether primary button should be enabled.\n *\n * If you implement this interface then primary button will be disabled until the emitter emits true\n */\nexport interface DialogPrimaryButtonDisabled {\n  primaryButtonEnabled: Subject<boolean>\n}\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use to control the state of the secondary button (disabled or enabled). Whenever your component wants to disable/enable secondary button it should emit boolean equal to whether secondary button should be enabled.\n *\n * If you implement this interface then secondary button will be disabled until the emitter emits true\n */\nexport interface DialogSecondaryButtonDisabled {\n  secondaryButtonEnabled: Subject<boolean>\n}\n\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use to control the state of custom buttons (disabled or enabled). Whenever your component wants to disable/enable any custom button it should emit an object indicating which button should be disabled/enabled. This object should contain id property (string) related to previously defined button and enabled property (boolean) equal to whether custom button should be enabled.\n *\n * If you implement this interface then all custom buttons will be disabled until the emitter emits true\n */\nexport interface DialogCustomButtonsDisabled {\n  customButtonEnabled: Subject<{ id: string; enabled: boolean }>\n}\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use to add behavior on button clicks. {@link DialogButtonClicked.ocxDialogButtonClicked} method will be called everytime any button is clicked and should return boolean value (or Observable<boolean> or Promise<boolean>) equal to whether dialog should be closed or not.\n *\n * {@link DialogButtonClicked.ocxDialogButtonClicked} will recieve object containing component's state captured on button click. It will have button property with value 'primary' or 'secondary' which determines which button was clicked.\n *\n * It will also have result property which by default will be undefined, however if you want to add any properties to the state please combine this interface with {@link DialogResult}. That way result will be equal to component's dialogResult property captured on button click.\n *\n * @example\n * Display component implementing DialogResult<string> and DialogButtonClicked which should not close dialog on clear click but should close when send clicked and api call was sucessful\n *\n * ## Component declaration\n * ```\n * ⁣@Component({template: `<div>\n * <input (change)=\"onInputChange($event)\">\n * </div>`})\n * export class MyInputComponent implements DialogResult<string>, DialogButtonClicked {\n *   dialogResult: string = ''\n *\n *   onInputChange(event: any) {\n *     this.dialogResult = event.target.value\n *   }\n *\n *   ocxDialogButtonClicked(state: DialogState<string>) {\n *     // here you can do any operations you desire\n *     // such as form validation\n *     // api calls and so on\n *     if (state.button === 'primary') {\n *       // send form data to server\n *       this.apiService.postInput(state.result, ...).pipe(\n *         // map response to boolean meaning if call was successfull\n *       )\n *       return true // if dialog should be closed return true\n *     } else {\n *       // clear input\n *       return false // don't want to close the dialog, only to clear it\n *     }\n *   }\n * }\n * ```\n *\n * ## PortalDialogService call\n * ```\n * portalDialogService.openDialog(title, { type: MyInputComponent }, \"Send\", \"Clear\").subscribe((result: DialogState<string>) => {\n * // behavior to be fired when dialog closes\n * })\n * ```\n */\nexport interface DialogButtonClicked<T = unknown> {\n  ocxDialogButtonClicked(state: DialogState<T>): Observable<boolean> | Promise<boolean> | boolean | undefined | void\n}\n\n/**\n * Object containing component type to be displayed and inputs to populate the component.\n *\n * @example\n *\n * ```\n * ⁣@Component({template: `<h1>{{content}}</h1>`})\n * export class MyComponent {\n *   ⁣@Input() content: string = ''\n * }\n * const myComponent = {\n *   type: MyComponent,\n *   inputs: {\n *     content: 'My header content',\n *   },\n * }\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint\ntype Component<T extends unknown> = unknown extends T\n  ? {\n      type: Type<any>\n      inputs?: Record<string, unknown>\n    }\n  : {\n      type: Type<DialogResult<T>>\n      inputs?: Record<string, unknown>\n    }\n\nexport type DialogButton = 'primary' | 'secondary' | 'custom'\nexport type DialogStateButtonClicked = 'primary' | 'secondary' | 'custom'\nexport type DialogInitiator = 'initiator' | 'default'\n/**\n * Object containing information about clicked button ('primary' or 'secondary') and displayed component state captured on button click (only if component implements {@link DialogResult} interface)\n */\nexport type DialogState<T> = {\n  button: DialogStateButtonClicked\n  result: T | undefined\n  id?: string\n}\n\nexport type PortalDialogConfig = {\n  showXButton?: boolean\n  customButtons?: ButtonDialogCustomButtonDetails[]\n  autoFocusButton?: DialogButton\n  autoFocusButtonCustomId?: string\n  ariaLabelledBy?: string\n  width?: string\n  height?: string\n  closeOnEscape?: boolean\n  focusOnShow?: boolean\n  focusTrap?: boolean\n  baseZIndex?: number\n  autoZIndex?: boolean\n  dismissableMask?: boolean\n  showHeader?: boolean\n  modal?: boolean\n  resizable?: boolean\n  draggable?: boolean\n  keepInViewport?: boolean\n  minX?: number\n  minY?: number\n  maximizable?: boolean\n  maximizeIcon?: string\n  minimizeIcon?: string\n  position?: string\n  closeAriaLabel?: string\n  closable?: boolean\n  initiatorRef?: HTMLElement\n  onCloseFocus?: DialogInitiator\n}\n\nexport interface PortalDialogServiceData {\n  primaryButtonEnabled$: Subject<boolean>\n  secondaryButtonEnabled$: Subject<boolean>\n  customButtonEnabled$: Subject<{ id: string; enabled: boolean }>\n  buttonClicked$: Subject<DialogState<unknown>>\n}\n\n@Injectable({ providedIn: 'any' })\nexport class PortalDialogService implements OnDestroy {\n  private dialogService = inject(DialogService)\n  private translateService = inject(TranslateService)\n  private router = inject(Router)\n  private readonly logger = createLogger('PortalDialogService')\n  private _eventsTopic$: EventsTopic | undefined\n  get eventsTopic() {\n    this._eventsTopic$ ??= new EventsTopic()\n    return this._eventsTopic$\n  }\n  set eventsTopic(source: EventsTopic) {\n    this._eventsTopic$ = source\n  }\n  private skipStyleScoping = inject(SKIP_STYLE_SCOPING, { optional: true })\n  private remoteComponentConfig = inject(REMOTE_COMPONENT_CONFIG, { optional: true })\n  private appStateService = inject(AppStateService)\n  private capabilityService = inject(ShellCapabilityService)\n\n  constructor() {\n    this.router.events.subscribe((event) => {\n      if (event instanceof NavigationStart) {\n        this.cleanupAndCloseDialog()\n      }\n    })\n    let observable: Observable<TopicEventType | CurrentLocationTopicPayload> =\n      this.appStateService.currentLocation$.asObservable()\n    if (!this.capabilityService.hasCapability(Capability.CURRENT_LOCATION_TOPIC)) {\n      observable = this.eventsTopic.pipe(filter((e) => e.type === EventType.NAVIGATED))\n    }\n    observable.subscribe(() => {\n      this.cleanupAndCloseDialog()\n    })\n  }\n\n  ngOnDestroy(): void {\n    this.cleanupAndCloseDialog()\n    this._eventsTopic$?.destroy()\n  }\n\n  /**\n   * Opens dialog with a component or message to display and one or two buttons. This method allows you to customize the dialog using parameters and by implementic specific interfaces via component to be displayed. The dialog is only shown if if you subscribe to this function.\n   *\n   * Displaying component inisde the dialog can be achieved by providing the component class with optional inputs. By default the component will be shown without any interaction with the dialog, however you can implement the following interfaces by your component class to allow for some interactions:\n   * - {@link DialogResult} - dialog state will contain dialogResult property\n   *\n   * - {@link DialogButtonClicked} - on button click ocxDialogButtonClicked function will be called with dialog state as a parameter. You should return true if you want dialog to be close or false if not and add any operations on your component.\n   *\n   * - {@link DialogPrimaryButtonDisabled} - dialog will use the Subject to determine if the primary button should be disabled\n   *\n   * - {@link DialogSecondaryButtonDisabled} - dialog will use the Subject to determine if the secondary button should be disabled\n   *\n   * - {@link DialogCustomButtonsDisabled} - dialog will use the Subject to determine if the custom buttons should be disabled\n   *\n   * @param title Translation key for dialog title\n   * @param componentOrMessage Either a component or a translation key of a message with optional parameters and icon to be displayed next to the message\n   * @param primaryButtonTranslationKeyOrDetails Translation key with optional parameters and icon to be displayed next to the text of the button\n   * @param secondaryButtonTranslationKeyOrDetails Translation key with optional parameters and icon to be displayed next to the text of the button\n   * @param extras Configuration object allowing for customization of the dialog behavior and visual aspects\n   * @returns Observable containing dialog state on close\n   *\n   *\n   * @example\n   * Display dialog with message and two buttons using translation keys\n   *\n   * ```\n   * // assume 'TITLE_KEY', 'WELCOME_MESSAGE', 'OK_BUTTON' and 'REFRESH_BUTTON' are translation keys\n   * this.portalDialogService.openDialog('TITLE_KEY', 'WELCOME_MESSAGE', 'OK_BUTTON', 'REFRESH_BUTTON').subscribe((stateOnClose) => {\n   *   // operations when dialog has been closed\n   * })\n   * ```\n   *\n   * @example\n   * Display dialog message with icon and single button\n   *\n   * ```\n   * // Welcome message with question mark icon\n   * const dialogMessage = {\n   *   key: 'WELCOME_MESSAGE',\n   *   icon: PrimeIcons.QUESTION\n   * }\n   * this.portalDialogService.openDialog('TITLE_KEY', dialogMessage, 'OK_BUTTON').subscribe((stateOnClose) => {\n   *   // operations when dialog has been closed\n   * })\n   * ```\n   *\n   * @example\n   * Display dialog message with two customized buttons\n   *\n   * ```\n   * // Ok button with check icon\n   * const primaryButton = {\n   *   key: 'OK_BUTTON',\n   *   icon: PrimeIcons.CHECK\n   *   tooltipKey: 'OK_TOOLTIP',\n   *   tooltipPosition: 'bottom'\n   * }\n   *\n   * // Refresh button with refresh icon\n   * const secondaryButton = {\n   *   key: 'REFRESH_BUTTON',\n   *   icon: PrimeIcons.REFRESH\n   *   tooltipKey: 'REFRESH_TOOLTIP',\n   *   tooltipPosition: 'right'\n   * }\n   *\n   * this.portalDialogService.openDialog('TITLE_KEY', 'WELCOME_MESSAGE', primaryButton, secondaryButton).subscribe((stateOnClose) => {\n   *   // operations when dialog has been closed\n   * })\n   * ```\n   *\n   * @example\n   * Display dialog message without X button in top right corner\n   *\n   * ```\n   * this.portalDialogService.openDialog('TITLE_KEY', 'WELCOME_MESSAGE', 'OK_BUTTON', 'REFRESH_BUTTON', false).subscribe((stateOnClose) => {\n   *   // operations when dialog has been closed\n   * })\n   * ```\n   *\n   * @example\n   * React on dialog closing\n   *\n   * ```\n   * this.portalDialogService.openDialog('TITLE_KEY', 'WELCOME_MESSAGE', 'OK_BUTTON', 'REFRESH_BUTTON').subscribe((stateOnClose) => {\n   *   // operations when dialog has been closed\n   * })\n   * ```\n   *\n   * @example\n   * Display dialog with component\n   *\n   * ## Component declaration\n   * ```\n   * ⁣@Component({template: `<div>\n   * <h1>{{header | translate}}</h1>\n   * <input (change)=\"onInputChange($event)\">\n   * </div>`})\n   * export class MyInputComponent implements DialogResult<string>,  DialogButtonClicked, DialogPrimaryButtonDisabled, DialogSecondaryButtonDisabled {\n   *   ⁣@Input() header: string = ''\n   *   // change value to manipulate component state visible by dialog\n   *   dialogResult: string = ''\n   *   // emit true/false to disable primary button\n   *   ⁣@Output() primaryButtonEnabled: Subject<boolean> = new Subject()\n   *   // emit true/false to disable secondary button\n   *   ⁣@Output() secondaryButtonEnabled: Subject<boolean> = new Subject()\n   *\n   *   // implement operations to be done on button clicks and return if the dialog should be closed\n   *   ocxDialogButtonClicked(state: DialogState<string>) {\n   *     return true\n   *   }\n   *\n   *   onInputChange(event: any) {\n   *     this.dialogResult = event.target.value\n   *   }\n   * }\n   * ```\n   *\n   * ## PortalDialogService call\n   * ```\n   * const myComponent = {\n   *   type: MyInputComponent,\n   *   inputs: {\n   *     header: 'DIALOG_HEADER'\n   *   }\n   * }\n   * this.portalDialogService.openDialog('TITLE_KEY', myComponent, 'OK_BUTTON', 'REFRESH_BUTTON').subscribe((stateOnClose) => {\n   *   // operations when dialog has been closed\n   * })\n   * ```\n   *\n   * @example\n   * Display dialog with component without passing inputs\n   *\n   * ## PortalDialogService call\n   * ```\n   * this.portalDialogService.openDialog('TITLE_KEY', MyInputComponent, 'OK_BUTTON', 'REFRESH_BUTTON').subscribe((stateOnClose) => {\n   *   // operations when dialog has been closed\n   * })\n   * ```\n   */\n  openDialog<T>(\n    title: TranslationKey | null,\n    componentOrMessage: Type<any> | Type<DialogResult<T>> | Component<T> | TranslationKey | DialogMessage,\n    primaryButtonTranslationKeyOrDetails: TranslationKey | ButtonDialogButtonDetails,\n    secondaryButtonTranslationKeyOrDetails?: TranslationKey | ButtonDialogButtonDetails,\n    extras?: PortalDialogConfig\n  ): Observable<DialogState<T> | null>\n  openDialog<T>(\n    title: TranslationKey | null,\n    componentOrMessage: Type<any> | Type<DialogResult<T>> | Component<T> | TranslationKey | DialogMessage,\n    primaryButtonTranslationKeyOrDetails: TranslationKey | ButtonDialogButtonDetails,\n    secondaryButtonTranslationKeyOrDetails?: TranslationKey | ButtonDialogButtonDetails,\n    extrasOrShowXButton: PortalDialogConfig | boolean = {}\n  ): Observable<DialogState<T> | null> {\n    const isObject = typeof extrasOrShowXButton === 'object'\n    const dialogOptions: PortalDialogConfig = isObject\n      ? extrasOrShowXButton\n      : { showXButton: extrasOrShowXButton || false }\n    const translateParams = this.prepareTitleForTranslation(title)\n\n    const componentToRender: Component<any> = this.getComponentToRender(componentOrMessage)\n    const dynamicDialogDataConfig: ButtonDialogData = {\n      component: componentToRender.type as Type<any>,\n      config: {\n        primaryButtonDetails: this.buttonDetailsOrTranslationKey(primaryButtonTranslationKeyOrDetails),\n        secondaryButtonIncluded: secondaryButtonTranslationKeyOrDetails !== undefined,\n        secondaryButtonDetails: this.buttonDetailsOrTranslationKey(secondaryButtonTranslationKeyOrDetails),\n        customButtons: dialogOptions.customButtons?.map(\n          (button) => this.buttonDetailsOrTranslationKey(button) as ButtonDialogCustomButtonDetails\n        ),\n        autoFocusButton: dialogOptions.autoFocusButton,\n        autoFocusButtonCustomId: dialogOptions.autoFocusButtonCustomId,\n      },\n      componentData: componentToRender.inputs,\n    }\n\n    return this.translateService.get(translateParams.key, translateParams.parameters).pipe(\n      mergeMap((dialogTitle) => {\n        const dialogRef = this.dialogService.open(DialogContentComponent, {\n          header: dialogTitle,\n          data: {\n            ...dynamicDialogDataConfig,\n            portalDialogServiceData: {\n              primaryButtonEnabled$: new Subject<boolean>(),\n              secondaryButtonEnabled$: new Subject<boolean>(),\n              customButtonEnabled$: new Subject<{ id: string; enabled: boolean }>(),\n              buttonClicked$: new Subject<DialogState<unknown>>(),\n            } satisfies PortalDialogServiceData,\n          },\n          closable: this.getShowXStatus(secondaryButtonTranslationKeyOrDetails !== undefined, dialogOptions),\n          modal: true,\n          ...dialogOptions,\n          focusOnShow: false,\n          appendTo: 'body', // Important for the function findBodyChild\n          duplicate: true, // Since dialog always opens DialogContentComponent, duplicates must be always allowed\n          templates: {\n            footer: DialogFooterComponent,\n          },\n        })\n        if (!dialogRef) {\n          this.logger.error('Dialog could not be opened, dialog creation failed.')\n          return of(null)\n        }\n        const dialogComponent = this.dialogService.getInstance(dialogRef)\n        if (dialogComponent) {\n          this.setScopeIdentifier(dialogComponent)\n        } else {\n          this.logger.warn(\n            'Dialog component instance could not be found after creation. The displayed dialog may not function as expected.'\n          )\n        }\n        return dialogRef.onClose.pipe(\n          tap(() => {\n            if (isObject) {\n              this.setFocusOnInitiator(extrasOrShowXButton)\n            }\n          })\n        )\n      })\n    )\n  }\n\n  private setFocusOnInitiator(dialogOptions: PortalDialogConfig) {\n    const hasOnCloseFocus = Object.hasOwn(dialogOptions, 'onCloseFocus') && dialogOptions.onCloseFocus !== 'initiator'\n    if (hasOnCloseFocus) return\n\n    const initiator = dialogOptions.initiatorRef\n    if ( !initiator || typeof document === 'undefined' || !document.contains(initiator) || dialogOptions.onCloseFocus !== 'initiator')\n      return\n    else {\n      initiator.focus()\n    }\n  }\n\n  private cleanupAndCloseDialog() {\n    if (this.dialogService.dialogComponentRefMap.size > 0) {\n      this.dialogService.dialogComponentRefMap.forEach((_, dialogRef) => {\n        const dialogComponent = this.dialogService.getInstance(dialogRef)\n        if (!dialogComponent) {\n          this.logger.warn(\n            'Dialog component instance could not be found during cleanup. The displayed dialog may not function as expected.'\n          )\n          return\n        }\n        dialogRef.close()\n        this.removeDialogFromHtml(dialogComponent)\n      })\n    }\n  }\n\n  private removeDialogFromHtml(dialogComponent: DynamicDialog) {\n    const bodyChild = this.findDialogComponentBodyChild(dialogComponent)\n    if (bodyChild) {\n      document.body.removeChild(bodyChild)\n    }\n  }\n\n  private setScopeIdentifier(dialogComponent: DynamicDialog) {\n    getScopeIdentifier(\n      this.appStateService,\n      this.skipStyleScoping ?? undefined,\n      this.remoteComponentConfig ?? undefined\n    ).then((scopeId) => {\n      const bodyChild = this.findDialogComponentBodyChild(dialogComponent)\n      if (bodyChild) {\n        bodyChild.dataset[dataStyleIdKey] = scopeId\n        bodyChild.dataset[dataNoPortalLayoutStylesKey] = ''\n      }\n    })\n  }\n\n  private findDialogComponentBodyChild(dialogComponent: DynamicDialog) {\n    const element = dialogComponent.el.nativeElement\n    if (!element) return\n    return this.findBodyChild(element)\n  }\n\n  private findBodyChild(element: HTMLElement) {\n    let currentNode = element\n    while (currentNode.parentElement && currentNode.parentElement != document.body) {\n      currentNode = currentNode.parentElement\n    }\n    return currentNode.parentElement === document.body ? currentNode : undefined\n  }\n\n  private prepareTitleForTranslation(title: TranslationKey | null): TranslationKeyWithParameters {\n    if (!title) return { key: '', parameters: {} }\n    if (this.isString(title)) return { key: title, parameters: {} }\n    return title\n  }\n\n  private buttonDetailsOrTranslationKey(\n    buttonTranslationKeyOrDetails:\n      | TranslationKey\n      | ButtonDialogButtonDetails\n      | ButtonDialogCustomButtonDetails\n      | undefined\n  ): ButtonDialogButtonDetails | ButtonDialogCustomButtonDetails | undefined {\n    if (buttonTranslationKeyOrDetails === undefined) {\n      return undefined\n    }\n\n    let buttonDetails\n\n    if (this.isString(buttonTranslationKeyOrDetails)) {\n      buttonDetails = {\n        key: buttonTranslationKeyOrDetails,\n      }\n    } else {\n      buttonDetails = buttonTranslationKeyOrDetails\n    }\n\n    return buttonDetails\n  }\n\n  private getComponentToRender(\n    componentOrMessage: Type<any> | Type<DialogResult<any>> | Component<any> | TranslationKey | DialogMessage\n  ): Component<any> {\n    if (this.isTranslationKey(componentOrMessage)) {\n      return {\n        type: DialogMessageContentComponent,\n        inputs: {\n          message: this.isString(componentOrMessage) ? componentOrMessage : componentOrMessage.key,\n          messageParameters: this.isString(componentOrMessage) ? {} : componentOrMessage.parameters,\n        },\n      }\n    } else if (this.isDialogMessage(componentOrMessage)) {\n      return {\n        type: DialogMessageContentComponent,\n        inputs: {\n          message: this.isString(componentOrMessage.message)\n            ? componentOrMessage.message\n            : componentOrMessage.message.key,\n          icon: componentOrMessage.icon,\n          messageParameters: this.isString(componentOrMessage.message) ? {} : componentOrMessage.message.parameters,\n        },\n      }\n    } else if (this.isType(componentOrMessage)) {\n      return {\n        type: componentOrMessage,\n      }\n    }\n    return componentOrMessage\n  }\n\n  private isTranslationKey(obj: any): obj is TranslationKey {\n    return this.isString(obj) || ('key' in obj && 'parameters' in obj)\n  }\n\n  private isString(obj: any): obj is string {\n    return typeof obj === 'string' || obj instanceof String\n  }\n\n  private isDialogMessage(obj: any): obj is DialogMessage {\n    return 'message' in obj && 'icon' in obj\n  }\n\n  private isType(obj: any): obj is Type<any> {\n    return obj instanceof Type\n  }\n\n  private getShowXStatus(isSecondaryButtonPresent: boolean, configuration: PortalDialogConfig): boolean {\n    let showXButton\n    if (Object.hasOwn(configuration, 'closable')) {\n      showXButton = configuration.closable\n    } else {\n      showXButton = configuration.showXButton && isSecondaryButtonPresent\n    }\n    return Boolean(showXButton)\n  }\n}\n\nexport function providePortalDialogService() {\n  return [DialogService, PortalDialogService]\n}\n","import { Injectable, LOCALE_ID, inject } from '@angular/core'\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DateUtils {\n  protected locale = inject(LOCALE_ID)\n\n  options: Intl.DateTimeFormatOptions = {\n    month: 'short',\n    day: '2-digit',\n    year: 'numeric',\n    hour: 'numeric',\n    minute: '2-digit',\n    second: '2-digit',\n  }\n\n  localizedDate(date: string | number | Date | undefined): string {\n    return date\n      ? new Intl.DateTimeFormat(this.locale, this.options).format(date instanceof Date ? date : new Date(date))\n      : ''\n  }\n}\n","import { Injectable, LOCALE_ID, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { Observable, firstValueFrom, map, of } from 'rxjs'\nimport { DateUtils } from '../utils/dateutils'\nimport { ColumnType } from '../model/column-type.model'\nimport { ObjectUtils } from '../utils/objectutils'\nimport * as ExcelJS from '@protobi/exceljs'\nimport { DataTableColumn } from '../model/data-table-column.model'\n\ntype DataExportColumn = { \n  id: string; \n  nameKey: string; \n  columnType: ColumnType; \n  name?: string \n}\n\n@Injectable({ providedIn: 'any' })\nexport class ExportDataService {\n  private readonly dateUtils = inject(DateUtils)\n  private readonly translateService = inject(TranslateService)\n  private readonly locale = inject(LOCALE_ID)\n\n  private readonly EXCEL_TABLE_STARTING_CELL = 'A1'\n\n  async exportCsv<T extends string | number | symbol>(\n    columns: { id: string; nameKey: string; columnType: ColumnType }[],\n    data: Partial<Record<T, unknown | undefined>>[],\n    fileName: string\n  ): Promise<void> {\n    if (!columns.length) {\n      return\n    }\n    const dataToExport = await this.getDataToExport(columns, data)\n    const delimiter = this.locale.startsWith('de') ? ';' : ','\n    const dataString = dataToExport\n      .map((d) =>\n        columns\n          .reduce((arr: unknown[], c) => [...arr, d[c.id]], [])\n          .map((d) => this.escapeDelimiterAndLineBreaks(delimiter, d))\n          .join(delimiter)\n      )\n      .join('\\r\\n')\n    const headerString = (await firstValueFrom(this.translateColumnNames(columns)))\n      .map((c) => c.name)\n      .map((c) => this.escapeDelimiterAndLineBreaks(delimiter, c))\n      .join(delimiter)\n\n    const csvString = headerString + '\\r\\n' + dataString\n\n    const blob = new Blob(['\\ufeff' + csvString], {\n      type: 'text/csv;charset=utf-8;',\n    })\n    this.handleFileDownload(blob, fileName)\n  }\n\n  /**\n   * Exports the provided data to an Excel (.xlsx) file and triggers a browser download.\n   *\n   * The `fileName` is sanitised before use: the `.xlsx` extension is stripped, and any\n   * characters outside `[a-zA-Z0-9_]` are replaced with underscores. The sanitised name\n   * is used for the worksheet name, the internal table name, and the final downloaded file\n   * (with `.xlsx` appended back).\n   *\n   * The table name additionally has any leading digits removed, as Excel does not allow\n   * table names to start with a number.\n   *\n   * Column headers are resolved via `ngx-translate` using each column's `nameKey`.\n   * Cells of type `DATE` or `RELATIVE_DATE` are formatted using the current locale.\n   * Cells of type `TRANSLATION_KEY` are translated before being written to the file.\n   *\n   * If no columns are provided, the method returns early without creating a file.\n   *\n   * @param columns - Column definitions including id, translation key and column type.\n   * @param data - Array of data records to export. Keys correspond to column ids.\n   * @param fileName - Desired file name (with or without `.xlsx` extension).\n   */\n  async exportToExcel<T extends string | number>(\n    columns: DataExportColumn[],\n    data: Partial<Record<T, unknown>>[],\n    fileName: string\n  ): Promise<void> {\n    if (!columns.length) {\n      return\n    }\n    const normalisedFileName = this.getNormalisedFileName(fileName);\n    const dataToExport = await this.getDataToExport(columns, data)\n    const workbook = new ExcelJS.Workbook()\n    const worksheetName = await firstValueFrom(this.getSheetName(normalisedFileName))\n    const worksheet = workbook.addWorksheet(worksheetName)\n    await this.addWorksheetTable(worksheet, columns, dataToExport, normalisedFileName)\n\n    const excelBuffer = await workbook.xlsx.writeBuffer()\n    const excelBlob = new Blob([excelBuffer], { \n      type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' \n    })\n    const finalFileName = `${normalisedFileName}.xlsx`\n    this.handleFileDownload(excelBlob, finalFileName)\n  }\n\n  private async getDataToExport(columns: DataTableColumn[], data: Partial<Record<string, unknown>>[]) {\n    const flattenedData = data.map((d) =>\n      columns.reduce((obj, c) => ({ ...obj, [c.id]: ObjectUtils.resolveFieldData(d, c.id) }), {})\n    )\n    const translatedData = await firstValueFrom(this.translateData(columns, flattenedData))\n    return this.formatData(columns, translatedData)\n  }\n\n  private translateColumnNames(\n    columns: DataExportColumn[]\n  ): Observable<DataExportColumn[]> {\n    return this.translateService\n      .get(columns.map((c) => c.nameKey))\n      .pipe(map((translations) => columns.map((c) => ({ ...c, name: translations[c.nameKey] }))))\n  }\n\n  private formatData(\n    columns: DataExportColumn[],\n    data: Record<string, unknown>[]\n  ): { [columnId: string]: unknown }[] {\n    return data.map((d) =>\n      columns.reduce((obj, c) => {\n        if (c.columnType === ColumnType.DATE || c.columnType === ColumnType.RELATIVE_DATE) {\n          return {\n            ...obj,\n            [c.id]: this.dateUtils.localizedDate(d[c.id] ? String(d[c.id]) : undefined),\n          }\n        }\n        return { ...obj, [c.id]: d[c.id] }\n      }, {})\n    )\n  }\n\n  private translateData(\n    columns: DataExportColumn[],\n    data: Record<string, unknown>[]\n  ): Observable<{ [columnId: string]: unknown }[]> {\n    let translationKeys: string[] = []\n    const translatedColumns = columns.filter((c) => c.columnType === ColumnType.TRANSLATION_KEY)\n    translatedColumns.forEach((c) => {\n      translationKeys = [...translationKeys, ...data.map((i) => i[c.id]?.toString() ?? '')]\n    })\n    if (translationKeys.length) {\n      return this.translateService.get(translationKeys).pipe(\n        map((translatedValues: Record<string, string>) => {\n          return data.map((d) =>\n            columns.reduce(\n              (obj, c) => ({\n                ...obj,\n                [c.id]: c.columnType === ColumnType.TRANSLATION_KEY ? translatedValues[String(d[c.id])] : d[c.id],\n              }),\n              {}\n            )\n          )\n        })\n      )\n    }\n    return of(data)\n  }\n\n  private escapeDelimiterAndLineBreaks(delimiter: ';' | ',', data: unknown) {\n    if (data === null || data === undefined) {\n      return data\n    }\n\n    let str = String(data)\n\n    if (str.includes('\"')) {\n      str = str.replaceAll('\"', '\"\"')\n    }\n\n    if (str.includes(delimiter) || str.includes('\\n') || str.includes('\\r')) {\n      str = `\"${str}\"`\n    }\n    return str\n  }\n\n  private async addWorksheetTable(worksheet: ExcelJS.Worksheet, columns: DataExportColumn[], \n                            data: {[columnId: string]: unknown}[], fileName: string) {\n    const translatedColumns = await firstValueFrom(this.getExcelColumnDefinitions(columns))\n    const tableName = await firstValueFrom(this.getTableName(fileName))\n    worksheet.addTable({\n      name: tableName,\n      ref: this.EXCEL_TABLE_STARTING_CELL,\n      headerRow: true,\n      totalsRow: false,\n      style: {\n        showRowStripes: true\n      },\n      columns: translatedColumns,\n      rows: this.transformDataForExcel(columns, data)\n    })\n  }\n\n  private getExcelColumnDefinitions(columns: DataExportColumn[]): Observable<ExcelJS.TableColumnProperties[]> {\n    return this.translateColumnNames(columns).pipe(\n      map((columns) => columns.map((column: DataExportColumn) => ({\n        name: column.name || column.id,\n        filterButton: true\n      })))\n    )\n  }\n\n  private transformDataForExcel(columns: DataExportColumn[], data: {[columnId: string]: unknown}[]): unknown[][] {\n    return data.map((dataEntry) => columns.map((column) => dataEntry[column.id]))\n  }\n\n  private getTableName(fileName: string): Observable<string> {\n    const formattedFileName = fileName.replaceAll(/\\W/g, '_').replace(/^\\d+/, '') // table names require ASCII and must not start with a digit\n    return this.translateService.get('OCX_DATA_EXPORT.EXCEL_TABLE_NAME', {fileName: formattedFileName})\n  }\n\n  private getNormalisedFileName(fileName: string): string {\n    return fileName.replace(/\\.xlsx$/i, '').replaceAll(/[^\\p{L}\\p{N}_]/gu, '_')\n  }\n\n  private getSheetName(fileName: string): Observable<string> {\n    return this.translateService.get('OCX_DATA_EXPORT.EXCEL_SHEET_NAME', {fileName})\n  }\n\n  private handleFileDownload(fileBlob: Blob, fileName: string) {\n    const downloadLink = document.createElement('a')\n    const fileUrl = URL.createObjectURL(fileBlob)\n    downloadLink.setAttribute('href', fileUrl)\n    downloadLink.setAttribute('download', fileName)\n    downloadLink.click()\n    setTimeout(() => URL.revokeObjectURL(fileUrl), 0)\n  }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\n\nconst DIVISIONS: { amount: number; name: Intl.RelativeTimeFormatUnit }[] = [\n  { amount: 60, name: 'seconds' },\n  { amount: 60, name: 'minutes' },\n  { amount: 24, name: 'hours' },\n  { amount: 7, name: 'days' },\n  { amount: 4.34524, name: 'weeks' },\n  { amount: 12, name: 'months' },\n  { amount: Number.POSITIVE_INFINITY, name: 'years' },\n]\n\n@Pipe({\n  name: 'relativeDate',\n  standalone: false,\n})\nexport class RelativeDatePipe implements PipeTransform {\n  private readonly translateService = inject(TranslateService)\n\n  rtf: Intl.RelativeTimeFormat\n\n  constructor() {\n    this.rtf = new Intl.RelativeTimeFormat(this.translateService.currentLang, {\n      style: 'long',\n    })\n  }\n\n  transform(value: any): any {\n    let date: Date = new Date()\n    switch (typeof value) {\n      case 'string':\n        date = new Date(value)\n        break\n      case 'object':\n        date = value\n        break\n      default:\n        break\n    }\n\n    let duration = (date.getTime() - new Date().getTime()) / 1000\n    for (let i = 0; i <= DIVISIONS.length; i++) {\n      const division = DIVISIONS[i]\n      if (Math.abs(duration) < division.amount) {\n        return this.rtf.format(Math.round(duration), division.name)\n      }\n      duration /= division.amount\n    }\n  }\n}\n","import { NgModule } from '@angular/core'\nimport { SelectModule } from 'primeng/select'\nimport { ButtonModule } from 'primeng/button'\nimport { DialogModule } from 'primeng/dialog'\nimport { PickListModule } from 'primeng/picklist'\nimport { SelectButtonModule } from 'primeng/selectbutton'\nimport { DataViewModule } from 'primeng/dataview'\nimport { TableModule } from 'primeng/table'\nimport { MenuModule } from 'primeng/menu'\nimport { ChartModule } from 'primeng/chart'\nimport { MultiSelectModule } from 'primeng/multiselect'\nimport { BreadcrumbModule } from 'primeng/breadcrumb'\nimport { SkeletonModule } from 'primeng/skeleton'\nimport { MessageModule } from 'primeng/message'\nimport { SharedModule } from 'primeng/api'\nimport { CheckboxModule } from 'primeng/checkbox'\nimport { FloatLabelModule } from 'primeng/floatlabel'\nimport { ChipModule } from 'primeng/chip'\nimport { PopoverModule } from 'primeng/popover'\nimport { FocusTrapModule } from 'primeng/focustrap'\nimport { TooltipModule } from 'primeng/tooltip'\nimport { RippleModule } from 'primeng/ripple'\nimport { providePrimeNG } from 'primeng/config'\nimport { TimelineModule } from 'primeng/timeline'\n\n@NgModule({\n  imports: [\n    BreadcrumbModule,\n    ChipModule,\n    CheckboxModule,\n    SelectModule,\n    ButtonModule,\n    DialogModule,\n    PickListModule,\n    SelectButtonModule,\n    DataViewModule,\n    TableModule,\n    MenuModule,\n    ChartModule,\n    MultiSelectModule,\n    SkeletonModule,\n    MessageModule,\n    FloatLabelModule,\n    PopoverModule,\n    FocusTrapModule,\n    TooltipModule,\n    TimelineModule,\n    RippleModule,\n    SelectButtonModule,\n    SharedModule,\n  ],\n  exports: [\n    BreadcrumbModule,\n    ChipModule,\n    CheckboxModule,\n    SelectModule,\n    ButtonModule,\n    DialogModule,\n    PickListModule,\n    SelectButtonModule,\n    DataViewModule,\n    TableModule,\n    MenuModule,\n    ChartModule,\n    MultiSelectModule,\n    SkeletonModule,\n    MessageModule,\n    FloatLabelModule,\n    PopoverModule,\n    FocusTrapModule,\n    TooltipModule,\n    TimelineModule,\n    RippleModule,\n    SelectButtonModule,\n    SharedModule,\n  ],\n  providers: [providePrimeNG()],\n})\nexport class AngularAcceleratorPrimeNgModule {}\n","export const LIB_NAME = '@onecx/angular-accelerator'\nexport const LIB_VERSION = '8.8.0'\n","import { CommonModule, registerLocaleData } from '@angular/common'\nimport { APP_INITIALIZER, LOCALE_ID, NgModule} from '@angular/core'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { RouterModule } from '@angular/router'\nimport { TranslateModule } from '@ngx-translate/core'\n\nimport { AppConfigService, UserService } from '@onecx/angular-integration-interface'\nimport { AngularRemoteComponentsModule } from '@onecx/angular-remote-components'\n\nimport { firstValueFrom, skip } from 'rxjs'\nimport { AngularAcceleratorPrimeNgModule } from './angular-accelerator-primeng.module'\nimport { ColumnGroupSelectionComponent } from './components/column-group-selection/column-group-selection.component'\nimport { CustomGroupColumnSelectorComponent } from './components/custom-group-column-selector/custom-group-column-selector.component'\nimport { DataLayoutSelectionComponent } from './components/data-layout-selection/data-layout-selection.component'\nimport { DataListGridSortingComponent } from './components/data-list-grid-sorting/data-list-grid-sorting.component'\nimport { DataListGridComponent } from './components/data-list-grid/data-list-grid.component'\nimport { DataTableComponent } from './components/data-table/data-table.component'\nimport { DataViewComponent } from './components/data-view/data-view.component'\nimport { DiagramComponent } from './components/diagram/diagram.component'\nimport { GroupByCountDiagramComponent } from './components/group-by-count-diagram/group-by-count-diagram.component'\nimport { InteractiveDataViewComponent } from './components/interactive-data-view/interactive-data-view.component'\nimport { PageHeaderComponent } from './components/page-header/page-header.component'\nimport { SearchHeaderComponent } from './components/search-header/search-header.component'\nimport { AdvancedDirective } from './directives/advanced.directive'\nimport { IfBreakpointDirective } from './directives/if-breakpoint.directive'\nimport { IfPermissionDirective } from './directives/if-permission.directive'\nimport {\n  providePermissionChecker,\n  provideTranslationConnectionService,\n  provideTranslationPathFromMeta,\n  MultiLanguageMissingTranslationHandler,\n  provideMultiLanguageIdentifier,\n  DynamicLocaleId,\n  localeLoaders\n} from '@onecx/angular-utils'\nimport { SrcDirective } from './directives/src.directive'\nimport { OcxTooltipDirective } from './directives/tooltip.directive'\nimport { TooltipOnOverflowDirective } from './directives/tooltipOnOverflow.directive'\nimport { DynamicPipe } from './pipes/dynamic.pipe'\nimport { OcxTimeAgoPipe } from './pipes/ocxtimeago.pipe'\nimport { FilterViewComponent } from './components/filter-view/filter-view.component'\nimport { TemplateDirective } from './directives/template.directive'\nimport { OcxContentComponent } from './components/content/content.component'\nimport { OcxContentContainerComponent } from './components/content-container/content-container.component'\nimport { OcxContentDirective } from './directives/content.directive'\nimport { OcxContentContainerDirective } from './directives/content-container.directive'\nimport { LifecycleComponent } from './components/lifecycle/lifecycle.component'\nimport { DialogMessageContentComponent } from './components/dialog/dialog-message-content/dialog-message-content.component'\nimport { DialogContentComponent } from './components/dialog/dialog-content/dialog-content.component'\nimport { DialogFooterComponent } from './components/dialog/dialog-footer/dialog-footer.component'\nimport { DialogInlineComponent } from './components/dialog/dialog-inline/dialog-inline.component'\nimport { GlobalErrorComponent } from './components/error-component/global-error.component'\nimport { LoadingIndicatorComponent } from './components/loading-indicator/loading-indicator.component'\nimport { BasicDirective } from './directives/basic.directive'\nimport { LoadingIndicatorDirective } from './directives/loading-indicator.directive'\nimport { MessageService } from 'primeng/api'\nimport { ConsentComponent } from './components/consent/consent.component'\nimport { LIB_VERSION } from '../version'\n\nexport class AngularAcceleratorMissingTranslationHandler extends MultiLanguageMissingTranslationHandler {}\n\nfunction appInitializer(userService: UserService) {\n  return async () => {\n    const lang = await firstValueFrom(userService.lang$.pipe(skip(1)));\n    try{\n      await localeLoaders[lang]?.().then(data => registerLocaleData(data.default ?? data))\n    }catch (error) {\n      console.warn(`Could not load locale data for '${lang}'. Angular pipes may not format correctly.`, error)\n    }\n  }\n}\n\n@NgModule({\n  imports: [\n    CommonModule,\n    AngularAcceleratorPrimeNgModule,\n    AngularRemoteComponentsModule,\n    TranslateModule,\n    FormsModule,\n    RouterModule,\n    ReactiveFormsModule,\n    OcxTooltipDirective\n  ],\n  declarations: [\n    ColumnGroupSelectionComponent,\n    CustomGroupColumnSelectorComponent,\n    DataLayoutSelectionComponent,\n    DataListGridSortingComponent,\n    DataListGridComponent,\n    DataTableComponent,\n    DataViewComponent,\n    InteractiveDataViewComponent,\n    LifecycleComponent,\n    PageHeaderComponent,\n    DynamicPipe,\n    SearchHeaderComponent,\n    DiagramComponent,\n    GroupByCountDiagramComponent,\n    OcxContentComponent,\n    OcxContentContainerComponent,\n    IfPermissionDirective,\n    IfBreakpointDirective,\n    SrcDirective,\n    OcxTimeAgoPipe,\n    AdvancedDirective,\n    TooltipOnOverflowDirective,\n    FilterViewComponent,\n    TemplateDirective,\n    OcxContentDirective,\n    OcxContentContainerDirective,\n    GlobalErrorComponent,\n    LoadingIndicatorComponent,\n    LoadingIndicatorDirective,\n    BasicDirective,\n    DialogFooterComponent,\n    DialogContentComponent,\n    DialogInlineComponent,\n    DialogMessageContentComponent,\n    ConsentComponent,\n  ],\n  providers: [\n    providePermissionChecker(),\n    {\n      provide: LOCALE_ID,\n      useClass: DynamicLocaleId,\n      deps: [UserService],\n    },\n    {\n      provide: APP_INITIALIZER,\n      useFactory: appInitializer,\n      deps: [UserService],\n      multi: true,\n    },\n    provideTranslationPathFromMeta(import.meta.url, 'onecx-angular-accelerator/assets/i18n/'),\n    provideTranslationPathFromMeta(import.meta.url, 'onecx-angular-accelerator/assets/i18n/primeng/'),\n    provideMultiLanguageIdentifier('@onecx/angular-accelerator', LIB_VERSION, 'lib'),\n    {\n      provide: MessageService,\n      useClass: MessageService,\n    },\n    AppConfigService,\n    provideTranslationConnectionService(),\n  ],\n  exports: [\n    AngularRemoteComponentsModule,\n    ColumnGroupSelectionComponent,\n    CustomGroupColumnSelectorComponent,\n    DataLayoutSelectionComponent,\n    DataListGridComponent,\n    DataTableComponent,\n    DataViewComponent,\n    InteractiveDataViewComponent,\n    LifecycleComponent,\n    PageHeaderComponent,\n    SearchHeaderComponent,\n    DiagramComponent,\n    GroupByCountDiagramComponent,\n    OcxContentComponent,\n    OcxContentContainerComponent,\n    IfPermissionDirective,\n    IfBreakpointDirective,\n    SrcDirective,\n    OcxTooltipDirective,\n    OcxTimeAgoPipe,\n    AdvancedDirective,\n    TooltipOnOverflowDirective,\n    FilterViewComponent,\n    TemplateDirective,\n    OcxContentDirective,\n    OcxContentContainerDirective,\n    GlobalErrorComponent,\n    LoadingIndicatorComponent,\n    LoadingIndicatorDirective,\n    BasicDirective,\n    DialogFooterComponent,\n    DialogContentComponent,\n    DialogInlineComponent,\n    DialogMessageContentComponent,\n    ConsentComponent,\n  ],\n})\nexport class AngularAcceleratorModule {}\n","import { ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms'\n\nexport const atLeastOneFieldFilledValidator: ValidatorFn = (form: AbstractControl): ValidationErrors | null => {\n  if (Object.values(form.value).every((x) => x === null || x === undefined || x === '')) {\n    return { allFieldsEmpty: true }\n  }\n  return null\n}\n","import { DataTableColumn } from '../model/data-table-column.model'\nimport { Filter, FilterObject } from '../model/filter.model'\nimport { ObjectUtils } from './objectutils'\nimport { createLogger } from './logger.utils'\n\nconst logger = createLogger('DataOperationStrategy')\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport abstract class DataOperationStrategy {\n  endsWith(column: DataTableColumn, value: unknown, target: unknown): boolean {\n    logger.error('endsWith method not implemented')\n    return true\n  }\n\n  startsWith(column: DataTableColumn, value: unknown, target: unknown): boolean {\n    logger.error('startsWith method not implemented')\n    return true\n  }\n\n  contains(column: DataTableColumn, value: unknown, target: unknown): boolean {\n    logger.error('contains method not implemented')\n    return true\n  }\n\n  notContains(column: DataTableColumn, value: unknown, target: unknown): boolean {\n    logger.error('notContains method not implemented')\n    return true\n  }\n\n  equals(column: DataTableColumn, value: unknown, target: unknown): boolean {\n    logger.error('equals method not implemented')\n    return true\n  }\n\n  notEquals(column: DataTableColumn, value: unknown, target: unknown): boolean {\n    logger.error('notEquals method not implemented')\n    return true\n  }\n\n  lessThan(column: DataTableColumn, value: unknown, target: unknown): boolean {\n    logger.error('lessThan method not implemented')\n    return true\n  }\n\n  greaterThan(column: DataTableColumn, value: unknown, target: unknown): boolean {\n    logger.error('greaterThan method not implemented')\n    return true\n  }\n\n  lessThanOrEqual(column: DataTableColumn, value: unknown, target: unknown): boolean {\n    logger.error('lessThanOrEqual method not implemented')\n    return true\n  }\n\n  greaterThanOrEqual(column: DataTableColumn, value: unknown, target: unknown): boolean {\n    logger.error('greaterThanOrEqual method not implemented')\n    return true\n  }\n\n  isEmpty(column: DataTableColumn, value: unknown): boolean {\n    logger.error('isEmpty method not implemented')\n    return true\n  }\n\n  isNotEmpty(column: DataTableColumn, value: unknown): boolean {\n    logger.error('isNotEmpty method not implemented')\n    return true\n  }\n\n  compare(a: unknown, b: unknown, column: DataTableColumn): number {\n    logger.error('compare method not implemented')\n    return 0\n  }\n\n  filterOptions(hayStack: unknown[], filterObject: FilterObject, columns: DataTableColumn[]): unknown[] {\n    const hayStackOptions = hayStack.map((item) => this.mapHaystackItemToValue(item, filterObject))\n    const column = columns.find((c) => c.id === filterObject.columnId)\n    if (!column) {\n      logger.warn('Filter does not have a column id set. All items will be considered a valid option')\n      return hayStackOptions\n    }\n    return hayStackOptions.filter(\n      (item, index, self) => index === self.findIndex((t) => this.compare(t, item, column) === 0)\n    )\n  }\n\n  filter(hayStack: unknown[], filter: Filter, columns: DataTableColumn[]): unknown[] {\n    const { filterType, value } = filter\n    if (!filterType) {\n      logger.warn('Filter does not have a type set. All items will resolve as true')\n      return hayStack\n    }\n    const column = columns.find((c) => c.id === filter.columnId)\n    if (!column) {\n      logger.warn('Filter does not have a column id set. All items will be considered a valid option')\n      return hayStack\n    }\n    return hayStack.filter((item) => this[filterType](column, this.mapHaystackItemToValue(item, filter), value))\n  }\n\n  mapHaystackItemToValue(item: unknown, filter: Filter | FilterObject) {\n    return ObjectUtils.resolveFieldData(item, filter.columnId)\n  }\n}\n","import { TranslateService } from '@ngx-translate/core'\nimport { Observable, map } from 'rxjs'\n\nexport function enumToDropdownOptions<T extends object>(\n  translateService: TranslateService,\n  enumType: T,\n  translationKeyPrefix: string\n): Observable<{ label: string; value: T }[]> {\n  return translateService.get(Object.values(enumType).map((v) => translationKeyPrefix + v)).pipe(\n    map((translations) =>\n      Object.values(enumType).map((v) => ({\n        label: translations[translationKeyPrefix + v],\n        value: v,\n      }))\n    )\n  )\n}\n","import { getUTCDateWithoutTimezoneIssues, isValidDate } from '@onecx/accelerator'\nimport { DatePicker } from 'primeng/datepicker'\n\nexport type hasShowTimeFunction = (key: string) => boolean\n/**\n * removeNullValues: whether to remove entries from the search criteria where the value is null\n */\nexport interface BuildSearchCriteriaParameters {\n  removeNullValues: boolean\n}\n\nfunction _hasShowTime(datePickers:DatePicker[], formKey: string): boolean {\n  return (\n    datePickers.find((d) => {\n      return d.name() === formKey\n    })?.showTime === true\n  )\n}\n\n/**\n * Safely builds the search criteria based on form values\n * @param formRawValue the raw value of the form to use\n * @param datePickers a list of primeng datePickers of the form (use `viewChildren` to get list of datePickers)\n * @param parameters {@link BuildSearchCriteriaParameters}  to use when building the search criteria\n * @returns the search criteria as a partial of T (T = type of the search criteria)\n */\nexport function buildSearchCriteria<T>(\n  formRawValue: any,\n  datePickers: DatePicker[],\n  { removeNullValues = false }: BuildSearchCriteriaParameters\n) {\n  return Object.entries(formRawValue).reduce((acc: Partial<T>, [key, value]) => {\n    if (value == null && removeNullValues) {\n      return acc\n    }\n    if (isValidDate(value) && !_hasShowTime(datePickers, key)) {\n      value = getUTCDateWithoutTimezoneIssues(value)\n    }\n    return {\n      ...acc,\n      [key]: value,\n    }\n  }, {})\n}","export function findEntryWithKeyword(\n  array: string[] | undefined,\n  keyword: string,\n): string | null {\n  const entry = array?.find((entry) => entry.includes(keyword));\n  return entry || null;\n}\n\nexport function removeKeyword(input: string, keyword: string): string {\n  let result = input.replace(new RegExp(`/${keyword}.*`), '');\n  if (result.endsWith('/')) {\n    result = result.slice(0, -1);\n  }\n  return result;\n}\n\nexport function searchPrefixWithSpecialChars(\n  strings: string[],\n  prefix: string,\n): string | null {\n  for (let i = strings.length - 1; i >= 0; i--) {\n    const str = strings[i];\n    if (\n      str.startsWith(prefix) &&\n      (str[prefix.length] === '?' || str[prefix.length] === '#')\n    ) {\n      return str;\n    }\n  }\n  return null;\n}\n","export class ImageLogoUrlUtils {\n  public static createLogoUrl(apiPrefix: string, url?: string): string | undefined {\n    //if the url is from the backend, then we insert the apiPrefix\n    if ((url && !url.match(/^(http|https)/g)) ) {\n      return apiPrefix + url\n    } else {\n      return url\n    }\n  }\n}","// injection tokens + related utilities\n\n// directives\nexport * from './lib/directives/content-container.directive'\nexport * from './lib/directives/content.directive'\nexport * from './lib/directives/if-permission.directive'\nexport * from './lib/directives/if-breakpoint.directive'\nexport * from './lib/directives/src.directive'\nexport * from './lib/directives/advanced.directive'\nexport * from './lib/directives/tooltipOnOverflow.directive'\nexport * from './lib/directives/template.directive'\nexport * from './lib/directives/basic.directive'\nexport * from './lib/directives/loading-indicator.directive'\nexport * from './lib/directives/tooltip.directive'\n\n// components\nexport * from './lib/components/column-group-selection/column-group-selection.component'\nexport * from './lib/components/content/content.component'\nexport * from './lib/components/content-container/content-container.component'\nexport * from './lib/components/custom-group-column-selector/custom-group-column-selector.component'\nexport * from './lib/components/data-layout-selection/data-layout-selection.component'\nexport * from './lib/components/data-list-grid/data-list-grid.component'\nexport * from './lib/components/data-list-grid-sorting/data-list-grid-sorting.component'\nexport * from './lib/components/data-table/data-table.component'\nexport * from './lib/components/data-view/data-view.component'\nexport * from './lib/components/diagram/diagram.component'\nexport * from './lib/components/filter-view/filter-view.component'\nexport * from './lib/components/group-by-count-diagram/group-by-count-diagram.component'\nexport * from './lib/components/interactive-data-view/interactive-data-view.component'\nexport * from './lib/components/lifecycle/lifecycle.component'\nexport * from './lib/components/consent/consent.component'\nexport * from './lib/components/page-header/page-header.component'\nexport * from './lib/components/search-header/search-header.component'\nexport * from './lib/components/dialog/dialog-message-content/dialog-message-content.component'\nexport * from './lib/components/loading-indicator/loading-indicator.component'\nexport * from './lib/components/dialog/dialog-content/dialog-content.component'\nexport * from './lib/components/dialog/dialog-inline/dialog-inline.component'\nexport * from './lib/components/dialog/dialog-footer/dialog-footer.component'\nexport * from './lib/components/error-component/global-error.component'\n\n// services\nexport * from './lib/services/breadcrumb.service'\nexport * from './lib/services/portal-dialog.service'\nexport * from './lib/services/export-data.service'\n\n// pipes\nexport * from './lib/pipes/dynamic.pipe'\nexport * from './lib/pipes/ocxtimeago.pipe'\nexport * from './lib/pipes/relative-date.pipe'\n\n// models\nexport * from './lib/model/breadcrumb-menu-item.model'\nexport * from './lib/model/column-type.model'\nexport * from './lib/model/data-action'\nexport * from './lib/model/button-dialog'\nexport * from './lib/model/translation.model'\n\n// export * from './lib/model/data-column-name-id.model'\nexport * from './lib/model/data-sort-direction'\nexport * from './lib/model/data-table-column.model'\nexport * from './lib/model/diagram-column'\n// export * from './lib/model/diagram-data'\nexport * from './lib/model/diagram-type'\nexport * from './lib/model/filter.model'\nexport * from './lib/model/permission.model'\n\n// core\nexport * from './lib/angular-accelerator.module'\nexport * from './lib/angular-accelerator-primeng.module'\n\n// functions\nexport * from './lib/functions/flatten-object'\nexport * from './lib/functions/at-least-one-field-filled-validator'\n\n// utils\nexport * from './lib/utils/colorutils'\nexport * from './lib/utils/data-operation-strategy'\nexport * from './lib/utils/dateutils'\nexport * from './lib/utils/objectutils'\nexport * from './lib/utils/primeicon.utils'\nexport * from './lib/utils/enum-to-dropdown-options.utils'\nexport * from './lib/utils/criteria.utils'\nexport * from './lib/utils/string-and-array-helper-functions.utils'\nexport * from './lib/utils/template.utils'\nexport * from './lib/utils/filter.utils'\nexport * from './lib/utils/image-logo-url.utils'\nexport * from './lib/utils/observable-output.utils'\nexport * from './lib/utils/action-router.utils'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i7.OcxTooltipDirective","i8.SrcDirective","i9","i10.DynamicPipe","i2","i4","i5.OcxTooltipDirective","i6.PageHeaderComponent","i7.IfPermissionDirective","i8","i1","i2.OcxContentDirective","i2.OcxContentContainerDirective","i5","i6","i3.OcxTooltipDirective","i7","i8.OcxTooltipDirective","i9.IfPermissionDirective","i10.TooltipOnOverflowDirective","i11","i12.OcxTimeAgoPipe","i10","i12.OcxTooltipDirective","i13.IfPermissionDirective","i14","i15.OcxTimeAgoPipe","i2.DataListGridComponent","i3.DataTableComponent","i6.OcxTooltipDirective","i8.DataTableComponent","i9.IfBreakpointDirective","i11.OcxTimeAgoPipe","i1.DiagramComponent","i4.ColumnGroupSelectionComponent","i5.CustomGroupColumnSelectorComponent","i6.DataLayoutSelectionComponent","i7.DataListGridSortingComponent","i8.DataViewComponent","i10.FilterViewComponent","i1.DialogFooterComponent","i2.DialogContentComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAGa,4BAA4B,CAAA;IAuBvC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC;QAClF,IAAI,CAAC,kBAAkB,EAAE;IAC3B;AAEA,IAAA,WAAA,GAAA;AA3BQ,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B;;;;;AAKG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAA4B,YAAY,kDAAC;AAEvD;;;;AAIG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAA4B,IAAI,sDAAC;AAEnD;;AAEG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,mDAAC;QAQ5C,MAAM,CAAC,MAAK;;YAEV,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,kBAAkB,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;IAEQ,kBAAkB,GAAA;QACxB,MAAM,UAAU,GAAG,CAAC,OAAiB,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACzF,MAAM,aAAa,GAAG,CAAC,OAAiB,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;;;QAG/F,MAAM,6BAA6B,GAAG,MAAK;YACzC,MAAM,eAAe,GAAa,EAAE;YACpC,MAAM,YAAY,GAAG,eAAe;AACpC,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAiB,KAAI;AAC5D,gBAAA,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAChC,oBAAA,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;gBACjC;AACF,YAAA,CAAC,CAAC;YACF,aAAa,CAAC,eAAe,CAAC;AAChC,QAAA,CAAC;QACD,MAAM,gBAAgB,GAAG,MAAK;AAC5B,YAAA,IAAI,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAqB,CAAC;YAC1E,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC;YAC9D,aAAa,CAAC,cAAc,CAAC;YAC7B,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,OAAO,CAAC,EAAE;AACzE,gBAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACvE;YACA,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,CAAC;AAC3E,YAAA,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AACzD,gBAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,aAAa,CAAC;YACpE;AACA,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,UAAU,EAAE;gBAC/B,MAAM,qBAAqB,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAA,SAAA,CAAW;AACrE,gBAAA,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC;YAC1C;YACA,UAAU,CAAC,YAAY,CAAC;AAC1B,QAAA,CAAC;AAED,QAAA,6BAA6B,EAAE;AAC/B,QAAA,gBAAgB,EAAE;IACpB;8GAzEW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,KAAK,EAAE;;;MCCtD,mBAAmB,CAAA;AAY9B,IAAA,WAAA,GAAA;AAXiB,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAExC;;;AAGG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,EAAE,sDAAC;AAEb,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAS,2BAA2B,kDAAC;AACpD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAqB,SAAS,0DAAC;QAGrE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,IAAI,EAAE;AACb,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,EAAE;IACb;IAEQ,IAAI,GAAA;QACV,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,YAAY,EAAE;QACrB;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEQ,gBAAgB,GAAA;QACtB,MAAM,UAAU,GAAG,CAAC,OAAiB,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;AACzF,QAAA,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC;IAC1B;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;QAC5C,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,cAAc,CAAA,CAAE,CAAC;YAC9E,IAAI,YAAY,EAAE;AAChB,gBAAA,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE;YAC9C;iBAAO;gBACL,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACzC,gBAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;AAClC,gBAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9B,gBAAA,KAAK,CAAC,EAAE,GAAG,cAAc;AACzB,gBAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE;gBACrC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;YACtC;QACF;IACF;AAEQ,IAAA,gBAAgB,CAAC,MAAc,EAAA;QACrC,IAAI,OAAO,GAAG,CAAC;QACf,IAAI,WAAW,GAAG,MAAM;AAExB,QAAA,OAAO,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;AAC3C,YAAA,WAAW,GAAG,MAAM,GAAG,OAAO;AAC9B,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,OAAO,WAAW;IACpB;IAEQ,WAAW,GAAA;AACjB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;QAC5C,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,cAAc,CAAA,CAAE,CAAC;YAC9E,IAAI,YAAY,EAAE;gBAChB,YAAY,CAAC,MAAM,EAAE;YACvB;QACF;IACF;8GA1EW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE;;;ACF1D;AAGO,MAAM,YAAY,GAAG,mBAAmB,CAAC,4BAA4B,CAAC;;MCiBhE,qBAAqB,CAAA;AA2CxB,IAAA,oBAAoB,CAAC,GAAkC,EAAA;AAC7D,QAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACrB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACtB,YAAA,OAAO,GAAG;QACZ;QACA,OAAO,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,WAAA,GAAA;AApDiB,QAAA,IAAA,CAAA,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC;AAC9C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACxC,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAuB,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/F,IAAA,CAAA,WAAW,GAAG,MAAM,CAAmB,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACvE,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAkB,SAAS,2DAAC;AACnD,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAkB,SAAS,8DAAC;AAEtD,QAAA,IAAA,CAAA,kCAAkC,GAAG,KAAK,CAAsB,MAAM,8EAAC;AACvE,QAAA,IAAA,CAAA,qCAAqC,GAAG,KAAK,CAAsB,MAAM,iFAAC;AAE1E,QAAA,IAAA,CAAA,0BAA0B,GAAG,KAAK,CAAuB,SAAS,sEAAC;AACnE,QAAA,IAAA,CAAA,6BAA6B,GAAG,KAAK,CAAuB,SAAS,yEAAC;AAEtE,QAAA,IAAA,CAAA,2BAA2B,GAAG,KAAK,CAA+B,SAAS,uEAAC;AAC5E,QAAA,IAAA,CAAA,8BAA8B,GAAG,KAAK,CAA+B,SAAS,0EAAC;AAE9D,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAmC,MAAK;YACnF,OAAO,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS;AACnE,QAAA,CAAC,6DAAC;AACe,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK,sDAAC;AACnC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAmC,SAAS,+DAAC;AAEzE,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACpD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;AACvC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1C,YAAA,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS;YAErC,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;YAClD,OAAO;gBACL,WAAW;gBACX,MAAM;AACN,gBAAA,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,qCAAqC,EAAE,GAAG,IAAI,CAAC,kCAAkC,EAAE;AAC5G,gBAAA,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,8BAA8B,EAAE,GAAG,IAAI,CAAC,2BAA2B,EAAE;AACjG,gBAAA,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC,6BAA6B,EAAE,GAAG,IAAI,CAAC,0BAA0B,EAAE;aACvG;AACH,QAAA,CAAC,gEAAC;QAaA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,WAAW;QAClE,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,2EAA2E;QACnF;AAEA,QAAA,YAAY,CAAC,IAAI,CAAC,oBAAoB;AACnC,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,GAAG,KAAI;AAChB,YAAA,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE;gBAC3B,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YACvC;YACA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,CACtE,SAAS,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CACrE;QACH,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAEpC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAI;YACjC,IAAI,UAAU,EAAE;AACd,gBAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE;YACnC;AACA,YAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC;AAC5E,QAAA,CAAC,CAAC;IACN;IAEQ,aAAa,CAAC,UAAoB,EAAE,mBAA8B,EAAA;QACxE,IAAI,mBAAmB,EAAE;AACvB,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,mBAAmB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,UAAU,CAAC;YACnE;AACA,YAAA,OAAO,EAAE,CAAC,MAAM,CAAC;QACnB;AAEA,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAElD,QAAA,IAAI,iBAAiB,EAAE,cAAc,EAAE;AACrC,YAAA,OAAO,iBAAiB,CAAC,cAAc,EAAE,CAAC,IAAI,CAC5C,SAAS,CAAC,CAAC,WAAW,KAAI;AACxB,gBAAA,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/D,IAAI,CAAC,MAAM,EAAE;oBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,UAAU,CAAC;gBAC7E;AACA,gBAAA,OAAO,EAAE,CAAC,MAAM,CAAC;YACnB,CAAC,CAAC,CACH;QACH;AAEA,QAAA,IAAI,iBAAiB,EAAE,aAAa,EAAE;YACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC1D;AAEA,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC;IAClB;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvF;IACF;AAEQ,IAAA,6BAA6B,CAAC,YAA+B,EAAE,SAAA,GAAgC,MAAM,EAAA;QAC3G,IAAI,CAAC,SAAS,EAAE;QAEhB,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,YAAY,CAAC;YACnD;QACF;QAEA,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE;AAC/C,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAErF,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YAC5B,IAAI,EAAE,EAAE;gBACN,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAS,EAAE,UAAU,EAAE,UAAU,CAAC;YAC/D;AACA,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3B;IACF;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YAC5B,IAAI,EAAE,EAAE;gBACN,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAS,EAAE,UAAU,CAAC;YACtD;QACF;IACF;IAEQ,UAAU,GAAA;QAChB,OAAO,IAAI,CAAC,mBAAmB,EAAE,EAAE,SAAS,GAAG,CAAC,CAAC;IACnD;8GArJW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kCAAA,EAAA,EAAA,iBAAA,EAAA,oCAAA,EAAA,UAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qCAAA,EAAA,EAAA,iBAAA,EAAA,uCAAA,EAAA,UAAA,EAAA,uCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,0BAAA,EAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,8BAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,yCAAyC,EAAE,UAAU,EAAE,KAAK,EAAE;;;MChBxE,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACxC,IAAA,CAAA,WAAW,GAAG,MAAM,CAAuB,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE5F,IAAA,CAAA,UAAU,GAAG,KAAK,CAAmC,SAAS,uDAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;AAE7F,QAAA,IAAA,CAAA,2BAA2B,GAAG,KAAK,CAA+B,SAAS,uEAAC;AAE5E,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAmC,SAAS,iDAAC;AA4B5D,IAAA;IA1BC,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,EAAE;IACjB;IAGA,QAAQ,GAAA;AACN,QAAA,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,sBAAsB,CAAC;AAC/G,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA,YAAA,EAAe,mBAAmB,CAAA,CAAA,CAAG,CAAC,CAAC,OAAO;AACjF,QAAA,MAAM,SAAS,GAAG,CAAC,QAAQ;QAC3B,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS;AAEhD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,EAAE;AAEvD,QAAA,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,QAAQ,MAAM,UAAU,KAAK,SAAS,IAAI,SAAS,CAAC,EAAE;YACpF,IAAI,IAAI,CAAC,WAAW,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE;AACjD,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBAC1B,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;YACzD;QACF;aAAO,IAAI,YAAY,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE;AACpD,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,YAAY,CAAC;QACrD;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC1B;8GAnCW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE;;sBAe5D,YAAY;uBAAC,eAAe;;;MCXlB,YAAY,CAAA;AASvB,IAAA,WAAA,GAAA;AARiB,QAAA,IAAA,CAAA,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;AAEtC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAQ;AAE1C,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAqB,SAAS,kDAAC;QAG3C,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;YACzB,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACvC,gBAAA,IAAI;oBACF,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACtF,wBAAA,IAAI,CAAC;AACF,6BAAA,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE;AACtD,6BAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,6BAAA,SAAS,CAAC;AACT,4BAAA,IAAI,EAAE,CAAC,QAA4B,KAAI;;AAErC,gCAAA,IAAI,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE;oCAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAY,CAAC;oCACtD,MAAM,MAAM,GAAG,MAAK;AAClB,wCAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;wCACxB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3D,oCAAA,CAAC;oCACD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC;oCACtD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,GAAG;gCACjC;;AAEA,gCAAA,IAAI,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE;AAC5B,oCAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gCACnB;4BACF,CAAC;4BACD,KAAK,EAAE,MAAK;;AAEV,gCAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;4BACnB,CAAC;4BACD,QAAQ,EAAE,MAAK;;gCAEb,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;4BACpD,CAAC;AACF,yBAAA,CAAC;oBACN;yBAAO;wBACL,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,GAAG;wBAC/B,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;oBACpD;gBACF;gBAAE,OAAO,KAAK,EAAE;oBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,EAAE,KAAK,CAAC;oBACjD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,GAAG;oBAC/B,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;gBACpD;YACF;AACF,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;IACnD;8GAxDW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE;;sBAMnD;;;ACTH,MAAM,aAAa,CAAA;AAAnB,IAAA,WAAA,GAAA;QACmB,IAAA,CAAA,UAAU,GAAoC,EAAE;AACjE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,oDAAC;IAoBnC;AAlBE,IAAA,OAAO,CAAC,QAAkC,EAAA;QACxC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC1C;IAEA,MAAM,CAAC,KAAa,EAAE,WAAmB,EAAA;QACvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C;AAEA,IAAA,IAAI,CAAC,QAAkC,EAAA;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,QAAA,OAAO,UAAU;IACnB;IAEA,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;IAC3C;AACD;AAEK,MAAO,0BAA8B,SAAQ,gBAAmB,CAAA;AAGpE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AACL,QAAA,IAAY,CAAC,SAAS,GAAG,IAAI,aAAa,EAAE;QAC9C,IAAI,CAAC,QAAQ,GAAI,IAAY,CAAC,SAAS,CAAC,QAAQ;IAClD;AACD;SAEe,gBAAgB,GAAA;IAC9B,IAAI,SAAS,EAAE;QACb,wBAAwB,CAAC,gBAAgB,CAAC;IAC5C;IACA,OAAO,IAAI,0BAA0B,EAAK;AAC5C;;ACrCM,MAAO,mBAAoB,SAAQ,OAAO,CAAA;AAQ9C,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9C,QAAA,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC;AAVV,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAgD,SAAS,sDAAC;AAUnF,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM;QAC1B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;YACvC,IAAI,CAAC,0BAA0B,EAAE;YACjC,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC;YACpE;iBAAO;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;YAC5D;AACF,QAAA,CAAC,CAAC;IACJ;IAES,eAAe,GAAA;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,0BAA0B,EAAE;IACnC;AAES,IAAA,WAAW,CAAC,YAA2B,EAAA;AAC9C,QAAA,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC;QAC/B,IAAI,CAAC,0BAA0B,EAAE;IACnC;IAES,MAAM,GAAA;QACb,KAAK,CAAC,MAAM,EAAE;QACd,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAES,IAAI,GAAA;QACX,KAAK,CAAC,IAAI,EAAE;IACd;IAEQ,0BAA0B,GAAA;AAChC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE;AAC7C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACvH,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;YAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;AACxC,gBAAA,cAAc,CAAC,EAAE,GAAG,UAAU;YAChC;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,UAAU,CAAC;IACnF;AAEQ,IAAA,WAAW,CAAC,EAA6B,EAAA;AAC/C,QAAA,IAAI,CAAC,EAAE;AAAE,YAAA,OAAO,IAAI;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;QACjC,OAAO,OAAO,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI;IACxC;IAEQ,kBAAkB,GAAA;QACxB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;AAClD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;IACnE;IAEQ,gBAAgB,GAAA;QACtB,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;IAChE;IAEQ,sBAAsB,GAAA;QAC5B,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,WAAW;AAC7C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,CAAA,YAAA,EAAe,QAAQ,CAAA,CAAA,EAAI,UAAU,EAAE;QAC1D,OAAO,IAAI,CAAC,WAAW;IACzB;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;AACjC,QAAA,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACnE;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,uBAAuB;YAAE;AACrD,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,KAAoB,KAAI;AACtG,YAAA,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC;gBAAE;YACtD,IAAI,CAAC,IAAI,EAAE;AACb,QAAA,CAAC,CAAC;IACJ;IAES,WAAW,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,uBAAuB,GAAG,SAAS;QAC1C;QACA,KAAK,CAAC,WAAW,EAAE;IACrB;8GAzGW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EADkB,CAAC,YAAY,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FACnD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;;;ACUpF;AACA;AACA;AACA,MAAM,sBAAuB,SAAQ,KAAwB,CAAA;AAC3D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC/B;AACD;AAIM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB,CAAA;AAM5B,IAAA,IAAY,YAAY,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,KAAK,IAAI,sBAAsB,EAAE;QAClD,OAAO,IAAI,CAAC,YAAY;IAC1B;IACA,IAAY,YAAY,CAAC,MAA8B,EAAA;AACrD,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM;IAC5B;AAIA,IAAA,IAAI,YAAY,GAAA;QACd,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACtG,OAAO,IAAI,CAAC,aAAa;IAC3B;AAEA,IAAA,WAAA,GAAA;AApBiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC;AACpC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAU5D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAa,EAAE,CAAC;QASxD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC;AACT,aAAA,IAAI,CACH,cAAc,CAAC,IAAI,CAAC,EACpB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,aAAa,CAAC;aAE1C,SAAS,CAAC,MAAK;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI;AAClD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAChC,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;IAC9B;AAEQ,IAAA,mBAAmB,CAAC,KAAoC,EAAA;AAC9D,QAAA,IAAI,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AAC1B,YAAA,MAAM,WAAW,GAAe;AAC9B,gBAAA;oBACE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW;oBACxC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ;AAC3C,iBAAA;aACF;YACD,MAAM,OAAO,GAAc,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;AACxG,YAAA,MAAM,SAAS,GAAa,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC;AAC5D,YAAA,MAAM,cAAc,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACzE,IAAI,cAAc,EAAE;gBAClB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC;YACtD;YACA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC;AAC5D,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC;QAC7C;AAAO,aAAA,IAAI,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;YACpC,MAAM,WAAW,GAAe,EAAE;YAClC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC;AAC1C,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC;QAC7C;aAAO,IAAI,KAAK,EAAE;AAChB,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC;QAC5C;IACF;AAEQ,IAAA,aAAa,CAAC,KAAoC,EAAE,SAAmB,EAAE,WAAuB,EAAA;AACtG,QAAA,IAAI,KAAK,EAAE,GAAG,EAAE;YACd,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AACnE,YAAA,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE;gBAC3B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC;YACrD;YAEA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC;QAC7D;IACF;AAEQ,IAAA,gBAAgB,CAAC,KAA6B,EAAE,QAAkB,EAAE,WAAuB,EAAA;AACjG,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAC5B,YAAA,MAAM,UAAU,GAAa;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC;gBAChD,UAAU,EAAE,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;aACrC;AACD,YAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;QAC9B;aAAO;AACL,YAAA,MAAM,UAAU,GAAa;AAC3B,gBAAA,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;aACrC;AACD,YAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;QAC9B;IACF;IAEQ,QAAQ,CAAC,IAAU,EAAE,MAAgB,EAAA;QAC3C,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,UAAU,EAAE;YAC9C,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC;QAC3C;AACA,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B;AAEA,IAAA,QAAQ,CAAC,KAA2B,EAAA;AAClC,QAAA,MAAM,eAAe,GAAG;YACtB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxD,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACzD;AACD,QAAA,IAAI,eAAe,CAAC,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,YAAiB,KAAI;AACzE,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;oBACxB,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC3B,wBAAA,GAAG,CAAC;wBACJ,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;wBACrC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;AACtC,qBAAA,CAAC,CAAC;AACJ,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AACxB,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA,CAAC;QACJ;IACF;8GArHW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFJ,KAAK,EAAA,CAAA,CAAA;;AAElB,iBAAiB,GAAA,UAAA,CAAA;AAD7B,IAAA,YAAY;AACA,CAAA,EAAA,iBAAiB,CAsH7B;2FAtHY,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAF7B,UAAU;mBAAC,EAAE,UAAU,EAAE,KAAK,EAAE;;;AClBjC;;AAEG;AACI,eAAe,iBAAiB,CAAC,UAAsB,EAAA;AAC5D,IAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAClC,QAAA,OAAO,UAAU;IACnB;AAAO,SAAA,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;AAC3C,QAAA,MAAM,MAAM,GAAG,UAAU,EAAE;AAC3B,QAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,MAAM;IAC3D;SAAO;QACL,OAAO,MAAM,UAAU;IACzB;AACF;AAEA;;AAEG;AACI,eAAe,YAAY,CAAC,MAAc,EAAE,MAA2B,EAAE,IAAU,EAAA;AACxF,IAAA,IAAI,MAAM,CAAC,UAAU,EAAE;QACrB,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC;QAC/D,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC;IACvC;SAAO,IAAI,UAAU,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;AACxE,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IACvB;SAAO,IAAI,gBAAgB,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,UAAU,EAAE;QACpF,MAAM,CAAC,cAAc,EAAE;IACzB;AACF;AAEA;;AAEG;SACa,gBAAgB,CAAC,MAAc,EAAE,MAA2B,EAAE,IAAU,EAAA;IACtF,KAAK,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AACzC;;MC9Ba,WAAW,CAAA;AAKtB,IAAA,WAAA,GAAA;AAJQ,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEnC,IAAA,CAAA,UAAU,GAAsC,EAAE;AAGhD,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;QAEhC,IAAI,CAAC,UAAU,GAAG;AAChB,YAAA,QAAQ,EAAE,IAAI,YAAY,CAAC,MAAM,CAAC;AAClC,YAAA,OAAO,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC;AAChC,YAAA,IAAI,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC;SAC3B;IACH;AAEA,IAAA,SAAS,CAAC,KAAU,EAAE,YAAwB,EAAE,QAAc,EAAA;QAC5D,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC/B,YAAA,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,IAAI,CAAC,QAAQ;AACrB,YAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACvC,SAAA,CAAC;QACF,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;IACxC;AAEA,IAAA,UAAU,CAAC,KAAU,EAAE,SAAc,EAAE,GAAG,QAAe,EAAA;QACvD,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,KAAK;QACd;aAAO;;YAEL,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;gBAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AACvC,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC;gBAC3C;qBAAO;oBACL,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;gBACxC;YACF;iBAAO;AACL,gBAAA,OAAO,KAAK;YACd;QACF;IACF;8GA7CW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;MCwFY,mBAAmB,CAAA;IAS9B,IACI,oBAAoB,CAAC,GAAwC,EAAA;AAC/D,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG;QACxB,IAAI,CAAC,yBAAyB,EAAE;IAClC;AAuFA,IAAA,WAAA,GAAA;AAnGiB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QAC5B,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACvE,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAQ1D,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAqB,SAAS,kDAAC;AAE7C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAE/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,IAAI,4DAAC;AAEvC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;;AAGjC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,uDAAC;AAElD,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAU,KAAK,iEAAC;AAE7C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,qDAAC;AAEhD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,EAAE,mDAAC;AAE7B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAiC,SAAS,yDAAC;AAEhE,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,IAAI,2DAAC;AAEtC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,KAAK,6DAAC;AAEzC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAsB,SAAS,0DAAC;AAEtD,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAgC,SAAS,oEAAC;QAE1E,IAAA,CAAA,IAAI,GAAG,MAAM,EAAQ;AAErB,QAAA,IAAA,CAAA,yBAAyB,GAAG,YAAY,CAA+B,0BAA0B,qEAAC;AAElG,QAAA,IAAA,CAAA,6BAA6B,GAAG,YAAY,CAA+B,8BAA8B,yEAAC;QAE1G,IAAA,CAAA,gBAAgB,GAA2B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACxE,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAC/B,SAAS,CAAC,CAAC,OAAO,KAAI;YACpB,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QACxG,CAAC,CAAC,EACF,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAI;YACtC,OAAO,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,IAAI,CACvD,GAAG,CAAC,CAAC,eAAe,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC,CAC9D;QACH,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC,6BAA6B,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAC9G;AACD,QAAA,IAAA,CAAA,cAAc,GAAyB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAC7B,SAAS,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,CACtE;AAKD,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAU,KAAK,gEAAC;AAE7C,QAAA,IAAA,CAAA,4BAA4B,GAAG,MAAM,CAAS,oBAAoB,wEAAC;AACnE,QAAA,IAAA,CAAA,8BAA8B,GAAG,MAAM,CAAS,uDAAuD,0EAAC;AACxG,QAAA,IAAA,CAAA,+BAA+B,GAAG,MAAM,CAAS,mEAAmE,2EAAC;AACrH,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAAC,MAAK;AACvC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;YACxC,IAAI,UAAU,EAAE;AACd,gBAAA,OAAO,IAAI,CAAC,4BAA4B,EAAE;YAC5C;AACA,YAAA,IAAI,UAAU,KAAK,KAAK,EAAE;AACxB,gBAAA,OAAO,IAAI,CAAC,8BAA8B,EAAE;YAC9C;AACA,YAAA,OAAO,IAAI,CAAC,+BAA+B,EAAE;AAC/C,QAAA,CAAC,oEAAC;AAEF,QAAA,IAAA,CAAA,2BAA2B,GAAG,MAAM,CAAS,mDAAmD,uEAAC;AACjG,QAAA,IAAA,CAAA,6BAA6B,GAAG,MAAM,CAAS,qDAAqD,yEAAC;AACrG,QAAA,IAAA,CAAA,8BAA8B,GAAG,MAAM,CAAS,6DAA6D,0EAAC;AAC9G,QAAA,IAAA,CAAA,uBAAuB,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;YAC5C,IAAI,cAAc,EAAE;gBAClB,OAAO,CAAA,EAAG,IAAI,CAAC,2BAA2B,EAAE,WAC1C,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,wBAAwB,EAAG,GAAG,CAC5E,CAAA,CAAE;YACJ;AACA,YAAA,IAAI,cAAc,KAAK,KAAK,EAAE;AAC5B,gBAAA,OAAO,IAAI,CAAC,6BAA6B,EAAE;YAC7C;AACA,YAAA,OAAO,IAAI,CAAC,8BAA8B,EAAE;AAC9C,QAAA,CAAC,mEAAC;AAGA,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CACjB,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,EAC5D,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CACzC,GAAG,CAAC,CAAC,SAAS,MAAM;AAClB,YAAA,QAAQ,EAAE;gBACR,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,UAAU,EAAE,SAAS,CAAC,OAAO;AAC9B,aAAA;YACD,IAAI,EAAE,SAAS,CAAC,aAAa;SAC9B,CAAC,CAAC,CACJ,CACF;IACH;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CACpD,GAAG,CAAC,MAAK;gBACP,UAAU,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC,CACH;QACH;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAC5D,GAAG,CAAC,MAAK;gBACP,UAAU,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC,CACH;QACH;IACF;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,yBAAyB,EAAE;IAClC;AAEA,IAAA,QAAQ,CAAC,MAAc,EAAA;QACrB,QAAQ,MAAM;AACZ,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAChB;AACF,YAAA;gBACE;;IAEN;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;IACrC;AAEO,IAAA,iBAAiB,CAAC,IAAsB,EAAA;QAC7C,IAAI,KAAK,GAAG,EAAE;QACd,IAAI,IAAI,CAAC,IAAI;YAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,0BAA0B,CAAC;QAC3E,IAAI,IAAI,CAAC,aAAa;AAAE,YAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC;AAC5E,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,mBAAmB,CAAC,OAAiB,EAAA;AAC3C,QAAA,OAAO;aACJ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ;AACjC,aAAA,MAAM,CAAC,CAAC,CAAC,KAAI;AACZ,YAAA,IAAI,CAAC,CAAC,WAAW,EAAE;gBACjB,OAAO,CAAC,CAAC,aAAa;YACxB;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,qBAAqB,CAAC,OAAiB,EAAA;AAC7C,QAAA,OAAO;aACJ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,YAAY;AACrC,aAAA,MAAM,CAAC,CAAC,CAAC,KAAI;AACZ,YAAA,IAAI,CAAC,CAAC,WAAW,EAAE;gBACjB,OAAO,CAAC,CAAC,aAAa;YACxB;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,+BAA+B,CAAC,OAAiB,EAAA;AACvD,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,oBAAoB,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAC1E,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QACxD,OAAO,cAAc,EAAE,CAAC,IAAI,CAC1B,GAAG,CAAC,CAAC,WAAW,KAAI;AAClB,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AAC/B,gBAAA,IAAI,MAAM,CAAC,UAAU,EAAE;oBACrB,OAAO,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAW,CAAC;gBACjD;AACA,gBAAA,OAAO,IAAI;AACb,YAAA,CAAC,CAAC;QACJ,CAAC,CAAC,CACH;IACH;AAEQ,IAAA,wBAAwB,CAAC,OAAiB,EAAA;AAChD,QAAA,MAAM,eAAe,GAAG;YACtB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1D,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D;QACD,OAAO,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;IACrF;IAEQ,6BAA6B,CAAC,OAAiB,EAAE,YAAuC,EAAA;QAC9F,OAAO,OAAO,CAAC,GAAG,CAAW,CAAC,CAAC,MAAM;YACnC,EAAE,EAAE,CAAC,CAAC,EAAE;AACR,YAAA,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK;YACtD,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,YAAA,cAAc,EAAE;AACd,gBAAA,YAAY,EAAE,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK;AAC7D,gBAAA,YAAY,EAAE,OAAO;AACrB,gBAAA,eAAe,EAAE,KAAK;AACvB,aAAA;AACD,YAAA,UAAU,EAAE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,GAAG,CAAC,CAAC,UAAU,GAAG,SAAS;YACvE,OAAO,EAAE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,GAAG,SAAS,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9F,QAAQ,EAAE,CAAC,CAAC,QAAQ;AACrB,SAAA,CAAC,CAAC;IACL;IAEA,MAAM,aAAa,CAAC,MAAc,EAAA;QAChC,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IACzC;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa;QACxD,IAAI,CAAC,cAAc,EAAE;YACnB;QACF;QAEA,MAAM,eAAe,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAA,0CAAA,CAA4C,CAAC;QACrG,eAAe,CAAC,OAAO,CAAC,CAAC,IAAa,EAAE,KAAa,KAAI;YACvD,MAAM,IAAI,GAAI,IAAoB,EAAE,SAAS,EAAE,IAAI,EAAE;AACrD,YAAA,IAAI,CAAC,IAAI;gBAAE;AAEX,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,uCAAuC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;gBAC/G,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC;AAC3D,YAAA,CAAC,CAAC;YAEF,IAAI,KAAK,KAAK,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC;YAC1D;AACF,QAAA,CAAC,CAAC;IACJ;8GAjPW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EASM,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvGhD,k2QA4KA,EAAA,MAAA,EAAA,CAAA,2+CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,WAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD9Ea,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,k2QAAA,EAAA,MAAA,EAAA,CAAA,2+CAAA,CAAA,EAAA;;sBAWpC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;AAmCuB,aAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,0BAA0B,0FAEtB,8BAA8B,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AExF3G;;;;;AAKG;MAOU,qBAAqB,CAAA;AA8BhC,IAAA,IAAI,0BAA0B,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,QAAQ;IAClD;AAsCA,IAAA,WAAA,GAAA;AArEiB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACtD,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,EAAE,kDAAC;AAC1B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,qDAAC;AAEhD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAE/B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAuB,OAAO,oDAAC;AAE/C,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,KAAK,6DAAC;AAEzC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,EAAE,mDAAC;AAC7B,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAgB,IAAI,8DAAC;AAE/C,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAkB,SAAS,kEAAC;AAC1D,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAU,KAAK,gEAAC;AAC5C,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAU,KAAK,+DAAC;QAC3C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAqB,WAAW,EAAE,CAAC,eAAe,oDAAC;QAEnE,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAQ;QACf,IAAA,CAAA,QAAQ,GAAG,gBAAgB,EAAQ;QAEnC,IAAA,CAAA,2BAA2B,GAAG,gBAAgB,EAAgC;QACxF,IAAA,CAAA,eAAe,GAAG,MAAM,EAAwB;QAChD,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAA8B;AAC5D,QAAA,IAAA,CAAA,yBAAyB,GAAG,YAAY,CAAmB,0BAA0B,qEAAC;AAEtF,QAAA,IAAA,CAAA,6BAA6B,GAAG,YAAY,CAAmB,8BAA8B,yEAAC;AAM9F,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAwB,SAAS,qDAAC;QAC1D,IAAA,CAAA,mBAAmB,GAAG,eAAe,CAAkB,eAAe,gEAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AAE9F,QAAA,IAAA,CAAA,qBAAqB,GAAG,SAAS,CAAyB,uBAAuB,iEAAC;AAElF,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAU,KAAK,uDAAC;AAEpC,QAAA,IAAA,CAAA,oBAAoB,GAAW;AAC7B,YAAA,EAAE,EAAE,sBAAsB;AAC1B,YAAA,cAAc,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE;AAC3C,YAAA,IAAI,EAAE,QAAQ;SACf;AAED,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAW,EAAE,yDAAC;AAEpC,QAAA,IAAA,CAAA,sBAAsB,GAA+B,EAAE,CAAC,IAAI,CAAC;QAC7D,IAAA,CAAA,YAAY,GAAuD,aAAa,CAAC;AAC/E,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAC/B,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EACpB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CACtD;AACD,YAAA,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7D,SAAA,CAAC,CAAC,IAAI,CACL,YAAY,CAAC,GAAG,CAAC,EACjB,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KACd,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CACjC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM;AACtB,YAAA,GAAG,GAAG;AACN,YAAA,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,SAAS,GAAG,SAAS;AAC5D,SAAA,CAAC,EACF,EAAE,CACH,CACF,CACF;AACD,QAAA,IAAA,CAAA,8BAA8B,GAA+C,IAAI,YAAY,EAAE;QAG7F,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;YAChC,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC;AACpC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,oBAAA,cAAc,EAAE,QAAQ;AACzB,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,OAAO,EAAE;YACd,SAAS,CAAC,MAAK;gBACb,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,UAAU,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,qBAAqB,EAAE;AAE5B,QAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAEzD,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACvD,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,gBAAA,oBAAoB,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI;AAC3C,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/C,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAChC,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAClF,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,MAAM,CAAC,CAAC;IAC5C;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,MAAM,OAAO,KAAK,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC,CAAC;IACjF;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACtB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACtB;IAEA,mBAAmB,GAAA;QACjB,MAAM,aAAa,GAAa,EAAE;AAElC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACtD,YAAA,oBAAoB,CAAC,QAAQ;AAC3B,gBAAA,IAAI,CAAC,QAAQ,EAAE,KAAK;AAClB,sBAAE;sBACA,6CAA6C;AACnD,YAAA,oBAAoB,CAAC,QAAQ;AAC3B,gBAAA,IAAI,CAAC,QAAQ,EAAE,KAAK;AAClB,sBAAE;sBACA,+CAA+C;AAErD,YAAA,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAC1C;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D;IAEA,qBAAqB,GAAA;AACnB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,EAAE,EAAE,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC3F,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,YAAiB,KAAI;AAC1C,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;AAC/B,gBAAA,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAU,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjF,gBAAA,YAAY,CAAC,aAAa,GAAG,IAAI;YACnC;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,aAAa,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,eAAe,EAAE;QACxB;IACF;AAEQ,IAAA,SAAS,CAAC,OAAe,EAAA;QAC/B,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CACpC,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,OAAO,CACnF;IACH;IAEQ,qBAAqB,GAAA;QAC3B,MAAM,CAAC,MAAK;YACV,IAAI,aAAa,GAAG,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBAClB,aAAa,GAAG,2CAA2C;YAC7D;AAAO,iBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBACxD,aAAa,GAAG,4CAA4C;YAC9D;iBAAO;gBACL,aAAa,GAAG,+CAA+C;YACjE;YAEA,cAAc,CACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE;gBAChC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI;AACvF,aAAA,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,cAAsB,KAAI;gBAChC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC;AACvD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;8GApLW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,41DAFrB,EAAE,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAoCmC,SAAS,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,EACF,eAAe,gNCnGxE,kvGAsFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,uCAAA,EAAA,4BAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDtBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;iCACI,KAAK,EAAA,QAAA,EACP,mBAAmB,EAAA,SAAA,EAElB,EAAE,EAAA,QAAA,EAAA,kvGAAA,EAAA;;sBAuBZ;;sBAEA;AAG0D,aAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,0BAA0B,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAEtB,8BAA8B,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAM7C,SAAS,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACF,eAAe,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,6EAEnC,uBAAuB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEjGtE,iBAAiB,CAAA;AAK5B,IAAA,WAAA,GAAA;AAJiB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACxC,IAAA,CAAA,WAAW,GAAG,MAAM,CAAmB,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACvE,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAG/E,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;QAEtC,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC;QACvF;AACA,QAAA,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IACpC;IACA,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE;YAChD,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBAClD,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;YACzD;QACF;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAC5B;IACF;8GArBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE;;;ACUrD,MAAO,0BAA2B,SAAQ,mBAAmB,CAAA;AAQjE,IAAA,IACI,oBAAoB,GAAA;QACtB,OAAO,IAAI,CAAC,OAAO;IACrB;IACA,IAAI,oBAAoB,CAAC,KAAoD,EAAA;AAC3E,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACzC;IAES,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;IACpC;IAES,eAAe,GAAA;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,UAAU,CAAC,MAAK;;;AAGd,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACjB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW;gBACtF,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7C,CAAC,EAAE,IAAI,CAAC;YACR,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC/G,CAAC,EAAE,CAAC,CAAC;IACP;AACA,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAElC,QAAA,KAAK,EAAE;AApCT,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAK;AAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACjB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW;gBACtF,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7C,CAAC,EAAE,IAAI,CAAC;AACV,QAAA,CAAC,CAAC;AAgCA,QAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,UAAU,CAAC;AACrE,QAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC;AAC9D,QAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC;AACjE,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC7C;8GA3CW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EADwC,CAAC,YAAY,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAChF,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,wBAAwB,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE;;sBAS5F;;;MClBU,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAmB,WAAW,CAAC;AAEhD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,sDAAU;AAKvC,IAAA;IAHC,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;IAC3B;8GAPW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE;;;MCE9C,cAAc,CAAA;AAKzB,IAAA,WAAA,GAAA;AAJiB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACxC,IAAA,CAAA,WAAW,GAAG,MAAM,CAAmB,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACvE,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAG/E,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;QAEtC,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC;QACpF;IACF;IACA,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAE;YAC7C,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBAClD,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;YACzD;QACF;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAC5B;IACF;8GApBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE;;;MCK3C,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,kFCRtC,+GAIM,EAAA,MAAA,EAAA,CAAA,iPAAA,CAAA,EAAA,CAAA,CAAA;;2FDIO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,uBAAuB,EAAA,QAAA,EAAA,+GAAA,EAAA,MAAA,EAAA,CAAA,iPAAA,CAAA,EAAA;;;MEGtB,yBAAyB,CAAA;AAYpC,IAAA,WAAA,GAAA;AAXiB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAE7C,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAU,KAAK,+DAAC;AAC3C,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,KAAK,2DAAC;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,KAAK,yDAAC;QAMnC,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,sBAAsB,EAAE;AAC/B,QAAA,CAAC,CAAC;IACJ;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC;QAChE,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAClD,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,QAAQ;AACvC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,qBAAqB;QACtD;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;IACtE;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC9B,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;gBAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,yBAAyB,CAAC;YACtF;iBAAO;gBACL,IAAI,CAAC,aAAa,EAAE;YACtB;QACF;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC7B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;YAC7B;iBAAO;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC;AACnE,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,oBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC7B;YACF;QACF;IACF;8GA9CW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;MCSY,6BAA6B,CAAA;AAwBxC,IAAA,WAAA,GAAA;AAvBS,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAS,EAAE,4DAAC;AAEpC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,mDAAC;AACtC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,0DAAC;AAClC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAS,EAAE,2DAAC;AACnC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,0DAAC;QAElC,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAA8B;QAC5D,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAAsC;AAEpE,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAW,MAAK;AAC9C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAChD,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAE9C,YAAA,OAAO;iBACJ,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,IAAI,EAAE;AAC1C,iBAAA,MAAM,CAAC,CAAC,eAAe,CAAC;AACxB,iBAAA,MAAM,CAAC,CAAC,gBAAgB,CAAC;iBACzB,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;iBACzB,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC;AACnF,QAAA,CAAC,wDAAC;QAGA,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACxC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;AAEpC,YAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;AACvB,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,oBAAA,oBAAoB,EAAE,QAAQ;AAC/B,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAExC,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,cAAc,EAAE,EAAE;AACtC,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,gBAAA,oBAAoB,EAAE,QAAQ;AAC/B,aAAA,CAAC;YACF;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAC5C,CAAC,CAAC,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,CACpE;AAED,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,YAAA,oBAAoB,EAAE,QAAQ;AAC9B,YAAA,gBAAgB,EAAE,aAAa;AAChC,SAAA,CAAC;IACJ;AAEA,IAAA,oBAAoB,CAAC,KAAwB,EAAA;QAC3C,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,EAAE,EAAE;YACzC;QACF;;QAGA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QAEtC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAEhG,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;AACzE,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,oBAAoB,EAAE,KAAK,CAAC,KAAK;AACjC,YAAA,gBAAgB,EAAE,aAAa;AAChC,SAAA,CAAC;IACJ;8GAxEW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,+8BCf1C,s1BAqBA,EAAA,MAAA,EAAA,CAAA,8CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDNa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YAEP,4BAA4B,EAAA,QAAA,EAAA,s1BAAA,EAAA,MAAA,EAAA,CAAA,8CAAA,CAAA,EAAA;;;MEL3B,mBAAmB,CAAA;AALhC,IAAA,WAAA,GAAA;AAME;;AAEG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AAEzB;;AAEG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,sDAAC;AAClD,IAAA;8GAVY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,mVCPhC,kGAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDIa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,aAAa,EAAA,QAAA,EAAA,kGAAA,EAAA;;;MEGZ,4BAA4B,CAAA;AALzC,IAAA,WAAA,GAAA;AAME;;AAEG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAA4B,YAAY,kDAAC;AAEvD;;;;AAIG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAA4B,IAAI,sDAAC;AAEnD;;AAEG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,sDAAC;AAClD,IAAA;8GAjBY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,ueCPzC,iJAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDIa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,uBAAuB,EAAA,QAAA,EAAA,iJAAA,EAAA;;;MEoBtB,kCAAkC,CAAA;AA+D7C,IAAA,WAAA,GAAA;AA9DS,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,mDAAC;AACtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAoB,EAAE,4DAAC;AAC/C,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,0DAAC;AAClC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,0DAAC;AAClC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAS,EAAE,2DAAC;AACnC,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAS,EAAE,8DAAC;AACtC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAS,EAAE,+DAAC;AACvC,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAS,EAAE,kEAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAS,EAAE,2DAAC;AACnC,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAS,EAAE,8DAAC;AACtC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAS,EAAE,+DAAC;AACvC,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAS,EAAE,kEAAC;AAC1C,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAS,EAAE,6DAAC;AACrC,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAS,EAAE,gEAAC;AACxC,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAS,EAAE,iEAAC;AACzC,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAS,EAAE,oEAAC;AAC5C,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAS,EAAE,8DAAC;AACtC,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAS,EAAE,iEAAC;AACzC,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAS,EAAE,gEAAC;AACxC,QAAA,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAS,EAAE,mEAAC;AAE3C,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,8DAAC;AAC1C,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAmB,OAAO,gEAAC;QAEvD,IAAA,CAAA,sBAAsB,GAAG,MAAM,EAA+B;QAC9D,IAAA,CAAA,yBAAyB,GAAG,MAAM,EAA4B;QAC9D,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAA2C;AAEzE,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAoB,EAAE,8DAAC;AAClD,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAoB,EAAE,iEAAC;AACrD,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAU,KAAK,mEAAC;AAChD,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAmB,OAAO,qEAAC;AAC7D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,KAAK,mDAAC;QAEhC,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAA+C;AAC/E,YAAA;AACE,gBAAA,KAAK,EAAE,+DAA+D;AACtE,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,gEAAgE;AACvE,gBAAA,KAAK,EAAE,OAAO;AACf,aAAA;AACF,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAEO,IAAA,CAAA,aAAa,GAAG,MAAM,CAAsC;AACnE,YAAA;AACE,gBAAA,KAAK,EAAE,8DAA8D;AACrE,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,6DAA6D;AACpE,gBAAA,KAAK,EAAE,KAAK;AACb,aAAA;AACF,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEe,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,OAAO;AACpD,YAAA,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE;AACjC,YAAA,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACtC,SAAA,CAAC,8DAAC;QAGD,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,gBAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC7C,gBAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAC1C,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,YAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC7C,YAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAC1C,SAAA,CAAC;IACJ;IAEA,2CAA2C,GAAA;AACzC,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAE5D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5F,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3D,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/D,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAEvB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;AACjE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;AAErE,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;AACrF,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC;AACtF,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,gBAAA,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACpD,aAAA,CAAC;QACJ;QAEA,IACE,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,CAAC,uBAAuB,EAAE;YAC5D,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,CAAC,yBAAyB,EAAE,EAChE;AACA,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;AAClC,gBAAA,kBAAkB,EAAE,IAAI,CAAC,uBAAuB,EAAE;AAClD,gBAAA,oBAAoB,EAAE,IAAI,CAAC,yBAAyB,EAAE;AACvD,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,gBAAA,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACnD,gBAAA,kBAAkB,EAAE;AAClB,oBAAA,MAAM,EAAE,IAAI,CAAC,uBAAuB,EAAE;AACtC,oBAAA,QAAQ,EAAE,IAAI,CAAC,yBAAyB,EAAE;AAC3C,iBAAA;AACD,gBAAA,oBAAoB,EAAE,IAAI,CAAC,cAAc,EAAE;AAC5C,aAAA,CAAC;QACJ;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;8GA7HW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,+3HCxB/C,8wKA6GA,EAAA,MAAA,EAAA,CAAA,k8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,cAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,EAAAd,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDrFa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,kCAAkC,EAAA,QAAA,EAAA,8wKAAA,EAAA,MAAA,EAAA,CAAA,k8BAAA,CAAA,EAAA;;;AEN9C,MAAM,gBAAgB,GAAqB;AACzC,IAAA;AACE,QAAA,EAAE,EAAE,gCAAgC;QACpC,IAAI,EAAE,UAAU,CAAC,IAAI;AACrB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,UAAU,EAAE,uCAAuC;AACnD,QAAA,QAAQ,EAAE,uCAAuC;AAClD,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,gCAAgC;QACpC,IAAI,EAAE,UAAU,CAAC,QAAQ;AACzB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,UAAU,EAAE,uCAAuC;AACnD,QAAA,QAAQ,EAAE,uCAAuC;AAClD,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,iCAAiC;QACrC,IAAI,EAAE,UAAU,CAAC,KAAK;AACtB,QAAA,MAAM,EAAE,OAAO;AACf,QAAA,UAAU,EAAE,wCAAwC;AACpD,QAAA,QAAQ,EAAE,wCAAwC;AACnD,KAAA;CACF;MAWY,4BAA4B,CAAA;AANzC,IAAA,WAAA,GAAA;AAOE,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAgB,EAAE,gEAAC;AAE/C,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAA4B,OAAO,kDAAC;QAElD,IAAA,CAAA,oBAAoB,GAAG,MAAM,EAA6B;QAC1D,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAAqC;AAEnE,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAExG,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAevG,IAAA;IAbC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACtB,SAAA,CAAC;IACJ;AAEA,IAAA,sBAAsB,CAAC,KAA6D,EAAA;QAClF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5C,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;AACrB,SAAA,CAAC;IACJ;8GAxBW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,qgBC/CzC,6rBAgBA,EAAA,MAAA,EAAA,CAAA,mOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,EAAAW,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD+Ba,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,2BAA2B,EAAA,QAAA,EAAA,6rBAAA,EAAA,MAAA,EAAA,CAAA,mOAAA,CAAA,EAAA;;;IE3C3B;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACrC,CAAC,EANW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;MCAT,WAAW,CAAA;AACf,IAAA,OAAO,gBAAgB,CAAC,IAAS,EAAE,KAAU,EAAA;AAClD,QAAA,IAAI,IAAI,IAAI,KAAK,EAAE;AACjB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC1B,gBAAA,OAAO,KAAK,CAAC,IAAI,CAAC;YACpB;iBAAO,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;AACnC,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB;iBAAO;gBACL,MAAM,MAAM,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;gBACzC,IAAI,KAAK,GAAG,IAAI;AAChB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;AACjD,oBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,wBAAA,OAAO,IAAI;oBACb;oBACA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC1B;AACA,gBAAA,OAAO,KAAK;YACd;QACF;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;IAEO,OAAO,UAAU,CAAC,GAAQ,EAAA;AAC/B,QAAA,OAAO,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC;IAC5D;AACD;;ACAK,SAAU,aAAa,CAAoC,EAAK,EAAA;IACpE,MAAM,QAAQ,GAA4B,EAAE;AAE5C,IAAA,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAAE;AAElD,QAAA,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YAC5F,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAA4B,CAAC;AAClE,YAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAC1B,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;oBAAE;AAE1D,gBAAA,QAAQ,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAI,UAAkB,CAAC,CAAC,CAAC;YAChD;QACF;aAAO;YACL,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB;IACF;AACA,IAAA,OAAO,QAAqB;AAC9B;;ICpCY;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,UAAsB;AACtB,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,WAAwB;AACxB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,UAAsB;AACtB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,IAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,iBAAsC;AACtC,IAAA,UAAA,CAAA,uBAAA,CAAA,GAAA,oBAA4C;AAC5C,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,YAA2B;AAC7B,CAAC,EAbW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;MCKT,YAAY,CAAA;IACvB,WAAA,CACY,MAAc,EACd,gBAAkC,EAAA;QADlC,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IACzB;AAEH,IAAA,cAAc,CACZ,KAAwB,EACxB,OAA0B,EAC1B,mBAA4B,EAC5B,iBAA0B,EAAA;AAE1B,QAAA,IAAI,mBAAmB,IAAI,iBAAiB,EAAE;YAC5C,IAAI,eAAe,GAAa,EAAE;AAClC,YAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,eAAe,CAAC;AAC5F,YAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC9B,gBAAA,eAAe,GAAG;AAChB,oBAAA,GAAG,eAAe;AAClB,oBAAA,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAC1F;AACH,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,eAAe,CAAC,MAAM,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CACpD,GAAG,CAAC,CAAC,gBAAwC,KAAI;oBAC/C,MAAM,YAAY,GAA2C,EAAE;AAC/D,oBAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC9B,wBAAA,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CACrC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACf,4BAAA,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;AACvD,4BAAA,gBAAgB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;AACpE,yBAAA,CAAC,CACH;AACH,oBAAA,CAAC,CAAC;AACF,oBAAA,OAAO,YAAY;gBACrB,CAAC,CAAC,CACH;YACH;QACF;AACA,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC;IACf;IAEA,WAAW,CACT,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAwE,EACrG,mBAA4B,EAAA;QAE5B,IAAI,CAAC,mBAAmB,EAAE;AACxB,YAAA,OAAO,KAAK;QACd;QACA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KACvB;aACG,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ;aAC/B,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI;AAC7E,aAAA,KAAK,CAAC,CAAC,cAAc,KACpB;aACG,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,KAAK,cAAc;AACrD,aAAA,IAAI,CAAC,CAAC,MAAM,KAAI;YACf,MAAM,KAAK,GAAG,CACZ,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;AAChG,gBAAA,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,GAClD,QAAQ,EAAE;AACb,YAAA,QAAQ,MAAM,CAAC,UAAU;AACvB,gBAAA,KAAK,SAAS;gBACd,KAAK,UAAU,CAAC,MAAM;oBACpB,OAAO,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACvC,gBAAA,KAAK,UAAU,CAAC,YAAY,EAAE;AAC5B,oBAAA,OAAO,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK;gBACxC;AACA,gBAAA;AACE,oBAAA,OAAO,IAAI;;QAEjB,CAAC,CAAC,CACL,CACJ;IACH;AAEA,IAAA,SAAS,CACP,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,CAK9C,EACD,OAA0B,EAC1B,iBAA0B,EAAA;AAE1B,QAAA,IAAI,CAAC,iBAAiB,IAAI,UAAU,KAAK,EAAE,EAAE;AAC3C,YAAA,OAAO,KAAK;QACd;AACA,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC;AACvD,QAAA,IAAI,SAAiC;AACrC,QAAA,IAAI,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,IAAI,IAAI,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,aAAa,EAAE;AAC7F,YAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACf,gBAAA,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE,UAAU,CAAS;AACnD,gBAAA,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE,UAAU,CAAS;AACpD,aAAA,CAAC,CACH;QACH;aAAO;AACL,YAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;gBACf,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE;gBACvD,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE;AACxD,aAAA,CAAC,CACH;QACH;QACA,IAAI,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,eAAe,EAAE;AACrD,YAAA,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC;QACtC;AACA,QAAA,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC1F;AAEA,IAAA,YAAY,CAAC,KAAwB,EAAA;AACnC,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3C;AAEA,IAAA,qBAAqB,CACnB,mBAA2C,EAC3C,UAAkB,EAClB,aAAgC,EAAA;QAEhC,IAAI,SAAS,GAAG,CAAC;QACjB,IAAI,aAAa,KAAA,WAAA,oCAAkC;YACjD,SAAS,GAAG,CAAC;QACf;aAAO,IAAI,aAAa,KAAA,YAAA,qCAAmC;YACzD,SAAS,GAAG,CAAC,CAAC;QAChB;AACA,QAAA,OAAO,CAAC,KAAK,EAAE,KAAK,KAAI;AACtB,YAAA,IAAI,SAAS,KAAK,CAAC,EAAE;AACnB,gBAAA,OAAO,CAAC;YACV;AACA,YAAA,IAAI,MAAM;AACV,YAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACnF,YAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAEnF,YAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;gBAAE,MAAM,GAAG,CAAC,CAAC;AAC5C,iBAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;gBAAE,MAAM,GAAG,CAAC;AAChD,iBAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;gBAAE,MAAM,GAAG,CAAC;iBAChD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAC/D,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;iBAChF;AACH,gBAAA,IAAI,MAAM,GAAG,MAAM,EAAE;oBACnB,MAAM,GAAG,CAAC,CAAC;gBACb;AAAO,qBAAA,IAAI,MAAM,GAAG,MAAM,EAAE;oBAC1B,MAAM,GAAG,CAAC;gBACZ;qBAAO;oBACL,MAAM,GAAG,CAAC;gBACZ;YACF;YACA,OAAO,SAAS,GAAG,MAAM;AAC3B,QAAA,CAAC;IACH;AACD;;AC7JD;AACM,MAAO,cAAe,SAAQ,aAAa,CAAA;AAM/C,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEnD,QAAA,KAAK,EAAE;AAPQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAStC,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;IAC5C;AACS,IAAA,SAAS,CAAC,KAAa,EAAA;QAC9B,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,IAAI;QAC9F,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC9C,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,gBAAA,OAAO,MAAM,CAAC,UAAU,CAAC,MAAK;AAC5B,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;gBAC9D,CAAC,EAAE,YAAY,CAAC;YAClB;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;AAClD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;AAChD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC7C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;AAClD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;QAC9C,IAAI,cAAc,GAAG,SAAS;AAC9B,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACzB,cAAc,GAAG,KAAK;QACxB;AAAO,aAAA,IAAI,OAAO,IAAI,EAAE,EAAE;YACxB,cAAc,GAAG,mBAAmB;QACtC;AAAO,aAAA,IAAI,OAAO,IAAI,EAAE,EAAE;YACxB,cAAc,GAAG,cAAc;QACjC;AAAO,aAAA,IAAI,OAAO,IAAI,EAAE,EAAE;YACxB,cAAc,GAAG,aAAa;QAChC;AAAO,aAAA,IAAI,OAAO,IAAI,EAAE,EAAE;YACxB,cAAc,GAAG,aAAa;QAChC;AAAO,aAAA,IAAI,KAAK,IAAI,EAAE,EAAE;YACtB,cAAc,GAAG,WAAW;QAC9B;AAAO,aAAA,IAAI,KAAK,IAAI,EAAE,EAAE;YACtB,cAAc,GAAG,WAAW;QAC9B;AAAO,aAAA,IAAI,IAAI,IAAI,EAAE,EAAE;YACrB,cAAc,GAAG,UAAU;QAC7B;AAAO,aAAA,IAAI,IAAI,IAAI,EAAE,EAAE;YACrB,cAAc,GAAG,aAAa;QAChC;AAAO,aAAA,IAAI,IAAI,IAAI,GAAG,EAAE;YACtB,cAAc,GAAG,YAAY;QAC/B;AAAO,aAAA,IAAI,IAAI,IAAI,GAAG,EAAE;YACtB,cAAc,GAAG,YAAY;QAC/B;aAAO;YACL,cAAc,GAAG,WAAW;QAC9B;QACA,OAAO,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAClG;IACS,WAAW,GAAA;QAClB,IAAI,CAAC,WAAW,EAAE;QAClB,KAAK,CAAC,WAAW,EAAE;IACrB;IACQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACnB;IACF;AACQ,IAAA,qBAAqB,CAAC,OAAe,EAAA;QAC3C,MAAM,GAAG,GAAG,EAAE;AACd,QAAA,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE;AACnB,QAAA,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE;AACnB,QAAA,IAAI,OAAO,GAAG,GAAG,EAAE;AACjB,YAAA,OAAO,CAAC;QACV;AAAO,aAAA,IAAI,OAAO,GAAG,EAAE,EAAE;AACvB,YAAA,OAAO,EAAE;QACX;AAAO,aAAA,IAAI,OAAO,GAAG,GAAG,EAAE;AACxB,YAAA,OAAO,GAAG;QACZ;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;8GAnFW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;AC4DK,MAAO,qBAAsB,SAAQ,YAAY,CAAA;AAmFrD,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAC,kCAAkC,EAAE;IAC1F;AAIA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAC,kCAAkC,EAAE;IAC1F;AAIA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE;IAChE;AAIA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE;IAChE;AAIA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,sBAAsB,EAAE;IAClE;AAIA,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,IAAI,CAAC,+BAA+B,EAAE,IAAI,IAAI,CAAC,oCAAoC,EAAE;IAC9F;AAIA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,4BAA4B,EAAE;IAC9E;AAIA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAC,kCAAkC,EAAE;IAC1F;AAIA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,4BAA4B,EAAE;IAC9E;AAIA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,0BAA0B,EAAE;IAC1E;AA+CA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;AACvD,QAAA,OAAO,EAAE,EAAE,gBAAgB,IAAI,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IACpF;AACA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;AACvD,QAAA,OAAO,EAAE,EAAE,gBAAgB,IAAI,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IACpF;AACA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;AACvD,QAAA,OAAO,EAAE,EAAE,kBAAkB,IAAI,EAAE,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC1F;AAMA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAA,WAAA;AAAkC,YAAA,OAAO,CAAC;AAClE,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAA,YAAA;YAAmC,OAAO,CAAC,CAAC;AACpE,QAAA,OAAO,CAAC;IACV;AAwKA,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAChC,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEjD,QAAA,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;AA1XhB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QACzC,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzE,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAEtD,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC7B,IAAA,CAAA,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAY;AACnC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;AACxC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAU,IAAI,+DAAC;AAC1C,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB,EAAE,sDAAC;AAE3C,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAqB,SAAS,oDAAC;QAC/C,IAAA,CAAA,SAAS,GAAG,KAAK,CAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEzC,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAElC,YAAA,OAAO,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,KAAoB,OAAO,GAAG,KAAK,QAAQ,CAAC,IAAI,EAAE;AAC1F,QAAA,CAAC,6DAAC;AAEF,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAqB,SAAS,+DAAC;AAC1D,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,iBAAiB,yDAAC;AAChD,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAkB,MAAM,kDAAC;AACvC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,SAAS,0DAAC;AAClD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,SAAS,0DAAC;AAClD,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAkB,SAAS,4DAAC;AACpD,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAqB,SAAS,oEAAC;AAC/D,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAqB,SAAS,oEAAC;AAC/D,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,kEAAC;AAC7D,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,kEAAC;AAC7D,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,kEAAC;AAC7D,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,kEAAC;AAC7D,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAqB,SAAS,2DAAC;AACtD,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAqB,SAAS,2DAAC;AACtD,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAqB,SAAS,6DAAC;AACxD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;AAChC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,CAAC,gDAAC;AAEvB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,mDAAC;AACtC,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;YAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE;AACpD,YAAA,MAAM,GAAG,GAAa,CAAC,GAAG,eAAe,CAAC;AAC1C,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;YACtC,IAAI,WAAW,EAAE;AACf,gBAAA,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC;YAC1B;YACA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1D,QAAA,CAAC,2DAAC;AAEF,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,gDAAC;AAC3C,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAqB,SAAS,gEAAC;AAC3D,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAS,wBAAwB,iEAAC;AAC/D,QAAA,IAAA,CAAA,sCAAsC,GAAG,KAAK,CAAS,6CAA6C,kFAAC;AACrG,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACrB,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE;YACxD,OAAO;AACL,gBAAA,WAAW,EAAE,eAAe;AAC5B,gBAAA,UAAU,EAAE,cAAc;AAC1B,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,YAAY,EAAE,gBAAgB;gBAC9B,oBAAoB;aACrB;AACH,QAAA,CAAC,kDAAC;AAEF,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAoB,EAAE,gDAAC;AACnC,QAAA,IAAA,CAAA,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAE1C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,EAAE,mDAAC;AAC7B,QAAA,IAAA,CAAA,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;QAEhD,IAAA,CAAA,aAAa,GAAG,KAAK,CAAA,MAAA,+BAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA2C;AAChE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,qDAAC;AAEZ,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE;AAErD,QAAA,IAAA,CAAA,6BAA6B,GAAG,KAAK,CAA+B,SAAS,yEAAC;AAC9E,QAAA,IAAA,CAAA,kCAAkC,GAAG,YAAY,CAAmB,uBAAuB,8EAAC;AAK5F,QAAA,IAAA,CAAA,6BAA6B,GAAG,KAAK,CAA+B,SAAS,yEAAC;AAC9E,QAAA,IAAA,CAAA,kCAAkC,GAAG,YAAY,CAAmB,uBAAuB,8EAAC;AAK5F,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAA+B,SAAS,4DAAC;AACjE,QAAA,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAmB,UAAU,iEAAC;AAKlE,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAA+B,SAAS,4DAAC;AACjE,QAAA,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAmB,UAAU,iEAAC;AAKlE,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAA+B,SAAS,6DAAC;AAClE,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAmB,WAAW,kEAAC;AAKpE,QAAA,IAAA,CAAA,+BAA+B,GAAG,KAAK,CAA+B,SAAS,2EAAC;AAChF,QAAA,IAAA,CAAA,oCAAoC,GAAG,YAAY,CAAmB,yBAAyB,gFAAC;AAKhG,QAAA,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAA+B,SAAS,mEAAC;AACxE,QAAA,IAAA,CAAA,4BAA4B,GAAG,YAAY,CAAmB,iBAAiB,wEAAC;AAKhF,QAAA,IAAA,CAAA,6BAA6B,GAAG,KAAK,CAA+B,SAAS,yEAAC;AAC9E,QAAA,IAAA,CAAA,kCAAkC,GAAG,YAAY,CAAmB,uBAAuB,8EAAC;AAK5F,QAAA,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAA+B,SAAS,mEAAC;AACxE,QAAA,IAAA,CAAA,4BAA4B,GAAG,YAAY,CAAmB,iBAAiB,wEAAC;AAKhF,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAA+B,SAAS,iEAAC;AACtE,QAAA,IAAA,CAAA,0BAA0B,GAAG,YAAY,CAAmB,eAAe,sEAAC;AAK5E,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAe,EAAE,6DAAC;AAC3C,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;AAC5E,QAAA,CAAC,6DAAC;AACF,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,cAAc,CAAC;AAC3E,QAAA,CAAC,+DAAC;AACF,QAAA,IAAA,CAAA,oBAAoB,GAAG,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAC7D,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAa,IAAI,0DAAC;QACzC,IAAA,CAAA,sBAAsB,GAAG,aAAa,CAAC;AACrC,YAAA,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACtC,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,YAAA,IAAI,CAAC,YAAY;AAClB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM;YACpC,OAAO,EAAE,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,WAAW,CAAC;YACnE,GAAG;SACJ,CAAC,CAAC,EACH,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAI;AAC5B,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC;YACf;AACA,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAC9E,GAAG,CAAC,CAAC,YAAY,KAAI;gBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;oBACzB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;oBACrC,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,oBAAA,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;oBACvC,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAClG,oBAAA,OAAO,EAAE,CAAC,CAAC,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,kBAAkB,CAAC;AAC/E,oBAAA,UAAU,EAAE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,GAAG,CAAC,CAAC,UAAU,GAAG,SAAS;oBACvE,OAAO,EAAE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3F,iBAAA,CAAC,CAAC;YACL,CAAC,CAAC,CACH;QACH,CAAC,CAAC,CACH;QAES,IAAA,CAAA,QAAQ,GAAG,gBAAgB,EAA4B;QACvD,IAAA,CAAA,QAAQ,GAAG,gBAAgB,EAA4B;QACvD,IAAA,CAAA,UAAU,GAAG,gBAAgB,EAA4B;QACnE,IAAA,CAAA,WAAW,GAAG,MAAM,EAAU;QAC9B,IAAA,CAAA,eAAe,GAAG,MAAM,EAAU;QAClC,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAA8B;AAe5D,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9G,QAAA,CAAC,2DAAC;AAQF,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAA2B,SAAS,wDAAC;AAE1D,QAAA,IAAA,CAAA,2BAA2B,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CACzG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,iBAAiB,CAAC,KAAI;YACvC,OAAO,IAAI,CAAC,+BAA+B,CAAC,iBAAiB,EAAE,WAAW,CAAC;QAC7E,CAAC,CAAC,CACH;QAED,IAAA,CAAA,cAAc,GAAG,aAAa,CAAC;;AAE7B,YAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,YAAY;AACjB,YAAA,IAAI,CAAC,2BAA2B;AAChC,YAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,YAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AAClC,YAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AAClC,YAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AAClC,YAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACpC,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,YAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACnC,YAAA,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACzC,YAAA,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACzC,YAAA,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAC3C,YAAA,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACzC,YAAA,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACzC,YAAA,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAC5C,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CACC,KAAK,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACzB,KAAI;YACH,OAAO;gBACL,WAAW;gBACX,iBAAiB;gBACjB,YAAY;gBACZ,eAAe,EAAE,eAAe,IAAI,8BAA8B;gBAClE,eAAe,EAAE,eAAe,IAAI,8BAA8B;gBAClE,iBAAiB,EAAE,iBAAiB,IAAI,gCAAgC;gBACxE,cAAc;gBACd,cAAc;gBACd,gBAAgB;gBAChB,sBAAsB;gBACtB,sBAAsB;gBACtB,wBAAwB;gBACxB,sBAAsB;gBACtB,sBAAsB;gBACtB,wBAAwB;aACzB;QACH,CAAC,CACF,CACF;AAED,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CACvC,SAAS,CAAC,CAAC,MAAM,KAAI;AACnB,YAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,iBAAiB,EAAE;gBAC/D,YAAY,EAAE,MAAM,CAAC,eAAe;gBACpC,YAAY,EAAE,MAAM,CAAC,eAAe;gBACpC,cAAc,EAAE,MAAM,CAAC,iBAAiB;aACzC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,MAAM,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AAC/D,QAAA,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,MAAM,KACT,IAAI,CAAC,gBAAgB,CACnB,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,YAAY,EACnB;YACE,YAAY,EAAE,MAAM,CAAC,eAAe;YACpC,YAAY,EAAE,MAAM,CAAC,eAAe;YACpC,cAAc,EAAE,MAAM,CAAC,iBAAiB;SACzC,EACD;YACE,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;SAC1C,EACD;AACE,YAAA,OAAO,EAAE;gBACP,UAAU,EAAE,MAAM,CAAC,sBAAsB;gBACzC,UAAU,EAAE,MAAM,CAAC,sBAAsB;gBACzC,YAAY,EAAE,MAAM,CAAC,wBAAwB;AAC9C,aAAA;AACD,YAAA,OAAO,EAAE;gBACP,UAAU,EAAE,MAAM,CAAC,sBAAsB;gBACzC,UAAU,EAAE,MAAM,CAAC,sBAAsB;gBACzC,YAAY,EAAE,MAAM,CAAC,wBAAwB;AAC9C,aAAA;SACF,CACF,CACF,CACF;QAED,IAAA,CAAA,eAAe,GAAG,aAAa,CAAC;AAC9B,YAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1B,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,YAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1B,YAAA,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACtC,YAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;SACrC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,KAAI;AACjG,YAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE;QACrG,CAAC,CAAC,EACF,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CACzG,GAAG,CAAC,CAAC,eAAe,MAAM,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,CAC3D,CACF,EACD,GAAG,CAAC,CAAC,MAAM,MAAM;AACf,YAAA,GAAG,MAAM;YACT,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC;SAC1G,CAAC,CAAC,EACH,GAAG,CAAC,CAAC,MAAM,MAAM;AACf,YAAA,GAAG,MAAM;AACT,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC,EAC7E,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,iBAAiB,CACzB;AACF,SAAA,CAAC,CAAC,EACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CACxB;AAGD,QAAA,IAAA,CAAA,SAAS,GAAG,eAAe,CAAgB,aAAa,qDAAC;AACzD,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAEzC,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAgB,aAAa,yDAAC;AAC1D,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAEjD,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAqC,SAAS,2DAAC;AACtE,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;QAErD,IAAA,CAAA,UAAU,GAAG,UAAU;QACf,IAAA,CAAA,oBAAoB,GAAwD,EAAE;AACtF,QAAA,IAAA,CAAA,kBAAkB,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CACzD,GAAG,CAAC,CAAC,UAAU,KAAI;AACjB,YAAA,IAAI,CAAC,UAAU;AAAE,gBAAA,OAAO,EAAE;AAC1B,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC;AAC9D,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,CAAC,eAAe,KAAI;AAC5B,YAAA,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACjB;AACA,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5G,CAAC,CAAC,CACH;QAQC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;;YAExB,SAAS,CAAC,MAAK;AACb,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,gBAAA,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE;AACrD,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClB;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM;AAClC,YAAA,MAAM,SAAS,GACb,cAAc,KAAK,CAAC,GAAG,4CAA4C,GAAG,yCAAyC;YAEjH,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CACpF,CAAC,cAAsB,KAAI;AACzB,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC7C,YAAA,CAAC,CACF;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAC7C,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7E,YAAY,CAAC,EAAE,CAAC,CACjB;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,OAAO,EAAE;;YAEd,SAAS,CAAC,MAAK;AACb,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC9C,gBAAA,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,EAAE;AACrE,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClB;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAC7D,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAC3D;QAED,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,yBAAyB,EAAE;AAClC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACpC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B;YACF;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrC,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC5E;AAEA,IAAA,WAAW,CAAC,OAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;IAC/B;AAEA,IAAA,SAAS,CAAC,OAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7B;AAEA,IAAA,SAAS,CAAC,OAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7B;AAEA,IAAA,QAAQ,CAAC,IAAkB,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,oBAAoB,CAAC,OAAgB,EAAA;QACnC,OAAO,OAAO,EAAE;cACZ,GAAG,OAAO,CAAC,aAAa,CAAA,gCAAA,EAAmC,IAAI,CAAC,aAAa,CAAA;AAC/E,cAAE,CAAA,iCAAA,EAAoC,IAAI,CAAC,aAAa,EAAE;IAC9D;AAEA,IAAA,eAAe,CAAC,IAAkB,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7B;IAEA,gBAAgB,CAAC,MAAW,EAAE,GAAQ,EAAA;QACpC,OAAO,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC;IAClD;IAEA,yBAAyB,GAAA;AACvB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,YAAA,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAClC,YAAA,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE;AACxB,SAAA,CAAC;IACJ;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;IAC/B;IAEA,aAAa,CAAC,MAAW,EAAE,GAAQ,EAAA;QACjC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC;IAC7C;AAEA,IAAA,2BAA2B,CAAC,GAAQ,EAAA;AAClC,QAAA,OAAO,aAAa,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CACvE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,EACzF,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC9G;IACH;AAEA,IAAA,kBAAkB,CAAC,KAAiB,EAAE,IAAU,EAAE,GAAQ,EAAA;AACxD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACpB;IAEA,YAAY,CAAC,SAA0B,EAAE,KAAe,EAAA;AACtD,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACjD,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC;YACrE,IAAI,QAAQ,EAAE;AACZ,gBAAA,OAAO,QAAQ;YACjB;QACF;AACA,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,WAAW,CAAC,MAAuB,EAAA;QACjC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YACzC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC;AACnD,gBAAA,IAAI,CAAC,UAAU;AACf,gBAAA,IAAI,CAAC,cAAc;AACnB,gBAAA,IAAI,CAAC,gBAAgB;AACtB,aAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,KAAI;gBAClB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9D,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE,QAAQ;gBAC1G,IAAI,cAAc,EAAE;AAClB,oBAAA,OAAO,cAAc;gBACvB;AACA,gBAAA,QAAQ,MAAM,CAAC,UAAU;oBACvB,KAAK,UAAU,CAAC,IAAI;wBAClB,QACE,IAAI,CAAC,aAAa;AAClB,4BAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC,EAAE,QAAQ;AACjF,4BAAA,IAAI;oBAER,KAAK,UAAU,CAAC,MAAM;wBACpB,QACE,IAAI,CAAC,eAAe;AACpB,4BAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAAC,EAAE,QAAQ;AACrF,4BAAA,IAAI;oBAER,KAAK,UAAU,CAAC,aAAa;wBAC3B,QACE,IAAI,CAAC,qBAAqB;AAC1B,4BAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,uBAAuB,EAAE,8BAA8B,CAAC,CAAC,EAAE,QAAQ;AACjG,4BAAA,IAAI;oBAER,KAAK,UAAU,CAAC,eAAe;wBAC7B,QACE,IAAI,CAAC,uBAAuB;AAC5B,4BAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,yBAAyB,EAAE,gCAAgC,CAAC,CAAC,EAAE,QAAQ;AACrG,4BAAA,IAAI;AAER,oBAAA;wBACE,QACE,IAAI,CAAC,eAAe;AACpB,4BAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAAC,EAAE,QAAQ;AACrF,4BAAA,IAAI;;YAGZ,CAAC,CAAC,CACH;QACH;QACA,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7C;AAEQ,IAAA,gBAAgB,CACtB,WAAqB,EACrB,iBAA+B,EAC/B,YAAsC,EACtC,YAAoC,EACpC,IAIC,EACD,iBAIC,EACD,YAWC,EAAA;QAED,IAAI,cAAc,GAAG,KAAK;QAC1B,IAAI,YAAY,GAAG,KAAK;QACxB,IAAI,YAAY,GAAG,KAAK;QAExB,IAAI,aAAa,GAAG,IAAI;QACxB,IAAI,WAAW,GAAG,IAAI;QACtB,IAAI,WAAW,GAAG,IAAI;QAEtB,IAAI,YAAY,EAAE;YAChB,YAAY;gBACV,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;YACzG,YAAY;gBACV,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;YACzG,cAAc;gBACZ,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;YAE7G,WAAW,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;YACnH,WAAW,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;YACnH,aAAa;AACX,gBAAA,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;QAC7G;QAEA,MAAM,SAAS,GAAe,EAAE;QAChC,MAAM,YAAY,GAAG,yBAAyB;QAC9C,MAAM,kBAAkB,GAAG,gCAAgC;AAC3D,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE;YAC1F,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;gBACtC,IAAI,EAAE,UAAU,CAAC,GAAG;gBACpB,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/C,gBAAA,QAAQ,EAAE,YAAY;AACtB,gBAAA,OAAO,EAAE,WAAW;gBACpB,YAAY,EAAE,WAAW,GAAG,YAAY,GAAG,kBAAkB;AAC9D,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE;YAC1F,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;gBACtC,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/C,gBAAA,QAAQ,EAAE,YAAY;AACtB,gBAAA,OAAO,EAAE,WAAW;gBACpB,YAAY,EAAE,WAAW,GAAG,YAAY,GAAG,kBAAkB;AAC9D,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;YAC9F,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;gBACxC,IAAI,EAAE,UAAU,CAAC,KAAK;gBACtB,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACjD,gBAAA,QAAQ,EAAE,cAAc;AACxB,gBAAA,OAAO,EAAE,aAAa;gBACtB,YAAY,EAAE,aAAa,GAAG,YAAY,GAAG,kBAAkB;AAChE,aAAA,CAAC;QACJ;AACA,QAAA,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAC1B,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAC1B,YAAA,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC,kBAAkB,CAAC;YACjG,OAAO;gBACL,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACrC,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,gBAAA,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;gBACvC,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC3G,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,UAAU,EAAE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,GAAG,CAAC,CAAC,UAAU,GAAG,SAAS;gBACvE,OAAO,EAAE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,GAAG,SAAS,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,YAAY,CAAC;gBAC5G,YAAY,EAAE,SAAS,GAAG,YAAY,GAAG,kBAAkB;aAC5D;QACH,CAAC,CAAC,CACH;AACD,QAAA,OAAO,GAAG;IACZ;IAEQ,0BAA0B,CAChC,iBAA+B,EAC/B,IAIC,EAAA;AAED,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAC/B,YAAA,IAAI,CAAC,YAAY;AACjB,YAAA,IAAI,CAAC,YAAY;AACjB,YAAA,IAAI,CAAC,cAAc;AACnB,YAAA,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,SAAA,CAAC;IACJ;AAEQ,IAAA,mBAAmB,CACzB,UAA2B,EAC3B,OAAwC,EACxC,eAAyB,EAAA;QAEzB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;QAC3F,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpF;IAEQ,+BAA+B,CAAC,OAAqB,EAAE,WAAqB,EAAA;AAClF,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;YAC/B,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACpG,YAAA,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChE,QAAA,CAAC,CAAC;IACJ;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,cAAc,EAAE;AAC7C,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE;QACnD;AAEA,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;IAC1C;AAEA,IAAA,MAAM,aAAa,CAAC,MAAkB,EAAE,IAAS,EAAA;QAC/C,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/C;IAEQ,qBAAqB,CAAC,MAAkB,EAAE,GAAQ,EAAA;AACxD,QAAA,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC;IACzD;8GA3sBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sCAAA,EAAA,EAAA,iBAAA,EAAA,wCAAA,EAAA,UAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,+BAAA,EAAA,EAAA,iBAAA,EAAA,iCAAA,EAAA,UAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,IAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EA+VW,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAGZ,aAAa,uFCpa3D,07aAiSA,EAAA,MAAA,EAAA,CAAA,sQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,uCAAA,EAAA,4BAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,CAAA,CAAA;;2FD/Na,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,07aAAA,EAAA,MAAA,EAAA,CAAA,sQAAA,CAAA,EAAA;AAsFsC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,uBAAuB,yOAMvB,uBAAuB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMpC,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMV,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMT,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMG,yBAAyB,uNAMjC,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMX,uBAAuB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAM7B,iBAAiB,iNAMnB,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA;sBA2C1E;;sBACA;;sBACA;AA0K0C,aAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,aAAa,+FAGZ,aAAa,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEnZ9C,4BAA4B,CAAA;AAuBvC,IAAA,WAAA,GAAA;AAtBS,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,mDAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB,CAAA,WAAA,oCAAA,YAAA,oCAA2D,sDAAC;QAEpG,IAAA,CAAA,aAAa,GAAG,KAAK,CAAA,MAAA,+BAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA2C;AAChE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,qDAAC;QAE7B,IAAA,CAAA,UAAU,GAAG,MAAM,EAAU;QAC7B,IAAA,CAAA,mBAAmB,GAAG,MAAM,EAAqB;QACjD,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAAqC;QACnE,IAAA,CAAA,aAAa,GAAG,MAAM,EAAY;AAElC,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAqB,MAAK;YAC3D,OAAO,IAAI,CAAC,OAAO;iBAChB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;iBAC1B,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5D,QAAA,CAAC,2DAAC;AAEO,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAA+B,MAAK;AAC3E,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC;AACrE,QAAA,CAAC,iEAAC;QAGA,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,gBAAA,OAAO,EAAE;AACP,oBAAA,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE;AAC5B,oBAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACpC,iBAAA;AACF,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,aAAa,CAAC,KAAwB,EAAA;QACpC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC5C;IAEA,oBAAoB,GAAA;AAClB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACjD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACjD;IAEA,iBAAiB,GAAA;AACf,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;QAChC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC;IAC3E;IAEA,QAAQ,GAAA;AACN,QAAA,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC1B,YAAA,KAAA,WAAA;AACE,gBAAA,OAAO,mBAAmB;AAC5B,YAAA,KAAA,YAAA;AACE,gBAAA,OAAO,qBAAqB;AAC9B,YAAA;AACE,gBAAA,OAAO,aAAa;;IAE1B;IAEA,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC5D;AAEA,IAAA,oBAAoB,CAAC,aAAgC,EAAA;QACnD,QAAQ,aAAa;AACnB,YAAA,KAAA,WAAA;AACE,gBAAA,OAAO,oDAAoD;AAC7D,YAAA,KAAA,YAAA;AACE,gBAAA,OAAO,qDAAqD;AAC9D,YAAA;AACE,gBAAA,OAAO,kDAAkD;;IAE/D;8GA1EW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,m2BCjBzC,skDAgCM,EAAA,MAAA,EAAA,CAAA,sIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDfO,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,4BAA4B,EAAA,QAAA,EAAA,skDAAA,EAAA,MAAA,EAAA,CAAA,sIAAA,CAAA,EAAA;;;AEXlC,SAAU,YAAY,CAAC,SAA0B,EAAE,KAAe,EAAA;AACtE,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACjD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC;QACrE,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,QAAQ;QACjB;IACF;AACA,IAAA,OAAO,SAAS;AAClB;;ICwCY;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,YAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAJW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;AA6BlB,MAAO,kBAAmB,SAAQ,YAAY,CAAA;AAoXlD,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;AACvD,QAAA,OAAO,EAAE,EAAE,gBAAgB,IAAI,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IACxF;AACA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;AACvD,QAAA,OAAO,EAAE,EAAE,gBAAgB,IAAI,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IACxF;AACA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;AACvD,QAAA,OAAO,EAAE,EAAE,kBAAkB,IAAI,EAAE,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAC9F;AACA,IAAA,IAAI,oBAAoB,GAAA;QACtB,OAAO,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,sBAAsB;IAC9F;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,CAAC;IACzE;AAEA,IAAA,aAAa,CAAC,oBAA6B,EAAA;AACzC,QAAA,QACE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM;aACpB,IAAI,CAAC,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAC;AACvC,aAAC,IAAI,CAAC,UAAU,EAAE,IAAI,oBAAoB,GAAG,CAAC,GAAG,CAAC,CAAC;AACnD,aAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC;IAEtC;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;AACvD,QAAA,OAAO,EAAE,EAAE,wBAAwB,IAAI,EAAE,EAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;IAC5G;AAEA,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAChC,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEjD,QAAA,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;AAzZhB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACjC,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzE,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAEtD,IAAA,CAAA,UAAU,GAAG,UAAU;QACvB,IAAA,CAAA,YAAY,GAAG,YAAY;AAE3B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAQ,EAAE,gDAAC;AACvB,QAAA,IAAA,CAAA,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAQ,EAAE,wDAAC;AAC/B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAyB,EAAE,uDAAC;AAEhD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,EAAE,mDAAC;AAC7B,QAAA,IAAA,CAAA,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;QAChD,IAAA,CAAA,aAAa,GAAG,KAAK,CAAA,MAAA,+BAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA2C;AAChE,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,EAAE,sDAAC;AAI9B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,mDAAC;AACtC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAC,IAAI,+DAAC;AACjC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,IAAI,6DAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB,CAAA,WAAA,oCAAA,YAAA,oCAA2D,sDAAC;QAEpG,IAAA,CAAA,SAAS,GAAG,KAAK,CAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACzC,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAElC,YAAA,OAAO,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,KAAoB,OAAO,GAAG,KAAK,QAAQ,CAAC,IAAI,EAAE;AAC1F,QAAA,CAAC,6DAAC;AACF,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAqB,SAAS,oDAAC;AAE/C,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAqB,SAAS,+DAAC;AAC1D,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,gDAAC;AACxB,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAkB,SAAS,4DAAC;AACpD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,SAAS,0DAAC;AAClD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,SAAS,0DAAC;AAClD,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAqB,SAAS,oEAAC;AAC/D,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAqB,SAAS,oEAAC;AAC/D,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,kEAAC;AAC7D,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,kEAAC;AAC7D,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,kEAAC;AAC7D,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,kEAAC;AAC7D,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAqB,SAAS,iEAAC;AAC5D,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAU,IAAI,0DAAC;AACrC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;AAEhC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,CAAC,gDAAC;AACvB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAuC,SAAS,sDAAC;AACnE,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAqB,SAAS,gEAAC;AAC3D,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAS,wBAAwB,iEAAC;AAC/D,QAAA,IAAA,CAAA,sCAAsC,GAAG,KAAK,CAAS,6CAA6C,kFAAC;AACrG,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACrB,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE;YACxD,OAAO;AACL,gBAAA,WAAW,EAAE,eAAe;AAC5B,gBAAA,UAAU,EAAE,cAAc;AAC1B,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,YAAY,EAAE,gBAAgB;gBAC9B,oBAAoB;aACrB;AACH,QAAA,CAAC,kDAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAA+B,SAAS,2DAAC;AAChE,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAA+B,SAAS,8DAAC;AACnE,QAAA,IAAA,CAAA,uBAAuB,GAAG,YAAY,CAAmB,YAAY,mEAAC;AACtE,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;YACzB,OAAO,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACpE,QAAA,CAAC,sDAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAA+B,SAAS,8DAAC;AACnE,QAAA,IAAA,CAAA,uBAAuB,GAAG,YAAY,CAAmB,YAAY,mEAAC;AACtE,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;YACzB,OAAO,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACpE,QAAA,CAAC,sDAAC;AAEF,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAA+B,SAAS,4DAAC;AACjE,QAAA,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAmB,UAAU,iEAAC;AAClE,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YACvB,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAChE,QAAA,CAAC,oDAAC;AAEF,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAA+B,SAAS,oEAAC;AACzE,QAAA,IAAA,CAAA,6BAA6B,GAAG,YAAY,CAAmB,kBAAkB,yEAAC;AAClF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;YAC/B,OAAO,IAAI,CAAC,wBAAwB,EAAE,IAAI,IAAI,CAAC,6BAA6B,EAAE;AAChF,QAAA,CAAC,4DAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAA+B,SAAS,wDAAC;AAC7D,QAAA,IAAA,CAAA,iBAAiB,GAAG,YAAY,CAAmB,MAAM,6DAAC;AAC1D,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;YACnB,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxD,QAAA,CAAC,gDAAC;AAEF,QAAA,IAAA,CAAA,0BAA0B,GAAG,KAAK,CAA+B,SAAS,sEAAC;AAC3E,QAAA,IAAA,CAAA,+BAA+B,GAAG,YAAY,CAAmB,oBAAoB,2EAAC;AACtF,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;YACjC,OAAO,IAAI,CAAC,0BAA0B,EAAE,IAAI,IAAI,CAAC,+BAA+B,EAAE;AACpF,QAAA,CAAC,8DAAC;AAEF,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAA+B,SAAS,oEAAC;AACzE,QAAA,IAAA,CAAA,6BAA6B,GAAG,YAAY,CAAmB,kBAAkB,yEAAC;AAClF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;YAC/B,OAAO,IAAI,CAAC,wBAAwB,EAAE,IAAI,IAAI,CAAC,6BAA6B,EAAE;AAChF,QAAA,CAAC,4DAAC;AAEF,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAA+B,SAAS,oEAAC;AACzE,QAAA,IAAA,CAAA,6BAA6B,GAAG,YAAY,CAAmB,kBAAkB,yEAAC;AAClF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;YAC/B,OAAO,IAAI,CAAC,wBAAwB,EAAE,IAAI,IAAI,CAAC,6BAA6B,EAAE;AAChF,QAAA,CAAC,4DAAC;AAEF,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAA+B,SAAS,kEAAC;AACvE,QAAA,IAAA,CAAA,2BAA2B,GAAG,YAAY,CAAmB,gBAAgB,uEAAC;AAC9E,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;YAC7B,OAAO,IAAI,CAAC,sBAAsB,EAAE,IAAI,IAAI,CAAC,2BAA2B,EAAE;AAC5E,QAAA,CAAC,0DAAC;AAEF,QAAA,IAAA,CAAA,8BAA8B,GAAG,KAAK,CAA+B,SAAS,0EAAC;AAC/E,QAAA,IAAA,CAAA,mCAAmC,GAAG,YAAY,CAAmB,wBAAwB,+EAAC;AAC9F,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;YACrC,OAAO,IAAI,CAAC,8BAA8B,EAAE,IAAI,IAAI,CAAC,mCAAmC,EAAE;AAC5F,QAAA,CAAC,kEAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAA+B,SAAS,8DAAC;AACnE,QAAA,IAAA,CAAA,uBAAuB,GAAG,YAAY,CAAmB,YAAY,mEAAC;AACtE,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;YACzB,OAAO,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACpE,QAAA,CAAC,sDAAC;AAEF,QAAA,IAAA,CAAA,gCAAgC,GAAG,KAAK,CAA+B,SAAS,4EAAC;AACjF,QAAA,IAAA,CAAA,qCAAqC,GAAG,YAAY,CAAmB,0BAA0B,iFAAC;AAClG,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAAC,MAAK;YACvC,OAAO,IAAI,CAAC,gCAAgC,EAAE,IAAI,IAAI,CAAC,qCAAqC,EAAE;AAChG,QAAA,CAAC,oEAAC;AAEF,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAA+B,SAAS,gEAAC;AACrE,QAAA,IAAA,CAAA,yBAAyB,GAAG,YAAY,CAAmB,sBAAsB,qEAAC;AAClF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YAC3B,OAAO,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,yBAAyB,EAAE;AACxE,QAAA,CAAC,wDAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAe,EAAE,6DAAC;AAC3C,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,8DAAC;AAC1C,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAmB,OAAO,gEAAC;AAEvD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAA8B,EAAE,wDAAC;AACrD,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAsB,MAC7C,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;AACvB,aAAA,MAAM,CAAC,CAAC,GAAG,KAAmC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;aAC/E,GAAG,CAAC,CAAC,GAAG,MAAuB,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC3E;AACD,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAA0B,MAClD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,2DAClE;AAED,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;AAClC,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,8DAAC;QAE1C,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAY;QAC7B,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACb,IAAA,CAAA,YAAY,GAAG,gBAAgB,EAAO;QACtC,IAAA,CAAA,YAAY,GAAG,gBAAgB,EAAO;QACtC,IAAA,CAAA,cAAc,GAAG,gBAAgB,EAAO;QACxC,IAAA,CAAA,gBAAgB,GAAG,gBAAgB,EAAS;QACtD,IAAA,CAAA,WAAW,GAAG,MAAM,EAAU;QAC9B,IAAA,CAAA,eAAe,GAAG,MAAM,EAAU;QAClC,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAA2B;QAC/C,IAAA,CAAA,WAAW,GAAG,gBAAgB,EAAO;QACrC,IAAA,CAAA,YAAY,GAAG,gBAAgB,EAAO;QAEhD,IAAA,CAAA,cAAc,GAAG,aAAa,CAAC;AAC7B,YAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1B,YAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7B,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,YAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1B,YAAA,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACtC,YAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;SACrC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,KAAI;AAClG,YAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE;QACtG,CAAC,CAAC,EACF,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CACzG,GAAG,CAAC,CAAC,YAAY,MAAM,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CACrD,CACF,EACD,GAAG,CAAC,CAAC,MAAM,MAAM;AACf,YAAA,GAAG,MAAM;YACT,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC;SACvG,CAAC,CAAC,EACH,GAAG,CAAC,CAAC,MAAM,MAAM;AACf,YAAA,GAAG,MAAM;AACT,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,EAC3E,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,iBAAiB,CACzB;AACF,SAAA,CAAC,CAAC,EACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAC3C;AAED,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE;AACvC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;;;YAGxB,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAiB,GAAG,KAAK,SAAS,CAAC;AACrH,QAAA,CAAC,gEAAC;AAEF,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAyB,IAAI,+DAAC;QAC1D,IAAA,CAAA,0BAA0B,GAAG,aAAa,CAAC;AACzC,YAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACtC,YAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1B,YAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;SAC3B,CAAC,CAAC,IAAI,CACL,MAAM,CACJ,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,KAChC,CAAC,mBAAmB,EAAE,UAAU,IAAI,mBAAmB,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,CAC3F,EACD,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,CAAC,KAAI;AACzD,YAAA,IAAI,CAAC,mBAAmB,EAAE,EAAE,EAAE;AAC5B,gBAAA,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAC/C;YAEA,MAAM,cAAc,GAAG;AACpB,iBAAA,MAAM,CACL,CAAC,MAAM,KACL,MAAM,CAAC,QAAQ,KAAK,mBAAmB,EAAE,EAAE;AAC3C,iBAAC,CAAC,mBAAmB,CAAC,UAAU,IAAI,mBAAmB,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,CAAC;iBAE5F,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC;YAEhC,MAAM,YAAY,GAAG;AAClB,iBAAA,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC;AACzC,iBAAA,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC;YAE3E,IAAI,mBAAmB,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,EAAE;AACtD,gBAAA,OAAO,EAAE,CAAC;oBACR,OAAO,EAAE,YAAY,CAAC,GAAG,CACvB,CAAC,CAAC,MACC;AACC,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,UAAU,EAAE,UAAU,CAAC,CAAA,EAAG,CAAC,EAAE,EAAE,mBAAmB,CAAC,UAAU,IAAI,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;AACxF,qBAAA,CAAe,CACnB;AACD,oBAAA,MAAM,EAAE,mBAAmB;AAC5B,iBAAA,CAAC;YACJ;YAEA,MAAM,mBAAmB,GACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,mBAAmB,EAAE,EAAE,CAAC,EAAE,UAAU,KAAK,UAAU,CAAC;AAC/E,kBAAE,IAAI,CAAC,qBAAqB,CAAC,YAAwB;kBACnD,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAChE,OAAO,mBAAmB,CAAC,IAAI,CAC7B,GAAG,CAAC,CAAC,gBAAgB,KAAI;AACvB,gBAAA,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB;qBAClC,MAAM,CAAC,cAAc;qBACrB,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;AAC9F,qBAAA,GAAG,CACF,CAAC,YAAY,MACV;AACC,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,UAAU,EAAE,YAAY;AACzB,iBAAA,CAAe,CACnB;AACL,YAAA,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,OAAO,KAAI;gBACd,OAAO;AACL,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,MAAM,EAAE,mBAAmB;iBAC5B;YACH,CAAC,CAAC,CACH;QACH,CAAC,CAAC,CACH;AAED,QAAA,IAAA,CAAA,2BAA2B,GAAG,QAAQ,CAAC,MAAK;AAC1C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACtD,YAAA,OAAO;AACJ,iBAAA,MAAM,CACL,CAAC,MAAM,KACL,MAAM,CAAC,QAAQ,KAAK,mBAAmB,EAAE,EAAE;AAC3C,iBAAC,CAAC,mBAAmB,CAAC,UAAU,IAAI,mBAAmB,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,CAAC;iBAE5F,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC;AAClC,QAAA,CAAC,uEAAC;AAEF,QAAA,IAAA,CAAA,4BAA4B,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACtD,YAAA,OAAO;iBACJ,MAAM,CACL,CAAC,MAAM,KACL,MAAM,CAAC,QAAQ,KAAK,mBAAmB,EAAE,EAAE,IAAI,mBAAmB,CAAC,UAAU,KAAK,UAAU,CAAC,YAAY;iBAE5G,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC;AAClC,QAAA,CAAC,wEAAC;AAEF,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAyB,MAAK;AACpD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,OAAO;iBACJ,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ;AAC/B,iBAAA,GAAG,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;iBACnG,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACrD,QAAA,CAAC,yDAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,cAAc,CAAC;AAC3E,QAAA,CAAC,2DAAC;AACF,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AACrD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;AAC5E,QAAA,CAAC,yDAAC;AACF,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAa,IAAI,0DAAC;AAEzC,QAAA,IAAA,CAAA,kBAAkB,GAAG,aAAa,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAC9G,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,KACvB,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,IAAI,CAChD,GAAG,CAAC,CAAC,gBAAgB,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CACrE,CACF,EACD,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAI;AAC5B,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC;YACf;AAEA,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAC9E,GAAG,CAAC,CAAC,YAAY,KAAI;gBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;oBACzB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;oBACrC,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,oBAAA,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;oBACvC,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAClG,oBAAA,OAAO,EAAE,CAAC,CAAC,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,kBAAkB,CAAC;AAC/E,oBAAA,UAAU,EAAE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,GAAG,CAAC,CAAC,UAAU,GAAG,SAAS;oBACvE,OAAO,EAAE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3F,iBAAA,CAAC,CAAC;YACL,CAAC,CAAC,CACH;QACH,CAAC,CAAC,CACH;AAED,QAAA,IAAA,CAAA,SAAS,GAAG,eAAe,CAAgB,aAAa,qDAAC;AACzD,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAEzC,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAgB,aAAa,yDAAC;AAC1D,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAEjD,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAqC,SAAS,2DAAC;AACtE,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AAErD,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAA4B,MAAK;YAC3D,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAClG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,CACnF;AAED,YAAA,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC;AACrD,QAAA,CAAC,6DAAC;AAsUe,QAAA,IAAA,CAAA,mBAAmB,GAAkB;AACpD,YAAA,oBAAoB,EAAE,EAAE;AACxB,YAAA,QAAQ,EAAE,CAAC,eAAe,EAAE,UAAU,CAAC;YACvC,aAAa,EAAE,CAAC,cAAc,CAAC;SAChC;AAEgB,QAAA,IAAA,CAAA,iBAAiB,GAAkB;AAClD,YAAA,oBAAoB,EAAE,EAAE;AACxB,YAAA,QAAQ,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;AACnC,YAAA,aAAa,EAAE;gBACb,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,iBAAiB,CAAC;gBACnE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,CAAC;gBAC3E,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,yBAAyB,CAAC;gBACpG,CAAC,UAAU,CAAC,eAAe,GAAG,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,2BAA2B,CAAC;gBAC5G,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,CAAC;AAC5E,aAAA;SACF;AAEgB,QAAA,IAAA,CAAA,mBAAmB,GAAkB;AACpD,YAAA,oBAAoB,EAAE,EAAE;YACxB,QAAQ,EAAE,CAAC,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC;AACxE,YAAA,aAAa,EAAE;AACb,gBAAA,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,CAAC;AAC5G,gBAAA,CAAC,UAAU,CAAC,MAAM,GAAG;oBACnB,kBAAkB;oBAClB,uBAAuB;oBACvB,YAAY;oBACZ,iBAAiB;oBACjB,mBAAmB;AACpB,iBAAA;AACD,gBAAA,CAAC,UAAU,CAAC,aAAa,GAAG;oBAC1B,wBAAwB;oBACxB,6BAA6B;oBAC7B,kBAAkB;oBAClB,uBAAuB;oBACvB,yBAAyB;AAC1B,iBAAA;AACD,gBAAA,CAAC,UAAU,CAAC,eAAe,GAAG;oBAC5B,0BAA0B;oBAC1B,+BAA+B;oBAC/B,2BAA2B;oBAC3B,oBAAoB;oBACpB,yBAAyB;AAC1B,iBAAA;AACD,gBAAA,CAAC,UAAU,CAAC,MAAM,GAAG;oBACnB,kBAAkB;oBAClB,uBAAuB;oBACvB,YAAY;oBACZ,iBAAiB;oBACjB,mBAAmB;AACpB,iBAAA;AACF,aAAA;SACF;AAEgB,QAAA,IAAA,CAAA,gBAAgB,GAAwC;AACvE,YAAA,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB;AAC3C,YAAA,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB;AACnD,YAAA,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB;SAChD;AA6FD,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,KAAa,EAAE,IAAS,KAAI;YAChD,OAAO,IAAI,CAAC,EAAE;AAChB,QAAA,CAAC;QArbC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;;YAGxB,SAAS,CAAC,MAAK;AACb,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,gBAAA,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE;AAC5D,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClB;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM;AAClC,YAAA,MAAM,SAAS,GACb,cAAc,KAAK,CAAC,GAAG,wCAAwC,GAAG,qCAAqC;YAEzG,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CACpF,CAAC,cAAsB,KAAI;AACzB,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC7C,YAAA,CAAC,CACF;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;;YAE9B,SAAS,CAAC,MAAK;AACb,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC9C,gBAAA,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE;AAC9D,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClB;AACF,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;YAClF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;YAC9E,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAC7C,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7E,YAAY,CAAC,EAAE,CAAC,CACjB;YACD,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CACzD,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9E;YACD,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CACzD,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9E;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;YACxC,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAC3C,gBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;oBAC3B,OAAO,GAAG,CAAC,EAAE;gBACf;AACA,gBAAA,OAAO,GAAG;AACZ,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AACnC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,yBAAyB,EAAE;AAClC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;AAC1F,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,oBAAoB,EAAE;AAC7B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACpC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B;YACF;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IACpD;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC5E;AAEA,IAAA,qBAAqB,CAAC,YAAsB,EAAA;QAC1C,OAAO,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAwB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;IAC3F;IAEA,yBAAyB,GAAA;AACvB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,gBAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACpC,aAAA;AACD,YAAA,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAClC,YAAA,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE;YACvB,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9E,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClF,SAAA,CAAC;IACJ;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9F;AAEA,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAClD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAU,CAAC;QAC5E;QACA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACnC;AAEA,IAAA,aAAa,CAAC,KAAU,EAAA;QACtB,IAAI,CAAC,YAAY,CAAC,MAAM,CACtB,CAAC,IAAI,KACH,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,KACpB,OAAO,CAAC,KAAK,QAAQ,GAAI,CAAS,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAC/C,CACnC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACpC;AAEA,IAAA,aAAa,CAAC,GAAQ,EAAA;QACpB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/C;AAEA,IAAA,kBAAkB,CAAC,GAAQ,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QACnC;aAAO;YACL,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QACjC;IACF;AAEA,IAAA,iBAAiB,CAAC,UAAkB,EAAA;QAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;AAEjE,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC1C;AAEA,IAAA,uBAAuB,CAAC,UAAkB,EAAA;AACxC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,QAAA,OAAO,UAAU,KAAK,IAAI,CAAC,UAAU;cACjC,UAAU,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM;AAC/E,cAAE,UAAU,CAAC,CAAC,CAAC;IACnB;AAEA,IAAA,WAAW,CAAC,gBAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC5C;AAEA,IAAA,SAAS,CAAC,gBAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC1C;AAEA,IAAA,SAAS,CAAC,gBAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC1C;AAEA,IAAA,cAAc,CAAC,MAAuB,EAAA;AACpC,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC;IACtC;IAEA,yBAAyB,CAAC,MAAuB,EAAE,KAAU,EAAA;AAC3D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AACzB,aAAA,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE;AAChD,aAAA,MAAM,CACL,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAgB,MAAM;YACrC,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,KAAK;YACL,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC,CACJ;AACH,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3B;IACF;AAEA,IAAA,aAAa,CAAC,UAAkB,EAAA;QAC9B,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC5E;AAEA,IAAA,oBAAoB,CAAC,aAAgC,EAAA;QACnD,QAAQ,aAAa;AACnB,YAAA,KAAA,WAAA;AACE,gBAAA,OAAO,8CAA8C;AACvD,YAAA,KAAA,YAAA;AACE,gBAAA,OAAO,+CAA+C;AACxD,YAAA;AACE,gBAAA,OAAO,4CAA4C;;IAEzD;AAEA,IAAA,sBAAsB,CAAC,SAAc,EAAA;AACnC,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACvG;AAEA,IAAA,aAAa,CAAC,KAAU,EAAA;QACtB,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC;IACjD;AAEA,IAAA,iBAAiB,CAAC,SAAgB,EAAA;AAChC,QAAA,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;AACpD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC,MAAM,cAAc,GAAG;AACpB,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC;iBAClE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;AACvB,YAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,cAAc,CAAC;YAC/E;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC;IACvC;IAEA,qBAAqB,CAAC,eAAoC,EAAE,cAAmC,EAAA;AAC7F,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/C,QAAA,MAAM,6BAA6B,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtG,QAAA,MAAM,+BAA+B,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzG,QAAA,MAAM,gBAAgB,GAAG,CAAC,GAAG,eAAe,CAAC;AAE7C,QAAA,6BAA6B,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;YAC3C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAClC,gBAAA,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,+BAA+B,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;YAC7C,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1C,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,gBAAA,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACnC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,gBAAgB;IACzB;AAEA,IAAA,UAAU,CAAC,GAAQ,EAAA;QACjB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5C;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;IAC/B;IAEA,aAAa,CAAC,MAAW,EAAE,GAAQ,EAAA;QACjC,OAAO,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC;IACpD;AAEA,IAAA,kBAAkB,CAAC,KAAiB,EAAE,IAAU,EAAE,GAAQ,EAAA;AACxD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACpB;AAEA,IAAA,2BAA2B,CAAC,GAAQ,EAAA;QAClC,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC/B,SAAS,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,EACrE,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC9G;IACH;AAEA,IAAA,MAAM,CAAC,KAA6B,EAAA;AAClC,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,OAAO,WAAW,CAAC,CAAC,CAAC;IACvB;AA8DA,IAAA,qBAAqB,CAAC,SAA0B,EAAE,UAAsB,EAAE,YAA0B,EAAA;AAClG,QAAA,IAAI,QAAsC;QAE1C,QAAQ,YAAY;YAClB,KAAK,YAAY,CAAC,MAAM;AACtB,gBAAA,QACE,IAAI,CAAC,YAAY,EAAE;AACnB,oBAAA,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,aAAyB,CAAC,EAAE,QAAQ;AAChG,oBAAA,IAAI;YAER,KAAK,YAAY,CAAC,IAAI;gBACpB,QAAQ,UAAU;oBAChB,KAAK,UAAU,CAAC,IAAI;AAClB,wBAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;wBAC1B;oBACF,KAAK,UAAU,CAAC,MAAM;AACpB,wBAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;wBAC5B;oBACF,KAAK,UAAU,CAAC,aAAa;AAC3B,wBAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;wBAClC;oBACF,KAAK,UAAU,CAAC,eAAe;AAC7B,wBAAA,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;wBACpC;AACF,oBAAA;AACE,wBAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;;gBAEhC;YACF,KAAK,YAAY,CAAC,UAAU;gBAC1B,QAAQ,UAAU;oBAChB,KAAK,UAAU,CAAC,IAAI;AAClB,wBAAA,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;wBAChC;oBACF,KAAK,UAAU,CAAC,MAAM;AACpB,wBAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;wBAClC;oBACF,KAAK,UAAU,CAAC,aAAa;AAC3B,wBAAA,QAAQ,GAAG,IAAI,CAAC,sBAAsB,EAAE;wBACxC;oBACF,KAAK,UAAU,CAAC,eAAe;AAC7B,wBAAA,QAAQ,GAAG,IAAI,CAAC,wBAAwB,EAAE;wBAC1C;AACF,oBAAA;AACE,wBAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;;gBAEtC;;QAGJ,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,aAA6C;AACvG,QAAA,QACE,QAAQ;YACR,YAAY,CAAC,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ;AAC5D,YAAA,IAAI;IAER;IAEA,WAAW,CAAC,MAAuB,EAAE,YAA0B,EAAA;QAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;QAEzD,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YAClD,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC;AAC5D,gBAAA,IAAI,CAAC,UAAU;AACf,gBAAA,IAAI,CAAC,cAAc;AACnB,gBAAA,IAAI,CAAC,gBAAgB;AACtB,aAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,KAAI;gBAClB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9D,MAAM,cAAc,GAAG,YAAY,CACjC,SAAS,EACT,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,CAC3D,EAAE,QAAQ;gBACX,IAAI,cAAc,EAAE;AAClB,oBAAA,OAAO,cAAc;gBACvB;AACA,gBAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;YAC/E,CAAC,CAAC,CACH;QACH;QACA,OAAO,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;IACtD;IAEA,gBAAgB,CAAC,MAAW,EAAE,GAAQ,EAAA;QACpC,OAAO,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC;IAClD;IAEA,+BAA+B,CAAC,KAAsB,EAAE,MAAuB,EAAA;QAC7E,OAAO;AACL,YAAA,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK;SACzB;IACH;AAMQ,IAAA,+BAA+B,CAAC,OAAqB,EAAA;AAC3D,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,oBAAoB,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAC1E,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAExD,OAAO,cAAc,EAAE,CAAC,IAAI,CAC1B,GAAG,CAAC,CAAC,WAAW,KAAI;AAClB,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;gBAC/B,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACpG,gBAAA,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChE,YAAA,CAAC,CAAC;QACJ,CAAC,CAAC,CACH;IACH;AAEA,IAAA,MAAM,aAAa,CAAC,MAAkB,EAAE,SAAc,EAAA;QACpD,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;IACpD;IAEQ,qBAAqB,CAAC,MAAkB,EAAE,GAAQ,EAAA;AACxD,QAAA,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC;IACzD;AAEA,IAAA,aAAa,CAAC,SAAc,EAAA;QAC1B,IAAI,OAAO,GAAG,EAAE;QAChB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;AACzC,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,KAAI;YACtC,OAAO,IAAI,GAAG,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,EAAG,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAA,CAAE;AACvE,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO,CAAC,IAAI,EAAE;IACvB;8GAl3BW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sCAAA,EAAA,EAAA,iBAAA,EAAA,wCAAA,EAAA,UAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,0BAAA,EAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,8BAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gCAAA,EAAA,EAAA,iBAAA,EAAA,kCAAA,EAAA,UAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,IAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAmWc,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAGZ,aAAa,uFCtb3D,00lBAqbc,EAAA,MAAA,EAAA,CAAA,wqBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoB,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,EAAAF,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,uCAAA,EAAA,4BAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,CAAA,CAAA;;2FDrWD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,gBAAgB,EAAA,QAAA,EAAA,00lBAAA,EAAA,MAAA,EAAA,CAAA,wqBAAA,CAAA,EAAA;ykIA2E+B,YAAY,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMZ,YAAY,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMd,UAAU,0NAMF,kBAAkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAM9B,MAAM,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMQ,oBAAoB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMtB,kBAAkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMlB,kBAAkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMpB,gBAAgB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMR,wBAAwB,wMAMpC,YAAY,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAME,0BAA0B,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMtC,sBAAsB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA;sBAwBhF;;sBACA;;sBACA;;sBACA;;sBAIA;;sBACA;AAoL0C,aAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,aAAa,+FAGZ,aAAa,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEpbrD,SAAU,sBAAsB,CAAC,mBAAqC,EAAA;AAC1E,IAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;AAC9F;AAEA,SAAS,WAAW,CAAC,MAAa,EAAA;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AACjC,QAAA,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE;AAC5B,IAAA,CAAC,CAAC;AACJ;AAEM,SAAU,8BAA8B,CAAC,mBAAqC,EAAA;AAClF,IAAA,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;AAC1G,IAAA,OAAO,WAAW,CAAC,YAAY,CAAC;AAClC;;MC6Ba,iBAAiB,CAAA;AAoC5B,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;IAC1D;IACA,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC;AAkBA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,4BAA4B,EAAE;IAC9E;AAIA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,4BAA4B,EAAE;IAC9E;AAIA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,0BAA0B,EAAE;IAC1E;AAIA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,sBAAsB,EAAE;IAClE;AAIA,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,IAAI,CAAC,+BAA+B,EAAE,IAAI,IAAI,CAAC,oCAAoC,EAAE;IAC9F;AAIA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAC,kCAAkC,EAAE;IAC1F;AAIA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAC,kCAAkC,EAAE;IAC1F;AAGA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE;IAChE;AAIA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE;IAChE;AAIA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAC,kCAAkC,EAAE;IAC1F;AAIA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,sBAAsB,EAAE;IAClE;AAGA,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,IAAI,CAAC,+BAA+B,EAAE,IAAI,IAAI,CAAC,oCAAoC,EAAE;IAC9F;AAGA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,4BAA4B,EAAE;IAC9E;AAGA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAC,kCAAkC,EAAE;IAC1F;AAGA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,4BAA4B,EAAE;IAC9E;AAGA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,0BAA0B,EAAE;IAC1E;AAGA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,4BAA4B,EAAE;IAC9E;AAGA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,2BAA2B,EAAE,IAAI,IAAI,CAAC,gCAAgC,EAAE;IACtF;AAGA,IAAA,IAAI,2BAA2B,GAAA;QAC7B,OAAO,IAAI,CAAC,mCAAmC,EAAE,IAAI,IAAI,CAAC,wCAAwC,EAAE;IACtG;AAGA,IAAA,IAAI,6BAA6B,GAAA;QAC/B,OAAO,IAAI,CAAC,qCAAqC,EAAE,IAAI,IAAI,CAAC,0CAA0C,EAAE;IAC1G;AAGA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAC,kCAAkC,EAAE;IAC1F;AAGA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAC,kCAAkC,EAAE;IAC1F;AAGA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,yBAAyB,EAAE;IACxE;AA8BA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IACjH;AACA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IACjH;AACA,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;IACrH;AACA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,QACE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,EAAE,gBAAgB,CAAC,QAAQ,EAAE;AACpF,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;IAEpC;AAEA,IAAA,WAAA,GAAA;AAnOiB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5C,QAAA,IAAA,CAAA,qBAAqB,GAAG,SAAS,CAAC,qBAAqB,iEAAC;AAExD,QAAA,IAAA,CAAA,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,8DAAC;AAElD,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,aAAa,CAA0B,CAAC,CAAC;AACxE,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,aAAa,CAA6B,CAAC,CAAC;QAE9E,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAqB;QAC7C,IAAA,CAAA,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAqB;QAC3C,IAAA,CAAA,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAqB;QAC3C,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;QACtD,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;QACtD,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;QACpD,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;QACpD,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;QACpD,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;QACpD,IAAA,CAAA,0BAA0B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACxD,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAU,IAAI,+DAAC;AAC1C,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAoB,EAAE,gDAAC;AACnC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,gDAAC;QACxB,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;QACzC,IAAA,CAAA,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAY;QACnC,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;AACrB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,mDAAC;QACtC,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACjD,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;AACxC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAU,IAAI,+DAAC;QAC1C,IAAA,CAAA,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC/B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,EAAE,mDAAC;QAC7B,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;QACxB,IAAA,CAAA,aAAa,GAAG,KAAK,CAAA,MAAA,+BAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA2C;AAChE,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAU,IAAI,0DAAC;AASrC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,CAAC,gDAAC;QACvB,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAClD,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAS,wBAAwB,iEAAC;AAC/D,QAAA,IAAA,CAAA,sCAAsC,GAAG,KAAK,CAAS,6CAA6C,kFAAC;AACrG,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAQ,EAAE,wDAAC;AAC/B,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,8DAAC;AAC1C,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAmB,OAAO,gEAAC;AACvD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;AAClC,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,8DAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAA8B,EAAE,wDAAC;AAErD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB,EAAE,sDAAC;QAC3C,IAAA,CAAA,SAAS,GAAG,KAAK,CAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACzC,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;QAEtC,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AAC/D,QAAA,IAAA,CAAA,4BAA4B,GAAG,YAAY,CAAmB,yBAAyB,wEAAC;QAKxF,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AAC/D,QAAA,IAAA,CAAA,4BAA4B,GAAG,YAAY,CAAmB,yBAAyB,wEAAC;QAKxF,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AAC7D,QAAA,IAAA,CAAA,0BAA0B,GAAG,YAAY,CAAmB,uBAAuB,sEAAC;QAKpF,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACzD,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAmB,mBAAmB,kEAAC;QAK5E,IAAA,CAAA,+BAA+B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iCAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACvE,QAAA,IAAA,CAAA,oCAAoC,GAAG,YAAY,CAAmB,iCAAiC,gFAAC;QAKxG,IAAA,CAAA,6BAA6B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,+BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACrE,QAAA,IAAA,CAAA,kCAAkC,GAAG,YAAY,CAAmB,+BAA+B,8EAAC;QAKpG,IAAA,CAAA,6BAA6B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,+BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACrE,QAAA,IAAA,CAAA,kCAAkC,GAAG,YAAY,CAAmB,+BAA+B,8EAAC;QAIpG,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACxD,QAAA,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAmB,kBAAkB,iEAAC;QAK1E,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACxD,QAAA,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAmB,kBAAkB,iEAAC;QAK1E,IAAA,CAAA,6BAA6B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,+BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACrE,QAAA,IAAA,CAAA,kCAAkC,GAAG,YAAY,CAAmB,+BAA+B,8EAAC;QAKpG,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACzD,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAmB,mBAAmB,kEAAC;QAI5E,IAAA,CAAA,+BAA+B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iCAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACvE,QAAA,IAAA,CAAA,oCAAoC,GAAG,YAAY,CAAmB,iCAAiC,gFAAC;QAIxG,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AAC/D,QAAA,IAAA,CAAA,4BAA4B,GAAG,YAAY,CAAmB,yBAAyB,wEAAC;QAIxF,IAAA,CAAA,6BAA6B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,+BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACrE,QAAA,IAAA,CAAA,kCAAkC,GAAG,YAAY,CAAmB,+BAA+B,8EAAC;QAIpG,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AAC/D,QAAA,IAAA,CAAA,4BAA4B,GAAG,YAAY,CAAmB,yBAAyB,wEAAC;QAIxF,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AAC7D,QAAA,IAAA,CAAA,0BAA0B,GAAG,YAAY,CAAmB,uBAAuB,sEAAC;QAIpF,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AAC/D,QAAA,IAAA,CAAA,4BAA4B,GAAG,YAAY,CAAmB,yBAAyB,wEAAC;QAIxF,IAAA,CAAA,2BAA2B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,6BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACnE,QAAA,IAAA,CAAA,gCAAgC,GAAG,YAAY,CAAmB,6BAA6B,4EAAC;QAIhG,IAAA,CAAA,mCAAmC,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qCAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AAC3E,QAAA,IAAA,CAAA,wCAAwC,GAAG,YAAY,CAAmB,qCAAqC,oFAAC;QAIhH,IAAA,CAAA,qCAAqC,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uCAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AAC7E,QAAA,IAAA,CAAA,0CAA0C,GAAG,YAAY,CAAmB,uCAAuC,sFAAC;QAIpH,IAAA,CAAA,6BAA6B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,+BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACrE,QAAA,IAAA,CAAA,kCAAkC,GAAG,YAAY,CAAmB,+BAA+B,8EAAC;QAIpG,IAAA,CAAA,6BAA6B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,+BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AACrE,QAAA,IAAA,CAAA,kCAAkC,GAAG,YAAY,CAAmB,+BAA+B,8EAAC;QAIpG,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;AAC5D,QAAA,IAAA,CAAA,yBAAyB,GAAG,YAAY,CAAmB,sBAAsB,qEAAC;AAMlF,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAe,EAAE,6DAAC;QAE3C,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAY;QAC7B,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACb,IAAA,CAAA,UAAU,GAAG,gBAAgB,EAAmB;QAChD,IAAA,CAAA,QAAQ,GAAG,gBAAgB,EAAmB;QAC9C,IAAA,CAAA,QAAQ,GAAG,gBAAgB,EAAmB;QAC9C,IAAA,CAAA,gBAAgB,GAAG,gBAAgB,EAAS;QACtD,IAAA,CAAA,WAAW,GAAG,MAAM,EAAU;QAC9B,IAAA,CAAA,eAAe,GAAG,MAAM,EAAU;QAClC,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAA0B;QAC9C,IAAA,CAAA,WAAW,GAAG,gBAAgB,EAAO;QACrC,IAAA,CAAA,YAAY,GAAG,gBAAgB,EAAO;AAEhD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAqB,SAAS,yDAAC;QAErD,IAAA,CAAA,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA+C;AAEtE,QAAA,IAAA,CAAA,SAAS,GAAG,eAAe,CAAC,aAAa,qDAAC;AAE1C,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;AAC1B,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE;YAEjC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9B,QAAA,CAAC,gEAAC;QAmBA,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,gCAAgC,EAAE;AACzC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,iCAAiC,EAAE;AAC1C,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAC9B,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YAC7B;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,SAAS,IAAI,aAAa,EAAE;AAC9B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;YAC3E;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrC;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACxC;AAEA,QAAA,IAAI,wBAAwB,GAC1B,IAAI,CAAC,wBAAwB;AAC/B,QAAA,IAAI,2BAA2B,GAC7B,IAAI,CAAC,2BAA2B;AAClC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,OAAO,EAAE;YAC7B,2BAA2B,GAAG,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/E;aAAO;YACL,wBAAwB,GAAG,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACzE;AAEA,QAAA,aAAa,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,2BAA2B,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AACtG,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,eAAe,KAAI;AACtB,YAAA,OAAO,8BAA8B,CAAC,eAAe,CAAC;AACxD,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC,QAAA,CAAC,CAAC;IACN;IAEA,gCAAgC,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,OAAO,EAAE;AAC7B,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE;gBAC9B,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE;oBACxD,IAAI,CAAC,qBAAqB,EAAE,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC3D,wBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC7B,oBAAA,CAAC,CAAC;gBACJ;YACF;AACA,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBAC5B,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE;oBACtD,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACzD,wBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5B,oBAAA,CAAC,CAAC;gBACJ;YACF;AACA,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBAC5B,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE;oBACtD,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACzD,wBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5B,oBAAA,CAAC,CAAC;gBACJ;YACF;QACF;IACF;IAEA,iCAAiC,GAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,OAAO,EAAE;AAC7B,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE;gBAC9B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,cAAc,CAAC,QAAQ,EAAE,EAAE;oBACzD,IAAI,CAAC,kBAAkB,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC5D,wBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC7B,oBAAA,CAAC,CAAC;gBACJ;YACF;AACA,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBAC5B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE;oBACvD,IAAI,CAAC,kBAAkB,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1D,wBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5B,oBAAA,CAAC,CAAC;gBACJ;YACF;AACA,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBAC5B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE;oBACvD,IAAI,CAAC,kBAAkB,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1D,wBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5B,oBAAA,CAAC,CAAC;gBACJ;YACF;AACA,YAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;gBACjC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE;oBAC3D,IAAI,CAAC,kBAAkB,EAAE,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC9D,wBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAClC,oBAAA,CAAC,CAAC;gBACJ;YACF;QACF;IACF;AAEA,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;AAEA,IAAA,OAAO,CAAC,KAAU,EAAA;QAChB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;IACtC;AAEA,IAAA,eAAe,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B;IACF;AAEA,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3B;IACF;AACA,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3B;IACF;AAEA,IAAA,oBAAoB,CAAC,KAAY,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC;IACF;AAEA,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;8GAvYW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+4VAFjB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,4vGA6MjD,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAxMP,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAExB,kBAAkB,gECjDnD,spXAoSA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,wCAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,gCAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDxPa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,eAAe,EAAA,SAAA,EAGd,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAA,iBAAmB,EAAE,CAAC,EAAA,QAAA,EAAA,spXAAA,EAAA;AAK3C,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,qBAAqB,iGAExB,kBAAkB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA;sBA+BhD;AAwB6D,aAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,yBAAyB,uNAMzB,yBAAyB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAM3B,uBAAuB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAM3B,mBAAmB,+OAML,iCAAiC,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMnC,+BAA+B,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAM/B,+BAA+B,kMAK5C,kBAAkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAMlB,kBAAkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAML,+BAA+B,qMAM3C,mBAAmB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAKL,iCAAiC,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAKzC,yBAAyB,yOAKnB,+BAA+B,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAKrC,yBAAyB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAK3B,uBAAuB,uNAKrB,yBAAyB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAKrB,6BAA6B,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAKrB,qCAAqC,iQAKnC,uCAAuC,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAK/C,+BAA+B,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAK/B,+BAA+B,8MAKxC,sBAAsB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA;sBAUhF;;sBACA;;sBACA;;sBACA;;sBAIA;;sBACA;iMAM2B,aAAa,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEvP9B,UAAU,CAAA;AACd,IAAA,OAAO,cAAc,CAC1B,CAAS,EACT,YAAoB,EACpB,cAAsE,EAAA;QAEtE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,cAAc;AAC9D,QAAA,OAAO,aAAa,GAAG,QAAQ,GAAG,CAAC,GAAG,YAAY,GAAG,UAAU,GAAG,CAAC,GAAG,YAAY;IACpF;AAEO,IAAA,OAAO,iBAAiB,CAC7B,UAAkB,EAClB,UAA8B,EAC9B,cAAsE,EAAA;AAEtE,QAAA,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,cAAc;AAC/C,QAAA,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU;AACxC,QAAA,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU;QAC5C,IAAI,CAAC,EAAE,UAAU;QACjB,MAAM,UAAU,GAAG,EAAE;QAErB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YAC/B,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC;YACjE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACzC;AAEA,QAAA,OAAO,UAAU;IACnB;AACD;;ACHD,MAAM,eAAe,GAAqB;AACxC,IAAA;AACE,QAAA,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,UAAU,CAAC,SAAS;AAC1B,QAAA,MAAM,EAAA,KAAA;AACN,QAAA,UAAU,EAAE,qCAAqC;AACjD,QAAA,QAAQ,EAAE,qCAAqC;AAChD,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,UAAU,CAAC,IAAI;AACrB,QAAA,MAAM,EAAA,gBAAA;AACN,QAAA,UAAU,EAAE,gDAAgD;AAC5D,QAAA,QAAQ,EAAE,gDAAgD;AAC3D,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,UAAU,CAAC,SAAS;AAC1B,QAAA,MAAM,EAAA,cAAA;AACN,QAAA,UAAU,EAAE,8CAA8C;AAC1D,QAAA,QAAQ,EAAE,8CAA8C;AACzD,KAAA;CACF;MAQY,gBAAgB,CAAA;aAyCZ,IAAA,CAAA,YAAY,GAAG,CAAH,CAAK;AAGhC,IAAA,WAAA,GAAA;AA3CA,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAA4B,SAAS,gDAAC;AAClD,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,iBAAiB,kDAAC;AACzC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,EAAE,yDAAC;AACjC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAS,EAAE,+DAAC;AACvC;;;;AAIG;AACH,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;QAExC,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,KAAA,wBAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA8B;AAEjD,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAgB,EAAE,iEAAC;QAEhD,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAClG,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,qDAAC;QAC3E,IAAA,CAAA,YAAY,GAAG,MAAM,EAAO;QAC5B,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAAe;QAC1C,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAAyB;AACvD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAe,EAAE,wDAAC;AACvC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAwB,SAAS,qDAAC;AACpD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAA4B,SAAS,wDAAC;AAC3D,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAC3B,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACjF;;AAED,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MACvB,IAAI,CAAC,WAAW,EAAE,oCAAwB,IAAI,CAAC,UAAU,EAAE,yDAC5D;;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG;AACvB,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,aAAa,EAAE,KAAK;SACrB;;AAEO,QAAA,IAAA,CAAA,UAAU,GAAG,EAAE,CAAC,eAAe;AAMrC,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,YAAY,EAAE;QACvD,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC;AAC1D,QAAA,CAAC,CAAC;IACJ;IAEO,aAAa,CAAC,UAAe,EAAE,cAAmB,EAAA;AACvD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI;YAAE;AACX,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,KAAK,CAAC;QAE9D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC5E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,CAAC;AACpE,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACjB,YAAA,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AAChC,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,eAAe,EAAE,MAAM;AACxB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACpB,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,QAAQ;AACnB,iBAAA;AACF,aAAA;AACD,YAAA,mBAAmB,EAAE,KAAK;AAC1B,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,sDAAiC;gBACrD,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;AACvC,gBAAA,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE;aAC3C,CAAC;AACF,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,0DAAmC;AACvD,gBAAA,SAAS,EAAE,GAAG;gBACd,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;AACvC,gBAAA,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE;aAC3C,CAAC;AACH,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,IAAmB,EAAE,UAAe,EAAE,cAAmB,EAAA;AACtE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,eAAe,CAAC;QACzE,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AACpE,YAAA,OAAO,UAAU;QACnB;AAAO,aAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;;AAEnC,YAAA,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC;YAC3F,IAAI,iBAAiB,GAAG,CAAC;YACzB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,kBAAkB,CAAC,iBAAiB,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;QAC3G;aAAO;YACL,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC;QACnE;IACF;AAEA,IAAA,aAAa,CAAC,IAAmB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9D;AAEA,IAAA,0BAA0B,CAAC,IAAmB,EAAA;QAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACrE;AAEQ,IAAA,sBAAsB,CAAC,KAAkB,EAAA;AAC/C,QAAA,IAAI,KAAK,KAAA,KAAA;AAAsB,YAAA,OAAO,KAAK;AACtC,aAAA,IAAI,KAAK,KAAA,gBAAA,qCAAmC,KAAK,KAAA,cAAA;AAA+B,YAAA,OAAO,KAAK;;AAC5F,YAAA,OAAO,KAAK;IACnB;AAEA,IAAA,WAAW,CAAC,KAAS,EAAA;QACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACtC;AAEA,IAAA,oBAAoB,CAAC,KAAU,EAAA;QAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AAChD,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,YAAA,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;AACtC,SAAA,CAAC;IACJ;8GA7HW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,k3CCvD7B,mlHA8Ec,EAAA,MAAA,EAAA,CAAA,gQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxB,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,EAAAgB,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDvBD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,aAAa,EAAA,QAAA,EAAA,mlHAAA,EAAA,MAAA,EAAA,CAAA,gQAAA,CAAA,EAAA;;AAmIzB,SAAS,iBAAiB,CAAC,YAAoB,EAAE,UAAe,EAAE,cAAmB,EAAA;IACnF,OAAO,UAAU,CAAC,iBAAiB,CAAC,YAAY,EAAE,UAAU,EAAE,cAAc,CAAC;AAC/E;;SEtLgB,KAAK,CAAC,gBAA0B,EAAE,MAAc,EAAE,OAAsC,EAAA;IACtG,OAAO,OAAO,CAAC;AACb,UAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO;UAChE,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;AACvC;;MC2Ca,mBAAmB,CAAA;AAoH9B,IAAA,WAAA,GAAA;AAnHS,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAE9C,IAAA,CAAA,UAAU,GAAG,UAAU;QACvB,IAAA,CAAA,UAAU,GAAG,UAAU;AAEd,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,EAAE,mDAAC;AAC7B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,mDAAC;AACtC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAwB,QAAQ,uDAAC;QACpD,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAA8D,CAAC,OAAO,KACzG,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACrC;AACQ,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,EAAE,0DAAC;QAC1B,IAAA,CAAA,UAAU,GAAG,KAAK,CAA2B,EAAE,YAAY,EAAE,MAAM,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtE,IAAA,CAAA,UAAU,GAAG,KAAK,CAA2B,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAEpE,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAY;QAC7B,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAA4B;QAE1D,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAoB;AAC5D,YAAA;AACE,gBAAA,EAAE,EAAE,QAAQ;gBACZ,UAAU,EAAE,UAAU,CAAC,eAAe;AACtC,gBAAA,OAAO,EAAE,mCAAmC;AAC7C,aAAA;AACD,YAAA,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,6BAA6B,EAAE;AACtF,YAAA;AACE,gBAAA,EAAE,EAAE,SAAS;gBACb,UAAU,EAAE,UAAU,CAAC,MAAM;AAC7B,gBAAA,OAAO,EAAE,+BAA+B;AACzC,aAAA;AACF,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEO,QAAA,IAAA,CAAA,KAAK,GAAG,SAAS,CAAC,OAAO,iDAAC;AAC1B,QAAA,IAAA,CAAA,YAAY,GAAG,SAAS,CAAS,cAAc,wDAAC;AAEhD,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,aAAa,4DAAC;AAC9C,QAAA,IAAA,CAAA,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAEvD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA0B,SAAS,mDAAC;AAEpD,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAA+B,SAAS,iEAAC;AACvE,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAA+B,SAAS,iEAAC;AACvE,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAA+B,SAAS,kEAAC;AAExE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAA8C,SAAS,qDAAC;AACzE,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAEzC,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC5C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAE9B,YAAA,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;AAC3D,YAAA,OAAO;AACJ,iBAAA,GAAG,CAAC,CAAC,CAAS,KAAI;gBACjB,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC;AACxD,gBAAA,IAAI,CAAC,YAAY;AAAE,oBAAA,OAAO,SAAS;gBACnC,OAAO;oBACL,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAA,CAAA,EAAI,CAAC,CAAC,KAAK,CAAA,CAAE;oBAC9B,MAAM,EAAE,YAAY,CAAC,OAAO;oBAC5B,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,aAAa,EAAE,YAAY,CAAC,EAAE;iBACG;AACrC,YAAA,CAAC;iBACA,MAAM,CAAC,CAAC,CAAsC,KAAmC,CAAC,KAAK,SAAS;AAChG,iBAAA,KAAK;iBACL,IAAI,CACH,CAAC,CAA0B,EAAE,CAA0B,KACrD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAC1E;AACL,QAAA,CAAC,gEAAC;QAKe,IAAA,CAAA,YAAY,GAAkB,CAAC,cAAc,EAAE,mBAAmB,EAAE,aAAa,CAAC;AAClF,QAAA,IAAA,CAAA,iBAAiB,GAAsC;AACtE,YAAA,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,eAAe,EAAE,kBAAkB,CAAC;AACtG,YAAA,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC;AAChH,YAAA,CAAC,UAAU,CAAC,aAAa,GAAG;gBAC1B,6BAA6B;gBAC7B,6BAA6B;gBAC7B,uBAAuB;gBACvB,0BAA0B;AAC3B,aAAA;AACD,YAAA,CAAC,UAAU,CAAC,eAAe,GAAG;gBAC5B,+BAA+B;gBAC/B,+BAA+B;gBAC/B,yBAAyB;gBACzB,4BAA4B;AAC7B,aAAA;AACD,YAAA,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC;SACjH;QACgB,IAAA,CAAA,aAAa,GAAwD,EAAE;QAEvE,IAAA,CAAA,aAAa,GAAkB,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,CAAC;AACvF,QAAA,IAAA,CAAA,kBAAkB,GAAsC;AACvE,YAAA,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,qBAAqB,EAAE,eAAe,EAAE,kBAAkB,CAAC;AACrG,YAAA,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC;AAC/G,YAAA,CAAC,UAAU,CAAC,aAAa,GAAG;gBAC1B,4BAA4B;gBAC5B,6BAA6B;gBAC7B,uBAAuB;gBACvB,0BAA0B;AAC3B,aAAA;AACD,YAAA,CAAC,UAAU,CAAC,eAAe,GAAG;gBAC5B,gBAAgB;gBAChB,+BAA+B;gBAC/B,yBAAyB;gBACzB,4BAA4B;AAC7B,aAAA;AACD,YAAA,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC;SAChH;QACgB,IAAA,CAAA,cAAc,GAAwD,EAAE;QAGvF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;AAE1B,YAAA,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,KAAI;AAClB,gBAAA,QAAQ,IAAI,CAAC,OAAO,EAAE;AACpB,oBAAA,KAAK,uBAAuB;wBAC1B,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;wBAC7C;AACF,oBAAA,KAAK,uBAAuB;wBAC1B,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;wBAC7C;AACF,oBAAA,KAAK,wBAAwB;wBAC3B,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;wBAC9C;;AAEN,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAEhE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KACzB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CACnF;AACD,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;AAC5B,kBAAE,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;kBACtG,SAAS;YAEb,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;AAClE,YAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,KAC1C,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CACtF;AACD,YAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;AAC9B,kBAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC1B,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;kBAE5F,SAAS;AACf,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;YAC5C,IAAI,CAAC,kBAAkB,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CACT,MAAuB,EACvB,aAAgD,EAChD,SAA8D,EAC9D,QAAuB,EAAA;QAEvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AACzB,YAAA,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAClF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAI;AACd,gBAAA,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,cAAc,GAAG,YAAY,CACjC,YAAY,EACZ,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,CAC7C,EAAE,QAAQ;gBACX,IAAI,cAAc,EAAE;AAClB,oBAAA,OAAO,cAAc;gBACvB;AACA,gBAAA,OAAO,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,IAAI,IAAI;AACvF,YAAA,CAAC,CAAC,EACF,YAAY,CAAC,EAAE,CAAC,CACjB;QACH;AAEA,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7B;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IACtB;AAEA,IAAA,YAAY,CAAC,MAAc,EAAA;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC;AACtE,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IAC3B;AAEA,IAAA,cAAc,CAAC,GAAQ,EAAA;AACrB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAChH,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IAC3B;IAEA,YAAY,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,QAAA,IAAI,OAAO,EAAE,EAAE,KAAK,uBAAuB,EAAE;YAC3C,OAAO,CAAC,KAAK,EAAE;YACf;QACF;QAEA,YAAY,EAAE,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE;IACnD;AAEA,IAAA,SAAS,CAAC,KAAU,EAAA;QAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC;IAC7B;IAEA,kBAAkB,CAAC,MAAc,EAAE,OAA0B,EAAA;AAC3D,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,QAAQ,CAAC;IACtD;IAEA,SAAS,CAAC,KAAa,EAAE,OAA0B,EAAA;AACjD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC;IAC5C;IAEA,gBAAgB,CAAC,MAAW,EAAE,GAAQ,EAAA;QACpC,OAAO,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC;IAClD;AAEA,IAAA,yBAAyB,CAAC,MAAc,EAAA;QACtC,OAAO;AACL,YAAA,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK;SAChC;IACH;AAEA,IAAA,oBAAoB,CAAC,GAAQ,EAAA;QAC3B,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,CAAC,GAAG,CAAC,eAAe,CAAW,GAAG,GAAG,CAAC,OAAO,CAAC;SAC/C;IACH;IAEQ,kBAAkB,GAAA;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,IAAI,CAAC;AAEhD,QAAA,IAAI,YAAY,KAAK,CAAC,EAAE;AACtB,YAAA,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAC1E,CAAC,cAAsB,KAAI;AACzB,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC7C,YAAA,CAAC,CACF;YACD;QACF;QAEA,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,wCAAwC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CACjH,CAAC,cAAsB,KAAI;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC7C,QAAA,CAAC,CACF;IACH;8GAvQW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAkCH,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAGO,aAAa,gECtFxD,40SAoOA,EAAA,MAAA,EAAA,CAAA,qQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,KAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,wCAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,gCAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,6BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAU,cAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDnLa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,iBAAiB,EAAA,QAAA,EAAA,40SAAA,EAAA,MAAA,EAAA,CAAA,qQAAA,CAAA,EAAA;+hCAsCA,OAAO,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACQ,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEf,aAAa,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME5D3C,4BAA4B,CAAA;AAsFvC,IAAA,WAAA,GAAA;AArFQ,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnD,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,sBAAsB,kDAAC;QAC9C,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,KAAA,wBAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA8B;AACjD,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,EAAE,yDAAC;AACjC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAS,EAAE,+DAAC;AACvC;;;;;AAKG;AACH,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;AACxC,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAgB,EAAE,iEAAC;AAEhD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,EAAE,gDAAC;AAE3B,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAW,EAAE,wDAAC;AAElC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,KAAK,yDAAC;AAErC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAa,UAAU,CAAC,MAAM,sDAAC;AAEjD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;QAE/B,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAiB;AAE/B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;AAElC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAyB,EAAE,kDAAC;QAE1C,IAAA,CAAA,YAAY,GAAG,MAAM,EAAO;QAC5B,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAAe;QAC1C,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAAqC;QAEnE,IAAA,CAAA,YAAY,GAAG,aAAa,CAAC;AAC3B,YAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7B,YAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACzB,YAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;SACjC,CAAC,CAAC,IAAI,CACL,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,KAAI;YAChF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAChF,IAAI,WAAW,GAAkB,EAAE;YAEnC,IAAI,aAAa,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5C,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AACzC,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC;AAC/B,iBAAA,CAAC,CAAC;AAEH,gBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,oBAAA,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;oBAChE,IAAI,WAAW,EAAE;wBACf,WAAW,CAAC,KAAK,EAAE;oBACrB;yBAAO;wBACL,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;oBAC7F;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO;gBACL,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;AAC/C,oBAAA,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAoB,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO;2BACxD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAoB,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG;0BACrE,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;gBACzF,CAAC,EAAE,EAAE,CAAC;YACR;AAEA,YAAA,IAAI,UAAU,KAAK,UAAU,CAAC,eAAe,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACvE,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,CAAC,YAAY,KACf,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACtB,oBAAA,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC5B,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,eAAe,EAAE,CAAC,CAAC,eAAe;iBACnC,CAAC,CAAC,CACJ,CACF;YACH;AACA,YAAA,OAAO,EAAE,CAAC,WAAW,CAAC;QACxB,CAAC,CAAC,CACH;QAGC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM;gBAAE;YACb,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AACjC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;AAEA,IAAA,oBAAoB,CAAC,cAA2B,EAAA;AAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC;AACpC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC;AAC5C,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,YAAA,iBAAiB,EAAE,cAAc;AAClC,SAAA,CAAC;IACJ;8GAzGW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,mxEC1BzC,0cAWe,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA7B,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDeF,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,4BAA4B,EAAA,QAAA,EAAA,0cAAA,EAAA;;;ME6C3B,4BAA4B,CAAA;AAsDvC,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;IAC1D;IACA,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC;AA2VA,IAAA,WAAA,GAAA;AAvZiB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD,QAAA,IAAA,CAAA,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,6DAAC;AAEhD,QAAA,IAAA,CAAA,mCAAmC,GAAG,IAAI,aAAa,CAAqC,CAAC,CAAC;AAC9F,QAAA,IAAA,CAAA,wCAAwC,GAAG,IAAI,aAAa,CAA0C,CAAC,CAAC;AACxG,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,aAAa,CAAoC,CAAC,CAAC;AACnF,QAAA,IAAA,CAAA,kCAAkC,GAAG,IAAI,aAAa,CAAoC,CAAC,CAAC;AAC5F,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,aAAa,CAAyB,CAAC,CAAC;AACtE,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,aAAa,CAA2B,CAAC,CAAC;AAE1E,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAkB,SAAS,kEAAC;AAC1D,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAkB,SAAS,4DAAC;AACpD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,SAAS,0DAAC;AAClD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,SAAS,0DAAC;AAClD,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAqB,SAAS,oEAAC;AAC/D,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAqB,SAAS,oEAAC;AAC/D,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,kEAAC;AAC7D,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,kEAAC;AAC7D,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,kEAAC;AAC7D,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,kEAAC;AAC7D,QAAA,IAAA,CAAA,0BAA0B,GAAG,KAAK,CAAqB,SAAS,sEAAC;AACjE,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAU,IAAI,+DAAC;AAC1C,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,MAAM,gDAAC;AAC5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,uDAAC;AAClD,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAuB,SAAS,2DAAC;QACxD,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACrE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,mDAAC;AACtC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAqB,SAAS,+DAAC;AAC1D,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;AACxC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAU,IAAI,+DAAC;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,iBAAiB,yDAAC;AAChD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,EAAE,mDAAC;QAC7B,IAAA,CAAA,aAAa,GAAG,KAAK,CAAA,MAAA,+BAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA2C;AAChE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAM,EAAE,qDAAC;QAC1B,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB;;;;AAIvC,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACF,IAAA,CAAA,SAAS,GAAG,KAAK,CAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAqB,SAAS,oDAAC;AAC/C,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAqB,SAAS,gEAAC;AAC3D,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAa,OAAO,kDAAC;AACnC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAS,EAAE,2DAAC;AACnC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,wCAAwC,0DAAC;AACxE,QAAA,IAAA,CAAA,gCAAgC,GAAG,KAAK,CAAS,6CAA6C,4EAAC;AAC/F,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAS,wBAAwB,iEAAC;AAC/D,QAAA,IAAA,CAAA,sCAAsC,GAAG,KAAK,CAAS,6CAA6C,kFAAC;AACrG,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAe,EAAE,6DAAC;AAC3C,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAU,IAAI,0DAAC;AASrC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;AACxC,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAwB,QAAQ,iEAAC;AAC9D,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAS,EAAE,oEAAC;QAC5C,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAA2B,EAAE,YAAY,EAAE,MAAM,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAChF,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAA2B,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC9E,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAA8D,CAAC,OAAO,KAChG,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACrC;AACD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,CAAC,gDAAC;AACvB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAQ,EAAE,wDAAC;AAC/B,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAW,EAAE,+DAAC;AACzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC7C,YAAA,QACG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAuB;AAC5G,gBAAA,EAAE;AAEN,QAAA,CAAC,4DAAC;AACF,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,8DAAC;AAC1C,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAmB,OAAO,gEAAC;AACvD,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAqB,SAAS,4DAAC;AACvD,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAqB,SAAS,6DAAC;AACxD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;AAClC,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,8DAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAA8B,EAAE,wDAAC;AAErD,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAA+B,WAAW,0DAAC;AACxE,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC;AAC5E,YAAA,OAAO,iBAAiB,EAAE,QAAQ,IAAI,SAAS;AACjD,QAAA,CAAC,4DAAC;AACF,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAChD,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,YAAA,OAAO,gBAAgB,IAAI,cAAc,IAAI,SAAS;AACxD,QAAA,CAAC,sDAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAG,YAAY,CAA+B,eAAe,8DAAC;AAChF,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,qBAAqB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,eAAe,CAAC;AACpF,YAAA,OAAO,qBAAqB,EAAE,QAAQ,IAAI,SAAS;AACrD,QAAA,CAAC,gEAAC;AACF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACxD,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACpD,YAAA,OAAO,oBAAoB,IAAI,kBAAkB,IAAI,SAAS;AAChE,QAAA,CAAC,0DAAC;AAEF,QAAA,IAAA,CAAA,0BAA0B,GAAG,YAAY,CAA+B,uBAAuB,sEAAC;AAChG,QAAA,IAAA,CAAA,4BAA4B,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,6BAA6B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,uBAAuB,CAAC;AACpG,YAAA,OAAO,6BAA6B,EAAE,QAAQ,IAAI,SAAS;AAC7D,QAAA,CAAC,wEAAC;AACF,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACxE,YAAA,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACpE,YAAA,OAAO,4BAA4B,IAAI,0BAA0B,IAAI,SAAS;AAChF,QAAA,CAAC,kEAAC;AAEF,QAAA,IAAA,CAAA,4BAA4B,GAAG,YAAY,CAA+B,yBAAyB,wEAAC;AACpG,QAAA,IAAA,CAAA,8BAA8B,GAAG,QAAQ,CAAC,MAAK;AAC7C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,+BAA+B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,yBAAyB,CAAC;AACxG,YAAA,OAAO,+BAA+B,EAAE,QAAQ,IAAI,SAAS;AAC/D,QAAA,CAAC,0EAAC;AACF,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAAC,MAAK;AACvC,YAAA,MAAM,8BAA8B,GAAG,IAAI,CAAC,8BAA8B,EAAE;AAC5E,YAAA,MAAM,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACxE,YAAA,OAAO,8BAA8B,IAAI,4BAA4B,IAAI,SAAS;AACpF,QAAA,CAAC,oEAAC;AAEF,QAAA,IAAA,CAAA,0BAA0B,GAAG,YAAY,CAA+B,uBAAuB,sEAAC;AAChG,QAAA,IAAA,CAAA,4BAA4B,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,6BAA6B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,uBAAuB,CAAC;AACpG,YAAA,OAAO,6BAA6B,EAAE,QAAQ,IAAI,SAAS;AAC7D,QAAA,CAAC,wEAAC;AACF,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACxE,YAAA,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACpE,YAAA,OAAO,4BAA4B,IAAI,0BAA0B,IAAI,SAAS;AAChF,QAAA,CAAC,kEAAC;AAEF,QAAA,IAAA,CAAA,0BAA0B,GAAG,YAAY,CAA+B,uBAAuB,sEAAC;AAChG,QAAA,IAAA,CAAA,4BAA4B,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,6BAA6B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,uBAAuB,CAAC;AACpG,YAAA,OAAO,6BAA6B,EAAE,QAAQ,IAAI,SAAS;AAC7D,QAAA,CAAC,wEAAC;AACF,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACxE,YAAA,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACpE,YAAA,OAAO,4BAA4B,IAAI,0BAA0B,IAAI,SAAS;AAChF,QAAA,CAAC,kEAAC;AAEF,QAAA,IAAA,CAAA,oBAAoB,GAAG,YAAY,CAA+B,iBAAiB,gEAAC;AACpF,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,uBAAuB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,iBAAiB,CAAC;AACxF,YAAA,OAAO,uBAAuB,EAAE,QAAQ,IAAI,SAAS;AACvD,QAAA,CAAC,kEAAC;AACF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAC5D,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACxD,YAAA,OAAO,sBAAsB,IAAI,oBAAoB,IAAI,SAAS;AACpE,QAAA,CAAC,4DAAC;AAEF,QAAA,IAAA,CAAA,oBAAoB,GAAG,YAAY,CAA+B,iBAAiB,gEAAC;AACpF,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,uBAAuB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,iBAAiB,CAAC;AACxF,YAAA,OAAO,uBAAuB,EAAE,QAAQ,IAAI,SAAS;AACvD,QAAA,CAAC,kEAAC;AACF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAC5D,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACxD,YAAA,OAAO,sBAAsB,IAAI,oBAAoB,IAAI,SAAS;AACpE,QAAA,CAAC,4DAAC;AAEF,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAA+B,UAAU,yDAAC;AACtE,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC;AAC1E,YAAA,OAAO,gBAAgB,EAAE,QAAQ,IAAI,SAAS;AAChD,QAAA,CAAC,2DAAC;AACF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC9C,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,OAAO,eAAe,IAAI,aAAa,IAAI,SAAS;AACtD,QAAA,CAAC,qDAAC;AAEF,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAA+B,UAAU,yDAAC;AACtE,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC;AAC1E,YAAA,OAAO,gBAAgB,EAAE,QAAQ,IAAI,SAAS;AAChD,QAAA,CAAC,2DAAC;AACF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC9C,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,OAAO,eAAe,IAAI,aAAa,IAAI,SAAS;AACtD,QAAA,CAAC,qDAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAA+B,WAAW,0DAAC;AACxE,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC;AAC5E,YAAA,OAAO,iBAAiB,EAAE,QAAQ,IAAI,SAAS;AACjD,QAAA,CAAC,4DAAC;AACF,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAChD,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,YAAA,OAAO,gBAAgB,IAAI,cAAc,IAAI,SAAS;AACxD,QAAA,CAAC,sDAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAA+B,WAAW,0DAAC;AACxE,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC;AAC5E,YAAA,OAAO,iBAAiB,EAAE,QAAQ,IAAI,SAAS;AACjD,QAAA,CAAC,4DAAC;AACF,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAChD,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,YAAA,OAAO,gBAAgB,IAAI,cAAc,IAAI,SAAS;AACxD,QAAA,CAAC,sDAAC;AAEF,QAAA,IAAA,CAAA,4BAA4B,GAAG,YAAY,CAA+B,yBAAyB,wEAAC;AACpG,QAAA,IAAA,CAAA,8BAA8B,GAAG,QAAQ,CAAC,MAAK;AAC7C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,+BAA+B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,yBAAyB,CAAC;AACxG,YAAA,OAAO,+BAA+B,EAAE,QAAQ,IAAI,SAAS;AAC/D,QAAA,CAAC,0EAAC;AACF,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAAC,MAAK;AACvC,YAAA,MAAM,8BAA8B,GAAG,IAAI,CAAC,8BAA8B,EAAE;AAC5E,YAAA,MAAM,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACxE,YAAA,OAAO,8BAA8B,IAAI,4BAA4B,IAAI,SAAS;AACpF,QAAA,CAAC,oEAAC;AAEF,QAAA,IAAA,CAAA,oBAAoB,GAAG,YAAY,CAA+B,iBAAiB,gEAAC;AACpF,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,uBAAuB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,iBAAiB,CAAC;AACxF,YAAA,OAAO,uBAAuB,EAAE,QAAQ,IAAI,SAAS;AACvD,QAAA,CAAC,kEAAC;AACF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAC5D,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACxD,YAAA,OAAO,sBAAsB,IAAI,oBAAoB,IAAI,SAAS;AACpE,QAAA,CAAC,4DAAC;AAEF,QAAA,IAAA,CAAA,0BAA0B,GAAG,YAAY,CAA+B,uBAAuB,sEAAC;AAChG,QAAA,IAAA,CAAA,4BAA4B,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,6BAA6B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,uBAAuB,CAAC;AACpG,YAAA,OAAO,6BAA6B,EAAE,QAAQ,IAAI,SAAS;AAC7D,QAAA,CAAC,wEAAC;AACF,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACxE,YAAA,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACpE,YAAA,OAAO,4BAA4B,IAAI,0BAA0B,IAAI,SAAS;AAChF,QAAA,CAAC,kEAAC;AAEF,QAAA,IAAA,CAAA,oBAAoB,GAAG,YAAY,CAA+B,iBAAiB,gEAAC;AACpF,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,uBAAuB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,iBAAiB,CAAC;AACxF,YAAA,OAAO,uBAAuB,EAAE,QAAQ,IAAI,SAAS;AACvD,QAAA,CAAC,kEAAC;AACF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAC5D,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACxD,YAAA,OAAO,sBAAsB,IAAI,oBAAoB,IAAI,SAAS;AACpE,QAAA,CAAC,4DAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAG,YAAY,CAA+B,eAAe,8DAAC;AAChF,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,qBAAqB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,eAAe,CAAC;AACpF,YAAA,OAAO,qBAAqB,EAAE,QAAQ,IAAI,SAAS;AACrD,QAAA,CAAC,gEAAC;AACF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACxD,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACpD,YAAA,OAAO,oBAAoB,IAAI,kBAAkB,IAAI,SAAS;AAChE,QAAA,CAAC,0DAAC;AAEF,QAAA,IAAA,CAAA,oBAAoB,GAAG,YAAY,CAA+B,iBAAiB,gEAAC;AACpF,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,uBAAuB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,iBAAiB,CAAC;AACxF,YAAA,OAAO,uBAAuB,EAAE,QAAQ,IAAI,SAAS;AACvD,QAAA,CAAC,kEAAC;AACF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAC5D,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACxD,YAAA,OAAO,sBAAsB,IAAI,oBAAoB,IAAI,SAAS;AACpE,QAAA,CAAC,4DAAC;AAEF,QAAA,IAAA,CAAA,wBAAwB,GAAG,YAAY,CAA+B,qBAAqB,oEAAC;AAC5F,QAAA,IAAA,CAAA,0BAA0B,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,2BAA2B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,qBAAqB,CAAC;AAChG,YAAA,OAAO,2BAA2B,EAAE,QAAQ,IAAI,SAAS;AAC3D,QAAA,CAAC,sEAAC;AACF,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACpE,YAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAChE,YAAA,OAAO,0BAA0B,IAAI,wBAAwB,IAAI,SAAS;AAC5E,QAAA,CAAC,gEAAC;AAEF,QAAA,IAAA,CAAA,gCAAgC,GAAG,YAAY,CAA+B,6BAA6B,4EAAC;AAC5G,QAAA,IAAA,CAAA,kCAAkC,GAAG,QAAQ,CAAC,MAAK;AACjD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,mCAAmC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,6BAA6B,CAAC;AAChH,YAAA,OAAO,mCAAmC,EAAE,QAAQ,IAAI,SAAS;AACnE,QAAA,CAAC,8EAAC;AACF,QAAA,IAAA,CAAA,4BAA4B,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,kCAAkC,GAAG,IAAI,CAAC,kCAAkC,EAAE;AACpF,YAAA,MAAM,gCAAgC,GAAG,IAAI,CAAC,gCAAgC,EAAE;AAChF,YAAA,OAAO,kCAAkC,IAAI,gCAAgC,IAAI,SAAS;AAC5F,QAAA,CAAC,wEAAC;AAEF,QAAA,IAAA,CAAA,kCAAkC,GAAG,YAAY,CAA+B,+BAA+B,8EAAC;AAChH,QAAA,IAAA,CAAA,oCAAoC,GAAG,QAAQ,CAAC,MAAK;AACnD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,qCAAqC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,+BAA+B,CAAC;AACpH,YAAA,OAAO,qCAAqC,EAAE,QAAQ,IAAI,SAAS;AACrE,QAAA,CAAC,gFAAC;AACF,QAAA,IAAA,CAAA,8BAA8B,GAAG,QAAQ,CAAC,MAAK;AAC7C,YAAA,MAAM,oCAAoC,GAAG,IAAI,CAAC,oCAAoC,EAAE;AACxF,YAAA,MAAM,kCAAkC,GAAG,IAAI,CAAC,kCAAkC,EAAE;AACpF,YAAA,OAAO,oCAAoC,IAAI,kCAAkC,IAAI,SAAS;AAChG,QAAA,CAAC,0EAAC;AAEF,QAAA,IAAA,CAAA,0BAA0B,GAAG,YAAY,CAA+B,uBAAuB,sEAAC;AAChG,QAAA,IAAA,CAAA,4BAA4B,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,6BAA6B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,uBAAuB,CAAC;AACpG,YAAA,OAAO,6BAA6B,EAAE,QAAQ,IAAI,SAAS;AAC7D,QAAA,CAAC,wEAAC;AACF,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACxE,YAAA,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACpE,YAAA,OAAO,4BAA4B,IAAI,0BAA0B,IAAI,SAAS;AAChF,QAAA,CAAC,kEAAC;AAEF,QAAA,IAAA,CAAA,0BAA0B,GAAG,YAAY,CAA+B,uBAAuB,sEAAC;AAChG,QAAA,IAAA,CAAA,4BAA4B,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,6BAA6B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,uBAAuB,CAAC;AACpG,YAAA,OAAO,6BAA6B,EAAE,QAAQ,IAAI,SAAS;AAC7D,QAAA,CAAC,wEAAC;AACF,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACxE,YAAA,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACpE,YAAA,OAAO,4BAA4B,IAAI,0BAA0B,IAAI,SAAS;AAChF,QAAA,CAAC,kEAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,YAAY,CAA+B,cAAc,6DAAC;AAC9E,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,oBAAoB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,cAAc,CAAC;AAClF,YAAA,OAAO,oBAAoB,EAAE,QAAQ,IAAI,SAAS;AACpD,QAAA,CAAC,+DAAC;AACF,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACtD,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAClD,YAAA,OAAO,mBAAmB,IAAI,iBAAiB,IAAI,SAAS;AAC9D,QAAA,CAAC,yDAAC;AAEF,QAAA,IAAA,CAAA,SAAS,GAAG,eAAe,CAAgB,aAAa,qDAAC;QAEzD,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAY;QAC7B,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACb,IAAA,CAAA,UAAU,GAAG,gBAAgB,EAAmB;QAChD,IAAA,CAAA,QAAQ,GAAG,gBAAgB,EAAmB;QAC9C,IAAA,CAAA,QAAQ,GAAG,gBAAgB,EAAmB;QAC9C,IAAA,CAAA,gBAAgB,GAAG,gBAAgB,EAAS;QACtD,IAAA,CAAA,oBAAoB,GAAG,MAAM,EAA6B;QAC1D,IAAA,CAAA,yBAAyB,GAAG,MAAM,EAAY;QAE9C,IAAA,CAAA,WAAW,GAAG,MAAM,EAAU;QAC9B,IAAA,CAAA,eAAe,GAAG,MAAM,EAAU;QAExB,IAAA,CAAA,WAAW,GAAG,gBAAgB,EAAO;QACrC,IAAA,CAAA,YAAY,GAAG,gBAAgB,EAAO;QAEhD,IAAA,CAAA,qBAAqB,GAAG,MAAM,EAAqC;AAEnE,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAqB,SAAS,4DAAC;AAExD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAoB,EAAE,gDAAC;QAE1B,IAAA,CAAA,mBAAmB,GAAG,8BAA8B;QAG7D,IAAA,CAAA,gCAAgC,GAAG,MAAM,EAA+B;;;AAI/D,QAAA,IAAA,CAAA,gCAAgC,GAAG,IAAI,YAAY,EAA+B;AAGzF,QAAA,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC;AACjD,aAAA,6BAA6B,CAAC,IAAI,CAAC,mBAAmB;AACtD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,CAAC,sCAAsC,GAAG,QAAQ,CAAC,IAAI,CAAC,uCAAuC,CAAC;QAEpG,MAAM,YAAY,GAAG,IAAI,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC7E,YAAA,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC;AAC1C,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;QAE3D,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,gCAAgC,EAAE;AACzC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;AAC5D,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;AACxC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;YAChC,IAAI,CAAC,QAAQ,EAAE;gBACb;YACF;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACtD,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAC1D,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,EAAE;YACb,SAAS,CAAC,MAAK;AACb,gBAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,sCAAsC,EAAE;gBACjF,IAAI,2BAA2B,EAAE;oBAC/B,IACE,EACE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACjE,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,CAAC,cAAc,EAAE,CAClD,EACD;AACA,wBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;oBACtC;gBACF;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IAEJ;AAEA;;;;;;AAMG;AACH,IAAA,4BAA4B,CAAC,KAAkC,EAAA;AAC7D,QAAA,KAAK,KAAK;AACR,YAAA,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE;YACtC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE;SAC5D;AACD,QAAA,MAAM,mBAAmB,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;AACpE,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACjD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;AACzC,QAAA,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC;YAC5C,oBAAoB,EAAE,KAAK,CAAC,QAAQ;YACpC,gBAAgB,EAAE,KAAK,CAAC,aAAa;AACtC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC;IACnD;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAEjD,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,CAAC,cAAc,EAAE,EAAE;YAC9E,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAC1B,IAAI,CAAC,OAAO;AACT,iBAAA,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,mBAAmB,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;iBAC/E,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC,CAC9B;QACH;AAEA,QAAA,IAAI,kCAAkC,GACpC,IAAI,CAAC,kCAAkC;AACzC,QAAA,IAAI,mCAAmC,GACrC,IAAI,CAAC,mCAAmC;AAC1C,QAAA,IAAI,wCAAwC,GAExC,IAAI,CAAC,wCAAwC;AAEjD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,OAAO,EAAE;YAC7B,kCAAkC,GAAG,kCAAkC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7F;aAAO;AACL,YAAA,mCAAmC,GAAG,mCAAmC,CAAC,IAAI,CAC5E,SAAS,CAAC;AACR,gBAAA,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAC7C,gBAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAC1C,aAAA,CAAC,CACH;AACD,YAAA,wCAAwC,GAAG,wCAAwC,CAAC,IAAI,CACtF,SAAS,CAAC;AACR,gBAAA,kBAAkB,EAAE;AAClB,oBAAA,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE;AACjC,oBAAA,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACtC,iBAAA;AACD,gBAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzC,gBAAA,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAC9C,aAAA,CAAC,CACH;QACH;AAEA,QAAA,IAAI,yBAAyB,GAC3B,IAAI,CAAC,yBAAyB;AAChC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,YAAA,yBAAyB,GAAG,yBAAyB,CAAC,IAAI,CACxD,SAAS,CAAC;AACR,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACxB,aAAA,CAAC,CACH;QACH;AAEA,QAAA,aAAa,CAAC;AACZ,YAAA,mCAAmC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACrD,YAAA,wCAAwC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1D,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AAChD,YAAA,kCAAkC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACpD,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9C,YAAA,yBAAyB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;SAC5C;AACE,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,eAAe,KAAI;AACtB,YAAA,OAAO,8BAA8B,CAAC,eAAe,CAAC;AACxD,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;AAEA,IAAA,OAAO,CAAC,KAAU,EAAA;QAChB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;IACtC;AAEA,IAAA,eAAe,CAAC,OAAwB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/B;IACF;AAEA,IAAA,aAAa,CAAC,OAAwB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7B;IACF;AAEA,IAAA,aAAa,CAAC,OAAwB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7B;IACF;AAEA,IAAA,sBAAsB,CAAC,MAAkB,EAAA;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB;AAEA,IAAA,YAAY,CAAC,MAAW,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;IAC5B;AAEA,IAAA,qBAAqB,CAAC,MAAW,EAAA;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;IAChC;AAEA,IAAA,4BAA4B,CAAC,KAAiC,EAAA;AAC5D,QAAA,MAAM,mBAAmB,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;AACpE,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACjD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC3C;IAEA,gCAAgC,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE;gBACpD,IAAI,CAAC,iBAAiB,EAAE,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACvD,oBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC7B,gBAAA,CAAC,CAAC;YACJ;QACF;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBAClD,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACrD,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC3B,gBAAA,CAAC,CAAC;YACJ;QACF;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBAClD,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACrD,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC3B,gBAAA,CAAC,CAAC;YACJ;QACF;AACA,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE;gBAC1D,IAAI,CAAC,iBAAiB,EAAE,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC7D,oBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAClC,gBAAA,CAAC,CAAC;YACJ;QACF;IACF;AAEA,IAAA,uBAAuB,CAAC,KAAkC,EAAA;AACxD,QAAA,MAAM,mBAAmB,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;AACpE,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACjD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAClD;AAEA,IAAA,0BAA0B,CAAC,KAA+B,EAAA;QACxD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACrD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC;IAC3D;AAEA,IAAA,oBAAoB,CAAC,KAAY,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE;AACpC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC;IACF;AAEA,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;8GA1pBW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,uySAF5B,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EA0XxD,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EApX1B,iBAAiB,gECxEjD,suPAwKA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmC,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kCAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,oBAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,sBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,wCAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,+BAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,6BAAA,EAAA,qCAAA,EAAA,uCAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApB,qBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,uCAAA,EAAA,4BAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,UAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDpGa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,2BAA2B,EAAA,SAAA,EAG1B,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,WAAW,EAAA,4BAA8B,EAAE,CAAC,EAAA,QAAA,EAAA,suPAAA,EAAA;6HAMrE,iBAAiB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA;sBAkD9C;qmEAkC2D,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYP,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYP,uBAAuB,yFAYrB,yBAAyB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAY3B,uBAAuB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYvB,uBAAuB,iFAY7B,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYjB,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYxB,UAAU,0EAYV,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYT,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYX,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYG,yBAAyB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYjC,iBAAiB,uFAYX,uBAAuB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAY7B,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYnB,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYb,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYb,qBAAqB,6FAYb,6BAA6B,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAY3B,+BAA+B,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYvC,uBAAuB,uFAYvB,uBAAuB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAYhC,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAYlC,aAAa,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA;sBAIvD;;sBACA;;sBACA;;sBACA;;sBAOA;;sBACA;;;ME9bU,kBAAkB,CAAA;AAL/B,IAAA,WAAA,GAAA;AAME,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkB,EAAE,iDAAC;AAClC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAqB,SAAS,wDAAC;AACpD,IAAA;8GAHY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,2VCb/B,swBAkBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDLa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,eAAe,EAAA,QAAA,EAAA,swBAAA,EAAA;;;AER3B,MAAM,WAAW,GAAG,eAAe;AACnC,IAAI,sBAAsB,GAAG,CAAC;AAyB9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCG;MACU,gBAAgB,CAAA;AAjD7B,IAAA,WAAA,GAAA;AAkDqB,QAAA,IAAA,CAAA,OAAO,GAAG,CAAA,kBAAA,EAAqB,EAAE,sBAAsB,EAAE;AACzD,QAAA,IAAA,CAAA,SAAS,GAAG,CAAA,oBAAA,EAAuB,sBAAsB,CAAA,CAAE;AAE9E;;;AAGG;AACH,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,8CAAU;AAE9B;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,mDAAC;;AAG9C,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,mBAAmB,oDAAC;;AAE7C,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,qBAAqB,sDAAC;;AAEjD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,mBAAmB,oDAAC;;AAE7C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,sBAAsB,uDAAC;AAEnD;;;AAGG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAU,IAAI,wDAAC;AAEnC;;;AAGG;QACH,IAAA,CAAA,cAAc,GAAG,MAAM,EAAuB;AAE9C,QAAA,IAAA,CAAA,4BAA4B,GAAG,MAAM,CAAS,CAAC,wEAAC;AAEtC,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,yDAAC;AAE7D,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;;YAEnC,IAAI,CAAC,4BAA4B,EAAE;AACnC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU;AAAE,gBAAA,OAAO,KAAK;AAE7B,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AAC1C,QAAA,CAAC,sDAAC;AA4FH,IAAA;IA1FW,WAAW,GAAA;AACnB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC;QACjE,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAC7D,YAAA,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;AAC1D,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1F;IACF;IAEU,YAAY,GAAA;AACpB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC5C,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,UAAU;AAAE,gBAAA,OAAO,IAAI;YAC7D,IAAI,OAAO,KAAK,SAAS;AAAE,gBAAA,OAAO,KAAK;AACvC,YAAA,OAAO,MAAM,CAAC,OAAO,KAAK,OAAO;AACnC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC3E;AAEQ,IAAA,aAAa,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI;AACF,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1B;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,SAAS;QAClB;IACF;IAEQ,YAAY,GAAA;QAClB,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC;AAC7C,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,EAAE;QAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AACtC,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,GAAI,MAAmB,GAAG,EAAE;IACxG;AAEQ,IAAA,aAAa,CAAC,KAAqB,EAAA;AACzC,QAAA,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;QAExD,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACnD;AAEQ,IAAA,gBAAgB,CAAC,aAAqB,EAAE,UAA0B,IAAI,CAAC,YAAY,EAAE,EAAA;AAC3F,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAE9B,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC5C,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,aAAa;AAAE,gBAAA,OAAO,KAAK;YACjE,IAAI,OAAO,KAAK,SAAS;AAAE,gBAAA,OAAO,IAAI;AACtC,YAAA,OAAO,MAAM,CAAC,OAAO,KAAK,OAAO;AACnC,QAAA,CAAC,CAAC;IACJ;IAEQ,cAAc,CAAC,GAAW,EAAE,OAAgB,EAAA;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACzC,QAAA,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,EAAE;AAC1B,QAAA,OAAO,OAAO,GAAG,CAAA,EAAG,UAAU,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,GAAG,UAAU;IAC3D;AAEQ,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS;AACxE,QAAA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE;IACzB;AAEQ,IAAA,YAAY,CAAC,GAAW,EAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,EAAE;AAEvB,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAC5B,YAAA,GAAG,CAAC,IAAI,GAAG,EAAE;AACb,YAAA,GAAG,CAAC,MAAM,GAAG,EAAE;YACf,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE;YACzC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAC1C;AAAE,QAAA,MAAM;YACN,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnC;IACF;8GA3IW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,khCCtE7B,8kCA+BA,EAAA,MAAA,EAAA,CAAA,0CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDuCa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAjD5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,UAAA,EACX,KAAK,EAAA,eAAA,EAGA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8kCAAA,EAAA,MAAA,EAAA,CAAA,0CAAA,CAAA,EAAA;;;MEpBpC,6BAA6B,CAAA;AAJ1C,IAAA,WAAA,GAAA;QAKW,IAAA,CAAA,OAAO,GAAG,SAAS;QACnB,IAAA,CAAA,iBAAiB,GAAW,EAAE;QAC9B,IAAA,CAAA,IAAI,GAAG,EAAE;AACnB,IAAA;8GAJY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,+JCN1C,uOAOM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDDO,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;iCACI,KAAK,EAAA,QAAA,EAAA,uOAAA,EAAA;;sBAIhB;;sBACA;;sBACA;;;MEWU,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;AAOE,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE3C,QAAA,IAAA,CAAA,iBAAiB,GAAqB;AACpC,YAAA,SAAS,EAAE,6BAA6B;AACxC,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,aAAa,EAAE,EAAE;SAClB;QAED,IAAA,CAAA,UAAU,GAAG,SAAS,CAAC,WAAW,uDAAI,IAAI,EAAE,gBAAgB,EAAA,CAAG;AAE/D,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,CAAC,iBAAiB;AAmItD,IAAA;IA3HC,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE;AAC3C,QAAA,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE;AAC7C,QAAA,IAAI,CAAC,sBAAsB,EAAE,WAAW,EAAE;AAC1C,QAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE;IACtC;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YACjC,IAAI,CAAC,+BAA+B,EAAE;QACxC;IACF;IAEA,+BAA+B,GAAA;AAC7B,QAAA,MAAM,iBAAiB,GAAqB,IAAI,CAAC,mBAAmB,CAAC,IAAI;QACzE,MAAM,uBAAuB,GAA4B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,uBAAuB;AAC9G,QAAA,IAAI,iBAAiB,CAAC,SAAS,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,iBAAiB,CAAC,SAAS;QACzD;AACA,QAAA,IAAI,iBAAiB,CAAC,aAAa,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,iBAAiB,CAAC,aAAa;QACjE;AAEA,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAG;QAC3C,gBAAgB,CAAC,KAAK,EAAE;AAExB,QAAA,IAAI,CAAC,gBAAgB,GAAG,uBAAuB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACjF,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ;YAE5C,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;YACjE,IAAI,eAAe,EAAE;AACnB,gBAAA,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,YAAY;YACvC;YACA,MAAM,WAAW,GAAG,KAAK;;AAEzB,YAAA,IAAI,IAAI,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAAE;gBACpD,MAAM,YAAY,GAAG,SAAS,CAAC,sBAAsB,CAAC,KAAK,CAAC;;AAE5D,gBAAA,IAAI,YAAY,KAAK,SAAS,EAAE;oBAC9B,IAAI,eAAe,EAAE;AACnB,wBAAA,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,YAAY;oBAC7C;oBACA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC;gBACjD;gBACA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,MAAe,KAAI;AAC5D,oBAAA,IAAI,MAAM,KAAK,IAAI,EAAE;wBACnB,IAAI,eAAe,EAAE;AACnB,4BAAA,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,YAAY;wBAC7C;AACA,wBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC;oBAC1C;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO;gBACL,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC;YACjD;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AAC7B,YAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,eAAe,CAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAErF,IAAI,IAAI,CAAC,wCAAwC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;AACxE,gBAAA,IAAI,CAAC,uBAAuB,GAAG,YAAY,CAAC,QAAQ,CAAC;AAClD,qBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,uBAAuB,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/D,gBAAA,CAAC,CAAC;YACN;YACA,IAAI,IAAI,CAAC,0CAA0C,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;AAC1E,gBAAA,IAAI,CAAC,yBAAyB,GAAG,YAAY,CAAC,QAAQ,CAAC;AACpD,qBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,uBAAuB,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC;AACjE,gBAAA,CAAC,CAAC;YACN;YACA,IAAI,IAAI,CAAC,uCAAuC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;AACvE,gBAAA,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,aAAa,KAAI;AAClG,oBAAA,uBAAuB,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC;AAClE,gBAAA,CAAC,CAAC;YACJ;;AAGA,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACvD,gBAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5D,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;QAClC;IACF;AAEQ,IAAA,YAAY,CAClB,4BAA0F,EAAA;AAE1F,QAAA,IAAI,4BAA4B,KAAK,SAAS,EAAE;AAC9C,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;QACjB;AACA,QAAA,IAAI,YAAY,CAAC,4BAA4B,CAAC,EAAE;AAC9C,YAAA,OAAO,4BAA4B;QACrC;QACA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC5D;AAEQ,IAAA,yBAAyB,CAAC,SAAc,EAAA;QAC9C,OAAO,cAAc,IAAI,SAAS;IACpC;AAEQ,IAAA,gCAAgC,CAAC,SAAc,EAAA;AACrD,QAAA,OAAO,OAAO,SAAS,CAAC,sBAAsB,KAAK,UAAU;IAC/D;AAEQ,IAAA,wCAAwC,CAAC,SAAc,EAAA;QAC7D,OAAO,sBAAsB,IAAI,SAAS;IAC5C;AAEQ,IAAA,0CAA0C,CAAC,SAAc,EAAA;QAC/D,OAAO,wBAAwB,IAAI,SAAS;IAC9C;AAEQ,IAAA,uCAAuC,CAAC,SAAc,EAAA;QAC5D,OAAO,qBAAqB,IAAI,SAAS;IAC3C;8GA9IW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAUW,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9B9D,kIAIA,EAAA,MAAA,EAAA,CAAA,qFAAA,CAAA,EAAA,CAAA,CAAA;;2FDgBa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,kIAAA,EAAA,MAAA,EAAA,CAAA,qFAAA,CAAA,EAAA;AAcP,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,WAAW,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AERzD,MAAM,2BAA2B,GAA8B;AACpE,IAAA,GAAG,EAAE,2BAA2B;;AAG3B,MAAM,6BAA6B,GAA8B;AACtE,IAAA,GAAG,EAAE,0BAA0B;;AAG1B,MAAM,iBAAiB,GAAqB;AACjD,IAAA,MAAM,EAAE;AACN,QAAA,oBAAoB,EAAE,2BAA2B;AACjD,QAAA,uBAAuB,EAAE,IAAI;AAC7B,QAAA,sBAAsB,EAAE,6BAA6B;AACtD,KAAA;AACD,IAAA,aAAa,EAAE,EAAE;;MASN,qBAAqB,CAAA;AAmBhC,IAAA,WAAA,GAAA;AAlBA,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE3C,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAiC,SAAS,kDAAC;AAEzD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAmB,iBAAiB,sDAAC;AAGxD,QAAA,IAAA,CAAA,sBAAsB,GAA6C,IAAI,eAAe,CAAC,EAAE,CAAC;AAC1F,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAoC,EAAE,6DAAC;AACjE,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAoC,EAAE,8DAAC;QAElE,IAAA,CAAA,oBAAoB,GAAG,MAAM,EAAwB;AAErD,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAAa,eAAe,yDAAC;AACtD,QAAA,IAAA,CAAA,eAAe,GAAG,SAAS,CAAa,iBAAiB,2DAAC;AAC1D,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAa,cAAc,yDAAC;;QAItD,MAAM,CAAC,MAAK;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM;AAEpD,YAAA,IAAI,CAAC,MAAM;gBAAE;AAEb,YAAA,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE;AACxC,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1C,gBAAA,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE;YACtC;AAAO,iBAAA,IAAI,MAAM,CAAC,eAAe,KAAK,WAAW,EAAE;AACjD,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC9C,gBAAA,eAAe,EAAE,aAAa,CAAC,KAAK,EAAE;YACxC;AAAO,iBAAA,IAAI,MAAM,CAAC,eAAe,KAAK,QAAQ,EAAE;AAC9C,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;oBACxD,OAAO,YAAY,CAAC,aAAa,CAAC,EAAE,KAAK,MAAM,CAAC,uBAAuB;AACzE,gBAAA,CAAC,CAAC;gBACF,UAAU,CAAC,MAAK;AACd,oBAAA,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE;AAC/B,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;;AAEV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM;gBAAE;AAEb,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;YACpC,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,CAAC,MAAM,CAAC,oBAAoB,EAAE,GAAG,EAAE;oBACvE,UAAU,CAAC,MAAM,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB;gBACtE;AACA,gBAAA,IAAI,MAAM,CAAC,uBAAuB,EAAE;oBAClC,UAAU,CAAC,MAAM,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB;gBAC5E;AACA,gBAAA,IAAI,CAAC,CAAC,MAAM,CAAC,sBAAsB,IAAI,CAAC,CAAC,MAAM,CAAC,sBAAsB,EAAE,GAAG,EAAE;oBAC3E,UAAU,CAAC,MAAM,CAAC,sBAAsB,GAAG,MAAM,CAAC,sBAAsB;gBAC1E;YACF;YACA,UAAU,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa;AACtD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AAC/B,YAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;AACrC,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,mBAAmB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IACrC;IAEA,qBAAqB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;IACvC;AAEA,IAAA,kBAAkB,CAAC,MAAuC,EAAA;QACxD,OAAO,IAAI,CAAC,YAAY,CAAC,CAAA,MAAA,CAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;IAC/C;IAEA,2BAA2B,CAAC,qBAA8C,EAAE,QAAgB,EAAA;AAC1F,QAAA,OAAO,QAAQ,IAAI,qBAAqB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,GAAG,IAAI;IACnF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YACjC,IAAI,CAAC,+BAA+B,EAAE;QACxC;IACF;IAEA,+BAA+B,GAAA;AAC7B,QAAA,MAAM,iBAAiB,GAAqB,IAAI,CAAC,mBAAmB,CAAC,IAAI;QACzE,MAAM,uBAAuB,GAA4B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,uBAAuB;AAC9G,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,QAAA,IAAI,iBAAiB,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM;AAC7C,YAAA,IAAI,CAAC,CAAC,YAAY,CAAC,oBAAoB,IAAI,CAAC,CAAC,YAAY,CAAC,oBAAoB,CAAC,GAAG,EAAE;gBAClF,UAAU,CAAC,MAAM,CAAC,oBAAoB,GAAG,YAAY,CAAC,oBAAoB;YAC5E;AACA,YAAA,IAAI,YAAY,CAAC,uBAAuB,KAAK,SAAS,EAAE;gBACtD,UAAU,CAAC,MAAM,CAAC,uBAAuB,GAAG,YAAY,CAAC,uBAAuB;YAClF;AACA,YAAA,IAAI,CAAC,CAAC,YAAY,CAAC,sBAAsB,IAAI,CAAC,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE;gBACtF,UAAU,CAAC,MAAM,CAAC,sBAAsB,GAAG,YAAY,CAAC,sBAAsB;YAChF;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AAE/B,QAAA,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;QAE9E,IAAI,CAAC,sBAAsB,GAAG,uBAAuB,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC,CAAC;QAChH,IAAI,CAAC,wBAAwB,GAAG,uBAAuB,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC,CAAC;QAEpH,MAAM,iBAAiB,GAA4B,EAAE;QACrD,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAClD,YAAA,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI;AACrC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACnD,QAAA,uBAAuB,CAAC;AACrB,aAAA,IAAI,CACH,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAC3C,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,qBAAqB,CAAC,KAAI;AAC7C,YAAA,IAAI,qBAAqB,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;gBACtE,qBAAqB,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO;YAClE;AACA,YAAA,OAAO,qBAAqB;AAC9B,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC;QAEzC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;AAClD,YAAA,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1D,QAAA,CAAC,CAAC;IACJ;IAEQ,YAAY,CAAC,uBAAiD,EAAE,QAAiB,EAAA;AACvF,QAAA,MAAM,KAAK,GAAyB;AAClC,YAAA,MAAM,EAAE,uBAAuB;AAC/B,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,EAAE,EAAE,QAAQ;SACb;AAED,QAAA,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC;IACxC;AAEQ,IAAA,kBAAkB,CAAC,UAA4B,EAAA;QACrD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,EAAE;QAC1G,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,IAAI,EAAE;AAC5G,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC;AACvC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC;AAEzC,QAAA,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC;IACpC;8GA3JW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,wmBC7ClC,g8FAyDA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDZa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,mBAAmB,EAAA,QAAA,EAAA,g8FAAA,EAAA;8QAmBS,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACb,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAChB,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEpD5C,qBAAqB,CAAA;AANlC,IAAA,WAAA,GAAA;AAOE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAqB,EAAE,kDAAC;QAEtC,IAAA,CAAA,aAAa,GAAG,MAAM,EAAW;AAKlC,IAAA;AAHC,IAAA,aAAa,CAAC,KAA2B,EAAA;QACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACvC;8GAPW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,kQCVlC,mNAMA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDIa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,mBAAmB,EAAA,QAAA,EAAA,mNAAA,EAAA;;;MEGlB,oBAAoB,CAAA;AAO/B,IAAA,WAAA,GAAA;AANQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAEtC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,mDAAC;AAC9C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAqB,SAAS,mDAAC;QAG7C,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAC9B,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAC3B;AACF,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC;QACtF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;IAC1E;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;QACpC;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;IAC1B;8GA3BW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,uPCTjC,8jBAcA,EAAA,MAAA,EAAA,CAAA,+5CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/B,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDLa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,WAAW,EAAA,QAAA,EAAA,8jBAAA,EAAA,MAAA,EAAA,CAAA,+5CAAA,CAAA,EAAA;;;MEoPV,mBAAmB,CAAA;AAM9B,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,KAAK,IAAI,WAAW,EAAE;QACxC,OAAO,IAAI,CAAC,aAAa;IAC3B;IACA,IAAI,WAAW,CAAC,MAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM;IAC7B;AAMA,IAAA,WAAA,GAAA;AAjBQ,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACd,QAAA,IAAA,CAAA,MAAM,GAAG,YAAY,CAAC,qBAAqB,CAAC;QASrD,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACjE,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3E,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,sBAAsB,CAAC;QAGxD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACrC,YAAA,IAAI,KAAK,YAAY,eAAe,EAAE;gBACpC,IAAI,CAAC,qBAAqB,EAAE;YAC9B;AACF,QAAA,CAAC,CAAC;QACF,IAAI,UAAU,GACZ,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACtD,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE;YAC5E,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC;QACnF;AACA,QAAA,UAAU,CAAC,SAAS,CAAC,MAAK;YACxB,IAAI,CAAC,qBAAqB,EAAE;AAC9B,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;IAC/B;IAsJA,UAAU,CACR,KAA4B,EAC5B,kBAAqG,EACrG,oCAAgF,EAChF,sCAAmF,EACnF,mBAAA,GAAoD,EAAE,EAAA;AAEtD,QAAA,MAAM,QAAQ,GAAG,OAAO,mBAAmB,KAAK,QAAQ;QACxD,MAAM,aAAa,GAAuB;AACxC,cAAE;cACA,EAAE,WAAW,EAAE,mBAAmB,IAAI,KAAK,EAAE;QACjD,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;QAE9D,MAAM,iBAAiB,GAAmB,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;AACvF,QAAA,MAAM,uBAAuB,GAAqB;YAChD,SAAS,EAAE,iBAAiB,CAAC,IAAiB;AAC9C,YAAA,MAAM,EAAE;AACN,gBAAA,oBAAoB,EAAE,IAAI,CAAC,6BAA6B,CAAC,oCAAoC,CAAC;gBAC9F,uBAAuB,EAAE,sCAAsC,KAAK,SAAS;AAC7E,gBAAA,sBAAsB,EAAE,IAAI,CAAC,6BAA6B,CAAC,sCAAsC,CAAC;AAClG,gBAAA,aAAa,EAAE,aAAa,CAAC,aAAa,EAAE,GAAG,CAC7C,CAAC,MAAM,KAAK,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAoC,CAC1F;gBACD,eAAe,EAAE,aAAa,CAAC,eAAe;gBAC9C,uBAAuB,EAAE,aAAa,CAAC,uBAAuB;AAC/D,aAAA;YACD,aAAa,EAAE,iBAAiB,CAAC,MAAM;SACxC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,IAAI,CACpF,QAAQ,CAAC,CAAC,WAAW,KAAI;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChE,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,IAAI,EAAE;AACJ,oBAAA,GAAG,uBAAuB;AAC1B,oBAAA,uBAAuB,EAAE;wBACvB,qBAAqB,EAAE,IAAI,OAAO,EAAW;wBAC7C,uBAAuB,EAAE,IAAI,OAAO,EAAW;wBAC/C,oBAAoB,EAAE,IAAI,OAAO,EAAoC;wBACrE,cAAc,EAAE,IAAI,OAAO,EAAwB;AAClB,qBAAA;AACpC,iBAAA;gBACD,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,sCAAsC,KAAK,SAAS,EAAE,aAAa,CAAC;AAClG,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,GAAG,aAAa;AAChB,gBAAA,WAAW,EAAE,KAAK;gBAClB,QAAQ,EAAE,MAAM;gBAChB,SAAS,EAAE,IAAI;AACf,gBAAA,SAAS,EAAE;AACT,oBAAA,MAAM,EAAE,qBAAqB;AAC9B,iBAAA;AACF,aAAA,CAAC;YACF,IAAI,CAAC,SAAS,EAAE;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC;AACxE,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACjB;YACA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC;YACjE,IAAI,eAAe,EAAE;AACnB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC;YAC1C;iBAAO;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,iHAAiH,CAClH;YACH;YACA,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAC3B,GAAG,CAAC,MAAK;gBACP,IAAI,QAAQ,EAAE;AACZ,oBAAA,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;gBAC/C;YACF,CAAC,CAAC,CACH;QACH,CAAC,CAAC,CACH;IACH;AAEQ,IAAA,mBAAmB,CAAC,aAAiC,EAAA;AAC3D,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,IAAI,aAAa,CAAC,YAAY,KAAK,WAAW;AAClH,QAAA,IAAI,eAAe;YAAE;AAErB,QAAA,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY;QAC5C,IAAK,CAAC,SAAS,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,YAAY,KAAK,WAAW;YAC/H;aACG;YACH,SAAS,CAAC,KAAK,EAAE;QACnB;IACF;IAEQ,qBAAqB,GAAA;QAC3B,IAAI,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,GAAG,CAAC,EAAE;AACrD,YAAA,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,KAAI;gBAChE,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC;gBACjE,IAAI,CAAC,eAAe,EAAE;AACpB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,iHAAiH,CAClH;oBACD;gBACF;gBACA,SAAS,CAAC,KAAK,EAAE;AACjB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC;AAC5C,YAAA,CAAC,CAAC;QACJ;IACF;AAEQ,IAAA,oBAAoB,CAAC,eAA8B,EAAA;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC;QACpE,IAAI,SAAS,EAAE;AACb,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QACtC;IACF;AAEQ,IAAA,kBAAkB,CAAC,eAA8B,EAAA;QACvD,kBAAkB,CAChB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,gBAAgB,IAAI,SAAS,EAClC,IAAI,CAAC,qBAAqB,IAAI,SAAS,CACxC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;YACjB,MAAM,SAAS,GAAG,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC;YACpE,IAAI,SAAS,EAAE;AACb,gBAAA,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO;AAC3C,gBAAA,SAAS,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,EAAE;YACrD;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,4BAA4B,CAAC,eAA8B,EAAA;AACjE,QAAA,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,CAAC,aAAa;AAChD,QAAA,IAAI,CAAC,OAAO;YAAE;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;IACpC;AAEQ,IAAA,aAAa,CAAC,OAAoB,EAAA;QACxC,IAAI,WAAW,GAAG,OAAO;AACzB,QAAA,OAAO,WAAW,CAAC,aAAa,IAAI,WAAW,CAAC,aAAa,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC9E,YAAA,WAAW,GAAG,WAAW,CAAC,aAAa;QACzC;AACA,QAAA,OAAO,WAAW,CAAC,aAAa,KAAK,QAAQ,CAAC,IAAI,GAAG,WAAW,GAAG,SAAS;IAC9E;AAEQ,IAAA,0BAA0B,CAAC,KAA4B,EAAA;AAC7D,QAAA,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;AAC9C,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;AAC/D,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,6BAA6B,CACnC,6BAIa,EAAA;AAEb,QAAA,IAAI,6BAA6B,KAAK,SAAS,EAAE;AAC/C,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,IAAI,aAAa;AAEjB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE;AAChD,YAAA,aAAa,GAAG;AACd,gBAAA,GAAG,EAAE,6BAA6B;aACnC;QACH;aAAO;YACL,aAAa,GAAG,6BAA6B;QAC/C;AAEA,QAAA,OAAO,aAAa;IACtB;AAEQ,IAAA,oBAAoB,CAC1B,kBAAyG,EAAA;AAEzG,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE;YAC7C,OAAO;AACL,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,GAAG,kBAAkB,CAAC,GAAG;AACxF,oBAAA,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC,UAAU;AAC1F,iBAAA;aACF;QACH;AAAO,aAAA,IAAI,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE;YACnD,OAAO;AACL,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,MAAM,EAAE;oBACN,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO;0BAC7C,kBAAkB,CAAC;AACrB,0BAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG;oBAClC,IAAI,EAAE,kBAAkB,CAAC,IAAI;oBAC7B,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU;AAC1G,iBAAA;aACF;QACH;AAAO,aAAA,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE;YAC1C,OAAO;AACL,gBAAA,IAAI,EAAE,kBAAkB;aACzB;QACH;AACA,QAAA,OAAO,kBAAkB;IAC3B;AAEQ,IAAA,gBAAgB,CAAC,GAAQ,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,YAAY,IAAI,GAAG,CAAC;IACpE;AAEQ,IAAA,QAAQ,CAAC,GAAQ,EAAA;QACvB,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,MAAM;IACzD;AAEQ,IAAA,eAAe,CAAC,GAAQ,EAAA;AAC9B,QAAA,OAAO,SAAS,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;IAC1C;AAEQ,IAAA,MAAM,CAAC,GAAQ,EAAA;QACrB,OAAO,GAAG,YAAY,IAAI;IAC5B;IAEQ,cAAc,CAAC,wBAAiC,EAAE,aAAiC,EAAA;AACzF,QAAA,IAAI,WAAW;QACf,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE;AAC5C,YAAA,WAAW,GAAG,aAAa,CAAC,QAAQ;QACtC;aAAO;AACL,YAAA,WAAW,GAAG,aAAa,CAAC,WAAW,IAAI,wBAAwB;QACrE;AACA,QAAA,OAAO,OAAO,CAAC,WAAW,CAAC;IAC7B;8GAzZW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,KAAK,EAAA,CAAA,CAAA;;2FAClB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,KAAK,EAAE;;SA6ZjB,0BAA0B,GAAA;AACxC,IAAA,OAAO,CAAC,aAAa,EAAE,mBAAmB,CAAC;AAC7C;;MClpBa,SAAS,CAAA;AAHtB,IAAA,WAAA,GAAA;AAIY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAEpC,QAAA,IAAA,CAAA,OAAO,GAA+B;AACpC,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,MAAM,EAAE,SAAS;SAClB;AAOF,IAAA;AALC,IAAA,aAAa,CAAC,IAAwC,EAAA;AACpD,QAAA,OAAO;AACL,cAAE,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;cACtG,EAAE;IACR;8GAhBW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cAFR,MAAM,EAAA,CAAA,CAAA;;2FAEP,SAAS,EAAA,UAAA,EAAA,CAAA;kBAHrB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCaY,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;QAE1B,IAAA,CAAA,yBAAyB,GAAG,IAAI;AA6MlD,IAAA;AA3MC,IAAA,MAAM,SAAS,CACb,OAAkE,EAClE,IAA+C,EAC/C,QAAgB,EAAA;AAEhB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB;QACF;QACA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC;AAC9D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG;QAC1D,MAAM,UAAU,GAAG;AAChB,aAAA,GAAG,CAAC,CAAC,CAAC,KACL;aACG,MAAM,CAAC,CAAC,GAAc,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AACnD,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,4BAA4B,CAAC,SAAS,EAAE,CAAC,CAAC;aAC1D,IAAI,CAAC,SAAS,CAAC;aAEnB,IAAI,CAAC,MAAM,CAAC;AACf,QAAA,MAAM,YAAY,GAAG,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;aAC3E,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI;AACjB,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,4BAA4B,CAAC,SAAS,EAAE,CAAC,CAAC;aAC1D,IAAI,CAAC,SAAS,CAAC;AAElB,QAAA,MAAM,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU;QAEpD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE;AAC5C,YAAA,IAAI,EAAE,yBAAyB;AAChC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC;IACzC;AAEA;;;;;;;;;;;;;;;;;;;;AAoBG;AACH,IAAA,MAAM,aAAa,CACjB,OAA2B,EAC3B,IAAmC,EACnC,QAAgB,EAAA;AAEhB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB;QACF;QACA,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QAC/D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC;AAC9D,QAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE;AACvC,QAAA,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACjF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC;AACtD,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC;QAElF,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;QACrD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE;AACxC,YAAA,IAAI,EAAE;AACP,SAAA,CAAC;AACF,QAAA,MAAM,aAAa,GAAG,CAAA,EAAG,kBAAkB,OAAO;AAClD,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC;IACnD;AAEQ,IAAA,MAAM,eAAe,CAAC,OAA0B,EAAE,IAAwC,EAAA;QAChG,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAC/B,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5F;AACD,QAAA,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC;IACjD;AAEQ,IAAA,oBAAoB,CAC1B,OAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AACjC,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/F;IAEQ,UAAU,CAChB,OAA2B,EAC3B,IAA+B,EAAA;AAE/B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AACxB,YAAA,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,aAAa,EAAE;gBACjF,OAAO;AACL,oBAAA,GAAG,GAAG;AACN,oBAAA,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;iBAC5E;YACH;AACA,YAAA,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACpC,QAAA,CAAC,EAAE,EAAE,CAAC,CACP;IACH;IAEQ,aAAa,CACnB,OAA2B,EAC3B,IAA+B,EAAA;QAE/B,IAAI,eAAe,GAAa,EAAE;AAClC,QAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,eAAe,CAAC;AAC5F,QAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC9B,YAAA,eAAe,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACvF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,eAAe,CAAC,MAAM,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CACpD,GAAG,CAAC,CAAC,gBAAwC,KAAI;gBAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAChB,OAAO,CAAC,MAAM,CACZ,CAAC,GAAG,EAAE,CAAC,MAAM;AACX,oBAAA,GAAG,GAAG;AACN,oBAAA,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAClG,iBAAA,CAAC,EACF,EAAE,CACH,CACF;YACH,CAAC,CAAC,CACH;QACH;AACA,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC;IACjB;IAEQ,4BAA4B,CAAC,SAAoB,EAAE,IAAa,EAAA;QACtE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;AACvC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;AAEtB,QAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACrB,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;QACjC;QAEA,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACvE,YAAA,GAAG,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAG;QAClB;AACA,QAAA,OAAO,GAAG;IACZ;IAEQ,MAAM,iBAAiB,CAAC,SAA4B,EAAE,OAA2B,EAC/D,IAAqC,EAAE,QAAgB,EAAA;AAC/E,QAAA,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACvF,QAAA,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACnE,SAAS,CAAC,QAAQ,CAAC;AACjB,YAAA,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,IAAI,CAAC,yBAAyB;AACnC,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,KAAK,EAAE;AACL,gBAAA,cAAc,EAAE;AACjB,aAAA;AACD,YAAA,OAAO,EAAE,iBAAiB;YAC1B,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI;AAC/C,SAAA,CAAC;IACJ;AAEQ,IAAA,yBAAyB,CAAC,OAA2B,EAAA;QAC3D,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,CAC5C,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,MAAwB,MAAM;AAC1D,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE;AAC9B,YAAA,YAAY,EAAE;SACf,CAAC,CAAC,CAAC,CACL;IACH;IAEQ,qBAAqB,CAAC,OAA2B,EAAE,IAAqC,EAAA;QAC9F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/E;AAEQ,IAAA,YAAY,CAAC,QAAgB,EAAA;AACnC,QAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAC7E,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,kCAAkC,EAAE,EAAC,QAAQ,EAAE,iBAAiB,EAAC,CAAC;IACrG;AAEQ,IAAA,qBAAqB,CAAC,QAAgB,EAAA;AAC5C,QAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,kBAAkB,EAAE,GAAG,CAAC;IAC7E;AAEQ,IAAA,YAAY,CAAC,QAAgB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,kCAAkC,EAAE,EAAC,QAAQ,EAAC,CAAC;IAClF;IAEQ,kBAAkB,CAAC,QAAc,EAAE,QAAgB,EAAA;QACzD,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;QAChD,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC7C,QAAA,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1C,QAAA,YAAY,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;QAC/C,YAAY,CAAC,KAAK,EAAE;AACpB,QAAA,UAAU,CAAC,MAAM,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnD;8GAjNW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,KAAK,EAAA,CAAA,CAAA;;2FAClB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,KAAK,EAAE;;;ACbjC,MAAM,SAAS,GAA4D;AACzE,IAAA,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;AAC/B,IAAA,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;AAC/B,IAAA,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC7B,IAAA,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3B,IAAA,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AAClC,IAAA,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9B,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE;CACpD;MAMY,gBAAgB,CAAA;AAK3B,IAAA,WAAA,GAAA;AAJiB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAK1D,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACxE,YAAA,KAAK,EAAE,MAAM;AACd,SAAA,CAAC;IACJ;AAEA,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,IAAI,GAAS,IAAI,IAAI,EAAE;QAC3B,QAAQ,OAAO,KAAK;AAClB,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;gBACtB;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,GAAG,KAAK;gBACZ;AACF,YAAA;gBACE;;AAGJ,QAAA,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI;AAC7D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE;AACxC,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC;YAC7D;AACA,YAAA,QAAQ,IAAI,QAAQ,CAAC,MAAM;QAC7B;IACF;8GAhCW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;MC8DY,+BAA+B,CAAA;8GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,YAnDxC,gBAAgB;YAChB,UAAU;YACV,cAAc;YACd,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,kBAAkB;YAClB,cAAc;YACd,WAAW;YACX,UAAU;YACV,WAAW;YACX,iBAAiB;YACjB,cAAc;YACd,aAAa;YACb,gBAAgB;YAChB,aAAa;YACb,eAAe;YACf,aAAa;YACb,cAAc;YACd,YAAY;YACZ,kBAAkB;AAClB,YAAA,YAAY,aAGZ,gBAAgB;YAChB,UAAU;YACV,cAAc;YACd,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,kBAAkB;YAClB,cAAc;YACd,WAAW;YACX,UAAU;YACV,WAAW;YACX,iBAAiB;YACjB,cAAc;YACd,aAAa;YACb,gBAAgB;YAChB,aAAa;YACb,eAAe;YACf,aAAa;YACb,cAAc;YACd,YAAY;YACZ,kBAAkB;YAClB,YAAY,CAAA,EAAA,CAAA,CAAA;AAIH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,aAF/B,CAAC,cAAc,EAAE,CAAC,YAjD3B,gBAAgB;YAChB,UAAU;YACV,cAAc;YACd,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,kBAAkB;YAClB,cAAc;YACd,WAAW;YACX,UAAU;YACV,WAAW;YACX,iBAAiB;YACjB,cAAc;YACd,aAAa;YACb,gBAAgB;YAChB,aAAa;YACb,eAAe;YACf,aAAa;YACb,cAAc;YACd,YAAY;YACZ,kBAAkB;AAClB,YAAA,YAAY,EAGZ,gBAAgB;YAChB,UAAU;YACV,cAAc;YACd,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,kBAAkB;YAClB,cAAc;YACd,WAAW;YACX,UAAU;YACV,WAAW;YACX,iBAAiB;YACjB,cAAc;YACd,aAAa;YACb,gBAAgB;YAChB,aAAa;YACb,eAAe;YACf,aAAa;YACb,cAAc;YACd,YAAY;YACZ,kBAAkB;YAClB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIH,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBArD3C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,UAAU;wBACV,cAAc;wBACd,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,cAAc;wBACd,kBAAkB;wBAClB,cAAc;wBACd,WAAW;wBACX,UAAU;wBACV,WAAW;wBACX,iBAAiB;wBACjB,cAAc;wBACd,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,YAAY;wBACZ,kBAAkB;wBAClB,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,UAAU;wBACV,cAAc;wBACd,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,cAAc;wBACd,kBAAkB;wBAClB,cAAc;wBACd,WAAW;wBACX,UAAU;wBACV,WAAW;wBACX,iBAAiB;wBACjB,cAAc;wBACd,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,YAAY;wBACZ,kBAAkB;wBAClB,YAAY;AACb,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,cAAc,EAAE,CAAC;AAC9B,iBAAA;;;AC7EM,MAAM,QAAQ,GAAG,4BAA4B;AAC7C,MAAM,WAAW,GAAG,OAAO;;AC0D5B,MAAO,2CAA4C,SAAQ,sCAAsC,CAAA;AAAG;AAE1G,SAAS,cAAc,CAAC,WAAwB,EAAA;IAC9C,OAAO,YAAW;AAChB,QAAA,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,QAAA,IAAG;YACD,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QACtF;QAAC,OAAO,KAAK,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,CAAA,gCAAA,EAAmC,IAAI,CAAA,0CAAA,CAA4C,EAAE,KAAK,CAAC;QAC1G;AACF,IAAA,CAAC;AACH;MA+Ga,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,iBAjGjC,6BAA6B;YAC7B,kCAAkC;YAClC,4BAA4B;YAC5B,4BAA4B;YAC5B,qBAAqB;YACrB,kBAAkB;YAClB,iBAAiB;YACjB,4BAA4B;YAC5B,kBAAkB;YAClB,mBAAmB;YACnB,WAAW;YACX,qBAAqB;YACrB,gBAAgB;YAChB,4BAA4B;YAC5B,mBAAmB;YACnB,4BAA4B;YAC5B,qBAAqB;YACrB,qBAAqB;YACrB,YAAY;YACZ,cAAc;YACd,iBAAiB;YACjB,0BAA0B;YAC1B,mBAAmB;YACnB,iBAAiB;YACjB,mBAAmB;YACnB,4BAA4B;YAC5B,oBAAoB;YACpB,yBAAyB;YACzB,yBAAyB;YACzB,cAAc;YACd,qBAAqB;YACrB,sBAAsB;YACtB,qBAAqB;YACrB,6BAA6B;AAC7B,YAAA,gBAAgB,aA5ChB,YAAY;YACZ,+BAA+B;YAC/B,6BAA6B;YAC7B,eAAe;YACf,WAAW;YACX,YAAY;YACZ,mBAAmB;AACnB,YAAA,mBAAmB,aA+DnB,6BAA6B;YAC7B,6BAA6B;YAC7B,kCAAkC;YAClC,4BAA4B;YAC5B,qBAAqB;YACrB,kBAAkB;YAClB,iBAAiB;YACjB,4BAA4B;YAC5B,kBAAkB;YAClB,mBAAmB;YACnB,qBAAqB;YACrB,gBAAgB;YAChB,4BAA4B;YAC5B,mBAAmB;YACnB,4BAA4B;YAC5B,qBAAqB;YACrB,qBAAqB;YACrB,YAAY;YACZ,mBAAmB;YACnB,cAAc;YACd,iBAAiB;YACjB,0BAA0B;YAC1B,mBAAmB;YACnB,iBAAiB;YACjB,mBAAmB;YACnB,4BAA4B;YAC5B,oBAAoB;YACpB,yBAAyB;YACzB,yBAAyB;YACzB,cAAc;YACd,qBAAqB;YACrB,sBAAsB;YACtB,qBAAqB;YACrB,6BAA6B;YAC7B,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAGP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,SAAA,EA7DxB;AACT,YAAA,wBAAwB,EAAE;AAC1B,YAAA;AACE,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,CAAC,WAAW,CAAC;AACpB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,UAAU,EAAE,cAAc;gBAC1B,IAAI,EAAE,CAAC,WAAW,CAAC;AACnB,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;YACD,8BAA8B,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,wCAAwC,CAAC;YACzF,8BAA8B,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,gDAAgD,CAAC;AACjG,YAAA,8BAA8B,CAAC,4BAA4B,EAAE,WAAW,EAAE,KAAK,CAAC;AAChF,YAAA;AACE,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,QAAQ,EAAE,cAAc;AACzB,aAAA;YACD,gBAAgB;AAChB,YAAA,mCAAmC,EAAE;AACtC,SAAA,EAAA,OAAA,EAAA,CApEC,YAAY;YACZ,+BAA+B;YAC/B,6BAA6B;YAC7B,eAAe;YACf,WAAW;YACX,YAAY;AACZ,YAAA,mBAAmB,EAgEnB,6BAA6B,CAAA,EAAA,CAAA,CAAA;;2FAqCpB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBA7GpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,+BAA+B;wBAC/B,6BAA6B;wBAC7B,eAAe;wBACf,WAAW;wBACX,YAAY;wBACZ,mBAAmB;wBACnB;AACD,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,6BAA6B;wBAC7B,kCAAkC;wBAClC,4BAA4B;wBAC5B,4BAA4B;wBAC5B,qBAAqB;wBACrB,kBAAkB;wBAClB,iBAAiB;wBACjB,4BAA4B;wBAC5B,kBAAkB;wBAClB,mBAAmB;wBACnB,WAAW;wBACX,qBAAqB;wBACrB,gBAAgB;wBAChB,4BAA4B;wBAC5B,mBAAmB;wBACnB,4BAA4B;wBAC5B,qBAAqB;wBACrB,qBAAqB;wBACrB,YAAY;wBACZ,cAAc;wBACd,iBAAiB;wBACjB,0BAA0B;wBAC1B,mBAAmB;wBACnB,iBAAiB;wBACjB,mBAAmB;wBACnB,4BAA4B;wBAC5B,oBAAoB;wBACpB,yBAAyB;wBACzB,yBAAyB;wBACzB,cAAc;wBACd,qBAAqB;wBACrB,sBAAsB;wBACtB,qBAAqB;wBACrB,6BAA6B;wBAC7B,gBAAgB;AACjB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,wBAAwB,EAAE;AAC1B,wBAAA;AACE,4BAAA,OAAO,EAAE,SAAS;AAClB,4BAAA,QAAQ,EAAE,eAAe;4BACzB,IAAI,EAAE,CAAC,WAAW,CAAC;AACpB,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,UAAU,EAAE,cAAc;4BAC1B,IAAI,EAAE,CAAC,WAAW,CAAC;AACnB,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;wBACD,8BAA8B,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,wCAAwC,CAAC;wBACzF,8BAA8B,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,gDAAgD,CAAC;AACjG,wBAAA,8BAA8B,CAAC,4BAA4B,EAAE,WAAW,EAAE,KAAK,CAAC;AAChF,wBAAA;AACE,4BAAA,OAAO,EAAE,cAAc;AACvB,4BAAA,QAAQ,EAAE,cAAc;AACzB,yBAAA;wBACD,gBAAgB;AAChB,wBAAA,mCAAmC,EAAE;AACtC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,6BAA6B;wBAC7B,6BAA6B;wBAC7B,kCAAkC;wBAClC,4BAA4B;wBAC5B,qBAAqB;wBACrB,kBAAkB;wBAClB,iBAAiB;wBACjB,4BAA4B;wBAC5B,kBAAkB;wBAClB,mBAAmB;wBACnB,qBAAqB;wBACrB,gBAAgB;wBAChB,4BAA4B;wBAC5B,mBAAmB;wBACnB,4BAA4B;wBAC5B,qBAAqB;wBACrB,qBAAqB;wBACrB,YAAY;wBACZ,mBAAmB;wBACnB,cAAc;wBACd,iBAAiB;wBACjB,0BAA0B;wBAC1B,mBAAmB;wBACnB,iBAAiB;wBACjB,mBAAmB;wBACnB,4BAA4B;wBAC5B,oBAAoB;wBACpB,yBAAyB;wBACzB,yBAAyB;wBACzB,cAAc;wBACd,qBAAqB;wBACrB,sBAAsB;wBACtB,qBAAqB;wBACrB,6BAA6B;wBAC7B,gBAAgB;AACjB,qBAAA;AACF,iBAAA;;;AClLM,MAAM,8BAA8B,GAAgB,CAAC,IAAqB,KAA6B;AAC5G,IAAA,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;AACrF,QAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE;IACjC;AACA,IAAA,OAAO,IAAI;AACb;;ACFA,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC;AAEpD;MACsB,qBAAqB,CAAA;AACzC,IAAA,QAAQ,CAAC,MAAuB,EAAE,KAAc,EAAE,MAAe,EAAA;AAC/D,QAAA,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC;AAC/C,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,UAAU,CAAC,MAAuB,EAAE,KAAc,EAAE,MAAe,EAAA;AACjE,QAAA,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC;AACjD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,QAAQ,CAAC,MAAuB,EAAE,KAAc,EAAE,MAAe,EAAA;AAC/D,QAAA,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC;AAC/C,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,WAAW,CAAC,MAAuB,EAAE,KAAc,EAAE,MAAe,EAAA;AAClE,QAAA,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC;AAClD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,CAAC,MAAuB,EAAE,KAAc,EAAE,MAAe,EAAA;AAC7D,QAAA,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC;AAC7C,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,SAAS,CAAC,MAAuB,EAAE,KAAc,EAAE,MAAe,EAAA;AAChE,QAAA,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC;AAChD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,QAAQ,CAAC,MAAuB,EAAE,KAAc,EAAE,MAAe,EAAA;AAC/D,QAAA,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC;AAC/C,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,WAAW,CAAC,MAAuB,EAAE,KAAc,EAAE,MAAe,EAAA;AAClE,QAAA,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC;AAClD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,eAAe,CAAC,MAAuB,EAAE,KAAc,EAAE,MAAe,EAAA;AACtE,QAAA,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC;AACtD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,kBAAkB,CAAC,MAAuB,EAAE,KAAc,EAAE,MAAe,EAAA;AACzE,QAAA,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC;AACzD,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,CAAC,MAAuB,EAAE,KAAc,EAAA;AAC7C,QAAA,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC;AAC9C,QAAA,OAAO,IAAI;IACb;IAEA,UAAU,CAAC,MAAuB,EAAE,KAAc,EAAA;AAChD,QAAA,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC;AACjD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,CAAC,CAAU,EAAE,CAAU,EAAE,MAAuB,EAAA;AACrD,QAAA,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC;AAC9C,QAAA,OAAO,CAAC;IACV;AAEA,IAAA,aAAa,CAAC,QAAmB,EAAE,YAA0B,EAAE,OAA0B,EAAA;QACvF,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC/F,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,QAAQ,CAAC;QAClE,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,CAAC,IAAI,CAAC,mFAAmF,CAAC;AAChG,YAAA,OAAO,eAAe;QACxB;AACA,QAAA,OAAO,eAAe,CAAC,MAAM,CAC3B,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAC5F;IACH;AAEA,IAAA,MAAM,CAAC,QAAmB,EAAE,MAAc,EAAE,OAA0B,EAAA;AACpE,QAAA,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM;QACpC,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC;AAC9E,YAAA,OAAO,QAAQ;QACjB;AACA,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,QAAQ,CAAC;QAC5D,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,CAAC,IAAI,CAAC,mFAAmF,CAAC;AAChG,YAAA,OAAO,QAAQ;QACjB;AACA,QAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9G;IAEA,sBAAsB,CAAC,IAAa,EAAE,MAA6B,EAAA;QACjE,OAAO,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC5D;AACD;;SCpGe,qBAAqB,CACnC,gBAAkC,EAClC,QAAW,EACX,oBAA4B,EAAA;IAE5B,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAC5F,GAAG,CAAC,CAAC,YAAY,KACf,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAClC,QAAA,KAAK,EAAE,YAAY,CAAC,oBAAoB,GAAG,CAAC,CAAC;AAC7C,QAAA,KAAK,EAAE,CAAC;KACT,CAAC,CAAC,CACJ,CACF;AACH;;ACLA,SAAS,YAAY,CAAC,WAAwB,EAAE,OAAe,EAAA;IAC7D,QACE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AACrB,QAAA,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,OAAO;AAC7B,IAAA,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI;AAEzB;AAEA;;;;;;AAMG;AACG,SAAU,mBAAmB,CACjC,YAAiB,EACjB,WAAyB,EACzB,EAAE,gBAAgB,GAAG,KAAK,EAAiC,EAAA;AAE3D,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,GAAe,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC3E,QAAA,IAAI,KAAK,IAAI,IAAI,IAAI,gBAAgB,EAAE;AACrC,YAAA,OAAO,GAAG;QACZ;AACA,QAAA,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE;AACzD,YAAA,KAAK,GAAG,+BAA+B,CAAC,KAAK,CAAC;QAChD;QACA,OAAO;AACL,YAAA,GAAG,GAAG;YACN,CAAC,GAAG,GAAG,KAAK;SACb;IACH,CAAC,EAAE,EAAE,CAAC;AACR;;AC3CM,SAAU,oBAAoB,CAClC,KAA2B,EAC3B,OAAe,EAAA;AAEf,IAAA,MAAM,KAAK,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7D,OAAO,KAAK,IAAI,IAAI;AACtB;AAEM,SAAU,aAAa,CAAC,KAAa,EAAE,OAAe,EAAA;AAC1D,IAAA,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,EAAA,CAAI,CAAC,EAAE,EAAE,CAAC;AAC3D,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACxB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B;AACA,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,4BAA4B,CAC1C,OAAiB,EACjB,MAAc,EAAA;AAEd,IAAA,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;AACtB,QAAA,IACE,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AACtB,aAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAC1D;AACA,YAAA,OAAO,GAAG;QACZ;IACF;AACA,IAAA,OAAO,IAAI;AACb;;MC9Ba,iBAAiB,CAAA;AACrB,IAAA,OAAO,aAAa,CAAC,SAAiB,EAAE,GAAY,EAAA;;AAEzD,QAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAI;YAC1C,OAAO,SAAS,GAAG,GAAG;QACxB;aAAO;AACL,YAAA,OAAO,GAAG;QACZ;IACF;AACD;;ACTD;AAEA;;ACFA;;AAEG;;;;"}