{"version":3,"file":"ngx-lottie-dotlottie-web.mjs","sources":["../../../../libs/ngx-lottie/dotlottie-web/src/types.ts","../../../../libs/ngx-lottie/dotlottie-web/src/symbols.ts","../../../../libs/ngx-lottie/dotlottie-web/src/base.directive.ts","../../../../libs/ngx-lottie/dotlottie-web/src/dotlottie.component.ts","../../../../libs/ngx-lottie/dotlottie-web/src/dotlottie-worker.component.ts","../../../../libs/ngx-lottie/dotlottie-web/src/providers.ts","../../../../libs/ngx-lottie/dotlottie-web/src/ngx-lottie-dotlottie-web.ts"],"sourcesContent":["import { booleanAttribute as originalBooleanAttribute } from '@angular/core';\n\nexport type BooleanInput = boolean | `${boolean}` | '' | null | undefined;\n\n/**\n * Transforms a value (typically a string) to a boolean.\n * Intended to be used as a transform function of an input.\n *\n * @see https://material.angular.io/cdk/coercion/overview\n */\nexport const coerceBooleanAttribute: (value: BooleanInput) => boolean = originalBooleanAttribute;\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Factory function that returns the `DotLottie` player class synchronously.\n * Use this when bundling package directly in your application bundle.\n *\n * @example\n * import { DotLottieWorker } from '@lottiefiles/dotlottie-web';\n * const player = () => DotLottieWorker;\n */\ntype DotLottiePlayerFactory = () =>\n  | typeof import('@lottiefiles/dotlottie-web').DotLottie\n  | typeof import('@lottiefiles/dotlottie-web').DotLottieWorker;\n\n/**\n * Loader function that returns a Promise resolving to the `DotLottie` player class.\n * Use this for lazy-loading package to reduce initial bundle size.\n * The library will only be loaded when the first animation is created.\n *\n * @example\n * const player = () => import('@lottiefiles/dotlottie-web').then(({ DotLottie }) => DotLottie);\n */\ntype DotLottiePlayerLoader = () => Promise<\n  | typeof import('@lottiefiles/dotlottie-web').DotLottie\n  | typeof import('@lottiefiles/dotlottie-web').DotLottieWorker\n>;\n\n/**\n * Union type allowing either synchronous or asynchronous `DotLottie` player class loading.\n */\nexport type DotLottiePlayerFactoryOrLoader = DotLottiePlayerFactory | DotLottiePlayerLoader;\n\nexport interface DotLottieOptions {\n  player: DotLottiePlayerFactoryOrLoader;\n}\n\nexport const DOT_LOTTIE_OPTIONS = new InjectionToken<DotLottieOptions>(\n  typeof ngDevMode !== 'undefined' && ngDevMode ? 'DOT_LOTTIE_OPTIONS' : '',\n);\n\n/**\n * Optional injection token for custom WASM URL.\n * If provided, the base directive will configure it before creating DotLottie instances.\n */\nexport const DOT_LOTTIE_WASM_URL = new InjectionToken<string>(\n  typeof ngDevMode !== 'undefined' && ngDevMode ? 'DOT_LOTTIE_WASM_URL' : '',\n);\n","import { isPlatformServer } from '@angular/common';\nimport {\n  afterNextRender,\n  computed,\n  DestroyRef,\n  Directive,\n  effect,\n  ElementRef,\n  inject,\n  Injector,\n  input,\n  NgZone,\n  OutputEmitterRef,\n  PLATFORM_ID,\n  runInInjectionContext,\n  signal,\n  untracked,\n  viewChild,\n  ɵisPromise,\n} from '@angular/core';\nimport { outputFromObservable, toObservable } from '@angular/core/rxjs-interop';\nimport { Observable, switchMap, EMPTY } from 'rxjs';\n\nimport { coerceBooleanAttribute } from './types';\nimport { DOT_LOTTIE_OPTIONS, DOT_LOTTIE_WASM_URL } from './symbols';\nimport type {\n  Event,\n  Data,\n  DotLottie,\n  DotLottieWorker,\n  EventType,\n  Layout,\n  Mode,\n  RenderConfig,\n  StateMachineConfig,\n} from '@lottiefiles/dotlottie-web';\n\ntype EventByType<T extends EventType> = Extract<\n  Event,\n  {\n    type: T;\n  }\n>;\n\n@Directive()\nexport abstract class ɵɵBaseDotLottieDirective {\n  /**\n   * Static flag to track if WASM URL has been configured globally.\n   */\n  private static wasmUrlConfigured = false;\n\n  protected readonly instance = signal<DotLottie | DotLottieWorker | undefined>(undefined);\n\n  private readonly isLoaded = signal(false);\n  private readonly canvas = viewChild.required<ElementRef<HTMLCanvasElement>>('canvas');\n\n  private readonly ngZone = inject(NgZone);\n\n  readonly className = input<string>();\n  readonly containerStyles = input<Record<string, string>>();\n  readonly animationId = input<string>();\n  readonly autoplay = input(false, { transform: coerceBooleanAttribute });\n  readonly backgroundColor = input<string>();\n  readonly data = input<Data>();\n  readonly layout = input<Layout>();\n  readonly loop = input(false, { transform: coerceBooleanAttribute });\n  readonly marker = input<string>();\n  readonly mode = input<Mode>();\n  readonly renderConfig = input<RenderConfig>();\n  readonly segment = input<[number, number]>();\n  readonly speed = input<number>();\n  readonly src = input<string>();\n  readonly themeId = input<string>();\n  readonly useFrameInterpolation = input(true, { transform: coerceBooleanAttribute });\n  readonly stateMachineId = input<string>();\n  readonly stateMachineConfig = input<StateMachineConfig>();\n\n  abstract readonly dotLottieCreated: OutputEmitterRef<DotLottie | DotLottieWorker>;\n\n  /**\n   * Emitted when the animation completes playback.\n   */\n  readonly complete = outputFromObservable(this.awaitInstanceAndStartListening('complete'));\n\n  /**\n   * Emitted when the animation has successfully loaded.\n   */\n  readonly load = outputFromObservable(this.awaitInstanceAndStartListening('load'));\n\n  /**\n   * Emitted when an error occurs during animation loading.\n   */\n  readonly loadError = outputFromObservable(this.awaitInstanceAndStartListening('loadError'));\n\n  /**\n   * Emitted when an error occurs during animation rendering.\n   */\n  readonly renderError = outputFromObservable(this.awaitInstanceAndStartListening('renderError'));\n\n  /**\n   * Emitted when the animation is paused.\n   */\n  readonly pause = outputFromObservable(this.awaitInstanceAndStartListening('pause'));\n\n  /**\n   * Emitted when the animation starts playing.\n   */\n  readonly play = outputFromObservable(this.awaitInstanceAndStartListening('play'));\n\n  /**\n   * Emitted when the animation is stopped.\n   */\n  readonly stop = outputFromObservable(this.awaitInstanceAndStartListening('stop'));\n\n  /**\n   * Emitted when the animation instance is destroyed.\n   */\n  readonly destroy = outputFromObservable(this.awaitInstanceAndStartListening('destroy'));\n\n  /**\n   * Emitted when the WASM module is initialized and ready.\n   */\n  readonly ready = outputFromObservable(this.awaitInstanceAndStartListening('ready'));\n\n  /**\n   * Emitted on each frame change. Useful for tracking the current frame.\n   */\n  readonly frame = outputFromObservable(this.awaitInstanceAndStartListening('frame'));\n\n  /**\n   * Emitted when the animation is frozen (rendering paused).\n   */\n  readonly freeze = outputFromObservable(this.awaitInstanceAndStartListening('freeze'));\n\n  /**\n   * Emitted when the animation is unfrozen (rendering resumed).\n   */\n  readonly unfreeze = outputFromObservable(this.awaitInstanceAndStartListening('unfreeze'));\n\n  protected readonly mergedContainerStyles = computed(() => ({\n    width: '100%',\n    height: '100%',\n    lineHeight: '0',\n    ...this.containerStyles(),\n  }));\n\n  protected canvasStyles = { width: '100%', height: '100%' };\n\n  constructor() {\n    if (\n      (typeof ngServerMode !== 'undefined' && ngServerMode) ||\n      isPlatformServer(inject(PLATFORM_ID))\n    ) {\n      return;\n    }\n\n    const injector = inject(Injector);\n    const destroyRef = inject(DestroyRef);\n    const options = inject(DOT_LOTTIE_OPTIONS);\n    const wasmUrl = inject(DOT_LOTTIE_WASM_URL, { optional: true });\n\n    afterNextRender(async () => {\n      const DotLottie = await this.ngZone.runOutsideAngular(() => {\n        const player = options.player();\n        return ɵisPromise(player) ? player : Promise.resolve(player);\n      });\n\n      if (wasmUrl !== null && ɵɵBaseDotLottieDirective.wasmUrlConfigured === false) {\n        ɵɵBaseDotLottieDirective.wasmUrlConfigured = true;\n        DotLottie.setWasmUrl(wasmUrl);\n      }\n\n      // Guard against component destruction during async import.\n      if (destroyRef.destroyed) {\n        return;\n      }\n\n      runInInjectionContext(injector, () => this.render(destroyRef, DotLottie));\n    });\n  }\n\n  private render(\n    destroyRef: DestroyRef,\n    DotLottieConstructor: typeof DotLottie | typeof DotLottieWorker,\n  ): void {\n    const canvas = this.canvas().nativeElement;\n\n    const instance = this.ngZone.runOutsideAngular(() => {\n      return new DotLottieConstructor({\n        canvas,\n        ...this.buildConfig(),\n      });\n    });\n\n    this.instance.set(instance);\n    this.dotLottieCreated.emit(instance);\n\n    // Track when the DotLottie animation is fully loaded.\n    // This is necessary for state machine initialization, which requires\n    // the animation to be loaded before a state machine can be started.\n    this.ngZone.runOutsideAngular(() => {\n      const onLoad = () => this.isLoaded.set(true);\n      instance.addEventListener('load', onLoad);\n      destroyRef.onDestroy(() => instance.removeEventListener('load', onLoad));\n    });\n\n    // Each effect tracks a single input signal and updates the corresponding\n    // DotLottie instance property when that input changes. This provides\n    // fine-grained reactivity similar to React's `useEffect` with dependency arrays.\n    effect(() => {\n      this.ngZone.runOutsideAngular(() => instance.loadAnimation(this.animationId() ?? ''));\n    });\n    effect(() => {\n      this.ngZone.runOutsideAngular(() =>\n        instance.setBackgroundColor(this.backgroundColor() ?? ''),\n      );\n    });\n    effect(() => {\n      const data = this.data();\n      if (typeof data !== 'string' && typeof data !== 'object') return;\n      this.ngZone.runOutsideAngular(() => instance.load({ ...this.buildConfig(), data }));\n    });\n    effect(() => {\n      this.ngZone.runOutsideAngular(() => instance.setLayout(this.layout() ?? {}));\n    });\n    effect(() => {\n      this.ngZone.runOutsideAngular(() => instance.setLoop(this.loop() ?? false));\n    });\n    effect(() => {\n      this.ngZone.runOutsideAngular(() => instance.setMarker(this.marker() ?? ''));\n    });\n    effect(() => {\n      this.ngZone.runOutsideAngular(() => instance.setMode(this.mode() ?? 'forward'));\n    });\n    effect(() => {\n      this.ngZone.runOutsideAngular(() => instance.setRenderConfig(this.renderConfig() ?? {}));\n    });\n    effect(() => {\n      const segment = this.segment();\n      if (typeof segment?.[0] === 'number' && typeof segment?.[1] === 'number') {\n        this.ngZone.runOutsideAngular(() => instance.setSegment(segment[0], segment[1]));\n      }\n    });\n    effect(() => {\n      this.ngZone.runOutsideAngular(() => instance.setSpeed(this.speed() ?? 1));\n    });\n    effect(() => {\n      const src = this.src();\n      if (typeof src !== 'string') return;\n      this.ngZone.runOutsideAngular(() => instance.load({ ...this.buildConfig(), src }));\n    });\n    effect(() => {\n      const themeId = this.themeId();\n      if (typeof themeId !== 'string') return;\n      this.ngZone.runOutsideAngular(() => instance.setTheme(themeId));\n    });\n    effect(() => {\n      this.ngZone.runOutsideAngular(() =>\n        instance.setUseFrameInterpolation(this.useFrameInterpolation() ?? true),\n      );\n    });\n    effect(() => {\n      const isLoaded = this.isLoaded();\n      const stateMachineId = this.stateMachineId();\n\n      // Wait for instance to be ready and loaded.\n      if (!isLoaded) return;\n\n      if (typeof stateMachineId === 'string' && stateMachineId) {\n        this.ngZone.runOutsideAngular(() => {\n          const smLoaded = instance.stateMachineLoad(stateMachineId);\n          if (smLoaded) {\n            instance.stateMachineStart();\n          }\n        });\n      } else {\n        this.ngZone.runOutsideAngular(() => instance.stateMachineStop());\n      }\n    });\n    effect(() => {\n      this.ngZone.runOutsideAngular(() =>\n        instance.stateMachineSetConfig(this.stateMachineConfig() ?? null),\n      );\n    });\n\n    destroyRef.onDestroy(() => {\n      // Since `destroy()` calls `eventManager.dispatch` with `destroy`,\n      // we're unaware of any upcoming asynchronous jobs scheduled in the\n      // Angular context that might redundantly trigger change detection.\n      this.ngZone.runOutsideAngular(() => {\n        instance.destroy();\n      });\n    });\n  }\n\n  private buildConfig() {\n    return untracked(() => ({\n      animationId: this.animationId(),\n      autoplay: this.autoplay(),\n      backgroundColor: this.backgroundColor(),\n      data: this.data(),\n      layout: this.layout(),\n      loop: this.loop(),\n      marker: this.marker(),\n      mode: this.mode(),\n      renderConfig: this.renderConfig(),\n      segment: this.segment(),\n      speed: this.speed(),\n      src: this.src(),\n      themeId: this.themeId(),\n      useFrameInterpolation: this.useFrameInterpolation(),\n    }));\n  }\n\n  private awaitInstanceAndStartListening<T extends EventType>(name: T): Observable<EventByType<T>> {\n    return toObservable(this.instance).pipe(\n      switchMap(instance => {\n        if (instance === undefined) return EMPTY;\n\n        return new Observable<EventByType<T>>(subscriber => {\n          const onEvent = (event: EventByType<T>) => {\n            subscriber.next(event);\n          };\n\n          this.ngZone.runOutsideAngular(() => {\n            instance.addEventListener(name, onEvent as any);\n          });\n\n          return () => {\n            instance.removeEventListener(name, onEvent as any);\n          };\n        });\n      }),\n    );\n  }\n}\n","import { ChangeDetectionStrategy, Component, output, ViewEncapsulation } from '@angular/core';\n\nimport { ɵɵBaseDotLottieDirective } from './base.directive';\n\n/**\n * Separate DotLottie and DotLottieWorker components architecture\n *\n * WHY TWO COMPONENTS INSTEAD OF ONE WITH CONFIGURATION:\n *\n * 1. **Type Safety**: Each component has a precise output type (DotLottie vs DotLottieWorker).\n *    Users get compile-time guarantees about which instance type they're working with.\n *    A single configurable component would require runtime type checking and type assertions.\n *\n * 2. **Clear Intent**: The component selector itself (`ng-dotlottie` vs `ng-dotlottie-worker`)\n *    explicitly communicates which rendering strategy is being used. No need to inspect\n *    configuration to understand the behavior.\n *\n * 3. **Bundle Optimization**: Tree-shaking works better with separate components. If an app\n *    only uses `ng-dotlottie`, the DotLottieWorker code can be completely eliminated from\n *    the bundle. A single component would bundle both implementations.\n *\n * 4. **Simpler API**: No configuration prop needed (e.g., `useWorker` boolean). Less surface\n *    area for bugs - users can't accidentally misconfigure or change modes at runtime.\n *\n * 5. **Performance Predictability**: DotLottie and DotLottieWorker have different performance\n *    characteristics and browser support. Separate components make this distinction explicit\n *    and prevent unintended mode switching during the component lifecycle.\n *\n * 6. **Maintainability**: If DotLottie and DotLottieWorker diverge in their APIs or\n *    initialization logic in future library versions, handling them separately is cleaner\n *    than conditional logic scattered throughout a single component.\n *\n * 7. **Testing**: Each component can be tested independently with focused test suites.\n *    No need for parameterized tests or complex setup to cover both modes.\n *\n * TRADE-OFF:\n * - Slight code duplication (two component classes), but shared implementation in\n *   ɵɵBaseDotLottieDirective minimizes this. The duplication is purely declarative\n *   (selector, output type override) which is acceptable for the benefits gained.\n */\n@Component({\n  selector: 'ng-dotlottie',\n  template: `\n    <div [class]=\"className()\" [style]=\"mergedContainerStyles()\">\n      <canvas #canvas class=\"ng-dotlottie-canvas\" [style]=\"canvasStyles\"></canvas>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DotLottieComponent extends ɵɵBaseDotLottieDirective {\n  override readonly dotLottieCreated = output<import('@lottiefiles/dotlottie-web').DotLottie>();\n}\n","import { ChangeDetectionStrategy, Component, output, ViewEncapsulation } from '@angular/core';\n\nimport { ɵɵBaseDotLottieDirective } from './base.directive';\n\n/**\n * Separate DotLottie and DotLottieWorker components architecture\n *\n * WHY TWO COMPONENTS INSTEAD OF ONE WITH CONFIGURATION:\n *\n * 1. **Type Safety**: Each component has a precise output type (DotLottie vs DotLottieWorker).\n *    Users get compile-time guarantees about which instance type they're working with.\n *    A single configurable component would require runtime type checking and type assertions.\n *\n * 2. **Clear Intent**: The component selector itself (`ng-dotlottie` vs `ng-dotlottie-worker`)\n *    explicitly communicates which rendering strategy is being used. No need to inspect\n *    configuration to understand the behavior.\n *\n * 3. **Bundle Optimization**: Tree-shaking works better with separate components. If an app\n *    only uses `ng-dotlottie`, the DotLottieWorker code can be completely eliminated from\n *    the bundle. A single component would bundle both implementations.\n *\n * 4. **Simpler API**: No configuration prop needed (e.g., `useWorker` boolean). Less surface\n *    area for bugs - users can't accidentally misconfigure or change modes at runtime.\n *\n * 5. **Performance Predictability**: DotLottie and DotLottieWorker have different performance\n *    characteristics and browser support. Separate components make this distinction explicit\n *    and prevent unintended mode switching during the component lifecycle.\n *\n * 6. **Maintainability**: If DotLottie and DotLottieWorker diverge in their APIs or\n *    initialization logic in future library versions, handling them separately is cleaner\n *    than conditional logic scattered throughout a single component.\n *\n * 7. **Testing**: Each component can be tested independently with focused test suites.\n *    No need for parameterized tests or complex setup to cover both modes.\n *\n * TRADE-OFF:\n * - Slight code duplication (two component classes), but shared implementation in\n *   ɵɵBaseDotLottieDirective minimizes this. The duplication is purely declarative\n *   (selector, output type override) which is acceptable for the benefits gained.\n */\n@Component({\n  selector: 'ng-dotlottie-worker',\n  template: `\n    <div [class]=\"className()\" [style]=\"mergedContainerStyles()\">\n      <canvas #canvas class=\"ng-dotlottie-worker-canvas\" [style]=\"canvasStyles\"></canvas>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DotLottieWorkerComponent extends ɵɵBaseDotLottieDirective {\n  override readonly dotLottieCreated =\n    output<import('@lottiefiles/dotlottie-web').DotLottieWorker>();\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { DOT_LOTTIE_OPTIONS, DOT_LOTTIE_WASM_URL, type DotLottieOptions } from './symbols';\n\n/**\n * Provides DotLottie configuration and optional features for the application.\n *\n * @param options - Configuration specifying how to load the `DotLottie` player class\n * @param features - Additional feature providers (e.g., `withDotLottieWasmUrl`)\n * @returns Environment providers for dependency injection\n *\n * @example\n * // Synchronous loading\n * import { DotLottie } from '@lottiefiles/dotlottie-web';\n *\n * export const appConfig: ApplicationConfig = {\n *   providers: [\n *     provideDotLottie({\n *       player: () => DotLottie,\n *     }),\n *   ],\n * };\n *\n * @example\n * // Lazy loading with custom WASM URL\n * export const appConfig: ApplicationConfig = {\n *   providers: [\n *     provideDotLottie(\n *       {\n *         player: () => import('@lottiefiles/dotlottie-web').then(m => m.DotLottie),\n *       },\n *       withDotLottieWasmUrl('/assets/dotlottie-player.wasm'),\n *     ),\n *   ],\n * };\n */\nexport function provideDotLottie(options: DotLottieOptions, ...features: EnvironmentProviders[]) {\n  return makeEnvironmentProviders([\n    {\n      provide: DOT_LOTTIE_OPTIONS,\n      useValue: options,\n    },\n    features,\n  ]);\n}\n\n/**\n * Feature provider that configures a custom URL for the DotLottie WASM file.\n * The WASM URL is set lazily when the first DotLottie component renders,\n * rather than during app initialization.\n *\n * @param wasmUrl - Path or URL to the dotlottie-player WASM file.\n *                  Relative URLs will be resolved to absolute URLs automatically.\n *\n * @example\n * export const appConfig: ApplicationConfig = {\n *   providers: [\n *     provideDotLottie(\n *       { player: () => import('@lottiefiles/dotlottie-web').then(m => m.DotLottieWorker) },\n *       withDotLottieWasmUrl(() => 'http://localhost:4200/assets/dotlottie-player.wasm'),\n *     ),\n *   ],\n * };\n */\nexport function withDotLottieWasmUrl(wasmUrl: () => string) {\n  return makeEnvironmentProviders([\n    {\n      provide: DOT_LOTTIE_WASM_URL,\n      useFactory: wasmUrl,\n    },\n  ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["originalBooleanAttribute","ɵisPromise"],"mappings":";;;;;;AAIA;;;;;AAKG;AACI,MAAM,sBAAsB,GAAqCA,gBAAwB;;AC0BzF,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAClD,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,GAAG,oBAAoB,GAAG,EAAE,CAC1E;AAED;;;AAGG;AACI,MAAM,mBAAmB,GAAG,IAAI,cAAc,CACnD,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,GAAG,qBAAqB,GAAG,EAAE,CAC3E;;MCDqB,wBAAwB,CAAA;AAC5C;;AAEG;aACY,IAAA,CAAA,iBAAiB,GAAG,KAAH,CAAS;AAmGzC,IAAA,WAAA,GAAA;QAjGmB,IAAA,CAAA,QAAQ,GAAG,MAAM,CAA0C,SAAS;qFAAC;QAEvE,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK;qFAAC;AACxB,QAAA,IAAA,CAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAgC,QAAQ,CAAC;AAEpE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAE/B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK;iGAAU;AAC3B,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK;uGAA0B;AACjD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK;mGAAU;QAC7B,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,sBAAsB,EAAA,CAAG;AAC9D,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK;uGAAU;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK;4FAAQ;AACpB,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK;8FAAU;QACxB,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,KAAK,4EAAI,SAAS,EAAE,sBAAsB,EAAA,CAAG;AAC1D,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK;8FAAU;AACxB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK;4FAAQ;AACpB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK;oGAAgB;AACpC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK;+FAAoB;AACnC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK;6FAAU;AACvB,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK;2FAAU;AACrB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK;+FAAU;QACzB,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAC,IAAI,6FAAI,SAAS,EAAE,sBAAsB,EAAA,CAAG;AAC1E,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK;sGAAU;AAChC,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK;0GAAsB;AAIzD;;AAEG;QACM,IAAA,CAAA,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;AAEzF;;AAEG;QACM,IAAA,CAAA,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;AAEjF;;AAEG;QACM,IAAA,CAAA,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;AAE3F;;AAEG;QACM,IAAA,CAAA,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC;AAE/F;;AAEG;QACM,IAAA,CAAA,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;AAEnF;;AAEG;QACM,IAAA,CAAA,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;AAEjF;;AAEG;QACM,IAAA,CAAA,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;AAEjF;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;AAEvF;;AAEG;QACM,IAAA,CAAA,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;AAEnF;;AAEG;QACM,IAAA,CAAA,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;AAEnF;;AAEG;QACM,IAAA,CAAA,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;AAErF;;AAEG;QACM,IAAA,CAAA,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;AAEtE,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,OAAO;AACzD,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,UAAU,EAAE,GAAG;YACf,GAAG,IAAI,CAAC,eAAe,EAAE;SAC1B,CAAC;kGAAC;QAEO,IAAA,CAAA,YAAY,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AAGxD,QAAA,IACE,CAAC,OAAO,YAAY,KAAK,WAAW,IAAI,YAAY;AACpD,YAAA,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EACrC;YACA;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE/D,eAAe,CAAC,YAAW;YACzB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AACzD,gBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE;AAC/B,gBAAA,OAAOC,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9D,YAAA,CAAC,CAAC;YAEF,IAAI,OAAO,KAAK,IAAI,IAAI,wBAAwB,CAAC,iBAAiB,KAAK,KAAK,EAAE;AAC5E,gBAAA,wBAAwB,CAAC,iBAAiB,GAAG,IAAI;AACjD,gBAAA,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;YAC/B;;AAGA,YAAA,IAAI,UAAU,CAAC,SAAS,EAAE;gBACxB;YACF;AAEA,YAAA,qBAAqB,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC3E,QAAA,CAAC,CAAC;IACJ;IAEQ,MAAM,CACZ,UAAsB,EACtB,oBAA+D,EAAA;QAE/D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa;QAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YAClD,OAAO,IAAI,oBAAoB,CAAC;gBAC9B,MAAM;gBACN,GAAG,IAAI,CAAC,WAAW,EAAE;AACtB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;;;;AAKpC,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AACjC,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5C,YAAA,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC;AACzC,YAAA,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1E,QAAA,CAAC,CAAC;;;;QAKF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACvF,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAC5B,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAC1D;AACH,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE;YAC1D,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACrF,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC;AAC7E,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;AACjF,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1F,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,OAAO,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACxE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF;AACF,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3E,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YACtB,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AACpF,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjE,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAC5B,QAAQ,CAAC,wBAAwB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,CACxE;AACH,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;;AAG5C,YAAA,IAAI,CAAC,QAAQ;gBAAE;AAEf,YAAA,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,EAAE;AACxD,gBAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;oBACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC;oBAC1D,IAAI,QAAQ,EAAE;wBACZ,QAAQ,CAAC,iBAAiB,EAAE;oBAC9B;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAClE;AACF,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAC5B,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,CAClE;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,UAAU,CAAC,SAAS,CAAC,MAAK;;;;AAIxB,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;gBACjC,QAAQ,CAAC,OAAO,EAAE;AACpB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,WAAW,GAAA;AACjB,QAAA,OAAO,SAAS,CAAC,OAAO;AACtB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;AACvC,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AACjC,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE;AACpD,SAAA,CAAC,CAAC;IACL;AAEQ,IAAA,8BAA8B,CAAsB,IAAO,EAAA;AACjE,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CACrC,SAAS,CAAC,QAAQ,IAAG;YACnB,IAAI,QAAQ,KAAK,SAAS;AAAE,gBAAA,OAAO,KAAK;AAExC,YAAA,OAAO,IAAI,UAAU,CAAiB,UAAU,IAAG;AACjD,gBAAA,MAAM,OAAO,GAAG,CAAC,KAAqB,KAAI;AACxC,oBAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,gBAAA,CAAC;AAED,gBAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AACjC,oBAAA,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAc,CAAC;AACjD,gBAAA,CAAC,CAAC;AAEF,gBAAA,OAAO,MAAK;AACV,oBAAA,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAc,CAAC;AACpD,gBAAA,CAAC;AACH,YAAA,CAAC,CAAC;QACJ,CAAC,CAAC,CACH;IACH;iIAjSoB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,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,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,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,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,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAD7C;8FAU6E,QAAQ,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,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,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,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,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,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,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,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,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,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,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,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,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,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,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,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,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,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AClDtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCG;AAWG,MAAO,kBAAmB,SAAQ,wBAAwB,CAAA;AAVhE,IAAA,WAAA,GAAA;;QAWoB,IAAA,CAAA,gBAAgB,GAAG,MAAM,EAAkD;AAC9F,IAAA;iIAFY,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARnB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAIU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;;;AC7CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCG;AAWG,MAAO,wBAAyB,SAAQ,wBAAwB,CAAA;AAVtE,IAAA,WAAA,GAAA;;QAWoB,IAAA,CAAA,gBAAgB,GAChC,MAAM,EAAwD;AACjE,IAAA;iIAHY,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARzB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAIU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAVpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;;;AC9CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;SACa,gBAAgB,CAAC,OAAyB,EAAE,GAAG,QAAgC,EAAA;AAC7F,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,QAAQ,EAAE,OAAO;AAClB,SAAA;QACD,QAAQ;AACT,KAAA,CAAC;AACJ;AAEA;;;;;;;;;;;;;;;;;AAiBG;AACG,SAAU,oBAAoB,CAAC,OAAqB,EAAA;AACxD,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,mBAAmB;AAC5B,YAAA,UAAU,EAAE,OAAO;AACpB,SAAA;AACF,KAAA,CAAC;AACJ;;ACtEA;;AAEG;;;;"}