{"version":3,"file":"helper.mjs","sources":["../../../../../../../packages/components/tour/src/helper.ts"],"sourcesContent":["import {\n  computed,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  unref,\n  watch,\n  watchEffect,\n} from 'vue'\nimport {\n  arrow,\n  autoUpdate,\n  computePosition,\n  detectOverflow,\n  flip,\n  offset as offsetMiddleware,\n  shift,\n} from '@floating-ui/dom'\nimport {\n  isArray,\n  isClient,\n  isFunction,\n  isString,\n  keysOf,\n} from '@hd-front-end/utils'\n\nimport type {\n  CSSProperties,\n  Component,\n  InjectionKey,\n  Ref,\n  SetupContext,\n} from 'vue'\nimport type { UseNamespaceReturn } from '@hd-front-end/hooks'\nimport type { PosInfo, TourGap, TourMask } from './types'\nimport type {\n  ComputePositionReturn,\n  Middleware,\n  Placement,\n  Strategy,\n  VirtualElement,\n} from '@floating-ui/dom'\nimport type { TourStepProps } from './step'\n\nexport const useTarget = (\n  target: Ref<\n    string | HTMLElement | (() => HTMLElement | null) | null | undefined\n  >,\n  open: Ref<boolean>,\n  gap: Ref<TourGap>,\n  mergedMask: Ref<TourMask>,\n  scrollIntoViewOptions: Ref<boolean | ScrollIntoViewOptions>\n) => {\n  const posInfo: Ref<PosInfo | null> = ref(null)\n\n  const getTargetEl = () => {\n    let targetEl: HTMLElement | null | undefined\n    if (isString(target.value)) {\n      targetEl = document.querySelector<HTMLElement>(target.value)\n    } else if (isFunction(target.value)) {\n      targetEl = target.value()\n    } else {\n      targetEl = target.value\n    }\n    return targetEl\n  }\n\n  const updatePosInfo = () => {\n    const targetEl = getTargetEl()\n    if (!targetEl || !open.value) {\n      posInfo.value = null\n      return\n    }\n    if (!isInViewPort(targetEl)) {\n      targetEl.scrollIntoView(scrollIntoViewOptions.value)\n    }\n    const { left, top, width, height } = targetEl.getBoundingClientRect()\n    posInfo.value = {\n      left,\n      top,\n      width,\n      height,\n      radius: 0,\n    }\n  }\n\n  onMounted(() => {\n    watch(\n      [open, target],\n      () => {\n        updatePosInfo()\n      },\n      {\n        immediate: true,\n      }\n    )\n    window.addEventListener('resize', updatePosInfo)\n  })\n\n  onBeforeUnmount(() => {\n    window.removeEventListener('resize', updatePosInfo)\n  })\n\n  const getGapOffset = (index: number) =>\n    (isArray(gap.value.offset) ? gap.value.offset[index] : gap.value.offset) ??\n    6\n\n  const mergedPosInfo = computed(() => {\n    if (!posInfo.value) return posInfo.value\n\n    const gapOffsetX = getGapOffset(0)\n    const gapOffsetY = getGapOffset(1)\n    const gapRadius = gap.value?.radius || 2\n\n    return {\n      left: posInfo.value.left - gapOffsetX,\n      top: posInfo.value.top - gapOffsetY,\n      width: posInfo.value.width + gapOffsetX * 2,\n      height: posInfo.value.height + gapOffsetY * 2,\n      radius: gapRadius,\n    }\n  })\n\n  const triggerTarget = computed(() => {\n    const targetEl = getTargetEl()\n    if (!mergedMask.value || !targetEl || !window.DOMRect) {\n      return targetEl || undefined\n    }\n\n    return {\n      getBoundingClientRect() {\n        return window.DOMRect.fromRect({\n          width: mergedPosInfo.value?.width || 0,\n          height: mergedPosInfo.value?.height || 0,\n          x: mergedPosInfo.value?.left || 0,\n          y: mergedPosInfo.value?.top || 0,\n        })\n      },\n    }\n  })\n\n  return {\n    mergedPosInfo,\n    triggerTarget,\n  }\n}\n\nexport interface TourContext {\n  currentStep: Ref<TourStepProps | undefined>\n  current: Ref<number>\n  total: Ref<number>\n  showClose: Ref<boolean>\n  closeIcon: Ref<string | Component | undefined>\n  mergedType: Ref<'default' | 'primary' | undefined>\n  ns: UseNamespaceReturn\n  slots: SetupContext['slots']\n  updateModelValue(modelValue: boolean): void\n  onClose(): void\n  onFinish(): void\n  onChange(): void\n}\n\nexport const tourKey: InjectionKey<TourContext> = Symbol('ElTour')\n\nfunction isInViewPort(element: HTMLElement) {\n  const viewWidth = window.innerWidth || document.documentElement.clientWidth\n  const viewHeight = window.innerHeight || document.documentElement.clientHeight\n  const { top, right, bottom, left } = element.getBoundingClientRect()\n\n  return top >= 0 && left >= 0 && right <= viewWidth && bottom <= viewHeight\n}\n\nexport const useFloating = (\n  referenceRef: Ref<HTMLElement | VirtualElement | null>,\n  contentRef: Ref<HTMLElement | null>,\n  arrowRef: Ref<HTMLElement | null>,\n  placement: Ref<Placement | undefined>,\n  strategy: Ref<Strategy>,\n  offset: Ref<number>,\n  zIndex: Ref<number>,\n  showArrow: Ref<boolean>\n) => {\n  const x = ref<number>()\n  const y = ref<number>()\n  const middlewareData = ref<ComputePositionReturn['middlewareData']>({})\n\n  const states = {\n    x,\n    y,\n    placement,\n    strategy,\n    middlewareData,\n  } as const\n\n  const middleware = computed(() => {\n    const _middleware: Middleware[] = [\n      offsetMiddleware(unref(offset)),\n      flip(),\n      shift(),\n      overflowMiddleware(),\n    ]\n\n    if (unref(showArrow) && unref(arrowRef)) {\n      _middleware.push(\n        arrow({\n          element: unref(arrowRef)!,\n        })\n      )\n    }\n    return _middleware\n  })\n\n  const update = async () => {\n    if (!isClient) return\n\n    const referenceEl = unref(referenceRef)\n    const contentEl = unref(contentRef)\n    if (!referenceEl || !contentEl) return\n\n    const data = await computePosition(referenceEl, contentEl, {\n      placement: unref(placement),\n      strategy: unref(strategy),\n      middleware: unref(middleware),\n    })\n\n    keysOf(states).forEach((key) => {\n      states[key].value = data[key]\n    })\n  }\n\n  const contentStyle = computed<CSSProperties>(() => {\n    if (!unref(referenceRef)) {\n      return {\n        position: 'fixed',\n        top: '50%',\n        left: '50%',\n        transform: 'translate3d(-50%, -50%, 0)',\n        maxWidth: '100vw',\n        zIndex: unref(zIndex),\n      }\n    }\n\n    const { overflow } = unref(middlewareData)\n\n    return {\n      position: unref(strategy),\n      zIndex: unref(zIndex),\n      top: unref(y) != null ? `${unref(y)}px` : '',\n      left: unref(x) != null ? `${unref(x)}px` : '',\n      maxWidth: overflow?.maxWidth ? `${overflow?.maxWidth}px` : '',\n    }\n  })\n\n  const arrowStyle = computed<CSSProperties>(() => {\n    if (!unref(showArrow)) return {}\n\n    const { arrow } = unref(middlewareData)\n    return {\n      left: arrow?.x != null ? `${arrow?.x}px` : '',\n      top: arrow?.y != null ? `${arrow?.y}px` : '',\n    }\n  })\n\n  let cleanup: any\n  onMounted(() => {\n    const referenceEl = unref(referenceRef)\n    const contentEl = unref(contentRef)\n    if (referenceEl && contentEl) {\n      cleanup = autoUpdate(referenceEl, contentEl, update)\n    }\n\n    watchEffect(() => {\n      update()\n    })\n  })\n\n  onBeforeUnmount(() => {\n    cleanup && cleanup()\n  })\n\n  return {\n    update,\n    contentStyle,\n    arrowStyle,\n  }\n}\n\nconst overflowMiddleware = (): Middleware => {\n  return {\n    name: 'overflow',\n    async fn(state) {\n      const overflow = await detectOverflow(state)\n      let overWidth = 0\n      if (overflow.left > 0) overWidth = overflow.left\n      if (overflow.right > 0) overWidth = overflow.right\n      const floatingWidth = state.rects.floating.width\n      return {\n        data: {\n          maxWidth: floatingWidth - overWidth,\n        },\n      }\n    },\n  }\n}\n"],"names":["offset","offsetMiddleware","arrow"],"mappings":";;;;;;AA4CO,MAAM,YAAY,CACvB,MAAA,EAGA,IACA,EAAA,GAAA,EACA,YACA,qBACG,KAAA;AACH,EAAM,MAAA,OAAA,GAA+B,IAAI,IAAI,CAAA,CAAA;AAE7C,EAAA,MAAM,cAAc,MAAM;AACxB,IAAI,IAAA,QAAA,CAAA;AACJ,IAAI,IAAA,QAAA,CAAS,MAAO,CAAA,KAAK,CAAG,EAAA;AAC1B,MAAW,QAAA,GAAA,QAAA,CAAS,aAA2B,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,KAClD,MAAA,IAAA,UAAA,CAAW,MAAO,CAAA,KAAK,CAAG,EAAA;AACnC,MAAA,QAAA,GAAW,OAAO,KAAM,EAAA,CAAA;AAAA,KACnB,MAAA;AACL,MAAA,QAAA,GAAW,MAAO,CAAA,KAAA,CAAA;AAAA,KACpB;AACA,IAAO,OAAA,QAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAC7B,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,IAAA,CAAK,KAAO,EAAA;AAC5B,MAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAChB,MAAA,OAAA;AAAA,KACF;AACA,IAAI,IAAA,CAAC,YAAa,CAAA,QAAQ,CAAG,EAAA;AAC3B,MAAS,QAAA,CAAA,cAAA,CAAe,sBAAsB,KAAK,CAAA,CAAA;AAAA,KACrD;AACA,IAAA,MAAM,EAAE,IAAM,EAAA,GAAA,EAAK,OAAO,MAAO,EAAA,GAAI,SAAS,qBAAsB,EAAA,CAAA;AACpE,IAAA,OAAA,CAAQ,KAAQ,GAAA;AAAA,MACd,IAAA;AAAA,MACA,GAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAQ,EAAA,CAAA;AAAA,KACV,CAAA;AAAA,GACF,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,KAAA;AAAA,MACE,CAAC,MAAM,MAAM,CAAA;AAAA,MACb,MAAM;AACJ,QAAc,aAAA,EAAA,CAAA;AAAA,OAChB;AAAA,MACA;AAAA,QACE,SAAW,EAAA,IAAA;AAAA,OACb;AAAA,KACF,CAAA;AACA,IAAO,MAAA,CAAA,gBAAA,CAAiB,UAAU,aAAa,CAAA,CAAA;AAAA,GAChD,CAAA,CAAA;AAED,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAO,MAAA,CAAA,mBAAA,CAAoB,UAAU,aAAa,CAAA,CAAA;AAAA,GACnD,CAAA,CAAA;AAED,EAAM,MAAA,YAAA,GAAe,CAAC,KAAe,KAAA;AAvGvC,IAAA,IAAA,EAAA,CAAA;AAwGK,IAAQ,OAAA,CAAA,EAAA,GAAA,OAAA,CAAA,GAAA,CAAI,KAAM,CAAA,MAAM,CAAI,GAAA,GAAA,CAAI,KAAM,CAAA,MAAA,CAAO,KAAS,CAAA,GAAA,GAAA,CAAI,KAAM,CAAA,MAAA,KAAhE,IACD,GAAA,EAAA,GAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAEF,EAAM,MAAA,aAAA,GAAgB,SAAS,MAAM;AA3GvC,IAAA,IAAA,EAAA,CAAA;AA4GI,IAAA,IAAI,CAAC,OAAQ,CAAA,KAAA;AAAO,MAAA,OAAO,OAAQ,CAAA,KAAA,CAAA;AAEnC,IAAM,MAAA,UAAA,GAAa,aAAa,CAAC,CAAA,CAAA;AACjC,IAAM,MAAA,UAAA,GAAa,aAAa,CAAC,CAAA,CAAA;AACjC,IAAA,MAAM,SAAY,GAAA,CAAA,CAAA,EAAA,GAAA,GAAA,CAAI,KAAJ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAW,MAAU,KAAA,CAAA,CAAA;AAEvC,IAAO,OAAA;AAAA,MACL,IAAA,EAAM,OAAQ,CAAA,KAAA,CAAM,IAAO,GAAA,UAAA;AAAA,MAC3B,GAAA,EAAK,OAAQ,CAAA,KAAA,CAAM,GAAM,GAAA,UAAA;AAAA,MACzB,KAAO,EAAA,OAAA,CAAQ,KAAM,CAAA,KAAA,GAAQ,UAAa,GAAA,CAAA;AAAA,MAC1C,MAAQ,EAAA,OAAA,CAAQ,KAAM,CAAA,MAAA,GAAS,UAAa,GAAA,CAAA;AAAA,MAC5C,MAAQ,EAAA,SAAA;AAAA,KACV,CAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,aAAA,GAAgB,SAAS,MAAM;AACnC,IAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAC7B,IAAA,IAAI,CAAC,UAAW,CAAA,KAAA,IAAS,CAAC,QAAY,IAAA,CAAC,OAAO,OAAS,EAAA;AACrD,MAAA,OAAO,QAAY,IAAA,KAAA,CAAA,CAAA;AAAA,KACrB;AAEA,IAAO,OAAA;AAAA,MACL,qBAAwB,GAAA;AAlI9B,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAmIQ,QAAO,OAAA,MAAA,CAAO,QAAQ,QAAS,CAAA;AAAA,UAC7B,KAAO,EAAA,CAAA,CAAA,EAAA,GAAA,aAAA,CAAc,KAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqB,KAAS,KAAA,CAAA;AAAA,UACrC,MAAQ,EAAA,CAAA,CAAA,EAAA,GAAA,aAAA,CAAc,KAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqB,MAAU,KAAA,CAAA;AAAA,UACvC,CAAG,EAAA,CAAA,CAAA,EAAA,GAAA,aAAA,CAAc,KAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqB,IAAQ,KAAA,CAAA;AAAA,UAChC,CAAG,EAAA,CAAA,CAAA,EAAA,GAAA,aAAA,CAAc,KAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqB,GAAO,KAAA,CAAA;AAAA,SAChC,CAAA,CAAA;AAAA,OACH;AAAA,KACF,CAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA;AAAA,IACL,aAAA;AAAA,IACA,aAAA;AAAA,GACF,CAAA;AACF,EAAA;AAiBa,MAAA,OAAA,GAAqC,OAAO,QAAQ,EAAA;AAEjE,SAAS,aAAa,OAAsB,EAAA;AAC1C,EAAA,MAAM,SAAY,GAAA,MAAA,CAAO,UAAc,IAAA,QAAA,CAAS,eAAgB,CAAA,WAAA,CAAA;AAChE,EAAA,MAAM,UAAa,GAAA,MAAA,CAAO,WAAe,IAAA,QAAA,CAAS,eAAgB,CAAA,YAAA,CAAA;AAClE,EAAA,MAAM,EAAE,GAAK,EAAA,KAAA,EAAO,QAAQ,IAAK,EAAA,GAAI,QAAQ,qBAAsB,EAAA,CAAA;AAEnE,EAAA,OAAO,OAAO,CAAK,IAAA,IAAA,IAAQ,CAAK,IAAA,KAAA,IAAS,aAAa,MAAU,IAAA,UAAA,CAAA;AAClE,CAAA;AAEa,MAAA,WAAA,GAAc,CACzB,YACA,EAAA,UAAA,EACA,UACA,SACA,EAAA,QAAA,EACAA,QACA,EAAA,MAAA,EACA,SACG,KAAA;AACH,EAAA,MAAM,IAAI,GAAY,EAAA,CAAA;AACtB,EAAA,MAAM,IAAI,GAAY,EAAA,CAAA;AACtB,EAAM,MAAA,cAAA,GAAiB,GAA6C,CAAA,EAAE,CAAA,CAAA;AAEtE,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,CAAA;AAAA,IACA,CAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,UAAA,GAAa,SAAS,MAAM;AAChC,IAAA,MAAM,WAA4B,GAAA;AAAA,MAChCC,MAAA,CAAiB,KAAM,CAAAD,QAAM,CAAC,CAAA;AAAA,MAC9B,IAAK,EAAA;AAAA,MACL,KAAM,EAAA;AAAA,MACN,kBAAmB,EAAA;AAAA,KACrB,CAAA;AAEA,IAAA,IAAI,KAAM,CAAA,SAAS,CAAK,IAAA,KAAA,CAAM,QAAQ,CAAG,EAAA;AACvC,MAAY,WAAA,CAAA,IAAA;AAAA,QACV,KAAM,CAAA;AAAA,UACJ,OAAA,EAAS,MAAM,QAAQ,CAAA;AAAA,SACxB,CAAA;AAAA,OACH,CAAA;AAAA,KACF;AACA,IAAO,OAAA,WAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,MAAM,SAAS,YAAY;AACzB,IAAA,IAAI,CAAC,QAAA;AAAU,MAAA,OAAA;AAEf,IAAM,MAAA,WAAA,GAAc,MAAM,YAAY,CAAA,CAAA;AACtC,IAAM,MAAA,SAAA,GAAY,MAAM,UAAU,CAAA,CAAA;AAClC,IAAI,IAAA,CAAC,eAAe,CAAC,SAAA;AAAW,MAAA,OAAA;AAEhC,IAAA,MAAM,IAAO,GAAA,MAAM,eAAgB,CAAA,WAAA,EAAa,SAAW,EAAA;AAAA,MACzD,SAAA,EAAW,MAAM,SAAS,CAAA;AAAA,MAC1B,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,MACxB,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,KAC7B,CAAA,CAAA;AAED,IAAA,MAAA,CAAO,MAAM,CAAA,CAAE,OAAQ,CAAA,CAAC,GAAQ,KAAA;AAC9B,MAAO,MAAA,CAAA,GAAA,CAAA,CAAK,QAAQ,IAAK,CAAA,GAAA,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAM,MAAA,YAAA,GAAe,SAAwB,MAAM;AACjD,IAAI,IAAA,CAAC,KAAM,CAAA,YAAY,CAAG,EAAA;AACxB,MAAO,OAAA;AAAA,QACL,QAAU,EAAA,OAAA;AAAA,QACV,GAAK,EAAA,KAAA;AAAA,QACL,IAAM,EAAA,KAAA;AAAA,QACN,SAAW,EAAA,4BAAA;AAAA,QACX,QAAU,EAAA,OAAA;AAAA,QACV,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,OACtB,CAAA;AAAA,KACF;AAEA,IAAA,MAAM,EAAE,QAAA,EAAa,GAAA,KAAA,CAAM,cAAc,CAAA,CAAA;AAEzC,IAAO,OAAA;AAAA,MACL,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,MACxB,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,MACpB,GAAA,EAAK,MAAM,CAAC,CAAA,IAAK,OAAO,CAAG,EAAA,KAAA,CAAM,CAAC,CAAQ,CAAA,EAAA,CAAA,GAAA,EAAA;AAAA,MAC1C,IAAA,EAAM,MAAM,CAAC,CAAA,IAAK,OAAO,CAAG,EAAA,KAAA,CAAM,CAAC,CAAQ,CAAA,EAAA,CAAA,GAAA,EAAA;AAAA,MAC3C,QAAU,EAAA,CAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,QAAW,IAAA,CAAA,EAAG,qCAAU,QAAe,CAAA,EAAA,CAAA,GAAA,EAAA;AAAA,KAC7D,CAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,UAAA,GAAa,SAAwB,MAAM;AAC/C,IAAI,IAAA,CAAC,MAAM,SAAS,CAAA;AAAG,MAAA,OAAO,EAAC,CAAA;AAE/B,IAAA,MAAM,EAAE,KAAA,EAAAE,MAAM,EAAA,GAAI,MAAM,cAAc,CAAA,CAAA;AACtC,IAAO,OAAA;AAAA,MACL,IAAA,EAAA,CAAMA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAO,CAAA,CAAA,KAAK,OAAO,CAAGA,EAAAA,MAAAA,IAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAAA,CAAO,CAAQ,CAAA,EAAA,CAAA,GAAA,EAAA;AAAA,MAC3C,GAAA,EAAA,CAAKA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAO,CAAA,CAAA,KAAK,OAAO,CAAGA,EAAAA,MAAAA,IAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAAA,CAAO,CAAQ,CAAA,EAAA,CAAA,GAAA,EAAA;AAAA,KAC5C,CAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAI,IAAA,OAAA,CAAA;AACJ,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,WAAA,GAAc,MAAM,YAAY,CAAA,CAAA;AACtC,IAAM,MAAA,SAAA,GAAY,MAAM,UAAU,CAAA,CAAA;AAClC,IAAA,IAAI,eAAe,SAAW,EAAA;AAC5B,MAAU,OAAA,GAAA,UAAA,CAAW,WAAa,EAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,KACrD;AAEA,IAAA,WAAA,CAAY,MAAM;AAChB,MAAO,MAAA,EAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAAA,GACF,CAAA,CAAA;AAED,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,OAAA,IAAW,OAAQ,EAAA,CAAA;AAAA,GACpB,CAAA,CAAA;AAED,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,GACF,CAAA;AACF,EAAA;AAEA,MAAM,qBAAqB,MAAkB;AAC3C,EAAO,OAAA;AAAA,IACL,IAAM,EAAA,UAAA;AAAA,IACN,MAAM,GAAG,KAAO,EAAA;AACd,MAAM,MAAA,QAAA,GAAW,MAAM,cAAA,CAAe,KAAK,CAAA,CAAA;AAC3C,MAAA,IAAI,SAAY,GAAA,CAAA,CAAA;AAChB,MAAA,IAAI,SAAS,IAAO,GAAA,CAAA;AAAG,QAAA,SAAA,GAAY,QAAS,CAAA,IAAA,CAAA;AAC5C,MAAA,IAAI,SAAS,KAAQ,GAAA,CAAA;AAAG,QAAA,SAAA,GAAY,QAAS,CAAA,KAAA,CAAA;AAC7C,MAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,KAAA,CAAM,QAAS,CAAA,KAAA,CAAA;AAC3C,MAAO,OAAA;AAAA,QACL,IAAM,EAAA;AAAA,UACJ,UAAU,aAAgB,GAAA,SAAA;AAAA,SAC5B;AAAA,OACF,CAAA;AAAA,KACF;AAAA,GACF,CAAA;AACF,CAAA;;;;"}