{"version":3,"file":"snack-bar.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-ref.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-config.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-content.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/simple-snack-bar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/simple-snack-bar.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-container.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {MatSnackBarContainer} from './snack-bar-container';\n\n/** Event that is emitted when a snack bar is dismissed. */\nexport interface MatSnackBarDismiss {\n  /** Whether the snack bar was dismissed using the action button. */\n  dismissedByAction: boolean;\n}\n\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nexport class MatSnackBarRef<T> {\n  /** The instance of the component making up the content of the snack bar. */\n  instance!: T;\n\n  /**\n   * The instance of the component making up the content of the snack bar.\n   * @docs-private\n   */\n  containerInstance: MatSnackBarContainer;\n\n  /** Subject for notifying the user that the snack bar has been dismissed. */\n  private readonly _afterDismissed = new Subject<MatSnackBarDismiss>();\n\n  /** Subject for notifying the user that the snack bar has opened and appeared. */\n  private readonly _afterOpened = new Subject<void>();\n\n  /** Subject for notifying the user that the snack bar action was called. */\n  private readonly _onAction = new Subject<void>();\n\n  /**\n   * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\n   * dismissed before the duration passes.\n   */\n  private _durationTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n  /** Whether the snack bar was dismissed using the action button. */\n  private _dismissedByAction = false;\n\n  constructor(\n    containerInstance: MatSnackBarContainer,\n    private _overlayRef: OverlayRef,\n  ) {\n    this.containerInstance = containerInstance;\n    containerInstance._onExit.subscribe(() => this._finishDismiss());\n  }\n\n  /** Dismisses the snack bar. */\n  dismiss(): void {\n    if (!this._afterDismissed.closed) {\n      this.containerInstance.exit();\n    }\n    clearTimeout(this._durationTimeoutId);\n  }\n\n  /** Marks the snackbar action clicked. */\n  dismissWithAction(): void {\n    if (!this._onAction.closed) {\n      this._dismissedByAction = true;\n      this._onAction.next();\n      this._onAction.complete();\n      this.dismiss();\n    }\n    clearTimeout(this._durationTimeoutId);\n  }\n\n  /**\n   * Marks the snackbar action clicked.\n   * @deprecated Use `dismissWithAction` instead.\n   * @breaking-change 8.0.0\n   */\n  closeWithAction(): void {\n    this.dismissWithAction();\n  }\n\n  /** Dismisses the snack bar after some duration */\n  _dismissAfter(duration: number): void {\n    // Note that we need to cap the duration to the maximum value for setTimeout, because\n    // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\n    this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n  }\n\n  /** Marks the snackbar as opened */\n  _open(): void {\n    if (!this._afterOpened.closed) {\n      this._afterOpened.next();\n      this._afterOpened.complete();\n    }\n  }\n\n  /** Cleans up the DOM after closing. */\n  private _finishDismiss(): void {\n    this._overlayRef.dispose();\n\n    if (!this._onAction.closed) {\n      this._onAction.complete();\n    }\n\n    this._afterDismissed.next({dismissedByAction: this._dismissedByAction});\n    this._afterDismissed.complete();\n    this._dismissedByAction = false;\n  }\n\n  /** Gets an observable that is notified when the snack bar is finished closing. */\n  afterDismissed(): Observable<MatSnackBarDismiss> {\n    return this._afterDismissed;\n  }\n\n  /** Gets an observable that is notified when the snack bar has opened and appeared. */\n  afterOpened(): Observable<void> {\n    return this.containerInstance._onEnter;\n  }\n\n  /** Gets an observable that is notified when the snack bar action is called. */\n  onAction(): Observable<void> {\n    return this._onAction;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ViewContainerRef, InjectionToken} from '@angular/core';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const MAT_SNACK_BAR_DATA = new InjectionToken<any>('MatSnackBarData');\n\n/** Possible values for horizontalPosition on MatSnackBarConfig. */\nexport type MatSnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\n\n/** Possible values for verticalPosition on MatSnackBarConfig. */\nexport type MatSnackBarVerticalPosition = 'top' | 'bottom';\n\n/**\n * Configuration used when opening a snack-bar.\n */\nexport class MatSnackBarConfig<D = any> {\n  /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n  politeness?: AriaLivePoliteness = 'polite';\n\n  /**\n   * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n   * component or template, the announcement message will default to the specified message.\n   */\n  announcementMessage?: string = '';\n\n  /**\n   * The view container that serves as the parent for the snackbar for the purposes of dependency\n   * injection. Note: this does not affect where the snackbar is inserted in the DOM.\n   */\n  viewContainerRef?: ViewContainerRef;\n\n  /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n  duration?: number = 0;\n\n  /** Extra CSS classes to be added to the snack bar container. */\n  panelClass?: string | string[];\n\n  /** Text layout direction for the snack bar. */\n  direction?: Direction;\n\n  /** Data being injected into the child component. */\n  data?: D | null = null;\n\n  /** The horizontal position to place the snack bar. */\n  horizontalPosition?: MatSnackBarHorizontalPosition = 'center';\n\n  /** The vertical position to place the snack bar. */\n  verticalPosition?: MatSnackBarVerticalPosition = 'bottom';\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Directive} from '@angular/core';\n\n/** Directive that should be applied to the text element to be rendered in the snack bar. */\n@Directive({\n  selector: `[matSnackBarLabel]`,\n  host: {\n    'class': 'mat-mdc-snack-bar-label mdc-snackbar__label',\n  },\n})\nexport class MatSnackBarLabel {}\n\n/** Directive that should be applied to the element containing the snack bar's action buttons. */\n@Directive({\n  selector: `[matSnackBarActions]`,\n  host: {\n    'class': 'mat-mdc-snack-bar-actions mdc-snackbar__actions',\n  },\n})\nexport class MatSnackBarActions {}\n\n/** Directive that should be applied to each of the snack bar's action buttons. */\n@Directive({\n  selector: `[matSnackBarAction]`,\n  host: {\n    'class': 'mat-mdc-snack-bar-action mdc-snackbar__action',\n  },\n})\nexport class MatSnackBarAction {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation, inject} from '@angular/core';\nimport {MatButton} from '../button';\nimport {MatSnackBarRef} from './snack-bar-ref';\nimport {MAT_SNACK_BAR_DATA} from './snack-bar-config';\nimport {MatSnackBarAction, MatSnackBarActions, MatSnackBarLabel} from './snack-bar-content';\n\n/**\n * Interface for a simple snack bar component that has a message and a single action.\n */\nexport interface TextOnlySnackBar {\n  data: {message: string; action: string};\n  snackBarRef: MatSnackBarRef<TextOnlySnackBar>;\n  action: () => void;\n  hasAction: boolean;\n}\n\n@Component({\n  selector: 'simple-snack-bar',\n  templateUrl: 'simple-snack-bar.html',\n  styleUrl: 'simple-snack-bar.css',\n  exportAs: 'matSnackBar',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [MatButton, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction],\n  host: {\n    'class': 'mat-mdc-simple-snack-bar',\n  },\n})\nexport class SimpleSnackBar implements TextOnlySnackBar {\n  snackBarRef = inject<MatSnackBarRef<SimpleSnackBar>>(MatSnackBarRef);\n  data = inject(MAT_SNACK_BAR_DATA);\n\n  constructor(...args: unknown[]);\n  constructor() {}\n\n  /** Performs the action on the snack bar. */\n  action(): void {\n    this.snackBarRef.dismissWithAction();\n  }\n\n  /** If the action button should be shown. */\n  get hasAction(): boolean {\n    return !!this.data.action;\n  }\n}\n","<div matSnackBarLabel>\n  {{data.message}}\n</div>\n\n@if (hasAction) {\n  <div matSnackBarActions>\n    <button matButton matSnackBarAction (click)=\"action()\">\n      {{data.action}}\n    </button>\n  </div>\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator, AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n  BasePortalOutlet,\n  CdkPortalOutlet,\n  ComponentPortal,\n  DomPortal,\n  TemplatePortal,\n} from '@angular/cdk/portal';\n\nimport {\n  afterNextRender,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EmbeddedViewRef,\n  inject,\n  Injector,\n  NgZone,\n  OnDestroy,\n  ViewChild,\n  ViewEncapsulation,\n  DOCUMENT,\n} from '@angular/core';\nimport {Observable, of, Subject} from 'rxjs';\nimport {_animationsDisabled} from '../core';\nimport {MatSnackBarConfig} from './snack-bar-config';\n\nconst ENTER_ANIMATION = '_mat-snack-bar-enter';\nconst EXIT_ANIMATION = '_mat-snack-bar-exit';\n\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\n@Component({\n  selector: 'mat-snack-bar-container',\n  templateUrl: 'snack-bar-container.html',\n  styleUrl: 'snack-bar-container.css',\n  // In Ivy embedded views will be change detected from their declaration place, rather than\n  // where they were stamped out. This means that we can't have the snack bar container be OnPush,\n  // because it might cause snack bars that were opened from a template not to be out of date.\n  // tslint:disable-next-line:validate-decorators\n  changeDetection: ChangeDetectionStrategy.Default,\n  encapsulation: ViewEncapsulation.None,\n  imports: [CdkPortalOutlet],\n  host: {\n    'class': 'mdc-snackbar mat-mdc-snack-bar-container',\n    '[class.mat-snack-bar-container-enter]': '_animationState === \"visible\"',\n    '[class.mat-snack-bar-container-exit]': '_animationState === \"hidden\"',\n    '[class.mat-snack-bar-container-animations-enabled]': '!_animationsDisabled',\n    '(animationend)': 'onAnimationEnd($event.animationName)',\n    '(animationcancel)': 'onAnimationEnd($event.animationName)',\n  },\n})\nexport class MatSnackBarContainer extends BasePortalOutlet implements OnDestroy {\n  private _ngZone = inject(NgZone);\n  readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _platform = inject(Platform);\n  protected _animationsDisabled = _animationsDisabled();\n  snackBarConfig = inject(MatSnackBarConfig);\n\n  private _document = inject(DOCUMENT);\n  private _trackedModals = new Set<Element>();\n  private _enterFallback: ReturnType<typeof setTimeout> | undefined;\n  private _exitFallback: ReturnType<typeof setTimeout> | undefined;\n  private _injector = inject(Injector);\n\n  /** The number of milliseconds to wait before announcing the snack bar's content. */\n  private readonly _announceDelay: number = 150;\n\n  /** The timeout for announcing the snack bar's content. */\n  private _announceTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n  /** Whether the component has been destroyed. */\n  private _destroyed = false;\n\n  /** The portal outlet inside of this container into which the snack bar content will be loaded. */\n  @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet!: CdkPortalOutlet;\n\n  /** Subject for notifying that the snack bar has announced to screen readers. */\n  readonly _onAnnounce: Subject<void> = new Subject();\n\n  /** Subject for notifying that the snack bar has exited from view. */\n  readonly _onExit: Subject<void> = new Subject();\n\n  /** Subject for notifying that the snack bar has finished entering the view. */\n  readonly _onEnter: Subject<void> = new Subject();\n\n  /** The state of the snack bar animations. */\n  _animationState = 'void';\n\n  /** aria-live value for the live region. */\n  _live: AriaLivePoliteness;\n\n  /**\n   * Element that will have the `mdc-snackbar__label` class applied if the attached component\n   * or template does not have it. This ensures that the appropriate structure, typography, and\n   * color is applied to the attached view.\n   */\n  @ViewChild('label', {static: true}) _label!: ElementRef;\n\n  /**\n   * Role of the live region. This is only for Firefox as there is a known issue where Firefox +\n   * JAWS does not read out aria-live message.\n   */\n  _role?: 'status' | 'alert';\n\n  /** Unique ID of the aria-live element. */\n  readonly _liveElementId = inject(_IdGenerator).getId('mat-snack-bar-container-live-');\n\n  constructor(...args: unknown[]);\n\n  constructor() {\n    super();\n    const config = this.snackBarConfig;\n\n    // Use aria-live rather than a live role like 'alert' or 'status'\n    // because NVDA and JAWS have show inconsistent behavior with live roles.\n    if (config.politeness === 'assertive' && !config.announcementMessage) {\n      this._live = 'assertive';\n    } else if (config.politeness === 'off') {\n      this._live = 'off';\n    } else {\n      this._live = 'polite';\n    }\n\n    // Only set role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\n    // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\n    if (this._platform.FIREFOX) {\n      if (this._live === 'polite') {\n        this._role = 'status';\n      }\n      if (this._live === 'assertive') {\n        this._role = 'alert';\n      }\n    }\n  }\n\n  /** Attach a component portal as content to this snack bar container. */\n  attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    this._assertNotAttached();\n    const result = this._portalOutlet.attachComponentPortal(portal);\n    this._afterPortalAttached();\n    return result;\n  }\n\n  /** Attach a template portal as content to this snack bar container. */\n  attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n    this._assertNotAttached();\n    const result = this._portalOutlet.attachTemplatePortal(portal);\n    this._afterPortalAttached();\n    return result;\n  }\n\n  /**\n   * Attaches a DOM portal to the snack bar container.\n   * @deprecated To be turned into a method.\n   * @breaking-change 10.0.0\n   */\n  override attachDomPortal = (portal: DomPortal) => {\n    this._assertNotAttached();\n    const result = this._portalOutlet.attachDomPortal(portal);\n    this._afterPortalAttached();\n    return result;\n  };\n\n  /** Handle end of animations, updating the state of the snackbar. */\n  onAnimationEnd(animationName: string) {\n    if (animationName === EXIT_ANIMATION) {\n      this._completeExit();\n    } else if (animationName === ENTER_ANIMATION) {\n      clearTimeout(this._enterFallback);\n      this._ngZone.run(() => {\n        this._onEnter.next();\n        this._onEnter.complete();\n      });\n    }\n  }\n\n  /** Begin animation of snack bar entrance into view. */\n  enter(): void {\n    if (!this._destroyed) {\n      this._animationState = 'visible';\n      // _animationState lives in host bindings and `detectChanges` does not refresh host bindings\n      // so we have to call `markForCheck` to ensure the host view is refreshed eventually.\n      this._changeDetectorRef.markForCheck();\n      this._changeDetectorRef.detectChanges();\n      this._screenReaderAnnounce();\n\n      if (this._animationsDisabled) {\n        afterNextRender(\n          () => {\n            this._ngZone.run(() => queueMicrotask(() => this.onAnimationEnd(ENTER_ANIMATION)));\n          },\n          {injector: this._injector},\n        );\n      } else {\n        clearTimeout(this._enterFallback);\n        this._enterFallback = setTimeout(() => {\n          // The snack bar will stay invisible if it fails to animate. Add a fallback class so it\n          // becomes visible. This can happen in some apps that do `* {animation: none !important}`.\n          this._elementRef.nativeElement.classList.add('mat-snack-bar-fallback-visible');\n          this.onAnimationEnd(ENTER_ANIMATION);\n        }, 200);\n      }\n    }\n  }\n\n  /** Begin animation of the snack bar exiting from view. */\n  exit(): Observable<void> {\n    if (this._destroyed) {\n      return of(undefined);\n    }\n\n    // It's common for snack bars to be opened by random outside calls like HTTP requests or\n    // errors. Run inside the NgZone to ensure that it functions correctly.\n    this._ngZone.run(() => {\n      // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n      // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n      // `MatSnackBar.open`).\n      this._animationState = 'hidden';\n      this._changeDetectorRef.markForCheck();\n\n      // Mark this element with an 'exit' attribute to indicate that the snackbar has\n      // been dismissed and will soon be removed from the DOM. This is used by the snackbar\n      // test harness.\n      this._elementRef.nativeElement.setAttribute('mat-exit', '');\n\n      // If the snack bar hasn't been announced by the time it exits it wouldn't have been open\n      // long enough to visually read it either, so clear the timeout for announcing.\n      clearTimeout(this._announceTimeoutId);\n\n      if (this._animationsDisabled) {\n        afterNextRender(\n          () => {\n            this._ngZone.run(() => queueMicrotask(() => this.onAnimationEnd(EXIT_ANIMATION)));\n          },\n          {injector: this._injector},\n        );\n      } else {\n        clearTimeout(this._exitFallback);\n        this._exitFallback = setTimeout(() => this.onAnimationEnd(EXIT_ANIMATION), 200);\n      }\n    });\n\n    return this._onExit;\n  }\n\n  /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n  ngOnDestroy() {\n    this._destroyed = true;\n    this._clearFromModals();\n    this._completeExit();\n  }\n\n  private _completeExit() {\n    clearTimeout(this._exitFallback);\n    queueMicrotask(() => {\n      this._onExit.next();\n      this._onExit.complete();\n    });\n  }\n\n  /**\n   * Called after the portal contents have been attached. Can be\n   * used to modify the DOM once it's guaranteed to be in place.\n   */\n  private _afterPortalAttached() {\n    const element: HTMLElement = this._elementRef.nativeElement;\n    const panelClasses = this.snackBarConfig.panelClass;\n\n    if (panelClasses) {\n      if (Array.isArray(panelClasses)) {\n        // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n        panelClasses.forEach(cssClass => element.classList.add(cssClass));\n      } else {\n        element.classList.add(panelClasses);\n      }\n    }\n\n    this._exposeToModals();\n\n    // Check to see if the attached component or template uses the MDC template structure,\n    // specifically the MDC label. If not, the container should apply the MDC label class to this\n    // component's label container, which will apply MDC's label styles to the attached view.\n    const label = this._label.nativeElement;\n    const labelClass = 'mdc-snackbar__label';\n    label.classList.toggle(labelClass, !label.querySelector(`.${labelClass}`));\n  }\n\n  /**\n   * Some browsers won't expose the accessibility node of the live element if there is an\n   * `aria-modal` and the live element is outside of it. This method works around the issue by\n   * pointing the `aria-owns` of all modals to the live element.\n   */\n  private _exposeToModals() {\n    // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with the\n    // `LiveAnnouncer` and any other usages.\n    //\n    // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n    // section of the DOM we need to look through. This should cover all the cases we support, but\n    // the selector can be expanded if it turns out to be too narrow.\n    const id = this._liveElementId;\n    const modals = this._document.querySelectorAll(\n      'body > .cdk-overlay-container [aria-modal=\"true\"]',\n    );\n\n    for (let i = 0; i < modals.length; i++) {\n      const modal = modals[i];\n      const ariaOwns = modal.getAttribute('aria-owns');\n      this._trackedModals.add(modal);\n\n      if (!ariaOwns) {\n        modal.setAttribute('aria-owns', id);\n      } else if (ariaOwns.indexOf(id) === -1) {\n        modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n      }\n    }\n  }\n\n  /** Clears the references to the live element from any modals it was added to. */\n  private _clearFromModals() {\n    this._trackedModals.forEach(modal => {\n      const ariaOwns = modal.getAttribute('aria-owns');\n\n      if (ariaOwns) {\n        const newValue = ariaOwns.replace(this._liveElementId, '').trim();\n\n        if (newValue.length > 0) {\n          modal.setAttribute('aria-owns', newValue);\n        } else {\n          modal.removeAttribute('aria-owns');\n        }\n      }\n    });\n    this._trackedModals.clear();\n  }\n\n  /** Asserts that no content is already attached to the container. */\n  private _assertNotAttached() {\n    if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error('Attempting to attach snack bar content after content is already attached');\n    }\n  }\n\n  /**\n   * Starts a timeout to move the snack bar content to the live region so screen readers will\n   * announce it.\n   */\n  private _screenReaderAnnounce() {\n    if (this._announceTimeoutId) {\n      return;\n    }\n\n    this._ngZone.runOutsideAngular(() => {\n      this._announceTimeoutId = setTimeout(() => {\n        if (this._destroyed) {\n          return;\n        }\n\n        const element = this._elementRef.nativeElement;\n        const inertElement = element.querySelector('[aria-hidden]');\n        const liveElement = element.querySelector('[aria-live]');\n\n        if (inertElement && liveElement) {\n          // If an element in the snack bar content is focused before being moved\n          // track it and restore focus after moving to the live region.\n          let focusedElement: HTMLElement | null = null;\n          if (\n            this._platform.isBrowser &&\n            document.activeElement instanceof HTMLElement &&\n            inertElement.contains(document.activeElement)\n          ) {\n            focusedElement = document.activeElement;\n          }\n\n          inertElement.removeAttribute('aria-hidden');\n          liveElement.appendChild(inertElement);\n          focusedElement?.focus();\n\n          this._onAnnounce.next();\n          this._onAnnounce.complete();\n        }\n      }, this._announceDelay);\n    });\n  }\n}\n","<div class=\"mdc-snackbar__surface mat-mdc-snackbar-surface\">\n  <!--\n    This outer label wrapper will have the class `mdc-snackbar__label` applied if\n    the attached template/component does not contain it.\n  -->\n  <div class=\"mat-mdc-snack-bar-label\" #label>\n    <!-- Initialy holds the snack bar content, will be empty after announcing to screen readers. -->\n    <div aria-hidden=\"true\">\n      <ng-template cdkPortalOutlet />\n    </div>\n\n    <!-- Will receive the snack bar content from the non-live div, move will happen a short delay after opening -->\n    <div [attr.aria-live]=\"_live\" [attr.role]=\"_role\" [attr.id]=\"_liveElementId\"></div>\n  </div>\n</div>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {LiveAnnouncer} from '@angular/cdk/a11y';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {\n  ComponentType,\n  createGlobalPositionStrategy,\n  createOverlayRef,\n  OverlayConfig,\n  OverlayRef,\n} from '@angular/cdk/overlay';\nimport {\n  ComponentRef,\n  EmbeddedViewRef,\n  Injectable,\n  InjectionToken,\n  Injector,\n  OnDestroy,\n  TemplateRef,\n  inject,\n} from '@angular/core';\nimport {SimpleSnackBar, TextOnlySnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\nimport {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';\nimport {MatSnackBarRef} from './snack-bar-ref';\nimport {ComponentPortal, TemplatePortal} from '@angular/cdk/portal';\nimport {takeUntil} from 'rxjs/operators';\nimport {_animationsDisabled} from '../core';\n\n/** Injection token that can be used to specify default snack bar. */\nexport const MAT_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken<MatSnackBarConfig>(\n  'mat-snack-bar-default-options',\n  {\n    providedIn: 'root',\n    factory: () => new MatSnackBarConfig(),\n  },\n);\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\n@Injectable({providedIn: 'root'})\nexport class MatSnackBar implements OnDestroy {\n  private _live = inject(LiveAnnouncer);\n  private _injector = inject(Injector);\n  private _breakpointObserver = inject(BreakpointObserver);\n  private _parentSnackBar = inject(MatSnackBar, {optional: true, skipSelf: true});\n  private _defaultConfig = inject<MatSnackBarConfig>(MAT_SNACK_BAR_DEFAULT_OPTIONS);\n  private _animationsDisabled = _animationsDisabled();\n\n  /**\n   * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n   * If there is a parent snack-bar service, all operations should delegate to that parent\n   * via `_openedSnackBarRef`.\n   */\n  private _snackBarRefAtThisLevel: MatSnackBarRef<any> | null = null;\n\n  /** The component that should be rendered as the snack bar's simple component. */\n  simpleSnackBarComponent = SimpleSnackBar;\n\n  /** The container component that attaches the provided template or component. */\n  snackBarContainerComponent = MatSnackBarContainer;\n\n  /** The CSS class to apply for handset mode. */\n  handsetCssClass = 'mat-mdc-snack-bar-handset';\n\n  /** Reference to the currently opened snackbar at *any* level. */\n  get _openedSnackBarRef(): MatSnackBarRef<any> | null {\n    const parent = this._parentSnackBar;\n    return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n  }\n\n  set _openedSnackBarRef(value: MatSnackBarRef<any> | null) {\n    if (this._parentSnackBar) {\n      this._parentSnackBar._openedSnackBarRef = value;\n    } else {\n      this._snackBarRefAtThisLevel = value;\n    }\n  }\n\n  constructor(...args: unknown[]);\n  constructor() {}\n\n  /**\n   * Creates and dispatches a snack bar with a custom component for the content, removing any\n   * currently opened snack bars.\n   *\n   * @param component Component to be instantiated.\n   * @param config Extra configuration for the snack bar.\n   */\n  openFromComponent<T, D = any>(\n    component: ComponentType<T>,\n    config?: MatSnackBarConfig<D>,\n  ): MatSnackBarRef<T> {\n    return this._attach(component, config) as MatSnackBarRef<T>;\n  }\n\n  /**\n   * Creates and dispatches a snack bar with a custom template for the content, removing any\n   * currently opened snack bars.\n   *\n   * @param template Template to be instantiated.\n   * @param config Extra configuration for the snack bar.\n   */\n  openFromTemplate(\n    template: TemplateRef<any>,\n    config?: MatSnackBarConfig,\n  ): MatSnackBarRef<EmbeddedViewRef<any>> {\n    return this._attach(template, config);\n  }\n\n  /**\n   * Opens a snackbar with a message and an optional action.\n   * @param message The message to show in the snackbar.\n   * @param action The label for the snackbar action.\n   * @param config Additional configuration options for the snackbar.\n   */\n  open(\n    message: string,\n    action: string = '',\n    config?: MatSnackBarConfig,\n  ): MatSnackBarRef<TextOnlySnackBar> {\n    const _config = {...this._defaultConfig, ...config};\n\n    // Since the user doesn't have access to the component, we can\n    // override the data to pass in our own message and action.\n    _config.data = {message, action};\n\n    // Since the snack bar has `role=\"alert\"`, we don't\n    // want to announce the same message twice.\n    if (_config.announcementMessage === message) {\n      _config.announcementMessage = undefined;\n    }\n\n    return this.openFromComponent(this.simpleSnackBarComponent, _config);\n  }\n\n  /**\n   * Dismisses the currently-visible snack bar.\n   */\n  dismiss(): void {\n    if (this._openedSnackBarRef) {\n      this._openedSnackBarRef.dismiss();\n    }\n  }\n\n  ngOnDestroy() {\n    // Only dismiss the snack bar at the current level on destroy.\n    if (this._snackBarRefAtThisLevel) {\n      this._snackBarRefAtThisLevel.dismiss();\n    }\n  }\n\n  /**\n   * Attaches the snack bar container component to the overlay.\n   */\n  private _attachSnackBarContainer(\n    overlayRef: OverlayRef,\n    config: MatSnackBarConfig,\n  ): MatSnackBarContainer {\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n    const injector = Injector.create({\n      parent: userInjector || this._injector,\n      providers: [{provide: MatSnackBarConfig, useValue: config}],\n    });\n\n    const containerPortal = new ComponentPortal(\n      this.snackBarContainerComponent,\n      config.viewContainerRef,\n      injector,\n    );\n    const containerRef: ComponentRef<MatSnackBarContainer> = overlayRef.attach(containerPortal);\n    containerRef.instance.snackBarConfig = config;\n    return containerRef.instance;\n  }\n\n  /**\n   * Places a new component or a template as the content of the snack bar container.\n   */\n  private _attach<T>(\n    content: ComponentType<T> | TemplateRef<T>,\n    userConfig?: MatSnackBarConfig,\n  ): MatSnackBarRef<T | EmbeddedViewRef<any>> {\n    const config = {...new MatSnackBarConfig(), ...this._defaultConfig, ...userConfig};\n    const overlayRef = this._createOverlay(config);\n    const container = this._attachSnackBarContainer(overlayRef, config);\n    const snackBarRef = new MatSnackBarRef<T | EmbeddedViewRef<any>>(container, overlayRef);\n\n    if (content instanceof TemplateRef) {\n      const portal = new TemplatePortal(content, null!, {\n        $implicit: config.data,\n        snackBarRef,\n      } as any);\n\n      snackBarRef.instance = container.attachTemplatePortal(portal);\n    } else {\n      const injector = this._createInjector(config, snackBarRef);\n      const portal = new ComponentPortal(content, undefined, injector);\n      const contentRef = container.attachComponentPortal<T>(portal);\n\n      // We can't pass this via the injector, because the injector is created earlier.\n      snackBarRef.instance = contentRef.instance;\n    }\n\n    // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n    // appropriate. This class is applied to the overlay element because the overlay must expand to\n    // fill the width of the screen for full width snackbars.\n    this._breakpointObserver\n      .observe(Breakpoints.HandsetPortrait)\n      .pipe(takeUntil(overlayRef.detachments()))\n      .subscribe(state => {\n        overlayRef.overlayElement.classList.toggle(this.handsetCssClass, state.matches);\n      });\n\n    if (config.announcementMessage) {\n      // Wait until the snack bar contents have been announced then deliver this message.\n      container._onAnnounce.subscribe(() => {\n        this._live.announce(config.announcementMessage!, config.politeness);\n      });\n    }\n\n    this._animateSnackBar(snackBarRef, config);\n    this._openedSnackBarRef = snackBarRef;\n    return this._openedSnackBarRef;\n  }\n\n  /** Animates the old snack bar out and the new one in. */\n  private _animateSnackBar(snackBarRef: MatSnackBarRef<any>, config: MatSnackBarConfig) {\n    // When the snackbar is dismissed, clear the reference to it.\n    snackBarRef.afterDismissed().subscribe(() => {\n      // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n      if (this._openedSnackBarRef == snackBarRef) {\n        this._openedSnackBarRef = null;\n      }\n\n      if (config.announcementMessage) {\n        this._live.clear();\n      }\n    });\n\n    // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n    if (config.duration && config.duration > 0) {\n      snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration!));\n    }\n\n    if (this._openedSnackBarRef) {\n      // If a snack bar is already in view, dismiss it and enter the\n      // new snack bar after exit animation is complete.\n      this._openedSnackBarRef.afterDismissed().subscribe(() => {\n        snackBarRef.containerInstance.enter();\n      });\n      this._openedSnackBarRef.dismiss();\n    } else {\n      // If no snack bar is in view, enter the new snack bar.\n      snackBarRef.containerInstance.enter();\n    }\n  }\n\n  /**\n   * Creates a new overlay and places it in the correct location.\n   * @param config The user-specified snack bar config.\n   */\n  private _createOverlay(config: MatSnackBarConfig): OverlayRef {\n    const overlayConfig = new OverlayConfig();\n    overlayConfig.direction = config.direction;\n\n    const positionStrategy = createGlobalPositionStrategy(this._injector);\n    // Set horizontal position.\n    const isRtl = config.direction === 'rtl';\n    const isLeft =\n      config.horizontalPosition === 'left' ||\n      (config.horizontalPosition === 'start' && !isRtl) ||\n      (config.horizontalPosition === 'end' && isRtl);\n    const isRight = !isLeft && config.horizontalPosition !== 'center';\n    if (isLeft) {\n      positionStrategy.left('0');\n    } else if (isRight) {\n      positionStrategy.right('0');\n    } else {\n      positionStrategy.centerHorizontally();\n    }\n    // Set horizontal position.\n    if (config.verticalPosition === 'top') {\n      positionStrategy.top('0');\n    } else {\n      positionStrategy.bottom('0');\n    }\n\n    overlayConfig.positionStrategy = positionStrategy;\n    overlayConfig.disableAnimations = this._animationsDisabled;\n    return createOverlayRef(this._injector, overlayConfig);\n  }\n\n  /**\n   * Creates an injector to be used inside of a snack bar component.\n   * @param config Config that was used to create the snack bar.\n   * @param snackBarRef Reference to the snack bar.\n   */\n  private _createInjector<T>(config: MatSnackBarConfig, snackBarRef: MatSnackBarRef<T>): Injector {\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n    return Injector.create({\n      parent: userInjector || this._injector,\n      providers: [\n        {provide: MatSnackBarRef, useValue: snackBarRef},\n        {provide: MAT_SNACK_BAR_DATA, useValue: config.data},\n      ],\n    });\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatButtonModule} from '../button';\n\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\nimport {MatSnackBarAction, MatSnackBarActions, MatSnackBarLabel} from './snack-bar-content';\nimport {MatSnackBar} from './snack-bar';\n\nconst DIRECTIVES = [MatSnackBarContainer, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction];\n\n@NgModule({\n  imports: [OverlayModule, PortalModule, MatButtonModule, SimpleSnackBar, ...DIRECTIVES],\n  exports: [BidiModule, ...DIRECTIVES],\n  providers: [MatSnackBar],\n})\nexport class MatSnackBarModule {}\n"],"names":["MAX_TIMEOUT","Math","pow","MatSnackBarRef","_overlayRef","instance","containerInstance","_afterDismissed","Subject","_afterOpened","_onAction","_durationTimeoutId","_dismissedByAction","constructor","_onExit","subscribe","_finishDismiss","dismiss","closed","exit","clearTimeout","dismissWithAction","next","complete","closeWithAction","_dismissAfter","duration","setTimeout","min","_open","dispose","dismissedByAction","afterDismissed","afterOpened","_onEnter","onAction","MAT_SNACK_BAR_DATA","InjectionToken","MatSnackBarConfig","politeness","announcementMessage","viewContainerRef","panelClass","direction","data","horizontalPosition","verticalPosition","MatSnackBarLabel","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","host","classAttribute","ngImport","decorators","args","MatSnackBarActions","MatSnackBarAction","SimpleSnackBar","snackBarRef","inject","action","hasAction","Component","exportAs","template","styles","dependencies","kind","type","MatButton","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","ENTER_ANIMATION","EXIT_ANIMATION","MatSnackBarContainer","BasePortalOutlet","_ngZone","NgZone","_elementRef","ElementRef","_changeDetectorRef","ChangeDetectorRef","_platform","Platform","_animationsDisabled","snackBarConfig","_document","DOCUMENT","_trackedModals","Set","_enterFallback","_exitFallback","_injector","Injector","_announceDelay","_announceTimeoutId","_destroyed","_portalOutlet","_onAnnounce","_animationState","_live","_label","_role","_liveElementId","_IdGenerator","getId","config","FIREFOX","attachComponentPortal","portal","_assertNotAttached","result","_afterPortalAttached","attachTemplatePortal","attachDomPortal","onAnimationEnd","animationName","_completeExit","run","enter","markForCheck","detectChanges","_screenReaderAnnounce","afterNextRender","queueMicrotask","injector","nativeElement","classList","add","of","undefined","setAttribute","ngOnDestroy","_clearFromModals","element","panelClasses","Array","isArray","forEach","cssClass","_exposeToModals","label","labelClass","toggle","querySelector","id","modals","querySelectorAll","i","length","modal","ariaOwns","getAttribute","indexOf","newValue","replace","trim","removeAttribute","clear","hasAttached","ngDevMode","Error","runOutsideAngular","inertElement","liveElement","focusedElement","isBrowser","document","activeElement","HTMLElement","contains","appendChild","focus","ɵcmp","ɵɵngDeclareComponent","minVersion","version","listeners","properties","viewQueries","propertyName","first","predicate","CdkPortalOutlet","descendants","static","usesInheritance","inputs","outputs","Eager","Default","imports","ViewChild","MAT_SNACK_BAR_DEFAULT_OPTIONS","providedIn","factory","MatSnackBar","LiveAnnouncer","_breakpointObserver","BreakpointObserver","_parentSnackBar","optional","skipSelf","_defaultConfig","_snackBarRefAtThisLevel","simpleSnackBarComponent","snackBarContainerComponent","handsetCssClass","_openedSnackBarRef","parent","value","openFromComponent","component","_attach","openFromTemplate","open","message","_config","_attachSnackBarContainer","overlayRef","userInjector","create","providers","provide","useValue","containerPortal","ComponentPortal","containerRef","attach","content","userConfig","_createOverlay","container","TemplateRef","TemplatePortal","$implicit","_createInjector","contentRef","observe","Breakpoints","HandsetPortrait","pipe","takeUntil","detachments","state","overlayElement","matches","announce","_animateSnackBar","overlayConfig","OverlayConfig","positionStrategy","createGlobalPositionStrategy","isRtl","isLeft","isRight","left","right","centerHorizontally","top","bottom","disableAnimations","createOverlayRef","Injectable","ɵprov","ɵɵngDeclareInjectable","DIRECTIVES","MatSnackBarModule","NgModule","OverlayModule","PortalModule","MatButtonModule","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":";;;;;;;;;;;;;;;;;;;;AAmBA,MAAMA,WAAW,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;MAK1BC,cAAc,CAAA;EA8BfC,WAAA;EA5BVC,QAAQ;EAMRC,iBAAiB;AAGAC,EAAAA,eAAe,GAAG,IAAIC,OAAO,EAAsB;AAGnDC,EAAAA,YAAY,GAAG,IAAID,OAAO,EAAQ;AAGlCE,EAAAA,SAAS,GAAG,IAAIF,OAAO,EAAQ;EAMxCG,kBAAkB;AAGlBC,EAAAA,kBAAkB,GAAG,KAAK;AAElCC,EAAAA,WAAAA,CACEP,iBAAuC,EAC/BF,WAAuB,EAAA;IAAvB,IAAA,CAAAA,WAAW,GAAXA,WAAW;IAEnB,IAAI,CAACE,iBAAiB,GAAGA,iBAAiB;IAC1CA,iBAAiB,CAACQ,OAAO,CAACC,SAAS,CAAC,MAAM,IAAI,CAACC,cAAc,EAAE,CAAC;AAClE,EAAA;AAGAC,EAAAA,OAAOA,GAAA;AACL,IAAA,IAAI,CAAC,IAAI,CAACV,eAAe,CAACW,MAAM,EAAE;AAChC,MAAA,IAAI,CAACZ,iBAAiB,CAACa,IAAI,EAAE;AAC/B,IAAA;AACAC,IAAAA,YAAY,CAAC,IAAI,CAACT,kBAAkB,CAAC;AACvC,EAAA;AAGAU,EAAAA,iBAAiBA,GAAA;AACf,IAAA,IAAI,CAAC,IAAI,CAACX,SAAS,CAACQ,MAAM,EAAE;MAC1B,IAAI,CAACN,kBAAkB,GAAG,IAAI;AAC9B,MAAA,IAAI,CAACF,SAAS,CAACY,IAAI,EAAE;AACrB,MAAA,IAAI,CAACZ,SAAS,CAACa,QAAQ,EAAE;MACzB,IAAI,CAACN,OAAO,EAAE;AAChB,IAAA;AACAG,IAAAA,YAAY,CAAC,IAAI,CAACT,kBAAkB,CAAC;AACvC,EAAA;AAOAa,EAAAA,eAAeA,GAAA;IACb,IAAI,CAACH,iBAAiB,EAAE;AAC1B,EAAA;EAGAI,aAAaA,CAACC,QAAgB,EAAA;IAG5B,IAAI,CAACf,kBAAkB,GAAGgB,UAAU,CAAC,MAAM,IAAI,CAACV,OAAO,EAAE,EAAEhB,IAAI,CAAC2B,GAAG,CAACF,QAAQ,EAAE1B,WAAW,CAAC,CAAC;AAC7F,EAAA;AAGA6B,EAAAA,KAAKA,GAAA;AACH,IAAA,IAAI,CAAC,IAAI,CAACpB,YAAY,CAACS,MAAM,EAAE;AAC7B,MAAA,IAAI,CAACT,YAAY,CAACa,IAAI,EAAE;AACxB,MAAA,IAAI,CAACb,YAAY,CAACc,QAAQ,EAAE;AAC9B,IAAA;AACF,EAAA;AAGQP,EAAAA,cAAcA,GAAA;AACpB,IAAA,IAAI,CAACZ,WAAW,CAAC0B,OAAO,EAAE;AAE1B,IAAA,IAAI,CAAC,IAAI,CAACpB,SAAS,CAACQ,MAAM,EAAE;AAC1B,MAAA,IAAI,CAACR,SAAS,CAACa,QAAQ,EAAE;AAC3B,IAAA;AAEA,IAAA,IAAI,CAAChB,eAAe,CAACe,IAAI,CAAC;MAACS,iBAAiB,EAAE,IAAI,CAACnB;AAAkB,KAAC,CAAC;AACvE,IAAA,IAAI,CAACL,eAAe,CAACgB,QAAQ,EAAE;IAC/B,IAAI,CAACX,kBAAkB,GAAG,KAAK;AACjC,EAAA;AAGAoB,EAAAA,cAAcA,GAAA;IACZ,OAAO,IAAI,CAACzB,eAAe;AAC7B,EAAA;AAGA0B,EAAAA,WAAWA,GAAA;AACT,IAAA,OAAO,IAAI,CAAC3B,iBAAiB,CAAC4B,QAAQ;AACxC,EAAA;AAGAC,EAAAA,QAAQA,GAAA;IACN,OAAO,IAAI,CAACzB,SAAS;AACvB,EAAA;AACD;;MCrHY0B,kBAAkB,GAAG,IAAIC,cAAc,CAAM,iBAAiB;MAW9DC,iBAAiB,CAAA;AAE5BC,EAAAA,UAAU,GAAwB,QAAQ;AAM1CC,EAAAA,mBAAmB,GAAY,EAAE;EAMjCC,gBAAgB;AAGhBf,EAAAA,QAAQ,GAAY,CAAC;EAGrBgB,UAAU;EAGVC,SAAS;AAGTC,EAAAA,IAAI,GAAc,IAAI;AAGtBC,EAAAA,kBAAkB,GAAmC,QAAQ;AAG7DC,EAAAA,gBAAgB,GAAiC,QAAQ;AAC1D;;MCxCYC,gBAAgB,CAAA;;;;;UAAhBA,gBAAgB;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAAhBL,gBAAgB;AAAAM,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,oBAAA;AAAAC,IAAAA,IAAA,EAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;AAAAC,IAAAA,QAAA,EAAAP;AAAA,GAAA,CAAA;;;;;;QAAhBH,gBAAgB;AAAAW,EAAAA,UAAA,EAAA,CAAA;UAN5BN,SAAS;AAACO,IAAAA,IAAA,EAAA,CAAA;AACTL,MAAAA,QAAQ,EAAE,CAAA,kBAAA,CAAoB;AAC9BC,MAAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE;AACV;KACF;;;MAUYK,kBAAkB,CAAA;;;;;UAAlBA,kBAAkB;AAAAZ,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAAlBQ,kBAAkB;AAAAP,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,sBAAA;AAAAC,IAAAA,IAAA,EAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;AAAAC,IAAAA,QAAA,EAAAP;AAAA,GAAA,CAAA;;;;;;QAAlBU,kBAAkB;AAAAF,EAAAA,UAAA,EAAA,CAAA;UAN9BN,SAAS;AAACO,IAAAA,IAAA,EAAA,CAAA;AACTL,MAAAA,QAAQ,EAAE,CAAA,oBAAA,CAAsB;AAChCC,MAAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE;AACV;KACF;;;MAUYM,iBAAiB,CAAA;;;;;UAAjBA,iBAAiB;AAAAb,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAAjBS,iBAAiB;AAAAR,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,qBAAA;AAAAC,IAAAA,IAAA,EAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;AAAAC,IAAAA,QAAA,EAAAP;AAAA,GAAA,CAAA;;;;;;QAAjBW,iBAAiB;AAAAH,EAAAA,UAAA,EAAA,CAAA;UAN7BN,SAAS;AAACO,IAAAA,IAAA,EAAA,CAAA;AACTL,MAAAA,QAAQ,EAAE,CAAA,mBAAA,CAAqB;AAC/BC,MAAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE;AACV;KACF;;;;MCEYO,cAAc,CAAA;AACzBC,EAAAA,WAAW,GAAGC,MAAM,CAAiC7D,cAAc,CAAC;AACpEyC,EAAAA,IAAI,GAAGoB,MAAM,CAAC5B,kBAAkB,CAAC;EAGjCvB,WAAAA,GAAA,CAAe;AAGfoD,EAAAA,MAAMA,GAAA;AACJ,IAAA,IAAI,CAACF,WAAW,CAAC1C,iBAAiB,EAAE;AACtC,EAAA;EAGA,IAAI6C,SAASA,GAAA;AACX,IAAA,OAAO,CAAC,CAAC,IAAI,CAACtB,IAAI,CAACqB,MAAM;AAC3B,EAAA;;;;;UAfWH,cAAc;AAAAd,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAgB;AAAA,GAAA,CAAA;;;;UAAdL,cAAc;AAAAT,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,kBAAA;AAAAC,IAAAA,IAAA,EAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;IAAAY,QAAA,EAAA,CAAA,aAAA,CAAA;AAAAX,IAAAA,QAAA,EAAAP,EAAA;AAAAmB,IAAAA,QAAA,ECpC3B,yNAWA;IAAAC,MAAA,EAAA,CAAA,qJAAA,CAAA;AAAAC,IAAAA,YAAA,EAAA,CAAA;AAAAC,MAAAA,IAAA,EAAA,WAAA;AAAAC,MAAAA,IAAA,EDoBYC,SAAS;;;;;;YAAE3B,gBAAgB;AAAAO,MAAAA,QAAA,EAAA;AAAA,KAAA,EAAA;AAAAkB,MAAAA,IAAA,EAAA,WAAA;AAAAC,MAAAA,IAAA,EAAEb,kBAAkB;AAAAN,MAAAA,QAAA,EAAA;AAAA,KAAA,EAAA;AAAAkB,MAAAA,IAAA,EAAA,WAAA;AAAAC,MAAAA,IAAA,EAAEZ,iBAAiB;AAAAP,MAAAA,QAAA,EAAA;AAAA,KAAA,CAAA;AAAAqB,IAAAA,eAAA,EAAAzB,EAAA,CAAA0B,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAA5B,EAAA,CAAA6B,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAKjElB,cAAc;AAAAJ,EAAAA,UAAA,EAAA,CAAA;UAZ1BS,SAAS;;gBACE,kBAAkB;AAAAC,MAAAA,QAAA,EAGlB,aAAa;MAAAU,aAAA,EACRC,iBAAiB,CAACC,IAAI;MAAAL,eAAA,EACpBC,uBAAuB,CAACC,MAAM;eACtC,CAACH,SAAS,EAAE3B,gBAAgB,EAAEa,kBAAkB,EAAEC,iBAAiB,CAAC;AAAAN,MAAAA,IAAA,EACvE;AACJ,QAAA,OAAO,EAAE;OACV;AAAAc,MAAAA,QAAA,EAAA,yNAAA;MAAAC,MAAA,EAAA,CAAA,qJAAA;KAAA;;;;;AEIH,MAAMW,eAAe,GAAG,sBAAsB;AAC9C,MAAMC,cAAc,GAAG,qBAAqB;AA0BtC,MAAOC,oBAAqB,SAAQC,gBAAgB,CAAA;AAChDC,EAAAA,OAAO,GAAGrB,MAAM,CAACsB,MAAM,CAAC;AACvBC,EAAAA,WAAW,GAAGvB,MAAM,CAA0BwB,UAAU,CAAC;AAC1DC,EAAAA,kBAAkB,GAAGzB,MAAM,CAAC0B,iBAAiB,CAAC;AAC9CC,EAAAA,SAAS,GAAG3B,MAAM,CAAC4B,QAAQ,CAAC;EAC1BC,mBAAmB,GAAGA,mBAAmB,EAAE;AACrDC,EAAAA,cAAc,GAAG9B,MAAM,CAAC1B,iBAAiB,CAAC;AAElCyD,EAAAA,SAAS,GAAG/B,MAAM,CAACgC,QAAQ,CAAC;AAC5BC,EAAAA,cAAc,GAAG,IAAIC,GAAG,EAAW;EACnCC,cAAc;EACdC,aAAa;AACbC,EAAAA,SAAS,GAAGrC,MAAM,CAACsC,QAAQ,CAAC;AAGnBC,EAAAA,cAAc,GAAW,GAAG;EAGrCC,kBAAkB;AAGlBC,EAAAA,UAAU,GAAG,KAAK;EAGkBC,aAAa;AAGhDC,EAAAA,WAAW,GAAkB,IAAInG,OAAO,EAAE;AAG1CM,EAAAA,OAAO,GAAkB,IAAIN,OAAO,EAAE;AAGtC0B,EAAAA,QAAQ,GAAkB,IAAI1B,OAAO,EAAE;AAGhDoG,EAAAA,eAAe,GAAG,MAAM;EAGxBC,KAAK;EAO+BC,MAAM;EAM1CC,KAAK;EAGIC,cAAc,GAAGhD,MAAM,CAACiD,YAAY,CAAC,CAACC,KAAK,CAAC,+BAA+B,CAAC;AAIrFrG,EAAAA,WAAAA,GAAA;AACE,IAAA,KAAK,EAAE;AACP,IAAA,MAAMsG,MAAM,GAAG,IAAI,CAACrB,cAAc;IAIlC,IAAIqB,MAAM,CAAC5E,UAAU,KAAK,WAAW,IAAI,CAAC4E,MAAM,CAAC3E,mBAAmB,EAAE;MACpE,IAAI,CAACqE,KAAK,GAAG,WAAW;AAC1B,IAAA,CAAA,MAAO,IAAIM,MAAM,CAAC5E,UAAU,KAAK,KAAK,EAAE;MACtC,IAAI,CAACsE,KAAK,GAAG,KAAK;AACpB,IAAA,CAAA,MAAO;MACL,IAAI,CAACA,KAAK,GAAG,QAAQ;AACvB,IAAA;AAIA,IAAA,IAAI,IAAI,CAAClB,SAAS,CAACyB,OAAO,EAAE;AAC1B,MAAA,IAAI,IAAI,CAACP,KAAK,KAAK,QAAQ,EAAE;QAC3B,IAAI,CAACE,KAAK,GAAG,QAAQ;AACvB,MAAA;AACA,MAAA,IAAI,IAAI,CAACF,KAAK,KAAK,WAAW,EAAE;QAC9B,IAAI,CAACE,KAAK,GAAG,OAAO;AACtB,MAAA;AACF,IAAA;AACF,EAAA;EAGAM,qBAAqBA,CAAIC,MAA0B,EAAA;IACjD,IAAI,CAACC,kBAAkB,EAAE;IACzB,MAAMC,MAAM,GAAG,IAAI,CAACd,aAAa,CAACW,qBAAqB,CAACC,MAAM,CAAC;IAC/D,IAAI,CAACG,oBAAoB,EAAE;AAC3B,IAAA,OAAOD,MAAM;AACf,EAAA;EAGAE,oBAAoBA,CAAIJ,MAAyB,EAAA;IAC/C,IAAI,CAACC,kBAAkB,EAAE;IACzB,MAAMC,MAAM,GAAG,IAAI,CAACd,aAAa,CAACgB,oBAAoB,CAACJ,MAAM,CAAC;IAC9D,IAAI,CAACG,oBAAoB,EAAE;AAC3B,IAAA,OAAOD,MAAM;AACf,EAAA;EAOSG,eAAe,GAAIL,MAAiB,IAAI;IAC/C,IAAI,CAACC,kBAAkB,EAAE;IACzB,MAAMC,MAAM,GAAG,IAAI,CAACd,aAAa,CAACiB,eAAe,CAACL,MAAM,CAAC;IACzD,IAAI,CAACG,oBAAoB,EAAE;AAC3B,IAAA,OAAOD,MAAM;EACf,CAAC;EAGDI,cAAcA,CAACC,aAAqB,EAAA;IAClC,IAAIA,aAAa,KAAK3C,cAAc,EAAE;MACpC,IAAI,CAAC4C,aAAa,EAAE;AACtB,IAAA,CAAA,MAAO,IAAID,aAAa,KAAK5C,eAAe,EAAE;AAC5C7D,MAAAA,YAAY,CAAC,IAAI,CAAC+E,cAAc,CAAC;AACjC,MAAA,IAAI,CAACd,OAAO,CAAC0C,GAAG,CAAC,MAAK;AACpB,QAAA,IAAI,CAAC7F,QAAQ,CAACZ,IAAI,EAAE;AACpB,QAAA,IAAI,CAACY,QAAQ,CAACX,QAAQ,EAAE;AAC1B,MAAA,CAAC,CAAC;AACJ,IAAA;AACF,EAAA;AAGAyG,EAAAA,KAAKA,GAAA;AACH,IAAA,IAAI,CAAC,IAAI,CAACvB,UAAU,EAAE;MACpB,IAAI,CAACG,eAAe,GAAG,SAAS;AAGhC,MAAA,IAAI,CAACnB,kBAAkB,CAACwC,YAAY,EAAE;AACtC,MAAA,IAAI,CAACxC,kBAAkB,CAACyC,aAAa,EAAE;MACvC,IAAI,CAACC,qBAAqB,EAAE;MAE5B,IAAI,IAAI,CAACtC,mBAAmB,EAAE;AAC5BuC,QAAAA,eAAe,CACb,MAAK;AACH,UAAA,IAAI,CAAC/C,OAAO,CAAC0C,GAAG,CAAC,MAAMM,cAAc,CAAC,MAAM,IAAI,CAACT,cAAc,CAAC3C,eAAe,CAAC,CAAC,CAAC;AACpF,QAAA,CAAC,EACD;UAACqD,QAAQ,EAAE,IAAI,CAACjC;AAAS,SAAC,CAC3B;AACH,MAAA,CAAA,MAAO;AACLjF,QAAAA,YAAY,CAAC,IAAI,CAAC+E,cAAc,CAAC;AACjC,QAAA,IAAI,CAACA,cAAc,GAAGxE,UAAU,CAAC,MAAK;UAGpC,IAAI,CAAC4D,WAAW,CAACgD,aAAa,CAACC,SAAS,CAACC,GAAG,CAAC,gCAAgC,CAAC;AAC9E,UAAA,IAAI,CAACb,cAAc,CAAC3C,eAAe,CAAC;QACtC,CAAC,EAAE,GAAG,CAAC;AACT,MAAA;AACF,IAAA;AACF,EAAA;AAGA9D,EAAAA,IAAIA,GAAA;IACF,IAAI,IAAI,CAACsF,UAAU,EAAE;MACnB,OAAOiC,EAAE,CAACC,SAAS,CAAC;AACtB,IAAA;AAIA,IAAA,IAAI,CAACtD,OAAO,CAAC0C,GAAG,CAAC,MAAK;MAIpB,IAAI,CAACnB,eAAe,GAAG,QAAQ;AAC/B,MAAA,IAAI,CAACnB,kBAAkB,CAACwC,YAAY,EAAE;MAKtC,IAAI,CAAC1C,WAAW,CAACgD,aAAa,CAACK,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;AAI3DxH,MAAAA,YAAY,CAAC,IAAI,CAACoF,kBAAkB,CAAC;MAErC,IAAI,IAAI,CAACX,mBAAmB,EAAE;AAC5BuC,QAAAA,eAAe,CACb,MAAK;AACH,UAAA,IAAI,CAAC/C,OAAO,CAAC0C,GAAG,CAAC,MAAMM,cAAc,CAAC,MAAM,IAAI,CAACT,cAAc,CAAC1C,cAAc,CAAC,CAAC,CAAC;AACnF,QAAA,CAAC,EACD;UAACoD,QAAQ,EAAE,IAAI,CAACjC;AAAS,SAAC,CAC3B;AACH,MAAA,CAAA,MAAO;AACLjF,QAAAA,YAAY,CAAC,IAAI,CAACgF,aAAa,CAAC;AAChC,QAAA,IAAI,CAACA,aAAa,GAAGzE,UAAU,CAAC,MAAM,IAAI,CAACiG,cAAc,CAAC1C,cAAc,CAAC,EAAE,GAAG,CAAC;AACjF,MAAA;AACF,IAAA,CAAC,CAAC;IAEF,OAAO,IAAI,CAACpE,OAAO;AACrB,EAAA;AAGA+H,EAAAA,WAAWA,GAAA;IACT,IAAI,CAACpC,UAAU,GAAG,IAAI;IACtB,IAAI,CAACqC,gBAAgB,EAAE;IACvB,IAAI,CAAChB,aAAa,EAAE;AACtB,EAAA;AAEQA,EAAAA,aAAaA,GAAA;AACnB1G,IAAAA,YAAY,CAAC,IAAI,CAACgF,aAAa,CAAC;AAChCiC,IAAAA,cAAc,CAAC,MAAK;AAClB,MAAA,IAAI,CAACvH,OAAO,CAACQ,IAAI,EAAE;AACnB,MAAA,IAAI,CAACR,OAAO,CAACS,QAAQ,EAAE;AACzB,IAAA,CAAC,CAAC;AACJ,EAAA;AAMQkG,EAAAA,oBAAoBA,GAAA;AAC1B,IAAA,MAAMsB,OAAO,GAAgB,IAAI,CAACxD,WAAW,CAACgD,aAAa;AAC3D,IAAA,MAAMS,YAAY,GAAG,IAAI,CAAClD,cAAc,CAACpD,UAAU;AAEnD,IAAA,IAAIsG,YAAY,EAAE;AAChB,MAAA,IAAIC,KAAK,CAACC,OAAO,CAACF,YAAY,CAAC,EAAE;AAE/BA,QAAAA,YAAY,CAACG,OAAO,CAACC,QAAQ,IAAIL,OAAO,CAACP,SAAS,CAACC,GAAG,CAACW,QAAQ,CAAC,CAAC;AACnE,MAAA,CAAA,MAAO;AACLL,QAAAA,OAAO,CAACP,SAAS,CAACC,GAAG,CAACO,YAAY,CAAC;AACrC,MAAA;AACF,IAAA;IAEA,IAAI,CAACK,eAAe,EAAE;AAKtB,IAAA,MAAMC,KAAK,GAAG,IAAI,CAACxC,MAAM,CAACyB,aAAa;IACvC,MAAMgB,UAAU,GAAG,qBAAqB;AACxCD,IAAAA,KAAK,CAACd,SAAS,CAACgB,MAAM,CAACD,UAAU,EAAE,CAACD,KAAK,CAACG,aAAa,CAAC,CAAA,CAAA,EAAIF,UAAU,CAAA,CAAE,CAAC,CAAC;AAC5E,EAAA;AAOQF,EAAAA,eAAeA,GAAA;AAOrB,IAAA,MAAMK,EAAE,GAAG,IAAI,CAAC1C,cAAc;IAC9B,MAAM2C,MAAM,GAAG,IAAI,CAAC5D,SAAS,CAAC6D,gBAAgB,CAC5C,mDAAmD,CACpD;AAED,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;AACtC,MAAA,MAAME,KAAK,GAAGJ,MAAM,CAACE,CAAC,CAAC;AACvB,MAAA,MAAMG,QAAQ,GAAGD,KAAK,CAACE,YAAY,CAAC,WAAW,CAAC;AAChD,MAAA,IAAI,CAAChE,cAAc,CAACwC,GAAG,CAACsB,KAAK,CAAC;MAE9B,IAAI,CAACC,QAAQ,EAAE;AACbD,QAAAA,KAAK,CAACnB,YAAY,CAAC,WAAW,EAAEc,EAAE,CAAC;MACrC,CAAA,MAAO,IAAIM,QAAQ,CAACE,OAAO,CAACR,EAAE,CAAC,KAAK,EAAE,EAAE;QACtCK,KAAK,CAACnB,YAAY,CAAC,WAAW,EAAEoB,QAAQ,GAAG,GAAG,GAAGN,EAAE,CAAC;AACtD,MAAA;AACF,IAAA;AACF,EAAA;AAGQZ,EAAAA,gBAAgBA,GAAA;AACtB,IAAA,IAAI,CAAC7C,cAAc,CAACkD,OAAO,CAACY,KAAK,IAAG;AAClC,MAAA,MAAMC,QAAQ,GAAGD,KAAK,CAACE,YAAY,CAAC,WAAW,CAAC;AAEhD,MAAA,IAAID,QAAQ,EAAE;AACZ,QAAA,MAAMG,QAAQ,GAAGH,QAAQ,CAACI,OAAO,CAAC,IAAI,CAACpD,cAAc,EAAE,EAAE,CAAC,CAACqD,IAAI,EAAE;AAEjE,QAAA,IAAIF,QAAQ,CAACL,MAAM,GAAG,CAAC,EAAE;AACvBC,UAAAA,KAAK,CAACnB,YAAY,CAAC,WAAW,EAAEuB,QAAQ,CAAC;AAC3C,QAAA,CAAA,MAAO;AACLJ,UAAAA,KAAK,CAACO,eAAe,CAAC,WAAW,CAAC;AACpC,QAAA;AACF,MAAA;AACF,IAAA,CAAC,CAAC;AACF,IAAA,IAAI,CAACrE,cAAc,CAACsE,KAAK,EAAE;AAC7B,EAAA;AAGQhD,EAAAA,kBAAkBA,GAAA;AACxB,IAAA,IAAI,IAAI,CAACb,aAAa,CAAC8D,WAAW,EAAE,KAAK,OAAOC,SAAS,KAAK,WAAW,IAAIA,SAAS,CAAC,EAAE;MACvF,MAAMC,KAAK,CAAC,0EAA0E,CAAC;AACzF,IAAA;AACF,EAAA;AAMQvC,EAAAA,qBAAqBA,GAAA;IAC3B,IAAI,IAAI,CAAC3B,kBAAkB,EAAE;AAC3B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACnB,OAAO,CAACsF,iBAAiB,CAAC,MAAK;AAClC,MAAA,IAAI,CAACnE,kBAAkB,GAAG7E,UAAU,CAAC,MAAK;QACxC,IAAI,IAAI,CAAC8E,UAAU,EAAE;AACnB,UAAA;AACF,QAAA;AAEA,QAAA,MAAMsC,OAAO,GAAG,IAAI,CAACxD,WAAW,CAACgD,aAAa;AAC9C,QAAA,MAAMqC,YAAY,GAAG7B,OAAO,CAACU,aAAa,CAAC,eAAe,CAAC;AAC3D,QAAA,MAAMoB,WAAW,GAAG9B,OAAO,CAACU,aAAa,CAAC,aAAa,CAAC;QAExD,IAAImB,YAAY,IAAIC,WAAW,EAAE;UAG/B,IAAIC,cAAc,GAAuB,IAAI;UAC7C,IACE,IAAI,CAACnF,SAAS,CAACoF,SAAS,IACxBC,QAAQ,CAACC,aAAa,YAAYC,WAAW,IAC7CN,YAAY,CAACO,QAAQ,CAACH,QAAQ,CAACC,aAAa,CAAC,EAC7C;YACAH,cAAc,GAAGE,QAAQ,CAACC,aAAa;AACzC,UAAA;AAEAL,UAAAA,YAAY,CAACN,eAAe,CAAC,aAAa,CAAC;AAC3CO,UAAAA,WAAW,CAACO,WAAW,CAACR,YAAY,CAAC;UACrCE,cAAc,EAAEO,KAAK,EAAE;AAEvB,UAAA,IAAI,CAAC1E,WAAW,CAACrF,IAAI,EAAE;AACvB,UAAA,IAAI,CAACqF,WAAW,CAACpF,QAAQ,EAAE;AAC7B,QAAA;AACF,MAAA,CAAC,EAAE,IAAI,CAACgF,cAAc,CAAC;AACzB,IAAA,CAAC,CAAC;AACJ,EAAA;;;;;UA5UWpB,oBAAoB;AAAAnC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAgB;AAAA,GAAA,CAAA;AAApB,EAAA,OAAAmH,IAAA,GAAApI,EAAA,CAAAqI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAhH,IAAAA,IAAA,EAAAU,oBAAoB;AAAA9B,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,yBAAA;AAAAC,IAAAA,IAAA,EAAA;AAAAmI,MAAAA,SAAA,EAAA;AAAA,QAAA,cAAA,EAAA,sCAAA;AAAA,QAAA,iBAAA,EAAA;OAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,qCAAA,EAAA,iCAAA;AAAA,QAAA,oCAAA,EAAA,gCAAA;AAAA,QAAA,kDAAA,EAAA;OAAA;AAAAnI,MAAAA,cAAA,EAAA;KAAA;AAAAoI,IAAAA,WAAA,EAAA,CAAA;AAAAC,MAAAA,YAAA,EAAA,eAAA;AAAAC,MAAAA,KAAA,EAAA,IAAA;AAAAC,MAAAA,SAAA,EAwBpBC,eAAe;AAAAC,MAAAA,WAAA,EAAA,IAAA;AAAAC,MAAAA,MAAA,EAAA;AAAA,KAAA,EAAA;AAAAL,MAAAA,YAAA,EAAA,QAAA;AAAAC,MAAAA,KAAA,EAAA,IAAA;MAAAC,SAAA,EAAA,CAAA,OAAA,CAAA;AAAAE,MAAAA,WAAA,EAAA,IAAA;AAAAC,MAAAA,MAAA,EAAA;AAAA,KAAA,CAAA;AAAAC,IAAAA,eAAA,EAAA,IAAA;AAAA1I,IAAAA,QAAA,EAAAP,EAAA;AAAAmB,IAAAA,QAAA,ECzF5B,irBAeA;;;;YDwCY2H,eAAe;AAAA1I,MAAAA,QAAA,EAAA,mBAAA;MAAA8I,MAAA,EAAA,CAAA,iBAAA,CAAA;MAAAC,OAAA,EAAA,CAAA,UAAA,CAAA;MAAAjI,QAAA,EAAA,CAAA,iBAAA;AAAA,KAAA,CAAA;AAAAO,IAAAA,eAAA,EAAAzB,EAAA,CAAA0B,uBAAA,CAAA0H,KAAA;AAAAxH,IAAAA,aAAA,EAAA5B,EAAA,CAAA6B,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAUdG,oBAAoB;AAAAzB,EAAAA,UAAA,EAAA,CAAA;UApBhCS,SAAS;AACER,IAAAA,IAAA,EAAA,CAAA;AAAAL,MAAAA,QAAA,EAAA,yBAAyB;MAAAqB,eAAA,EAOlBC,uBAAuB,CAAC2H,OAAO;MAAAzH,aAAA,EACjCC,iBAAiB,CAACC,IAAI;MAAAwH,OAAA,EAC5B,CAACR,eAAe,CAAC;AAAAzI,MAAAA,IAAA,EACpB;AACJ,QAAA,OAAO,EAAE,0CAA0C;AACnD,QAAA,uCAAuC,EAAE,+BAA+B;AACxE,QAAA,sCAAsC,EAAE,8BAA8B;AACtE,QAAA,oDAAoD,EAAE,sBAAsB;AAC5E,QAAA,gBAAgB,EAAE,sCAAsC;AACxD,QAAA,mBAAmB,EAAE;OACtB;AAAAc,MAAAA,QAAA,EAAA,irBAAA;MAAAC,MAAA,EAAA,CAAA,81GAAA;KAAA;;;;;YA0BAmI,SAAS;MAAC9I,IAAA,EAAA,CAAAqI,eAAe,EAAE;AAACE,QAAAA,MAAM,EAAE;OAAK;;;YAsBzCO,SAAS;MAAC9I,IAAA,EAAA,CAAA,OAAO,EAAE;AAACuI,QAAAA,MAAM,EAAE;OAAK;;;;;ME3EvBQ,6BAA6B,GAAG,IAAIrK,cAAc,CAC7D,+BAA+B,EAC/B;AACEsK,EAAAA,UAAU,EAAE,MAAM;AAClBC,EAAAA,OAAO,EAAEA,MAAM,IAAItK,iBAAiB;AACrC,CAAA;MAOUuK,WAAW,CAAA;AACdhG,EAAAA,KAAK,GAAG7C,MAAM,CAAC8I,aAAa,CAAC;AAC7BzG,EAAAA,SAAS,GAAGrC,MAAM,CAACsC,QAAQ,CAAC;AAC5ByG,EAAAA,mBAAmB,GAAG/I,MAAM,CAACgJ,kBAAkB,CAAC;AAChDC,EAAAA,eAAe,GAAGjJ,MAAM,CAAC6I,WAAW,EAAE;AAACK,IAAAA,QAAQ,EAAE,IAAI;AAAEC,IAAAA,QAAQ,EAAE;AAAI,GAAC,CAAC;AACvEC,EAAAA,cAAc,GAAGpJ,MAAM,CAAoB0I,6BAA6B,CAAC;EACzE7G,mBAAmB,GAAGA,mBAAmB,EAAE;AAO3CwH,EAAAA,uBAAuB,GAA+B,IAAI;AAGlEC,EAAAA,uBAAuB,GAAGxJ,cAAc;AAGxCyJ,EAAAA,0BAA0B,GAAGpI,oBAAoB;AAGjDqI,EAAAA,eAAe,GAAG,2BAA2B;EAG7C,IAAIC,kBAAkBA,GAAA;AACpB,IAAA,MAAMC,MAAM,GAAG,IAAI,CAACT,eAAe;IACnC,OAAOS,MAAM,GAAGA,MAAM,CAACD,kBAAkB,GAAG,IAAI,CAACJ,uBAAuB;AAC1E,EAAA;EAEA,IAAII,kBAAkBA,CAACE,KAAiC,EAAA;IACtD,IAAI,IAAI,CAACV,eAAe,EAAE;AACxB,MAAA,IAAI,CAACA,eAAe,CAACQ,kBAAkB,GAAGE,KAAK;AACjD,IAAA,CAAA,MAAO;MACL,IAAI,CAACN,uBAAuB,GAAGM,KAAK;AACtC,IAAA;AACF,EAAA;EAGA9M,WAAAA,GAAA,CAAe;AASf+M,EAAAA,iBAAiBA,CACfC,SAA2B,EAC3B1G,MAA6B,EAAA;AAE7B,IAAA,OAAO,IAAI,CAAC2G,OAAO,CAACD,SAAS,EAAE1G,MAAM,CAAsB;AAC7D,EAAA;AASA4G,EAAAA,gBAAgBA,CACd1J,QAA0B,EAC1B8C,MAA0B,EAAA;AAE1B,IAAA,OAAO,IAAI,CAAC2G,OAAO,CAACzJ,QAAQ,EAAE8C,MAAM,CAAC;AACvC,EAAA;EAQA6G,IAAIA,CACFC,OAAe,EACfhK,MAAA,GAAiB,EAAE,EACnBkD,MAA0B,EAAA;AAE1B,IAAA,MAAM+G,OAAO,GAAG;MAAC,GAAG,IAAI,CAACd,cAAc;MAAE,GAAGjG;KAAO;IAInD+G,OAAO,CAACtL,IAAI,GAAG;MAACqL,OAAO;AAAEhK,MAAAA;KAAO;AAIhC,IAAA,IAAIiK,OAAO,CAAC1L,mBAAmB,KAAKyL,OAAO,EAAE;MAC3CC,OAAO,CAAC1L,mBAAmB,GAAGmG,SAAS;AACzC,IAAA;IAEA,OAAO,IAAI,CAACiF,iBAAiB,CAAC,IAAI,CAACN,uBAAuB,EAAEY,OAAO,CAAC;AACtE,EAAA;AAKAjN,EAAAA,OAAOA,GAAA;IACL,IAAI,IAAI,CAACwM,kBAAkB,EAAE;AAC3B,MAAA,IAAI,CAACA,kBAAkB,CAACxM,OAAO,EAAE;AACnC,IAAA;AACF,EAAA;AAEA4H,EAAAA,WAAWA,GAAA;IAET,IAAI,IAAI,CAACwE,uBAAuB,EAAE;AAChC,MAAA,IAAI,CAACA,uBAAuB,CAACpM,OAAO,EAAE;AACxC,IAAA;AACF,EAAA;AAKQkN,EAAAA,wBAAwBA,CAC9BC,UAAsB,EACtBjH,MAAyB,EAAA;AAEzB,IAAA,MAAMkH,YAAY,GAAGlH,MAAM,IAAIA,MAAM,CAAC1E,gBAAgB,IAAI0E,MAAM,CAAC1E,gBAAgB,CAAC6F,QAAQ;AAC1F,IAAA,MAAMA,QAAQ,GAAGhC,QAAQ,CAACgI,MAAM,CAAC;AAC/BZ,MAAAA,MAAM,EAAEW,YAAY,IAAI,IAAI,CAAChI,SAAS;AACtCkI,MAAAA,SAAS,EAAE,CAAC;AAACC,QAAAA,OAAO,EAAElM,iBAAiB;AAAEmM,QAAAA,QAAQ,EAAEtH;OAAO;AAC3D,KAAA,CAAC;AAEF,IAAA,MAAMuH,eAAe,GAAG,IAAIC,eAAe,CACzC,IAAI,CAACpB,0BAA0B,EAC/BpG,MAAM,CAAC1E,gBAAgB,EACvB6F,QAAQ,CACT;AACD,IAAA,MAAMsG,YAAY,GAAuCR,UAAU,CAACS,MAAM,CAACH,eAAe,CAAC;AAC3FE,IAAAA,YAAY,CAACvO,QAAQ,CAACyF,cAAc,GAAGqB,MAAM;IAC7C,OAAOyH,YAAY,CAACvO,QAAQ;AAC9B,EAAA;AAKQyN,EAAAA,OAAOA,CACbgB,OAA0C,EAC1CC,UAA8B,EAAA;AAE9B,IAAA,MAAM5H,MAAM,GAAG;MAAC,GAAG,IAAI7E,iBAAiB,EAAE;MAAE,GAAG,IAAI,CAAC8K,cAAc;MAAE,GAAG2B;KAAW;AAClF,IAAA,MAAMX,UAAU,GAAG,IAAI,CAACY,cAAc,CAAC7H,MAAM,CAAC;IAC9C,MAAM8H,SAAS,GAAG,IAAI,CAACd,wBAAwB,CAACC,UAAU,EAAEjH,MAAM,CAAC;IACnE,MAAMpD,WAAW,GAAG,IAAI5D,cAAc,CAA2B8O,SAAS,EAAEb,UAAU,CAAC;IAEvF,IAAIU,OAAO,YAAYI,WAAW,EAAE;MAClC,MAAM5H,MAAM,GAAG,IAAI6H,cAAc,CAACL,OAAO,EAAE,IAAK,EAAE;QAChDM,SAAS,EAAEjI,MAAM,CAACvE,IAAI;AACtBmB,QAAAA;AACM,OAAA,CAAC;MAETA,WAAW,CAAC1D,QAAQ,GAAG4O,SAAS,CAACvH,oBAAoB,CAACJ,MAAM,CAAC;AAC/D,IAAA,CAAA,MAAO;MACL,MAAMgB,QAAQ,GAAG,IAAI,CAAC+G,eAAe,CAAClI,MAAM,EAAEpD,WAAW,CAAC;MAC1D,MAAMuD,MAAM,GAAG,IAAIqH,eAAe,CAACG,OAAO,EAAEnG,SAAS,EAAEL,QAAQ,CAAC;AAChE,MAAA,MAAMgH,UAAU,GAAGL,SAAS,CAAC5H,qBAAqB,CAAIC,MAAM,CAAC;AAG7DvD,MAAAA,WAAW,CAAC1D,QAAQ,GAAGiP,UAAU,CAACjP,QAAQ;AAC5C,IAAA;IAKA,IAAI,CAAC0M,mBAAA,CACFwC,OAAO,CAACC,WAAW,CAACC,eAAe,CAAA,CACnCC,IAAI,CAACC,SAAS,CAACvB,UAAU,CAACwB,WAAW,EAAE,CAAC,CAAA,CACxC7O,SAAS,CAAC8O,KAAK,IAAG;AACjBzB,MAAAA,UAAU,CAAC0B,cAAc,CAACtH,SAAS,CAACgB,MAAM,CAAC,IAAI,CAACgE,eAAe,EAAEqC,KAAK,CAACE,OAAO,CAAC;AACjF,IAAA,CAAC,CAAC;IAEJ,IAAI5I,MAAM,CAAC3E,mBAAmB,EAAE;AAE9ByM,MAAAA,SAAS,CAACtI,WAAW,CAAC5F,SAAS,CAAC,MAAK;AACnC,QAAA,IAAI,CAAC8F,KAAK,CAACmJ,QAAQ,CAAC7I,MAAM,CAAC3E,mBAAoB,EAAE2E,MAAM,CAAC5E,UAAU,CAAC;AACrE,MAAA,CAAC,CAAC;AACJ,IAAA;AAEA,IAAA,IAAI,CAAC0N,gBAAgB,CAAClM,WAAW,EAAEoD,MAAM,CAAC;IAC1C,IAAI,CAACsG,kBAAkB,GAAG1J,WAAW;IACrC,OAAO,IAAI,CAAC0J,kBAAkB;AAChC,EAAA;AAGQwC,EAAAA,gBAAgBA,CAAClM,WAAgC,EAAEoD,MAAyB,EAAA;AAElFpD,IAAAA,WAAW,CAAC/B,cAAc,EAAE,CAACjB,SAAS,CAAC,MAAK;AAE1C,MAAA,IAAI,IAAI,CAAC0M,kBAAkB,IAAI1J,WAAW,EAAE;QAC1C,IAAI,CAAC0J,kBAAkB,GAAG,IAAI;AAChC,MAAA;MAEA,IAAItG,MAAM,CAAC3E,mBAAmB,EAAE;AAC9B,QAAA,IAAI,CAACqE,KAAK,CAAC0D,KAAK,EAAE;AACpB,MAAA;AACF,IAAA,CAAC,CAAC;IAGF,IAAIpD,MAAM,CAACzF,QAAQ,IAAIyF,MAAM,CAACzF,QAAQ,GAAG,CAAC,EAAE;AAC1CqC,MAAAA,WAAW,CAAC9B,WAAW,EAAE,CAAClB,SAAS,CAAC,MAAMgD,WAAW,CAACtC,aAAa,CAAC0F,MAAM,CAACzF,QAAS,CAAC,CAAC;AACxF,IAAA;IAEA,IAAI,IAAI,CAAC+L,kBAAkB,EAAE;MAG3B,IAAI,CAACA,kBAAkB,CAACzL,cAAc,EAAE,CAACjB,SAAS,CAAC,MAAK;AACtDgD,QAAAA,WAAW,CAACzD,iBAAiB,CAAC0H,KAAK,EAAE;AACvC,MAAA,CAAC,CAAC;AACF,MAAA,IAAI,CAACyF,kBAAkB,CAACxM,OAAO,EAAE;AACnC,IAAA,CAAA,MAAO;AAEL8C,MAAAA,WAAW,CAACzD,iBAAiB,CAAC0H,KAAK,EAAE;AACvC,IAAA;AACF,EAAA;EAMQgH,cAAcA,CAAC7H,MAAyB,EAAA;AAC9C,IAAA,MAAM+I,aAAa,GAAG,IAAIC,aAAa,EAAE;AACzCD,IAAAA,aAAa,CAACvN,SAAS,GAAGwE,MAAM,CAACxE,SAAS;AAE1C,IAAA,MAAMyN,gBAAgB,GAAGC,4BAA4B,CAAC,IAAI,CAAChK,SAAS,CAAC;AAErE,IAAA,MAAMiK,KAAK,GAAGnJ,MAAM,CAACxE,SAAS,KAAK,KAAK;IACxC,MAAM4N,MAAM,GACVpJ,MAAM,CAACtE,kBAAkB,KAAK,MAAM,IACnCsE,MAAM,CAACtE,kBAAkB,KAAK,OAAO,IAAI,CAACyN,KAAM,IAChDnJ,MAAM,CAACtE,kBAAkB,KAAK,KAAK,IAAIyN,KAAM;IAChD,MAAME,OAAO,GAAG,CAACD,MAAM,IAAIpJ,MAAM,CAACtE,kBAAkB,KAAK,QAAQ;AACjE,IAAA,IAAI0N,MAAM,EAAE;AACVH,MAAAA,gBAAgB,CAACK,IAAI,CAAC,GAAG,CAAC;IAC5B,CAAA,MAAO,IAAID,OAAO,EAAE;AAClBJ,MAAAA,gBAAgB,CAACM,KAAK,CAAC,GAAG,CAAC;AAC7B,IAAA,CAAA,MAAO;MACLN,gBAAgB,CAACO,kBAAkB,EAAE;AACvC,IAAA;AAEA,IAAA,IAAIxJ,MAAM,CAACrE,gBAAgB,KAAK,KAAK,EAAE;AACrCsN,MAAAA,gBAAgB,CAACQ,GAAG,CAAC,GAAG,CAAC;AAC3B,IAAA,CAAA,MAAO;AACLR,MAAAA,gBAAgB,CAACS,MAAM,CAAC,GAAG,CAAC;AAC9B,IAAA;IAEAX,aAAa,CAACE,gBAAgB,GAAGA,gBAAgB;AACjDF,IAAAA,aAAa,CAACY,iBAAiB,GAAG,IAAI,CAACjL,mBAAmB;AAC1D,IAAA,OAAOkL,gBAAgB,CAAC,IAAI,CAAC1K,SAAS,EAAE6J,aAAa,CAAC;AACxD,EAAA;AAOQb,EAAAA,eAAeA,CAAIlI,MAAyB,EAAEpD,WAA8B,EAAA;AAClF,IAAA,MAAMsK,YAAY,GAAGlH,MAAM,IAAIA,MAAM,CAAC1E,gBAAgB,IAAI0E,MAAM,CAAC1E,gBAAgB,CAAC6F,QAAQ;IAE1F,OAAOhC,QAAQ,CAACgI,MAAM,CAAC;AACrBZ,MAAAA,MAAM,EAAEW,YAAY,IAAI,IAAI,CAAChI,SAAS;AACtCkI,MAAAA,SAAS,EAAE,CACT;AAACC,QAAAA,OAAO,EAAErO,cAAc;AAAEsO,QAAAA,QAAQ,EAAE1K;AAAW,OAAC,EAChD;AAACyK,QAAAA,OAAO,EAAEpM,kBAAkB;QAAEqM,QAAQ,EAAEtH,MAAM,CAACvE;OAAK;AAEvD,KAAA,CAAC;AACJ,EAAA;;;;;UA1QWiK,WAAW;AAAA7J,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAA6N;AAAA,GAAA,CAAA;AAAX,EAAA,OAAAC,KAAA,GAAA/N,EAAA,CAAAgO,qBAAA,CAAA;AAAA1F,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAhI,IAAAA,QAAA,EAAAP,EAAA;AAAAuB,IAAAA,IAAA,EAAAoI,WAAW;gBADC;AAAM,GAAA,CAAA;;;;;;QAClBA,WAAW;AAAAnJ,EAAAA,UAAA,EAAA,CAAA;UADvBsN,UAAU;WAAC;AAACrE,MAAAA,UAAU,EAAE;KAAO;;;;;AC5BhC,MAAMwE,UAAU,GAAG,CAAChM,oBAAoB,EAAEpC,gBAAgB,EAAEa,kBAAkB,EAAEC,iBAAiB,CAAC;MAOrFuN,iBAAiB,CAAA;;;;;UAAjBA,iBAAiB;AAAApO,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAkO;AAAA,GAAA,CAAA;;;;;UAAjBD,iBAAiB;AAAA5E,IAAAA,OAAA,EAAA,CAJlB8E,aAAa,EAAEC,YAAY,EAAEC,eAAe,EAAE1N,cAAc,EAHpDqB,oBAAoB,EAAEpC,gBAAgB,EAAEa,kBAAkB,EAAEC,iBAAiB,CAAA;IAAA4N,OAAA,EAAA,CAIrFC,UAAU,EAJFvM,oBAAoB,EAAEpC,gBAAgB,EAAEa,kBAAkB,EAAEC,iBAAiB;AAAA,GAAA,CAAA;AAOpF,EAAA,OAAA8N,IAAA,GAAAzO,EAAA,CAAA0O,mBAAA,CAAA;AAAApG,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAhI,IAAAA,QAAA,EAAAP,EAAA;AAAAuB,IAAAA,IAAA,EAAA2M,iBAAiB;IAAA7C,SAAA,EAFjB,CAAC1B,WAAW,CAAC;IAAAL,OAAA,EAAA,CAFd8E,aAAa,EAAEC,YAAY,EAAEC,eAAe,EAAE1N,cAAc,EAC5D4N,UAAU;AAAA,GAAA,CAAA;;;;;;QAGTN,iBAAiB;AAAA1N,EAAAA,UAAA,EAAA,CAAA;UAL7B2N,QAAQ;AAAC1N,IAAAA,IAAA,EAAA,CAAA;AACR6I,MAAAA,OAAO,EAAE,CAAC8E,aAAa,EAAEC,YAAY,EAAEC,eAAe,EAAE1N,cAAc,EAAE,GAAGqN,UAAU,CAAC;AACtFM,MAAAA,OAAO,EAAE,CAACC,UAAU,EAAE,GAAGP,UAAU,CAAC;MACpC5C,SAAS,EAAE,CAAC1B,WAAW;KACxB;;;;;;"}