{"version":3,"file":"ngx-ui-loader.mjs","sources":["../../../projects/ngx-ui-loader/src/lib/utils/enums.ts","../../../projects/ngx-ui-loader/src/lib/utils/constants.ts","../../../projects/ngx-ui-loader/src/lib/core/ngx-ui-loader-config.token.ts","../../../projects/ngx-ui-loader/src/lib/core/ngx-ui-loader.service.ts","../../../projects/ngx-ui-loader/src/lib/core/ngx-ui-loader.component.ts","../../../projects/ngx-ui-loader/src/lib/core/ngx-ui-loader.component.html","../../../projects/ngx-ui-loader/src/lib/core/ngx-ui-loader-blurred.directive.ts","../../../projects/ngx-ui-loader/src/lib/core/ngx-ui-loader.module.ts","../../../projects/ngx-ui-loader/src/lib/router/ngx-ui-loader-router-config.token.ts","../../../projects/ngx-ui-loader/src/lib/utils/functions.ts","../../../projects/ngx-ui-loader/src/lib/router/ngx-ui-loader-router.module.ts","../../../projects/ngx-ui-loader/src/lib/http/ngx-ui-loader-http-config.token.ts","../../../projects/ngx-ui-loader/src/lib/http/ngx-ui-loader-http.interceptor.ts","../../../projects/ngx-ui-loader/src/lib/http/ngx-ui-loader-http.module.ts","../../../projects/ngx-ui-loader/src/public-api.ts","../../../projects/ngx-ui-loader/src/ngx-ui-loader.ts"],"sourcesContent":["/**\n * Available spinner types\n */\nexport enum SPINNER {\n  ballScaleMultiple = 'ball-scale-multiple',\n  ballSpin = 'ball-spin',\n  ballSpinClockwise = 'ball-spin-clockwise',\n  ballSpinClockwiseFadeRotating = 'ball-spin-clockwise-fade-rotating',\n  ballSpinFadeRotating = 'ball-spin-fade-rotating',\n  chasingDots = 'chasing-dots',\n  circle = 'circle',\n  cubeGrid = 'cube-grid',\n  doubleBounce = 'double-bounce',\n  fadingCircle = 'fading-circle',\n  foldingCube = 'folding-cube',\n  pulse = 'pulse',\n  rectangleBounce = 'rectangle-bounce',\n  rectangleBounceParty = 'rectangle-bounce-party',\n  rectangleBouncePulseOut = 'rectangle-bounce-pulse-out',\n  rectangleBouncePulseOutRapid = 'rectangle-bounce-pulse-out-rapid',\n  rotatingPlane = 'rotating-plane',\n  squareJellyBox = 'square-jelly-box',\n  squareLoader = 'square-loader',\n  threeBounce = 'three-bounce',\n  threeStrings = 'three-strings',\n  wanderingCubes = 'wandering-cubes',\n}\n\n/**\n * Available postions\n */\nexport enum POSITION {\n  bottomCenter = 'bottom-center',\n  bottomLeft = 'bottom-left',\n  bottomRight = 'bottom-right',\n  centerCenter = 'center-center',\n  centerLeft = 'center-left',\n  centerRight = 'center-right',\n  topCenter = 'top-center',\n  topLeft = 'top-left',\n  topRight = 'top-right',\n}\n\n/**\n * Progress bar directions\n */\nexport enum PB_DIRECTION {\n  leftToRight = 'ltr',\n  rightToLeft = 'rtl',\n}\n","import { NgxUiLoaderConfig, Time } from '../utils/interfaces';\nimport { POSITION, PB_DIRECTION, SPINNER } from './enums';\n\n/**\n * The default value of foreground task id\n */\nexport const DEFAULT_FG_TASK_ID = 'fg-default';\n\n/**\n * The default value of background task id\n */\nexport const DEFAULT_BG_TASK_ID = 'bg-default';\n\n/**\n * The default value of loader id\n */\nexport const DEFAULT_MASTER_LOADER_ID = 'master';\n\nexport const DEFAULT_TIME: Time = {};\n\nexport const MIN_DELAY = 0;\n\nexport const MIN_TIME = 0;\n\nexport const CLOSING_TIME = 1001;\n\nexport const FAST_CLOSING_TIME = 601;\n\nexport const BACKGROUND = false;\n\nexport const FOREGROUND = true;\n\nexport const OVERLAY_DISAPPEAR_TIME = 500;\n\nexport const FAST_OVERLAY_DISAPPEAR_TIME = 300;\n\n/**\n * Http loader taskId\n */\nexport const HTTP_LOADER_TASK_ID = '$_http-loader';\n\n/**\n * Router loader taskId\n */\nexport const ROUTER_LOADER_TASK_ID = '$_router_loader';\n\n/**\n * The configuration of spinners\n */\nexport const SPINNER_CONFIG = {\n  'ball-scale-multiple': {\n    divs: 3,\n    class: 'sk-ball-scale-multiple',\n  },\n  'ball-spin': {\n    divs: 8,\n    class: 'sk-ball-spin',\n  },\n  'ball-spin-clockwise': {\n    divs: 8,\n    class: 'sk-ball-spin-clockwise',\n  },\n  'ball-spin-clockwise-fade-rotating': {\n    divs: 8,\n    class: 'sk-ball-spin-clockwise-fade-rotating',\n  },\n  'ball-spin-fade-rotating': {\n    divs: 8,\n    class: 'sk-ball-spin-fade-rotating',\n  },\n  'chasing-dots': {\n    divs: 2,\n    class: 'sk-chasing-dots',\n  },\n  circle: {\n    divs: 12,\n    class: 'sk-circle',\n  },\n  'cube-grid': {\n    divs: 9,\n    class: 'sk-cube-grid',\n  },\n  'double-bounce': {\n    divs: 2,\n    class: 'sk-double-bounce',\n  },\n  'fading-circle': {\n    divs: 12,\n    class: 'sk-fading-circle',\n  },\n  'folding-cube': {\n    divs: 4,\n    class: 'sk-folding-cube',\n  },\n  pulse: {\n    divs: 1,\n    class: 'sk-pulse',\n  },\n  'rectangle-bounce': {\n    divs: 5,\n    class: 'sk-rectangle-bounce',\n  },\n  'rectangle-bounce-party': {\n    divs: 5,\n    class: 'sk-rectangle-bounce-party',\n  },\n  'rectangle-bounce-pulse-out': {\n    divs: 5,\n    class: 'sk-rectangle-bounce-pulse-out',\n  },\n  'rectangle-bounce-pulse-out-rapid': {\n    divs: 5,\n    class: 'sk-rectangle-bounce-pulse-out-rapid',\n  },\n  'rotating-plane': {\n    divs: 1,\n    class: 'sk-rotating-plane',\n  },\n  'square-jelly-box': {\n    divs: 2,\n    class: 'sk-square-jelly-box',\n  },\n  'square-loader': {\n    divs: 1,\n    class: 'sk-square-loader',\n  },\n  'three-bounce': {\n    divs: 3,\n    class: 'sk-three-bounce',\n  },\n  'three-strings': {\n    divs: 3,\n    class: 'sk-three-strings',\n  },\n  'wandering-cubes': {\n    divs: 2,\n    class: 'sk-wandering-cubes',\n  },\n};\n\n/**\n * The default configuration of ngx-ui-loader\n */\nexport const DEFAULT_CONFIG: NgxUiLoaderConfig = {\n  bgsColor: '#00ACC1',\n  bgsOpacity: 0.5,\n  bgsPosition: POSITION.bottomRight,\n  bgsSize: 60,\n  bgsType: SPINNER.ballSpinClockwise,\n  blur: 5,\n  delay: 0,\n  fastFadeOut: false,\n  fgsColor: '#00ACC1',\n  fgsPosition: POSITION.centerCenter,\n  fgsSize: 60,\n  fgsType: SPINNER.ballSpinClockwise,\n  gap: 24,\n  logoPosition: POSITION.centerCenter,\n  logoSize: 120,\n  logoUrl: '',\n  masterLoaderId: DEFAULT_MASTER_LOADER_ID,\n  overlayBorderRadius: '0',\n  overlayColor: 'rgba(40, 40, 40, 0.8)',\n  pbColor: '#00ACC1',\n  pbDirection: PB_DIRECTION.leftToRight,\n  pbThickness: 3,\n  hasProgressBar: true,\n  text: '',\n  textColor: '#FFFFFF',\n  textPosition: POSITION.centerCenter,\n  maxTime: -1,\n  minTime: 300,\n};\n","import { InjectionToken } from '@angular/core';\nimport { NgxUiLoaderConfig } from '../utils/interfaces';\n\n/**\n * Injection token for ngx-ui-loader configuration\n */\nexport const NGX_UI_LOADER_CONFIG_TOKEN = new InjectionToken<NgxUiLoaderConfig>(\n  'ngxUiLoaderCustom.config'\n);\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport {\n  BACKGROUND,\n  CLOSING_TIME,\n  DEFAULT_BG_TASK_ID,\n  DEFAULT_CONFIG,\n  DEFAULT_FG_TASK_ID,\n  DEFAULT_TIME,\n  FAST_CLOSING_TIME,\n  FOREGROUND,\n  MIN_DELAY,\n  MIN_TIME,\n  OVERLAY_DISAPPEAR_TIME,\n  FAST_OVERLAY_DISAPPEAR_TIME,\n} from '../utils/constants';\nimport { NGX_UI_LOADER_CONFIG_TOKEN } from './ngx-ui-loader-config.token';\nimport { NgxUiLoaderConfig } from '../utils/interfaces';\nimport {\n  Loaders,\n  Loader,\n  ShowEvent,\n  Tasks,\n  Task,\n  Time,\n} from '../utils/interfaces';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgxUiLoaderService {\n  /**\n   * For internal use only.\n   *\n   * @docs-private\n   */\n  backgroundClosing$: Observable<ShowEvent>;\n\n  /**\n   * For internal use only.\n   *\n   * @docs-private\n   */\n  foregroundClosing$: Observable<ShowEvent>;\n\n  /**\n   * For internal use only.\n   *\n   * @docs-private\n   */\n  showBackground$: Observable<ShowEvent>;\n\n  /**\n   * For internal use only.\n   *\n   * @docs-private\n   */\n  showForeground$: Observable<ShowEvent>;\n\n  private bgClosing: BehaviorSubject<ShowEvent>;\n  private defaultConfig: NgxUiLoaderConfig;\n  private fgClosing: BehaviorSubject<ShowEvent>;\n  private loaders: Loaders;\n  private showBackground: BehaviorSubject<ShowEvent>;\n  private showForeground: BehaviorSubject<ShowEvent>;\n\n  /**\n   * Constructor\n   */\n  constructor(\n    @Optional()\n    @Inject(NGX_UI_LOADER_CONFIG_TOKEN)\n    private config: NgxUiLoaderConfig\n  ) {\n    this.defaultConfig = { ...DEFAULT_CONFIG };\n    if (this.config) {\n      if (this.config.minTime && this.config.minTime < MIN_TIME) {\n        this.config.minTime = MIN_TIME;\n      }\n      this.defaultConfig = { ...this.defaultConfig, ...this.config };\n    }\n    this.loaders = {};\n    this.showForeground = new BehaviorSubject<ShowEvent>({\n      loaderId: '',\n      isShow: false,\n    });\n    this.showForeground$ = this.showForeground.asObservable();\n    this.showBackground = new BehaviorSubject<ShowEvent>({\n      loaderId: '',\n      isShow: false,\n    });\n    this.showBackground$ = this.showBackground.asObservable();\n    this.fgClosing = new BehaviorSubject<ShowEvent>({\n      loaderId: '',\n      isShow: false,\n    });\n    this.foregroundClosing$ = this.fgClosing.asObservable();\n    this.bgClosing = new BehaviorSubject<ShowEvent>({\n      loaderId: '',\n      isShow: false,\n    });\n    this.backgroundClosing$ = this.bgClosing.asObservable();\n  }\n\n  /**\n   * For internal use only.\n   *\n   * @docs-private\n   */\n  bindLoaderData(loaderId: string): void {\n    const isMaster = loaderId === this.defaultConfig.masterLoaderId;\n    if (this.loaders[loaderId]) {\n      if (this.loaders[loaderId].isBound) {\n        throw new Error(\n          `[ngx-ui-loader] - loaderId \"${loaderId}\" is duplicated.`\n        );\n      }\n      this.loaders[loaderId].isBound = true;\n      this.loaders[loaderId].isMaster = isMaster;\n      // emit showEvent after data loader is bound\n      if (this.hasRunningTask(FOREGROUND, loaderId)) {\n        this.showForeground.next({ loaderId, isShow: true });\n      } else {\n        if (this.hasRunningTask(BACKGROUND, loaderId)) {\n          this.showBackground.next({ loaderId, isShow: true });\n        }\n      }\n    } else {\n      this.createLoaderData(loaderId, isMaster, true);\n    }\n  }\n\n  /**\n   * For internal use only.\n   *\n   * @docs-private\n   */\n  destroyLoaderData(loaderId: string): void {\n    this.stopAllLoader(loaderId);\n    delete this.loaders[loaderId];\n  }\n\n  /**\n   * Get default loader configuration\n   *\n   * @returns default configuration object\n   */\n  getDefaultConfig(): NgxUiLoaderConfig {\n    return { ...this.defaultConfig };\n  }\n\n  /**\n   * Get all the loaders\n   */\n  getLoaders(): Loaders {\n    return JSON.parse(JSON.stringify(this.loaders));\n  }\n\n  /**\n   * Get data of a specified loader. If loaderId is not provided, it will return data of\n   * master loader(if existed). Otherwise null is returned.\n   */\n  getLoader(loaderId?: string): Loader {\n    loaderId = loaderId ? loaderId : this.defaultConfig.masterLoaderId;\n    if (this.loaders[loaderId]) {\n      return JSON.parse(JSON.stringify(this.loaders[loaderId]));\n    }\n    return null;\n  }\n\n  /**\n   * Start the foreground loading of loader having `loaderId` with a specified `taskId`.\n   * The loading is only closed off when all taskIds of that loader are called with stopLoader() method.\n   *\n   * @param loaderId the loader Id\n   * @param taskId the optional task Id of the loading. taskId is set to 'fd-default' by default.\n   */\n  startLoader(\n    loaderId: string,\n    taskId: string = DEFAULT_FG_TASK_ID,\n    time?: Time\n  ): void {\n    if (!this.readyToStart(loaderId, taskId, true, time)) {\n      return;\n    }\n    if (!this.loaders[loaderId].tasks[taskId].isOtherRunning) {\n      // no other foreground task running\n      if (this.hasRunningTask(BACKGROUND, loaderId)) {\n        this.backgroundCloseout(loaderId);\n        this.showBackground.next({ loaderId, isShow: false });\n      }\n      this.showForeground.next({ loaderId, isShow: true });\n    }\n  }\n\n  /**\n   * Start the foreground loading of master loader with a specified `taskId`.\n   * The loading is only closed off when all taskIds of that loader are called with stop() method.\n   * NOTE: Really this function just wraps startLoader() function\n   *\n   * @param taskId the optional task Id of the loading. taskId is set to 'fd-default' by default.\n   */\n  start(taskId: string = DEFAULT_FG_TASK_ID, time?: Time): void {\n    this.startLoader(this.defaultConfig.masterLoaderId, taskId, time);\n  }\n\n  /**\n   * Start the background loading of loader having `loaderId` with a specified `taskId`.\n   * The loading is only closed off when all taskIds of that loader are called with stopLoaderBackground() method.\n   *\n   * @param loaderId the loader Id\n   * @param taskId the optional task Id of the loading. taskId is set to 'bg-default' by default.\n   */\n  startBackgroundLoader(\n    loaderId: string,\n    taskId: string = DEFAULT_BG_TASK_ID,\n    time?: Time\n  ): void {\n    if (!this.readyToStart(loaderId, taskId, false, time)) {\n      return;\n    }\n    if (\n      !this.hasRunningTask(FOREGROUND, loaderId) &&\n      !this.loaders[loaderId].tasks[taskId].isOtherRunning\n    ) {\n      this.showBackground.next({ loaderId, isShow: true });\n    }\n  }\n\n  /**\n   * Start the background loading of master loader with a specified `taskId`.\n   * The loading is only closed off when all taskIds of that loader are called with stopBackground() method.\n   * NOTE: Really this function just wraps startBackgroundLoader() function\n   *\n   * @param taskId the optional task Id of the loading. taskId is set to 'bg-default' by default.\n   */\n  startBackground(taskId: string = DEFAULT_BG_TASK_ID, time?: Time): void {\n    this.startBackgroundLoader(this.defaultConfig.masterLoaderId, taskId, time);\n  }\n\n  /**\n   * Stop a foreground loading of loader having `loaderId` with specific `taskId`\n   *\n   * @param loaderId the loader Id\n   * @param taskId the optional task Id to stop. If not provided, 'fg-default' is used.\n   * @returns Object\n   */\n  stopLoader(loaderId: string, taskId: string = DEFAULT_FG_TASK_ID): void {\n    if (!this.readyToStop(loaderId, taskId)) {\n      return;\n    }\n    if (!this.hasRunningTask(FOREGROUND, loaderId)) {\n      this.foregroundCloseout(loaderId);\n      this.showForeground.next({ loaderId, isShow: false });\n      if (this.hasRunningTask(BACKGROUND, loaderId)) {\n        setTimeout(\n          () => {\n            if (this.hasRunningTask(BACKGROUND, loaderId)) {\n              // still have background tasks\n              this.showBackground.next({ loaderId, isShow: true });\n            }\n          },\n          this.defaultConfig.fastFadeOut\n            ? FAST_OVERLAY_DISAPPEAR_TIME\n            : OVERLAY_DISAPPEAR_TIME\n        );\n      }\n    }\n  }\n\n  /**\n   * Stop a foreground loading of master loader with specific `taskId`\n   *\n   * @param taskId the optional task Id to stop. If not provided, 'fg-default' is used.\n   * @returns Object\n   */\n  stop(taskId: string = DEFAULT_FG_TASK_ID): void {\n    this.stopLoader(this.defaultConfig.masterLoaderId, taskId);\n  }\n\n  /**\n   * Stop a background loading of loader having `loaderId` with specific `taskId`\n   *\n   * @param loaderId the loader Id\n   * @param taskId the optional task Id to stop. If not provided, 'bg-default' is used.\n   * @returns Object\n   */\n  stopBackgroundLoader(\n    loaderId: string,\n    taskId: string = DEFAULT_BG_TASK_ID\n  ): void {\n    if (!this.readyToStop(loaderId, taskId)) {\n      return;\n    }\n    if (\n      !this.hasRunningTask(FOREGROUND, loaderId) &&\n      !this.hasRunningTask(BACKGROUND, loaderId)\n    ) {\n      this.backgroundCloseout(loaderId);\n      this.showBackground.next({ loaderId, isShow: false });\n    }\n  }\n\n  /**\n   * Stop a background loading of master loader with specific taskId\n   *\n   * @param taskId the optional task Id to stop. If not provided, 'bg-default' is used.\n   * @returns Object\n   */\n  stopBackground(taskId: string = DEFAULT_BG_TASK_ID): void {\n    this.stopBackgroundLoader(this.defaultConfig.masterLoaderId, taskId);\n  }\n\n  /**\n   * Stop all the background and foreground loadings of loader having `loaderId`\n   *\n   * @param loaderId the loader Id\n   */\n  stopAllLoader(loaderId: string): void {\n    if (!this.loaders[loaderId]) {\n      console.warn(`[ngx-ui-loader] - loaderId \"${loaderId}\" does not exist.`);\n      return;\n    }\n    if (this.hasRunningTask(FOREGROUND, loaderId)) {\n      this.foregroundCloseout(loaderId);\n      this.showForeground.next({ loaderId, isShow: false });\n    } else if (this.hasRunningTask(BACKGROUND, loaderId)) {\n      this.backgroundCloseout(loaderId);\n      this.showBackground.next({ loaderId, isShow: false });\n    }\n    this.clearAllTimers(this.loaders[loaderId].tasks);\n    this.loaders[loaderId].tasks = {};\n  }\n\n  /**\n   * Stop all the background and foreground loadings of master loader\n   */\n  stopAll(): void {\n    this.stopAllLoader(this.defaultConfig.masterLoaderId);\n  }\n\n  /**\n   * Check whether the specified loader has a running task with the given `taskId`.\n   * If no `taskId` specified, it will check whether the loader has any running tasks.\n   * For internal use only.\n   *\n   * @docs-private\n   * @param isForeground foreground task or background task\n   * @param loaderId the loader Id\n   * @param taskId the optional task Id\n   * @returns boolean\n   */\n  hasRunningTask(\n    isForeground: boolean,\n    loaderId: string,\n    taskId?: string\n  ): boolean {\n    if (this.loaders[loaderId]) {\n      const tasks: Tasks = this.loaders[loaderId].tasks;\n      if (taskId) {\n        return tasks[taskId] ? (tasks[taskId].startAt ? true : false) : false;\n      }\n      return Object.keys(tasks).some(\n        (id) => !!tasks[id].startAt && tasks[id].isForeground === isForeground\n      );\n    }\n    return false;\n  }\n\n  /**\n   * Create loader data if it does not exist\n   *\n   * @docs-private\n   */\n  private createLoaderData(\n    loaderId: string,\n    isMaster: boolean,\n    isBound: boolean\n  ): void {\n    if (!this.loaders[loaderId]) {\n      this.loaders[loaderId] = {\n        loaderId,\n        tasks: {},\n        isMaster,\n        isBound,\n      };\n    }\n  }\n\n  /**\n   * Manage to close foreground loading\n   *\n   * @docs-private\n   * @param loaderId the loader id\n   */\n  private foregroundCloseout(loaderId: string): void {\n    this.fgClosing.next({ loaderId, isShow: true });\n    setTimeout(\n      () => {\n        this.fgClosing.next({ loaderId, isShow: false });\n      },\n      this.defaultConfig.fastFadeOut ? FAST_CLOSING_TIME : CLOSING_TIME\n    );\n  }\n\n  /**\n   * Manage to close background loading\n   *\n   * @docs-private\n   * @param loaderId the loader id\n   */\n  private backgroundCloseout(loaderId: string): void {\n    this.bgClosing.next({ loaderId, isShow: true });\n    setTimeout(\n      () => {\n        this.bgClosing.next({ loaderId, isShow: false });\n      },\n      this.defaultConfig.fastFadeOut ? FAST_CLOSING_TIME : CLOSING_TIME\n    );\n  }\n\n  /**\n   * Clear all timers of the given task\n   *\n   * @docs-private\n   */\n  private clearTimers(task: Task): void {\n    clearTimeout(task.delayTimer);\n    clearTimeout(task.maxTimer);\n    clearTimeout(task.minTimer);\n  }\n\n  /**\n   * Clear all timers of the given tasks\n   *\n   * @docs-private\n   */\n  private clearAllTimers(tasks: Tasks): void {\n    Object.keys(tasks).map((id) => {\n      this.clearTimers(tasks[id]);\n    });\n  }\n\n  /**\n   * @docs-private\n   */\n  private readyToStart(\n    loaderId: string,\n    taskId: string,\n    isForeground: boolean,\n    time: Time = DEFAULT_TIME\n  ): boolean {\n    this.createLoaderData(loaderId, undefined, false);\n    const isOtherRunning = this.hasRunningTask(isForeground, loaderId);\n    if (!this.loaders[loaderId].tasks[taskId]) {\n      this.loaders[loaderId].tasks[taskId] = {\n        taskId,\n        isForeground,\n        minTime:\n          time.minTime >= MIN_TIME ? time.minTime : this.defaultConfig.minTime,\n        maxTime: time.maxTime ? time.maxTime : this.defaultConfig.maxTime,\n        delay: time.delay >= MIN_DELAY ? time.delay : this.defaultConfig.delay,\n      };\n    } else {\n      if (this.loaders[loaderId].tasks[taskId].isForeground !== isForeground) {\n        throw new Error(`[ngx-ui-loader] - taskId \"${taskId}\" is duplicated.`);\n      }\n    }\n    if (this.setDelayTimer(this.loaders[loaderId].tasks[taskId], loaderId)) {\n      return false;\n    }\n    this.loaders[loaderId].tasks[taskId] = {\n      ...this.loaders[loaderId].tasks[taskId],\n      isOtherRunning,\n      startAt: Date.now(),\n    };\n    this.setMaxTimer(this.loaders[loaderId].tasks[taskId], loaderId);\n    if (!this.loaders[loaderId].isBound) {\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * @docs-private\n   */\n  private readyToStop(loaderId: string, taskId: string): boolean {\n    if (!this.loaders[loaderId]) {\n      console.warn(`[ngx-ui-loader] - loaderId \"${loaderId}\" does not exist.`);\n      return false;\n    }\n    const task: Task = this.loaders[loaderId].tasks[taskId];\n    if (!task) {\n      return false;\n    }\n    if (task.isDelayed) {\n      this.clearTimers(task);\n      delete this.loaders[loaderId].tasks[taskId];\n      return false;\n    }\n    if (this.setMinTimer(task, loaderId)) {\n      return false;\n    }\n    this.clearTimers(task);\n    delete this.loaders[loaderId].tasks[taskId];\n    return true;\n  }\n\n  /**\n   * Set delay timer, if `delay` > 0\n   *\n   * @docs-private\n   * @returns boolean\n   */\n  private setDelayTimer(task: Task, loaderId: string): boolean {\n    if (task.delay > MIN_DELAY) {\n      if (task.isDelayed) {\n        return true;\n      }\n      if (!task.delayTimer) {\n        task.isDelayed = true;\n        task.delayTimer = setTimeout(() => {\n          task.isDelayed = false;\n          if (task.isForeground) {\n            this.startLoader(loaderId, task.taskId);\n          } else {\n            this.startBackgroundLoader(loaderId, task.taskId);\n          }\n        }, task.delay);\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Set maxTimer if `maxTime` > `minTime`\n   *\n   * @docs-private\n   * @returns boolean\n   */\n  private setMaxTimer(task: Task, loaderId: string): void {\n    if (task.maxTime > task.minTime) {\n      // restart the task, reset maxTimer\n      clearTimeout(task.maxTimer);\n      task.maxTimer = setTimeout(() => {\n        if (task.isForeground) {\n          this.stopLoader(loaderId, task.taskId);\n        } else {\n          this.stopBackgroundLoader(loaderId, task.taskId);\n        }\n      }, task.maxTime);\n    }\n  }\n\n  /**\n   * Set minTimer if `startAt` + `minTime` > `Date.now()`\n   *\n   * @docs-private\n   * @returns boolean\n   */\n  private setMinTimer(task: Task, loaderId: string): boolean {\n    const now = Date.now();\n    if (task.startAt) {\n      if (task.startAt + task.minTime > now) {\n        task.minTimer = setTimeout(() => {\n          if (task.isForeground) {\n            this.stopLoader(loaderId, task.taskId);\n          } else {\n            this.stopBackgroundLoader(loaderId, task.taskId);\n          }\n        }, task.startAt + task.minTime - now);\n        return true;\n      }\n    }\n    return false;\n  }\n}\n","/* eslint-disable @angular-eslint/component-selector */\n/* eslint-disable @angular-eslint/prefer-standalone */\nimport {\n  Component,\n  Input,\n  OnInit,\n  OnChanges,\n  SimpleChanges,\n  SimpleChange,\n  OnDestroy,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  TemplateRef,\n} from '@angular/core';\nimport {\n  DomSanitizer,\n  SafeResourceUrl,\n  SafeStyle,\n} from '@angular/platform-browser';\nimport { NgxUiLoaderService } from './ngx-ui-loader.service';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { NgxUiLoaderConfig } from '../utils/interfaces';\nimport { DirectionType, PositionType, SpinnerType } from '../utils/types';\nimport { POSITION } from '../utils/enums';\nimport { SPINNER_CONFIG } from '../utils/constants';\nimport { ShowEvent } from '../utils/interfaces';\n\n@Component({\n  selector: 'ngx-ui-loader',\n  templateUrl: './ngx-ui-loader.component.html',\n  styleUrls: ['./ngx-ui-loader.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class NgxUiLoaderComponent implements OnChanges, OnDestroy, OnInit {\n  @Input() bgsColor: string;\n  @Input() bgsOpacity: number;\n  @Input() bgsPosition: PositionType;\n  @Input() bgsSize: number;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  @Input() bgsTemplate: TemplateRef<any>;\n  @Input() bgsType: SpinnerType;\n  @Input() fgsColor: string;\n  @Input() fgsPosition: PositionType;\n  @Input() fgsSize: number;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  @Input() fgsTemplate: TemplateRef<any>;\n  @Input() fgsType: SpinnerType;\n  @Input() gap: number;\n  @Input() loaderId: string;\n  @Input() logoPosition: PositionType;\n  @Input() logoSize: number;\n  @Input() logoUrl: string;\n  @Input() overlayBorderRadius: string;\n  @Input() overlayColor: string;\n  @Input() pbColor: string;\n  @Input() pbDirection: DirectionType;\n  @Input() pbThickness: number;\n  @Input() hasProgressBar: boolean;\n  @Input() text: string;\n  @Input() textColor: string;\n  @Input() textPosition: PositionType;\n\n  fastFadeOut: boolean;\n  fgDivs: number[];\n  fgSpinnerClass: string;\n  bgDivs: number[];\n  bgSpinnerClass: string;\n  showForeground: boolean;\n  showBackground: boolean;\n  foregroundClosing: boolean;\n  backgroundClosing: boolean;\n\n  trustedLogoUrl: SafeResourceUrl;\n  logoTop: SafeStyle;\n  spinnerTop: SafeStyle;\n  textTop: SafeStyle;\n\n  showForegroundWatcher: Subscription;\n  showBackgroundWatcher: Subscription;\n  foregroundClosingWatcher: Subscription;\n  backgroundClosingWatcher: Subscription;\n\n  defaultConfig: NgxUiLoaderConfig;\n  initialized: boolean;\n\n  /**\n   * Constructor\n   */\n  constructor(\n    private domSanitizer: DomSanitizer,\n    private changeDetectorRef: ChangeDetectorRef,\n    private ngxService: NgxUiLoaderService,\n  ) {\n    this.initialized = false;\n    this.defaultConfig = this.ngxService.getDefaultConfig();\n\n    this.bgsColor = this.defaultConfig.bgsColor;\n    this.bgsOpacity = this.defaultConfig.bgsOpacity;\n    this.bgsPosition = this.defaultConfig.bgsPosition;\n    this.bgsSize = this.defaultConfig.bgsSize;\n    this.bgsType = this.defaultConfig.bgsType;\n    this.fastFadeOut = this.defaultConfig.fastFadeOut;\n    this.fgsColor = this.defaultConfig.fgsColor;\n    this.fgsPosition = this.defaultConfig.fgsPosition;\n    this.fgsSize = this.defaultConfig.fgsSize;\n    this.fgsType = this.defaultConfig.fgsType;\n    this.gap = this.defaultConfig.gap;\n    this.loaderId = this.defaultConfig.masterLoaderId;\n    this.logoPosition = this.defaultConfig.logoPosition;\n    this.logoSize = this.defaultConfig.logoSize;\n    this.logoUrl = this.defaultConfig.logoUrl;\n    this.overlayBorderRadius = this.defaultConfig.overlayBorderRadius;\n    this.overlayColor = this.defaultConfig.overlayColor;\n    this.pbColor = this.defaultConfig.pbColor;\n    this.pbDirection = this.defaultConfig.pbDirection;\n    this.pbThickness = this.defaultConfig.pbThickness;\n    this.hasProgressBar = this.defaultConfig.hasProgressBar;\n    this.text = this.defaultConfig.text;\n    this.textColor = this.defaultConfig.textColor;\n    this.textPosition = this.defaultConfig.textPosition;\n  }\n\n  /**\n   * On init event\n   */\n  ngOnInit() {\n    this.initializeSpinners();\n    this.ngxService.bindLoaderData(this.loaderId);\n    this.determinePositions();\n\n    this.trustedLogoUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(\n      this.logoUrl,\n    );\n\n    this.showForegroundWatcher = this.ngxService.showForeground$\n      .pipe(\n        filter((showEvent: ShowEvent) => this.loaderId === showEvent.loaderId),\n      )\n      .subscribe((data) => {\n        this.showForeground = data.isShow;\n        this.changeDetectorRef.markForCheck();\n      });\n\n    this.showBackgroundWatcher = this.ngxService.showBackground$\n      .pipe(\n        filter((showEvent: ShowEvent) => this.loaderId === showEvent.loaderId),\n      )\n      .subscribe((data) => {\n        this.showBackground = data.isShow;\n        this.changeDetectorRef.markForCheck();\n      });\n\n    this.foregroundClosingWatcher = this.ngxService.foregroundClosing$\n      .pipe(\n        filter((showEvent: ShowEvent) => this.loaderId === showEvent.loaderId),\n      )\n      .subscribe((data) => {\n        this.foregroundClosing = data.isShow;\n        this.changeDetectorRef.markForCheck();\n      });\n\n    this.backgroundClosingWatcher = this.ngxService.backgroundClosing$\n      .pipe(\n        filter((showEvent: ShowEvent) => this.loaderId === showEvent.loaderId),\n      )\n      .subscribe((data) => {\n        this.backgroundClosing = data.isShow;\n        this.changeDetectorRef.markForCheck();\n      });\n    this.initialized = true;\n  }\n\n  /**\n   * On changes event\n   */\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this.initialized) {\n      return;\n    }\n\n    const bgsTypeChange: SimpleChange = changes['bgsType'];\n    const fgsTypeChange: SimpleChange = changes['fgsType'];\n    const logoUrlChange: SimpleChange = changes['logoUrl'];\n\n    if (fgsTypeChange || bgsTypeChange) {\n      this.initializeSpinners();\n    }\n\n    this.determinePositions();\n\n    if (logoUrlChange) {\n      this.trustedLogoUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(\n        this.logoUrl,\n      );\n    }\n  }\n\n  /**\n   * On destroy event\n   */\n  ngOnDestroy() {\n    this.ngxService.destroyLoaderData(this.loaderId);\n    if (this.showForegroundWatcher) {\n      this.showForegroundWatcher.unsubscribe();\n    }\n    if (this.showBackgroundWatcher) {\n      this.showBackgroundWatcher.unsubscribe();\n    }\n    if (this.foregroundClosingWatcher) {\n      this.foregroundClosingWatcher.unsubscribe();\n    }\n    if (this.backgroundClosingWatcher) {\n      this.backgroundClosingWatcher.unsubscribe();\n    }\n  }\n\n  /**\n   * Initialize spinners\n   */\n  private initializeSpinners(): void {\n    this.fgDivs = Array(SPINNER_CONFIG[this.fgsType].divs).fill(1);\n    this.fgSpinnerClass = SPINNER_CONFIG[this.fgsType].class;\n    this.bgDivs = Array(SPINNER_CONFIG[this.bgsType].divs).fill(1);\n    this.bgSpinnerClass = SPINNER_CONFIG[this.bgsType].class;\n  }\n\n  /**\n   * Determine the positions of spinner, logo and text\n   */\n  private determinePositions(): void {\n    this.logoTop = 'initial';\n    this.spinnerTop = 'initial';\n    this.textTop = 'initial';\n    const textSize = 24;\n\n    if (this.logoPosition.startsWith('center')) {\n      this.logoTop = '50%';\n    } else if (this.logoPosition.startsWith('top')) {\n      this.logoTop = '30px';\n    }\n\n    if (this.fgsPosition.startsWith('center')) {\n      this.spinnerTop = '50%';\n    } else if (this.fgsPosition.startsWith('top')) {\n      this.spinnerTop = '30px';\n    }\n\n    if (this.textPosition.startsWith('center')) {\n      this.textTop = '50%';\n    } else if (this.textPosition.startsWith('top')) {\n      this.textTop = '30px';\n    }\n\n    if (this.fgsPosition === POSITION.centerCenter) {\n      if (this.logoUrl && this.logoPosition === POSITION.centerCenter) {\n        if (this.text && this.textPosition === POSITION.centerCenter) {\n          // logo, spinner and text\n          this.logoTop = this.domSanitizer.bypassSecurityTrustStyle(\n            `calc(50% - ${this.fgsSize / 2}px - ${textSize / 2}px - ${\n              this.gap\n            }px)`,\n          );\n          this.spinnerTop = this.domSanitizer.bypassSecurityTrustStyle(\n            `calc(50% + ${this.logoSize / 2}px - ${textSize / 2}px)`,\n          );\n          this.textTop = this.domSanitizer.bypassSecurityTrustStyle(\n            `calc(50% + ${this.logoSize / 2}px + ${this.gap}px + ${\n              this.fgsSize / 2\n            }px)`,\n          );\n        } else {\n          // logo and spinner\n          this.logoTop = this.domSanitizer.bypassSecurityTrustStyle(\n            `calc(50% - ${this.fgsSize / 2}px - ${this.gap / 2}px)`,\n          );\n          this.spinnerTop = this.domSanitizer.bypassSecurityTrustStyle(\n            `calc(50% + ${this.logoSize / 2}px + ${this.gap / 2}px)`,\n          );\n        }\n      } else {\n        if (this.text && this.textPosition === POSITION.centerCenter) {\n          // spinner and text\n          this.spinnerTop = this.domSanitizer.bypassSecurityTrustStyle(\n            `calc(50% - ${textSize / 2}px - ${this.gap / 2}px)`,\n          );\n          this.textTop = this.domSanitizer.bypassSecurityTrustStyle(\n            `calc(50% + ${this.fgsSize / 2}px + ${this.gap / 2}px)`,\n          );\n        }\n      }\n    } else {\n      if (\n        this.logoUrl &&\n        this.logoPosition === POSITION.centerCenter &&\n        this.text &&\n        this.textPosition === POSITION.centerCenter\n      ) {\n        // logo and text\n        this.logoTop = this.domSanitizer.bypassSecurityTrustStyle(\n          `calc(50% - ${textSize / 2}px - ${this.gap / 2}px)`,\n        );\n        this.textTop = this.domSanitizer.bypassSecurityTrustStyle(\n          `calc(50% + ${this.logoSize / 2}px + ${this.gap / 2}px)`,\n        );\n      }\n    }\n  }\n}\n","<!-- Progress bar {{{ -->\n<div\n  *ngIf=\"hasProgressBar\"\n  class=\"ngx-progress-bar\"\n  [class.ngx-position-absolute]=\"loaderId !== defaultConfig.masterLoaderId\"\n  [ngClass]=\"'ngx-progress-bar-' + pbDirection\"\n  [style.height.px]=\"pbThickness\"\n  [style.color]=\"pbColor\"\n  [class.loading-foreground]=\"showForeground\"\n  [class.foreground-closing]=\"foregroundClosing\"\n  [class.fast-closing]=\"foregroundClosing && fastFadeOut\"\n></div>\n<!-- Progress bar }}} -->\n\n<!-- Foreground container {{{ -->\n<div\n  class=\"ngx-overlay\"\n  [class.ngx-position-absolute]=\"loaderId !== defaultConfig.masterLoaderId\"\n  [style.background-color]=\"overlayColor\"\n  [style.border-radius]=\"overlayBorderRadius\"\n  [class.loading-foreground]=\"showForeground\"\n  [class.foreground-closing]=\"foregroundClosing\"\n  [class.fast-closing]=\"foregroundClosing && fastFadeOut\"\n>\n  <!-- Logo {{{ -->\n  <img\n    *ngIf=\"logoUrl\"\n    class=\"ngx-loading-logo\"\n    [ngClass]=\"logoPosition\"\n    [src]=\"trustedLogoUrl\"\n    [style.width.px]=\"logoSize\"\n    [style.height.px]=\"logoSize\"\n    [style.top]=\"logoTop\"\n  />\n  <!-- Logo }}} -->\n\n  <!-- Foreground spinner {{{ -->\n  <div\n    class=\"ngx-foreground-spinner\"\n    [ngClass]=\"fgsPosition\"\n    [style.color]=\"fgsColor\"\n    [style.width.px]=\"fgsSize\"\n    [style.height.px]=\"fgsSize\"\n    [style.top]=\"spinnerTop\"\n  >\n    <div *ngIf=\"!fgsTemplate; else foregroundTemplate\" [class]=\"fgSpinnerClass\">\n      <div *ngFor=\"let div of fgDivs\"></div>\n    </div>\n    <ng-template #foregroundTemplate>\n      <ng-container *ngTemplateOutlet=\"fgsTemplate\"></ng-container>\n    </ng-template>\n  </div>\n  <!-- Foreground spinner }}} -->\n\n  <!-- Loading text {{{ -->\n  <div\n    class=\"ngx-loading-text\"\n    [ngClass]=\"textPosition\"\n    [style.top]=\"textTop\"\n    [style.color]=\"textColor\"\n  >\n    <span>{{ text }}</span>\n  </div>\n  <!-- Loading text }}} -->\n</div>\n<!-- Foreground container }}} -->\n\n<!-- Background spinner {{{ -->\n<div\n  class=\"ngx-background-spinner\"\n  [class.ngx-position-absolute]=\"loaderId !== defaultConfig.masterLoaderId\"\n  [ngClass]=\"bgsPosition\"\n  [class.loading-background]=\"showBackground\"\n  [class.background-closing]=\"backgroundClosing\"\n  [class.fast-closing]=\"backgroundClosing && fastFadeOut\"\n  [style.width.px]=\"bgsSize\"\n  [style.height.px]=\"bgsSize\"\n  [style.color]=\"bgsColor\"\n  [style.opacity]=\"bgsOpacity\"\n>\n  <div *ngIf=\"!bgsTemplate; else backgroundTemplate\" [class]=\"bgSpinnerClass\">\n    <div *ngFor=\"let div of bgDivs\"></div>\n  </div>\n  <ng-template #backgroundTemplate>\n    <ng-container *ngTemplateOutlet=\"bgsTemplate\"></ng-container>\n  </ng-template>\n</div>\n<!-- Background spinner }}} -->\n","/* eslint-disable @angular-eslint/directive-selector */\n/* eslint-disable @angular-eslint/prefer-standalone */\nimport {\n  Directive,\n  ElementRef,\n  Input,\n  OnDestroy,\n  Renderer2,\n  OnInit,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { NgxUiLoaderService } from './ngx-ui-loader.service';\nimport { ShowEvent } from '../utils/interfaces';\nimport {\n  FOREGROUND,\n  OVERLAY_DISAPPEAR_TIME,\n  FAST_OVERLAY_DISAPPEAR_TIME,\n} from '../utils/constants';\n\n@Directive({\n  selector: '[ngxUiLoaderBlurred]',\n  standalone: false,\n})\nexport class NgxUiLoaderBlurredDirective implements OnInit, OnDestroy {\n  @Input() blur: number;\n  @Input() loaderId: string;\n\n  showForegroundWatcher: Subscription;\n  fastFadeOut: boolean;\n\n  constructor(\n    private elementRef: ElementRef,\n    private renderer: Renderer2,\n    private loader: NgxUiLoaderService,\n  ) {\n    this.blur = this.loader.getDefaultConfig().blur;\n    this.loaderId = this.loader.getDefaultConfig().masterLoaderId;\n    this.fastFadeOut = this.loader.getDefaultConfig().fastFadeOut;\n  }\n\n  /**\n   * On Init event\n   */\n  ngOnInit() {\n    this.showForegroundWatcher = this.loader.showForeground$\n      .pipe(\n        filter((showEvent: ShowEvent) => this.loaderId === showEvent.loaderId),\n      )\n      .subscribe((data) => {\n        if (data.isShow) {\n          const filterValue = `blur(${this.blur}px)`;\n          this.renderer.setStyle(\n            this.elementRef.nativeElement,\n            '-webkit-filter',\n            filterValue,\n          );\n          this.renderer.setStyle(\n            this.elementRef.nativeElement,\n            'filter',\n            filterValue,\n          );\n        } else {\n          setTimeout(\n            () => {\n              if (!this.loader.hasRunningTask(FOREGROUND, data.loaderId)) {\n                this.renderer.setStyle(\n                  this.elementRef.nativeElement,\n                  '-webkit-filter',\n                  'none',\n                );\n                this.renderer.setStyle(\n                  this.elementRef.nativeElement,\n                  'filter',\n                  'none',\n                );\n              }\n            },\n            this.fastFadeOut\n              ? FAST_OVERLAY_DISAPPEAR_TIME\n              : OVERLAY_DISAPPEAR_TIME,\n          );\n        }\n      });\n  }\n\n  /**\n   * On destroy event\n   */\n  ngOnDestroy() {\n    if (this.showForegroundWatcher) {\n      this.showForegroundWatcher.unsubscribe();\n    }\n  }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NgxUiLoaderComponent } from './ngx-ui-loader.component';\nimport { NgxUiLoaderBlurredDirective } from './ngx-ui-loader-blurred.directive';\nimport { NGX_UI_LOADER_CONFIG_TOKEN } from './ngx-ui-loader-config.token';\nimport { NgxUiLoaderConfig } from '../utils/interfaces';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [NgxUiLoaderComponent, NgxUiLoaderBlurredDirective],\n  exports: [NgxUiLoaderComponent, NgxUiLoaderBlurredDirective],\n})\nexport class NgxUiLoaderModule {\n  /**\n   * forRoot\n   *\n   * @returns A module with its provider dependencies\n   */\n  static forRoot(\n    ngxUiLoaderConfig: NgxUiLoaderConfig\n  ): ModuleWithProviders<NgxUiLoaderModule> {\n    return {\n      ngModule: NgxUiLoaderModule,\n      providers: [\n        {\n          provide: NGX_UI_LOADER_CONFIG_TOKEN,\n          useValue: ngxUiLoaderConfig,\n        },\n      ],\n    };\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport { NgxUiLoaderRouterConfig } from '../utils/interfaces';\n\n/**\n * Injection token for ngx-ui-loader-router configuration\n */\nexport const NGX_UI_LOADER_ROUTER_CONFIG_TOKEN =\n  new InjectionToken<NgxUiLoaderRouterConfig>('ngxUiLoaderRouterCustom.config');\n","import { Config, Exclude } from './interfaces';\n\nexport function getExcludeObj(config: Config): Exclude {\n  let strs: string[];\n  let regExps: RegExp[];\n\n  if (config) {\n    if (config.exclude) {\n      strs = config.exclude.map((url) => url.toLowerCase());\n    }\n\n    if (config.excludeRegexp) {\n      regExps = config.excludeRegexp.map((regexp) => new RegExp(regexp, 'i'));\n    }\n  }\n\n  return { strs, regExps };\n}\n\nexport function isIgnored(\n  url: string,\n  excludeStrings: string[],\n  excludeRegexps: RegExp[]\n): boolean {\n  if (excludeStrings) {\n    // do not show the loader for urls in the `exclude` list\n    if (\n      excludeStrings.findIndex((str) => url.toLowerCase().startsWith(str)) !==\n      -1\n    ) {\n      return true;\n    }\n  }\n\n  if (excludeRegexps) {\n    // do not show the loader for urls which matches regexps in the `excludeRegexp` list\n    if (excludeRegexps.findIndex((regexp) => regexp.test(url)) !== -1) {\n      return true;\n    }\n  }\n\n  return false;\n}\n","import {\n  NgModule,\n  ModuleWithProviders,\n  Inject,\n  Optional,\n  SkipSelf,\n} from '@angular/core';\nimport {\n  NavigationCancel,\n  NavigationEnd,\n  NavigationError,\n  NavigationStart,\n  Router,\n  Event,\n} from '@angular/router';\n\nimport { NgxUiLoaderService } from '../core/ngx-ui-loader.service';\nimport { NgxUiLoaderRouterConfig } from '../utils/interfaces';\nimport { NGX_UI_LOADER_ROUTER_CONFIG_TOKEN } from './ngx-ui-loader-router-config.token';\nimport { ROUTER_LOADER_TASK_ID } from '../utils/constants';\nimport { getExcludeObj, isIgnored } from '../utils/functions';\nimport { Exclude } from '../utils/interfaces';\n\n@NgModule({})\nexport class NgxUiLoaderRouterModule {\n  private exclude: Exclude;\n\n  /**\n   * Constructor\n   */\n  constructor(\n    @Optional() @SkipSelf() parentModule: NgxUiLoaderRouterModule,\n    @Optional()\n    @Inject(NGX_UI_LOADER_ROUTER_CONFIG_TOKEN)\n    customConfig: NgxUiLoaderRouterConfig,\n    router: Router,\n    loader: NgxUiLoaderService\n  ) {\n    if (parentModule) {\n      throw new Error(\n        '[ngx-ui-loader] - NgxUiLoaderRouterModule is already loaded. It should be imported in the root `AppModule` only!'\n      );\n    }\n\n    let config: NgxUiLoaderRouterConfig = {\n      loaderId: loader.getDefaultConfig().masterLoaderId,\n      showForeground: true,\n    };\n\n    this.exclude = getExcludeObj(customConfig);\n\n    if (customConfig) {\n      config = { ...config, ...customConfig };\n    }\n\n    router.events.subscribe((event: Event) => {\n      if (event instanceof NavigationStart) {\n        if (!isIgnored(event.url, this.exclude.strs, this.exclude.regExps)) {\n          if (config.showForeground) {\n            loader.startLoader(config.loaderId, ROUTER_LOADER_TASK_ID);\n          } else {\n            loader.startBackgroundLoader(\n              config.loaderId,\n              ROUTER_LOADER_TASK_ID\n            );\n          }\n        }\n      }\n\n      if (\n        event instanceof NavigationEnd ||\n        event instanceof NavigationCancel ||\n        event instanceof NavigationError\n      ) {\n        if (!isIgnored(event.url, this.exclude.strs, this.exclude.regExps)) {\n          if (config.showForeground) {\n            loader.stopLoader(config.loaderId, ROUTER_LOADER_TASK_ID);\n          } else {\n            loader.stopBackgroundLoader(config.loaderId, ROUTER_LOADER_TASK_ID);\n          }\n        }\n      }\n    });\n  }\n\n  /**\n   * forRoot\n   *\n   * @returns A module with its provider dependencies\n   */\n  static forRoot(\n    routerConfig: NgxUiLoaderRouterConfig\n  ): ModuleWithProviders<NgxUiLoaderRouterModule> {\n    return {\n      ngModule: NgxUiLoaderRouterModule,\n      providers: [\n        {\n          provide: NGX_UI_LOADER_ROUTER_CONFIG_TOKEN,\n          useValue: routerConfig,\n        },\n      ],\n    };\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport { NgxUiLoaderHttpConfig } from '../utils/interfaces';\n\n/**\n * Injection token for ngx-ui-loader-http configuration\n */\nexport const NGX_UI_LOADER_HTTP_CONFIG_TOKEN =\n  new InjectionToken<NgxUiLoaderHttpConfig>('ngxUiLoaderHttpCustom.config');\n","import { Injectable, Inject, Optional } from '@angular/core';\nimport {\n  HttpInterceptor,\n  HttpEvent,\n  HttpHandler,\n  HttpRequest,\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\nimport { NgxUiLoaderService } from '../core/ngx-ui-loader.service';\nimport { NGX_UI_LOADER_HTTP_CONFIG_TOKEN } from './ngx-ui-loader-http-config.token';\nimport { NgxUiLoaderHttpConfig } from '../utils/interfaces';\nimport { HTTP_LOADER_TASK_ID } from '../utils/constants';\nimport { getExcludeObj, isIgnored } from '../utils/functions';\nimport { Exclude } from '../utils/interfaces';\n\n@Injectable()\nexport class NgxUiLoaderHttpInterceptor implements HttpInterceptor {\n  private count: number;\n  private config: NgxUiLoaderHttpConfig;\n  private exclude: Exclude;\n\n  /**\n   * Constructor\n   */\n  constructor(\n    @Optional()\n    @Inject(NGX_UI_LOADER_HTTP_CONFIG_TOKEN)\n    customConfig: NgxUiLoaderHttpConfig,\n    private loader: NgxUiLoaderService,\n  ) {\n    this.count = 0;\n    this.config = {\n      loaderId: this.loader.getDefaultConfig().masterLoaderId,\n      showForeground: false,\n    };\n\n    this.exclude = getExcludeObj(customConfig);\n\n    if (customConfig) {\n      this.config = { ...this.config, ...customConfig };\n    }\n  }\n\n  intercept(\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    req: HttpRequest<any>,\n    next: HttpHandler,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): Observable<HttpEvent<any>> {\n    if (isIgnored(req.url, this.exclude.strs, this.exclude.regExps)) {\n      return next.handle(req);\n    }\n\n    this.count++;\n    if (this.config.showForeground) {\n      this.loader.startLoader(\n        this.config.loaderId,\n        HTTP_LOADER_TASK_ID,\n        this.config,\n      );\n    } else {\n      this.loader.startBackgroundLoader(\n        this.config.loaderId,\n        HTTP_LOADER_TASK_ID,\n        this.config,\n      );\n    }\n\n    return next.handle(req).pipe(\n      finalize(() => {\n        this.count--;\n        if (this.count === 0) {\n          if (this.config.showForeground) {\n            this.loader.stopLoader(this.config.loaderId, HTTP_LOADER_TASK_ID);\n          } else {\n            this.loader.stopBackgroundLoader(\n              this.config.loaderId,\n              HTTP_LOADER_TASK_ID,\n            );\n          }\n        }\n      }),\n    );\n  }\n}\n","import {\n  NgModule,\n  ModuleWithProviders,\n  Optional,\n  SkipSelf,\n} from '@angular/core';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\n\nimport { NgxUiLoaderHttpInterceptor } from './ngx-ui-loader-http.interceptor';\nimport { NgxUiLoaderHttpConfig } from '../utils/interfaces';\nimport { NGX_UI_LOADER_HTTP_CONFIG_TOKEN } from './ngx-ui-loader-http-config.token';\n\n@NgModule({\n  providers: [\n    {\n      provide: HTTP_INTERCEPTORS,\n      useClass: NgxUiLoaderHttpInterceptor,\n      multi: true,\n    },\n  ],\n})\nexport class NgxUiLoaderHttpModule {\n  /**\n   * Constructor\n   */\n  constructor(@Optional() @SkipSelf() parentModule: NgxUiLoaderHttpModule) {\n    if (parentModule) {\n      throw new Error(\n        '[ngx-ui-loader] - NgxUiLoaderHttpModule is already loaded. It should be imported in the root `AppModule` only!'\n      );\n    }\n  }\n\n  /**\n   * forRoot\n   *\n   * @returns A module with its provider dependencies\n   */\n  static forRoot(\n    httpConfig: NgxUiLoaderHttpConfig\n  ): ModuleWithProviders<NgxUiLoaderHttpModule> {\n    return {\n      ngModule: NgxUiLoaderHttpModule,\n      providers: [\n        {\n          provide: NGX_UI_LOADER_HTTP_CONFIG_TOKEN,\n          useValue: httpConfig,\n        },\n      ],\n    };\n  }\n}\n","/*\n * Public API Surface of ngx-ui-loader\n */\n\nexport { NgxUiLoaderService } from './lib/core/ngx-ui-loader.service';\nexport { NgxUiLoaderModule } from './lib/core/ngx-ui-loader.module';\nexport { NgxUiLoaderComponent } from './lib/core/ngx-ui-loader.component';\nexport { NgxUiLoaderBlurredDirective } from './lib/core/ngx-ui-loader-blurred.directive';\nexport { SPINNER, POSITION, PB_DIRECTION } from './lib/utils/enums';\nexport {\n  Loader,\n  Loaders,\n  NgxUiLoaderConfig,\n  NgxUiLoaderHttpConfig,\n  NgxUiLoaderRouterConfig,\n  Task,\n  Tasks,\n  Time,\n} from './lib/utils/interfaces';\nexport { NgxUiLoaderRouterModule } from './lib/router/ngx-ui-loader-router.module';\nexport { NgxUiLoaderHttpModule } from './lib/http/ngx-ui-loader-http.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.NgxUiLoaderService","i1.NgxUiLoaderService","i1"],"mappings":";;;;;;;;;;;AAAA;;AAEG;IACS;AAAZ,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,mBAAA,CAAA,GAAA,qBAAyC;AACzC,IAAA,OAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACtB,IAAA,OAAA,CAAA,mBAAA,CAAA,GAAA,qBAAyC;AACzC,IAAA,OAAA,CAAA,+BAAA,CAAA,GAAA,mCAAmE;AACnE,IAAA,OAAA,CAAA,sBAAA,CAAA,GAAA,yBAAgD;AAChD,IAAA,OAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,OAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,OAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACtB,IAAA,OAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,OAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,OAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,OAAA,CAAA,iBAAA,CAAA,GAAA,kBAAoC;AACpC,IAAA,OAAA,CAAA,sBAAA,CAAA,GAAA,wBAA+C;AAC/C,IAAA,OAAA,CAAA,yBAAA,CAAA,GAAA,4BAAsD;AACtD,IAAA,OAAA,CAAA,8BAAA,CAAA,GAAA,kCAAiE;AACjE,IAAA,OAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,OAAA,CAAA,gBAAA,CAAA,GAAA,kBAAmC;AACnC,IAAA,OAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,OAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,OAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,OAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC;AACpC,CAAC,EAvBW,OAAO,KAAP,OAAO,GAuBlB,EAAA,CAAA,CAAA;AAED;;AAEG;IACS;AAAZ,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,QAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,UAAoB;AACpB,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACxB,CAAC,EAVW,QAAQ,KAAR,QAAQ,GAUnB,EAAA,CAAA,CAAA;AAED;;AAEG;IACS;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,aAAA,CAAA,GAAA,KAAmB;AACnB,IAAA,YAAA,CAAA,aAAA,CAAA,GAAA,KAAmB;AACrB,CAAC,EAHW,YAAY,KAAZ,YAAY,GAGvB,EAAA,CAAA,CAAA;;AC9CD;;AAEG;AACI,MAAM,kBAAkB,GAAG,YAAY;AAE9C;;AAEG;AACI,MAAM,kBAAkB,GAAG,YAAY;AAE9C;;AAEG;AACI,MAAM,wBAAwB,GAAG,QAAQ;AAEzC,MAAM,YAAY,GAAS,EAAE;AAE7B,MAAM,SAAS,GAAG,CAAC;AAEnB,MAAM,QAAQ,GAAG,CAAC;AAElB,MAAM,YAAY,GAAG,IAAI;AAEzB,MAAM,iBAAiB,GAAG,GAAG;AAE7B,MAAM,UAAU,GAAG,KAAK;AAExB,MAAM,UAAU,GAAG,IAAI;AAEvB,MAAM,sBAAsB,GAAG,GAAG;AAElC,MAAM,2BAA2B,GAAG,GAAG;AAE9C;;AAEG;AACI,MAAM,mBAAmB,GAAG,eAAe;AAElD;;AAEG;AACI,MAAM,qBAAqB,GAAG,iBAAiB;AAEtD;;AAEG;AACI,MAAM,cAAc,GAAG;AAC5B,IAAA,qBAAqB,EAAE;AACrB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,wBAAwB;AAChC,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,cAAc;AACtB,KAAA;AACD,IAAA,qBAAqB,EAAE;AACrB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,wBAAwB;AAChC,KAAA;AACD,IAAA,mCAAmC,EAAE;AACnC,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,sCAAsC;AAC9C,KAAA;AACD,IAAA,yBAAyB,EAAE;AACzB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,4BAA4B;AACpC,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,iBAAiB;AACzB,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,cAAc;AACtB,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,kBAAkB;AAC1B,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,kBAAkB;AAC1B,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,iBAAiB;AACzB,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,UAAU;AAClB,KAAA;AACD,IAAA,kBAAkB,EAAE;AAClB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,qBAAqB;AAC7B,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,2BAA2B;AACnC,KAAA;AACD,IAAA,4BAA4B,EAAE;AAC5B,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,+BAA+B;AACvC,KAAA;AACD,IAAA,kCAAkC,EAAE;AAClC,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,qCAAqC;AAC7C,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,mBAAmB;AAC3B,KAAA;AACD,IAAA,kBAAkB,EAAE;AAClB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,qBAAqB;AAC7B,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,kBAAkB;AAC1B,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,iBAAiB;AACzB,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,kBAAkB;AAC1B,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,oBAAoB;AAC5B,KAAA;CACF;AAED;;AAEG;AACI,MAAM,cAAc,GAAsB;AAC/C,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,QAAQ,CAAC,WAAW;AACjC,IAAA,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,OAAO,CAAC,iBAAiB;AAClC,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,QAAQ,CAAC,YAAY;AAClC,IAAA,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,OAAO,CAAC,iBAAiB;AAClC,IAAA,GAAG,EAAE,EAAE;IACP,YAAY,EAAE,QAAQ,CAAC,YAAY;AACnC,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,cAAc,EAAE,wBAAwB;AACxC,IAAA,mBAAmB,EAAE,GAAG;AACxB,IAAA,YAAY,EAAE,uBAAuB;AACrC,IAAA,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,YAAY,CAAC,WAAW;AACrC,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,cAAc,EAAE,IAAI;AACpB,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,QAAQ,CAAC,YAAY;IACnC,OAAO,EAAE,CAAC,CAAC;AACX,IAAA,OAAO,EAAE,GAAG;CACb;;ACzKD;;AAEG;AACI,MAAM,0BAA0B,GAAG,IAAI,cAAc,CAC1D,0BAA0B,CAC3B;;MCuBY,kBAAkB,CAAA;AAoC7B;;AAEG;AACH,IAAA,WAAA,CAGU,MAAyB,EAAA;QAAzB,IAAM,CAAA,MAAA,GAAN,MAAM;AAEd,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,cAAc,EAAE;AAC1C,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,EAAE;AACzD,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ;;AAEhC,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;;AAEhE,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,eAAe,CAAY;AACnD,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,KAAK;AACd,SAAA,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AACzD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,eAAe,CAAY;AACnD,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,KAAK;AACd,SAAA,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AACzD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAY;AAC9C,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,KAAK;AACd,SAAA,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;AACvD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAY;AAC9C,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,KAAK;AACd,SAAA,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;;AAGzD;;;;AAIG;AACH,IAAA,cAAc,CAAC,QAAgB,EAAA;QAC7B,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC,aAAa,CAAC,cAAc;AAC/D,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;AAClC,gBAAA,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,CAAA,gBAAA,CAAkB,CAC1D;;YAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,IAAI;YACrC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,QAAQ;;YAE1C,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;AAC7C,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;iBAC/C;gBACL,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;AAC7C,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;;;aAGnD;YACL,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC;;;AAInD;;;;AAIG;AACH,IAAA,iBAAiB,CAAC,QAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;;AAG/B;;;;AAIG;IACH,gBAAgB,GAAA;AACd,QAAA,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;;AAGlC;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;AAGjD;;;AAGG;AACH,IAAA,SAAS,CAAC,QAAiB,EAAA;AACzB,QAAA,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AAClE,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;;AAE3D,QAAA,OAAO,IAAI;;AAGb;;;;;;AAMG;AACH,IAAA,WAAW,CACT,QAAgB,EAChB,MAAiB,GAAA,kBAAkB,EACnC,IAAW,EAAA;AAEX,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACpD;;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE;;YAExD,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;AAC7C,gBAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACjC,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;AAEvD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;;AAIxD;;;;;;AAMG;AACH,IAAA,KAAK,CAAC,MAAA,GAAiB,kBAAkB,EAAE,IAAW,EAAA;AACpD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC;;AAGnE;;;;;;AAMG;AACH,IAAA,qBAAqB,CACnB,QAAgB,EAChB,MAAiB,GAAA,kBAAkB,EACnC,IAAW,EAAA;AAEX,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACrD;;QAEF,IACE,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC1C,YAAA,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,EACpD;AACA,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;;AAIxD;;;;;;AAMG;AACH,IAAA,eAAe,CAAC,MAAA,GAAiB,kBAAkB,EAAE,IAAW,EAAA;AAC9D,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC;;AAG7E;;;;;;AAMG;AACH,IAAA,UAAU,CAAC,QAAgB,EAAE,MAAA,GAAiB,kBAAkB,EAAA;QAC9D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YACvC;;QAEF,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;gBAC7C,UAAU,CACR,MAAK;oBACH,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;;AAE7C,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;AAExD,iBAAC,EACD,IAAI,CAAC,aAAa,CAAC;AACjB,sBAAE;sBACA,sBAAsB,CAC3B;;;;AAKP;;;;;AAKG;IACH,IAAI,CAAC,SAAiB,kBAAkB,EAAA;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC;;AAG5D;;;;;;AAMG;AACH,IAAA,oBAAoB,CAClB,QAAgB,EAChB,MAAA,GAAiB,kBAAkB,EAAA;QAEnC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YACvC;;QAEF,IACE,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC;YAC1C,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,EAC1C;AACA,YAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;;AAIzD;;;;;AAKG;IACH,cAAc,CAAC,SAAiB,kBAAkB,EAAA;QAChD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC;;AAGtE;;;;AAIG;AACH,IAAA,aAAa,CAAC,QAAgB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3B,YAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,QAAQ,CAAA,iBAAA,CAAmB,CAAC;YACxE;;QAEF,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;aAChD,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;AAEvD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,EAAE;;AAGnC;;AAEG;IACH,OAAO,GAAA;QACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;;AAGvD;;;;;;;;;;AAUG;AACH,IAAA,cAAc,CACZ,YAAqB,EACrB,QAAgB,EAChB,MAAe,EAAA;AAEf,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC1B,MAAM,KAAK,GAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK;YACjD,IAAI,MAAM,EAAE;gBACV,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,IAAI,GAAG,KAAK,IAAI,KAAK;;AAEvE,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAC5B,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,YAAY,KAAK,YAAY,CACvE;;AAEH,QAAA,OAAO,KAAK;;AAGd;;;;AAIG;AACK,IAAA,gBAAgB,CACtB,QAAgB,EAChB,QAAiB,EACjB,OAAgB,EAAA;QAEhB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBACvB,QAAQ;AACR,gBAAA,KAAK,EAAE,EAAE;gBACT,QAAQ;gBACR,OAAO;aACR;;;AAIL;;;;;AAKG;AACK,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC/C,UAAU,CACR,MAAK;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAClD,SAAC,EACD,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,iBAAiB,GAAG,YAAY,CAClE;;AAGH;;;;;AAKG;AACK,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC/C,UAAU,CACR,MAAK;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAClD,SAAC,EACD,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,iBAAiB,GAAG,YAAY,CAClE;;AAGH;;;;AAIG;AACK,IAAA,WAAW,CAAC,IAAU,EAAA;AAC5B,QAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7B,QAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3B,QAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAG7B;;;;AAIG;AACK,IAAA,cAAc,CAAC,KAAY,EAAA;QACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAI;YAC5B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC7B,SAAC,CAAC;;AAGJ;;AAEG;IACK,YAAY,CAClB,QAAgB,EAChB,MAAc,EACd,YAAqB,EACrB,OAAa,YAAY,EAAA;QAEzB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC;AAClE,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;gBACrC,MAAM;gBACN,YAAY;AACZ,gBAAA,OAAO,EACL,IAAI,CAAC,OAAO,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;AACtE,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;AACjE,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;aACvE;;aACI;AACL,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,YAAY,KAAK,YAAY,EAAE;AACtE,gBAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAA,gBAAA,CAAkB,CAAC;;;AAG1E,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE;AACtE,YAAA,OAAO,KAAK;;QAEd,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;YACrC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;YACvC,cAAc;AACd,YAAA,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;SACpB;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;AACnC,YAAA,OAAO,KAAK;;AAEd,QAAA,OAAO,IAAI;;AAGb;;AAEG;IACK,WAAW,CAAC,QAAgB,EAAE,MAAc,EAAA;QAClD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3B,YAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,QAAQ,CAAA,iBAAA,CAAmB,CAAC;AACxE,YAAA,OAAO,KAAK;;AAEd,QAAA,MAAM,IAAI,GAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,KAAK;;AAEd,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACtB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3C,YAAA,OAAO,KAAK;;QAEd,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;AACpC,YAAA,OAAO,KAAK;;AAEd,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3C,QAAA,OAAO,IAAI;;AAGb;;;;;AAKG;IACK,aAAa,CAAC,IAAU,EAAE,QAAgB,EAAA;AAChD,QAAA,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,OAAO,IAAI;;AAEb,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAK;AAChC,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,oBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;wBACrB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;;yBAClC;wBACL,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;;AAErD,iBAAC,EAAE,IAAI,CAAC,KAAK,CAAC;AACd,gBAAA,OAAO,IAAI;;;AAGf,QAAA,OAAO,KAAK;;AAGd;;;;;AAKG;IACK,WAAW,CAAC,IAAU,EAAE,QAAgB,EAAA;QAC9C,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;;AAE/B,YAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAK;AAC9B,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;oBACrB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;;qBACjC;oBACL,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;;AAEpD,aAAC,EAAE,IAAI,CAAC,OAAO,CAAC;;;AAIpB;;;;;AAKG;IACK,WAAW,CAAC,IAAU,EAAE,QAAgB,EAAA;AAC9C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAK;AAC9B,oBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;wBACrB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;;yBACjC;wBACL,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;;iBAEnD,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACrC,gBAAA,OAAO,IAAI;;;AAGf,QAAA,OAAO,KAAK;;AAjiBH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAyCnB,0BAA0B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAzCzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;4FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAyCI;;0BACA,MAAM;2BAAC,0BAA0B;;;ACxEtC;AACA;MAmCa,oBAAoB,CAAA;AAoD/B;;AAEG;AACH,IAAA,WAAA,CACU,YAA0B,EAC1B,iBAAoC,EACpC,UAA8B,EAAA;QAF9B,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAU,CAAA,UAAA,GAAV,UAAU;AAElB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;QAEvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;QACjD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ;QAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;QACjD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;QACzC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;QACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;QACzC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB;QACjE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;QACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;QACvD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;;AAGrD;;AAEG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,kBAAkB,EAAE;AAEzB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,8BAA8B,CACpE,IAAI,CAAC,OAAO,CACb;AAED,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC;AAC1C,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,SAAoB,KAAK,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC;AAEvE,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM;AACjC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACvC,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC;AAC1C,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,SAAoB,KAAK,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC;AAEvE,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM;AACjC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACvC,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7C,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,SAAoB,KAAK,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC;AAEvE,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM;AACpC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACvC,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7C,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,SAAoB,KAAK,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC;AAEvE,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM;AACpC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACvC,SAAC,CAAC;AACJ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAGzB;;AAEG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB;;AAGF,QAAA,MAAM,aAAa,GAAiB,OAAO,CAAC,SAAS,CAAC;AACtD,QAAA,MAAM,aAAa,GAAiB,OAAO,CAAC,SAAS,CAAC;AACtD,QAAA,MAAM,aAAa,GAAiB,OAAO,CAAC,SAAS,CAAC;AAEtD,QAAA,IAAI,aAAa,IAAI,aAAa,EAAE;YAClC,IAAI,CAAC,kBAAkB,EAAE;;QAG3B,IAAI,CAAC,kBAAkB,EAAE;QAEzB,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,8BAA8B,CACpE,IAAI,CAAC,OAAO,CACb;;;AAIL;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;;AAE1C,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;;AAE1C,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,YAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE;;AAE7C,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,YAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE;;;AAI/C;;AAEG;IACK,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK;AACxD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK;;AAG1D;;AAEG;IACK,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS;QACxB,MAAM,QAAQ,GAAG,EAAE;QAEnB,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;aACf,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM;;QAGvB,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;aAClB,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM;;QAG1B,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;aACf,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM;;QAGvB,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,YAAY,EAAE;AAC9C,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,EAAE;AAC/D,gBAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,EAAE;;oBAE5D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CACvD,CAAA,WAAA,EAAc,IAAI,CAAC,OAAO,GAAG,CAAC,CAAQ,KAAA,EAAA,QAAQ,GAAG,CAAC,CAChD,KAAA,EAAA,IAAI,CAAC,GACP,CAAK,GAAA,CAAA,CACN;oBACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAC1D,CAAA,WAAA,EAAc,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA,KAAA,EAAQ,QAAQ,GAAG,CAAC,CAAK,GAAA,CAAA,CACzD;oBACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CACvD,CAAc,WAAA,EAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAQ,KAAA,EAAA,IAAI,CAAC,GAAG,CAC7C,KAAA,EAAA,IAAI,CAAC,OAAO,GAAG,CACjB,CAAK,GAAA,CAAA,CACN;;qBACI;;oBAEL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CACvD,CAAc,WAAA,EAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAK,GAAA,CAAA,CACxD;oBACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAC1D,CAAc,WAAA,EAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAK,GAAA,CAAA,CACzD;;;iBAEE;AACL,gBAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,EAAE;;oBAE5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAC1D,CAAA,WAAA,EAAc,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAK,GAAA,CAAA,CACpD;oBACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CACvD,CAAc,WAAA,EAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAK,GAAA,CAAA,CACxD;;;;aAGA;YACL,IACE,IAAI,CAAC,OAAO;AACZ,gBAAA,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY;AAC3C,gBAAA,IAAI,CAAC,IAAI;AACT,gBAAA,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,EAC3C;;gBAEA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CACvD,CAAA,WAAA,EAAc,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAK,GAAA,CAAA,CACpD;gBACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CACvD,CAAc,WAAA,EAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAK,GAAA,CAAA,CACzD;;;;+GA9QI,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,utBCpCjC,ovFAwFA,EAAA,MAAA,EAAA,CAAA,ypwBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDpDa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGR,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,ovFAAA,EAAA,MAAA,EAAA,CAAA,ypwBAAA,CAAA,EAAA;+IAGR,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,YAAY,EAAA,CAAA;sBAApB;;;AE/DH;AACA;MAwBa,2BAA2B,CAAA;AAOtC,IAAA,WAAA,CACU,UAAsB,EACtB,QAAmB,EACnB,MAA0B,EAAA;QAF1B,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAM,CAAA,MAAA,GAAN,MAAM;QAEd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,IAAI;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,cAAc;QAC7D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,WAAW;;AAG/D;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC;AACtC,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,SAAoB,KAAK,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC;AAEvE,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,MAAM,WAAW,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAC,IAAI,KAAK;AAC1C,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,gBAAgB,EAChB,WAAW,CACZ;AACD,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,QAAQ,EACR,WAAW,CACZ;;iBACI;gBACL,UAAU,CACR,MAAK;AACH,oBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC1D,wBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,gBAAgB,EAChB,MAAM,CACP;AACD,wBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,QAAQ,EACR,MAAM,CACP;;iBAEJ,EACD,IAAI,CAAC;AACH,sBAAE;sBACA,sBAAsB,CAC3B;;AAEL,SAAC,CAAC;;AAGN;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;;;+GAnEjC,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;qIAEU,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;;;MCdU,iBAAiB,CAAA;AAC5B;;;;AAIG;IACH,OAAO,OAAO,CACZ,iBAAoC,EAAA;QAEpC,OAAO;AACL,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,0BAA0B;AACnC,oBAAA,QAAQ,EAAE,iBAAiB;AAC5B,iBAAA;AACF,aAAA;SACF;;+GAjBQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAjB,iBAAiB,EAAA,YAAA,EAAA,CAHb,oBAAoB,EAAE,2BAA2B,aADtD,YAAY,CAAA,EAAA,OAAA,EAAA,CAEZ,oBAAoB,EAAE,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAEhD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAJlB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAIX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,YAAY,EAAE,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;AACjE,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;AAC7D,iBAAA;;;ACTD;;AAEG;AACI,MAAM,iCAAiC,GAC5C,IAAI,cAAc,CAA0B,gCAAgC,CAAC;;ACLzE,SAAU,aAAa,CAAC,MAAc,EAAA;AAC1C,IAAA,IAAI,IAAc;AAClB,IAAA,IAAI,OAAiB;IAErB,IAAI,MAAM,EAAE;AACV,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,YAAA,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;;AAGvD,QAAA,IAAI,MAAM,CAAC,aAAa,EAAE;YACxB,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;;AAI3E,IAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AAC1B;SAEgB,SAAS,CACvB,GAAW,EACX,cAAwB,EACxB,cAAwB,EAAA;IAExB,IAAI,cAAc,EAAE;;AAElB,QAAA,IACE,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACpE,CAAC,CAAC,EACF;AACA,YAAA,OAAO,IAAI;;;IAIf,IAAI,cAAc,EAAE;;QAElB,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACjE,YAAA,OAAO,IAAI;;;AAIf,IAAA,OAAO,KAAK;AACd;;MClBa,uBAAuB,CAAA;AAGlC;;AAEG;AACH,IAAA,WAAA,CAC0B,YAAqC,EAG7D,YAAqC,EACrC,MAAc,EACd,MAA0B,EAAA;QAE1B,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CACb,kHAAkH,CACnH;;AAGH,QAAA,IAAI,MAAM,GAA4B;AACpC,YAAA,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,cAAc;AAClD,YAAA,cAAc,EAAE,IAAI;SACrB;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC;QAE1C,IAAI,YAAY,EAAE;YAChB,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,YAAY,EAAE;;QAGzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAY,KAAI;AACvC,YAAA,IAAI,KAAK,YAAY,eAAe,EAAE;gBACpC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAClE,oBAAA,IAAI,MAAM,CAAC,cAAc,EAAE;wBACzB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC;;yBACrD;wBACL,MAAM,CAAC,qBAAqB,CAC1B,MAAM,CAAC,QAAQ,EACf,qBAAqB,CACtB;;;;YAKP,IACE,KAAK,YAAY,aAAa;AAC9B,gBAAA,KAAK,YAAY,gBAAgB;gBACjC,KAAK,YAAY,eAAe,EAChC;gBACA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAClE,oBAAA,IAAI,MAAM,CAAC,cAAc,EAAE;wBACzB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC;;yBACpD;wBACL,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC;;;;AAI3E,SAAC,CAAC;;AAGJ;;;;AAIG;IACH,OAAO,OAAO,CACZ,YAAqC,EAAA;QAErC,OAAO;AACL,YAAA,QAAQ,EAAE,uBAAuB;AACjC,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,iCAAiC;AAC1C,oBAAA,QAAQ,EAAE,YAAY;AACvB,iBAAA;AACF,aAAA;SACF;;AA7EQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,sFASxB,iCAAiC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAThC,uBAAuB,EAAA,CAAA,CAAA;gHAAvB,uBAAuB,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,QAAQ;mBAAC,EAAE;;0BAQP;;0BAAY;;0BACZ;;0BACA,MAAM;2BAAC,iCAAiC;;;AC9B7C;;AAEG;AACI,MAAM,+BAA+B,GAC1C,IAAI,cAAc,CAAwB,8BAA8B,CAAC;;MCW9D,0BAA0B,CAAA;AAKrC;;AAEG;IACH,WAGE,CAAA,YAAmC,EAC3B,MAA0B,EAAA;QAA1B,IAAM,CAAA,MAAA,GAAN,MAAM;AAEd,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;QACd,IAAI,CAAC,MAAM,GAAG;YACZ,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,cAAc;AACvD,YAAA,cAAc,EAAE,KAAK;SACtB;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC;QAE1C,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,EAAE;;;IAIrD,SAAS;;AAEP,IAAA,GAAqB,EACrB,IAAiB,EAAA;AAGjB,QAAA,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC/D,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;QAGzB,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,mBAAmB,EACnB,IAAI,CAAC,MAAM,CACZ;;aACI;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,mBAAmB,EACnB,IAAI,CAAC,MAAM,CACZ;;AAGH,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1B,QAAQ,CAAC,MAAK;YACZ,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;AACpB,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC9B,oBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC;;qBAC5D;AACL,oBAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,mBAAmB,CACpB;;;SAGN,CAAC,CACH;;AAlEQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAU3B,+BAA+B,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAV9B,0BAA0B,EAAA,CAAA,CAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;0BAUI;;0BACA,MAAM;2BAAC,+BAA+B;;;MCP9B,qBAAqB,CAAA;AAChC;;AAEG;AACH,IAAA,WAAA,CAAoC,YAAmC,EAAA;QACrE,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CACb,gHAAgH,CACjH;;;AAIL;;;;AAIG;IACH,OAAO,OAAO,CACZ,UAAiC,EAAA;QAEjC,OAAO;AACL,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,+BAA+B;AACxC,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA;AACF,aAAA;SACF;;+GA5BQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAArB,qBAAqB,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EARrB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,0BAA0B;AACpC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,CAAA,CAAA;;4FAEU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,0BAA0B;AACpC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;;0BAKc;;0BAAY;;;ACzB3B;;AAEG;;ACFH;;AAEG;;;;"}