{"version":3,"file":"index.mjs","mappings":"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","sources":["webpack://gleap/webpack/bootstrap","webpack://gleap/webpack/runtime/define property getters","webpack://gleap/webpack/runtime/hasOwnProperty shorthand","webpack://gleap/./src/GleapFeedbackButtonManager.js","webpack://gleap/./src/UI.js","webpack://gleap/./src/GleapNetworkIntercepter.js","webpack://gleap/./src/GleapHelper.js","webpack://gleap/./src/ChecklistNetworkManager.js","webpack://gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://gleap/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://gleap/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://gleap/./src/GleapPageFilter.js","webpack://gleap/./src/GleapTooltipManager.js","webpack://gleap/./src/GleapSession.js","webpack://gleap/./src/GleapStreamedEvent.js","webpack://gleap/./src/GleapConfigManager.js","webpack://gleap/./src/ScreenCapture.js","webpack://gleap/./src/ResourceExclusionList.js","webpack://gleap/./src/GleapScreenRecorder.js","webpack://gleap/./src/GleapFeedback.js","webpack://gleap/./src/GleapFrameManager.js","webpack://gleap/./src/GleapMetaDataManager.js","webpack://gleap/./src/GleapConsoleLogManager.js","webpack://gleap/./src/GleapClickListener.js","webpack://gleap/./src/GleapCustomDataManager.js","webpack://gleap/./src/GleapEventManager.js","webpack://gleap/./src/GleapCustomActionManager.js","webpack://gleap/./node_modules/@rrweb/record/dist/record.js","webpack://gleap/./src/GleapReplayRecorder.js","webpack://gleap/./src/ScreenDrawer.js","webpack://gleap/./src/GleapScrollStopper.js","webpack://gleap/./src/GleapMarkerManager.js","webpack://gleap/./src/GleapTranslationManager.js","webpack://gleap/./src/GleapShortcutListener.js","webpack://gleap/./src/GleapPreFillManager.js","webpack://gleap/./src/GleapNotificationManager.js","webpack://gleap/./src/GleapAiChatbarManager.js","webpack://gleap/./src/GleapBannerManager.js","webpack://gleap/./src/GleapModalManager.js","webpack://gleap/./src/GleapAudioManager.js","webpack://gleap/./src/GleapTagManager.js","webpack://gleap/./src/unique-selector/src/getID.js","webpack://gleap/./src/unique-selector/src/getClasses.js","webpack://gleap/./src/unique-selector/src/getCombinations.js","webpack://gleap/./src/unique-selector/src/isElement.js","webpack://gleap/./src/unique-selector/src/getNthChild.js","webpack://gleap/./src/unique-selector/src/getTag.js","webpack://gleap/./src/unique-selector/src/isUnique.js","webpack://gleap/./src/unique-selector/src/unique-selector.js","webpack://gleap/./src/unique-selector/src/getAttributes.js","webpack://gleap/./src/unique-selector/src/getParents.js","webpack://gleap/./src/ElementPicker.js","webpack://gleap/./src/GleapAdminHelper.js","webpack://gleap/./src/GleapAdminManager.js","webpack://gleap/./src/GleapTours.js","webpack://gleap/./src/GleapCopilotTours.js","webpack://gleap/./src/GleapProductTours.js","webpack://gleap/./src/Gleap.js","webpack://gleap/./src/GleapChecklist.js","webpack://gleap/./src/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import {\n  GleapFrameManager,\n  GleapConfigManager,\n  GleapNotificationManager,\n  GleapTranslationManager,\n  GleapAiChatbarManager,\n  GleapSession,\n} from './Gleap';\nimport { loadIcon } from './UI';\n\nexport default class GleapFeedbackButtonManager {\n  feedbackButton = null;\n  injectedFeedbackButton = false;\n  buttonHidden = null;\n  lastButtonIcon = null;\n  showingRedDot = false;\n\n  // Feedback button types\n  static FEEDBACK_BUTTON_BOTTOM_RIGHT = 'BOTTOM_RIGHT';\n  static FEEDBACK_BUTTON_BOTTOM_LEFT = 'BOTTOM_LEFT';\n  static FEEDBACK_BUTTON_CLASSIC = 'BUTTON_CLASSIC';\n  static FEEDBACK_BUTTON_CLASSIC_LEFT = 'BUTTON_CLASSIC_LEFT';\n  static FEEDBACK_BUTTON_CLASSIC_BOTTOM = 'BUTTON_CLASSIC_BOTTOM';\n  static FEEDBACK_BUTTON_NONE = 'BUTTON_NONE';\n\n  // GleapFeedbackButtonManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapFeedbackButtonManager();\n    }\n    return this.instance;\n  }\n\n  destroy() {\n    if (this.feedbackButton) {\n      this.feedbackButton.remove();\n      this.feedbackButton = null;\n    }\n\n    this.buttonHidden = null;\n    this.lastButtonIcon = null;\n    this.injectedFeedbackButton = false;\n    this.instance = null;\n  }\n\n  /**\n   * Toggles the feedback button visibility.\n   * @param {*} show\n   * @returns\n   */\n  toggleFeedbackButton(show) {\n    this.buttonHidden = !show;\n\n    GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n    GleapNotificationManager.getInstance().updateContainerStyle();\n  }\n\n  updateRedDot(show) {\n    var frameManager = GleapFrameManager.getInstance();\n    if (!this.feedbackButton || this.buttonHidden || frameManager.isOpened()) {\n      return;\n    }\n\n    const redDotClass = 'bb-feedback-button--red-dot';\n    const existingDot = this.feedbackButton.querySelector(`.${redDotClass}`);\n\n    if (show) {\n      if (!existingDot) {\n        const dot = document.createElement('div');\n        dot.className = redDotClass;\n        this.feedbackButton.appendChild(dot);\n      }\n    } else {\n      if (existingDot) {\n        existingDot.remove();\n      }\n    }\n  }\n\n  feedbackButtonPressed() {\n    var frameManager = GleapFrameManager.getInstance();\n    if (frameManager.isOpened()) {\n      frameManager.hideWidget();\n      this.updateRedDot(this.showingRedDot);\n    } else {\n      frameManager.setAppMode('widget');\n      frameManager.showWidget();\n      this.updateRedDot(false);\n    }\n  }\n\n  /**\n   * Injects the feedback button into the current DOM.\n   */\n  injectFeedbackButton() {\n    if (this.injectedFeedbackButton) {\n      return;\n    }\n    this.injectedFeedbackButton = true;\n\n    var elem = document.createElement('div');\n    elem.addEventListener('click', () => {\n      this.feedbackButtonPressed();\n    });\n    document.body.appendChild(elem);\n    this.feedbackButton = elem;\n\n    this.updateFeedbackButtonState();\n  }\n\n  updateNotificationBadge(count) {\n    const notificationBadge = document.querySelector('.bb-notification-bubble');\n    if (!notificationBadge) {\n      return;\n    }\n\n    const notificationHiddenClass = 'bb-notification-bubble--hidden';\n    if (count > 0 && !GleapFrameManager.getInstance().isOpened()) {\n      notificationBadge.classList.remove(notificationHiddenClass);\n      notificationBadge.innerText = count;\n    } else {\n      notificationBadge.classList.add(notificationHiddenClass);\n    }\n  }\n\n  refresh() {\n    const feedbackButton = document.querySelector('.bb-feedback-button');\n    if (feedbackButton) {\n      this.updateFeedbackButtonText();\n      this.updateFeedbackButtonState();\n    } else {\n      this.injectedFeedbackButton = false;\n      this.feedbackButton = null;\n      this.buttonHidden = null;\n      this.lastButtonIcon = null;\n      this.injectFeedbackButton();\n    }\n  }\n\n  updateFeedbackButtonText() {\n    const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n    if (\n      !(\n        flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n        flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n        flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n      )\n    ) {\n      return;\n    }\n\n    const feedbackButton = document.querySelector('.bb-feedback-button-classic');\n    if (!feedbackButton) {\n      return;\n    }\n\n    feedbackButton.innerText = flowConfig.widgetButtonText;\n  }\n\n  /**\n   * Updates the feedback button state\n   * @returns\n   */\n  updateFeedbackButtonState() {\n    GleapAiChatbarManager.getInstance().updateUIVisibility();\n\n    if (this.feedbackButton === null) {\n      return;\n    }\n\n    const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n    var buttonIcon = '';\n    if (flowConfig.buttonLogo) {\n      buttonIcon = `<img class=\"bb-logo-logo\" src=\"${flowConfig.buttonLogo}\" alt=\"Feedback Button\" />`;\n    } else {\n      buttonIcon = loadIcon('button', '#fff');\n    }\n\n    this.feedbackButton.className = 'bb-feedback-button gleap-font gl-block';\n    this.feedbackButton.setAttribute('dir', GleapTranslationManager.getInstance().isRTLLayout ? 'rtl' : 'ltr');\n\n    if (\n      flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n      flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n      flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n    ) {\n      this.feedbackButton.classList.add('bb-feedback-button--classic-button-style');\n\n      this.feedbackButton.innerHTML = `<div class=\"bb-feedback-button-classic ${\n        flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n          ? 'bb-feedback-button-classic--left'\n          : ''\n      }${\n        flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n          ? 'bb-feedback-button-classic--bottom'\n          : ''\n      }\">${flowConfig.widgetButtonText}</div>`;\n    } else {\n      if (buttonIcon !== this.lastButtonIcon) {\n        this.feedbackButton.innerHTML = `<div class=\"bb-feedback-button-icon\">${buttonIcon}${loadIcon(\n          'arrowdown',\n          '#fff'\n        )}</div><div class=\"bb-notification-bubble bb-notification-bubble--hidden\"></div>`;\n      }\n    }\n\n    // Prevent dom update if not needed.\n    this.lastButtonIcon = buttonIcon;\n\n    var hideButton = false;\n    if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n      if (flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n        hideButton = true;\n      }\n    } else {\n      if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n        hideButton = true;\n      }\n    }\n    if (hideButton) {\n      this.feedbackButton.classList.add('bb-feedback-button--disabled');\n    }\n\n    if (flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT) {\n      this.feedbackButton.classList.add('bb-feedback-button--bottomleft');\n    }\n\n    if (GleapFrameManager.getInstance().isOpened()) {\n      this.feedbackButton.classList.add('bb-feedback-button--open');\n    }\n\n    const appMode = GleapFrameManager.getInstance().appMode;\n    if (appMode === 'survey' || appMode === 'survey_full' || appMode === 'survey_web') {\n      this.feedbackButton.classList.add('bb-feedback-button--survey');\n    }\n\n    if (flowConfig.hideForGuests === true && !GleapSession.getInstance().isUser()) {\n      this.feedbackButton.classList.add('bb-feedback-button--hidden');\n    }\n  }\n}\n","import GleapFeedbackButtonManager from './GleapFeedbackButtonManager';\n\nconst calculateShadeColor = function (col, amt) {\n  col = col.replace(/^#/, '');\n  if (col.length === 3) col = col[0] + col[0] + col[1] + col[1] + col[2] + col[2];\n\n  let [r, g, b] = col.match(/.{2}/g);\n  [r, g, b] = [parseInt(r, 16) + amt, parseInt(g, 16) + amt, parseInt(b, 16) + amt];\n\n  r = Math.max(Math.min(255, r), 0).toString(16);\n  g = Math.max(Math.min(255, g), 0).toString(16);\n  b = Math.max(Math.min(255, b), 0).toString(16);\n\n  const rr = (r.length < 2 ? '0' : '') + r;\n  const gg = (g.length < 2 ? '0' : '') + g;\n  const bb = (b.length < 2 ? '0' : '') + b;\n\n  return `#${rr}${gg}${bb}`;\n};\n\nexport const calculateContrast = (hex) => {\n  var r = parseInt(hex.substr(1, 2), 16),\n    g = parseInt(hex.substr(3, 2), 16),\n    b = parseInt(hex.substr(5, 2), 16),\n    yiq = (r * 299 + g * 587 + b * 114) / 1000;\n  return yiq >= 160 ? '#000000' : '#ffffff';\n};\n\nexport const widgetMaxHeight = 700;\n\nexport const injectStyledCSS = (\n  primaryColor,\n  headerColor,\n  buttonColor,\n  borderRadius,\n  backgroundColor,\n  buttonX,\n  buttonY,\n  buttonStyle\n) => {\n  const contrastColor = calculateContrast(primaryColor);\n  const contrastButtonColor = calculateContrast(buttonColor);\n  const contrastBackgroundColor = calculateContrast(backgroundColor);\n  const contrastHeaderColor = calculateContrast(headerColor);\n  const isDarkMode = contrastBackgroundColor === '#ffffff';\n  const headerDarkColor = calculateShadeColor(headerColor, contrastHeaderColor === '#ffffff' ? -35 : -15);\n  const subTextColor = isDarkMode ? calculateShadeColor(backgroundColor, 100) : calculateShadeColor(backgroundColor, -120);\n  const backgroundColorHover = isDarkMode\n    ? calculateShadeColor(backgroundColor, 30)\n    : calculateShadeColor(backgroundColor, -12);\n  const hoverHoverColor = isDarkMode ? calculateShadeColor(backgroundColor, 80) : calculateShadeColor(backgroundColor, -30);\n\n  var borderRadius = parseInt(borderRadius, 10);\n  const buttonBorderRadius = Math.round(borderRadius * 1.05);\n  const containerRadius = Math.round(borderRadius * 0.8);\n  const chatRadius = Math.round(borderRadius * 0.6);\n  const formItemBorderRadius = Math.round(borderRadius * 0.4);\n  const formItemSmallBorderRadius = Math.round(borderRadius * 0.25);\n  const zIndexBase = 2147483600;\n\n  var bottomInfoOffset = 57 + buttonY;\n  if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM) {\n    bottomInfoOffset = buttonY + 15;\n  } else if (buttonStyle && buttonStyle.includes('CLASSIC')) {\n    bottomInfoOffset = buttonY;\n  } else if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n    bottomInfoOffset = buttonY;\n  }\n\n  const colorStyleSheet = `\n    .gleap-font, .gleap-font * {\n      font-style: normal;\n      font-variant-caps: normal;\n      font-variant-ligatures: normal;\n      font-variant-numeric: normal;\n      font-variant-east-asian: normal;\n      font-weight: normal;\n      font-stretch: normal;\n      font-size: 100%;\n      line-height: 1;\n      font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n    }\n    .gleap-ai-ui-widget {\n      display: none;\n    }\n    .gleap-input-highlight {\n      box-shadow: 0 0 0 3px ${primaryColor} !important;\n    }\n    .gleap-frame-container {\n      right: ${buttonX}px;\n      bottom: ${61 + buttonY}px;\n      width: calc(100% - 40px);\n      max-width: 410px;\n      position: fixed;\n      z-index: ${zIndexBase + 31};\n      visibility: visible;\n      box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n      border-radius: ${containerRadius}px;\n      overflow: hidden;\n      animation-duration: .3s;\n      animation-fill-mode: both;\n      animation-name: gleapFadeInUp;\n      user-select: none;\n      pointer-events: none;\n      transition: max-width 0.3s ease-out;\n    }\n\n    .gleap-admin-highlight {\n      box-shadow: 0px 0px 0px 4px red;\n    }\n\n    :root {\n      --gleap-margin-top: 50px;\n    }\n\n    .gleap-tooltip-anchor {\n      position: relative;\n      display: inline-block;\n      float: left;\n      max-width: 0px;\n      width: 17px;\n    }\n\n    .gleap-tooltip-hotspot {\n      position: absolute;\n      display: block;\n      width: 17px;\n      height: 17px;\n      cursor: pointer;\n      top: 0px;\n      left: 0px;\n    }\n\n    @keyframes gleap-pulse {\n      0% {\n        transform: scale(0);\n        opacity: 0.25;\n      }\n      45% {\n        transform: scale(2.5);\n        opacity: 0;\n      }\n      100% {\n        transform: scale(0);\n        opacity: 0;\n      }\n    }\n\n    .gleap-tooltip-hotspot-animation {\n      position: absolute;\n      border-radius: 17px;\n      opacity: 0.25;\n      display: block;\n      width: 17px;\n      height: 17px;\n      cursor: pointer;\n      top: 0px;\n      left: 0px;\n      animation: gleap-pulse 5s infinite;\n    }\n\n    .gleap-tooltip-hotspot svg {\n      width: 17px;\n      height: 17px;\n      object-fit: contain;\n      display: block;\n    }\n\n    .gleap-tooltip-inner {\n      position: relative;\n      overflow: visible;\n      font-size: 14px;\n      font-weight: normal;\n      color: #000;\n      line-height: 1.3;\n    }\n\n    .gleap-tooltip {\n      position: absolute;\n      background-color: #fff;\n      color: #000;\n      font-size: 15px;\n      line-height: 18px;\n      padding: 16px;\n      padding-top: 8px;\n      padding-bottom: 8px;\n      border-radius: 4px;\n      max-width: min(350px, 80vw);\n      box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n      opacity: 0;\n      visibility: hidden;\n      transition: opacity 0.2s, visibility 0.2s;\n      z-index: ${zIndexBase + 100};\n    }\n\n    .gleap-tooltip a {\n      color: ${primaryColor};\n      text-decoration: underline;\n      display: inline !important;\n      margin: 0px !important;\n      padding: 0px !important;\n      word-break: break-word;\n    }\n\n    .gleap-tooltip ul {\n      padding-left: 16px;\n    }\n\n    .gleap-tooltip b {\n      font-weight: 600;\n    }\n\n    .gleap-tooltip h2 {\n      font-size: 18px;\n      line-height: 20px;\n      font-weight: 600;\n      margin-top: 8px;\n      margin-bottom: 8px;\n    }\n\n    .gleap-tooltip h3 {\n      font-size: 16px;\n      line-height: 18px;\n      font-weight: 600;\n      margin-top: 8px;\n      margin-bottom: 8px;\n    }\n\n    .gleap-tooltip p {\n      padding: 0px;\n      margin-top: 8px;\n      margin-bottom: 8px;\n    }\n\n    .gleap-tooltip img {\n      max-width: 100%;\n      max-height: 300px;\n      width: 100%;\n      height: auto;\n      object-fit: cover;\n      margin-top: 8px;\n      margin-bottom: 8px;\n      border-radius: 4px;\n    }\n\n    .gleap-tooltip iframe,\n    .gleap-tooltip video {\n      max-width: 100%;\n      width: 100%;\n      height: auto;\n      min-height: 200px;\n      display: block;\n      border: none;\n      outline: none;\n      padding: 0px;\n      margin-top: 8px;\n      margin-bottom: 8px;\n      border-radius: 4px;\n    }\n\n    .gleap-tooltip-arrow {\n      position: absolute;\n      width: 20px;\n      height: 20px;\n    }\n\n    .gleap-tooltip-arrow svg {\n      width: 20px;\n      height: 20px;\n      object-fit: contain;\n    }\n\n    .gleap-b-frame {\n      width: 100%;\n      height: 100%;\n      border: none;\n      pointer-events: auto;\n      padding: 0px;\n      margin: 0px;\n    }\n\n    .gleap-b-shown {\n      transition: margin 0.3s ease-out;\n      margin-top: var(--gleap-margin-top);\n      position: relative;\n      z-index: 10000;\n    }\n\n    .gleap-b-f {\n      margin-top: 0px;\n    }\n\n    .gleap-b {\n      display: none;\n      position: absolute;\n      top: calc(-1 * var(--gleap-margin-top));\n      left: 0px;\n      width: 100vw;\n      height: var(--gleap-margin-top);\n      z-index: ${zIndexBase + 99};\n    }\n\n    @keyframes gleapSlideIn {\n      from {\n          top: calc(-1 * var(--gleap-margin-top));\n      }\n      to {\n          top: 10px;\n      }\n    }\n\n    .gleap-b-f .gleap-b {\n      position: fixed;\n      top: 10px;\n      animation: gleapSlideIn .25s ease-out forwards;\n      max-width: 800px;\n      width: calc(100% - 20px);\n      left: 50%;\n      z-index: ${zIndexBase + 99};\n      transform: translateX(-50%);\n      border-radius: ${formItemBorderRadius}px;\n      overflow: hidden;\n      box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n    }\n\n    .gleap-b-shown .gleap-b {\n      display: block;\n    }\n\n    .gleap-image-view {\n      position: fixed;\n      top: 0px;\n      left: 0px;\n      width: 100vw;\n      height: 100vh;\n      z-index: ${zIndexBase + 99};\n      background-color: ${contrastBackgroundColor}cc;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n\n    .gleap-image-view-image {\n      width: 90%;\n      height: auto;\n      max-width: 90%;\n      max-height: 90%;\n      object-fit: contain;\n    }\n\n    .gleap-image-view-close {\n      position: fixed;\n      top: 20px;\n      right: 20px;\n      width: 32px;\n      height: 32px;\n      opacity: 0.8;\n      z-index: ${zIndexBase + 140};\n      box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n      cursor: pointer;\n    }\n\n    .gleap-image-view-close:hover {\n      opacity: 1;\n    }\n\n    .gleap-image-view-close svg path {\n      fill: ${backgroundColor};\n    }\n\n    [dir=rtl].gleap-frame-container {\n      right: auto;\n      left: ${buttonX}px;\n      bottom: ${61 + buttonY}px;\n    }\n\n    .gleap-frame-container--loading iframe {\n      opacity: 0;\n    }\n\n    .gleap-frame-container--loading::before {\n      content: \" \";\n      position: fixed;\n      top: 0px;\n      left: 0px;\n      right: 0px;\n      height: 100%;\n      max-height: 380px;\n      background: linear-gradient(\n        130deg,\n        ${headerDarkColor} 0%,\n        ${headerColor} 100%\n      );\n    }\n    \n    .gleap-frame-container--loading::after {\n      content: \" \";\n      position: fixed;\n      top: 0px;\n      left: 0px;\n      right: 0px;\n      height: 100%;\n      height: 100%;\n      max-height: 380px;\n      background: linear-gradient(\n        180deg,\n        transparent 60%,\n        ${backgroundColor}1A 70%,\n        ${backgroundColor} 100%\n      );\n    }\n\n    .gleap-frame-container--loading-nogradient::before {\n      max-height: 340px;\n      background: ${headerColor} !important;\n    }\n\n    .gleap-frame-container--loading-nofade::after {\n      display: none !important;\n    }\n\n    .gleap-frame-container--survey {\n      bottom: ${buttonY}px !important;\n    }\n\n    .gleap-frame-container--extended {\n      max-width: 690px !important;\n    }\n\n    .gleap-frame-container--survey-full {\n      position: fixed;\n      top: 0 !important;\n      left: 0 !important;\n      bottom: 0 !important;\n      right: 0 !important;\n      width: 100vw !important;\n      max-width: 100vw !important;\n      height: 100vh;\n      height: 100dvh !important;\n      background-color: rgba(0, 0, 0, 0.5);\n      backdrop-filter: blur(6px);\n      display: flex !important;\n      justify-content: center !important;\n      align-items: center !important;\n      max-height: 100vh;\n      max-height: 100dvh !important;\n      border-radius: 0 !important;\n      animation-name: none !important;\n    }\n\n    .gleap-frame-container--survey-full .gleap-frame-container-inner {\n      max-width: 640px !important;\n      width: calc(100% - 24px);\n      border-radius: ${containerRadius}px;\n      overflow: hidden;\n    }\n\n    .gleap-frame-container--classic {\n      right: ${buttonX}px;\n      bottom: ${buttonY}px;\n    }\n\n    [dir=rtl].gleap-frame-container--classic {\n      right: auto;\n      left: ${buttonX}px;\n      bottom: ${buttonY}px;\n    }\n\n    .gleap-frame-container--no-button {\n      bottom: ${buttonY}px;\n    }\n\n    [dir=rtl].gleap-frame-container--classic-left {\n      bottom: ${buttonY}px;\n    }\n\n    .gleap-frame-container--classic-left {\n      right: auto;\n      left: ${buttonX}px;\n      bottom: ${buttonY}px;\n    }\n\n    [dir=rtl].gleap-frame-container--classic-left {\n      left: auto;\n      right: ${buttonX}px;\n      bottom: ${buttonY}px;\n    }\n\n    .gleap-frame-container--modern-left {\n      right: auto;\n      left: ${buttonX}px;\n      bottom: ${61 + buttonY}px;\n    }\n\n    [dir=rtl].gleap-frame-container--modern-left {\n      left: auto;\n      right: ${buttonX}px;\n      bottom: ${61 + buttonY}px;\n    }\n\n    .gleap-frame-container--animate {\n      pointer-events: auto !important;\n    }\n\n    @keyframes gleapFadeInUp {\n      from {\n          opacity: 0;\n          transform: translate3d(0, 100%, 0);\n      }\n      to {\n          opacity: 1;\n          transform: translate3d(0, 0, 0);\n      }\n    }\n\n    @keyframes gleapFadeInUpMobile {\n      from {\n          opacity: 0;\n          transform: translate3d(0, 10%, 0);\n      }\n      to {\n          opacity: 1;\n          transform: translate3d(0, 0, 0);\n      }\n    }\n\n    .gleap-notification-container {\n      position: fixed;\n      bottom: ${bottomInfoOffset}px;\n      right: ${buttonX}px;\n      z-index: ${zIndexBase + 30};\n      display: flex;\n      flex-direction: column;\n      align-items: flex-end;\n      width: 100%;\n      max-width: min(340px, 80vw);\n    }\n\n    .gleap-notification-container--left {\n      left: ${4 + buttonX}px;\n      right: initial !important;\n    }\n\n    [dir=rtl].gleap-notification-container {\n      left: ${4 + buttonX}px;\n      right: initial !important;\n    }\n\n    [dir=rtl].gleap-notification-container--left {\n      left: initial !important;\n      right: ${buttonX}px !important;\n      align-items: flex-start !important;\n    }\n\n    .gleap-notification-container--no-button {\n      bottom: ${buttonY}px;\n    }\n\n    .gleap-notification-item {\n      animation-duration: 0.7s;\n      animation-fill-mode: both;\n      animation-name: bbFadeInOpacity;\n    }\n\n    .gleap-notification-close {\n      border-radius: 100%;\n      width: 28px;\n      height: 28px;\n      background-color: ${subTextColor};\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      margin-bottom: 8px;\n      cursor: pointer;\n      visibility: hidden;\n      pointer-events: none;\n    }\n\n    .gleap-notification-container:hover .gleap-notification-close {\n      visibility: visible;\n      pointer-events: auto;\n      animation-duration: 0.7s;\n      animation-fill-mode: both;\n      animation-name: bbFadeInOpacity;\n    }\n\n    @media only screen and (max-width: 450px) {\n      .gleap-notification-close {\n        visibility: visible;\n        pointer-events: auto;\n        animation-duration: 0.7s;\n        animation-fill-mode: both;\n        animation-name: bbFadeInOpacity;\n      }\n    }\n\n    .gleap-notification-close svg {\n      width: 45%;\n      height: 45%;\n      object-fit: contain;\n      fill: ${backgroundColor};\n    }\n\n    .gleap-notification-item-checklist-container {\n      display: flex;\n      animation: fadeIn;\n      animation-duration: .45s;\n      background-color: ${backgroundColor};\n      border-radius: ${subTextColor};\n      box-sizing: border-box;\n      cursor: pointer;\n      flex-direction: column;\n      overflow: hidden;\n      box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n      border-radius: ${chatRadius}px;\n      margin-bottom: 12px;\n    }\n\n    .gleap-notification-item-checklist-content {\n      align-items: flex-start;\n      display: flex;\n      flex-direction: column;\n      padding: 15px;\n      width: 100%;\n      width: min(310px, 70vw);\n      max-width: min(310px, 70vw);\n    }\n\n    .gleap-notification-item-checklist-content-title {\n      color: ${contrastBackgroundColor};\n      font-size: 15px;\n      font-weight: 500;\n      line-height: 21px;\n      margin-bottom: 10px;\n      max-width: 100%;\n      -webkit-line-clamp: 3;\n      -webkit-box-orient: vertical;\n      overflow: hidden;\n    }\n\n    .gleap-notification-item-checklist-content-progress {\n      width: 100%;\n      height: 8px;\n      border-radius: 8px;\n      background-color: ${backgroundColorHover};\n    }\n\n    .gleap-notification-item-checklist-content-progress-inner {\n      height: 100%;\n      border-radius: 8px;\n      background-color: ${primaryColor};\n    }\n\n    .gleap-notification-item-checklist-content-next {\n      color: ${subTextColor};\n      font-size: 15px;\n      font-weight: normal;\n      line-height: 21px;\n      margin-top: 10px;\n      max-width: 100%;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      display: flex;\n      align-items: center;\n    }\n\n    .gleap-notification-item-checklist-content-next svg {\n      height: 18px;\n      margin-right: 5px;\n      width: auto;\n    }\n\n    .gleap-notification-item-checklist-content-next b {\n      font-size: 15px;\n      font-weight: normal;\n      color: ${contrastBackgroundColor};\n    }\n\n    .gleap-notification-item-news {\n      width: 100%;\n    }\n\n    .gleap-news-pagination {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      margin-top: 10px;\n      width: 100%;\n    }\n\n    .gleap-news-page-indicator {\n      font-size: 12px;\n      color: ${subTextColor};\n    }\n\n    .gleap-news-next-button {\n      background-color: ${primaryColor};\n      color: ${contrastColor};\n      border-radius: ${formItemSmallBorderRadius}px;\n      box-sizing: border-box;\n      padding: 5px 10px;\n      font-size: 14px;\n      font-weight: bold;\n      line-height: 21px;\n      border: none;\n      text-align: center;\n      cursor: pointer;\n      -webkit-tap-highlight-color: transparent;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      box-shadow: none !important;\n      outline: none !important;^\n    }\n\n    .gleap-notification-item-news-content {\n      align-items: flex-start;\n      display: flex;\n      flex-direction: column;\n      padding: 15px;\n    }\n\n    .gleap-notification-item-news-preview {\n      color: ${subTextColor};\n      font-size: 14px;\n      line-height: 21px;\n      font-weight: 400;\n      overflow-wrap: break-word;\n      word-break: break-word;\n      display: block;\n      display: -webkit-box;\n      -webkit-line-clamp: 2;\n      -webkit-box-orient: vertical;\n      overflow: hidden;\n    }\n\n    .gleap-notification-item-news-sender {\n      display: flex;\n      align-items: center;\n      color: ${subTextColor};\n      font-size: 15px;\n      line-height: 21px;\n      font-weight: 400;\n    }\n    \n    .gleap-notification-item-news-content-title {\n      color: ${contrastBackgroundColor};\n      font-size: 15px;\n      font-weight: 500;\n      line-height: 21px;\n      margin-bottom: 6px;\n      max-width: 100%;\n      -webkit-line-clamp: 3;\n      -webkit-box-orient: vertical;\n      overflow: hidden;\n      cursor: pointer;\n    }\n\n    .gleap-notification-item-news-sender img {\n      border-radius: 100%;\n      height: 20px;\n      margin-right: 8px;\n      object-fit: cover;\n      width: 20px;\n    }\n\n    [dir=rtl] .gleap-notification-item-news-sender img {\n      margin-left: 8px;\n      margin-right: 0px !important;\n    }\n\n    .gleap-notification-item-news-container {\n      display: flex;\n      animation: fadeIn;\n      animation-duration: .45s;\n      background-color: ${backgroundColor};\n      border-radius: ${subTextColor};\n      box-sizing: border-box;\n      flex-direction: column;\n      overflow: hidden;\n      box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n      border-radius: ${chatRadius}px;\n      margin-bottom: 12px;\n    }\n\n    .gleap-notification-item-news-image {\n      background-color: ${subTextColor};\n      height: 170px;\n      max-height: 170px;\n      object-fit: cover;\n      width: 100%;\n      cursor: pointer;\n    }\n      \n    .gleap-notification-item-news-content-title:hover {\n      color: ${primaryColor};\n    }\n\n    .gleap-notification-item {\n      display: flex;\n      align-items: flex-end;\n      cursor: pointer;\n    }\n\n    .gleap-notification-item img {\n      width: 32px;\n      height: 32px;\n      min-width: 32px;\n      border-radius: 100%;\n      object-fit: cover;\n      margin-right: 8px;\n      margin-bottom: 12px;\n      cursor: pointer;\n    }\n\n    [dir=rtl] .gleap-notification-item img {\n      margin-left: 8px;\n      margin-right: 0px !important;\n    }\n\n    .gleap-notification-item-container {\n      box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n      border-radius: ${chatRadius}px;\n      border-bottom-left-radius: 0px;\n      padding: 20px;\n      background-color: ${backgroundColor};\n      margin-bottom: 12px;\n      cursor: pointer;\n      font-size: 15px;\n      line-height: 21px;\n      color: ${contrastBackgroundColor};\n      position: relative;\n    }\n\n    .gleap-notification-item-container::after {\n      content: \" \";\n      position: absolute;\n      bottom: 0px;\n      width: 0px;\n      height: 0px;\n      left: -6px;\n      border-style: solid;\n      border-width: 0px 0px 10px 6px;\n      border-color: transparent transparent ${backgroundColor};\n    }\n\n    .gleap-notification-item-sender {\n      color: ${subTextColor};\n      line-height: 20px;\n    }\n\n    .gleap-notification-item-content {\n      line-height: 20px;\n      color: ${contrastBackgroundColor};\n      margin-top: 4px;\n      min-width: min(200px, 50vw);\n      word-wrap: break-word;\n      word-break: break-word;\n    }\n\n    .gleap-frame-container-inner {\n      position: relative;\n      width: 100%;\n      height: calc(100vh - ${84 + buttonY}px);\n      max-height: ${widgetMaxHeight}px;\n    }\n\n    .gleap-frame-container--survey .gleap-frame-container-inner {\n      height: calc(100vh - 40px);\n    }\n    \n    .gleap-frame-container-inner:before {\n      content: \" \";\n      position: absolute;\n      width: 100%;\n      height: calc(100% - ${containerRadius}px);\n      top: ${containerRadius}px;\n      background-color: ${backgroundColor};\n      z-index: -1;\n    }\n    \n    .gleap-frame-container iframe {\n      height: 100% !important;\n      width: 100% !important;\n      max-width: 100% !important;\n      display: block !important;\n      pointer-events: auto !important;\n    }\n    \n    .gleap-frame-container--hidden {\n      display: none !important;\n      pointer-events: none;\n      animation: none !important;\n    }\n    \n    .bb-feedback-button {\n      margin: 0px;\n      position: fixed;\n      bottom: ${buttonY}px;\n      right: ${buttonX}px;\n      border-radius: 30px;\n      cursor: pointer;\n      -webkit-tap-highlight-color: transparent;\n      background-color: transparent;\n      color: #000000;\n      z-index: ${zIndexBase + 30};\n      box-sizing: border-box;\n      display: flex;\n      align-items: center;\n      padding: 0px;\n    }\n\n    @keyframes bbRedDotPulse {\n      0% {\n        opacity: 1;\n      }\n      50% {\n        opacity: 0.8;\n      }\n      100% {\n        opacity: 1;\n      }\n    }\n\n    .bb-feedback-button--red-dot {\n      position: absolute;\n      top: 0px;\n      right: 0px;\n      width: 14px;\n      height: 14px;\n      border-radius: 50%;\n      background-color: #ff3b30;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.2);\n      z-index: ${zIndexBase + 31};\n      animation: bbRedDotPulse 2s ease-in-out infinite;\n    }\n\n    [dir=rtl].bb-feedback-button {\n      bottom: ${buttonY}px;\n      right: auto;\n      left: ${buttonX}px;\n    }\n    \n    .bb-feedback-button--bottomleft {\n      bottom: ${buttonY}px;\n      right: auto;\n      left: ${buttonX}px;\n    }\n\n    [dir=rtl].bb-feedback-button--bottomleft {\n      bottom: ${buttonY}px;\n      right: ${buttonX}px;\n      left: auto;\n    }\n    \n    .bb-feedback-button--disabled {\n      display: none !important;\n    }\n\n    .bb-feedback-button--hidden {\n      display: none !important;\n    }\n    \n    .bb-feedback-button-text {\n      padding: 8px 12px;\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      justify-content: center;\n      background-color: #fff;\n      border-radius: 8px;\n      box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n      position: relative;\n      z-index: 99;\n    }\n    \n    .bb-feedback-button-text:before {\n      content: \"\";\n      position: absolute;\n      box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n      transform: rotate(315deg);\n      bottom: 16px;\n      right: -4px;\n      border-width: 10px;\n      border-style: solid;\n      border-color: transparent #fff #fff transparent;\n    }\n    \n    .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n      display: none;\n    }\n    \n    .bb-feedback-button-text:after {\n      content: \"\";\n      position: absolute;\n      bottom: 12px;\n      right: 0px;\n      background-color: #fff;\n      width: 5px;\n      height: 30px;\n    }\n    \n    .bb-feedback-button-text-title {\n      font-family: sans-serif;\n      font-size: 14px;\n      color: #666;\n      line-height: 18px;\n      max-width: 220px;\n    }\n    \n    .bb-feedback-button-text-title b {\n      color: #000000;\n      font-weight: 600;\n    }\n\n    .bb-notification-bubble {\n      position: absolute;\n      top: -5px;\n      right: -5px;\n      min-width: 12px;\n      padding: 0px 4px;\n      height: 20px;\n      min-width: 20px;\n      border-radius: 20px;\n      background-color: red;\n      color: #fff;\n      font-size: 11px;\n      font-family: sans-serif;\n      text-align: center;\n      line-height: 20px;\n    }\n\n    .bb-notification-bubble--hidden {\n      display: none;\n    }\n    \n    .bb-feedback-button-icon {\n      width: 48px;\n      height: 48px;\n      border-radius: 48px;\n      background-color: #485bff;\n      transition: box-shadow, transform 0.2s ease-in-out;\n      box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n      position: relative;\n    }\n    \n    .bb-feedback-button-classic {\n      cursor: pointer;\n      -webkit-tap-highlight-color: transparent;\n      top: 50%;\n      right: 0px;\n      position: fixed;\n      transform: rotate(-90deg) translate(50%, -50%);\n      transform-origin: 100% 50%;\n      padding: 9px 20px;\n      text-align: center;\n      background-color: #485bff;\n      border-top-left-radius: 8px;\n      border-top-right-radius: 8px;\n      font-family: sans-serif;\n      font-size: 16px;\n      color: #fff;\n      box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n    }\n\n    [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n      top: 50%;\n      left: 0px;\n      right: auto;\n      transform: rotate(90deg) translate(-50%, -100%);\n      transform-origin: 0% 0%;\n    }\n    \n    .bb-feedback-button-classic--left {\n      top: 50%;\n      left: 0px;\n      right: auto;\n      transform: rotate(90deg) translate(-50%, -100%);\n      transform-origin: 0% 0%;\n    }\n\n    [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n      top: 50%;\n      right: 0px;\n      left: auto;\n      transform: rotate(-90deg) translate(50%, -50%);\n      transform-origin: 100% 50%;\n    }\n    \n    .bb-feedback-button-classic--bottom {\n      top: auto;\n      bottom: 0px;\n      transform: none;\n      right: ${buttonX}px;\n      left: auto;\n    }\n    \n    [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n      top: auto;\n      bottom: 0px;\n      transform: none;\n      left: ${buttonX}px;\n      right: auto;\n    }\n\n    .bb-feedback-button--classic-button-style {\n      animation-duration: 0.2s;\n      animation-fill-mode: both;\n      animation-name: bbFadeInOpacity;\n    }\n    \n    .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n      animation-duration: 0.2s;\n      animation-fill-mode: both;\n      animation-name: bbFadeOutRight;\n    }\n    \n    .bb-feedback-button .bb-logo-logo {\n      position: absolute;\n      width: 30px;\n      height: 30px;\n      top: 9px;\n      left: 9px;\n      object-fit: contain;\n      animation-duration: 0.3s;\n      animation-fill-mode: both;\n      animation-name: bbZoomIn;\n    }\n    \n    .bb-feedback-button .bb-logo-arrowdown {\n      position: absolute;\n      width: 14px;\n      height: 14px;\n      top: 17px;\n      left: 17px;\n      object-fit: contain;\n      animation-duration: 0.3s;\n      animation-fill-mode: both;\n    }\n    \n    .bb-feedback-button .bb-logo-arrowdown {\n      animation-name: bbZoomOut;\n    }\n    \n    .bb-feedback-button--open .bb-logo-arrowdown {\n      animation-name: bbZoomIn;\n    }\n    \n    .bb-feedback-button--open .bb-logo-logo {\n      animation-name: bbZoomOut;\n    }\n    \n    .bb-feedback-button-icon:hover {\n      box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n      transform: scale(1.1);\n    }\n    \n    .bb-feedback-button--open .bb-feedback-button-text {\n      animation-name: bbFadeOutDown;\n    }\n    \n    .bb-feedback-button--open .bb-feedback-button-icon {\n      display: flex;\n    }\n    \n    .bb-capture-svg {\n      position: fixed;\n      z-index: ${zIndexBase + 14};\n      top: 0px;\n      left: 0px;\n      right: 0px;\n      width: 100%;\n      height: 100%;\n      padding: 0px;\n      margin: 0px;\n      cursor: crosshair;\n    }\n\n    .bb-capture-svg--preview {\n      cursor: auto !important;\n    }\n    \n    .bb-rec-on-circle {\n      animation-name: bbRecIconFade;\n      animation-duration: 2s;\n      animation-iteration-count: infinite;\n      animation-direction: alternate;\n    }\n    \n    .bb-rec-on-cont {\n      animation-name: bbRecIconContFade;\n      animation-duration: 2s;\n      animation-iteration-count: infinite;\n      animation-direction: alternate;\n    }\n    \n    .bb-capture-editor-drag-info {\n      position: fixed;\n      top: -200px;\n      left: 0px;\n      z-index: ${zIndexBase + 16};\n      transition: opacity 0.3s ease-in-out;\n    }\n    \n    .bb-capture-editor-drag-info svg {\n      width: 24px;\n      height: 24px;\n    }\n    \n    .bb-capture-editor-borderlayer {\n      position: fixed;\n      top: 0px;\n      left: 0px;\n      width: 100vw;\n      height: 100vh;\n      border: 4px solid ${primaryColor};\n      cursor: crosshair;\n      z-index: ${zIndexBase + 10};\n      box-sizing: border-box;\n      pointer-events: none;\n    }\n    \n    .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n      background-color: rgba(0, 0, 0, 0.8);\n    }\n\n    .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n      border: 4px solid #eb144c !important;\n    }\n    \n    .bb-capture-editor-recording .bb-capture-dismiss {\n      display: none;\n    }\n    \n    .bb-capture-editor-item-inactive {\n      opacity: 0.3;\n      cursor: not-allowed !important;\n    }\n    \n    .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n      opacity: 0.3;\n      cursor: not-allowed !important;\n    }\n    \n    .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n      display: none;\n    }\n    \n    .bb-capture-editor-notrecording .bb-capture-svg {\n      pointer-events: none !important;\n    }\n    \n    .bb-capture-toolbar {\n      position: fixed;\n      top: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      z-index: ${zIndexBase + 18};\n      background-color: #fff;\n      padding: 5px;\n      display: flex;\n      align-items: center;\n      border-radius: 8px;\n      box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n      transition: opacity 0.3s ease-in-out;\n    }\n    \n    .bb-capture-dismiss {\n      position: fixed;\n      top: 0px;\n      right: 0px;\n      z-index: ${zIndexBase + 18};\n      cursor: pointer;\n      -webkit-tap-highlight-color: transparent;\n      width: 36px;\n      height: 36px;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      background-color: ${primaryColor};\n      border-bottom-left-radius: ${formItemSmallBorderRadius}px;\n    }\n\n    [dir=rtl] .bb-capture-dismiss {\n      top: 0px;\n      left: 0px;\n      right: auto;\n      border-bottom-left-radius: 0px !important;\n      border-bottom-right-radius: ${formItemSmallBorderRadius}px;\n    }\n    \n    .bb-capture-dismiss svg path {\n      fill: ${contrastColor};\n    }\n    \n    .bb-capture-dismiss svg {\n      width: 20px;\n      height: 20px;\n      object-fit: contain;\n    }\n    \n    .bb-capture-button-next {\n      font-family: sans-serif;\n      box-sizing: border-box;\n      font-weight: 600;\n      text-align: center;\n      width: auto;\n      cursor: pointer;\n      -webkit-tap-highlight-color: transparent;\n      margin: 0px;\n      line-height: 36px;\n      padding: 0px 12px;\n      font-size: 15px;\n      margin-left: 12px;\n    }\n\n    [dir=rtl].bb-capture-editor .bb-capture-button-next {\n      margin-left: auto;\n      margin-right: 12px;\n    }\n    \n    .bb-capture-toolbar-item-spacer {\n      width: 1px;\n      height: 38px;\n      min-width: 1px;\n      margin: 0px 5px;\n    }\n    \n    .bb-capture-toolbar-item {\n      width: 42px;\n      height: 38px;\n      min-width: 42px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      cursor: pointer;\n      -webkit-tap-highlight-color: transparent;\n      position: relative;\n      margin-right: 5px;\n    }\n\n    .drag-handle-item {\n      cursor: grab !important;\n      width: 34px;\n      min-width: 34px;\n    }\n\n    .drag-handle-item svg {\n      width: 18px !important;\n      height: 18px !important;\n    }\n    \n    .bb-capture-toolbar-item svg {\n      width: 23px;\n      height: 23px;\n      object-fit: contain;\n    }\n    \n    .bb-capture-toolbar-item-selectedcolor {\n      border-radius: 100%;\n      width: 20px;\n      height: 20px;\n      background-color: #db4035;\n    }\n    \n    .bb-capture-toolbar-item[data-type=\"undo\"] svg {\n      width: 18px;\n      height: 18px;\n    }\n    \n    .bb-capture-toolbar-item[data-active=\"true\"] {\n      position: relative;\n    }\n    \n    .bb-capture-preview {\n      display: none;\n      background-color: rgba(0, 0, 0, 0.6);\n      position: fixed;\n      top: 0px;\n      left: 0px;\n      width: 100vw;\n      height: 100vh;\n      justify-content: center;\n      align-items: center;\n      z-index: ${zIndexBase + 20};\n    }\n    \n    .bb-capture-preview-inner {\n      background-color: #fff;\n      padding: 0px;\n      box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n      border-radius: 8px;\n      flex-direction: column;\n      max-width: 640px;\n      width: 100%;\n      margin: 20px;\n    }\n    \n    .bb-capture-preview-inner video {\n      border-radius: 8px 8px 0px 0px;\n      display: block;\n      border: 0px;\n      outline: none;\n      width: 100%;\n      max-height: 60vh;\n    }\n    \n    .bb-capture-preview-buttons {\n      display: flex;\n      justify-content: space-between;\n      padding: 14px;\n    }\n    \n    .bb-capture-preview-retrybutton {\n      font-family: sans-serif;\n      border-radius: 21px;\n      box-sizing: border-box;\n      padding: 12px 26px;\n      font-size: 16px;\n      line-height: 19px;\n      font-weight: 600;\n      text-align: center;\n      margin-top: 0px;\n      margin-bottom: 0px;\n      cursor: pointer;\n      -webkit-tap-highlight-color: transparent;\n    }\n    \n    .bb-capture-preview-sendbutton {\n      font-family: sans-serif;\n      border-radius: 21px;\n      box-sizing: border-box;\n      padding: 12px 26px;\n      font-size: 16px;\n      line-height: 19px;\n      font-weight: 600;\n      text-align: center;\n      margin-top: 0px;\n      margin-bottom: 0px;\n      cursor: pointer;\n      -webkit-tap-highlight-color: transparent;\n    }\n    \n    .bb-capture-preview-retrybutton:hover,\n    .bb-capture-preview-sendbutton:hover {\n      opacity: 0.9;\n    }\n    \n    .bb-capture-toolbar-item-recording {\n      margin-right: 0px;\n    }\n    \n    .bb-capture-toolbar-item-recording svg {\n      width: 33px;\n      height: 33px;\n    }\n    \n    .bb-capture-toolbar-item-colorpicker {\n      position: fixed;\n      top: 70px;\n      left: 50%;\n      transform: translateX(-50%);\n      z-index: ${zIndexBase + 18};\n      background-color: #fff;\n      display: none;\n      padding: 10px;\n      box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n      border-radius: 8px;\n    }\n    \n    .bb-capture-toolbar-item-color {\n      width: 20px;\n      height: 20px;\n      border-radius: 100%;\n      margin-right: 12px;\n      box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n      cursor: pointer;\n      -webkit-tap-highlight-color: transparent;\n    }\n    \n    .bb-capture-toolbar-item-color:hover {\n      box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n    }\n    \n    .bb-capture-toolbar-item-color:last-of-type {\n      margin-right: 0px;\n    }\n    \n    [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n      margin-right: auto;\n      margin-left: 12px;\n    }\n    \n    [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n      margin-right: auto;\n      margin-left: 0px;\n    }\n    \n    .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:first-of-type {\n      display: none;\n    }\n    \n    .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:nth-of-type(2) {\n      display: block;\n    }\n    \n    .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:first-of-type {\n      display: block;\n    }\n    \n    .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:nth-of-type(2) {\n      display: none;\n    }\n    \n    .bb-capture-toolbar-item--active {\n      background-color: #eee;\n    }\n    \n    .bb-capture-toolbar-item:hover svg {\n      opacity: 1;\n    }\n    \n    .bb-capture-toolbar-item--active {\n      background-color: #f8f8f8;\n    }\n    \n    .bb-capture-toolbar-item--active svg {\n      opacity: 1;\n    }\n    \n    .bb-capture-toolbar-item--inactivecross::before {\n      content: \"\";\n      position: absolute;\n      top: 0;\n      right: 0;\n      bottom: 0;\n      left: 0;\n      height: 3px;\n      width: 26px;\n      margin: auto;\n      border-radius: 4px;\n      background-color: #e80000;\n      transform: rotate(45deg);\n    }\n    \n    .bb-capture-toolbar-item--inactivecross svg {\n      fill: #eee;\n    }\n    \n    .bb-capture-toolbar-item-timer {\n      text-align: left;\n      line-height: 32px;\n      font-size: 14px;\n      font-family: sans-serif;\n      margin: 5px;\n      min-width: 40px;\n      display: none;\n    }\n    \n    .bb-capture-toolbar-item .bb-tooltip {\n      background-color: #555;\n      color: #fff;\n      visibility: hidden;\n      font-size: 14px;\n      font-family: sans-serif;\n      text-align: center;\n      padding: 5px 10px;\n      position: absolute;\n      z-index: 1;\n      top: 45px;\n      left: 0px;\n      transform: translateX(calc(-50% + 21px));\n      opacity: 0;\n      transition: opacity 0.3s;\n      white-space: nowrap;\n    }\n    \n    .bb-capture-toolbar-item .bb-tooltip::after {\n      content: \"\";\n      position: absolute;\n      bottom: 100%;\n      left: 50%;\n      margin-left: -5px;\n      border-width: 5px;\n      border-style: solid;\n      transform: rotate(180deg);\n      border-color: #555 transparent transparent transparent;\n    }\n    \n    .bb-capture-toolbar-item:hover .bb-tooltip {\n      visibility: visible;\n      opacity: 1;\n    }\n    \n    .bb-capture-options {\n      display: none;\n    }\n    \n    .bb-capture-options--active {\n      display: flex;\n    }\n\n    @keyframes bbFadeOutRight {\n      from {\n        opacity: 1;\n      }\n    \n      to {\n        opacity: 0;\n      }\n    }\n    \n    @keyframes bbFadeOutDown {\n      from {\n        opacity: 1;\n      }\n    \n      to {\n        opacity: 0;\n        transform: translate3d(0, 100%, 0);\n      }\n    }\n    \n    @keyframes bbFadeInOpacity {\n      from {\n        opacity: 0;\n      }\n    \n      to {\n        opacity: 1;\n      }\n    }\n    \n    @keyframes bbZoomOut {\n      from {\n        opacity: 1;\n      }\n    \n      50% {\n        opacity: 0;\n        transform: scale3d(0.3, 0.3, 0.3);\n      }\n    \n      to {\n        opacity: 0;\n      }\n    }\n    \n    @keyframes bbZoomIn {\n      from {\n        opacity: 0;\n        transform: scale3d(0.3, 0.3, 0.3);\n      }\n    \n      50% {\n        opacity: 1;\n      }\n    }\n    \n    @keyframes bbRecIconContFade {\n      0% {\n        fill: #b10802;\n      }\n      50% {\n        fill: #ff0000;\n      }\n      100% {\n        fill: #b10802;\n      }\n    }  \n    .bb-capture-preview-retrybutton {\n      color: ${contrastBackgroundColor};\n      border-radius: ${buttonBorderRadius}px;\n      background-color: ${backgroundColorHover};\n    }\n    .bb-capture-preview-retrybutton:hover {\n      background-color: ${hoverHoverColor};\n    }\n    @keyframes bb-suc-fill {\n      100% {\n        box-shadow: inset 0px 0px 0px 30px ${primaryColor};\n      }\n    }\n    .bb-capture-toolbar-item-spacer {\n      background-color: ${backgroundColorHover};\n    }\n    .bb-tooltip {\n      border-radius: ${formItemBorderRadius}px;\n    }\n    @keyframes bbRecIconFade {\n      0% {\n        fill: transparent;\n      }\n      50% {\n        fill: ${hoverHoverColor};\n      }\n      100% {\n        fill: transparent;\n      }\n    }\n    .bb-capture-preview-sendbutton {\n      color: ${contrastColor};\n      background-color: ${primaryColor};\n      border-radius: ${buttonBorderRadius}px;\n    }\n    .bb-capture-button-next {\n      color: ${contrastColor};\n      background-color: ${primaryColor};\n      border-radius: ${formItemSmallBorderRadius}px;\n    }\n    .bb-capture-preview-inner {\n      background-color: ${backgroundColor};\n      border-radius: ${formItemBorderRadius}px;\n    }\n    .bb-capture-toolbar-item-timer {\n      color: ${subTextColor};\n    }\n    .bb-svg-path {\n      fill: ${contrastBackgroundColor};\n    }\n    .bb-capture-toolbar-item {\n      border-radius: ${formItemBorderRadius}px;\n    }\n    .bb-capture-toolbar {\n      background-color: ${backgroundColor};\n      border-radius: ${formItemBorderRadius}px;\n    }\n    .bb-capture-toolbar-item-colorpicker {\n      background-color: ${backgroundColor};\n    }\n    .bb-capture-toolbar-item--active {\n      background-color: ${backgroundColorHover};\n    }\n    .bb-feedback-button-classic {\n      border-top-left-radius: ${formItemBorderRadius}px;\n      border-top-right-radius: ${formItemBorderRadius}px;\n    }\n    .bb-logo-logo--default path {\n      fill: ${contrastButtonColor};\n    }\n    .bb-logo-arrowdown {\n      fill: ${contrastButtonColor};\n    }\n    .bb-feedback-button-icon {\n        background-color: ${buttonColor};\n    }\n    .bb-feedback-button-classic {\n      background-color: ${buttonColor};\n      color: ${contrastButtonColor};\n    }\n\n    @media only screen and (max-width: 450px) {\n      [dir=rtl].gleap-frame-container,\n      .gleap-frame-container {\n        left: 0px;\n        right: 0px;\n        width: 100vw;\n        max-width: 100vw;\n        min-height: 100vh;\n        max-height: 100vh;\n        min-height: 100dvh !important;\n        max-height: 100dvh !important;\n        top: 0px;\n        bottom: 0px;\n        border-radius: 0px;\n        animation-name: gleapFadeInUpMobile;\n      }\n\n      .gleap-frame-container-inner {\n        width: 100vw;\n        height: 100%;\n      }\n\n      .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n        max-height: calc(var(--glvh, 1vh) * 100) !important;\n      }\n\n      .gleap-frame-container--survey {\n        height: auto !important;\n        top: initial !important;\n        bottom: 0px !important;\n        min-height: initial !important;\n      }\n\n      .gleap-frame-container--survey .gleap-frame-container-inner {\n        height: 100vh !important;\n      }\n\n      .bb-tooltip {\n        display: none !important;\n      }\n    \n      .bb-capture-toolbar-item-colorpicker {\n        top: 75px;\n      }\n    \n      .bb-capture-button-next {\n        margin-left: auto;\n      }\n    \n      .bb-capture-dismiss {\n        display: none;\n      }\n    \n      .bb-capture-toolbar {\n        top: 15px;\n        right: 15px;\n        left: 15px;\n        width: auto;\n        transform: none;\n      }\n\n      .bb-capture-editor-drag-info {\n        display: none;\n      }\n    \n      .bb-capture-editor-borderlayer {\n        border-width: 4px;\n      }\n    }\n    \n    @media print {\n      .bb-feedback-button {\n        display: none !important;\n      }\n      \n      .gleap-frame-container {\n        display: none !important;\n      }\n    }\n\n    .gleap-tour-sender {\n      display: flex;\n      align-items: center;\n      justify-content: flex-start;\n      margin-bottom: 10px;\n    }\n\n    .gleap-tour-sender-image {\n      width: 32px;\n      height: 32px;\n      border-radius: 32px;\n      margin-right: 10px;\n      background-size: cover;\n      background-repeat: no-repeat;\n    }\n\n    .gleap-tour-popover.gleap-tour-popover-post {\n      min-width: 550px;\n      max-width: 550px;\n    }\n\n    @media only screen and (max-width: 450px) {\n      .gleap-tour-popover.gleap-tour-popover-post {\n        min-width: calc(100vw - 40px);\n        max-width: calc(100vw - 40px);\n      }\n    }\n\n    .gleap-tour-message,\n    .gleap-tour-message p,\n    .gleap-tour-message ul {\n      color: ${contrastBackgroundColor};\n    }\n\n    .gleap-tour-message h2 {\n      font-weight: 600;\n      font-size: 22px;\n    }\n\n    .gleap-tour-message h3 {\n      font-weight: 600;\n      font-size: 18px;\n    }\n\n    .gleap-tour-message p {\n      line-height: 1.3;\n      margin-bottom: 10px !important;\n      margin-top: 10px !important;\n    }\n\n    .gleap-tour-message ul {\n      line-height: 1.3;\n      padding-left: 20px;\n      margin-top: 10px !important;\n      margin-bottom: 10px !important;\n    }\n\n    .gleap-tour-message {\n      max-height: calc(80vh - 100px) !important;\n      overflow-y: auto;\n      min-width: 270px;\n    }\n\n    .gleap-tour-message::-webkit-scrollbar {\n      width: 5px;\n    }\n\n    .gleap-tour-message::-webkit-scrollbar-track {\n      border-radius: 0px;\n    }\n    \n    .gleap-tour-message::-webkit-scrollbar-thumb {\n      background: ${hoverHoverColor}; \n      border-radius: 5px;\n    }\n\n    .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n      background: ${subTextColor};\n    }\n\n    @media only screen and (max-width: 450px) {\n      .gleap-tour-message {\n        min-width: auto !important;\n      }\n    }\n\n    .gleap-tour-message iframe {\n      width: 100%;\n      height: 300px;\n      margin-top: 10px;\n      margin-bottom: 10px;\n      border: none;\n      outline: none;\n      display: block;\n    }\n\n    .gleap-tour-sender-name {\n      font-size: 15px;\n    }\n\n    .gleap-tour-video {\n      width: 100%;\n      max-width: 100%;\n    }\n\n    .gleap-tour-video-svg--fullscreen {\n      width: 100% !important;\n      height: 100% !important;\n      top: 0px !important;\n      left: 0px !important;\n      right: 0px !important;\n      bottom: 0px !important;\n    }\n\n    .gleap-tour-video--playing .gleap-tour-video-playpause {\n      opacity: 0;\n    }\n    \n    .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n      opacity: 1;\n    }\n\n    .gleap-tour-popover-video-pointer {\n      padding: 0px !important;\n      border-radius: 8px;\n      position: relative;\n      background-color: transparent !important;\n    }\n\n    .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n      position: absolute;\n      top: 0px;\n      left: 20px;\n      right: 20px;\n      opacity: 0;\n      transition: opacity 200ms ease-in-out;\n    }\n\n    .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n      padding: 5px 12px;\n    }\n\n    .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n      right: 40px !important;\n    }\n\n    .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n      opacity: 1;\n    }\n\n    .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n      padding-right: 20px;\n    }\n\n    .gleap-tour-video video {\n      width: 100%;\n      max-width: 100%;\n      height: auto;\n      border: none;\n      outline: none;\n      display: block;\n      border-radius: 8px;\n    }\n\n    .gleap-admin-collapse-ui {\n      z-index: ${zIndexBase + 35};\n      cursor: pointer;\n      position: fixed;\n      bottom: 75px;\n      right: 20px;\n      width: 32px;\n      height: 32px;\n      border-radius: 100%;\n      background-color: #fff;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n    }\n\n    .gleap-admin-collapse-ui svg {\n      width: 20px;\n      height: 14px;\n      fill: #000 !important;\n    }\n\n    .gleap-admin-collapse-ui-active {\n      bottom: 20px !important;\n    }\n\n    .gleap-admin-collapse-ui-active svg {\n      transform: rotate(180deg);\n    }\n\n    .gleap-admin-frame-container-active {\n      display: none !important;\n    }\n\n    .gleap-admin-frame-container {\n      position: fixed;\n      bottom: 0px;\n      left: 0px;\n      right: 0px;\n      width: 100vw;\n      z-index: ${zIndexBase + 40};\n    }\n\n    .gleap-admin-frame {\n      width: 100%;\n      height: 100% !important;\n      border: none;\n      outline: none;\n      display: block;\n    }\n    \n    .gleap-tour-message .linktype-link {\n      display: inline-block !important;\n      background-color: transparent !important;\n      color: ${buttonColor} !important;\n    }\n\n    .gleap-tooltip .linktype-button,\n    .gleap-tour-message .linktype-button {\n      display: inline-block !important;\n      border-radius: 5px;\n      box-sizing: border-box;\n      padding: 10px 20px !important;\n      text-decoration: none !important;\n      background-color: ${buttonColor} !important;\n      color: ${contrastButtonColor} !important;\n    }\n\n    .gleap-tour-message img {\n      width: 100%;\n      max-width: 100%;\n      min-height: 260px;\n      height: auto;\n      margin-top: 10px;\n      margin-bottom: 10px;\n      object-fit: cover;\n    }\n\n    .gleap-tour-active .gleap-tour-overlay {\n      pointer-events: none;\n    }\n    \n    .gleap-tour-active * {\n      pointer-events: none;\n    }\n    \n    .gleap-tour-active .gleap-tour-active-element,\n    .gleap-tour-active .gleap-tour-active-element *,\n    .gleap-tour-popover,\n    .gleap-tour-popover * {\n      pointer-events: auto;\n    }\n    \n    @keyframes animate-fade-in {\n      0% {\n        opacity: 0;\n      }\n    \n      to {\n        opacity: 1;\n      }\n    }\n    \n    .gleap-tour-fade .gleap-tour-overlay {\n      animation: animate-fade-in 200ms ease-in-out;\n    }\n    \n    .gleap-tour-fade .gleap-tour-popover {\n      animation: animate-fade-in 200ms;\n    }\n\n    .gleap-tour-video-playpause {\n      position: absolute;\n      bottom: 8px;\n      left: 8px;\n      width: 32px;\n      height: 32px;\n      padding: 4px;\n      background-color: rgba(0,0,0,0.5);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      cursor: pointer;\n      border-radius: 8px;\n      transition: opacity 200ms ease-in-out;\n    }\n\n    .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n      display: none !important;\n    }\n\n    .gleap-tour-video-playpause svg {\n      width: 34px;\n      height: auto;\n      fill: #fff;\n    }\n    \n    /* Popover styles */\n    .gleap-tour-popover {\n      all: unset;\n      box-sizing: border-box;\n      color: #2d2d2d;\n      margin: 0;\n      padding: 15px;\n      border-radius: ${formItemBorderRadius}px;\n      min-width: 250px;\n      max-width: 300px;\n      box-shadow: 0 1px 10px #0006;\n      z-index: 1000000000;\n      position: fixed;\n      top: 0;\n      right: 0;\n      background-color: #fff;\n    }\n    \n    .gleap-tour-popover * {\n      font-family: \"Helvetica Neue\", Inter, ui-sans-serif, \"Apple Color Emoji\", Helvetica, Arial, sans-serif;\n    }\n    \n    .gleap-tour-popover-title {\n      font: 19px / normal sans-serif;\n      font-weight: 700;\n      display: block;\n      position: relative;\n      line-height: 1.5;\n      zoom: 1;\n      margin: 0;\n    }\n    \n    .gleap-tour-popover-close-btn {\n      all: unset;\n      position: absolute;\n      top: 5px;\n      right: 5px;\n      width: 32px;\n      height: 32px;\n      cursor: pointer;\n      font-size: 30px;\n      font-weight: 500;\n      line-height: 32px;\n      color: #d2d2d2;\n      z-index: 1;\n      text-align: center;\n      transition: color;\n      transition-duration: 200ms;\n    }\n    \n    .gleap-tour-popover-close-btn:hover,\n    .gleap-tour-popover-close-btn:focus {\n      color: #2d2d2d;\n    }\n    \n    .gleap-tour-popover-title[style*=\"block\"] + .gleap-tour-popover-description {\n      margin-top: 5px;\n    }\n    \n    .gleap-tour-popover-description {\n      margin-bottom: 0;\n      font: 15px / normal sans-serif;\n      line-height: 1.5;\n      font-weight: 400;\n      zoom: 1;\n    }\n    \n    .gleap-tour-popover-footer {\n      margin-top: 15px;\n      text-align: right;\n      zoom: 1;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n    \n    .gleap-tour-popover-progress-text {\n      font-size: 13px;\n      font-weight: 400;\n      color: #727272;\n      zoom: 1;\n    }\n    \n    .gleap-tour-popover-footer button {\n      background-color: ${primaryColor};\n      color: ${contrastColor};\n      border-radius: ${formItemSmallBorderRadius}px;\n      box-sizing: border-box;\n      padding: 10px 20px;\n      font-size: 14px;\n      font-weight: bold;\n      line-height: 21px;\n      border: none;\n      text-align: center;\n      cursor: pointer;\n      -webkit-tap-highlight-color: transparent;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      box-shadow: none !important;\n      outline: none !important;\n    }\n\n    .gleap-tour-popover-prev-btn {\n      color: ${contrastBackgroundColor} !important;\n      background-color: ${backgroundColorHover} !important;\n      margin-right: 3px;\n    }\n\n    .gleap-tour-popover-prev-btn:hover {\n      background-color: ${primaryColor}22 !important;\n      color: ${primaryColor} !important;\n    }\n    \n    .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n      opacity: 0.5;\n      pointer-events: none;\n    }\n    \n    .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n      pointer-events: none !important;\n    }\n    \n    .gleap-tour-popover-navigation-btns {\n      display: flex;\n      flex-grow: 1;\n      justify-content: flex-end;\n    }\n    \n    .gleap-tour-popover-navigation-btns button + button {\n      margin-left: 4px;\n    }\n    \n    .gleap-tour-popover-arrow {\n      content: \"\";\n      position: absolute;\n      border: 5px solid #fff;\n    }\n    \n    .gleap-tour-popover-arrow-side-over {\n      display: none;\n    }\n    \n    /** Popover Arrow Sides **/\n    .gleap-tour-popover-arrow-side-left {\n      left: 100%;\n      border-right-color: transparent;\n      border-bottom-color: transparent;\n      border-top-color: transparent;\n    }\n    \n    .gleap-tour-popover-arrow-side-right {\n      right: 100%;\n      border-left-color: transparent;\n      border-bottom-color: transparent;\n      border-top-color: transparent;\n    }\n    \n    .gleap-tour-popover-arrow-side-top {\n      top: 100%;\n      border-right-color: transparent;\n      border-bottom-color: transparent;\n      border-left-color: transparent;\n    }\n    \n    .gleap-tour-popover-arrow-side-bottom {\n      bottom: 100%;\n      border-left-color: transparent;\n      border-top-color: transparent;\n      border-right-color: transparent;\n    }\n    \n    .gleap-tour-popover-arrow-side-center {\n      display: none;\n    }\n    \n    /* Left/Start + Right/Start */\n    .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n    .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n      top: 15px;\n    }\n    \n    /* Top/Start + Bottom/Start */\n    .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n    .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n      left: 15px;\n    }\n    \n    /* End/Left + End/Right */\n    .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n    .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n      bottom: 15px;\n    }\n    \n    /* Top/End + Bottom/End */\n    .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n    .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n      right: 15px;\n    }\n    \n    /* Left/Center + Right/Center */\n    .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n    .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n      top: 50%;\n      margin-top: -5px;\n    }\n    \n    /* Top/Center + Bottom/Center */\n    .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n    .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n      left: 50%;\n      margin-left: -5px;\n    }\n    \n    /* No arrow */\n    .gleap-tour-popover-arrow-none {\n      display: none;\n    }    \n\n    /* Modal styles */\n    .gleap-modal-wrapper {\n      position: fixed;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      z-index: ${zIndexBase + 40};\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n\n    .gleap-modal-backdrop {\n      position: absolute;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.5);\n      z-index: ${zIndexBase + 41};\n    }\n\n    .gleap-modal {\n      position: relative;\n      width: 90%;\n      max-width: 600px;\n      max-height: 90vh;\n      z-index: ${zIndexBase + 100};\n      background-color: ${backgroundColor};\n      border-radius: ${containerRadius}px;\n      overflow: hidden;\n      box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n      animation-duration: 0.3s;\n      animation-fill-mode: both;\n      animation-name: gleapFadeInUp;\n    }\n\n    .gleap-modal-frame {\n      width: 100%;\n      border: none;\n      display: block;\n      outline: none;\n    }\n\n    body.gleap-modal-open {\n      overflow: hidden;\n    }\n\n    @keyframes gleapFadeInUp {\n      from {\n        opacity: 0;\n        transform: translate3d(0, 20px, 0);\n      }\n      to {\n        opacity: 1;\n        transform: translate3d(0, 0, 0);\n      }\n    }\n    `;\n\n  const oldNode = document.querySelector('.gleap-styles');\n  if (oldNode) {\n    oldNode.remove();\n  }\n  const node = document.createElement('style');\n  node.innerHTML = colorStyleSheet;\n  node.className = 'gleap-styles';\n  document.body.appendChild(node);\n};\n\nexport const loadIcon = function (name, color) {\n  if (name === 'button') {\n    return `<svg class=\"bb-logo-logo bb-logo-logo--default\" width=\"145\" height=\"144\" viewBox=\"0 0 145 144\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M38.9534 15H105.047C113.857 15 121 22.1426 121 30.9534L121 89.5238L121 96.015L121 125.541C121 128.759 117.393 130.66 114.739 128.84L90.1188 111.968H38.9534C30.1426 111.968 23 104.826 23 96.015V30.9534C23 22.1426 30.1426 15 38.9534 15Z\" fill=\"white\"/>\n    </svg>`;\n  }\n\n  if (name === 'drag') {\n    return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"><!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--><path d=\"M64 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 160a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM96 416a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96-288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 448a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"/></svg>`;\n  }\n\n  if (name === 'unmute') {\n    return `<svg id=\"tooltip-svg-unmute\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\"><path id=\"tooltip-svg-unmute-path\" d=\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.1 386.2C556.7 352 576 306.3 576 256c0-60.1-27.7-113.8-70.9-149c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C507.3 170.7 528 210.9 528 256c0 39.1-15.6 74.5-40.9 100.5L449 326.6c19-17.5 31-42.7 31-70.6c0-30.1-13.9-56.9-35.4-74.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C425.1 227.6 432 241 432 256s-6.9 28.4-17.7 37.3c-1.3 1-2.4 2.2-3.4 3.4L352 250.6V64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L197.8 129.8 38.8 5.1zM352 373.3L82.9 161.3C53.8 167.4 32 193.1 32 224v64c0 35.3 28.7 64 64 64h67.8L298.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S352 460.6 352 448V373.3z\"/></svg>`;\n  }\n\n  if (name === 'mute') {\n    return `<svg id=\"tooltip-svg-mute\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\"><path id=\"tooltip-svg-mute-path\" d=\"M533.6 32.5C598.5 85.3 640 165.8 640 256s-41.5 170.8-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"/></svg>`;\n  }\n\n  if (name === 'replay') {\n    return `<svg id=\"tooltip-svg-replay\" width=\"512\" height=\"512\" viewBox=\"0 0 512 512\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path id=\"tooltip-svg-replay-path\" d=\"M48.5 224H40C26.7 224 16 213.3 16 200V72C16 62.3 21.8 53.5 30.8 49.8C39.8 46.1 50.1 48.1 57 55L98.6 96.6C186.2 10.1 327.3 10.4 414.4 97.6C501.9 185.1 501.9 326.9 414.4 414.4C326.9 501.9 185.1 501.9 97.6 414.4C85.1 401.9 85.1 381.6 97.6 369.1C110.1 356.6 130.4 356.6 142.9 369.1C205.4 431.6 306.7 431.6 369.2 369.1C431.7 306.6 431.7 205.3 369.2 142.8C307 80.6 206.5 80.3 143.9 141.8L185 183C191.9 189.9 193.9 200.2 190.2 209.2C186.5 218.2 177.7 224 168 224H48.5Z\" />\n    </svg>`;\n  }\n\n  if (name === 'dismiss') {\n    return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"><path d=\"M294.6 166.6L317.3 144 272 98.7l-22.6 22.6L160 210.7 70.6 121.4 48 98.7 2.7 144l22.6 22.6L114.7 256 25.4 345.4 2.7 368 48 413.3l22.6-22.6L160 301.3l89.4 89.4L272 413.3 317.3 368l-22.6-22.6L205.3 256l89.4-89.4z\"/></svg>`;\n  }\n\n  if (name === 'blur') {\n    return `<svg width=\"1200pt\" height=\"1200pt\" version=\"1.1\" viewBox=\"0 0 1200 1200\" xmlns=\"http://www.w3.org/2000/svg\">\n <path class=\"bb-svg-path\" d=\"m602.25 1200c238.2 0 435.95-193.26 435.95-435.95 0-269.66-220.23-615.73-435.95-764.05-220.23 161.8-440.45 485.39-440.45 764.05 0 242.7 197.75 435.95 440.45 435.95zm-260.68-382.02c0 112.36 89.887 206.74 206.74 206.74v62.922c-148.32 0-274.16-121.35-274.16-269.66z\" fill=\"#333\"/>\n</svg>`;\n  }\n\n  if (name === 'pen') {\n    return `<svg width=\"1072px\" height=\"1034px\" viewBox=\"0 0 1072 1034\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n    <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <g transform=\"translate(-907.000000, -217.000000)\" fill-rule=\"nonzero\">\n            <g transform=\"translate(907.268457, 217.009827)\">\n                <g transform=\"translate(132.335119, 0.000000)\" fill=\"#000\" class=\"bb-svg-path\">\n                    <path d=\"M20.3764235,730.530173 L10.1884235,720.342173 C-0.791576454,709.362173 -3.16357645,692.432173 4.37592355,678.858173 L83.1809235,537.018173 C71.7589235,502.979173 82.3098335,463.998173 112.254924,440.706173 L655.334924,18.3161733 C689.951924,-8.6058267 739.197924,-5.5388267 770.214924,25.4684733 L913.774924,169.028473 C944.782924,200.040473 947.848924,249.286473 920.927224,283.908473 L498.537224,826.988473 C496.322424,829.836173 493.935624,832.543173 491.384924,835.090073 C467.271924,859.207073 432.513924,866.195073 402.232924,856.063073 L260.382924,934.868073 C246.804924,942.407173 229.874924,940.036073 218.894924,929.055573 L208.706924,918.867573 L20.3764235,730.530173 Z M866.006424,241.190173 C871.393124,234.264373 870.779824,224.417173 864.576724,218.213173 L721.016724,74.6531733 C714.813624,68.4500733 704.965724,67.8367733 698.043724,73.2234733 L154.963724,495.613473 C147.381724,501.507973 146.018424,512.433473 151.912924,520.015473 C152.358234,520.585783 152.834804,521.128773 153.346524,521.636573 L417.586524,785.886573 C424.379524,792.675673 435.391524,792.675673 442.180524,785.886573 C442.692244,785.374853 443.168804,784.831873 443.610224,784.265473 L866.006424,241.190173 Z M342.796424,809.480173 L129.746424,596.430173 L77.9264235,689.707173 L249.516424,861.297173 L342.796424,809.480173 Z\"></path>\n                </g>\n                <g transform=\"translate(-0.000000, 755.530173)\" fill=\"#EB144C\">\n                    <path d=\"M124.711543,0 L313.042043,188.3374 L233.288043,268.0914 C222.003043,279.3764 204.483043,281.5324 190.800043,273.3219 L16.8900429,168.9719 C-2.51595711,157.3309 -5.80895711,130.5499 10.1908429,114.5499 L124.711543,0 Z\" class=\"bb-pen-tip\"></path>\n                </g>\n            </g>\n        </g>\n    </g>\n</svg>`;\n  }\n\n  if (name === 'rect') {\n    return `<svg width=\"339px\" height=\"241px\" viewBox=\"0 0 339 241\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n    <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <g transform=\"translate(-0.000865, 0.000000)\" fill-rule=\"nonzero\">\n            <g transform=\"translate(0.000865, 0.000000)\" fill=\"#000000\" class=\"bb-svg-path\">\n                <path d=\"M339,0 L339,241 L0,241 L0,0 L339,0 Z M312.826351,26.168387 L26.1855674,26.168387 L26.1855674,214.41156 L312.826351,214.41156 L312.826351,26.168387 Z\"></path>\n            </g>\n            <g transform=\"translate(0.000000, 83.206095)\" fill=\"#EB144C\" class=\"bb-pen-tip\">\n                <path d=\"M0,0 L26.186,26.186 L26.1864325,131.205465 L131.204,131.205 L157.792,157.793 L0.000865118243,157.793905 L0,0 Z\"></path>\n            </g>\n        </g>\n    </g>\n</svg>`;\n  }\n\n  if (name === 'pointer') {\n    return `<svg width=\"1200pt\" height=\"1200pt\" version=\"1.1\" viewBox=\"0 0 1200 1200\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"m1050.7 508.95-225.94 157.5 160.31 160.31c4.4531 4.4531 6.9141 10.43 6.9141 16.758s-2.4609 12.305-6.9141 16.758l-126.09 126.09c-4.4531 4.4531-10.43 6.9141-16.758 6.9141-6.3281 0-12.188-2.4609-16.758-6.9141l-160.2-160.43-157.62 225.94c-3.3984 4.9219-9.0234 7.8516-14.883 7.8516-0.70313 0-1.5234 0-2.2266-0.11719-6.7969-0.82031-12.422-5.2734-14.766-11.719l-333.16-880.55c-2.5781-6.6797-0.9375-14.297 4.2188-19.336 5.0391-5.0391 12.656-6.6797 19.336-4.2188l880.66 333.05c6.3281 2.3438 10.781 8.0859 11.602 14.766 0.82031 6.7969-2.1094 13.359-7.7344 17.344z\" fill=\"#333\"/>\n   </svg>`;\n  }\n\n  if (name === 'clip') {\n    return `<svg width=\"600px\" height=\"1126px\" viewBox=\"0 0 600 1126\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n    <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <g transform=\"translate(-0.002000, 0.501000)\" fill=\"#333333\" fill-rule=\"nonzero\">\n            <path d=\"M225.002,1124.999 C165.33,1124.999 108.102,1101.292 65.902,1059.097 C23.707,1016.902 5.68434189e-14,959.671 5.68434189e-14,899.997 L5.68434189e-14,299.997 C5.68434189e-14,220.431 31.605,144.127 87.867,87.867 C144.129,31.605 220.437,-4.26325641e-14 299.997,-4.26325641e-14 C379.557,-4.26325641e-14 455.867,31.605 512.127,87.867 C568.389,144.129 599.994,220.437 599.994,299.997 L599.994,1012.497 C599.994,1025.895 592.8456,1038.274 581.244,1044.974 C569.642,1051.6732 555.346,1051.6732 543.744,1044.974 C532.142,1038.2748 524.994,1025.896 524.994,1012.497 L524.994,299.997 C524.994,240.325 501.287,183.097 459.092,140.897 C416.897,98.702 359.666,74.995 299.992,74.995 C240.318,74.995 183.092,98.702 140.892,140.897 C98.697,183.092 74.99,240.323 74.99,299.997 L74.99,899.997 C74.99,953.587 103.58,1003.107 149.99,1029.897 C196.4,1056.694 253.58,1056.694 299.99,1029.897 C346.4,1003.104 374.99,953.585 374.99,899.997 L374.99,337.497 C374.99,310.704 360.697,285.942 337.49,272.544 C314.283,259.149 285.697,259.149 262.49,272.544 C239.283,285.942 224.99,310.704 224.99,337.497 L224.99,824.997 C224.99,838.395 217.8416,850.774 206.24,857.474 C194.638,864.1732 180.342,864.1732 168.74,857.474 C157.138,850.7748 149.99,838.396 149.99,824.997 L149.99,337.497 C149.99,283.907 178.58,234.387 224.99,207.597 C271.4,180.8 328.58,180.8 374.99,207.597 C421.4,234.39 449.99,283.909 449.99,337.497 L449.99,899.997 C449.99,959.669 426.283,1016.897 384.088,1059.097 C341.893,1101.292 284.662,1124.999 224.988,1124.999 L225.002,1124.999 Z\" id=\"Path\"></path>\n        </g>\n    </g>\n</svg>`;\n  }\n\n  if (name === 'mic') {\n    return `<svg\n    width=\"1200pt\"\n    height=\"1200pt\"\n    version=\"1.1\"\n    viewBox=\"0 0 1200 1200\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <g class=\"bb-svg-path\">\n      <path\n        d=\"m600 862.5c144.75 0 262.5-117.75 262.5-262.5v-300c0-144.75-117.75-262.5-262.5-262.5s-262.5 117.75-262.5 262.5v300c0 144.75 117.75 262.5 262.5 262.5z\"\n      />\n      <path\n        d=\"m1012.5 600c0-20.707-16.793-37.5-37.5-37.5s-37.5 16.793-37.5 37.5c0 186.11-151.41 337.5-337.5 337.5s-337.5-151.39-337.5-337.5c0-20.707-16.793-37.5-37.5-37.5s-37.5 16.793-37.5 37.5c0 214.8 165.08 391.57 375 410.6v114.4c0 20.727 16.793 37.5 37.5 37.5s37.5-16.773 37.5-37.5v-114.4c209.92-19.031 375-195.8 375-410.6z\"\n      />\n    </g>\n  </svg>`;\n  }\n\n  if (name === 'camera') {\n    return `<svg width=\"1155px\" height=\"1004px\" viewBox=\"0 0 1155 1004\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n    <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <g fill=\"#333333\" fill-rule=\"nonzero\">\n            <g transform=\"translate(128.324095, 0.000000)\">\n                <path d=\"M42.7803063,0.00413459787 C31.4357421,0.00413459787 20.5549853,4.41399115 12.5336107,12.2572687 C4.51223664,20.1005462 0.00420584816,30.741831 0.00420584816,41.8370305 L0.00420584816,251.00151 C-0.156199045,262.200455 4.27736739,272.989996 12.315738,280.963903 C20.3585574,288.938257 31.3288589,293.431222 42.7803063,293.431222 C54.2317532,293.431222 65.2018267,288.938592 73.2448746,280.963903 C81.2832452,272.989549 85.7172445,262.200455 85.5564062,251.00151 L85.5564062,83.6699265 L256.660808,83.6699265 C268.112255,83.8267939 279.145066,79.4909873 287.298762,71.6298611 C295.452913,63.7643845 300.04718,53.0359758 300.04718,41.8370305 C300.04718,30.6380854 295.453255,19.9098998 287.298762,12.0441998 C279.144611,4.18307356 268.112255,-0.153157091 256.660808,0.00413459787 L42.7803063,0.00413459787 Z\"></path>\n                <path d=\"M983.227131,710.59444 C971.895913,710.764382 961.099907,715.326799 953.20401,723.279287 C945.312674,731.227538 940.964345,741.91668 941.119476,752.99849 L941.119476,920.330075 L770.015075,920.330075 C758.563631,920.173205 747.530815,924.509015 739.377123,932.370139 C731.222968,940.235615 726.628705,950.964028 726.628705,962.16297 C726.628705,973.361918 731.222627,984.090105 739.377123,991.955802 C747.531272,999.816926 758.563631,1004.15316 770.015075,1003.99587 L983.895579,1003.99587 C995.24014,1003.99587 1006.1209,999.586011 1014.14227,991.742733 C1022.16365,983.899455 1026.67168,973.258169 1026.67168,962.16297 L1026.67168,752.99849 C1026.83208,741.690223 1022.30053,730.801401 1014.11489,722.812989 C1005.93394,714.825472 994.790363,710.415949 983.227131,710.59444 L983.227131,710.59444 Z\"></path>\n                <path d=\"M983.227131,375.93127 C971.895913,376.101212 961.099907,380.66363 953.20401,388.61612 C945.312674,396.56437 940.964345,407.253512 941.119476,418.335325 L941.119476,585.66691 C940.959072,596.865853 945.39264,607.655394 953.431008,615.629303 C961.47383,623.603658 972.444131,628.096618 983.895579,628.096618 C995.347023,628.096618 1006.3171,623.603989 1014.36015,615.629303 C1022.39852,607.654947 1026.83251,596.865853 1026.67168,585.66691 L1026.67168,418.335325 C1026.83208,407.027056 1022.30053,396.138232 1014.11489,388.149822 C1005.93394,380.162305 994.790363,375.752783 983.227131,375.93127 L983.227131,375.93127 Z\"></path>\n                <path d=\"M769.974012,0.00413459787 C758.522563,-0.152733184 747.489752,4.18307356 739.336055,12.0441998 C731.181906,19.9096767 726.587637,30.6380854 726.587637,41.8370305 C726.587637,53.0359758 731.181564,63.7641611 739.336055,71.6298611 C747.490209,79.4909873 758.522563,83.8272181 769.974012,83.6699265 L941.078414,83.6699265 L941.078414,251.00151 C940.918009,262.200455 945.351572,272.989996 953.389945,280.963903 C961.432763,288.938257 972.403063,293.431222 983.854512,293.431222 C995.30596,293.431222 1006.27603,288.938592 1014.31908,280.963903 C1022.35745,272.989549 1026.79145,262.200455 1026.63061,251.00151 L1026.63061,41.8370305 C1026.63061,30.7426118 1022.12133,20.1017733 1014.10121,12.2572687 C1006.08109,4.41276405 995.199876,0.00413459787 983.854512,0.00413459787 L769.974012,0.00413459787 Z\"></path>\n                <path d=\"M427.765208,0.00413459787 C416.31376,-0.152733184 405.280949,4.18307356 397.127256,12.0441998 C388.973102,19.9096767 384.378838,30.6380854 384.378838,41.8370305 C384.378838,53.0359758 388.972761,63.7641611 397.127256,71.6298611 C405.281406,79.4909873 416.31376,83.8272181 427.765208,83.6699265 L598.86961,83.6699265 C610.321058,83.8267939 621.35387,79.4909873 629.507562,71.6298611 C637.661716,63.7643845 642.255985,53.0359758 642.255985,41.8370305 C642.255985,30.6380854 637.662058,19.9098998 629.507562,12.0441998 C621.353413,4.18307356 610.321058,-0.153157091 598.86961,0.00413459787 L427.765208,0.00413459787 Z\"></path>\n            </g>\n            <g transform=\"translate(0.000000, 427.000000)\">\n                <path d=\"M768.516184,22.1826583 C752.659627,13.73125 732.573775,13.73125 717.773442,24.29375 L562.379192,124.6375 L562.379192,31.6875 C562.379192,13.7330104 548.635081,0 530.666079,0 L31.7131123,0 C13.7441105,0 0,13.7330104 0,31.6875 L0,475.3125 C0,493.26699 13.7441105,507 31.7131123,507 L530.666079,507 C548.635081,507 562.379192,493.26699 562.379192,475.3125 L562.379192,382.3625 L717.773442,482.70625 C726.231681,487.9875 735.742444,491.157658 745.257258,491.157658 C753.715498,491.157658 761.113815,489.046567 769.572406,484.820862 C786.485185,475.313732 796,458.414612 796,439.400352 L796,68.6566021 C794.943601,48.5869719 785.428963,31.6878521 768.516184,22.1807219 L768.516184,22.1826583 Z\"></path>\n            </g>\n        </g>\n    </g>\n</svg>`;\n  }\n\n  if (name === 'recorderon') {\n    return `<svg width=\"1251px\" height=\"1251px\" viewBox=\"0 0 1251 1251\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n    <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <g>\n            <circle fill=\"#E31810\" cx=\"625.5\" cy=\"625.5\" r=\"625.5\"></circle>\n            <circle fill=\"#F71008\" cx=\"625\" cy=\"625\" r=\"507\"></circle>\n            <g transform=\"translate(175.000000, 449.000000)\" fill=\"#FFFFFF\" fill-rule=\"nonzero\">\n                <path d=\"M0,347.097493 L0,4.90250696 L135.528311,4.90250696 C161.471024,4.90250696 183.639743,9.49741034 202.034469,18.6872171 C220.429194,27.8770239 234.46286,40.8541449 244.135466,57.6185803 C253.808072,74.3830156 258.644376,94.0714804 258.644376,116.683975 C258.644376,139.40786 253.724206,158.929238 243.883867,175.248107 C234.043527,191.566976 219.814173,204.070682 201.195803,212.759227 C182.577434,221.447772 160.073248,225.792044 133.683247,225.792044 L42.9396629,225.792044 L42.9396629,167.64563 L121.941933,167.64563 C135.807866,167.64563 147.325536,165.751973 156.494943,161.964659 C165.66435,158.177344 172.51345,152.496373 177.042243,144.921744 C181.571035,137.347116 183.835432,127.934526 183.835432,116.683975 C183.835432,105.322032 181.571035,95.7423543 177.042243,87.9449425 C172.51345,80.1475308 165.636395,74.2159282 156.411077,70.1501349 C147.185759,66.0843416 135.584222,64.051445 121.606467,64.051445 L72.6284142,64.051445 L72.6284142,347.097493 L0,347.097493 Z M185.512762,191.37204 L270.888889,347.097493 L190.712487,347.097493 L107.181424,191.37204 L185.512762,191.37204 Z\"></path>\n                <polygon points=\"309.166667 347.097493 309.166667 4.90250696 540.126846 4.90250696 540.126846 64.5527072 381.634607 64.5527072 381.634607 146.091356 528.244113 146.091356 528.244113 205.741556 381.634607 205.741556 381.634607 287.447293 540.796296 287.447293 540.796296 347.097493\"></polygon>\n                <path d=\"M901,124.638783 L827.757943,124.638783 C826.420189,115.158428 823.68894,106.709759 819.564197,99.2927757 C815.439454,91.8757921 810.144176,85.5462611 803.678363,80.3041825 C797.212549,75.0621039 789.77129,71.0468948 781.354585,68.2585551 C772.93788,65.4702155 763.824427,64.0760456 754.014228,64.0760456 C736.288981,64.0760456 720.849065,68.4537389 707.69448,77.2091255 C694.539894,85.964512 684.339516,98.6793409 677.093346,115.353612 C669.847176,132.027883 666.224091,152.243346 666.224091,176 C666.224091,200.425856 669.875046,220.948035 677.176956,237.56654 C684.478866,254.185044 694.707113,266.732573 707.861699,275.209125 C721.016285,283.685678 736.233242,287.923954 753.51257,287.923954 C763.21129,287.923954 772.213263,286.641318 780.518488,284.076046 C788.823714,281.510773 796.209233,277.746515 802.675047,272.78327 C809.14086,267.820025 814.519748,261.769328 818.81171,254.631179 C823.103672,247.493029 826.08575,239.351077 827.757943,230.205323 L901,230.539924 C899.104848,246.26616 894.394837,261.406844 886.869968,275.961977 C879.3451,290.51711 869.256201,303.510773 856.603274,314.942966 C843.950346,326.375158 828.900608,335.409379 811.45406,342.045627 C794.007513,348.681876 774.303504,352 752.342035,352 C721.796641,352 694.512024,345.084918 670.488184,331.254753 C646.464343,317.424588 627.512821,297.404309 613.633619,271.193916 C599.754416,244.983523 592.814815,213.252218 592.814815,176 C592.814815,138.636248 599.838026,106.849176 613.884448,80.6387833 C627.93087,54.4283904 646.993871,34.4359949 671.073451,20.661597 C695.153031,6.88719899 722.242559,0 752.342035,0 C772.185393,0 790.607387,2.78833967 807.608016,8.36501901 C824.608646,13.9416984 839.686254,22.0557668 852.840839,32.7072243 C865.995425,43.3586819 876.72533,56.3802281 885.030556,71.7718631 C893.335782,87.1634981 898.65893,104.785805 901,124.638783 Z\"></path>\n            </g>\n        </g>\n    </g>\n</svg>`;\n  }\n\n  if (name === 'recorderoff') {\n    return `<svg width=\"1251px\" height=\"1251px\" viewBox=\"0 0 1251 1251\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n          <g class=\"bb-rec-on-circle\" fill=\"#EEEEEE\" fill-rule=\"nonzero\">\n              <path d=\"M625.5,0 C970.954111,0 1251,280.045889 1251,625.5 C1251,970.954111 970.954111,1251 625.5,1251 C280.045889,1251 0,970.954111 0,625.5 C0,280.045889 280.045889,0 625.5,0 Z M626,124 C348.753056,124 124,348.753056 124,626 C124,903.246944 348.753056,1128 626,1128 C903.246944,1128 1128,903.246944 1128,626 C1128,348.753056 903.246944,124 626,124 Z\"></path>\n          </g>\n          <g class=\"bb-rec-on-cont\" fill=\"#E31810\" transform=\"translate(86.000000, 86.000000)\" fill-rule=\"nonzero\">\n              <path d=\"M540,0 C241.2,0 0,241.2 0,540 C0,838.8 241.2,1080 540,1080 C838.8,1080 1080,838.8 1080,540 C1080,241.2 838.8,0 540,0 Z M777.6,741.6 C777.6,761.998 761.998,777.6 741.6,777.6 L338.4,777.6 C318.002,777.6 302.4,761.998 302.4,741.6 L302.4,338.4 C302.4,318.002 318.002,302.4 338.4,302.4 L741.6,302.4 C761.998,302.4 777.6,318.002 777.6,338.4 L777.6,741.6 Z\"></path>\n          </g>\n      </g>\n  </svg>`;\n  }\n\n  if (name === 'arrowdown') {\n    return `<svg class=\"bb-logo-arrowdown\" fill=\"${color}\" width=\"100pt\" height=\"100pt\" version=\"1.1\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"m50 77.637c-1.3477 0-2.6953-0.51562-3.7266-1.543l-44.73-44.73c-2.0586-2.0586-2.0586-5.3945 0-7.4531 2.0586-2.0586 5.3945-2.0586 7.4531 0l41.004 41 41.004-41c2.0586-2.0586 5.3945-2.0586 7.4531 0 2.0586 2.0586 2.0586 5.3945 0 7.4531l-44.73 44.727c-1.0312 1.0312-2.3789 1.5469-3.7266 1.5469z\"/>\n   </svg>`;\n  }\n\n  if (name === 'arrowleft') {\n    return `<svg fill=\"${color}\" width=\"100pt\" height=\"100pt\" version=\"1.1\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"m70.988 1.6211c2.1875-2.168 5.7344-2.168 7.9297 0 2.1836 2.168 2.1836 5.7227 0 7.8906l-46.016 40.445 46.016 40.5c2.1836 2.168 2.1836 5.668 0 7.8906-2.1953 2.168-5.7383 2.168-7.9297 0l-50.039-44.109c-1.168-1.168-1.668-2.7227-1.5898-4.2773-0.078125-1.5 0.42188-3.0547 1.5898-4.2227l50.039-44.109z\" fill-rule=\"evenodd\"/>\n   </svg>`;\n  }\n\n  if (name === 'close') {\n    return `<svg fill=\"${color}\" width=\"100pt\" height=\"100pt\" version=\"1.1\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"m72.812 33.02l-5.832-5.832-16.98 16.875-16.98-16.875-5.832 5.832 16.875 16.98-16.875 16.98 5.832 5.832 16.98-16.875 16.98 16.875 5.832-5.832-16.875-16.98z\"/>\n   </svg>`;\n  }\n\n  if (name === 'undo') {\n    return `<svg width=\"62px\" height=\"60px\" viewBox=\"0 0 62 60\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n    <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n      <g class=\"bb-svg-path\" transform=\"translate(-0.000500, 0.001926)\" fill-rule=\"nonzero\">\n        <path d=\"M28.0005,51.6270739 C24.9653,51.0684839 22.0825,49.8731739 19.5396,48.1192739 L13.8208,53.8380739 C17.9536,57.0060739 22.8403,59.0333739 28.0008,59.7286739 L28.0005,51.6270739 Z\" id=\"Path\"></path>\n        <path d=\"M2.2705,33.9980739 C2.96581,39.1582739 4.9932,44.0450739 8.1611,48.1780739 L13.8799,42.4592739 C12.126,39.9162739 10.9307,37.0334739 10.3721,33.9983739 L2.2705,33.9980739 Z\" id=\"Path\"></path>\n        <path d=\"M61.7305,33.9980739 L53.6289,33.9980739 C53.07031,37.0332739 51.875,39.9160739 50.1211,42.4589739 L55.8399,48.1777739 C59.0079,44.0449739 61.0352,39.1582739 61.7305,33.9977739 L61.7305,33.9980739 Z\" id=\"Path\"></path>\n        <path d=\"M4.0005,24.9980739 L24.0005,24.9980739 L24.0005,16.9980739 L14.27,16.9980739 C17.6762,12.3613739 22.7622,9.24417393 28.442,8.31057393 C34.1178,7.38088393 39.934,8.70901393 44.645,12.0175739 C49.352,15.3222739 52.5786,20.3417739 53.6294,25.9975739 L61.731,25.9975739 C60.6646,18.0834739 56.4888,10.9235739 50.129,6.09957393 C43.7657,1.27147393 35.746,-0.818426068 27.836,0.290973932 C19.9298,1.39647393 12.793,5.61127393 8,11.9979739 L8,0.997973932 L-3.55271368e-15,0.997973932 L-3.55271368e-15,20.9979739 C-3.55271368e-15,22.0604739 0.42188,23.0760739 1.1719,23.8260739 C1.92192,24.5760739 2.9375,24.9979739 4,24.9979739 L4.0005,24.9980739 Z\" id=\"Path\"></path>\n        <path d=\"M36.0005,51.6270739 L36.0005,59.7286739 C41.1607,59.0333639 46.0475,57.0059739 50.1805,53.8380739 L44.4617,48.1192739 C41.9187,49.8731739 39.0359,51.0684739 36.0008,51.6270739 L36.0005,51.6270739 Z\" id=\"Path\"></path>\n      </g>\n    </g>\n  </svg>`;\n  }\n\n  if (name === 'circle-dot') {\n    return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"${color}\" d=\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"/></svg>`;\n  }\n\n  if (name === 'circle-question') {\n    return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"${color}\" d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"/></svg>`;\n  }\n\n  if (name === 'circle-info') {\n    return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"${color}\" d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216 192V224h24 48 24v24 88h8 24v48H296 216 192V336h24zm72-144H224V128h64v64z\"/></svg>`;\n  }\n\n  if (name === 'circle-exclamation') {\n    return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"${color}\" d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm24-384v24V264v24H232V264 152 128h48zM232 368V320h48v48H232z\"/></svg>`;\n  }\n\n  if (name === 'circle-up') {\n    return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"${color}\" d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM384 256H304V384H208V256H128V224L256 96 384 224v32z\"/></svg>`;\n  }\n\n  if (name === 'circle-right') {\n    return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"${color}\" d=\"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM256 384l0-80-128 0 0-96 128 0 0-80 32 0L416 256 288 384l-32 0z\"/></svg>`;\n  }\n\n  return '';\n};\n","class GleapNetworkIntercepter {\n  startTimestamp = Date.now();\n  requestId = 0;\n  requests = {};\n  externalRequests = [];\n  maxRequests = 30;\n  filters = [];\n  defaultBlacklist = ['gleap.io'];\n  blacklist = [];\n  initialized = false;\n  stopped = false;\n  loadAllResources = false;\n\n  // GleapNetworkIntercepter singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapNetworkIntercepter();\n    }\n    return this.instance;\n  }\n\n  setLoadAllResources(loadAllResources) {\n    this.loadAllResources = loadAllResources;\n  }\n\n  isContentTypeSupported(contentType) {\n    if (typeof contentType !== 'string') {\n      return false;\n    }\n\n    if (contentType === '') {\n      return true;\n    }\n\n    contentType = contentType.toLocaleLowerCase();\n\n    const supportedContentTypes = ['text/', 'xml', 'json'];\n    for (var i = 0; i < supportedContentTypes.length; i++) {\n      if (contentType.includes(supportedContentTypes[i])) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  getRequests() {\n    var requests = JSON.parse(JSON.stringify(Object.values(this.requests)));\n\n    // Merge external requests into internal requests.\n    if (this.externalRequests && this.externalRequests.length > 0) {\n      requests = requests.concat(this.externalRequests);\n    }\n\n    if (this.filters && this.filters.length > 0) {\n      // Perform network log filtering.\n      for (var i = 0; i < requests.length; i++) {\n        var request = requests[i];\n\n        // Headers\n        if (request && request.request && request.request.headers) {\n          for (var j = 0; j < this.filters.length; j++) {\n            delete request.request.headers[this.filters[j]];\n          }\n        }\n\n        // Payload\n        if (request && request.request && request.request.payload) {\n          var payloadObj = request.request.payload;\n          try {\n            payloadObj = JSON.parse(request.request.payload);\n          } catch (e) {}\n\n          if (payloadObj) {\n            for (var j = 0; j < this.filters.length; j++) {\n              delete payloadObj[this.filters[j]];\n            }\n            request.request.payload = JSON.stringify(payloadObj);\n          }\n        }\n\n        // Response\n        if (request && request.response && request.response.responseText) {\n          try {\n            var data = JSON.parse(request.response.responseText);\n            for (var j = 0; j < this.filters.length; j++) {\n              delete data[this.filters[j]];\n            }\n            request.response.responseText = JSON.stringify(data);\n          } catch (e) {}\n        }\n      }\n    }\n\n    // Get static resources from performance.\n    try {\n      if (typeof window !== 'undefined' && window.performance) {\n        var resources = window.performance.getEntriesByType('resource');\n        for (var i = 0; i < resources.length; i++) {\n          var resource = resources[i];\n          if (resource && resource.name) {\n            if (\n              (this.loadAllResources || ['xmlhttprequest', 'fetch'].indexOf(resource.initiatorType) > -1) &&\n              !requests.find((request) => request.url === resource.name)\n            ) {\n              requests.push({\n                type: 'RESOURCE',\n                date: new Date(this.startTimestamp + resource.startTime),\n                url: resource.name,\n                duration: Math.round(resource.duration),\n                initiatorType: resource.initiatorType,\n              });\n            }\n          }\n        }\n      }\n    } catch (exp) {}\n\n    var blacklist = this.blacklist.concat(this.defaultBlacklist);\n    if (blacklist && blacklist.length > 0) {\n      try {\n        requests = requests.filter((request) => {\n          for (var i = 0; i < blacklist.length; i++) {\n            if (request && request.url && request.url.includes(blacklist[i])) {\n              return false;\n            }\n          }\n          return true;\n        });\n      } catch (exp) {}\n    }\n\n    return requests;\n  }\n\n  setMaxRequests(maxRequests) {\n    if (maxRequests > 70) {\n      maxRequests = 70;\n    }\n    this.maxRequests = maxRequests;\n  }\n\n  setStopped(stopped) {\n    this.stopped = stopped;\n  }\n\n  setFilters(filters) {\n    this.filters = this.filters.concat(filters ? filters : []);\n  }\n\n  setBlacklist(blacklist) {\n    this.blacklist = this.blacklist.concat(blacklist ? blacklist : []);\n  }\n\n  cleanRequests() {\n    var keys = Object.keys(this.requests);\n    if (keys.length > this.maxRequests) {\n      var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n      for (var i = 0; i < keysToRemove.length; i++) {\n        delete this.requests[keysToRemove[i]];\n      }\n    }\n  }\n\n  calcRequestTime(bbRequestId) {\n    if (!bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n      return;\n    }\n\n    var startDate = this.requests[bbRequestId]['date'];\n    if (startDate) {\n      this.requests[bbRequestId]['duration'] = new Date().getTime() - startDate.getTime();\n    }\n  }\n\n  getTextContentSize(text) {\n    var size = 0;\n    try {\n      size = new TextEncoder().encode(text).length;\n    } catch (exp) {\n      try {\n        size = encodeURI(s).split(/%..|./).length - 1;\n      } catch (exp) {\n        try {\n          size = new Blob([text]).size;\n        } catch (exp) {\n          size = text.length;\n        }\n      }\n    }\n\n    const kiloBytes = size / 1024;\n    const megaBytes = kiloBytes / 1024;\n    return megaBytes;\n  }\n\n  cleanupContentSize(text) {\n    const contentSize = this.getTextContentSize(text);\n    if (contentSize > 0.15) {\n      return '<content_too_large>';\n    }\n\n    return text;\n  }\n\n  cleanupPayload(payload) {\n    if (payload === undefined || payload === null) {\n      return '{}';\n    }\n\n    try {\n      if (typeof TextDecoder !== undefined && ArrayBuffer.isView(payload)) {\n        let value = new TextDecoder().decode(payload);\n        return value;\n      }\n    } catch (exp) {}\n\n    return payload;\n  }\n\n  preparePayload(payload) {\n    var payloadText = this.cleanupPayload(payload);\n    return this.cleanupContentSize(payloadText);\n  }\n\n  start() {\n    if (this.initialized) {\n      return;\n    }\n\n    this.initialized = true;\n    const self = this;\n    this.interceptNetworkRequests({\n      onFetch: (params, bbRequestId) => {\n        if (this.stopped || !bbRequestId || !this.requests) {\n          return;\n        }\n\n        if (params.length > 0 && typeof params[0] !== 'undefined' && typeof params[0].url !== 'undefined') {\n          this.requests[bbRequestId] = {\n            url: params[0].url,\n            date: new Date(),\n            request: {\n              payload: '',\n              headers: typeof params[0].headers !== 'undefined' ? Object.fromEntries(params[0].headers.entries()) : {},\n            },\n            type: typeof params[0].method !== 'undefined' ? params[0].method : '',\n          };\n        } else {\n          if (params.length >= 2 && params[1]) {\n            var method = params[1] && params[1].method ? params[1].method : 'GET';\n            this.requests[bbRequestId] = {\n              request: {\n                payload: self.preparePayload(params[1].body),\n                headers: params[1].headers,\n              },\n              type: method,\n              url: params[0],\n              date: new Date(),\n            };\n          } else {\n            this.requests[bbRequestId] = {\n              url: params[0],\n              date: new Date(),\n            };\n          }\n        }\n\n        this.cleanRequests();\n      },\n      onFetchLoad: (req, bbRequestId) => {\n        if (this.stopped || !bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n          return;\n        }\n\n        try {\n          this.requests[bbRequestId]['success'] = true;\n          this.requests[bbRequestId]['response'] = {\n            status: req.status,\n            statusText: '',\n            responseText: '<request_still_open>',\n          };\n          this.calcRequestTime(bbRequestId);\n        } catch (exp) {}\n\n        try {\n          var contentType = '';\n          if (req.headers && typeof req.headers.get !== 'undefined') {\n            contentType = req.headers.get('content-type');\n          }\n\n          if (this.isContentTypeSupported(contentType)) {\n            req\n              .text()\n              .then((responseText) => {\n                if (this.requests[bbRequestId]) {\n                  this.requests[bbRequestId]['success'] = true;\n                  this.requests[bbRequestId]['response'] = {\n                    status: req.status,\n                    statusText: req.statusText,\n                    responseText: self.cleanupContentSize(responseText),\n                  };\n                }\n                this.calcRequestTime(bbRequestId);\n                this.cleanRequests();\n              })\n              .catch((err) => {\n                this.cleanRequests();\n              });\n          } else {\n            if (this.requests[bbRequestId]) {\n              this.requests[bbRequestId]['success'] = true;\n              this.requests[bbRequestId]['response'] = {\n                status: req.status,\n                statusText: req.statusText,\n                responseText: '<content_type_not_supported>',\n              };\n            }\n            this.calcRequestTime(bbRequestId);\n            this.cleanRequests();\n          }\n        } catch (exp) {}\n      },\n      onFetchFailed: (err, bbRequestId) => {\n        if (this.stopped || !bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n          return;\n        }\n\n        this.requests[bbRequestId]['success'] = false;\n        this.calcRequestTime(bbRequestId);\n        this.cleanRequests();\n      },\n      onOpen: (request, args) => {\n        if (this.stopped) {\n          return;\n        }\n\n        if (request && request.bbRequestId && args.length >= 2 && this.requests) {\n          this.requests[request.bbRequestId] = {\n            type: args[0],\n            url: args[1],\n            date: new Date(),\n          };\n        }\n\n        this.cleanRequests();\n      },\n      onSend: (request, args) => {\n        if (this.stopped) {\n          return;\n        }\n\n        if (request && request.bbRequestId && this.requests && this.requests[request.bbRequestId]) {\n          this.requests[request.bbRequestId]['request'] = {\n            payload: this.preparePayload(args.length > 0 ? args[0] : '{}'),\n            headers: request.requestHeaders,\n          };\n        }\n\n        this.cleanRequests();\n      },\n      onError: (request, args) => {\n        if (\n          !this.stopped &&\n          this.requests &&\n          request &&\n          request.currentTarget &&\n          request.currentTarget.bbRequestId &&\n          this.requests[request.currentTarget.bbRequestId]\n        ) {\n          this.requests[request.currentTarget.bbRequestId]['success'] = false;\n          this.calcRequestTime(request.bbRequestId);\n        }\n\n        this.cleanRequests();\n      },\n      onLoad: (request, args) => {\n        if (this.stopped) {\n          return;\n        }\n\n        if (\n          request &&\n          request.currentTarget &&\n          request.currentTarget.bbRequestId &&\n          this.requests &&\n          this.requests[request.currentTarget.bbRequestId]\n        ) {\n          var target = request.currentTarget;\n          var responseType = target.responseType;\n          var responseText = '<' + responseType + '>';\n          if (responseType === '' || responseType === 'text') {\n            responseText = this.cleanupContentSize(target.responseText);\n          }\n\n          this.requests[target.bbRequestId]['success'] = true;\n          this.requests[target.bbRequestId]['response'] = {\n            status: target.status,\n            statusText: target.statusText,\n            responseText: responseText,\n          };\n\n          this.calcRequestTime(target.bbRequestId);\n        }\n\n        this.cleanRequests();\n      },\n    });\n  }\n\n  interceptNetworkRequests(callback) {\n    var self = this;\n    const open = XMLHttpRequest.prototype.open;\n    const send = XMLHttpRequest.prototype.send;\n\n    // Only override open and send if they haven't been overridden already.\n    if (XMLHttpRequest.prototype.gleapSetRequestHeader === undefined) {\n      XMLHttpRequest.prototype.gleapSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;\n    }\n\n    if (XMLHttpRequest.prototype.gleapSetRequestHeader) {\n      XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n        if (!this.requestHeaders) {\n          this.requestHeaders = {};\n        }\n\n        if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n          return;\n        }\n\n        if (!this.requestHeaders[header]) {\n          this.requestHeaders[header] = [];\n        }\n\n        this.requestHeaders[header].push(value);\n        this.gleapSetRequestHeader(header, value);\n      };\n    }\n\n    XMLHttpRequest.prototype.open = function () {\n      this['bbRequestId'] = ++self.requestId;\n      callback.onOpen && callback.onOpen(this, arguments);\n      if (callback.onLoad) {\n        this.addEventListener('load', callback.onLoad.bind(callback));\n      }\n      if (callback.onError) {\n        this.addEventListener('error', callback.onError.bind(callback));\n      }\n      return open.apply(this, arguments);\n    };\n    XMLHttpRequest.prototype.send = function () {\n      callback.onSend && callback.onSend(this, arguments);\n      return send.apply(this, arguments);\n    };\n\n    if (window.fetch) {\n      (function () {\n        var originalFetch = window.fetch;\n        window.fetch = function () {\n          var bbRequestId = ++self.requestId;\n          callback.onFetch(arguments, bbRequestId);\n\n          return originalFetch\n            .apply(this, arguments)\n            .then(function (response) {\n              if (response && typeof response.clone === 'function') {\n                const data = response.clone();\n                callback.onFetchLoad(data, bbRequestId);\n              }\n\n              return response;\n            })\n            .catch((err) => {\n              callback.onFetchFailed(err, bbRequestId);\n              throw err;\n            });\n        };\n      })();\n    }\n\n    return callback;\n  }\n\n  blobToTextPromise(blob) {\n    return new Promise(function (resolve, reject) {\n      var fr = new FileReader();\n      fr.onload = function (evt) {\n        if (evt && evt.target && evt.target.result) {\n          resolve(evt.target.result);\n        } else {\n          reject();\n        }\n      };\n      fr.onerror = function (err) {\n        reject(err);\n      };\n      fr.readAsText(blob);\n    });\n  }\n}\n\nexport default GleapNetworkIntercepter;\n","export const resizeImage = (base64Str, maxWidth = 400, maxHeight = 400) => {\n  return new Promise((resolve, reject) => {\n    var isJPEG = base64Str.indexOf('data:image/jpeg') === 0;\n    var img = new Image();\n    img.src = base64Str;\n    img.onerror = () => {\n      reject();\n    };\n    img.onload = () => {\n      var canvas = document.createElement('canvas');\n      var MAX_WIDTH = maxWidth;\n      var MAX_HEIGHT = maxHeight;\n\n      // Adjust max width / height based on image props\n      if (maxWidth > img.width / 1.5) {\n        MAX_WIDTH = img.width / 1.5;\n      }\n\n      if (maxHeight > img.height / 1.5) {\n        MAX_HEIGHT = img.height / 1.5;\n      }\n\n      var width = img.width;\n      var height = img.height;\n\n      if (width > height) {\n        if (width > MAX_WIDTH) {\n          height *= MAX_WIDTH / width;\n          width = MAX_WIDTH;\n        }\n      } else {\n        if (height > MAX_HEIGHT) {\n          width *= MAX_HEIGHT / height;\n          height = MAX_HEIGHT;\n        }\n      }\n      canvas.width = width;\n      canvas.height = height;\n      var ctx = canvas.getContext('2d');\n      ctx.drawImage(img, 0, 0, width, height);\n\n      if (isJPEG) {\n        resolve(canvas.toDataURL('image/jpeg', 0.7));\n      } else {\n        resolve(canvas.toDataURL());\n      }\n    };\n  });\n};\n\nconst MOBILE_UA_REGEX = /(android|iphone|ipod|ipad|blackberry|iemobile|opera mini|webos)/i;\n\nexport const getDeviceType = () => {\n  return isMobile() ? 'mobile' : 'desktop';\n};\n\nexport const isMobile = () => {\n  if (typeof window === 'undefined') {\n    return false;\n  }\n\n  try {\n    const nav = typeof navigator !== 'undefined' ? navigator : undefined;\n\n    if (nav?.userAgentData && typeof nav.userAgentData.mobile === 'boolean' && nav.userAgentData.mobile !== null) {\n      return nav.userAgentData.mobile;\n    }\n\n    if (nav && MOBILE_UA_REGEX.test(nav.userAgent || nav.vendor || '')) {\n      return true;\n    }\n\n    if (nav?.maxTouchPoints > 1 && window.matchMedia) {\n      const coarsePointer = window.matchMedia('(hover: none) and (pointer: coarse)');\n      if (coarsePointer?.matches) {\n        return true;\n      }\n    }\n  } catch (exp) {\n    // Swallow errors and treat as desktop fallback.\n  }\n\n  return false;\n};\n\nexport const gleapDataParser = function (data) {\n  if (!data) {\n    return {};\n  }\n  if (typeof data === 'string' || data instanceof String) {\n    try {\n      return JSON.parse(data);\n    } catch (e) {\n      return {};\n    }\n  }\n  return data;\n};\n\nexport const truncateString = (str, num) => {\n  if (str.length > num) {\n    return str.slice(0, num) + '...';\n  } else {\n    return str;\n  }\n};\n\nconst removeSubDomain = (v) => {\n  try {\n    var parts = v.split('.');\n    var is2ndLevelDomain = false;\n    const secondLevel = parts[parts.length - 2];\n    if (\n      secondLevel === 'co' ||\n      secondLevel === 'com' ||\n      secondLevel === 'gv' ||\n      secondLevel === 'ac' ||\n      secondLevel === 'edu' ||\n      secondLevel === 'gov' ||\n      secondLevel === 'mil' ||\n      secondLevel === 'net' ||\n      secondLevel === 'org'\n    ) {\n      is2ndLevelDomain = true;\n    }\n    parts = parts.slice(is2ndLevelDomain ? -3 : -2);\n    return parts.join('.');\n  } catch (exp) {}\n  return v;\n};\n\nexport const loadFromGleapCache = (key) => {\n  try {\n    const cachedData = localStorage.getItem(`gleap-widget-${key}`);\n    if (cachedData) {\n      const config = JSON.parse(cachedData);\n      return config;\n    }\n  } catch (exp) {}\n  return null;\n};\n\nexport const saveToGleapCache = (key, data) => {\n  const k = `gleap-widget-${key}`;\n  if (data) {\n    try {\n      localStorage.setItem(k, JSON.stringify(data));\n    } catch (exp) {}\n  } else {\n    localStorage.removeItem(k);\n  }\n};\n\nexport const clearGleapCache = (key) => {\n  try {\n    const k = `gleap-widget-${key}`;\n    localStorage.removeItem(k);\n  } catch {}\n};\n\nexport const setGleapCookie = (name, value, days) => {\n  try {\n    var expires = '';\n    if (days) {\n      var date = new Date();\n      date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n      expires = '; expires=' + date.toUTCString();\n    }\n    const host = removeSubDomain(window.location.host.split(':')[0]);\n    document.cookie = name + '=' + (value || '') + expires + '; path=/; domain=' + host;\n  } catch (exp) {}\n};\n\nexport const getGleapCookie = (name) => {\n  try {\n    var nameEQ = name + '=';\n    var ca = document.cookie.split(';');\n    for (var i = 0; i < ca.length; i++) {\n      var c = ca[i];\n      while (c.charAt(0) == ' ') c = c.substring(1, c.length);\n      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n    }\n  } catch (exp) {}\n  return null;\n};\n\nexport const eraseGleapCookie = (name) => {\n  try {\n    const host = removeSubDomain(window.location.host.split(':')[0]);\n    document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=' + host;\n  } catch (exp) {}\n};\n\nexport const getDOMElementDescription = (element, html = true) => {\n  var innerText = truncateString(element.innerText || '', 40)\n    .replace(/(\\r\\n|\\n|\\r)/gm, '')\n    .replace(/ +(?= )/g, '');\n  var elementId = '';\n  var elementClass = '';\n  if (typeof element.getAttribute !== 'undefined') {\n    const elemId = element.getAttribute('id');\n    if (elemId) {\n      elementId = ` id=\"${elemId}\"`;\n    }\n    const elemClass = element.getAttribute('class');\n    if (elemClass) {\n      elementClass = ` class=\"${elemClass}\"`;\n    }\n  }\n  const elementTag = (element.tagName || '').toLowerCase();\n\n  var htmlPre = '<';\n  var htmlPost = '>';\n  if (!html) {\n    htmlPre = '[';\n    htmlPost = ']';\n  }\n\n  return `${htmlPre}${elementTag}${elementId}${elementClass}${htmlPost}${innerText}${htmlPre}/${elementTag}${htmlPost}`;\n};\n\nexport const runFunctionWhenDomIsReady = (callback) => {\n  if (document.readyState === 'complete' || document.readyState === 'loaded' || document.readyState === 'interactive') {\n    callback();\n  } else {\n    document.addEventListener('DOMContentLoaded', () => {\n      callback();\n    });\n  }\n};\n\nexport const fixGleapHeight = () => {\n  try {\n    if ('visualViewport' in window && /iPad|iPhone|iPod/.test(navigator.userAgent)) {\n      let initialHeight = window.innerHeight;\n\n      function updateContainerHeight() {\n        try {\n          const gleapFrameContainer = document.querySelector('.gleap-frame-container-inner iframe');\n\n          if (!gleapFrameContainer) {\n            return;\n          }\n\n          // Check if the keyboard is open\n          if (window.visualViewport.height < initialHeight) {\n            gleapFrameContainer.style.setProperty('max-height', window.visualViewport.height + 'px', 'important');\n          } else {\n            // Remove the padding bottom\n            gleapFrameContainer.style.removeProperty('max-height');\n          }\n        } catch (error) {}\n      }\n\n      function handleOrientationChange() {\n        try {\n          // Update initial dimensions\n          initialHeight = window.innerHeight;\n          updateContainerHeight();\n        } catch (error) {}\n      }\n\n      // Update on resize (keyboard show/hide and viewport resize)\n      window.visualViewport.addEventListener('resize', updateContainerHeight);\n\n      // Handle orientation changes\n      window.addEventListener('orientationchange', handleOrientationChange);\n\n      // Update initially\n      updateContainerHeight();\n    }\n  } catch (error) {}\n};\n","import { GleapSession, GleapTranslationManager } from './Gleap'; // Adjust path if needed\n\n// Enum for request states\nconst RequestStatus = {\n  PENDING: 'pending',\n  SUCCESS: 'success',\n  ERROR: 'error',\n};\n\nclass ChecklistNetworkManager {\n  static instance = null;\n\n  /** @private {Map<string, Promise<string>>} outboundId -> Promise<internalId> */\n  validationRequests = new Map();\n  /** @private {Map<string, { status: RequestStatus, internalId?: string, error?: any }>} */\n  validationCache = new Map(); // Caches final results (success/error)\n\n  /** @private {Map<string, Promise<any>>} internalId -> Promise<checklistData> */\n  fetchRequests = new Map();\n  /** @private {Map<string, { status: RequestStatus, data?: any, error?: any }>} */\n  fetchCache = new Map(); // Caches final results (success/error)\n\n  // Private constructor for Singleton\n  constructor() {\n    if (ChecklistNetworkManager.instance) {\n      return ChecklistNetworkManager.instance;\n    }\n    ChecklistNetworkManager.instance = this;\n  }\n\n  /**\n   * Gets the singleton instance of the ChecklistNetworkManager.\n   * @returns {ChecklistNetworkManager} The singleton instance.\n   */\n  static getInstance() {\n    if (!ChecklistNetworkManager.instance) {\n      ChecklistNetworkManager.instance = new ChecklistNetworkManager();\n    }\n    return ChecklistNetworkManager.instance;\n  }\n\n  clearCache() {\n    this.validationCache.clear();\n    this.fetchCache.clear();\n    this.validationRequests.clear();\n    this.fetchRequests.clear();\n  }\n\n  /**\n   * @private\n   * Gets common query parameters for API requests.\n   * @returns {string} Query parameter string.\n   */\n  _getQueryParams() {\n    const gleapSessionInstance = GleapSession.getInstance();\n    const session = gleapSessionInstance?.session;\n    const lang = GleapTranslationManager.getInstance().getActiveLanguage() || 'en';\n    return `gleapId=${session?.gleapId || ''}&gleapHash=${session?.gleapHash || ''}&lang=${lang}`;\n  }\n\n  /**\n   * @private\n   * Gets the API base URL.\n   * @returns {string | null} The API URL or null if not configured.\n   */\n  _getApiUrl() {\n    const gleapSessionInstance = GleapSession.getInstance();\n    return gleapSessionInstance?.apiUrl || null;\n  }\n\n  /**\n   * @private\n   * Makes an XMLHttpRequest and returns a Promise.\n   * @param {string} method - HTTP method.\n   * @param {string} url - The request URL.\n   * @param {object|null} data - Data to send in the request body.\n   * @returns {Promise<any>} Promise resolving with parsed JSON response on success, rejecting on error.\n   */\n  _makeRequest(method, url, data) {\n    return new Promise((resolve, reject) => {\n      const xhr = new XMLHttpRequest();\n      xhr.open(method, url);\n\n      const gleapSessionInstance = GleapSession.getInstance();\n      gleapSessionInstance?.injectSession(xhr); // Inject session headers\n\n      if (data) {\n        xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n      }\n\n      xhr.onreadystatechange = () => {\n        if (xhr.readyState === 4) {\n          if (xhr.status >= 200 && xhr.status < 300) {\n            try {\n              // Handle potential empty success responses (e.g., 204)\n              const responseData = xhr.responseText ? JSON.parse(xhr.responseText) : null;\n              resolve(responseData);\n            } catch (err) {\n              reject({\n                status: xhr.status,\n                statusText: 'JSON Parse Error',\n                responseText: xhr.responseText,\n                error: err,\n              });\n            }\n          } else {\n            reject({\n              status: xhr.status,\n              statusText: xhr.statusText,\n              responseText: xhr.responseText,\n            });\n          }\n        }\n      };\n\n      xhr.onerror = () => {\n        reject({ status: 0, statusText: 'Network Error', responseText: null });\n      };\n\n      xhr.send(data ? JSON.stringify(data) : null);\n    });\n  }\n\n  /**\n   * @private\n   * Creates a cache key from outboundId and sharedKey\n   * @param {string} outboundId - The public/outbound checklist ID.\n   * @param {string|undefined} sharedKey - Optional shared key.\n   * @returns {string} Combined cache key.\n   */\n  _createCacheKey(outboundId, sharedKey) {\n    return sharedKey ? `${outboundId}::${sharedKey}` : outboundId;\n  }\n\n  /**\n   * Validates an outbound checklist ID, returning a Promise for the internal ID.\n   * Manages caching and deduplicates requests.\n   * @param {string} outboundId - The public/outbound checklist ID.\n   * @param {string} [sharedKey] - Optional shared key for the checklist.\n   * @returns {Promise<string>} A promise that resolves with the internal checklist ID.\n   */\n  validateChecklist(outboundId, sharedKey) {\n    const cacheKey = this._createCacheKey(outboundId, sharedKey);\n\n    // 1. Check cache for final result (success or error)\n    const cachedResult = this.validationCache.get(cacheKey);\n    if (cachedResult) {\n      if (cachedResult.status === RequestStatus.SUCCESS) {\n        return Promise.resolve(cachedResult.internalId);\n      } else {\n        return Promise.reject(cachedResult.error);\n      }\n    }\n\n    // 2. Check for an ongoing request\n    if (this.validationRequests.has(cacheKey)) {\n      return this.validationRequests.get(cacheKey);\n    }\n\n    // 3. Start a new request\n    const apiUrl = this._getApiUrl();\n    if (!apiUrl) {\n      const error = new Error('ChecklistNetworkManager: Gleap API URL not configured.');\n      this.validationCache.set(cacheKey, {\n        status: RequestStatus.ERROR,\n        error,\n      });\n      return Promise.reject(error);\n    }\n\n    const url = `${apiUrl}/outbound/checklists?${this._getQueryParams()}`;\n    const requestPromise = this._makeRequest('POST', url, {\n      outboundId,\n      sharedKey,\n    })\n      .then((responseData) => {\n        if (responseData && responseData.id) {\n          this.validationCache.set(cacheKey, {\n            status: RequestStatus.SUCCESS,\n            internalId: responseData.id,\n          });\n          return responseData.id;\n        } else {\n          const error = new Error('Validation response missing checklist ID.');\n          this.validationCache.set(cacheKey, {\n            status: RequestStatus.ERROR,\n            error: responseData || error,\n          });\n          throw error; // Rethrow to be caught by catch block\n        }\n      })\n      .catch((error) => {\n        // Store the error object itself in the cache\n        this.validationCache.set(cacheKey, {\n          status: RequestStatus.ERROR,\n          error,\n        });\n        throw error; // Re-throw so callers can catch it\n      })\n      .finally(() => {\n        // Remove from pending requests map once done (success or fail)\n        this.validationRequests.delete(cacheKey);\n      });\n\n    // Store the promise for potential concurrent requests\n    this.validationRequests.set(cacheKey, requestPromise);\n    return requestPromise;\n  }\n\n  /**\n   * Fetches the full checklist data using the internal ID, returning a Promise.\n   * Manages caching and deduplicates requests.\n   * @param {string} internalId - The internal checklist ID.\n   * @returns {Promise<object>} A promise that resolves with the full checklist data.\n   */\n  fetchChecklist(internalId) {\n    // 1. Check cache for final result (success or error)\n    const cachedResult = this.fetchCache.get(internalId);\n    if (cachedResult) {\n      if (cachedResult.status === RequestStatus.SUCCESS) {\n        // Return a deep copy to prevent mutation issues if multiple components use it\n        return Promise.resolve(JSON.parse(JSON.stringify(cachedResult.data)));\n      } else {\n        return Promise.reject(cachedResult.error);\n      }\n    }\n\n    // 2. Check for an ongoing request\n    if (this.fetchRequests.has(internalId)) {\n      // Return a promise that resolves with a deep copy\n      return this.fetchRequests.get(internalId).then((data) => JSON.parse(JSON.stringify(data)));\n    }\n\n    // 3. Start a new request\n    const apiUrl = this._getApiUrl();\n    if (!apiUrl) {\n      const error = new Error('ChecklistNetworkManager: Gleap API URL not configured.');\n      this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n      return Promise.reject(error);\n    }\n\n    const url = `${apiUrl}/outbound/checklists/${internalId}?convertTipTap=true&${this._getQueryParams()}`;\n    const requestPromise = this._makeRequest('GET', url, null)\n      .then((responseData) => {\n        if (responseData) {\n          // Cache the successful data\n          this.fetchCache.set(internalId, {\n            status: RequestStatus.SUCCESS,\n            data: responseData,\n          });\n          // Return a deep copy of the data\n          return JSON.parse(JSON.stringify(responseData));\n        } else {\n          // Should not happen with successful GET usually, but handle defensively\n          const error = new Error('Empty response received for checklist fetch.');\n          this.fetchCache.set(internalId, {\n            status: RequestStatus.ERROR,\n            error: responseData || error,\n          });\n          throw error;\n        }\n      })\n      .catch((error) => {\n        this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n        throw error; // Re-throw so callers can catch it\n      })\n      .finally(() => {\n        // Remove from pending requests map once done (success or fail)\n        this.fetchRequests.delete(internalId);\n      });\n\n    this.fetchRequests.set(internalId, requestPromise);\n    // Return a promise that resolves with a deep copy\n    return requestPromise.then((data) => JSON.parse(JSON.stringify(data)));\n  }\n}\n\nexport default ChecklistNetworkManager;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    var _platform$detectOverf;\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform: {\n        ...platform,\n        detectOverflow: (_platform$detectOverf = platform.detectOverflow) != null ? _platform$detectOverf : detectOverflow\n      },\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects,\n        platform\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        platform\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","export const checkPageFilter = (currentUrl, pageFilter, pageFilterType) => {\n  // If any parameter is missing, consider the filter passed.\n  if (!currentUrl || !pageFilter || !pageFilterType) {\n    return true;\n  }\n\n  // Helper to remove trailing slashes.\n  const removeTrailingSlash = (url) => url.replace(/\\/$/, '');\n\n  // Generates a regex from a match string by replacing dynamic segments (e.g., {id}).\n  const generateRegex = (match) => {\n    if (!match) return null;\n    try {\n      // If match starts with \"/\", remove it to work with Regex\n      if (match.startsWith('/')) {\n        match = match.substring(1);\n      }\n\n      // Replace dynamic patterns {anything} with a placeholder first\n      var dynamicPattern = /{\\w+}/g;\n      var regexPattern = match.replace(dynamicPattern, '___PLACEHOLDER___');\n\n      // Escape special regex characters in the URL pattern\n      regexPattern = regexPattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n      // Replace our placeholder with the actual regex pattern\n      regexPattern = regexPattern.replace(/___PLACEHOLDER___/g, '[^&?]+');\n      var pattern = new RegExp(regexPattern, 'i');\n\n      return pattern;\n    } catch (e) {\n      return null;\n    }\n  };\n\n  // Checks if the provided URL matches the given match string.\n  const isMatchingUrl = (url, match) => {\n    if (!url || !match) return false;\n    try {\n      // First, a simple substring check.\n      if (url.includes(match)) {\n        return true;\n      }\n    } catch (e) {\n      // Continue to regex matching.\n    }\n    const regex = generateRegex(match);\n    if (!regex) return false;\n    try {\n      return regex.test(url);\n    } catch (e) {\n      return false;\n    }\n  };\n\n  let matched = false;\n\n  // Check matching based on the provided pageFilterType.\n  switch (pageFilterType) {\n    case 'is':\n      matched = removeTrailingSlash(currentUrl) === removeTrailingSlash(pageFilter);\n      break;\n    case 'isnot':\n      matched = removeTrailingSlash(currentUrl) !== removeTrailingSlash(pageFilter);\n      break;\n    case 'contains':\n      matched = isMatchingUrl(currentUrl, pageFilter);\n      break;\n    case 'startswith':\n      matched = currentUrl.startsWith(pageFilter);\n      break;\n    case 'endswith':\n      matched = currentUrl.endsWith(pageFilter);\n      break;\n    case 'notcontains':\n      matched = !isMatchingUrl(currentUrl, pageFilter);\n      break;\n    default:\n      matched = false;\n  }\n\n  return matched;\n};\n\nexport const checkPageRules = (currentUrl, action) => {\n  const rules = action.pageRules && action.pageRules.length > 0\n    ? action.pageRules\n    : (action.pageFilter ? [{ pageFilter: action.pageFilter, pageFilterType: action.pageFilterType }] : []);\n  if (rules.length === 0) return true;\n  return rules.every(r => checkPageFilter(currentUrl, r.pageFilter, r.pageFilterType));\n};\n","import { arrow, autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';\nimport { GleapSession } from './Gleap';\nimport { loadIcon } from './UI';\nimport { checkPageFilter, checkPageRules } from './GleapPageFilter';\n\nexport default class GleapTooltipManager {\n  tooltips = [];\n  filteredTooltips = [];\n  lastUrl = null;\n  elementToFloatingUIMap = new WeakMap();\n  elementToTooltipMap = new WeakMap();\n  nextId = 0;\n\n  // GleapTooltipManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapTooltipManager();\n      this.instance.start();\n    }\n    return this.instance;\n  }\n\n  // Recursive function to process each node and its children\n  processNodeInsertion(node) {\n    if (node.nodeType === Node.ELEMENT_NODE) {\n      // Check the node itself\n      this.checkNodeTooltip(node);\n\n      // Check all children of the node recursively\n      if (node.childNodes) {\n        node.childNodes.forEach((childNode) => {\n          this.processNodeInsertion(childNode);\n        });\n      }\n    }\n  }\n\n  // Function to check a single node against the filtered tooltips\n  checkNodeTooltip(node) {\n    if (this.filteredTooltips.length > 0) {\n      this.filteredTooltips.forEach((tooltip) => {\n        if (tooltip.selector && node.matches(tooltip.selector)) {\n          this.linkTooltip(node, tooltip);\n        }\n      });\n    }\n  }\n\n  start() {\n    const self = this;\n\n    if (!window) {\n      return;\n    }\n\n    const throttle = (fn, time) => {\n      let timeout = null;\n      return function () {\n        if (timeout) return;\n        const context = this;\n        const args = arguments;\n        const later = () => {\n          fn.call(context, ...args);\n          timeout = null;\n        };\n        timeout = setTimeout(later, time);\n      };\n    };\n\n    const handleResizeThrottled = throttle(self.updateHotspotPositions.bind(self), 250);\n    window.addEventListener('resize', handleResizeThrottled);\n\n    window.requestAnimationFrame(() => {\n      this.observer = new MutationObserver((mutations) => {\n        if (self.lastUrl !== window.location.href) {\n          self.lastUrl = window.location.href;\n          self.filteredTooltips = self.getFilteredTooltips();\n        }\n\n        mutations.forEach((mutation) => {\n          // Check for attribute changes that might affect hotspot positioning\n          if (mutation.type === 'attributes') {\n            const target = mutation.target;\n            if (target.nodeType === Node.ELEMENT_NODE) {\n              // Check if the changed element has tooltip hotspots or is a parent of tooltip elements\n              const hasTooltipHotspots =\n                target.querySelector('[data-gleap-tooltip-hotspot]') || target.hasAttribute('data-gleap-tooltip-mode');\n\n              if (hasTooltipHotspots || target.hasAttribute('data-gleap-tooltip')) {\n                self.updateHotspotPositions();\n              }\n            }\n          }\n\n          // Check for added nodes\n          mutation.addedNodes.forEach((node) => {\n            if (node.nodeType === Node.ELEMENT_NODE) {\n              self.processNodeInsertion(node);\n            }\n          });\n\n          // Check for removed nodes\n          mutation.removedNodes.forEach((node) => {\n            if (node.nodeType === Node.ELEMENT_NODE && this.elementToFloatingUIMap.has(node)) {\n              const floatingUI = this.elementToFloatingUIMap.get(node);\n              if (floatingUI) {\n                if (floatingUI.tooltip) {\n                  floatingUI.tooltip.remove();\n                }\n                floatingUI.cleanup();\n\n                this.elementToFloatingUIMap.delete(node);\n              }\n            }\n\n            if (this.elementToTooltipMap.has(node)) {\n              this.elementToTooltipMap.delete(node);\n            }\n          });\n        });\n      });\n\n      // Start observing the document for changes.\n      this.observer.observe(document.body, {\n        childList: true,\n        subtree: true,\n        attributes: true,\n        attributeFilter: ['style', 'class'],\n      });\n    });\n  }\n\n  updateHotspotPositions() {\n    const elements = document.querySelectorAll(`[data-gleap-tooltip-mode='hotspot']`);\n    elements.forEach((element) => {\n      const tooltip = this.elementToTooltipMap.get(element);\n      if (tooltip) {\n        this.repositionHotspot(element, tooltip);\n      }\n    });\n  }\n\n  createTooltip(element, tooltipText, tooltipData) {\n    // Create tooltip element\n    const tooltip = document.createElement('div');\n    tooltip.className = 'gleap-tooltip';\n    tooltip.innerHTML = `<div class=\"gleap-tooltip-inner\">\n            ${tooltipText}\n            <div class=\"gleap-tooltip-arrow\">\n                <svg width=\"116\" height=\"56\" viewBox=\"0 0 116 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                    <path d=\"M57.75 0.74998L115.5 0.680177L66.8726 49.3076C61.7958 54.3844 53.5646 54.3844 48.4878 49.3076L4.05618e-05 0.819784L57.75 0.74998Z\" fill=\"white\"/>\n                </svg>\n            </div>\n        </div>`;\n    document.body.appendChild(tooltip);\n\n    // Create a Popper instance with arrow and offset\n\n    const arrowEl = tooltip.querySelector('.gleap-tooltip-arrow');\n    const cleanup = autoUpdate(element, tooltip, () => {\n      computePosition(element, tooltip, {\n        placement: tooltipData.posX === 'left' ? 'left' : 'right',\n        middleware: [offset(10), flip(), shift(), arrow({ element: arrowEl })],\n      }).then(({ x, y, middlewareData, placement }) => {\n        try {\n          Object.assign(tooltip.style, {\n            left: `${x}px`,\n            top: `${y}px`,\n          });\n\n          if (middlewareData.arrow) {\n            let arrowSize = 20; // Arrow size should be consistent with the border width used in CSS\n            let arrowPos = { left: '', top: '', transform: '' };\n\n            if (middlewareData.arrow.x != null) {\n              arrowPos.left = `${middlewareData.arrow.x}px`;\n              if (placement === 'bottom') {\n                arrowPos.transform = 'translateY(-7px) rotate(180deg)';\n                arrowPos.top = `${-arrowSize}px`; // Move arrow outside the tooltip\n              } else if (placement === 'top') {\n                arrowPos.transform = 'translateY(7px) rotate(0deg)';\n                arrowPos.top = `100%`; // Adjust based on the tooltip's height\n              }\n            }\n            if (middlewareData.arrow.y != null) {\n              arrowPos.top = `${middlewareData.arrow.y}px`;\n              if (placement === 'right') {\n                arrowPos.transform = 'translateX(-7px) rotate(90deg)';\n                arrowPos.left = `${-arrowSize}px`; // Move arrow outside the tooltip\n              } else if (placement === 'left') {\n                arrowPos.transform = 'translateX(7px) rotate(270deg)';\n                arrowPos.left = `100%`; // Adjust based on the tooltip's width\n              }\n            }\n            // Apply the computed styles to the arrow\n            Object.assign(arrowEl.style, arrowPos);\n          }\n        } catch (exp) {}\n      });\n    });\n\n    let hideTimeout;\n\n    function show() {\n      clearTimeout(hideTimeout);\n      tooltip.style.visibility = 'visible';\n      tooltip.style.opacity = '1';\n      tooltip.style.pointerEvents = 'auto';\n    }\n\n    function hide() {\n      hideTimeout = setTimeout(() => {\n        tooltip.style.opacity = '0';\n\n        setTimeout(() => {\n          tooltip.style.visibility = 'hidden';\n          tooltip.style.pointerEvents = 'none';\n        }, 200);\n      }, 500);\n    }\n\n    // Event listeners to show/hide the tooltip\n    element.addEventListener('mouseenter', show);\n    element.addEventListener('mouseleave', hide);\n    tooltip.addEventListener('mouseenter', show);\n    tooltip.addEventListener('mouseleave', hide);\n\n    element.addEventListener('click', hide);\n    tooltip.addEventListener('click', hide);\n\n    return {\n      cleanup,\n      tooltip,\n    };\n  }\n\n  canEmbed(element) {\n    const voidElements = new Set(['area', 'base', 'br', 'embed', 'hr', 'img', 'input', 'source', 'track', 'wbr', 'canvas']);\n\n    return element && !voidElements.has(element.tagName.toLowerCase());\n  }\n\n  linkTooltip = (element, tooltip) => {\n    if (element.hasAttribute('data-gleap-tooltip')) {\n      return;\n    }\n\n    const nextId = this.nextId++;\n    element.setAttribute('data-gleap-tooltip', nextId);\n    if (element) {\n      var tooltipElem = null;\n\n      if (tooltip.mode === 'hotspot') {\n        // Create hotspot container.\n        const hotspotContainer = document.createElement('div');\n        hotspotContainer.setAttribute('data-gleap-tooltip-anchor', nextId);\n        hotspotContainer.classList.add('gleap-tooltip-anchor');\n        element.setAttribute('data-gleap-tooltip-mode', 'hotspot');\n\n        if (this.canEmbed(element)) {\n          if (element.firstChild) {\n            element.insertBefore(hotspotContainer, element.firstChild);\n          } else {\n            element.appendChild(hotspotContainer);\n          }\n        } else {\n          element.parentNode.insertBefore(hotspotContainer, element.nextSibling);\n        }\n\n        // Create hotspot.\n        const hotspot = document.createElement('div');\n        hotspot.classList.add('gleap-tooltip-hotspot');\n        hotspot.setAttribute('data-gleap-tooltip-hotspot', nextId);\n\n        hotspot.innerHTML = `${loadIcon(tooltip.icon, tooltip.color)}${\n          tooltip.animated\n            ? `<div style=\"background-color: ${tooltip.color}\" class=\"gleap-tooltip-hotspot-animation\"></div>`\n            : ''\n        }`;\n        hotspotContainer.appendChild(hotspot);\n\n        // Update hotspot position.\n        this.repositionHotspot(element, tooltip);\n\n        tooltipElem = hotspot;\n        this.elementToTooltipMap.set(element, tooltip);\n      } else {\n        tooltipElem = element;\n      }\n\n      const floatingUIInstance = this.createTooltip(tooltipElem, tooltip.html, tooltip);\n\n      this.elementToFloatingUIMap.set(element, floatingUIInstance);\n    }\n  };\n\n  destroy() {\n    // Disconnect the MutationObserver if it exists.\n    if (this.observer) {\n      this.observer.disconnect();\n      this.observer = null;\n    }\n\n    // Remove the window resize event listener if it was stored.\n    // (In start() you can assign the listener to a class property, e.g., this.resizeListener.)\n    if (this.resizeListener) {\n      window.removeEventListener('resize', this.resizeListener);\n      this.resizeListener = null;\n    }\n\n    // Remove all tooltip elements created by Gleap.\n    const tooltipElements = document.querySelectorAll('.gleap-tooltip');\n    tooltipElements.forEach((tooltip) => tooltip.remove());\n\n    // Remove any tooltip anchors and hotspots.\n    const anchors = document.querySelectorAll('[data-gleap-tooltip-anchor]');\n    anchors.forEach((anchor) => anchor.remove());\n    const hotspots = document.querySelectorAll('[data-gleap-tooltip-hotspot]');\n    hotspots.forEach((hotspot) => hotspot.remove());\n\n    // Remove all attributes from elements.\n    const elements = document.querySelectorAll('[data-gleap-tooltip]');\n    elements.forEach((element) => element.removeAttribute('data-gleap-tooltip'));\n\n    // Remove all attributes from elements.\n    const modeElements = document.querySelectorAll('[data-gleap-tooltip-mode]');\n    modeElements.forEach((element) => element.removeAttribute('data-gleap-tooltip-mode'));\n\n    // Clear internal references.\n    this.elementToFloatingUIMap = new WeakMap();\n    this.elementToTooltipMap = new WeakMap();\n    this.tooltips = [];\n    this.filteredTooltips = [];\n  }\n\n  repositionHotspot(element, tooltip) {\n    if (!element || !tooltip) {\n      return;\n    }\n\n    const tooltipId = element.getAttribute('data-gleap-tooltip');\n    if (!tooltipId) {\n      return;\n    }\n\n    const hotspot = document.querySelector(`[data-gleap-tooltip-hotspot=\"${tooltipId}\"]`);\n    if (!hotspot) {\n      return;\n    }\n\n    if (!tooltip.posX) {\n      tooltip.posX = 'right';\n    }\n    if (!tooltip.posY) {\n      tooltip.posY = 'center';\n    }\n    if (!tooltip.offsetX) {\n      tooltip.offsetX = 4;\n    }\n    if (!tooltip.offsetY) {\n      tooltip.offsetY = 0;\n    }\n\n    var elementRect = element.getBoundingClientRect();\n\n    try {\n      // Improve width calculation for text elements.\n      var range = document.createRange();\n      range.selectNodeContents(element);\n      const style = window.getComputedStyle(element);\n      const fixedWidth = range.getBoundingClientRect().width + parseFloat(style.paddingLeft);\n      if (fixedWidth < elementRect.width) {\n        elementRect.width = fixedWidth;\n      }\n    } catch (exp) {}\n\n    const anchorElement = document.querySelector(`[data-gleap-tooltip-anchor=\"${tooltipId}\"]`);\n    const anchorRect = anchorElement.getBoundingClientRect();\n\n    // Offset calculation for hotspot position.\n    const offsetX = anchorRect.left - elementRect.left;\n    const offsetY = anchorRect.top - elementRect.top;\n\n    let top = 0;\n    let left = 0;\n    let tooltipSize = 17 / 2;\n\n    switch (tooltip.posX) {\n      case 'left':\n        left = (tooltip.offsetX + tooltipSize * 2) * -1;\n        break;\n      case 'right':\n        left = elementRect.width + tooltip.offsetX;\n        break;\n    }\n\n    switch (tooltip.posY) {\n      case 'top':\n        top = 0 + tooltip.offsetY;\n        break;\n      case 'bottom':\n        top = elementRect.height - tooltipSize * 2 + tooltip.offsetY;\n        break;\n      case 'center':\n        top = elementRect.height / 2 - tooltipSize + tooltip.offsetY;\n        break;\n    }\n\n    if (hotspot) {\n      hotspot.style.position = 'absolute';\n      hotspot.style.top = top - offsetY + 'px';\n      hotspot.style.left = left - offsetX + 'px';\n    }\n  }\n\n  updateFilteredTooltips = () => {\n    this.filteredTooltips = this.getFilteredTooltips();\n    this.checkForTooltips();\n  };\n\n  getFilteredTooltips = () => {\n    if (!this.tooltips) {\n      return [];\n    }\n\n    const currentUrl = window.location.href;\n\n    return this.tooltips.filter((tooltip) => {\n      if (tooltip.pageRules && tooltip.pageRules.length > 0) {\n        return checkPageRules(currentUrl, { pageRules: tooltip.pageRules });\n      }\n\n      if (!tooltip.page || tooltip.page.length === 0) {\n        return true;\n      }\n\n      const passed = checkPageFilter(currentUrl, tooltip.page, tooltip.pageType);\n\n      if (!passed) {\n        return false;\n      }\n      return true;\n    });\n  };\n\n  checkForTooltips = () => {\n    for (let i = 0; i < this.filteredTooltips.length; i++) {\n      const tooltip = this.filteredTooltips[i];\n\n      try {\n        const elements = document.querySelectorAll(tooltip.selector);\n\n        for (let j = 0; j < elements.length; j++) {\n          const element = elements[j];\n\n          if (element) {\n            this.linkTooltip(element, tooltip);\n          }\n        }\n      } catch (exp) {}\n    }\n  };\n\n  load = () => {\n    const self = this;\n    const sessionInstance = GleapSession.getInstance();\n\n    const http = new XMLHttpRequest();\n    http.open('GET', sessionInstance.apiUrl + '/config/' + sessionInstance.sdkKey + '/tooltips');\n    http.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n    http.setRequestHeader('Api-Token', sessionInstance.sdkKey);\n    try {\n      http.setRequestHeader('Gleap-Id', sessionInstance.session.gleapId);\n      http.setRequestHeader('Gleap-Hash', sessionInstance.session.gleapHash);\n    } catch (exp) {}\n\n    http.onerror = () => {\n      console.error('Failed to fetch tooltips');\n    };\n    http.onreadystatechange = function (e) {\n      if (http.readyState === 4) {\n        if (http.status === 200) {\n          try {\n            self.tooltips = JSON.parse(http.responseText);\n            self.updateFilteredTooltips();\n          } catch (exp) {\n            console.error('Failed to parse tooltips', exp);\n          }\n        }\n      }\n    };\n\n    http.send();\n  };\n}\n","import ChecklistNetworkManager from './ChecklistNetworkManager';\nimport {\n  GleapBannerManager,\n  GleapEventManager,\n  GleapFrameManager,\n  GleapModalManager,\n  GleapNotificationManager,\n  GleapStreamedEvent,\n  GleapTranslationManager,\n} from './Gleap';\nimport {\n  eraseGleapCookie,\n  getDeviceType,\n  getGleapCookie,\n  loadFromGleapCache,\n  saveToGleapCache,\n  setGleapCookie,\n} from './GleapHelper';\nimport GleapTooltipManager from './GleapTooltipManager';\n\nexport default class GleapSession {\n  apiUrl = 'https://api.gleap.io';\n  wsApiUrl = 'wss://ws.gleap.io';\n  sdkKey = null;\n  updatingSession = false;\n  useCookies = true;\n  session = {\n    gleapId: null,\n    gleapHash: null,\n    name: '',\n    email: '',\n    userId: '',\n    phone: '',\n    value: 0,\n  };\n  ready = false;\n  onSessionReadyListener = [];\n\n  // GleapSession singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapSession();\n      return this.instance;\n    } else {\n      return this.instance;\n    }\n  }\n\n  /**\n   * Returns the current session name.\n   * @returns string\n   */\n  getName() {\n    try {\n      return this.session.name ? this.session.name.split(' ')[0].split('@')[0].split('.')[0].split('+')[0] : '';\n    } catch (exp) {\n      return this.session.name;\n    }\n  }\n\n  /**\n   * Returns the Gleap session object.\n   * @returns\n   */\n  getSession() {\n    return this.session;\n  }\n\n  /**\n   * Returns the Gleap session object.\n   * @returns\n   */\n  getGleapId() {\n    if (this.session && this.session.gleapId) {\n      return this.session.gleapId;\n    }\n\n    return null;\n  }\n\n  /**\n   * Determines if the current session is a identified user.\n   * @returns boolean\n   */\n  isUser() {\n    if (this.session && this.session.userId) {\n      return true;\n    }\n    return false;\n  }\n\n  constructor() {}\n\n  setOnSessionReady = (onSessionReady) => {\n    if (this.ready) {\n      onSessionReady();\n    } else {\n      this.onSessionReadyListener.push(onSessionReady);\n    }\n  };\n\n  injectSession = (http) => {\n    if (http && this.session) {\n      http.setRequestHeader('Api-Token', this.sdkKey);\n      http.setRequestHeader('Gleap-Id', this.session.gleapId);\n      http.setRequestHeader('Gleap-Hash', this.session.gleapHash);\n    }\n  };\n\n  clearSession = (attemp = 0, retry = true) => {\n    if (this.session && this.session.gleapHash) {\n      GleapEventManager.notifyEvent('unregister-pushmessage-group', `gleapuser-${this.session.gleapHash}`);\n    }\n\n    try {\n      saveToGleapCache(`session-${this.sdkKey}`, null);\n    } catch (exp) {}\n\n    if (this.useCookies) {\n      try {\n        eraseGleapCookie(`session-${this.sdkKey}`);\n      } catch (exp) {}\n    }\n\n    this.ready = false;\n    this.session = {\n      gleapId: null,\n      gleapHash: null,\n      name: '',\n      email: '',\n      userId: '',\n      phone: '',\n      value: 0,\n    };\n\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'session-cleared',\n      },\n      true\n    );\n    GleapNotificationManager.getInstance().clearAllNotifications(false);\n    GleapNotificationManager.getInstance().setNotificationCount(0);\n    GleapBannerManager.getInstance().removeBannerUI();\n    GleapModalManager.getInstance().hideModal();\n\n    if (retry) {\n      if (!isNaN(attemp)) {\n        // Exponentially retry to renew session.\n        const newTimeout = Math.pow(attemp, 2) * 10;\n        setTimeout(() => {\n          this.startSession(attemp + 1);\n        }, newTimeout * 1000);\n      }\n    }\n  };\n\n  validateSession = (session) => {\n    if (!session || !session.gleapId) {\n      return;\n    }\n\n    let sessionChanged = false;\n    if (this.session?.gleapId !== session?.gleapId) {\n      sessionChanged = true;\n    }\n\n    // Unregister previous group.\n    if (this.session && this.session.gleapHash) {\n      GleapEventManager.notifyEvent('unregister-pushmessage-group', `gleapuser-${this.session.gleapHash}`);\n    }\n\n    saveToGleapCache(`session-${this.sdkKey}`, session);\n    if (this.useCookies) {\n      setGleapCookie(`session-${this.sdkKey}`, encodeURIComponent(JSON.stringify(session)), 365);\n    }\n\n    this.session = session;\n    this.ready = true;\n\n    // Register new push group.\n    if (this.session && this.session.gleapHash) {\n      GleapEventManager.notifyEvent('register-pushmessage-group', `gleapuser-${this.session.gleapHash}`);\n    }\n\n    if (sessionChanged) {\n      // Load tooltips.\n      setTimeout(() => {\n        // Clear cache first, as the session context has changed.\n        ChecklistNetworkManager.getInstance().clearCache();\n\n        // Initially track.\n        GleapStreamedEvent.getInstance().restart();\n\n        const tooltipManager = GleapTooltipManager.getInstance();\n        if (tooltipManager) {\n          try {\n            tooltipManager.destroy();\n          } catch (exp) {}\n\n          tooltipManager.load();\n        }\n      }, 0);\n\n      if (typeof window.dispatchEvent === 'function') {\n        window.dispatchEvent(new CustomEvent('session-updated'));\n      }\n    }\n\n    this.notifySessionReady();\n  };\n\n  startSession = (attemp = 0) => {\n    // Check if we already have a session cookie.\n    try {\n      if (this.useCookies) {\n        const sessionCookie = getGleapCookie(`session-${this.sdkKey}`);\n        if (sessionCookie) {\n          const sessionData = JSON.parse(decodeURIComponent(sessionCookie));\n          this.validateSession(sessionData);\n        }\n      }\n    } catch (exp) {}\n\n    // Try to load session from local storage, if not already loaded.\n    if (!(this.session && this.session.gleapId && this.session.gleapId.length > 0)) {\n      const cachedSession = loadFromGleapCache(`session-${this.sdkKey}`);\n      if (cachedSession) {\n        this.validateSession(cachedSession);\n      }\n    }\n\n    const self = this;\n    const http = new XMLHttpRequest();\n    http.open('POST', self.apiUrl + '/sessions');\n    http.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n    http.setRequestHeader('Api-Token', self.sdkKey);\n    try {\n      if (this.session && this.session.gleapId && this.session.gleapHash) {\n        http.setRequestHeader('Gleap-Id', this.session.gleapId);\n        http.setRequestHeader('Gleap-Hash', this.session.gleapHash);\n      }\n    } catch (exp) {}\n    http.onreadystatechange = function (e) {\n      if (http.readyState === 4) {\n        if (http.status === 200 || http.status === 201) {\n          try {\n            const sessionData = JSON.parse(http.responseText);\n            self.validateSession(sessionData);\n          } catch (exp) {}\n        } else {\n          if (http.status !== 429) {\n            self.clearSession(attemp, true);\n          }\n        }\n      }\n    };\n    http.send(\n      JSON.stringify({\n        lang: GleapTranslationManager.getInstance().getActiveLanguage(),\n        deviceType: getDeviceType(),\n        platform: 'web',\n      })\n    );\n  };\n\n  notifySessionReady() {\n    if (this.onSessionReadyListener.length > 0) {\n      for (var i = 0; i < this.onSessionReadyListener.length; i++) {\n        this.onSessionReadyListener[i]();\n      }\n    }\n    this.onSessionReadyListener = [];\n\n    // Send session update to frame.\n    GleapFrameManager.getInstance().sendSessionUpdate();\n  }\n\n  checkIfSessionNeedsUpdate = (userId, userData) => {\n    if (!this.session || !this.session.userId || !userId) {\n      return true;\n    }\n\n    try {\n      if (this.session.userId.toString() !== userId.toString()) {\n        return true;\n      }\n    } catch (exp) {}\n\n    return this.checkIfSessionDataNeedsUpdate(userData);\n  };\n\n  checkIfSessionDataNeedsUpdate = (userData) => {\n    if (userData) {\n      var userDataKeys = Object.keys(userData);\n      for (var i = 0; i < userDataKeys.length; i++) {\n        var userDataKey = userDataKeys[i];\n        if (JSON.stringify(this.session[userDataKey]) !== JSON.stringify(userData[userDataKey])) {\n          // Check custom data for a match.\n          if (\n            !(\n              this.session.customData &&\n              JSON.stringify(this.session.customData[userDataKey]) === JSON.stringify(userData[userDataKey])\n            )\n          ) {\n            return true;\n          }\n        }\n      }\n    }\n\n    return false;\n  };\n\n  updateSession = (userData) => {\n    // Check if session needs update.\n    const sessionNeedsUpdate = this.checkIfSessionDataNeedsUpdate(userData);\n    if (!sessionNeedsUpdate) {\n      return;\n    }\n\n    const self = this;\n    return new Promise((resolve, reject) => {\n      // Wait for gleap session to be ready.\n      this.setOnSessionReady(function () {\n        if (!self.session.gleapId || !self.session.gleapHash) {\n          return reject('Session not ready yet.');\n        }\n\n        const http = new XMLHttpRequest();\n        http.open('POST', self.apiUrl + '/sessions/partialupdate');\n        http.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n        http.setRequestHeader('Api-Token', self.sdkKey);\n        try {\n          http.setRequestHeader('Gleap-Id', self.session.gleapId);\n          http.setRequestHeader('Gleap-Hash', self.session.gleapHash);\n        } catch (exp) {}\n\n        http.onerror = () => {\n          reject();\n        };\n        http.onreadystatechange = function (e) {\n          if (http.readyState === 4) {\n            if (http.status === 200 || http.status === 201) {\n              try {\n                const sessionData = JSON.parse(http.responseText);\n                self.validateSession(sessionData);\n                resolve(sessionData);\n              } catch (exp) {\n                reject(exp);\n              }\n            } else {\n              reject();\n            }\n          }\n        };\n\n        http.send(\n          JSON.stringify({\n            data: {\n              ...userData,\n              lang: GleapTranslationManager.getInstance().getActiveLanguage(),\n              deviceType: getDeviceType(),\n              platform: 'web',\n            },\n            type: 'js',\n            sdkVersion: SDK_VERSION,\n            ws: true,\n          })\n        );\n      });\n    });\n  };\n\n  identifySession = (userId, userData, userHash) => {\n    const sessionNeedsUpdate = this.checkIfSessionNeedsUpdate(userId, userData);\n    if (!sessionNeedsUpdate) {\n      return;\n    }\n\n    const self = this;\n    return new Promise((resolve, reject) => {\n      // Wait for gleap session to be ready.\n      this.setOnSessionReady(function () {\n        if (!self.session.gleapId || !self.session.gleapHash) {\n          return reject('Session not ready yet.');\n        }\n\n        const http = new XMLHttpRequest();\n        http.open('POST', self.apiUrl + '/sessions/identify');\n        http.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n        http.setRequestHeader('Api-Token', self.sdkKey);\n        try {\n          http.setRequestHeader('Gleap-Id', self.session.gleapId);\n          http.setRequestHeader('Gleap-Hash', self.session.gleapHash);\n        } catch (exp) {}\n\n        http.onerror = () => {\n          reject();\n        };\n        http.onreadystatechange = function (e) {\n          if (http.readyState === 4) {\n            if (http.status === 200 || http.status === 201) {\n              try {\n                const sessionData = JSON.parse(http.responseText);\n                self.validateSession(sessionData);\n                resolve(sessionData);\n              } catch (exp) {\n                reject(exp);\n              }\n            } else {\n              reject();\n            }\n          }\n        };\n\n        var dataToSend = {\n          ...userData,\n        };\n\n        if (userData.customData) {\n          delete dataToSend['customData'];\n          dataToSend = {\n            ...dataToSend,\n            ...userData.customData,\n          };\n        }\n\n        http.send(\n          JSON.stringify({\n            ...dataToSend,\n            userId,\n            userHash,\n            lang: GleapTranslationManager.getInstance().getActiveLanguage(),\n            deviceType: getDeviceType(),\n            platform: 'web',\n          })\n        );\n      });\n    });\n  };\n\n  startProductTourConfig = (tourId) => {\n    const self = this;\n    return new Promise((resolve, reject) => {\n      this.setOnSessionReady(function () {\n        if (!self.session.gleapId || !self.session.gleapHash) {\n          return reject('Session not ready yet.');\n        }\n\n        const http = new XMLHttpRequest();\n        http.open('POST', self.apiUrl + '/outbound/producttours');\n        http.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n        http.setRequestHeader('Api-Token', self.sdkKey);\n        try {\n          http.setRequestHeader('Gleap-Id', self.session.gleapId);\n          http.setRequestHeader('Gleap-Hash', self.session.gleapHash);\n        } catch (exp) {}\n\n        http.onerror = () => {\n          reject();\n        };\n        http.onreadystatechange = function (e) {\n          if (http.readyState === 4) {\n            if (http.status === 200 || http.status === 201) {\n              try {\n                const tourData = JSON.parse(http.responseText);\n                if (tourData && tourData.config) {\n                  resolve(tourData.config);\n                }\n              } catch (exp) {\n                reject(exp);\n              }\n            } else {\n              reject();\n            }\n          }\n        };\n        http.send(\n          JSON.stringify({\n            outboundId: tourId,\n          })\n        );\n      });\n    });\n  };\n\n  validateProductTour = (tourId) => {\n    const self = this;\n    return new Promise((resolve, reject) => {\n      this.setOnSessionReady(function () {\n        if (!self.session.gleapId || !self.session.gleapHash) {\n          return reject('Session not ready yet.');\n        }\n\n        const http = new XMLHttpRequest();\n        http.open('POST', self.apiUrl + '/outbound/producttourvalidation');\n        http.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n        http.setRequestHeader('Api-Token', self.sdkKey);\n        try {\n          http.setRequestHeader('Gleap-Id', self.session.gleapId);\n          http.setRequestHeader('Gleap-Hash', self.session.gleapHash);\n        } catch (exp) {}\n\n        http.onerror = () => {\n          reject();\n        };\n        http.onreadystatechange = function (e) {\n          if (http.readyState === 4) {\n            if (http.status === 200 || http.status === 201) {\n              try {\n                const tourData = JSON.parse(http.responseText);\n                if (tourData && tourData.status === 'live' && tourData.passedPageFilter) {\n                  resolve(tourData.config);\n                } else {\n                  reject();\n                }\n              } catch (exp) {\n                reject(exp);\n              }\n            } else {\n              reject();\n            }\n          }\n        };\n        http.send(\n          JSON.stringify({\n            outboundId: tourId,\n            currentUrl: window?.location?.href,\n          })\n        );\n      });\n    });\n  };\n}\n","import Gleap, {\n  GleapFrameManager,\n  GleapMetaDataManager,\n  GleapAiChatbarManager,\n  GleapNotificationManager,\n  GleapSession,\n  GleapAdminManager,\n  GleapEventManager,\n} from './Gleap';\nimport { gleapDataParser } from './GleapHelper';\n\nexport default class GleapStreamedEvent {\n  eventArray = [];\n  streamedEventArray = [];\n  eventMaxLength = 500;\n  errorCount = 0;\n  streamingEvents = false;\n  lastUrl = undefined;\n  mainLoopTimeout = null;\n  socket = null;\n  connectedWebSocketGleapId = null;\n  connectionTimeout = null;\n  pingWS = null;\n  handleOpenBound = null;\n  handleErrorBound = null;\n  handleMessageBound = null;\n  handleCloseBound = null;\n\n  // GleapStreamedEvent singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapStreamedEvent();\n      return this.instance;\n    } else {\n      return this.instance;\n    }\n  }\n\n  constructor() {\n    this.handleOpenBound = this.handleOpen.bind(this);\n    this.handleErrorBound = this.handleError.bind(this);\n    this.handleMessageBound = this.handleMessage.bind(this);\n    this.handleCloseBound = this.handleClose.bind(this);\n  }\n\n  cleanupWebSocket() {\n    if (this.connectionTimeout) {\n      clearTimeout(this.connectionTimeout);\n      this.connectionTimeout = null;\n    }\n\n    if (this.pingWS) {\n      clearInterval(this.pingWS);\n    }\n\n    if (this.socket) {\n      this.socket.removeEventListener('open', this.handleOpenBound);\n      this.socket.removeEventListener('error', this.handleErrorBound);\n      this.socket.removeEventListener('message', this.handleMessageBound);\n      this.socket.removeEventListener('close', this.handleCloseBound);\n      this.socket.close();\n      this.socket = null;\n    }\n  }\n\n  initWebSocket() {\n    this.cleanupWebSocket();\n\n    this.connectedWebSocketGleapId = GleapSession.getInstance().session.gleapId;\n\n    if (!GleapSession.getInstance().session || !GleapSession.getInstance().sdkKey) {\n      return;\n    }\n\n    this.socket = new WebSocket(\n      `${GleapSession.getInstance().wsApiUrl}?gleapId=${\n        GleapSession.getInstance().session.gleapId\n      }&gleapHash=${GleapSession.getInstance().session.gleapHash}&apiKey=${\n        GleapSession.getInstance().sdkKey\n      }&sdkVersion=${SDK_VERSION}`\n    );\n    this.socket.addEventListener('open', this.handleOpenBound);\n    this.socket.addEventListener('message', this.handleMessageBound);\n    this.socket.addEventListener('error', this.handleErrorBound);\n    this.socket.addEventListener('close', this.handleCloseBound);\n  }\n\n  handleOpen(event) {\n    this.pingWS = setInterval(() => {\n      if (this.socket.readyState === this.socket.OPEN) {\n        this.socket.send('PING');\n        this.socket.send(0x9);\n      }\n    }, 10000);\n\n    if (this.connectionTimeout) {\n      clearTimeout(this.connectionTimeout);\n      this.connectionTimeout = null;\n    }\n  }\n\n  handleMessage(event) {\n    this.processMessage(JSON.parse(event.data));\n  }\n\n  handleError(error) {}\n\n  handleClose(event) {\n    setTimeout(() => {\n      this.initWebSocket();\n    }, 5000);\n  }\n\n  processMessage(message) {\n    try {\n      if (GleapAdminManager.getInstance().initialized) {\n        return;\n      }\n\n      if (message.name === 'update') {\n        const { a, u, ai } = message.data;\n\n        const isOpened = GleapFrameManager.getInstance().isOpened();\n\n        if (a) {\n          const listOfActionsWhereIgnoreOpened = ['banner', 'modal'];\n          const filteredActions = a.filter(\n            (action) => !isOpened || listOfActionsWhereIgnoreOpened.includes(action?.actionType?.toLowerCase())\n          );\n\n          Gleap.getInstance().performActions(filteredActions);\n        }\n\n        if (ai) {\n          GleapAiChatbarManager.getInstance().setConfig({\n            enabled: ai.e ?? false,\n            placeholder: ai.p,\n            quickActions: ai.a,\n            style: ai.s,\n          });\n        }\n\n        if (u != null) {\n          GleapNotificationManager.getInstance().setNotificationCount(u);\n        }\n      }\n\n      if (message.name === 'checklist' && message?.data && window) {\n        const checklistData = message.data;\n        const completedSteps = checklistData.completedSteps ?? [];\n        const completedStepsBefore = checklistData.completedStepsBefore ?? [];\n        if (completedSteps.length > completedStepsBefore.length) {\n          for (let i = 0; i < completedSteps.length; i++) {\n            const step = checklistData?.steps?.find((step) => step.id === completedSteps[i]);\n            if (!step) {\n              continue;\n            }\n            const stepIndex = i;\n            if (!completedStepsBefore.includes(step)) {\n              GleapEventManager.notifyEvent('checklist-step-completed', {\n                checklistId: checklistData.id,\n                outboundId: checklistData.outboundId,\n                stepId: step.id,\n                stepIndex: stepIndex,\n                step: step,\n                completedSteps: checklistData.completedSteps,\n                status: checklistData.status,\n                data: checklistData,\n              });\n            }\n          }\n        }\n        if (checklistData.status === 'done') {\n          GleapEventManager.notifyEvent('checklist-completed', {\n            checklistId: checklistData.id,\n            outboundId: checklistData.outboundId,\n            completedSteps: checklistData.completedSteps,\n            status: checklistData.status,\n            data: checklistData,\n          });\n        }\n        if (typeof window.dispatchEvent === 'function') {\n          window.dispatchEvent(new CustomEvent('checkListUpdate', { detail: message.data }));\n        }\n      }\n    } catch (exp) {}\n  }\n\n  getEventArray() {\n    return this.eventArray;\n  }\n\n  stop() {\n    this.cleanupMainLoop();\n  }\n\n  resetErrorCountLoop() {\n    setInterval(() => {\n      this.errorCount = 0;\n    }, 60000);\n  }\n\n  cleanupMainLoop() {\n    if (this.mainLoopTimeout) {\n      clearInterval(this.mainLoopTimeout);\n      this.mainLoopTimeout = null;\n    }\n  }\n\n  restart() {\n    // Only reconnect websockets when needed.\n    if (this.connectedWebSocketGleapId !== GleapSession.getInstance().session.gleapId) {\n      this.initWebSocket();\n    }\n\n    this.cleanupMainLoop();\n    this.trackInitialEvents();\n    this.runEventStreamLoop();\n  }\n\n  start() {\n    this.startPageListener();\n    this.resetErrorCountLoop();\n  }\n\n  trackInitialEvents() {\n    GleapStreamedEvent.getInstance().logEvent('sessionStarted');\n    GleapStreamedEvent.getInstance().logCurrentPage();\n  }\n\n  logCurrentPage() {\n    if (Gleap.getInstance().disablePageTracking) {\n      return;\n    }\n\n    const currentUrl = window.location.href;\n    if (currentUrl && currentUrl !== this.lastUrl) {\n      this.lastUrl = currentUrl;\n      this.logEvent('pageView', {\n        page: currentUrl,\n      });\n    }\n  }\n\n  startPageListener() {\n    const self = this;\n    setInterval(function () {\n      self.logCurrentPage();\n    }, 1000);\n  }\n\n  logEvent(name, data) {\n    var log = {\n      name,\n      date: new Date(),\n    };\n    if (data) {\n      log.data = gleapDataParser(data);\n    }\n    this.eventArray.push(log);\n    this.streamedEventArray.push(log);\n\n    // Check max size of event log\n    if (this.eventArray.length > this.eventMaxLength) {\n      this.eventArray.shift();\n    }\n\n    // Check max size of streamed event log\n    if (this.streamedEventArray.length > this.eventMaxLength) {\n      this.streamedEventArray.shift();\n    }\n  }\n\n  runEventStreamLoop = () => {\n    const self = this;\n    this.streamEvents();\n\n    this.mainLoopTimeout = setTimeout(function () {\n      self.runEventStreamLoop();\n    }, 2500);\n  };\n\n  streamEvents = () => {\n    if (!GleapSession.getInstance().ready || this.streamingEvents || this.errorCount > 2) {\n      return;\n    }\n\n    // Nothing to stream.\n    if (this.streamedEventArray.length === 0) {\n      return;\n    }\n\n    // Sockets not connected.\n    if (!this.socket || this.socket.readyState !== this.socket.OPEN) {\n      return;\n    }\n\n    const self = this;\n    this.streamingEvents = true;\n\n    const http = new XMLHttpRequest();\n    http.open('POST', GleapSession.getInstance().apiUrl + '/sessions/events');\n    http.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n    GleapSession.getInstance().injectSession(http);\n    http.onerror = () => {\n      self.errorCount++;\n      self.streamingEvents = false;\n    };\n    http.onreadystatechange = function (e) {\n      if (http.readyState === 4) {\n        if (http.status === 200 || http.status === 201) {\n          self.errorCount = 0;\n        } else {\n          self.errorCount++;\n        }\n\n        self.streamingEvents = false;\n      }\n    };\n\n    const sessionDuration = GleapMetaDataManager.getInstance().getSessionDuration();\n    http.send(\n      JSON.stringify({\n        time: sessionDuration,\n        events: this.streamedEventArray,\n        opened: GleapFrameManager.getInstance().isOpened(),\n        type: 'js',\n        sdkVersion: SDK_VERSION,\n        ws: true,\n      })\n    );\n\n    this.streamedEventArray = [];\n  };\n}\n","import { loadFromGleapCache, saveToGleapCache, clearGleapCache } from './GleapHelper';\nimport Gleap, {\n  GleapFrameManager,\n  GleapFeedbackButtonManager,\n  GleapTranslationManager,\n  GleapNetworkIntercepter,\n  GleapSession,\n  GleapReplayRecorder,\n  GleapNotificationManager,\n  GleapAiChatbarManager,\n} from './Gleap';\n\nconst parseIntWithDefault = (val, def) => {\n  const parsed = parseInt(val);\n  if (isNaN(parsed)) {\n    return def;\n  }\n  return parsed;\n};\n\nexport default class GleapConfigManager {\n  flowConfig = null;\n  projectActions = null;\n  onConfigLoadedListener = [];\n  aiTools = [];\n\n  onConfigLoaded = (onConfigLoaded) => {\n    if (this.flowConfig !== null) {\n      onConfigLoaded();\n    } else {\n      this.onConfigLoadedListener.push(onConfigLoaded);\n    }\n  };\n\n  // GleapConfigManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapConfigManager();\n    }\n    return this.instance;\n  }\n\n  /**\n   * Returns the loaded flow config.\n   * @returns\n   */\n  getFlowConfig() {\n    return this.flowConfig;\n  }\n\n  setAiTools = (aiTools) => {\n    this.aiTools = aiTools;\n    GleapFrameManager.getInstance().sendConfigUpdate();\n  };\n\n  getAiTools = () => {\n    return this.aiTools;\n  };\n\n  /**\n   * Load config.\n   * @returns {string}\n   */\n  start = () => {\n    const session = GleapSession.getInstance();\n    const cachedConfig = loadFromGleapCache(\n      `config-${session.sdkKey}-${GleapTranslationManager.getInstance().getActiveLanguage()}`\n    );\n    if (cachedConfig) {\n      this.applyConfig(cachedConfig);\n      this.loadConfigFromServer().catch(function (e) {});\n      return Promise.resolve();\n    }\n\n    return this.loadConfigFromServer();\n  };\n\n  loadConfigFromServer = () => {\n    const self = this;\n    return new Promise(function (resolve, reject) {\n      const session = GleapSession.getInstance();\n      const http = new XMLHttpRequest();\n      const lang = GleapTranslationManager.getInstance().getActiveLanguage();\n      http.open('GET', session.apiUrl + '/config/' + session.sdkKey + '?lang=' + lang);\n      http.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n      session.injectSession(http);\n      http.onerror = function () {\n        reject();\n      };\n      http.onreadystatechange = function (e) {\n        if (http.readyState === 4) {\n          if (http.status === 403) {\n            clearGleapCache(`config-${session.sdkKey}-${lang}`);\n            Gleap.destroy();\n          }\n          if (http.status === 200 || http.status === 201) {\n            try {\n              const config = JSON.parse(http.responseText);\n              try {\n                saveToGleapCache(`config-${session.sdkKey}-${lang}`, config);\n              } catch (exp) {}\n              self.applyConfig(config);\n              return resolve();\n            } catch (e) {}\n          }\n          reject();\n        }\n      };\n      http.send();\n    });\n  };\n\n  applyStylesFromConfig() {\n    const flowConfig = this.flowConfig;\n\n    Gleap.setStyles(\n      flowConfig.color ? flowConfig.color : '#485BFF',\n      flowConfig.headerColor ? flowConfig.headerColor : '#485BFF',\n      flowConfig.buttonColor ? flowConfig.buttonColor : '#485BFF',\n      flowConfig.backgroundColor ? flowConfig.backgroundColor : '#FFFFFF',\n      parseIntWithDefault(flowConfig.borderRadius, 20),\n      parseIntWithDefault(flowConfig.buttonX, 20),\n      parseIntWithDefault(flowConfig.buttonY, 20),\n      flowConfig.feedbackButtonPosition\n    );\n  }\n\n  notifyConfigLoaded() {\n    if (this.onConfigLoadedListener.length > 0) {\n      for (var i = 0; i < this.onConfigLoadedListener.length; i++) {\n        this.onConfigLoadedListener[i]();\n      }\n    }\n    this.onConfigLoadedListener = [];\n  }\n\n  /**\n   * Applies the Gleap config.\n   * @param {*} config\n   */\n  applyConfig(config) {\n    try {\n      const flowConfig = config.flowConfig;\n      this.flowConfig = flowConfig;\n\n      // Update styles.\n      this.applyStylesFromConfig();\n\n      // Send config update.\n      GleapFrameManager.getInstance().sendConfigUpdate();\n      GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n      GleapNotificationManager.getInstance().updateContainerStyle();\n\n      if (flowConfig.enableWebReplays) {\n        GleapReplayRecorder.getInstance().start();\n      } else {\n        GleapReplayRecorder.getInstance().stop();\n      }\n\n      if (flowConfig.enableNetworkLogs) {\n        GleapNetworkIntercepter.getInstance().start();\n      }\n\n      GleapNetworkIntercepter.getInstance().setLoadAllResources(flowConfig.sendNetworkResources ? true : false);\n\n      if (flowConfig.networkLogPropsToIgnore) {\n        GleapNetworkIntercepter.getInstance().setFilters(flowConfig.networkLogPropsToIgnore);\n      }\n\n      if (flowConfig.networkLogBlacklist) {\n        GleapNetworkIntercepter.getInstance().setBlacklist(flowConfig.networkLogBlacklist);\n      }\n\n      GleapTranslationManager.getInstance().updateRTLSupport();\n\n      Gleap.enableShortcuts(flowConfig.enableShortcuts ? true : false);\n\n      if (config.aiBar) {\n        GleapAiChatbarManager.getInstance().setConfig(config.aiBar);\n      }\n\n      this.notifyConfigLoaded();\n    } catch (e) {}\n  }\n}\n","import { isMobile, resizeImage } from './GleapHelper';\nimport { isBlacklisted } from './ResourceExclusionList';\n\nexport const startScreenCapture = (isLiveSite) => {\n  return prepareScreenshotData(isLiveSite);\n};\n\nconst documentToHTML = (clone) => {\n  var html = '';\n  var node = window.document.doctype;\n  if (node) {\n    html =\n      '<!DOCTYPE ' +\n      node.name +\n      (node.publicId ? ' PUBLIC \"' + node.publicId + '\"' : '') +\n      (!node.publicId && node.systemId ? ' SYSTEM' : '') +\n      (node.systemId ? ' \"' + node.systemId + '\"' : '') +\n      '>';\n  }\n\n  if (clone && clone.childNodes && clone.childNodes.length > 0) {\n    for (var i = 0; i < clone.childNodes.length; i++) {\n      if (clone.childNodes[i]) {\n        html += clone.childNodes[i].outerHTML;\n      }\n    }\n  }\n\n  return html;\n};\n\nconst replaceAsync = (str, regex, asyncFn) => {\n  return new Promise((resolve, reject) => {\n    const promises = [];\n    str.replace(regex, (match, ...args) => {\n      const promise = asyncFn(match, ...args);\n      promises.push(promise);\n    });\n    Promise.all(promises)\n      .then((data) => {\n        resolve(str.replace(regex, () => data.shift()));\n      })\n      .catch(() => {\n        reject();\n      });\n  });\n};\n\nconst loadCSSUrlResources = (data, basePath, remote) => {\n  return replaceAsync(\n    data,\n    /url\\((.*?)\\)/g,\n    (matchedData) =>\n      new Promise((resolve, reject) => {\n        if (!matchedData) {\n          return resolve(matchedData);\n        }\n\n        var matchedUrl = matchedData\n          .substr(4, matchedData.length - 5)\n          .replaceAll(\"'\", '')\n          .replaceAll('\"', '');\n\n        // Remote file or data\n        if (matchedUrl.indexOf('http') === 0 || matchedUrl.indexOf('//') === 0 || matchedUrl.indexOf('data') === 0) {\n          return resolve(matchedData);\n        }\n\n        try {\n          var resourcePath = matchedUrl;\n          if (basePath) {\n            resourcePath = new URL(matchedUrl, basePath + '/').href;\n          }\n\n          // Try to fetch external resource.\n          if (!remote) {\n            return fetchCSSResource(resourcePath).then((resourceData) => {\n              return resolve('url(' + resourceData + ')');\n            });\n          } else {\n            return resolve('url(' + resourcePath + ')');\n          }\n        } catch (exp) {\n          return resolve(matchedData);\n        }\n      })\n  );\n};\n\nconst fetchCSSResource = (url) => {\n  return new Promise((resolve, reject) => {\n    if (url) {\n      var xhr = new XMLHttpRequest();\n      xhr.onload = function () {\n        var reader = new FileReader();\n        reader.onloadend = function () {\n          resolve(reader.result);\n        };\n        reader.onerror = function () {\n          reject();\n        };\n        reader.readAsDataURL(xhr.response);\n      };\n      xhr.onerror = function (err) {\n        resolve();\n      };\n      xhr.open('GET', url);\n      xhr.responseType = 'blob';\n      xhr.send();\n    } else {\n      resolve();\n    }\n  });\n};\n\nconst progressResource = (data, elem, resolve, reject) => {\n  resizeImage(data, 500, 500)\n    .then((data) => {\n      elem.src = data;\n      resolve();\n    })\n    .catch(() => {\n      console.warn('BB: Image resize failed.');\n      resolve();\n    });\n};\n\nconst fetchItemResource = (elem) => {\n  return new Promise((resolve, reject) => {\n    if (elem && elem.src) {\n      if (isBlacklisted(elem.src)) {\n        return resolve();\n      }\n\n      var xhr = new XMLHttpRequest();\n      xhr.onload = function () {\n        var reader = new FileReader();\n        reader.onloadend = function () {\n          progressResource(reader.result, elem, resolve, reject);\n        };\n        reader.onerror = function () {\n          resolve();\n        };\n        reader.readAsDataURL(xhr.response);\n      };\n      xhr.onerror = function (err) {\n        resolve();\n      };\n      var url = elem.src;\n      xhr.open('GET', url);\n      xhr.responseType = 'blob';\n      xhr.send();\n    } else {\n      resolve();\n    }\n  });\n};\n\nconst downloadAllImages = (dom) => {\n  const imgItems = dom.querySelectorAll('img');\n  const imgItemsPromises = [];\n  for (var i = 0; i < imgItems.length; i++) {\n    const item = imgItems[i];\n    imgItemsPromises.push(fetchItemResource(item));\n  }\n\n  return Promise.all(imgItemsPromises);\n};\n\nconst replaceStyleNodes = (clone, styleSheet, cssTextContent, styleId) => {\n  {\n    var cloneTargetNode = null;\n    if (styleSheet.ownerNode) {\n      cloneTargetNode = clone.querySelector('[bb-styleid=\"' + styleId + '\"]');\n    }\n\n    try {\n      if (cloneTargetNode) {\n        var replacementNode = null;\n        if (cssTextContent != '') {\n          // Create node.\n          const head = clone.querySelector('head');\n          var styleNode = window.document.createElement('style');\n          head.appendChild(styleNode);\n          styleNode.type = 'text/css';\n          if (styleNode.styleSheet) {\n            styleNode.styleSheet.cssText = cssTextContent;\n          } else {\n            styleNode.appendChild(window.document.createTextNode(cssTextContent));\n          }\n          replacementNode = styleNode;\n        } else {\n          var linkNode = window.document.createElement('link');\n          linkNode.rel = 'stylesheet';\n          linkNode.type = styleSheet.type;\n          linkNode.href = styleSheet.href;\n          linkNode.media = styleSheet.media;\n          replacementNode = linkNode;\n        }\n\n        if (replacementNode) {\n          cloneTargetNode.parentNode.insertBefore(replacementNode, cloneTargetNode);\n          cloneTargetNode.remove();\n        }\n      }\n    } catch (exp) {}\n  }\n};\n\nconst sanitizeCSSBraces = (css) => {\n  var result = '';\n  var depth = 0;\n  for (var i = 0; i < css.length; i++) {\n    if (css[i] === '{') {\n      depth++;\n      result += css[i];\n    } else if (css[i] === '}') {\n      if (depth > 0) {\n        depth--;\n        result += css[i];\n      }\n      // Skip stray closing braces at depth 0\n    } else {\n      result += css[i];\n    }\n  }\n  return result;\n};\n\nconst getTextContentFromStyleSheet = (styleSheet) => {\n  var cssRules = null;\n  try {\n    if (styleSheet.cssRules) {\n      cssRules = styleSheet.cssRules;\n    } else if (styleSheet.rules) {\n      cssRules = styleSheet.rules;\n    }\n  } catch (exp) {}\n\n  var cssTextContent = '';\n  if (cssRules) {\n    for (var cssRuleItem in cssRules) {\n      if (cssRules[cssRuleItem].cssText) {\n        cssTextContent += cssRules[cssRuleItem].cssText + '\\n';\n      }\n    }\n  }\n\n  return sanitizeCSSBraces(cssTextContent);\n};\n\nconst downloadAllCSSUrlResources = (clone, remote) => {\n  var promises = [];\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    const styleSheet = document.styleSheets[i];\n\n    // Skip if the stylesheet is meant for print\n    if (styleSheet.media && styleSheet.media.mediaText === 'print') {\n      continue;\n    }\n\n    const cssTextContent = getTextContentFromStyleSheet(styleSheet);\n    if (styleSheet && styleSheet.ownerNode) {\n      if (cssTextContent != '') {\n        // Resolve resources.\n        const baseTags = document.getElementsByTagName('base');\n        var basePathURL = baseTags.length\n          ? baseTags[0].href.substr(location.origin.length, 999)\n          : window.location.href.split(/[?#]/)[0];\n\n        if (styleSheet.href) {\n          basePathURL = styleSheet.href;\n        }\n\n        const basePath = basePathURL.substring(0, basePathURL.lastIndexOf('/'));\n\n        promises.push(\n          loadCSSUrlResources(cssTextContent, basePath, remote).then((replacedStyle) => {\n            return {\n              styletext: replacedStyle,\n              stylesheet: styleSheet,\n              styleId: styleSheet.ownerNode.getAttribute('bb-styleid'),\n            };\n          })\n        );\n      } else {\n        promises.push(\n          Promise.resolve({\n            styletext: cssTextContent,\n            stylesheet: styleSheet,\n            styleId: styleSheet.ownerNode.getAttribute('bb-styleid'),\n          })\n        );\n      }\n    }\n  }\n\n  return Promise.all(promises).then((results) => {\n    if (results) {\n      for (var i = 0; i < results.length; i++) {\n        replaceStyleNodes(clone, results[i].stylesheet, results[i].styletext, results[i].styleId);\n      }\n    }\n    return true;\n  });\n};\n\nconst prepareRemoteData = (clone, remote) => {\n  return new Promise((resolve, reject) => {\n    if (remote) {\n      // Always download CSS.\n      return downloadAllCSSUrlResources(clone, remote)\n        .then(() => {\n          resolve();\n        })\n        .catch(() => {\n          resolve();\n        });\n    } else {\n      return downloadAllImages(clone)\n        .then(() => {\n          return downloadAllCSSUrlResources(clone, remote).then(() => {\n            resolve();\n          });\n        })\n        .catch(() => {\n          console.warn('Gleap: Failed with resolving local resources. Please contact the Gleap support team.');\n          resolve();\n        });\n    }\n  });\n};\n\nconst handleAdoptedStyleSheets = (doc, clone, shadowNodeId) => {\n  if (typeof doc.adoptedStyleSheets !== 'undefined') {\n    for (let i = 0; i < doc.adoptedStyleSheets.length; i++) {\n      const styleSheet = doc.adoptedStyleSheets[i];\n      const cssTextContent = getTextContentFromStyleSheet(styleSheet);\n\n      var shadowStyleNode = window.document.createElement('style');\n      shadowStyleNode.type = 'text/css';\n      if (shadowStyleNode.styleSheet) {\n        shadowStyleNode.styleSheet.cssText = cssTextContent;\n      } else {\n        shadowStyleNode.appendChild(window.document.createTextNode(cssTextContent));\n      }\n\n      if (shadowNodeId) {\n        shadowStyleNode.setAttribute('bb-shadow-child', shadowNodeId);\n      }\n\n      clone.insertBefore(shadowStyleNode, clone.firstElementChild);\n    }\n  }\n};\n\nconst extractFinalCSSState = (element) => {\n  if (element && typeof element.getAnimations === 'function') {\n    const animations = element.getAnimations();\n    const finalCSSState = {};\n\n    animations.forEach((animation) => {\n      const keyframes = animation.effect?.getKeyframes() || [];\n      const finalKeyframe = keyframes[keyframes.length - 1] || {};\n\n      // Extract only the keys (CSS properties) from the final keyframe\n      Object.keys(finalKeyframe).forEach((property) => {\n        if (property !== 'offset') {\n          // Store the computed style for each animated property\n          finalCSSState[property] = getComputedStyle(element)[property];\n        }\n      });\n    });\n\n    if (Object.keys(finalCSSState).length === 0) {\n      return null;\n    }\n\n    return JSON.stringify(finalCSSState);\n  }\n\n  return null;\n};\n\nconst deepClone = async (host) => {\n  let shadowNodeId = 1;\n\n  const cloneNode = async (node, parent, shadowRoot) => {\n    const walkTree = async (nextn, nextp, innerShadowRoot) => {\n      while (nextn) {\n        try {\n          await cloneNode(nextn, nextp, innerShadowRoot);\n        } catch (exp) { }\n\n        // Fix missing element nodes.\n        if (\n          nextn.nextElementSibling &&\n          (nextn.nextElementSibling.nextSibling === nextn.nextSibling || nextn.nextSibling === null)\n        ) {\n          nextn = nextn.nextElementSibling;\n        } else {\n          nextn = nextn.nextSibling;\n        }\n      }\n    };\n\n    const clone = node.cloneNode();\n\n    const webAnimations = extractFinalCSSState(node);\n    if (webAnimations != null) {\n      clone.setAttribute('bb-web-animations', webAnimations);\n    }\n\n    if (typeof clone.setAttribute !== 'undefined') {\n      if (shadowRoot) {\n        clone.setAttribute('bb-shadow-child', shadowRoot);\n      }\n\n      if (node instanceof HTMLCanvasElement) {\n        try {\n          const boundingRect = node.getBoundingClientRect();\n          const resizedImage = await resizeImage(node.toDataURL(), 1400, 1400);\n\n          clone.setAttribute('bb-canvas-data', resizedImage);\n          clone.setAttribute('bb-canvas-height', boundingRect.height);\n          clone.setAttribute('bb-canvas-width', boundingRect.width);\n        } catch (exp) {\n          console.warn('Gleap: Failed to clone canvas data.', exp);\n        }\n      }\n    }\n\n    if (node.nodeType == Node.ELEMENT_NODE) {\n      const tagName = node.tagName ? node.tagName.toUpperCase() : node.tagName;\n      if (tagName == 'IFRAME' || tagName == 'VIDEO' || tagName == 'EMBED' || tagName == 'IMG' || tagName == 'SVG') {\n        const boundingRect = node.getBoundingClientRect();\n        clone.setAttribute('bb-element', true);\n        clone.setAttribute('bb-height', boundingRect.height);\n        clone.setAttribute('bb-width', boundingRect.width);\n      }\n\n      if (node.scrollTop > 0 || node.scrollLeft > 0) {\n        clone.setAttribute('bb-scrollpos', true);\n        clone.setAttribute('bb-scrolltop', node.scrollTop);\n        clone.setAttribute('bb-scrollleft', node.scrollLeft);\n      }\n\n      if (tagName === 'SELECT' || tagName === 'TEXTAREA' || tagName === 'INPUT') {\n        var val = node.value;\n        if (node.getAttribute('gleap-ignore') === 'value' || node.classList.contains('gl-mask')) {\n          val = new Array(val.length + 1).join('*');\n        }\n\n        clone.setAttribute('bb-data-value', val);\n        if ((node.type === 'checkbox' || node.type === 'radio') && node.checked) {\n          clone.setAttribute('bb-data-checked', true);\n        }\n      }\n    }\n\n    parent.appendChild(clone);\n\n    if (node.shadowRoot) {\n      var rootShadowNodeId = shadowNodeId;\n      shadowNodeId++;\n      await walkTree(node.shadowRoot.firstChild, clone, rootShadowNodeId);\n      handleAdoptedStyleSheets(node.shadowRoot, clone, rootShadowNodeId);\n\n      if (typeof clone.setAttribute !== 'undefined') {\n        clone.setAttribute('bb-shadow-parent', rootShadowNodeId);\n      }\n    }\n\n    await walkTree(node.firstChild, clone);\n  };\n\n  const fragment = document.createDocumentFragment();\n  await cloneNode(host, fragment);\n\n  // Work on adopted stylesheets.\n  var clonedHead = fragment.querySelector('head');\n  if (!clonedHead) {\n    clonedHead = fragment;\n  }\n  handleAdoptedStyleSheets(window.document, clonedHead);\n\n  return fragment;\n};\n\nconst prepareScreenshotData = (remote) => {\n  return new Promise(async (resolve, reject) => {\n    try {\n    const styleTags = window.document.querySelectorAll('style, link');\n    for (var i = 0; i < styleTags.length; ++i) {\n      styleTags[i].setAttribute('bb-styleid', i);\n    }\n\n    const clone = await deepClone(window.document.documentElement);\n\n    // Fix for web imports (depracted).\n    const linkImportElems = clone.querySelectorAll('link[rel=import]');\n    for (var i = 0; i < linkImportElems.length; ++i) {\n      const referenceNode = linkImportElems[i];\n      if (referenceNode && referenceNode.childNodes && referenceNode.childNodes.length > 0) {\n        const childNodes = referenceNode.childNodes;\n        while (childNodes.length > 0) {\n          referenceNode.parentNode.insertBefore(childNodes[0], referenceNode);\n        }\n        referenceNode.remove();\n      }\n    }\n\n    // Remove all scripts & style\n    const scriptElems = clone.querySelectorAll('script, noscript');\n    for (var i = 0; i < scriptElems.length; ++i) {\n      scriptElems[i].remove();\n    }\n\n    // Cleanup base path\n    var existingBasePath = '';\n    const baseElems = clone.querySelectorAll('base');\n    for (var i = 0; i < baseElems.length; ++i) {\n      if (baseElems[i].href) {\n        existingBasePath = baseElems[i].href;\n      }\n      baseElems[i].remove();\n    }\n\n    // Adjust the base node\n    const baseUrl = window.location.href.substring(0, window.location.href.lastIndexOf('/'));\n    var newBaseUrl = baseUrl + '/';\n    if (existingBasePath) {\n      if (existingBasePath.startsWith('http')) {\n        // Absolute path.\n        newBaseUrl = existingBasePath;\n      } else {\n        // Relative path.\n        newBaseUrl = baseUrl + existingBasePath;\n        if (!newBaseUrl.endsWith('/')) {\n          newBaseUrl += '/';\n        }\n      }\n    }\n\n    const baseNode = window.document.createElement('base');\n    baseNode.href = newBaseUrl;\n    const head = clone.querySelector('head');\n    head.insertBefore(baseNode, head.firstChild);\n\n    // Do further cleanup.\n    const dialogElems = clone.querySelectorAll('.bb-feedback-dialog-container, .bb-capture-editor-borderlayer');\n    for (var i = 0; i < dialogElems.length; ++i) {\n      dialogElems[i].remove();\n    }\n\n    // Calculate heights\n    const bbElems = clone.querySelectorAll('[bb-element=true]');\n    for (var i = 0; i < bbElems.length; ++i) {\n      if (bbElems[i]) {\n        bbElems[i].style.height = bbElems[i].getAttribute('bb-height') + 'px';\n      }\n    }\n\n    prepareRemoteData(clone, remote).then(() => {\n      const html = documentToHTML(clone);\n\n      resolve({\n        html: html,\n        baseUrl: baseUrl,\n        width: window.innerWidth,\n        height: window.innerHeight,\n        isMobile: isMobile(),\n      });\n    });\n    } catch (exp) {\n      console.warn('Gleap: Failed to capture screenshot', exp);\n      resolve(null);\n    }\n  });\n};\n","export const isBlacklisted = function (url) {\n  const blacklist = [\n    '//fonts.googleapis.com',\n    '//cdn.jsdelivr.net',\n    '//cdnjs.cloudflare.com',\n    '//ajax.googleapis.com',\n    '//use.typekit.net',\n    '.amazonaws.com',\n    '//jssdk.gleap.io',\n    '.gstatic.com',\n  ];\n\n  if (!url) {\n    return false;\n  }\n\n  for (var i = 0; i < blacklist.length; i++) {\n    if (url.indexOf(blacklist[i]) !== -1) {\n      return true;\n    }\n  }\n  return false;\n};\n","import GleapSession from './GleapSession';\n\nexport class GleapScreenRecorder {\n  // Constants\n  static MAX_RECORD_TIME = 120; // 2 minutes\n  static MAX_WIDTH = 3072;\n  static MAX_HEIGHT = 1728;\n  static IDEAL_FRAME_RATE = 10;\n  static MAX_FRAME_RATE = 24;\n  static CHUNK_INTERVAL = 200; // milliseconds\n  static TIMER_UPDATE_INTERVAL = 1000; // milliseconds\n  static RERENDER_DELAY = 100; // milliseconds\n\n  // MIME types in order of preference\n  static MIME_TYPES = [\n    'video/webm;codecs=vp9,opus',\n    'video/webm;codecs=vp8,opus',\n    'video/webm;codecs=vp9',\n    'video/webm;codecs=vp8',\n    'video/webm',\n    'video/mp4',\n  ];\n\n  // CSS selectors\n  static SELECTORS = {\n    PREVIEW_VIDEO: '.bb-capture-preview video',\n    TIMER_LABEL: '.bb-capture-toolbar-item-timer',\n  };\n\n  // Instance properties\n  rerender;\n  stream;\n  mediaRecorder;\n  audioMuted = false;\n  audioAvailable = true;\n  available = true;\n  isRecording = false;\n  file = null;\n  maxRecordTime = GleapScreenRecorder.MAX_RECORD_TIME;\n  recordTime = 0;\n  recordingTimer = null;\n  permissionErrorText = '';\n\n  // Internals for composed capture\n  _displayVideoTrack = null;\n  _displayStream = null;\n  _micStream = null;\n\n  constructor(rerender, permissionErrorText) {\n    this.rerender = rerender;\n    this.permissionErrorText = permissionErrorText;\n    if (!navigator.mediaDevices || !navigator.mediaDevices.getDisplayMedia) {\n      this.available = false;\n    }\n\n    setTimeout(() => {\n      this.rerender();\n    }, GleapScreenRecorder.RERENDER_DELAY);\n  }\n\n  getSupportedMimeType() {\n    // Prefer explicit audio+video codecs to ensure audio gets muxed.\n    for (const type of GleapScreenRecorder.MIME_TYPES) {\n      if (window.MediaRecorder && MediaRecorder.isTypeSupported(type)) {\n        return type;\n      }\n    }\n\n    return 'video/webm';\n  }\n\n  formatTime(s) {\n    return (s - (s %= 60)) / 60 + (9 < s ? ':' : ':0') + s;\n  }\n\n  stopStreamTracks(stream) {\n    if (!stream) return;\n    try {\n      stream.getTracks().forEach((track) => track.stop());\n    } catch (_) {}\n  }\n\n  createMediaStream(tracks) {\n    const validTracks = tracks.filter((track) => track !== null);\n    return new MediaStream(validTracks);\n  }\n\n  getFirstVideoTrack(stream) {\n    if (!stream) return null;\n    const videoTracks = stream.getVideoTracks();\n    return videoTracks.length > 0 ? videoTracks[0] : null;\n  }\n\n  getFirstAudioTrack(stream) {\n    if (!stream) return null;\n    const audioTracks = stream.getAudioTracks();\n    return audioTracks.length > 0 ? audioTracks[0] : null;\n  }\n\n  async startScreenRecording() {\n    if (!navigator.mediaDevices || !navigator.mediaDevices.getDisplayMedia || this.isRecording) {\n      this.available = false;\n      this.rerender();\n      return;\n    }\n\n    try {\n      const displayStream = await navigator.mediaDevices.getDisplayMedia({\n        video: {\n          width: {\n            ideal: Math.min(window.screen.width, GleapScreenRecorder.MAX_WIDTH),\n          },\n          height: {\n            ideal: Math.min(window.screen.height, GleapScreenRecorder.MAX_HEIGHT),\n          },\n          frameRate: {\n            ideal: GleapScreenRecorder.IDEAL_FRAME_RATE,\n            max: GleapScreenRecorder.MAX_FRAME_RATE,\n          },\n          displaySurface: 'monitor',\n        },\n        audio: false,\n        selfBrowserSurface: 'include',\n      });\n\n      // Keep references to both the original stream and video track\n      this._displayStream = displayStream;\n      this._displayVideoTrack = this.getFirstVideoTrack(displayStream);\n\n      // If user wants audio and permissions allow it, get mic, else continue with video-only\n      if (!this.audioMuted) {\n        await this.startAudioRecording();\n      } else {\n        this.audioAvailable = false;\n        const composed = this.createMediaStream([this._displayVideoTrack]);\n        this.stream = composed;\n        this.handleRecord({ stream: composed });\n      }\n\n      this.rerender();\n    } catch (error) {\n      window.alert(this.permissionErrorText);\n      this.rerender();\n    }\n  }\n\n  stopScreenRecording() {\n    if (!this.mediaRecorder || !this.stream || !this.isRecording) {\n      return;\n    }\n\n    if (this.recordingTimer) {\n      clearInterval(this.recordingTimer);\n      this.recordingTimer = null;\n    }\n\n    try {\n      this.mediaRecorder.stop();\n    } catch (_) {}\n\n    // Stop composed stream tracks\n    this.stopStreamTracks(this.stream);\n\n    // Stop original display stream tracks (this is what Chrome uses for the recording indicator)\n    if (this._displayStream) {\n      this.stopStreamTracks(this._displayStream);\n      this._displayStream = null;\n    }\n\n    // Also stop original mic stream tracks if present\n    if (this._micStream) {\n      this.stopStreamTracks(this._micStream);\n      this._micStream = null;\n    }\n\n    this._displayVideoTrack = null;\n\n    this.rerender();\n  }\n\n  async startAudioRecording() {\n    if (!this._displayVideoTrack) {\n      return;\n    }\n\n    try {\n      const voiceStream = await navigator.mediaDevices.getUserMedia({\n        audio: {\n          echoCancellation: true,\n          noiseSuppression: true,\n          autoGainControl: true,\n        },\n        video: false,\n      });\n\n      this._micStream = voiceStream;\n      const micTrack = this.getFirstAudioTrack(voiceStream);\n\n      this.audioMuted = false;\n      this.audioAvailable = !!micTrack;\n\n      // Compose a NEW stream with exactly one video track + (optional) one mic track\n      const composed = this.createMediaStream([this._displayVideoTrack, micTrack]);\n\n      this.stream = composed;\n      this.handleRecord({ stream: composed });\n      this.rerender();\n    } catch (error) {\n      this.audioAvailable = false;\n\n      // Fallback to video-only if mic fails\n      const composed = this.createMediaStream([this._displayVideoTrack]);\n\n      this.stream = composed;\n      this.handleRecord({ stream: composed });\n      this.rerender();\n    }\n  }\n\n  toggleAudio() {\n    this.audioMuted = !this.audioMuted;\n    this.rerender();\n\n    if (!this.stream) {\n      return;\n    }\n\n    const audioTracks = this.stream.getAudioTracks();\n    for (let i = 0; i < audioTracks.length; i++) {\n      const audioTrack = audioTracks[i];\n      audioTrack.enabled = !this.audioMuted;\n    }\n  }\n\n  static async uploadScreenRecording(screenRecordingData) {\n    if (screenRecordingData == null) {\n      return null;\n    }\n\n    return new Promise((resolve, reject) => {\n      const xhr = new XMLHttpRequest();\n      xhr.open('POST', GleapSession.getInstance().apiUrl + '/uploads/sdk');\n      GleapSession.getInstance().injectSession(xhr);\n\n      const formData = new FormData();\n      formData.append('file', screenRecordingData);\n\n      xhr.onerror = function () {\n        reject(new Error('Network error during file upload'));\n      };\n      xhr.onreadystatechange = function () {\n        if (xhr.readyState == 4) {\n          if (xhr.status == 200) {\n            resolve(JSON.parse(xhr.response).fileUrl);\n          } else {\n            reject(new Error(`Upload failed with status ${xhr.status}`));\n          }\n        }\n      };\n      xhr.send(formData);\n    });\n  }\n\n  clearPreview() {\n    const videoEl = document.querySelector(GleapScreenRecorder.SELECTORS.PREVIEW_VIDEO);\n    if (videoEl) {\n      videoEl.src = null;\n    }\n    this.file = null;\n    this.rerender();\n  }\n\n  handleRecord({ stream }) {\n    const self = this;\n\n    const recordedChunks = [];\n    this.mediaRecorder = new MediaRecorder(stream, {\n      mimeType: this.getSupportedMimeType(),\n    });\n    this.isRecording = true;\n    this.recordTime = 0;\n\n    // Set timer (guard if label isn't present)\n    const timerLabel = document.querySelector(GleapScreenRecorder.SELECTORS.TIMER_LABEL);\n    if (this.recordingTimer) {\n      clearInterval(this.recordingTimer);\n      this.recordingTimer = null;\n    }\n    this.recordingTimer = setInterval(() => {\n      self.recordTime++;\n      const remainingTime = self.maxRecordTime - self.recordTime;\n      if (timerLabel) {\n        if (remainingTime > 0) {\n          timerLabel.innerHTML = self.formatTime(remainingTime);\n        } else {\n          timerLabel.innerHTML = '2:00';\n          self.stopScreenRecording();\n        }\n      } else if (remainingTime <= 0) {\n        self.stopScreenRecording();\n      }\n    }, GleapScreenRecorder.TIMER_UPDATE_INTERVAL);\n\n    this.mediaRecorder.ondataavailable = function (e) {\n      if (e.data && e.data.size > 0) {\n        recordedChunks.push(e.data);\n      }\n    };\n\n    const videoTrack = this.getFirstVideoTrack(stream);\n    if (videoTrack) {\n      videoTrack.onended = function () {\n        self.prepareRecording(recordedChunks);\n      };\n    }\n\n    this.mediaRecorder.onstop = function () {\n      self.prepareRecording(recordedChunks);\n    };\n\n    // Start recording with configured chunk interval\n    this.mediaRecorder.start(GleapScreenRecorder.CHUNK_INTERVAL);\n\n    self.rerender();\n  }\n\n  prepareRecording(recordedChunks) {\n    const mimeType = this.getSupportedMimeType();\n    const completeBlob = new Blob(recordedChunks, { type: mimeType });\n\n    const extension = mimeType.includes('mp4') ? 'mp4' : 'webm';\n    this.file = new File([completeBlob], `screen-recording.${extension}`, {\n      type: mimeType,\n    });\n\n    const previewVideoElement = document.querySelector(GleapScreenRecorder.SELECTORS.PREVIEW_VIDEO);\n    if (previewVideoElement) {\n      previewVideoElement.src = URL.createObjectURL(completeBlob);\n      this.audioAvailable = this.stream ? this.stream.getAudioTracks().length > 0 : this.audioAvailable;\n      this.isRecording = false;\n      this.rerender();\n    }\n  }\n}\n","import { startScreenCapture } from './ScreenCapture';\nimport { GleapScreenRecorder } from './GleapScreenRecorder';\nimport Gleap, {\n  GleapConsoleLogManager,\n  GleapStreamedEvent,\n  GleapSession,\n  GleapCustomDataManager,\n  GleapMetaDataManager,\n  GleapNetworkIntercepter,\n  GleapTagManager,\n} from './Gleap';\n\nexport default class GleapFeedback {\n  excludeData = {};\n  type = 'BUG';\n  priority = 'LOW';\n  customData = {};\n  ticketAttributes = {};\n  metaData = {};\n  consoleLog = [];\n  networkLogs = [];\n  customEventLog = [];\n  formData = {};\n  isSilent = false;\n  outboundId = undefined;\n  screenshotData = undefined;\n  webReplay = undefined;\n  screenRecordingUrl = undefined;\n  spamToken = undefined;\n\n  constructor(type, priority, formData, isSilent, excludeData, outboundId, spamToken) {\n    this.type = type;\n    this.priority = priority;\n    this.formData = formData;\n    this.isSilent = isSilent;\n    this.excludeData = excludeData;\n    this.outboundId = outboundId;\n    this.spamToken = spamToken;\n  }\n\n  takeSnapshot() {\n    const gleapInstance = Gleap.getInstance();\n    this.customData = GleapCustomDataManager.getInstance().getCustomData();\n    this.metaData = GleapMetaDataManager.getInstance().getMetaData();\n    this.consoleLog = GleapConsoleLogManager.getInstance().getLogs();\n    this.networkLogs = GleapNetworkIntercepter.getInstance().getRequests();\n    this.customEventLog = GleapStreamedEvent.getInstance().getEventArray();\n    this.ticketAttributes = GleapCustomDataManager.getInstance().getTicketAttributes();\n\n    var dataPromises = [];\n\n    // Assign replays\n    var webReplay = gleapInstance.getGlobalDataItem('webReplay');\n    if (webReplay !== null) {\n      this.webReplay = webReplay;\n    }\n\n    // Prepare screen recording\n    var screenRecordingData = gleapInstance.getGlobalDataItem('screenRecordingData');\n    if (screenRecordingData != null) {\n      var recordingUrlPromise = GleapScreenRecorder.uploadScreenRecording(screenRecordingData).then((recordingUrl) => {\n        if (recordingUrl) {\n          this.screenRecordingUrl = recordingUrl;\n        }\n      });\n      dataPromises.push(recordingUrlPromise);\n    }\n\n    // Prepare screenshot\n    if (!(this.excludeData && this.excludeData.screenshot)) {\n      var screenshotDataPromise = startScreenCapture(gleapInstance.isLiveMode()).then((screenshotData) => {\n        if (screenshotData) {\n          const snapshotPosition = gleapInstance.getGlobalDataItem('snapshotPosition');\n          screenshotData['x'] = snapshotPosition.x;\n          screenshotData['y'] = snapshotPosition.y;\n          this.screenshotData = screenshotData;\n        }\n      });\n      dataPromises.push(screenshotDataPromise);\n    }\n\n    return Promise.all(dataPromises);\n  }\n\n  getData() {\n    var feedbackData = {\n      type: this.type,\n      priority: this.priority,\n      customData: this.customData,\n      metaData: this.metaData,\n      consoleLog: this.consoleLog,\n      networkLogs: this.networkLogs,\n      customEventLog: this.customEventLog,\n      // Merge ticket attributes and form data.\n      formData: {\n        ...this.ticketAttributes,\n        ...this.formData,\n      },\n      isSilent: this.isSilent,\n      outbound: this.outboundId,\n      screenshotData: this.screenshotData,\n      webReplay: this.webReplay,\n      screenRecordingUrl: this.screenRecordingUrl,\n      spamToken: this.spamToken,\n    };\n\n    const tags = GleapTagManager.getInstance().getTags();\n    if (tags && tags.length > 0) {\n      feedbackData.tags = tags;\n    }\n\n    if (this.excludeData) {\n      const keysToExclude = Object.keys(this.excludeData);\n      for (let i = 0; i < keysToExclude.length; i++) {\n        const keyToExclude = keysToExclude[i];\n        if (this.excludeData[keyToExclude] === true) {\n          if (feedbackData[keyToExclude]) {\n            delete feedbackData[keyToExclude];\n          }\n\n          if (keyToExclude === 'screenshot') {\n            delete feedbackData.screenshotData;\n          }\n\n          if (keyToExclude === 'replays') {\n            delete feedbackData.webReplay;\n          }\n        }\n      }\n    }\n\n    return feedbackData;\n  }\n\n  getTicketData() {\n    return new Promise((resolve, reject) => {\n      this.takeSnapshot()\n        .then(() => {\n          const dataToSend = this.getData();\n          resolve(dataToSend);\n        })\n        .catch((exp) => {\n          console.log('Failed to take snapshot', exp);\n          reject();\n        });\n    });\n  }\n\n  sendFeedback() {\n    return new Promise((resolve, reject) => {\n      this.takeSnapshot()\n        .then(() => {\n          const dataToSend = this.getData();\n\n          const http = new XMLHttpRequest();\n          http.open('POST', GleapSession.getInstance().apiUrl + '/bugs/v2');\n          http.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n          GleapSession.getInstance().injectSession(http);\n          http.onerror = (error) => {\n            reject();\n          };\n          http.onreadystatechange = function (e) {\n            if (http.readyState === 4) {\n              if (http.status === 200 || http.status === 201) {\n                try {\n                  const feedback = JSON.parse(http.responseText);\n                  resolve(feedback);\n                } catch (exp) {\n                  reject();\n                }\n              } else {\n                reject();\n              }\n            }\n          };\n          http.send(JSON.stringify(dataToSend));\n        })\n        .catch((exp) => {\n          console.log('Failed to take snapshot', exp);\n          reject();\n        });\n    });\n  }\n}\n","import Gleap, {\n  GleapAudioManager,\n  GleapBannerManager,\n  GleapConfigManager,\n  GleapConsoleLogManager,\n  GleapCustomActionManager,\n  GleapCustomDataManager,\n  GleapEventManager,\n  GleapFeedback,\n  GleapFeedbackButtonManager,\n  GleapMarkerManager,\n  GleapMetaDataManager,\n  GleapNetworkIntercepter,\n  GleapNotificationManager,\n  GleapSession,\n  GleapStreamedEvent,\n  GleapTagManager,\n  GleapTranslationManager,\n} from './Gleap';\nimport { runFunctionWhenDomIsReady } from './GleapHelper';\nimport { widgetMaxHeight } from './UI';\n\nexport default class GleapFrameManager {\n  frameUrl = 'https://messenger-app.gleap.io';\n  gleapFrameContainer = null;\n  gleapFrame = null;\n  comReady = false;\n  injectedFrame = false;\n  widgetOpened = false;\n  listeners = [];\n  appMode = 'widget';\n  markerManager = undefined;\n  escListener = undefined;\n  frameHeight = 0;\n  sendingFeedback = false;\n  queue = [];\n  urlHandler = function (url, newTab) {\n    if (url && url.length > 0) {\n      if (newTab) {\n        const newWindow = window.open(url, '_blank');\n        if (newWindow) {\n          newWindow.focus();\n        }\n      } else {\n        window.location.href = url;\n      }\n    }\n  };\n\n  // GleapFrameManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapFrameManager();\n    }\n    return this.instance;\n  }\n\n  constructor() {\n    this.startCommunication();\n    if (typeof window !== 'undefined') {\n      function appHeight() {\n        try {\n          const doc = document.documentElement;\n          doc.style.setProperty('--glvh', window.innerHeight * 0.01 + 'px');\n        } catch (e) {}\n      }\n\n      try {\n        window.addEventListener('resize', appHeight);\n        appHeight();\n      } catch (e) {}\n    }\n  }\n\n  setUrlHandler(handler) {\n    this.urlHandler = handler;\n  }\n\n  isSurvey() {\n    return this.appMode === 'survey' || this.appMode === 'survey_full' || this.appMode === 'survey_web';\n  }\n\n  setAppMode(appMode) {\n    this.appMode = appMode;\n    this.updateFrameStyle();\n\n    const innerContainer = document.querySelector('.gleap-frame-container-inner');\n    if ((this.appMode === 'widget' || this.appMode === 'survey_full' || this.appMode === 'survey_web') && innerContainer) {\n      innerContainer.style.maxHeight = `${widgetMaxHeight}px`;\n    }\n  }\n\n  registerEscListener() {\n    if (this.escListener) {\n      return;\n    }\n\n    this.escListener = (evt) => {\n      evt = evt || window.event;\n      if (evt.key === 'Escape') {\n        this.hideWidget();\n      }\n    };\n    document.addEventListener('keydown', this.escListener);\n  }\n\n  unregisterEscListener() {\n    if (this.escListener) {\n      document.removeEventListener('keydown', this.escListener);\n      this.escListener = null;\n    }\n  }\n\n  destroy() {\n    if (this.gleapFrame) {\n      this.gleapFrame.remove();\n    }\n    if (this.gleapFrameContainer) {\n      this.gleapFrameContainer.remove();\n    }\n    this.injectedFrame = false;\n    this.widgetOpened = false;\n    this.markerManager = undefined;\n    this.gleapFrameContainer = null;\n    this.gleapFrame = null;\n  }\n\n  isOpened() {\n    return this.widgetOpened || this.markerManager != null;\n  }\n\n  autoWhiteListCookieManager = () => {\n    if (window && window.cmp_block_ignoredomains) {\n      window.cmp_block_ignoredomains.concat(['messenger-app.gleap.io']);\n    }\n  };\n\n  injectFrame = () => {\n    if (this.injectedFrame) {\n      return;\n    }\n    this.injectedFrame = true;\n\n    this.autoWhiteListCookieManager();\n\n    // Inject the frame manager after it has been loaded.\n    runFunctionWhenDomIsReady(() => {\n      GleapConfigManager.getInstance().onConfigLoaded(() => {\n        // Apply CSS.\n        GleapConfigManager.getInstance().applyStylesFromConfig();\n\n        // Inject widget HTML.\n        var elem = document.createElement('div');\n        elem.className = 'gleap-frame-container gleap-frame-container--hidden gl-block';\n        elem.innerHTML = `<div class=\"gleap-frame-container-inner\"><iframe src=\"${this.frameUrl}\" class=\"gleap-frame\" scrolling=\"yes\" allow=\"autoplay; encrypted-media; fullscreen; microphone *; display-capture *; camera *;\" frameborder=\"0\"></iframe></div>`;\n        document.body.appendChild(elem);\n\n        this.gleapFrameContainer = elem;\n        this.gleapFrame = document.querySelector('.gleap-frame');\n\n        this.updateFrameStyle();\n\n        // Show loading preview for widget app mode.\n        if (this.appMode === 'widget') {\n          this.showFrameContainer(true);\n        }\n      });\n    });\n  };\n\n  showImage = (url) => {\n    runFunctionWhenDomIsReady(() => {\n      var elem = document.createElement('div');\n      elem.className = 'gleap-image-view';\n      elem.innerHTML = `<div class=\"gleap-image-view-close\">\n      <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm97.9-320l-17 17-47 47 47 47 17 17L320 353.9l-17-17-47-47-47 47-17 17L158.1 320l17-17 47-47-47-47-17-17L192 158.1l17 17 47 47 47-47 17-17L353.9 192z\"/></svg>\n      </div><img class=\"gleap-image-view-image\" src=\"${url}\" />`;\n      document.body.appendChild(elem);\n\n      const closeElement = () => {\n        elem.remove();\n      };\n\n      const close = elem.querySelector('.gleap-image-view-close');\n      close.addEventListener('click', () => {\n        closeElement();\n      });\n\n      elem.addEventListener('click', (e) => {\n        if (e.target === elem) {\n          closeElement();\n        }\n      });\n    });\n  };\n\n  updateFrameStyle = () => {\n    if (!this.gleapFrameContainer) {\n      return;\n    }\n\n    const surveyStyle = 'gleap-frame-container--survey';\n    const extendedStyle = 'gleap-frame-container--extended';\n    const surveyFullStyle = 'gleap-frame-container--survey-full';\n    const classicStyle = 'gleap-frame-container--classic';\n    const classicStyleLeft = 'gleap-frame-container--classic-left';\n    const modernStyleLeft = 'gleap-frame-container--modern-left';\n    const noButtonStyleLeft = 'gleap-frame-container--no-button';\n    const allStyles = [\n      classicStyle,\n      classicStyleLeft,\n      extendedStyle,\n      modernStyleLeft,\n      noButtonStyleLeft,\n      surveyStyle,\n      surveyFullStyle,\n    ];\n    for (let i = 0; i < allStyles.length; i++) {\n      this.gleapFrameContainer.classList.remove(allStyles[i]);\n    }\n\n    var styleToApply = undefined;\n    const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n    if (\n      flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n      flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n    ) {\n      styleToApply = classicStyle;\n    }\n    if (flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT) {\n      styleToApply = classicStyleLeft;\n    }\n    if (flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT) {\n      styleToApply = modernStyleLeft;\n    }\n    if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n      if (flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n        styleToApply = noButtonStyleLeft;\n      }\n    } else {\n      if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n        styleToApply = noButtonStyleLeft;\n      }\n    }\n    if (styleToApply) {\n      this.gleapFrameContainer.classList.add(styleToApply);\n    }\n\n    if (this.appMode === 'survey') {\n      this.gleapFrameContainer.classList.add(surveyStyle);\n    }\n    if (this.appMode === 'survey_full' || this.appMode === 'survey_web') {\n      this.gleapFrameContainer.classList.add(surveyFullStyle);\n    }\n    if (this.appMode === 'extended') {\n      this.gleapFrameContainer.classList.add(extendedStyle);\n    }\n\n    this.gleapFrameContainer.setAttribute('dir', GleapTranslationManager.getInstance().isRTLLayout ? 'rtl' : 'ltr');\n  };\n\n  showFrameContainer(showLoader) {\n    if (!this.gleapFrameContainer) {\n      return;\n    }\n\n    const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n    const loadingClass = 'gleap-frame-container--loading';\n    if (this.gleapFrameContainer.classList) {\n      this.gleapFrameContainer.classList.remove('gleap-frame-container--hidden');\n      if (showLoader) {\n        this.gleapFrameContainer.classList.add(loadingClass);\n\n        if (flowConfig && flowConfig.disableBGFade) {\n          this.gleapFrameContainer.classList.add('gleap-frame-container--loading-nofade');\n        }\n        if (flowConfig && flowConfig.disableBGGradient) {\n          this.gleapFrameContainer.classList.add('gleap-frame-container--loading-nogradient');\n        }\n      } else {\n        this.gleapFrameContainer.classList.remove(loadingClass);\n      }\n\n      setTimeout(() => {\n        this.gleapFrameContainer.classList.add('gleap-frame-container--animate');\n      }, 500);\n    }\n\n    this.widgetOpened = true;\n    this.updateUI();\n  }\n\n  runWidgetShouldOpenCallback() {\n    if (!this.gleapFrameContainer) {\n      return;\n    }\n\n    this.workThroughQueue();\n\n    Gleap.getInstance().setGlobalDataItem('snapshotPosition', {\n      x: window.scrollX,\n      y: window.scrollY,\n    });\n\n    this.showFrameContainer(false);\n    this.updateWidgetStatus();\n\n    GleapEventManager.notifyEvent('open');\n    this.registerEscListener();\n  }\n\n  updateUI() {\n    // Clear notifications only when not opening a survey.\n    GleapNotificationManager.getInstance().clearAllNotifications(this.isSurvey());\n\n    GleapFeedbackButtonManager.getInstance().updateNotificationBadge(0);\n    GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n  }\n\n  showWidget() {\n    setTimeout(() => {\n      if (this.gleapFrameContainer) {\n        this.runWidgetShouldOpenCallback();\n      } else {\n        GleapFrameManager.getInstance().injectFrame();\n      }\n      this.updateUI();\n    }, 0);\n  }\n\n  updateWidgetStatus() {\n    this.sendMessage({\n      name: 'widget-status-update',\n      data: {\n        isWidgetOpen: this.widgetOpened,\n      },\n    });\n  }\n\n  hideMarkerManager() {\n    if (this.markerManager) {\n      this.markerManager.clear();\n      this.markerManager = null;\n    }\n  }\n\n  hideWidget(resetRoutes = false) {\n    // Prevent for survey web.\n    if (this.appMode === 'survey_web') {\n      return;\n    }\n\n    this.hideMarkerManager();\n    if (this.gleapFrameContainer) {\n      this.gleapFrameContainer.classList.add('gleap-frame-container--hidden');\n      this.gleapFrameContainer.classList.remove('gleap-frame-container--animate');\n    }\n    if (resetRoutes) {\n      this.sendMessage({\n        name: 'reset-routes',\n        data: {},\n      });\n    }\n    this.widgetOpened = false;\n    this.updateWidgetStatus();\n    GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n    GleapEventManager.notifyEvent('close');\n    GleapNotificationManager.getInstance().reloadNotificationsFromCache();\n\n    this.unregisterEscListener();\n\n    if (typeof window !== 'undefined' && typeof window.focus !== 'undefined') {\n      window.focus();\n    }\n  }\n\n  sendMessage(data, queue = false) {\n    try {\n      this.gleapFrame = document.querySelector('.gleap-frame');\n      if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) {\n        this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), '*');\n      } else {\n        if (queue) {\n          this.queue.push(data);\n        }\n      }\n    } catch (e) {}\n  }\n\n  sendSessionUpdate() {\n    this.sendMessage({\n      name: 'session-update',\n      data: {\n        sessionData: GleapSession.getInstance().getSession(),\n        apiUrl: GleapSession.getInstance().apiUrl,\n        sdkKey: GleapSession.getInstance().sdkKey,\n      },\n    });\n  }\n\n  sendConfigUpdate() {\n    if (!this.comReady) {\n      return;\n    }\n\n    this.sendMessage({\n      name: 'config-update',\n      data: {\n        config: GleapConfigManager.getInstance().getFlowConfig(),\n        aiTools: GleapConfigManager.getInstance().getAiTools(),\n        overrideLanguage: GleapTranslationManager.getInstance().getOverrideLanguage(),\n      },\n    });\n\n    this.updateFrameStyle();\n  }\n\n  showDrawingScreen(type) {\n    this.hideWidget();\n\n    // Show screen drawing.\n    this.markerManager = new GleapMarkerManager(type);\n    this.markerManager.show((success) => {\n      if (!success) {\n        this.hideMarkerManager();\n      }\n      this.showWidget();\n    });\n  }\n\n  workThroughQueue() {\n    const workQueue = [...this.queue];\n    this.queue = [];\n    for (let i = 0; i < workQueue.length; i++) {\n      this.sendMessage(workQueue[i], true);\n    }\n  }\n\n  startCommunication() {\n    // Listen for messages.\n    this.addMessageListener((data) => {\n      if (data.name === 'ping') {\n        this.comReady = true;\n        this.sendConfigUpdate();\n        this.sendSessionUpdate();\n        this.workThroughQueue();\n        setTimeout(() => {\n          this.runWidgetShouldOpenCallback();\n        }, 300);\n      }\n\n      if (data.name === 'play-ping') {\n        GleapAudioManager.ping();\n      }\n\n      if (data.name === 'open-image') {\n        this.showImage(data.data.url);\n      }\n\n      if (data.name === 'page-changed') {\n        if (data.data && (data.data.name === 'newsdetails' || data.data.name === 'appextended')) {\n          this.setAppMode('extended');\n        } else {\n          if (this.appMode === 'extended') {\n            this.setAppMode('widget');\n          }\n        }\n      }\n\n      if (data.name === 'collect-ticket-data') {\n        var ticketData = {\n          customData: GleapCustomDataManager.getInstance().getCustomData(),\n          metaData: GleapMetaDataManager.getInstance().getMetaData(),\n          consoleLog: GleapConsoleLogManager.getInstance().getLogs(),\n          networkLogs: GleapNetworkIntercepter.getInstance().getRequests(),\n          customEventLog: GleapStreamedEvent.getInstance().getEventArray(),\n          formData: GleapCustomDataManager.getInstance().getTicketAttributes(),\n        };\n\n        // Add tags\n        const tags = GleapTagManager.getInstance().getTags();\n        if (tags && tags.length > 0) {\n          ticketData.tags = tags;\n        }\n\n        this.sendMessage({\n          name: 'collect-ticket-data',\n          data: ticketData,\n        });\n      }\n\n      if (data.name === 'height-update') {\n        this.frameHeight = data.data;\n\n        const innerContainer = document.querySelector('.gleap-frame-container-inner');\n        if (\n          (this.appMode === 'survey' || this.appMode === 'survey_full' || this.appMode === 'survey_web') &&\n          innerContainer\n        ) {\n          innerContainer.style.maxHeight = `${this.frameHeight}px`;\n        }\n      }\n\n      if (data.name === 'notify-event') {\n        GleapEventManager.notifyEvent(data.data.type, data.data.data);\n      }\n\n      if (data.name === 'cleanup-drawings') {\n        this.hideMarkerManager();\n      }\n\n      if (data.name === 'open-url') {\n        const url = data.data;\n        const newTab = data.newTab ? true : false;\n        this.urlHandler(url, newTab);\n      }\n\n      if (data.name === 'start-product-tour') {\n        Gleap.startProductTour(data.data?.tourId, true);\n      }\n\n      if (data.name === 'run-custom-action') {\n        GleapCustomActionManager.triggerCustomAction(data.data, {\n          shareToken: data.shareToken,\n        });\n      }\n\n      if (data.name === 'close-widget') {\n        this.hideWidget();\n      }\n\n      if (data.name === 'video-call-joined') {\n        GleapFeedbackButtonManager.getInstance().showingRedDot = true;\n        GleapFeedbackButtonManager.getInstance().updateRedDot(true);\n      }\n\n      if (data.name === 'video-call-left') {\n        GleapFeedbackButtonManager.getInstance().showingRedDot = false;\n        GleapFeedbackButtonManager.getInstance().updateRedDot(false);\n      }\n\n      if (data.name === 'tool-execution') {\n        GleapEventManager.notifyEvent('tool-execution', data.data);\n      }\n\n      if (data.name === 'checklist-loaded') {\n        const checklistData = data.data;\n        GleapEventManager.notifyEvent('checklist-loaded', {\n          checklistId: checklistData.id,\n          outboundId: checklistData.outbound?.id,\n          completedSteps: checklistData.completedSteps,\n          status: checklistData.status,\n          data: checklistData,\n        });\n      }\n\n      if (data.name === 'checklist-step-completed') {\n        const { checklistData, step, index } = data.data;\n        GleapEventManager.notifyEvent('checklist-step-completed', {\n          checklistId: checklistData.id,\n          outboundId: checklistData.outbound?.id,\n          stepId: step.id,\n          stepIndex: index,\n          step: step,\n          completedSteps: checklistData.completedSteps,\n          status: checklistData.status,\n          data: checklistData,\n        });\n      }\n\n      if (data.name === 'checklist-completed') {\n        const checklistData = data.data;\n        GleapEventManager.notifyEvent('checklist-completed', {\n          checklistId: checklistData.id,\n          outboundId: checklistData.outbound?.id,\n          completedSteps: checklistData.completedSteps,\n          status: checklistData.status,\n          data: checklistData,\n        });\n      }\n\n      if (data.name === 'send-feedback') {\n        if (this.sendingFeedback) {\n          return;\n        }\n\n        this.sendingFeedback = true;\n\n        const formData = data.data.formData;\n        const action = data.data.action;\n        const outboundId = data.data.outboundId;\n        const spamToken = data.data.spamToken;\n\n        const feedback = new GleapFeedback(\n          action.feedbackType,\n          'MEDIUM',\n          formData,\n          false,\n          action.excludeData,\n          outboundId,\n          spamToken\n        );\n        feedback\n          .sendFeedback()\n          .then((feedbackData) => {\n            setTimeout(() => {\n              this.sendingFeedback = false;\n            }, 1000);\n\n            this.sendMessage({\n              name: 'feedback-sent',\n              data: feedbackData,\n            });\n            GleapEventManager.notifyEvent('feedback-sent', formData);\n\n            if (outboundId && outboundId.length > 0) {\n              GleapEventManager.notifyEvent('outbound-sent', {\n                outboundId: outboundId,\n                outbound: action,\n                formData: formData,\n              });\n\n              try {\n                delete formData.reportedBy;\n              } catch (e) {}\n              Gleap.trackEvent(`outbound-${outboundId}-submitted`, formData);\n            }\n          })\n          .catch((error) => {\n            setTimeout(() => {\n              this.sendingFeedback = false;\n\n              this.sendMessage({\n                name: 'feedback-sending-failed',\n                data: 'Something went wrong, please try again.',\n              });\n              GleapEventManager.notifyEvent('error-while-sending');\n            }, 1000);\n          });\n      }\n\n      if (data.name === 'start-screen-drawing') {\n        this.showDrawingScreen(data.data);\n      }\n    });\n\n    // Add window message listener.\n    window.addEventListener('message', (event) => {\n      if (event.origin !== this.frameUrl && event.origin !== GleapBannerManager.getInstance().bannerUrl) {\n        return;\n      }\n\n      try {\n        const data = JSON.parse(event.data);\n        for (var i = 0; i < this.listeners.length; i++) {\n          if (this.listeners[i]) {\n            this.listeners[i](data);\n          }\n        }\n      } catch (exp) {}\n    });\n  }\n\n  addMessageListener(callback) {\n    this.listeners.push(callback);\n  }\n}\n","import { isMobile } from './GleapHelper';\n\nexport default class GleapMetaDataManager {\n  sessionStart = new Date();\n  appBuildNumber = '';\n  appVersionCode = '';\n  environment = 'prod';\n\n  // GleapMetaDataManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapMetaDataManager();\n    }\n    return this.instance;\n  }\n\n  /**\n   * Sets the app version code.\n   * @param {string} appVersionCode\n   */\n  static setAppVersionCode(appVersionCode) {\n    this.getInstance().appVersionCode = appVersionCode;\n  }\n\n  /**\n   * Sets the app version code.\n   * @param {string} appVersionCode\n   */\n  static setAppBuildNumber(appBuildNumber) {\n    this.getInstance().appBuildNumber = appBuildNumber;\n  }\n\n  getSessionDuration() {\n    const now = new Date();\n    return Math.round((now.getTime() - this.sessionStart.getTime()) / 1000);\n  }\n\n  getMetaData() {\n    var nAgt = navigator.userAgent;\n    var browserName = navigator.appName;\n    var fullVersion = '' + parseFloat(navigator.appVersion);\n    var majorVersion = parseInt(navigator.appVersion, 10);\n    var nameOffset, verOffset, ix;\n\n    // In Opera, the true version is after \"Opera\" or after \"Version\"\n    if ((verOffset = nAgt.indexOf('Opera')) !== -1) {\n      browserName = 'Opera';\n      fullVersion = nAgt.substring(verOffset + 6);\n      if ((verOffset = nAgt.indexOf('Version')) !== -1) fullVersion = nAgt.substring(verOffset + 8);\n    }\n    // In MSIE, the true version is after \"MSIE\" in userAgent\n    else if ((verOffset = nAgt.indexOf('MSIE')) !== -1) {\n      browserName = 'Microsoft Internet Explorer';\n      fullVersion = nAgt.substring(verOffset + 5);\n    }\n    // In Chrome, the true version is after \"Chrome\"\n    else if ((verOffset = nAgt.indexOf('Chrome')) !== -1) {\n      browserName = 'Chrome';\n      fullVersion = nAgt.substring(verOffset + 7);\n    }\n    // In Safari, the true version is after \"Safari\" or after \"Version\"\n    else if ((verOffset = nAgt.indexOf('Safari')) !== -1) {\n      browserName = 'Safari';\n      fullVersion = nAgt.substring(verOffset + 7);\n      if ((verOffset = nAgt.indexOf('Version')) !== -1) fullVersion = nAgt.substring(verOffset + 8);\n    }\n    // In Firefox, the true version is after \"Firefox\"\n    else if ((verOffset = nAgt.indexOf('Firefox')) !== -1) {\n      browserName = 'Firefox';\n      fullVersion = nAgt.substring(verOffset + 8);\n    }\n    // In most other browsers, \"name/version\" is at the end of userAgent\n    else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) {\n      browserName = nAgt.substring(nameOffset, verOffset);\n      fullVersion = nAgt.substring(verOffset + 1);\n      if (browserName.toLowerCase() === browserName.toUpperCase()) {\n        browserName = navigator.appName;\n      }\n    }\n    // trim the fullVersion string at semicolon/space if present\n    if ((ix = fullVersion.indexOf(';')) !== -1) fullVersion = fullVersion.substring(0, ix);\n    if ((ix = fullVersion.indexOf(' ')) !== -1) fullVersion = fullVersion.substring(0, ix);\n\n    majorVersion = parseInt('' + fullVersion, 10);\n    if (isNaN(majorVersion)) {\n      fullVersion = '' + parseFloat(navigator.appVersion);\n      majorVersion = parseInt(navigator.appVersion, 10);\n    }\n\n    var OSName = 'Unknown OS';\n    if (navigator.appVersion.indexOf('Win') !== -1) OSName = 'Windows';\n    if (navigator.appVersion.indexOf('Mac') !== -1) OSName = 'MacOS';\n    if (navigator.appVersion.indexOf('X11') !== -1) OSName = 'UNIX';\n    if (navigator.appVersion.indexOf('Linux') !== -1) OSName = 'Linux';\n    if (navigator.appVersion.indexOf('iPad') !== -1) OSName = 'iPad';\n    if (navigator.appVersion.indexOf('iPhone') !== -1) OSName = 'iPhone';\n    if (navigator.appVersion.indexOf('Android') !== -1) OSName = 'Android';\n\n    return {\n      browserName: browserName + '(' + fullVersion + ')',\n      userAgent: nAgt,\n      browser: browserName,\n      systemName: OSName,\n      buildVersionNumber: this.appBuildNumber,\n      releaseVersionNumber: this.appVersionCode,\n      sessionDuration: this.getSessionDuration(),\n      devicePixelRatio: window.devicePixelRatio,\n      screenWidth: window.screen.width,\n      screenHeight: window.screen.height,\n      innerWidth: window.innerWidth,\n      innerHeight: window.innerHeight,\n      currentUrl: window.location.href,\n      language: navigator.language || navigator.userLanguage,\n      mobile: isMobile(),\n      sdkVersion: SDK_VERSION,\n      sdkType: 'javascript',\n      environment: this.environment,\n    };\n  }\n}\n","import { truncateString } from './GleapHelper';\n\nexport default class GleapConsoleLogManager {\n  logArray = [];\n  disabled = false;\n  originalConsoleLog;\n  logMaxLength = 500;\n\n  // GleapConsoleLogManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapConsoleLogManager();\n    }\n    return this.instance;\n  }\n\n  /**\n   * Return the console logs\n   * @returns {any[]} logs\n   */\n  getLogs() {\n    return this.logArray;\n  }\n\n  /**\n   * Revert console log overwrite.\n   */\n  stop() {\n    this.disabled = true;\n    if (this.originalConsoleLog) {\n      window.console = this.originalConsoleLog;\n    }\n  }\n\n  /**\n   * Add message with log level to logs.\n   * @param {*} message\n   * @param {*} logLevel\n   * @returns\n   */\n  addLog(message, logLevel = 'INFO') {\n    if (!message || message.length <= 0) {\n      return;\n    }\n\n    this.logArray.push({\n      log: truncateString(message, 1000),\n      date: new Date(),\n      priority: logLevel,\n    });\n\n    if (this.logArray.length > this.logMaxLength) {\n      this.logArray.shift();\n    }\n  }\n\n  /**\n   * Add entry to logs.\n   * @param {*} args\n   * @param {*} logLevel\n   * @returns\n   */\n  addLogWithArgs(args, logLevel) {\n    if (!args || args.length <= 0) {\n      return;\n    }\n\n    var log = '';\n    try {\n      for (var i = 0; i < args.length; i++) {\n        log += args[i] + ' ';\n      }\n    } catch (exp) {}\n\n    this.addLog(log, logLevel);\n  }\n\n  /**\n   * Start console log overwrite.\n   */\n  start() {\n    if (this.disabled) {\n      return;\n    }\n\n    const self = this;\n    window.console = (function (origConsole) {\n      if (!window.console || !origConsole) {\n        origConsole = {};\n      }\n\n      self.originalConsoleLog = origConsole;\n\n      return {\n        ...origConsole,\n        log: function () {\n          self.addLogWithArgs(arguments, 'INFO');\n          origConsole.log && origConsole.log.apply(origConsole, arguments);\n        },\n        warn: function () {\n          self.addLogWithArgs(arguments, 'WARNING');\n          origConsole.warn && origConsole.warn.apply(origConsole, arguments);\n        },\n        error: function () {\n          self.addLogWithArgs(arguments, 'ERROR');\n          origConsole.error && origConsole.error.apply(origConsole, arguments);\n        },\n        info: function (v) {\n          self.addLogWithArgs(arguments, 'INFO');\n          origConsole.info && origConsole.info.apply(origConsole, arguments);\n        },\n      };\n    })(window.console);\n  }\n}\n","import { GleapConsoleLogManager, GleapFrameManager, handleGleapLink } from './Gleap';\nimport { getDOMElementDescription } from './GleapHelper';\n\nexport default class GleapClickListener {\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapClickListener();\n    }\n    return this.instance;\n  }\n\n  start() {\n    document.addEventListener('click', (e) => {\n      if (!e.target) {\n        return;\n      }\n\n      if (e.target.tagName === 'A' && e.target.protocol === 'gleap:') {\n        e.preventDefault();\n\n        const href = e.target.href;\n        handleGleapLink(href);\n      }\n\n      if (!GleapFrameManager.getInstance().isOpened()) {\n        GleapConsoleLogManager.getInstance().addLog(getDOMElementDescription(e.target), 'CLICK');\n      }\n    });\n  }\n}\n","import { gleapDataParser } from './GleapHelper';\n\nexport default class GleapCustomDataManager {\n  customData = {};\n  ticketAttributes = {};\n\n  // GleapCustomDataManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapCustomDataManager();\n    }\n    return this.instance;\n  }\n\n  /**\n   * Returns the custom data object\n   * @returns {*}\n   */\n  getCustomData() {\n    return this.customData;\n  }\n\n  /**\n   * Set custom data that will be attached to the bug-report.\n   * @param {*} data\n   */\n  attachCustomData(data) {\n    this.customData = Object.assign(this.customData, gleapDataParser(data));\n  }\n\n  /**\n   * Add one key value pair to the custom data object\n   * @param {*} key The key of the custom data entry you want to add.\n   * @param {*} value The custom data you want to add.\n   */\n  setCustomData(key, value) {\n    this.customData[key] = value;\n  }\n\n  /**\n   * Remove one key value pair of the custom data object\n   * @param {*} key The key of the custom data entry you want to remove.\n   */\n  removeCustomData(key) {\n    delete this.customData[key];\n  }\n\n  /**\n   * Clear the custom data\n   */\n  clearCustomData() {\n    this.customData = {};\n  }\n\n  /**\n   * This method is used to set ticket attributes programmatically.\n   * @param {*} key The key of the attribute you want to add.\n   * @param {*} value The value to set.\n   */\n  setTicketAttribute(key, value) {\n    this.ticketAttributes[key] = value;\n  }\n\n  /**\n   * This method is used to unset ticket attributes programmatically.\n   * @param {*} key The key of the attribute you want to unset.\n   */\n  unsetTicketAttribute(key) {\n    delete this.ticketAttributes[key];\n  }\n\n  /**\n   * This method is used to clear ticket attributes programmatically.\n   */\n  clearTicketAttributes() {\n    this.ticketAttributes = {};\n  }\n\n  getTicketAttributes() {\n    return this.ticketAttributes;\n  }\n}\n","import Gleap from './Gleap';\n\nexport default class GleapEventManager {\n  eventListeners = {};\n\n  // GleapEventManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapEventManager();\n    }\n    return this.instance;\n  }\n\n  /**\n   * Notify all registrants for event.\n   */\n  static notifyEvent(event, data = {}) {\n    if (event === 'flow-started') {\n      const gleapInstance = Gleap.getInstance();\n      gleapInstance.setGlobalDataItem('webReplay', null);\n      gleapInstance.setGlobalDataItem('screenRecordingData', null);\n      gleapInstance.takeCurrentReplay();\n    }\n\n    const eventListeners = this.getInstance().eventListeners[event];\n    if (eventListeners) {\n      for (var i = 0; i < eventListeners.length; i++) {\n        const eventListener = eventListeners[i];\n        if (eventListener) {\n          eventListener(data);\n        }\n      }\n    }\n  }\n\n  /**\n   * Register events for Gleap.\n   * @param {*} eventName\n   * @param {*} callback\n   */\n  static on(eventName, callback) {\n    const instance = this.getInstance();\n    if (!instance.eventListeners[eventName]) {\n      instance.eventListeners[eventName] = [];\n    }\n    instance.eventListeners[eventName].push(callback);\n  }\n}\n","export default class GleapCustomActionManager {\n  customActionCallbacks = [];\n\n  // GleapCustomActionManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapCustomActionManager();\n    }\n    return this.instance;\n  }\n\n  /**\n   * Register custom action\n   */\n  static registerCustomAction(customAction) {\n    const instance = this.getInstance();\n    if (instance.customActionCallbacks) {\n      instance.customActionCallbacks.push(customAction);\n    }\n  }\n\n  /**\n   * Triggers a custom action\n   */\n  static triggerCustomAction(name, data) {\n    const instance = this.getInstance();\n    if (instance.customActionCallbacks) {\n      for (var i = 0; i < instance.customActionCallbacks.length; i++) {\n        var callback = instance.customActionCallbacks[i];\n        if (callback) {\n          callback({\n            name,\n            ...(data ? data : {}),\n          });\n        }\n      }\n    }\n  }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n  NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n  NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n  NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n  NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n  NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n  NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n  return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n  Node: [\n    \"childNodes\",\n    \"parentNode\",\n    \"parentElement\",\n    \"textContent\",\n    \"ownerDocument\"\n  ],\n  ShadowRoot: [\"host\", \"styleSheets\"],\n  Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n  MutationObserver: []\n};\nconst testableMethods$1 = {\n  Node: [\"contains\", \"getRootNode\"],\n  ShadowRoot: [\"getSelection\"],\n  Element: [],\n  MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n  return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n  if (untaintedBasePrototype$1[key])\n    return untaintedBasePrototype$1[key];\n  const defaultObj = globalThis[key];\n  const defaultPrototype = defaultObj.prototype;\n  const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n  const isUntaintedAccessors = Boolean(\n    accessorNames && // @ts-expect-error 2345\n    accessorNames.every(\n      (accessor) => {\n        var _a2, _b;\n        return Boolean(\n          (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n        );\n      }\n    )\n  );\n  const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n  const isUntaintedMethods = Boolean(\n    methodNames && methodNames.every(\n      // @ts-expect-error 2345\n      (method) => {\n        var _a2;\n        return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n      }\n    )\n  );\n  if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n    untaintedBasePrototype$1[key] = defaultObj.prototype;\n    return defaultObj.prototype;\n  }\n  try {\n    const iframeEl = document.createElement(\"iframe\");\n    document.body.appendChild(iframeEl);\n    const win = iframeEl.contentWindow;\n    if (!win) return defaultObj.prototype;\n    const untaintedObject = win[key].prototype;\n    document.body.removeChild(iframeEl);\n    if (!untaintedObject) return defaultPrototype;\n    return untaintedBasePrototype$1[key] = untaintedObject;\n  } catch {\n    return defaultPrototype;\n  }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n  var _a2;\n  const cacheKey = `${key}.${String(accessor)}`;\n  if (untaintedAccessorCache$1[cacheKey])\n    return untaintedAccessorCache$1[cacheKey].call(\n      instance\n    );\n  const untaintedPrototype = getUntaintedPrototype$1(key);\n  const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n    untaintedPrototype,\n    accessor\n  )) == null ? void 0 : _a2.get;\n  if (!untaintedAccessor) return instance[accessor];\n  untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n  return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n  const cacheKey = `${key}.${String(method)}`;\n  if (untaintedMethodCache$1[cacheKey])\n    return untaintedMethodCache$1[cacheKey].bind(\n      instance\n    );\n  const untaintedPrototype = getUntaintedPrototype$1(key);\n  const untaintedMethod = untaintedPrototype[method];\n  if (typeof untaintedMethod !== \"function\") return instance[method];\n  untaintedMethodCache$1[cacheKey] = untaintedMethod;\n  return untaintedMethod.bind(instance);\n}\nfunction ownerDocument$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"ownerDocument\");\n}\nfunction childNodes$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n  return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n  return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n  if (!n2 || !(\"host\" in n2)) return null;\n  return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n  return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n  if (!n2 || !(\"shadowRoot\" in n2)) return null;\n  return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n  return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n  return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n  return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nfunction patch$1(source, name, replacement) {\n  try {\n    if (!(name in source)) {\n      return () => {\n      };\n    }\n    const original = source[name];\n    const wrapped = replacement(original);\n    if (typeof wrapped === \"function\") {\n      wrapped.prototype = wrapped.prototype || {};\n      Object.defineProperties(wrapped, {\n        __rrweb_original__: {\n          enumerable: false,\n          value: original\n        }\n      });\n    }\n    source[name] = wrapped;\n    return () => {\n      source[name] = original;\n    };\n  } catch {\n    return () => {\n    };\n  }\n}\nconst index$1 = {\n  ownerDocument: ownerDocument$1,\n  childNodes: childNodes$1,\n  parentNode: parentNode$1,\n  parentElement: parentElement$1,\n  textContent: textContent$1,\n  contains: contains$1,\n  getRootNode: getRootNode$1,\n  host: host$1,\n  styleSheets: styleSheets$1,\n  shadowRoot: shadowRoot$1,\n  querySelector: querySelector$1,\n  querySelectorAll: querySelectorAll$1,\n  mutationObserver: mutationObserverCtor$1,\n  patch: patch$1\n};\nfunction isElement(n2) {\n  return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n  const hostEl = (\n    // anchor and textarea elements also have a `host` property\n    // but only shadow roots have a `mode` property\n    n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n  );\n  return Boolean(\n    hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n  );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n  return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n  if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n    cssText = cssText.replace(\n      /\\sbackground-clip:\\s*text;/g,\n      \" -webkit-background-clip: text; background-clip: text;\"\n    );\n  }\n  return cssText;\n}\nfunction escapeImportStatement(rule2) {\n  const { cssText } = rule2;\n  if (cssText.split('\"').length < 3) return cssText;\n  const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n  if (rule2.layerName === \"\") {\n    statement.push(`layer`);\n  } else if (rule2.layerName) {\n    statement.push(`layer(${rule2.layerName})`);\n  }\n  if (rule2.supportsText) {\n    statement.push(`supports(${rule2.supportsText})`);\n  }\n  if (rule2.media.length) {\n    statement.push(rule2.media.mediaText);\n  }\n  return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n  try {\n    const rules2 = s2.rules || s2.cssRules;\n    if (!rules2) {\n      return null;\n    }\n    let sheetHref = s2.href;\n    if (!sheetHref && s2.ownerNode) {\n      sheetHref = s2.ownerNode.baseURI;\n    }\n    const stringifiedRules = Array.from(\n      rules2,\n      (rule2) => stringifyRule(rule2, sheetHref)\n    ).join(\"\");\n    return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n  } catch (error) {\n    return null;\n  }\n}\nfunction stringifyRule(rule2, sheetHref) {\n  if (isCSSImportRule(rule2)) {\n    let importStringified;\n    try {\n      importStringified = // for same-origin stylesheets,\n      // we can access the imported stylesheet rules directly\n      stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n      escapeImportStatement(rule2);\n    } catch (error) {\n      importStringified = rule2.cssText;\n    }\n    if (rule2.styleSheet.href) {\n      return absolutifyURLs(importStringified, rule2.styleSheet.href);\n    }\n    return importStringified;\n  } else {\n    let ruleStringified = rule2.cssText;\n    if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n      ruleStringified = fixSafariColons(ruleStringified);\n    }\n    if (sheetHref) {\n      return absolutifyURLs(ruleStringified, sheetHref);\n    }\n    return ruleStringified;\n  }\n}\nfunction fixSafariColons(cssStringified) {\n  const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n  return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n  return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n  return \"selectorText\" in rule2;\n}\nclass Mirror {\n  constructor() {\n    __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(n2) {\n    var _a2;\n    if (!n2) return -1;\n    const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n    return id ?? -1;\n  }\n  getNode(id) {\n    return this.idNodeMap.get(id) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(n2) {\n    return this.nodeMetaMap.get(n2) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(n2) {\n    const id = this.getId(n2);\n    this.idNodeMap.delete(id);\n    if (n2.childNodes) {\n      n2.childNodes.forEach(\n        (childNode) => this.removeNodeFromMap(childNode)\n      );\n    }\n  }\n  has(id) {\n    return this.idNodeMap.has(id);\n  }\n  hasNode(node2) {\n    return this.nodeMetaMap.has(node2);\n  }\n  add(n2, meta) {\n    const id = meta.id;\n    this.idNodeMap.set(id, n2);\n    this.nodeMetaMap.set(n2, meta);\n  }\n  replace(id, n2) {\n    const oldNode = this.getNode(id);\n    if (oldNode) {\n      const meta = this.nodeMetaMap.get(oldNode);\n      if (meta) this.nodeMetaMap.set(n2, meta);\n    }\n    this.idNodeMap.set(id, n2);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map();\n    this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction createMirror$2() {\n  return new Mirror();\n}\nfunction maskInputValue({\n  element,\n  maskInputOptions,\n  tagName,\n  type,\n  value,\n  maskInputFn\n}) {\n  let text = value || \"\";\n  const actualType = type && toLowerCase(type);\n  if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n    if (maskInputFn) {\n      text = maskInputFn(text, element);\n    } else {\n      text = \"*\".repeat(text.length);\n    }\n  }\n  return text;\n}\nfunction toLowerCase(str) {\n  return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n  const ctx = canvas.getContext(\"2d\");\n  if (!ctx) return true;\n  const chunkSize = 50;\n  for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n    for (let y = 0; y < canvas.height; y += chunkSize) {\n      const getImageData = ctx.getImageData;\n      const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n      const pixelBuffer = new Uint32Array(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n        originalGetImageData.call(\n          ctx,\n          x2,\n          y,\n          Math.min(chunkSize, canvas.width - x2),\n          Math.min(chunkSize, canvas.height - y)\n        ).data.buffer\n      );\n      if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n    }\n  }\n  return true;\n}\nfunction getInputType(element) {\n  const type = element.type;\n  return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n    toLowerCase(type)\n  ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n  let url;\n  try {\n    url = new URL(path, baseURL ?? window.location.href);\n  } catch (err) {\n    return null;\n  }\n  const regex = /\\.([0-9a-z]+)(?:$)/i;\n  const match = url.pathname.match(regex);\n  return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n  let origin = \"\";\n  if (url.indexOf(\"//\") > -1) {\n    origin = url.split(\"/\").slice(0, 3).join(\"/\");\n  } else {\n    origin = url.split(\"/\")[0];\n  }\n  origin = origin.split(\"?\")[0];\n  return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n  return (cssText || \"\").replace(\n    URL_IN_CSS_REF,\n    (origin, quote1, path1, quote2, path2, path3) => {\n      const filePath = path1 || path2 || path3;\n      const maybeQuote = quote1 || quote2 || \"\";\n      if (!filePath) {\n        return origin;\n      }\n      if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n        return `url(${maybeQuote}${filePath}${maybeQuote})`;\n      }\n      if (DATA_URI.test(filePath)) {\n        return `url(${maybeQuote}${filePath}${maybeQuote})`;\n      }\n      if (filePath[0] === \"/\") {\n        return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n      }\n      const stack = href.split(\"/\");\n      const parts = filePath.split(\"/\");\n      stack.pop();\n      for (const part of parts) {\n        if (part === \".\") {\n          continue;\n        } else if (part === \"..\") {\n          stack.pop();\n        } else {\n          stack.push(part);\n        }\n      }\n      return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n    }\n  );\n}\nfunction normalizeCssString(cssText, _testNoPxNorm = false) {\n  if (_testNoPxNorm) {\n    return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n  } else {\n    return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\").replace(/0px/g, \"0\");\n  }\n}\nfunction splitCssText(cssText, style, _testNoPxNorm = false) {\n  const childNodes2 = Array.from(style.childNodes);\n  const splits = [];\n  let iterCount = 0;\n  if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n    let cssTextNorm = normalizeCssString(cssText, _testNoPxNorm);\n    const normFactor = cssTextNorm.length / cssText.length;\n    for (let i2 = 1; i2 < childNodes2.length; i2++) {\n      if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n        const textContentNorm = normalizeCssString(\n          childNodes2[i2].textContent,\n          _testNoPxNorm\n        );\n        const jLimit = 100;\n        let j = 3;\n        for (; j < textContentNorm.length; j++) {\n          if (\n            // keep consuming css identifiers (to get a decent chunk more quickly)\n            textContentNorm[j].match(/[a-zA-Z0-9]/) || // substring needs to be unique to this section\n            textContentNorm.indexOf(textContentNorm.substring(0, j), 1) !== -1\n          ) {\n            continue;\n          }\n          break;\n        }\n        for (; j < textContentNorm.length; j++) {\n          let startSubstring = textContentNorm.substring(0, j);\n          let cssNormSplits = cssTextNorm.split(startSubstring);\n          let splitNorm = -1;\n          if (cssNormSplits.length === 2) {\n            splitNorm = cssNormSplits[0].length;\n          } else if (cssNormSplits.length > 2 && cssNormSplits[0] === \"\" && childNodes2[i2 - 1].textContent !== \"\") {\n            splitNorm = cssTextNorm.indexOf(startSubstring, 1);\n          } else if (cssNormSplits.length === 1) {\n            startSubstring = startSubstring.substring(\n              0,\n              startSubstring.length - 1\n            );\n            cssNormSplits = cssTextNorm.split(startSubstring);\n            if (cssNormSplits.length <= 1) {\n              splits.push(cssText);\n              return splits;\n            }\n            j = jLimit + 1;\n          } else if (j === textContentNorm.length - 1) {\n            splitNorm = cssTextNorm.indexOf(startSubstring);\n          }\n          if (cssNormSplits.length >= 2 && j > jLimit) {\n            const prevTextContent = childNodes2[i2 - 1].textContent;\n            if (prevTextContent && typeof prevTextContent === \"string\") {\n              const prevMinLength = normalizeCssString(prevTextContent).length;\n              splitNorm = cssTextNorm.indexOf(startSubstring, prevMinLength);\n            }\n            if (splitNorm === -1) {\n              splitNorm = cssNormSplits[0].length;\n            }\n          }\n          if (splitNorm !== -1) {\n            let k = Math.floor(splitNorm / normFactor);\n            for (; k > 0 && k < cssText.length; ) {\n              iterCount += 1;\n              if (iterCount > 50 * childNodes2.length) {\n                splits.push(cssText);\n                return splits;\n              }\n              const normPart = normalizeCssString(\n                cssText.substring(0, k),\n                _testNoPxNorm\n              );\n              if (normPart.length === splitNorm) {\n                splits.push(cssText.substring(0, k));\n                cssText = cssText.substring(k);\n                cssTextNorm = cssTextNorm.substring(splitNorm);\n                break;\n              } else if (normPart.length < splitNorm) {\n                k += Math.max(\n                  1,\n                  Math.floor((splitNorm - normPart.length) / normFactor)\n                );\n              } else {\n                k -= Math.max(\n                  1,\n                  Math.floor((normPart.length - splitNorm) * normFactor)\n                );\n              }\n            }\n            break;\n          }\n        }\n      }\n    }\n  }\n  splits.push(cssText);\n  return splits;\n}\nfunction markCssSplits(cssText, style) {\n  return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n  return _id++;\n}\nfunction getValidTagName$1(element) {\n  if (element instanceof HTMLFormElement) {\n    return \"form\";\n  }\n  const processedTagName = toLowerCase(element.tagName);\n  if (tagNameRegex.test(processedTagName)) {\n    return \"div\";\n  }\n  return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n  if (attributeValue.trim() === \"\") {\n    return attributeValue;\n  }\n  let pos = 0;\n  function collectCharacters(regEx) {\n    let chars2;\n    const match = regEx.exec(attributeValue.substring(pos));\n    if (match) {\n      chars2 = match[0];\n      pos += chars2.length;\n      return chars2;\n    }\n    return \"\";\n  }\n  const output = [];\n  while (true) {\n    collectCharacters(SRCSET_COMMAS_OR_SPACES);\n    if (pos >= attributeValue.length) {\n      break;\n    }\n    let url = collectCharacters(SRCSET_NOT_SPACES);\n    if (url.slice(-1) === \",\") {\n      url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n      output.push(url);\n    } else {\n      let descriptorsStr = \"\";\n      url = absoluteToDoc(doc, url);\n      let inParens = false;\n      while (true) {\n        const c2 = attributeValue.charAt(pos);\n        if (c2 === \"\") {\n          output.push((url + descriptorsStr).trim());\n          break;\n        } else if (!inParens) {\n          if (c2 === \",\") {\n            pos += 1;\n            output.push((url + descriptorsStr).trim());\n            break;\n          } else if (c2 === \"(\") {\n            inParens = true;\n          }\n        } else {\n          if (c2 === \")\") {\n            inParens = false;\n          }\n        }\n        descriptorsStr += c2;\n        pos += 1;\n      }\n    }\n  }\n  return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n  if (!attributeValue || attributeValue.trim() === \"\") {\n    return attributeValue;\n  }\n  return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n  return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n  let a2 = cachedDocument.get(doc);\n  if (!a2) {\n    a2 = doc.createElement(\"a\");\n    cachedDocument.set(doc, a2);\n  }\n  if (!customHref) {\n    customHref = \"\";\n  } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n    return customHref;\n  }\n  a2.setAttribute(\"href\", customHref);\n  return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n  if (!value) {\n    return value;\n  }\n  if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"background\" && [\"table\", \"td\", \"th\"].includes(tagName)) {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"srcset\") {\n    return getAbsoluteSrcsetString(doc, value);\n  } else if (name === \"style\") {\n    return absolutifyURLs(value, getHref(doc));\n  } else if (tagName === \"object\" && name === \"data\") {\n    return absoluteToDoc(doc, value);\n  }\n  return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n  return [\"video\", \"audio\"].includes(tagName) && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n  try {\n    if (typeof blockClass === \"string\") {\n      if (element.classList.contains(blockClass)) {\n        return true;\n      }\n    } else {\n      for (let eIndex = element.classList.length; eIndex--; ) {\n        const className = element.classList[eIndex];\n        if (blockClass.test(className)) {\n          return true;\n        }\n      }\n    }\n    if (blockSelector) {\n      return element.matches(blockSelector);\n    }\n  } catch (e2) {\n  }\n  return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n  if (!node2) return false;\n  if (node2.nodeType !== node2.ELEMENT_NODE) {\n    if (!checkAncestors) return false;\n    return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n  }\n  for (let eIndex = node2.classList.length; eIndex--; ) {\n    const className = node2.classList[eIndex];\n    if (regex.test(className)) {\n      return true;\n    }\n  }\n  if (!checkAncestors) return false;\n  return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n  let el;\n  if (isElement(node2)) {\n    el = node2;\n    if (!index$1.childNodes(el).length) {\n      return false;\n    }\n  } else if (index$1.parentElement(node2) === null) {\n    return false;\n  } else {\n    el = index$1.parentElement(node2);\n  }\n  try {\n    if (typeof maskTextClass === \"string\") {\n      if (checkAncestors) {\n        if (el.closest(`.${maskTextClass}`)) return true;\n      } else {\n        if (el.classList.contains(maskTextClass)) return true;\n      }\n    } else {\n      if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n    }\n    if (maskTextSelector) {\n      if (checkAncestors) {\n        if (el.closest(maskTextSelector)) return true;\n      } else {\n        if (el.matches(maskTextSelector)) return true;\n      }\n    }\n  } catch (e2) {\n  }\n  return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n  const win = iframeEl.contentWindow;\n  if (!win) {\n    return;\n  }\n  let fired = false;\n  let readyState;\n  try {\n    readyState = win.document.readyState;\n  } catch (error) {\n    return;\n  }\n  if (readyState !== \"complete\") {\n    const timer = setTimeout(() => {\n      if (!fired) {\n        listener();\n        fired = true;\n      }\n    }, iframeLoadTimeout);\n    iframeEl.addEventListener(\"load\", () => {\n      clearTimeout(timer);\n      fired = true;\n      listener();\n    });\n    return;\n  }\n  const blankUrl = \"about:blank\";\n  if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n    setTimeout(listener, 0);\n    return iframeEl.addEventListener(\"load\", listener);\n  }\n  iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n  let fired = false;\n  let styleSheetLoaded;\n  try {\n    styleSheetLoaded = link.sheet;\n  } catch (error) {\n    return;\n  }\n  if (styleSheetLoaded) return;\n  const timer = setTimeout(() => {\n    if (!fired) {\n      listener();\n      fired = true;\n    }\n  }, styleSheetLoadTimeout);\n  link.addEventListener(\"load\", () => {\n    clearTimeout(timer);\n    fired = true;\n    listener();\n  });\n}\nfunction serializeNode(n2, options) {\n  const {\n    doc,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    needsMask,\n    inlineStylesheet,\n    maskInputOptions = {},\n    maskTextFn,\n    maskInputFn,\n    dataURLOptions = {},\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement = false,\n    cssCaptured = false\n  } = options;\n  const rootId = getRootId(doc, mirror2);\n  switch (n2.nodeType) {\n    case n2.DOCUMENT_NODE:\n      if (n2.compatMode !== \"CSS1Compat\") {\n        return {\n          type: NodeType$3.Document,\n          childNodes: [],\n          compatMode: n2.compatMode\n          // probably \"BackCompat\"\n        };\n      } else {\n        return {\n          type: NodeType$3.Document,\n          childNodes: []\n        };\n      }\n    case n2.DOCUMENT_TYPE_NODE:\n      return {\n        type: NodeType$3.DocumentType,\n        name: n2.name,\n        publicId: n2.publicId,\n        systemId: n2.systemId,\n        rootId\n      };\n    case n2.ELEMENT_NODE:\n      return serializeElementNode(n2, {\n        doc,\n        blockClass,\n        blockSelector,\n        inlineStylesheet,\n        maskInputOptions,\n        maskInputFn,\n        dataURLOptions,\n        inlineImages,\n        recordCanvas,\n        keepIframeSrcFn,\n        newlyAddedElement,\n        rootId\n      });\n    case n2.TEXT_NODE:\n      return serializeTextNode(n2, {\n        doc,\n        needsMask,\n        maskTextFn,\n        rootId,\n        cssCaptured\n      });\n    case n2.CDATA_SECTION_NODE:\n      return {\n        type: NodeType$3.CDATA,\n        textContent: \"\",\n        rootId\n      };\n    case n2.COMMENT_NODE:\n      return {\n        type: NodeType$3.Comment,\n        textContent: index$1.textContent(n2) || \"\",\n        rootId\n      };\n    default:\n      return false;\n  }\n}\nfunction getRootId(doc, mirror2) {\n  if (!mirror2.hasNode(doc)) return void 0;\n  const docId = mirror2.getId(doc);\n  return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n  const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n  const parent = index$1.parentNode(n2);\n  const parentTagName = parent && parent.tagName;\n  let textContent2 = \"\";\n  const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n  const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n  if (isScript) {\n    textContent2 = \"SCRIPT_PLACEHOLDER\";\n  } else if (!cssCaptured) {\n    textContent2 = index$1.textContent(n2);\n    if (isStyle && textContent2) {\n      textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n    }\n  }\n  if (!isStyle && !isScript && textContent2 && needsMask) {\n    textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n  }\n  return {\n    type: NodeType$3.Text,\n    textContent: textContent2 || \"\",\n    rootId\n  };\n}\nfunction serializeElementNode(n2, options) {\n  const {\n    doc,\n    blockClass,\n    blockSelector,\n    inlineStylesheet,\n    maskInputOptions = {},\n    maskInputFn,\n    dataURLOptions = {},\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement = false,\n    rootId\n  } = options;\n  const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n  const tagName = getValidTagName$1(n2);\n  let attributes = {};\n  const len = n2.attributes.length;\n  for (let i2 = 0; i2 < len; i2++) {\n    const attr = n2.attributes[i2];\n    if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n      attributes[attr.name] = transformAttribute(\n        doc,\n        tagName,\n        toLowerCase(attr.name),\n        attr.value\n      );\n    }\n  }\n  if (tagName === \"link\" && inlineStylesheet) {\n    const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n      return s2.href === n2.href;\n    });\n    let cssText = null;\n    if (stylesheet) {\n      cssText = stringifyStylesheet(stylesheet);\n    }\n    if (cssText) {\n      delete attributes.rel;\n      delete attributes.href;\n      attributes._cssText = cssText;\n    }\n  }\n  if (tagName === \"style\" && n2.sheet) {\n    let cssText = stringifyStylesheet(\n      n2.sheet\n    );\n    if (cssText) {\n      if (n2.childNodes.length > 1) {\n        cssText = markCssSplits(cssText, n2);\n      }\n      attributes._cssText = cssText;\n    }\n  }\n  if ([\"input\", \"textarea\", \"select\"].includes(tagName)) {\n    const value = n2.value;\n    const checked = n2.checked;\n    if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n      attributes.value = maskInputValue({\n        element: n2,\n        type: getInputType(n2),\n        tagName,\n        value,\n        maskInputOptions,\n        maskInputFn\n      });\n    } else if (checked) {\n      attributes.checked = checked;\n    }\n  }\n  if (tagName === \"option\") {\n    if (n2.selected && !maskInputOptions[\"select\"]) {\n      attributes.selected = true;\n    } else {\n      delete attributes.selected;\n    }\n  }\n  if (tagName === \"dialog\" && n2.open) {\n    attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n  }\n  if (tagName === \"canvas\" && recordCanvas) {\n    if (n2.__context === \"2d\") {\n      if (!is2DCanvasBlank(n2)) {\n        attributes.rr_dataURL = n2.toDataURL(\n          dataURLOptions.type,\n          dataURLOptions.quality\n        );\n      }\n    } else if (!(\"__context\" in n2)) {\n      const canvasDataURL = n2.toDataURL(\n        dataURLOptions.type,\n        dataURLOptions.quality\n      );\n      const blankCanvas = doc.createElement(\"canvas\");\n      blankCanvas.width = n2.width;\n      blankCanvas.height = n2.height;\n      const blankCanvasDataURL = blankCanvas.toDataURL(\n        dataURLOptions.type,\n        dataURLOptions.quality\n      );\n      if (canvasDataURL !== blankCanvasDataURL) {\n        attributes.rr_dataURL = canvasDataURL;\n      }\n    }\n  }\n  if (tagName === \"img\" && inlineImages) {\n    if (!canvasService) {\n      canvasService = doc.createElement(\"canvas\");\n      canvasCtx = canvasService.getContext(\"2d\");\n    }\n    const image = n2;\n    const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"<unknown-src>\";\n    const priorCrossOrigin = image.crossOrigin;\n    const recordInlineImage = () => {\n      image.removeEventListener(\"load\", recordInlineImage);\n      try {\n        canvasService.width = image.naturalWidth;\n        canvasService.height = image.naturalHeight;\n        canvasCtx.drawImage(image, 0, 0);\n        attributes.rr_dataURL = canvasService.toDataURL(\n          dataURLOptions.type,\n          dataURLOptions.quality\n        );\n      } catch (err) {\n        if (image.crossOrigin !== \"anonymous\") {\n          image.crossOrigin = \"anonymous\";\n          if (image.complete && image.naturalWidth !== 0)\n            recordInlineImage();\n          else image.addEventListener(\"load\", recordInlineImage);\n          return;\n        } else {\n          console.warn(\n            `Cannot inline img src=${imageSrc}! Error: ${err}`\n          );\n        }\n      }\n      if (image.crossOrigin === \"anonymous\") {\n        priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n      }\n    };\n    if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n    else image.addEventListener(\"load\", recordInlineImage);\n  }\n  if ([\"audio\", \"video\"].includes(tagName)) {\n    const mediaAttributes = attributes;\n    mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n    mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n    mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n    mediaAttributes.rr_mediaMuted = n2.muted;\n    mediaAttributes.rr_mediaLoop = n2.loop;\n    mediaAttributes.rr_mediaVolume = n2.volume;\n  }\n  if (!newlyAddedElement) {\n    if (n2.scrollLeft) {\n      attributes.rr_scrollLeft = n2.scrollLeft;\n    }\n    if (n2.scrollTop) {\n      attributes.rr_scrollTop = n2.scrollTop;\n    }\n  }\n  if (needBlock) {\n    const { width, height } = n2.getBoundingClientRect();\n    attributes = {\n      class: attributes.class,\n      rr_width: `${width}px`,\n      rr_height: `${height}px`\n    };\n  }\n  if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n    if (!n2.contentDocument) {\n      attributes.rr_src = attributes.src;\n    }\n    delete attributes.src;\n  }\n  let isCustomElement;\n  try {\n    if (customElements.get(tagName)) isCustomElement = true;\n  } catch (e2) {\n  }\n  return {\n    type: NodeType$3.Element,\n    tagName,\n    attributes,\n    childNodes: [],\n    isSVG: isSVGElement(n2) || void 0,\n    needBlock,\n    rootId,\n    isCustom: isCustomElement\n  };\n}\nfunction lowerIfExists(maybeAttr) {\n  if (maybeAttr === void 0 || maybeAttr === null) {\n    return \"\";\n  } else {\n    return maybeAttr.toLowerCase();\n  }\n}\nfunction slimDOMDefaults(_slimDOMOptions) {\n  if (_slimDOMOptions === true || _slimDOMOptions === \"all\") {\n    return {\n      script: true,\n      comment: true,\n      headFavicon: true,\n      headWhitespace: true,\n      headMetaSocial: true,\n      headMetaRobots: true,\n      headMetaHttpEquiv: true,\n      headMetaVerification: true,\n      // the following are off for slimDOMOptions === true,\n      // as they destroy some (hidden) info:\n      headMetaAuthorship: _slimDOMOptions === \"all\",\n      headMetaDescKeywords: _slimDOMOptions === \"all\",\n      headTitleMutations: _slimDOMOptions === \"all\"\n    };\n  } else if (_slimDOMOptions) {\n    return _slimDOMOptions;\n  }\n  return {};\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n  if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n    return true;\n  } else if (sn.type === NodeType$3.Element) {\n    if (slimDOMOptions.script && // script tag\n    (sn.tagName === \"script\" || // (module)preload link\n    sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" && sn.attributes.as === \"script\" || sn.attributes.rel === \"modulepreload\") || // prefetch link\n    sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n      return true;\n    } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n      /^msapplication-tile(image|color)$/\n    ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n      return true;\n    } else if (sn.tagName === \"meta\") {\n      if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n        return true;\n      } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n      lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n        return true;\n      } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n        return true;\n      } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n        return true;\n      } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n        return true;\n      } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\nfunction serializeNodeWithId(n2, options) {\n  const {\n    doc,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    maskTextClass,\n    maskTextSelector,\n    skipChild = false,\n    inlineStylesheet = true,\n    maskInputOptions = {},\n    maskTextFn,\n    maskInputFn,\n    slimDOMOptions,\n    dataURLOptions = {},\n    inlineImages = false,\n    recordCanvas = false,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout = 5e3,\n    onStylesheetLoad,\n    stylesheetLoadTimeout = 5e3,\n    keepIframeSrcFn = () => false,\n    newlyAddedElement = false,\n    cssCaptured = false\n  } = options;\n  let { needsMask } = options;\n  let { preserveWhiteSpace = true } = options;\n  if (!needsMask) {\n    const checkAncestors = needsMask === void 0;\n    needsMask = needMaskingText(\n      n2,\n      maskTextClass,\n      maskTextSelector,\n      checkAncestors\n    );\n  }\n  const _serializedNode = serializeNode(n2, {\n    doc,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    needsMask,\n    inlineStylesheet,\n    maskInputOptions,\n    maskTextFn,\n    maskInputFn,\n    dataURLOptions,\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement,\n    cssCaptured\n  });\n  if (!_serializedNode) {\n    console.warn(n2, \"not serialized\");\n    return null;\n  }\n  let id;\n  if (mirror2.hasNode(n2)) {\n    id = mirror2.getId(n2);\n  } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n    id = IGNORED_NODE;\n  } else {\n    id = genId();\n  }\n  const serializedNode = Object.assign(_serializedNode, { id });\n  mirror2.add(n2, serializedNode);\n  if (id === IGNORED_NODE) {\n    return null;\n  }\n  if (onSerialize) {\n    onSerialize(n2);\n  }\n  let recordChild = !skipChild;\n  if (serializedNode.type === NodeType$3.Element) {\n    recordChild = recordChild && !serializedNode.needBlock;\n    delete serializedNode.needBlock;\n    const shadowRootEl = index$1.shadowRoot(n2);\n    if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n      serializedNode.isShadowHost = true;\n  }\n  if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n    if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n      preserveWhiteSpace = false;\n    }\n    const bypassOptions = {\n      doc,\n      mirror: mirror2,\n      blockClass,\n      blockSelector,\n      needsMask,\n      maskTextClass,\n      maskTextSelector,\n      skipChild,\n      inlineStylesheet,\n      maskInputOptions,\n      maskTextFn,\n      maskInputFn,\n      slimDOMOptions,\n      dataURLOptions,\n      inlineImages,\n      recordCanvas,\n      preserveWhiteSpace,\n      onSerialize,\n      onIframeLoad,\n      iframeLoadTimeout,\n      onStylesheetLoad,\n      stylesheetLoadTimeout,\n      keepIframeSrcFn,\n      cssCaptured: false\n    };\n    if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n    else {\n      if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n        bypassOptions.cssCaptured = true;\n      }\n      for (const childN of Array.from(index$1.childNodes(n2))) {\n        const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n        if (serializedChildNode) {\n          serializedNode.childNodes.push(serializedChildNode);\n        }\n      }\n    }\n    let shadowRootEl = null;\n    if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n      for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n        const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n        if (serializedChildNode) {\n          isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n          serializedNode.childNodes.push(serializedChildNode);\n        }\n      }\n    }\n  }\n  const parent = index$1.parentNode(n2);\n  if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n    serializedNode.isShadow = true;\n  }\n  if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n    onceIframeLoaded(\n      n2,\n      () => {\n        const iframeDoc = n2.contentDocument;\n        if (iframeDoc && onIframeLoad) {\n          const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n            doc: iframeDoc,\n            mirror: mirror2,\n            blockClass,\n            blockSelector,\n            needsMask,\n            maskTextClass,\n            maskTextSelector,\n            skipChild: false,\n            inlineStylesheet,\n            maskInputOptions,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            onStylesheetLoad,\n            stylesheetLoadTimeout,\n            keepIframeSrcFn\n          });\n          if (serializedIframeNode) {\n            onIframeLoad(\n              n2,\n              serializedIframeNode\n            );\n          }\n        }\n      },\n      iframeLoadTimeout\n    );\n  }\n  if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n    onceStylesheetLoaded(\n      n2,\n      () => {\n        if (onStylesheetLoad) {\n          const serializedLinkNode = serializeNodeWithId(n2, {\n            doc,\n            mirror: mirror2,\n            blockClass,\n            blockSelector,\n            needsMask,\n            maskTextClass,\n            maskTextSelector,\n            skipChild: false,\n            inlineStylesheet,\n            maskInputOptions,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            onStylesheetLoad,\n            stylesheetLoadTimeout,\n            keepIframeSrcFn\n          });\n          if (serializedLinkNode) {\n            onStylesheetLoad(\n              n2,\n              serializedLinkNode\n            );\n          }\n        }\n      },\n      stylesheetLoadTimeout\n    );\n  }\n  return serializedNode;\n}\nfunction snapshot(n2, options) {\n  const {\n    mirror: mirror2 = new Mirror(),\n    blockClass = \"rr-block\",\n    blockSelector = null,\n    maskTextClass = \"rr-mask\",\n    maskTextSelector = null,\n    inlineStylesheet = true,\n    inlineImages = false,\n    recordCanvas = false,\n    maskAllInputs = false,\n    maskTextFn,\n    maskInputFn,\n    slimDOM = false,\n    dataURLOptions,\n    preserveWhiteSpace,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout,\n    onStylesheetLoad,\n    stylesheetLoadTimeout,\n    keepIframeSrcFn = () => false\n  } = options || {};\n  const maskInputOptions = maskAllInputs === true ? {\n    color: true,\n    date: true,\n    \"datetime-local\": true,\n    email: true,\n    month: true,\n    number: true,\n    range: true,\n    search: true,\n    tel: true,\n    text: true,\n    time: true,\n    url: true,\n    week: true,\n    textarea: true,\n    select: true,\n    password: true\n  } : maskAllInputs === false ? {\n    password: true\n  } : maskAllInputs;\n  const slimDOMOptions = slimDOMDefaults(slimDOM);\n  return serializeNodeWithId(n2, {\n    doc: n2,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    maskTextClass,\n    maskTextSelector,\n    skipChild: false,\n    inlineStylesheet,\n    maskInputOptions,\n    maskTextFn,\n    maskInputFn,\n    slimDOMOptions,\n    dataURLOptions,\n    inlineImages,\n    recordCanvas,\n    preserveWhiteSpace,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout,\n    onStylesheetLoad,\n    stylesheetLoadTimeout,\n    keepIframeSrcFn,\n    newlyAddedElement: false\n  });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n  if (n2.__esModule) return n2;\n  var f2 = n2.default;\n  if (typeof f2 == \"function\") {\n    var a2 = function a22() {\n      if (this instanceof a22) {\n        return Reflect.construct(f2, arguments, this.constructor);\n      }\n      return f2.apply(this, arguments);\n    };\n    a2.prototype = f2.prototype;\n  } else a2 = {};\n  Object.defineProperty(a2, \"__esModule\", { value: true });\n  Object.keys(n2).forEach(function(k) {\n    var d = Object.getOwnPropertyDescriptor(n2, k);\n    Object.defineProperty(a2, k, d.get ? d : {\n      enumerable: true,\n      get: function() {\n        return n2[k];\n      }\n    });\n  });\n  return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n  return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n  constructor(message, line, column, source, file, plugin22) {\n    super(message);\n    this.name = \"CssSyntaxError\";\n    this.reason = message;\n    if (file) {\n      this.file = file;\n    }\n    if (source) {\n      this.source = source;\n    }\n    if (plugin22) {\n      this.plugin = plugin22;\n    }\n    if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n      if (typeof line === \"number\") {\n        this.line = line;\n        this.column = column;\n      } else {\n        this.line = line.line;\n        this.column = line.column;\n        this.endLine = column.line;\n        this.endColumn = column.column;\n      }\n    }\n    this.setMessage();\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, CssSyntaxError);\n    }\n  }\n  setMessage() {\n    this.message = this.plugin ? this.plugin + \": \" : \"\";\n    this.message += this.file ? this.file : \"<css input>\";\n    if (typeof this.line !== \"undefined\") {\n      this.message += \":\" + this.line + \":\" + this.column;\n    }\n    this.message += \": \" + this.reason;\n  }\n  showSourceCode(color) {\n    if (!this.source) return \"\";\n    let css = this.source;\n    if (color == null) color = pico$1.isColorSupported;\n    if (terminalHighlight$1$1) {\n      if (color) css = terminalHighlight$1$1(css);\n    }\n    let lines = css.split(/\\r?\\n/);\n    let start = Math.max(this.line - 3, 0);\n    let end = Math.min(this.line + 2, lines.length);\n    let maxWidth = String(end).length;\n    let mark, aside;\n    if (color) {\n      let { bold, gray, red } = pico$1.createColors(true);\n      mark = (text) => bold(red(text));\n      aside = (text) => gray(text);\n    } else {\n      mark = aside = (str) => str;\n    }\n    return lines.slice(start, end).map((line, index2) => {\n      let number = start + 1 + index2;\n      let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n      if (number === this.line) {\n        let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n        return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n      }\n      return \" \" + aside(gutter) + line;\n    }).join(\"\\n\");\n  }\n  toString() {\n    let code = this.showSourceCode();\n    if (code) {\n      code = \"\\n\\n\" + code + \"\\n\";\n    }\n    return this.name + \": \" + this.message + code;\n  }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n  after: \"\\n\",\n  beforeClose: \"\\n\",\n  beforeComment: \"\\n\",\n  beforeDecl: \"\\n\",\n  beforeOpen: \" \",\n  beforeRule: \"\\n\",\n  colon: \": \",\n  commentLeft: \" \",\n  commentRight: \" \",\n  emptyBody: \"\",\n  indent: \"    \",\n  semicolon: false\n};\nfunction capitalize$1(str) {\n  return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n  constructor(builder) {\n    this.builder = builder;\n  }\n  atrule(node2, semicolon) {\n    let name = \"@\" + node2.name;\n    let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n    if (typeof node2.raws.afterName !== \"undefined\") {\n      name += node2.raws.afterName;\n    } else if (params) {\n      name += \" \";\n    }\n    if (node2.nodes) {\n      this.block(node2, name + params);\n    } else {\n      let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n      this.builder(name + params + end, node2);\n    }\n  }\n  beforeAfter(node2, detect) {\n    let value;\n    if (node2.type === \"decl\") {\n      value = this.raw(node2, null, \"beforeDecl\");\n    } else if (node2.type === \"comment\") {\n      value = this.raw(node2, null, \"beforeComment\");\n    } else if (detect === \"before\") {\n      value = this.raw(node2, null, \"beforeRule\");\n    } else {\n      value = this.raw(node2, null, \"beforeClose\");\n    }\n    let buf = node2.parent;\n    let depth = 0;\n    while (buf && buf.type !== \"root\") {\n      depth += 1;\n      buf = buf.parent;\n    }\n    if (value.includes(\"\\n\")) {\n      let indent = this.raw(node2, null, \"indent\");\n      if (indent.length) {\n        for (let step = 0; step < depth; step++) value += indent;\n      }\n    }\n    return value;\n  }\n  block(node2, start) {\n    let between = this.raw(node2, \"between\", \"beforeOpen\");\n    this.builder(start + between + \"{\", node2, \"start\");\n    let after;\n    if (node2.nodes && node2.nodes.length) {\n      this.body(node2);\n      after = this.raw(node2, \"after\");\n    } else {\n      after = this.raw(node2, \"after\", \"emptyBody\");\n    }\n    if (after) this.builder(after);\n    this.builder(\"}\", node2, \"end\");\n  }\n  body(node2) {\n    let last = node2.nodes.length - 1;\n    while (last > 0) {\n      if (node2.nodes[last].type !== \"comment\") break;\n      last -= 1;\n    }\n    let semicolon = this.raw(node2, \"semicolon\");\n    for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n      let child = node2.nodes[i2];\n      let before = this.raw(child, \"before\");\n      if (before) this.builder(before);\n      this.stringify(child, last !== i2 || semicolon);\n    }\n  }\n  comment(node2) {\n    let left = this.raw(node2, \"left\", \"commentLeft\");\n    let right = this.raw(node2, \"right\", \"commentRight\");\n    this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n  }\n  decl(node2, semicolon) {\n    let between = this.raw(node2, \"between\", \"colon\");\n    let string = node2.prop + between + this.rawValue(node2, \"value\");\n    if (node2.important) {\n      string += node2.raws.important || \" !important\";\n    }\n    if (semicolon) string += \";\";\n    this.builder(string, node2);\n  }\n  document(node2) {\n    this.body(node2);\n  }\n  raw(node2, own, detect) {\n    let value;\n    if (!detect) detect = own;\n    if (own) {\n      value = node2.raws[own];\n      if (typeof value !== \"undefined\") return value;\n    }\n    let parent = node2.parent;\n    if (detect === \"before\") {\n      if (!parent || parent.type === \"root\" && parent.first === node2) {\n        return \"\";\n      }\n      if (parent && parent.type === \"document\") {\n        return \"\";\n      }\n    }\n    if (!parent) return DEFAULT_RAW$1[detect];\n    let root2 = node2.root();\n    if (!root2.rawCache) root2.rawCache = {};\n    if (typeof root2.rawCache[detect] !== \"undefined\") {\n      return root2.rawCache[detect];\n    }\n    if (detect === \"before\" || detect === \"after\") {\n      return this.beforeAfter(node2, detect);\n    } else {\n      let method = \"raw\" + capitalize$1(detect);\n      if (this[method]) {\n        value = this[method](root2, node2);\n      } else {\n        root2.walk((i2) => {\n          value = i2.raws[own];\n          if (typeof value !== \"undefined\") return false;\n        });\n      }\n    }\n    if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n    root2.rawCache[detect] = value;\n    return value;\n  }\n  rawBeforeClose(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && i2.nodes.length > 0) {\n        if (typeof i2.raws.after !== \"undefined\") {\n          value = i2.raws.after;\n          if (value.includes(\"\\n\")) {\n            value = value.replace(/[^\\n]+$/, \"\");\n          }\n          return false;\n        }\n      }\n    });\n    if (value) value = value.replace(/\\S/g, \"\");\n    return value;\n  }\n  rawBeforeComment(root2, node2) {\n    let value;\n    root2.walkComments((i2) => {\n      if (typeof i2.raws.before !== \"undefined\") {\n        value = i2.raws.before;\n        if (value.includes(\"\\n\")) {\n          value = value.replace(/[^\\n]+$/, \"\");\n        }\n        return false;\n      }\n    });\n    if (typeof value === \"undefined\") {\n      value = this.raw(node2, null, \"beforeDecl\");\n    } else if (value) {\n      value = value.replace(/\\S/g, \"\");\n    }\n    return value;\n  }\n  rawBeforeDecl(root2, node2) {\n    let value;\n    root2.walkDecls((i2) => {\n      if (typeof i2.raws.before !== \"undefined\") {\n        value = i2.raws.before;\n        if (value.includes(\"\\n\")) {\n          value = value.replace(/[^\\n]+$/, \"\");\n        }\n        return false;\n      }\n    });\n    if (typeof value === \"undefined\") {\n      value = this.raw(node2, null, \"beforeRule\");\n    } else if (value) {\n      value = value.replace(/\\S/g, \"\");\n    }\n    return value;\n  }\n  rawBeforeOpen(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.type !== \"decl\") {\n        value = i2.raws.between;\n        if (typeof value !== \"undefined\") return false;\n      }\n    });\n    return value;\n  }\n  rawBeforeRule(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n        if (typeof i2.raws.before !== \"undefined\") {\n          value = i2.raws.before;\n          if (value.includes(\"\\n\")) {\n            value = value.replace(/[^\\n]+$/, \"\");\n          }\n          return false;\n        }\n      }\n    });\n    if (value) value = value.replace(/\\S/g, \"\");\n    return value;\n  }\n  rawColon(root2) {\n    let value;\n    root2.walkDecls((i2) => {\n      if (typeof i2.raws.between !== \"undefined\") {\n        value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n        return false;\n      }\n    });\n    return value;\n  }\n  rawEmptyBody(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && i2.nodes.length === 0) {\n        value = i2.raws.after;\n        if (typeof value !== \"undefined\") return false;\n      }\n    });\n    return value;\n  }\n  rawIndent(root2) {\n    if (root2.raws.indent) return root2.raws.indent;\n    let value;\n    root2.walk((i2) => {\n      let p = i2.parent;\n      if (p && p !== root2 && p.parent && p.parent === root2) {\n        if (typeof i2.raws.before !== \"undefined\") {\n          let parts = i2.raws.before.split(\"\\n\");\n          value = parts[parts.length - 1];\n          value = value.replace(/\\S/g, \"\");\n          return false;\n        }\n      }\n    });\n    return value;\n  }\n  rawSemicolon(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n        value = i2.raws.semicolon;\n        if (typeof value !== \"undefined\") return false;\n      }\n    });\n    return value;\n  }\n  rawValue(node2, prop) {\n    let value = node2[prop];\n    let raw = node2.raws[prop];\n    if (raw && raw.value === value) {\n      return raw.raw;\n    }\n    return value;\n  }\n  root(node2) {\n    this.body(node2);\n    if (node2.raws.after) this.builder(node2.raws.after);\n  }\n  rule(node2) {\n    this.block(node2, this.rawValue(node2, \"selector\"));\n    if (node2.raws.ownSemicolon) {\n      this.builder(node2.raws.ownSemicolon, node2, \"end\");\n    }\n  }\n  stringify(node2, semicolon) {\n    if (!this[node2.type]) {\n      throw new Error(\n        \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n      );\n    }\n    this[node2.type](node2, semicolon);\n  }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n  let str = new Stringifier$1$1(builder);\n  str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n  let cloned = new obj.constructor();\n  for (let i2 in obj) {\n    if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n      continue;\n    }\n    if (i2 === \"proxyCache\") continue;\n    let value = obj[i2];\n    let type = typeof value;\n    if (i2 === \"parent\" && type === \"object\") {\n      if (parent) cloned[i2] = parent;\n    } else if (i2 === \"source\") {\n      cloned[i2] = value;\n    } else if (Array.isArray(value)) {\n      cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n    } else {\n      if (type === \"object\" && value !== null) value = cloneNode$1(value);\n      cloned[i2] = value;\n    }\n  }\n  return cloned;\n}\nlet Node$4$1 = class Node2 {\n  constructor(defaults = {}) {\n    this.raws = {};\n    this[isClean$2$1] = false;\n    this[my$2$1] = true;\n    for (let name in defaults) {\n      if (name === \"nodes\") {\n        this.nodes = [];\n        for (let node2 of defaults[name]) {\n          if (typeof node2.clone === \"function\") {\n            this.append(node2.clone());\n          } else {\n            this.append(node2);\n          }\n        }\n      } else {\n        this[name] = defaults[name];\n      }\n    }\n  }\n  addToError(error) {\n    error.postcssNode = this;\n    if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n      let s2 = this.source;\n      error.stack = error.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n      );\n    }\n    return error;\n  }\n  after(add) {\n    this.parent.insertAfter(this, add);\n    return this;\n  }\n  assign(overrides = {}) {\n    for (let name in overrides) {\n      this[name] = overrides[name];\n    }\n    return this;\n  }\n  before(add) {\n    this.parent.insertBefore(this, add);\n    return this;\n  }\n  cleanRaws(keepBetween) {\n    delete this.raws.before;\n    delete this.raws.after;\n    if (!keepBetween) delete this.raws.between;\n  }\n  clone(overrides = {}) {\n    let cloned = cloneNode$1(this);\n    for (let name in overrides) {\n      cloned[name] = overrides[name];\n    }\n    return cloned;\n  }\n  cloneAfter(overrides = {}) {\n    let cloned = this.clone(overrides);\n    this.parent.insertAfter(this, cloned);\n    return cloned;\n  }\n  cloneBefore(overrides = {}) {\n    let cloned = this.clone(overrides);\n    this.parent.insertBefore(this, cloned);\n    return cloned;\n  }\n  error(message, opts = {}) {\n    if (this.source) {\n      let { end, start } = this.rangeBy(opts);\n      return this.source.input.error(\n        message,\n        { column: start.column, line: start.line },\n        { column: end.column, line: end.line },\n        opts\n      );\n    }\n    return new CssSyntaxError$2$1(message);\n  }\n  getProxyProcessor() {\n    return {\n      get(node2, prop) {\n        if (prop === \"proxyOf\") {\n          return node2;\n        } else if (prop === \"root\") {\n          return () => node2.root().toProxy();\n        } else {\n          return node2[prop];\n        }\n      },\n      set(node2, prop, value) {\n        if (node2[prop] === value) return true;\n        node2[prop] = value;\n        if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n        prop === \"text\") {\n          node2.markDirty();\n        }\n        return true;\n      }\n    };\n  }\n  markDirty() {\n    if (this[isClean$2$1]) {\n      this[isClean$2$1] = false;\n      let next = this;\n      while (next = next.parent) {\n        next[isClean$2$1] = false;\n      }\n    }\n  }\n  next() {\n    if (!this.parent) return void 0;\n    let index2 = this.parent.index(this);\n    return this.parent.nodes[index2 + 1];\n  }\n  positionBy(opts, stringRepresentation) {\n    let pos = this.source.start;\n    if (opts.index) {\n      pos = this.positionInside(opts.index, stringRepresentation);\n    } else if (opts.word) {\n      stringRepresentation = this.toString();\n      let index2 = stringRepresentation.indexOf(opts.word);\n      if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n    }\n    return pos;\n  }\n  positionInside(index2, stringRepresentation) {\n    let string = stringRepresentation || this.toString();\n    let column = this.source.start.column;\n    let line = this.source.start.line;\n    for (let i2 = 0; i2 < index2; i2++) {\n      if (string[i2] === \"\\n\") {\n        column = 1;\n        line += 1;\n      } else {\n        column += 1;\n      }\n    }\n    return { column, line };\n  }\n  prev() {\n    if (!this.parent) return void 0;\n    let index2 = this.parent.index(this);\n    return this.parent.nodes[index2 - 1];\n  }\n  rangeBy(opts) {\n    let start = {\n      column: this.source.start.column,\n      line: this.source.start.line\n    };\n    let end = this.source.end ? {\n      column: this.source.end.column + 1,\n      line: this.source.end.line\n    } : {\n      column: start.column + 1,\n      line: start.line\n    };\n    if (opts.word) {\n      let stringRepresentation = this.toString();\n      let index2 = stringRepresentation.indexOf(opts.word);\n      if (index2 !== -1) {\n        start = this.positionInside(index2, stringRepresentation);\n        end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n      }\n    } else {\n      if (opts.start) {\n        start = {\n          column: opts.start.column,\n          line: opts.start.line\n        };\n      } else if (opts.index) {\n        start = this.positionInside(opts.index);\n      }\n      if (opts.end) {\n        end = {\n          column: opts.end.column,\n          line: opts.end.line\n        };\n      } else if (typeof opts.endIndex === \"number\") {\n        end = this.positionInside(opts.endIndex);\n      } else if (opts.index) {\n        end = this.positionInside(opts.index + 1);\n      }\n    }\n    if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n      end = { column: start.column + 1, line: start.line };\n    }\n    return { end, start };\n  }\n  raw(prop, defaultType) {\n    let str = new Stringifier2$1();\n    return str.raw(this, prop, defaultType);\n  }\n  remove() {\n    if (this.parent) {\n      this.parent.removeChild(this);\n    }\n    this.parent = void 0;\n    return this;\n  }\n  replaceWith(...nodes) {\n    if (this.parent) {\n      let bookmark = this;\n      let foundSelf = false;\n      for (let node2 of nodes) {\n        if (node2 === this) {\n          foundSelf = true;\n        } else if (foundSelf) {\n          this.parent.insertAfter(bookmark, node2);\n          bookmark = node2;\n        } else {\n          this.parent.insertBefore(bookmark, node2);\n        }\n      }\n      if (!foundSelf) {\n        this.remove();\n      }\n    }\n    return this;\n  }\n  root() {\n    let result2 = this;\n    while (result2.parent && result2.parent.type !== \"document\") {\n      result2 = result2.parent;\n    }\n    return result2;\n  }\n  toJSON(_, inputs) {\n    let fixed = {};\n    let emitInputs = inputs == null;\n    inputs = inputs || /* @__PURE__ */ new Map();\n    let inputsNextIndex = 0;\n    for (let name in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, name)) {\n        continue;\n      }\n      if (name === \"parent\" || name === \"proxyCache\") continue;\n      let value = this[name];\n      if (Array.isArray(value)) {\n        fixed[name] = value.map((i2) => {\n          if (typeof i2 === \"object\" && i2.toJSON) {\n            return i2.toJSON(null, inputs);\n          } else {\n            return i2;\n          }\n        });\n      } else if (typeof value === \"object\" && value.toJSON) {\n        fixed[name] = value.toJSON(null, inputs);\n      } else if (name === \"source\") {\n        let inputId = inputs.get(value.input);\n        if (inputId == null) {\n          inputId = inputsNextIndex;\n          inputs.set(value.input, inputsNextIndex);\n          inputsNextIndex++;\n        }\n        fixed[name] = {\n          end: value.end,\n          inputId,\n          start: value.start\n        };\n      } else {\n        fixed[name] = value;\n      }\n    }\n    if (emitInputs) {\n      fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n    }\n    return fixed;\n  }\n  toProxy() {\n    if (!this.proxyCache) {\n      this.proxyCache = new Proxy(this, this.getProxyProcessor());\n    }\n    return this.proxyCache;\n  }\n  toString(stringifier2 = stringify$3$1) {\n    if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n    let result2 = \"\";\n    stringifier2(this, (i2) => {\n      result2 += i2;\n    });\n    return result2;\n  }\n  warn(result2, text, opts) {\n    let data = { node: this };\n    for (let i2 in opts) data[i2] = opts[i2];\n    return result2.warn(text, data);\n  }\n  get proxyOf() {\n    return this;\n  }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n  constructor(defaults) {\n    if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n      defaults = { ...defaults, value: String(defaults.value) };\n    }\n    super(defaults);\n    this.type = \"decl\";\n  }\n  get variable() {\n    return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n  }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n  return (size = defaultSize) => {\n    let id = \"\";\n    let i2 = size;\n    while (i2--) {\n      id += alphabet[Math.random() * alphabet.length | 0];\n    }\n    return id;\n  };\n};\nlet nanoid$1$1 = (size = 21) => {\n  let id = \"\";\n  let i2 = size;\n  while (i2--) {\n    id += urlAlphabet$1[Math.random() * 64 | 0];\n  }\n  return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n  if (Buffer) {\n    return Buffer.from(str, \"base64\").toString();\n  } else {\n    return window.atob(str);\n  }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n  constructor(css, opts) {\n    if (opts.map === false) return;\n    this.loadAnnotation(css);\n    this.inline = this.startWith(this.annotation, \"data:\");\n    let prev = opts.map ? opts.map.prev : void 0;\n    let text = this.loadMap(opts.from, prev);\n    if (!this.mapFile && opts.from) {\n      this.mapFile = opts.from;\n    }\n    if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n    if (text) this.text = text;\n  }\n  consumer() {\n    if (!this.consumerCache) {\n      this.consumerCache = new SourceMapConsumer$2$1(this.text);\n    }\n    return this.consumerCache;\n  }\n  decodeInline(text) {\n    let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n    let baseUri = /^data:application\\/json;base64,/;\n    let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n    let uri = /^data:application\\/json,/;\n    if (charsetUri.test(text) || uri.test(text)) {\n      return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n    }\n    if (baseCharsetUri.test(text) || baseUri.test(text)) {\n      return fromBase64$1(text.substr(RegExp.lastMatch.length));\n    }\n    let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n    throw new Error(\"Unsupported source map encoding \" + encoding);\n  }\n  getAnnotationURL(sourceMapString) {\n    return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n  }\n  isMap(map) {\n    if (typeof map !== \"object\") return false;\n    return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n  }\n  loadAnnotation(css) {\n    let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n    if (!comments) return;\n    let start = css.lastIndexOf(comments.pop());\n    let end = css.indexOf(\"*/\", start);\n    if (start > -1 && end > -1) {\n      this.annotation = this.getAnnotationURL(css.substring(start, end));\n    }\n  }\n  loadFile(path) {\n    this.root = dirname$1$1(path);\n    if (existsSync$1(path)) {\n      this.mapFile = path;\n      return readFileSync$1(path, \"utf-8\").toString().trim();\n    }\n  }\n  loadMap(file, prev) {\n    if (prev === false) return false;\n    if (prev) {\n      if (typeof prev === \"string\") {\n        return prev;\n      } else if (typeof prev === \"function\") {\n        let prevPath = prev(file);\n        if (prevPath) {\n          let map = this.loadFile(prevPath);\n          if (!map) {\n            throw new Error(\n              \"Unable to load previous source map: \" + prevPath.toString()\n            );\n          }\n          return map;\n        }\n      } else if (prev instanceof SourceMapConsumer$2$1) {\n        return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n      } else if (prev instanceof SourceMapGenerator$2$1) {\n        return prev.toString();\n      } else if (this.isMap(prev)) {\n        return JSON.stringify(prev);\n      } else {\n        throw new Error(\n          \"Unsupported previous source map format: \" + prev.toString()\n        );\n      }\n    } else if (this.inline) {\n      return this.decodeInline(this.annotation);\n    } else if (this.annotation) {\n      let map = this.annotation;\n      if (file) map = join$1(dirname$1$1(file), map);\n      return this.loadFile(map);\n    }\n  }\n  startWith(string, start) {\n    if (!string) return false;\n    return string.substr(0, start.length) === start;\n  }\n  withContent() {\n    return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n  }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n  constructor(css, opts = {}) {\n    if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n      throw new Error(`PostCSS received ${css} instead of CSS string`);\n    }\n    this.css = css.toString();\n    if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n      this.hasBOM = true;\n      this.css = this.css.slice(1);\n    } else {\n      this.hasBOM = false;\n    }\n    if (opts.from) {\n      if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n        this.file = opts.from;\n      } else {\n        this.file = resolve$1$1(opts.from);\n      }\n    }\n    if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n      let map = new PreviousMap$1$1(this.css, opts);\n      if (map.text) {\n        this.map = map;\n        let file = map.consumer().file;\n        if (!this.file && file) this.file = this.mapResolve(file);\n      }\n    }\n    if (!this.file) {\n      this.id = \"<input css \" + nanoid$2(6) + \">\";\n    }\n    if (this.map) this.map.file = this.from;\n  }\n  error(message, line, column, opts = {}) {\n    let result2, endLine, endColumn;\n    if (line && typeof line === \"object\") {\n      let start = line;\n      let end = column;\n      if (typeof start.offset === \"number\") {\n        let pos = this.fromOffset(start.offset);\n        line = pos.line;\n        column = pos.col;\n      } else {\n        line = start.line;\n        column = start.column;\n      }\n      if (typeof end.offset === \"number\") {\n        let pos = this.fromOffset(end.offset);\n        endLine = pos.line;\n        endColumn = pos.col;\n      } else {\n        endLine = end.line;\n        endColumn = end.column;\n      }\n    } else if (!column) {\n      let pos = this.fromOffset(line);\n      line = pos.line;\n      column = pos.col;\n    }\n    let origin = this.origin(line, column, endLine, endColumn);\n    if (origin) {\n      result2 = new CssSyntaxError$1$1(\n        message,\n        origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n        origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n        origin.source,\n        origin.file,\n        opts.plugin\n      );\n    } else {\n      result2 = new CssSyntaxError$1$1(\n        message,\n        endLine === void 0 ? line : { column, line },\n        endLine === void 0 ? column : { column: endColumn, line: endLine },\n        this.css,\n        this.file,\n        opts.plugin\n      );\n    }\n    result2.input = { column, endColumn, endLine, line, source: this.css };\n    if (this.file) {\n      if (pathToFileURL$1$1) {\n        result2.input.url = pathToFileURL$1$1(this.file).toString();\n      }\n      result2.input.file = this.file;\n    }\n    return result2;\n  }\n  fromOffset(offset) {\n    let lastLine, lineToIndex;\n    if (!this[fromOffsetCache$1]) {\n      let lines = this.css.split(\"\\n\");\n      lineToIndex = new Array(lines.length);\n      let prevIndex = 0;\n      for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n        lineToIndex[i2] = prevIndex;\n        prevIndex += lines[i2].length + 1;\n      }\n      this[fromOffsetCache$1] = lineToIndex;\n    } else {\n      lineToIndex = this[fromOffsetCache$1];\n    }\n    lastLine = lineToIndex[lineToIndex.length - 1];\n    let min = 0;\n    if (offset >= lastLine) {\n      min = lineToIndex.length - 1;\n    } else {\n      let max = lineToIndex.length - 2;\n      let mid;\n      while (min < max) {\n        mid = min + (max - min >> 1);\n        if (offset < lineToIndex[mid]) {\n          max = mid - 1;\n        } else if (offset >= lineToIndex[mid + 1]) {\n          min = mid + 1;\n        } else {\n          min = mid;\n          break;\n        }\n      }\n    }\n    return {\n      col: offset - lineToIndex[min] + 1,\n      line: min + 1\n    };\n  }\n  mapResolve(file) {\n    if (/^\\w+:\\/\\//.test(file)) {\n      return file;\n    }\n    return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n  }\n  origin(line, column, endLine, endColumn) {\n    if (!this.map) return false;\n    let consumer = this.map.consumer();\n    let from = consumer.originalPositionFor({ column, line });\n    if (!from.source) return false;\n    let to;\n    if (typeof endLine === \"number\") {\n      to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n    }\n    let fromUrl;\n    if (isAbsolute$1(from.source)) {\n      fromUrl = pathToFileURL$1$1(from.source);\n    } else {\n      fromUrl = new URL(\n        from.source,\n        this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n      );\n    }\n    let result2 = {\n      column: from.column,\n      endColumn: to && to.column,\n      endLine: to && to.line,\n      line: from.line,\n      url: fromUrl.toString()\n    };\n    if (fromUrl.protocol === \"file:\") {\n      if (fileURLToPath$1) {\n        result2.file = fileURLToPath$1(fromUrl);\n      } else {\n        throw new Error(`file: protocol is not available in this PostCSS build`);\n      }\n    }\n    let source = consumer.sourceContentFor(from.source);\n    if (source) result2.source = source;\n    return result2;\n  }\n  toJSON() {\n    let json = {};\n    for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n      if (this[name] != null) {\n        json[name] = this[name];\n      }\n    }\n    if (this.map) {\n      json.map = { ...this.map };\n      if (json.map.consumerCache) {\n        json.map.consumerCache = void 0;\n      }\n    }\n    return json;\n  }\n  get from() {\n    return this.file || this.id;\n  }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n  terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n  constructor(stringify2, root2, opts, cssString) {\n    this.stringify = stringify2;\n    this.mapOpts = opts.map || {};\n    this.root = root2;\n    this.opts = opts;\n    this.css = cssString;\n    this.originalCSS = cssString;\n    this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n    this.memoizedFileURLs = /* @__PURE__ */ new Map();\n    this.memoizedPaths = /* @__PURE__ */ new Map();\n    this.memoizedURLs = /* @__PURE__ */ new Map();\n  }\n  addAnnotation() {\n    let content;\n    if (this.isInline()) {\n      content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n    } else if (typeof this.mapOpts.annotation === \"string\") {\n      content = this.mapOpts.annotation;\n    } else if (typeof this.mapOpts.annotation === \"function\") {\n      content = this.mapOpts.annotation(this.opts.to, this.root);\n    } else {\n      content = this.outputFile() + \".map\";\n    }\n    let eol = \"\\n\";\n    if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n    this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n  }\n  applyPrevMaps() {\n    for (let prev of this.previous()) {\n      let from = this.toUrl(this.path(prev.file));\n      let root2 = prev.root || dirname$2(prev.file);\n      let map;\n      if (this.mapOpts.sourcesContent === false) {\n        map = new SourceMapConsumer$3(prev.text);\n        if (map.sourcesContent) {\n          map.sourcesContent = null;\n        }\n      } else {\n        map = prev.consumer();\n      }\n      this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n    }\n  }\n  clearAnnotation() {\n    if (this.mapOpts.annotation === false) return;\n    if (this.root) {\n      let node2;\n      for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n        node2 = this.root.nodes[i2];\n        if (node2.type !== \"comment\") continue;\n        if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n          this.root.removeChild(i2);\n        }\n      }\n    } else if (this.css) {\n      this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n    }\n  }\n  generate() {\n    this.clearAnnotation();\n    if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n      return this.generateMap();\n    } else {\n      let result2 = \"\";\n      this.stringify(this.root, (i2) => {\n        result2 += i2;\n      });\n      return [result2];\n    }\n  }\n  generateMap() {\n    if (this.root) {\n      this.generateString();\n    } else if (this.previous().length === 1) {\n      let prev = this.previous()[0].consumer();\n      prev.file = this.outputFile();\n      this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n        ignoreInvalidMapping: true\n      });\n    } else {\n      this.map = new SourceMapGenerator$3({\n        file: this.outputFile(),\n        ignoreInvalidMapping: true\n      });\n      this.map.addMapping({\n        generated: { column: 0, line: 1 },\n        original: { column: 0, line: 1 },\n        source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n      });\n    }\n    if (this.isSourcesContent()) this.setSourcesContent();\n    if (this.root && this.previous().length > 0) this.applyPrevMaps();\n    if (this.isAnnotation()) this.addAnnotation();\n    if (this.isInline()) {\n      return [this.css];\n    } else {\n      return [this.css, this.map];\n    }\n  }\n  generateString() {\n    this.css = \"\";\n    this.map = new SourceMapGenerator$3({\n      file: this.outputFile(),\n      ignoreInvalidMapping: true\n    });\n    let line = 1;\n    let column = 1;\n    let noSource = \"<no source>\";\n    let mapping = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: \"\"\n    };\n    let lines, last;\n    this.stringify(this.root, (str, node2, type) => {\n      this.css += str;\n      if (node2 && type !== \"end\") {\n        mapping.generated.line = line;\n        mapping.generated.column = column - 1;\n        if (node2.source && node2.source.start) {\n          mapping.source = this.sourcePath(node2);\n          mapping.original.line = node2.source.start.line;\n          mapping.original.column = node2.source.start.column - 1;\n          this.map.addMapping(mapping);\n        } else {\n          mapping.source = noSource;\n          mapping.original.line = 1;\n          mapping.original.column = 0;\n          this.map.addMapping(mapping);\n        }\n      }\n      lines = str.match(/\\n/g);\n      if (lines) {\n        line += lines.length;\n        last = str.lastIndexOf(\"\\n\");\n        column = str.length - last;\n      } else {\n        column += str.length;\n      }\n      if (node2 && type !== \"start\") {\n        let p = node2.parent || { raws: {} };\n        let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n        if (!childless || node2 !== p.last || p.raws.semicolon) {\n          if (node2.source && node2.source.end) {\n            mapping.source = this.sourcePath(node2);\n            mapping.original.line = node2.source.end.line;\n            mapping.original.column = node2.source.end.column - 1;\n            mapping.generated.line = line;\n            mapping.generated.column = column - 2;\n            this.map.addMapping(mapping);\n          } else {\n            mapping.source = noSource;\n            mapping.original.line = 1;\n            mapping.original.column = 0;\n            mapping.generated.line = line;\n            mapping.generated.column = column - 1;\n            this.map.addMapping(mapping);\n          }\n        }\n      }\n    });\n  }\n  isAnnotation() {\n    if (this.isInline()) {\n      return true;\n    }\n    if (typeof this.mapOpts.annotation !== \"undefined\") {\n      return this.mapOpts.annotation;\n    }\n    if (this.previous().length) {\n      return this.previous().some((i2) => i2.annotation);\n    }\n    return true;\n  }\n  isInline() {\n    if (typeof this.mapOpts.inline !== \"undefined\") {\n      return this.mapOpts.inline;\n    }\n    let annotation = this.mapOpts.annotation;\n    if (typeof annotation !== \"undefined\" && annotation !== true) {\n      return false;\n    }\n    if (this.previous().length) {\n      return this.previous().some((i2) => i2.inline);\n    }\n    return true;\n  }\n  isMap() {\n    if (typeof this.opts.map !== \"undefined\") {\n      return !!this.opts.map;\n    }\n    return this.previous().length > 0;\n  }\n  isSourcesContent() {\n    if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n      return this.mapOpts.sourcesContent;\n    }\n    if (this.previous().length) {\n      return this.previous().some((i2) => i2.withContent());\n    }\n    return true;\n  }\n  outputFile() {\n    if (this.opts.to) {\n      return this.path(this.opts.to);\n    } else if (this.opts.from) {\n      return this.path(this.opts.from);\n    } else {\n      return \"to.css\";\n    }\n  }\n  path(file) {\n    if (this.mapOpts.absolute) return file;\n    if (file.charCodeAt(0) === 60) return file;\n    if (/^\\w+:\\/\\//.test(file)) return file;\n    let cached = this.memoizedPaths.get(file);\n    if (cached) return cached;\n    let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n    if (typeof this.mapOpts.annotation === \"string\") {\n      from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n    }\n    let path = relative$1(from, file);\n    this.memoizedPaths.set(file, path);\n    return path;\n  }\n  previous() {\n    if (!this.previousMaps) {\n      this.previousMaps = [];\n      if (this.root) {\n        this.root.walk((node2) => {\n          if (node2.source && node2.source.input.map) {\n            let map = node2.source.input.map;\n            if (!this.previousMaps.includes(map)) {\n              this.previousMaps.push(map);\n            }\n          }\n        });\n      } else {\n        let input2 = new Input$3$1(this.originalCSS, this.opts);\n        if (input2.map) this.previousMaps.push(input2.map);\n      }\n    }\n    return this.previousMaps;\n  }\n  setSourcesContent() {\n    let already = {};\n    if (this.root) {\n      this.root.walk((node2) => {\n        if (node2.source) {\n          let from = node2.source.input.from;\n          if (from && !already[from]) {\n            already[from] = true;\n            let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n            this.map.setSourceContent(fromUrl, node2.source.input.css);\n          }\n        }\n      });\n    } else if (this.css) {\n      let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n      this.map.setSourceContent(from, this.css);\n    }\n  }\n  sourcePath(node2) {\n    if (this.mapOpts.from) {\n      return this.toUrl(this.mapOpts.from);\n    } else if (this.usesFileUrls) {\n      return this.toFileUrl(node2.source.input.from);\n    } else {\n      return this.toUrl(this.path(node2.source.input.from));\n    }\n  }\n  toBase64(str) {\n    if (Buffer) {\n      return Buffer.from(str).toString(\"base64\");\n    } else {\n      return window.btoa(unescape(encodeURIComponent(str)));\n    }\n  }\n  toFileUrl(path) {\n    let cached = this.memoizedFileURLs.get(path);\n    if (cached) return cached;\n    if (pathToFileURL$2) {\n      let fileURL = pathToFileURL$2(path).toString();\n      this.memoizedFileURLs.set(path, fileURL);\n      return fileURL;\n    } else {\n      throw new Error(\n        \"`map.absolute` option is not available in this PostCSS build\"\n      );\n    }\n  }\n  toUrl(path) {\n    let cached = this.memoizedURLs.get(path);\n    if (cached) return cached;\n    if (sep$1 === \"\\\\\") {\n      path = path.replace(/\\\\/g, \"/\");\n    }\n    let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n    this.memoizedURLs.set(path, url);\n    return url;\n  }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"comment\";\n  }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n  return nodes.map((i2) => {\n    if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n    delete i2.source;\n    return i2;\n  });\n}\nfunction markDirtyUp$1(node2) {\n  node2[isClean$1$1] = false;\n  if (node2.proxyOf.nodes) {\n    for (let i2 of node2.proxyOf.nodes) {\n      markDirtyUp$1(i2);\n    }\n  }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n  append(...children) {\n    for (let child of children) {\n      let nodes = this.normalize(child, this.last);\n      for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n    }\n    this.markDirty();\n    return this;\n  }\n  cleanRaws(keepBetween) {\n    super.cleanRaws(keepBetween);\n    if (this.nodes) {\n      for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n    }\n  }\n  each(callback) {\n    if (!this.proxyOf.nodes) return void 0;\n    let iterator = this.getIterator();\n    let index2, result2;\n    while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n      index2 = this.indexes[iterator];\n      result2 = callback(this.proxyOf.nodes[index2], index2);\n      if (result2 === false) break;\n      this.indexes[iterator] += 1;\n    }\n    delete this.indexes[iterator];\n    return result2;\n  }\n  every(condition) {\n    return this.nodes.every(condition);\n  }\n  getIterator() {\n    if (!this.lastEach) this.lastEach = 0;\n    if (!this.indexes) this.indexes = {};\n    this.lastEach += 1;\n    let iterator = this.lastEach;\n    this.indexes[iterator] = 0;\n    return iterator;\n  }\n  getProxyProcessor() {\n    return {\n      get(node2, prop) {\n        if (prop === \"proxyOf\") {\n          return node2;\n        } else if (!node2[prop]) {\n          return node2[prop];\n        } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n          return (...args) => {\n            return node2[prop](\n              ...args.map((i2) => {\n                if (typeof i2 === \"function\") {\n                  return (child, index2) => i2(child.toProxy(), index2);\n                } else {\n                  return i2;\n                }\n              })\n            );\n          };\n        } else if (prop === \"every\" || prop === \"some\") {\n          return (cb) => {\n            return node2[prop](\n              (child, ...other) => cb(child.toProxy(), ...other)\n            );\n          };\n        } else if (prop === \"root\") {\n          return () => node2.root().toProxy();\n        } else if (prop === \"nodes\") {\n          return node2.nodes.map((i2) => i2.toProxy());\n        } else if (prop === \"first\" || prop === \"last\") {\n          return node2[prop].toProxy();\n        } else {\n          return node2[prop];\n        }\n      },\n      set(node2, prop, value) {\n        if (node2[prop] === value) return true;\n        node2[prop] = value;\n        if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n          node2.markDirty();\n        }\n        return true;\n      }\n    };\n  }\n  index(child) {\n    if (typeof child === \"number\") return child;\n    if (child.proxyOf) child = child.proxyOf;\n    return this.proxyOf.nodes.indexOf(child);\n  }\n  insertAfter(exist, add) {\n    let existIndex = this.index(exist);\n    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n    existIndex = this.index(exist);\n    for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n    let index2;\n    for (let id in this.indexes) {\n      index2 = this.indexes[id];\n      if (existIndex < index2) {\n        this.indexes[id] = index2 + nodes.length;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  insertBefore(exist, add) {\n    let existIndex = this.index(exist);\n    let type = existIndex === 0 ? \"prepend\" : false;\n    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n    existIndex = this.index(exist);\n    for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n    let index2;\n    for (let id in this.indexes) {\n      index2 = this.indexes[id];\n      if (existIndex <= index2) {\n        this.indexes[id] = index2 + nodes.length;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  normalize(nodes, sample) {\n    if (typeof nodes === \"string\") {\n      nodes = cleanSource$1(parse$4$1(nodes).nodes);\n    } else if (typeof nodes === \"undefined\") {\n      nodes = [];\n    } else if (Array.isArray(nodes)) {\n      nodes = nodes.slice(0);\n      for (let i2 of nodes) {\n        if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n      }\n    } else if (nodes.type === \"root\" && this.type !== \"document\") {\n      nodes = nodes.nodes.slice(0);\n      for (let i2 of nodes) {\n        if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n      }\n    } else if (nodes.type) {\n      nodes = [nodes];\n    } else if (nodes.prop) {\n      if (typeof nodes.value === \"undefined\") {\n        throw new Error(\"Value field is missed in node creation\");\n      } else if (typeof nodes.value !== \"string\") {\n        nodes.value = String(nodes.value);\n      }\n      nodes = [new Declaration$3$1(nodes)];\n    } else if (nodes.selector) {\n      nodes = [new Rule$4$1(nodes)];\n    } else if (nodes.name) {\n      nodes = [new AtRule$4$1(nodes)];\n    } else if (nodes.text) {\n      nodes = [new Comment$3$1(nodes)];\n    } else {\n      throw new Error(\"Unknown node type in node creation\");\n    }\n    let processed = nodes.map((i2) => {\n      if (!i2[my$1$1]) Container.rebuild(i2);\n      i2 = i2.proxyOf;\n      if (i2.parent) i2.parent.removeChild(i2);\n      if (i2[isClean$1$1]) markDirtyUp$1(i2);\n      if (typeof i2.raws.before === \"undefined\") {\n        if (sample && typeof sample.raws.before !== \"undefined\") {\n          i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n        }\n      }\n      i2.parent = this.proxyOf;\n      return i2;\n    });\n    return processed;\n  }\n  prepend(...children) {\n    children = children.reverse();\n    for (let child of children) {\n      let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n      for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n      for (let id in this.indexes) {\n        this.indexes[id] = this.indexes[id] + nodes.length;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  push(child) {\n    child.parent = this;\n    this.proxyOf.nodes.push(child);\n    return this;\n  }\n  removeAll() {\n    for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n    this.proxyOf.nodes = [];\n    this.markDirty();\n    return this;\n  }\n  removeChild(child) {\n    child = this.index(child);\n    this.proxyOf.nodes[child].parent = void 0;\n    this.proxyOf.nodes.splice(child, 1);\n    let index2;\n    for (let id in this.indexes) {\n      index2 = this.indexes[id];\n      if (index2 >= child) {\n        this.indexes[id] = index2 - 1;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  replaceValues(pattern, opts, callback) {\n    if (!callback) {\n      callback = opts;\n      opts = {};\n    }\n    this.walkDecls((decl) => {\n      if (opts.props && !opts.props.includes(decl.prop)) return;\n      if (opts.fast && !decl.value.includes(opts.fast)) return;\n      decl.value = decl.value.replace(pattern, callback);\n    });\n    this.markDirty();\n    return this;\n  }\n  some(condition) {\n    return this.nodes.some(condition);\n  }\n  walk(callback) {\n    return this.each((child, i2) => {\n      let result2;\n      try {\n        result2 = callback(child, i2);\n      } catch (e2) {\n        throw child.addToError(e2);\n      }\n      if (result2 !== false && child.walk) {\n        result2 = child.walk(callback);\n      }\n      return result2;\n    });\n  }\n  walkAtRules(name, callback) {\n    if (!callback) {\n      callback = name;\n      return this.walk((child, i2) => {\n        if (child.type === \"atrule\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    if (name instanceof RegExp) {\n      return this.walk((child, i2) => {\n        if (child.type === \"atrule\" && name.test(child.name)) {\n          return callback(child, i2);\n        }\n      });\n    }\n    return this.walk((child, i2) => {\n      if (child.type === \"atrule\" && child.name === name) {\n        return callback(child, i2);\n      }\n    });\n  }\n  walkComments(callback) {\n    return this.walk((child, i2) => {\n      if (child.type === \"comment\") {\n        return callback(child, i2);\n      }\n    });\n  }\n  walkDecls(prop, callback) {\n    if (!callback) {\n      callback = prop;\n      return this.walk((child, i2) => {\n        if (child.type === \"decl\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    if (prop instanceof RegExp) {\n      return this.walk((child, i2) => {\n        if (child.type === \"decl\" && prop.test(child.prop)) {\n          return callback(child, i2);\n        }\n      });\n    }\n    return this.walk((child, i2) => {\n      if (child.type === \"decl\" && child.prop === prop) {\n        return callback(child, i2);\n      }\n    });\n  }\n  walkRules(selector, callback) {\n    if (!callback) {\n      callback = selector;\n      return this.walk((child, i2) => {\n        if (child.type === \"rule\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    if (selector instanceof RegExp) {\n      return this.walk((child, i2) => {\n        if (child.type === \"rule\" && selector.test(child.selector)) {\n          return callback(child, i2);\n        }\n      });\n    }\n    return this.walk((child, i2) => {\n      if (child.type === \"rule\" && child.selector === selector) {\n        return callback(child, i2);\n      }\n    });\n  }\n  get first() {\n    if (!this.proxyOf.nodes) return void 0;\n    return this.proxyOf.nodes[0];\n  }\n  get last() {\n    if (!this.proxyOf.nodes) return void 0;\n    return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n  }\n};\nContainer$7$1.registerParse = (dependant) => {\n  parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n  Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n  AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n  Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n  if (node2.type === \"atrule\") {\n    Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n  } else if (node2.type === \"rule\") {\n    Object.setPrototypeOf(node2, Rule$4$1.prototype);\n  } else if (node2.type === \"decl\") {\n    Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n  } else if (node2.type === \"comment\") {\n    Object.setPrototypeOf(node2, Comment$3$1.prototype);\n  } else if (node2.type === \"root\") {\n    Object.setPrototypeOf(node2, Root$6$1.prototype);\n  }\n  node2[my$1$1] = true;\n  if (node2.nodes) {\n    node2.nodes.forEach((child) => {\n      Container$7$1.rebuild(child);\n    });\n  }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n  constructor(defaults) {\n    super({ type: \"document\", ...defaults });\n    if (!this.nodes) {\n      this.nodes = [];\n    }\n  }\n  toResult(opts = {}) {\n    let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n    return lazy.stringify();\n  }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n  LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n  Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n  if (printed$1[message]) return;\n  printed$1[message] = true;\n  if (typeof console !== \"undefined\" && console.warn) {\n    console.warn(message);\n  }\n};\nlet Warning$2$1 = class Warning {\n  constructor(text, opts = {}) {\n    this.type = \"warning\";\n    this.text = text;\n    if (opts.node && opts.node.source) {\n      let range = opts.node.rangeBy(opts);\n      this.line = range.start.line;\n      this.column = range.start.column;\n      this.endLine = range.end.line;\n      this.endColumn = range.end.column;\n    }\n    for (let opt in opts) this[opt] = opts[opt];\n  }\n  toString() {\n    if (this.node) {\n      return this.node.error(this.text, {\n        index: this.index,\n        plugin: this.plugin,\n        word: this.word\n      }).message;\n    }\n    if (this.plugin) {\n      return this.plugin + \": \" + this.text;\n    }\n    return this.text;\n  }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n  constructor(processor2, root2, opts) {\n    this.processor = processor2;\n    this.messages = [];\n    this.root = root2;\n    this.opts = opts;\n    this.css = void 0;\n    this.map = void 0;\n  }\n  toString() {\n    return this.css;\n  }\n  warn(text, opts = {}) {\n    if (!opts.plugin) {\n      if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n        opts.plugin = this.lastPlugin.postcssPlugin;\n      }\n    }\n    let warning2 = new Warning$1$1(text, opts);\n    this.messages.push(warning2);\n    return warning2;\n  }\n  warnings() {\n    return this.messages.filter((i2) => i2.type === \"warning\");\n  }\n  get content() {\n    return this.css;\n  }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n  let css = input2.css.valueOf();\n  let ignore = options.ignoreErrors;\n  let code, next, quote, content, escape;\n  let escaped, escapePos, prev, n2, currentToken;\n  let length = css.length;\n  let pos = 0;\n  let buffer = [];\n  let returned = [];\n  function position() {\n    return pos;\n  }\n  function unclosed(what) {\n    throw input2.error(\"Unclosed \" + what, pos);\n  }\n  function endOfFile() {\n    return returned.length === 0 && pos >= length;\n  }\n  function nextToken(opts) {\n    if (returned.length) return returned.pop();\n    if (pos >= length) return;\n    let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n    code = css.charCodeAt(pos);\n    switch (code) {\n      case NEWLINE$1:\n      case SPACE$1:\n      case TAB$1:\n      case CR$1:\n      case FEED$1: {\n        next = pos;\n        do {\n          next += 1;\n          code = css.charCodeAt(next);\n        } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n        currentToken = [\"space\", css.slice(pos, next)];\n        pos = next - 1;\n        break;\n      }\n      case OPEN_SQUARE$1:\n      case CLOSE_SQUARE$1:\n      case OPEN_CURLY$1:\n      case CLOSE_CURLY$1:\n      case COLON$1:\n      case SEMICOLON$1:\n      case CLOSE_PARENTHESES$1: {\n        let controlChar = String.fromCharCode(code);\n        currentToken = [controlChar, controlChar, pos];\n        break;\n      }\n      case OPEN_PARENTHESES$1: {\n        prev = buffer.length ? buffer.pop()[1] : \"\";\n        n2 = css.charCodeAt(pos + 1);\n        if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n          next = pos;\n          do {\n            escaped = false;\n            next = css.indexOf(\")\", next + 1);\n            if (next === -1) {\n              if (ignore || ignoreUnclosed) {\n                next = pos;\n                break;\n              } else {\n                unclosed(\"bracket\");\n              }\n            }\n            escapePos = next;\n            while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n              escapePos -= 1;\n              escaped = !escaped;\n            }\n          } while (escaped);\n          currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n        } else {\n          next = css.indexOf(\")\", pos + 1);\n          content = css.slice(pos, next + 1);\n          if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n            currentToken = [\"(\", \"(\", pos];\n          } else {\n            currentToken = [\"brackets\", content, pos, next];\n            pos = next;\n          }\n        }\n        break;\n      }\n      case SINGLE_QUOTE$1:\n      case DOUBLE_QUOTE$1: {\n        quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n        next = pos;\n        do {\n          escaped = false;\n          next = css.indexOf(quote, next + 1);\n          if (next === -1) {\n            if (ignore || ignoreUnclosed) {\n              next = pos + 1;\n              break;\n            } else {\n              unclosed(\"string\");\n            }\n          }\n          escapePos = next;\n          while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n            escapePos -= 1;\n            escaped = !escaped;\n          }\n        } while (escaped);\n        currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n        pos = next;\n        break;\n      }\n      case AT$1: {\n        RE_AT_END$1.lastIndex = pos + 1;\n        RE_AT_END$1.test(css);\n        if (RE_AT_END$1.lastIndex === 0) {\n          next = css.length - 1;\n        } else {\n          next = RE_AT_END$1.lastIndex - 2;\n        }\n        currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n        pos = next;\n        break;\n      }\n      case BACKSLASH$1: {\n        next = pos;\n        escape = true;\n        while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n          next += 1;\n          escape = !escape;\n        }\n        code = css.charCodeAt(next + 1);\n        if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n          next += 1;\n          if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n            while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n              next += 1;\n            }\n            if (css.charCodeAt(next + 1) === SPACE$1) {\n              next += 1;\n            }\n          }\n        }\n        currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n        pos = next;\n        break;\n      }\n      default: {\n        if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n          next = css.indexOf(\"*/\", pos + 2) + 1;\n          if (next === 0) {\n            if (ignore || ignoreUnclosed) {\n              next = css.length;\n            } else {\n              unclosed(\"comment\");\n            }\n          }\n          currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n        } else {\n          RE_WORD_END$1.lastIndex = pos + 1;\n          RE_WORD_END$1.test(css);\n          if (RE_WORD_END$1.lastIndex === 0) {\n            next = css.length - 1;\n          } else {\n            next = RE_WORD_END$1.lastIndex - 2;\n          }\n          currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n          buffer.push(currentToken);\n          pos = next;\n        }\n        break;\n      }\n    }\n    pos++;\n    return currentToken;\n  }\n  function back(token) {\n    returned.push(token);\n  }\n  return {\n    back,\n    endOfFile,\n    nextToken,\n    position\n  };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"atrule\";\n  }\n  append(...children) {\n    if (!this.proxyOf.nodes) this.nodes = [];\n    return super.append(...children);\n  }\n  prepend(...children) {\n    if (!this.proxyOf.nodes) this.nodes = [];\n    return super.prepend(...children);\n  }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"root\";\n    if (!this.nodes) this.nodes = [];\n  }\n  normalize(child, sample, type) {\n    let nodes = super.normalize(child);\n    if (sample) {\n      if (type === \"prepend\") {\n        if (this.nodes.length > 1) {\n          sample.raws.before = this.nodes[1].raws.before;\n        } else {\n          delete sample.raws.before;\n        }\n      } else if (this.first !== sample) {\n        for (let node2 of nodes) {\n          node2.raws.before = sample.raws.before;\n        }\n      }\n    }\n    return nodes;\n  }\n  removeChild(child, ignore) {\n    let index2 = this.index(child);\n    if (!ignore && index2 === 0 && this.nodes.length > 1) {\n      this.nodes[1].raws.before = this.nodes[index2].raws.before;\n    }\n    return super.removeChild(child);\n  }\n  toResult(opts = {}) {\n    let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n    return lazy.stringify();\n  }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n  LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n  Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n  comma(string) {\n    return list$2$1.split(string, [\",\"], true);\n  },\n  space(string) {\n    let spaces = [\" \", \"\\n\", \"\t\"];\n    return list$2$1.split(string, spaces);\n  },\n  split(string, separators, last) {\n    let array = [];\n    let current = \"\";\n    let split = false;\n    let func = 0;\n    let inQuote = false;\n    let prevQuote = \"\";\n    let escape = false;\n    for (let letter of string) {\n      if (escape) {\n        escape = false;\n      } else if (letter === \"\\\\\") {\n        escape = true;\n      } else if (inQuote) {\n        if (letter === prevQuote) {\n          inQuote = false;\n        }\n      } else if (letter === '\"' || letter === \"'\") {\n        inQuote = true;\n        prevQuote = letter;\n      } else if (letter === \"(\") {\n        func += 1;\n      } else if (letter === \")\") {\n        if (func > 0) func -= 1;\n      } else if (func === 0) {\n        if (separators.includes(letter)) split = true;\n      }\n      if (split) {\n        if (current !== \"\") array.push(current.trim());\n        current = \"\";\n        split = false;\n      } else {\n        current += letter;\n      }\n    }\n    if (last || current !== \"\") array.push(current.trim());\n    return array;\n  }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"rule\";\n    if (!this.nodes) this.nodes = [];\n  }\n  get selectors() {\n    return list$1$1.comma(this.selector);\n  }\n  set selectors(values) {\n    let match = this.selector ? this.selector.match(/,\\s*/) : null;\n    let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n    this.selector = values.join(sep2);\n  }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n  empty: true,\n  space: true\n};\nfunction findLastWithPosition$1(tokens) {\n  for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n    let token = tokens[i2];\n    let pos = token[3] || token[2];\n    if (pos) return pos;\n  }\n}\nlet Parser$1$1 = class Parser {\n  constructor(input2) {\n    this.input = input2;\n    this.root = new Root$4$1();\n    this.current = this.root;\n    this.spaces = \"\";\n    this.semicolon = false;\n    this.createTokenizer();\n    this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n  }\n  atrule(token) {\n    let node2 = new AtRule$2$1();\n    node2.name = token[1].slice(1);\n    if (node2.name === \"\") {\n      this.unnamedAtrule(node2, token);\n    }\n    this.init(node2, token[2]);\n    let type;\n    let prev;\n    let shift;\n    let last = false;\n    let open = false;\n    let params = [];\n    let brackets = [];\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken();\n      type = token[0];\n      if (type === \"(\" || type === \"[\") {\n        brackets.push(type === \"(\" ? \")\" : \"]\");\n      } else if (type === \"{\" && brackets.length > 0) {\n        brackets.push(\"}\");\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop();\n      }\n      if (brackets.length === 0) {\n        if (type === \";\") {\n          node2.source.end = this.getPosition(token[2]);\n          node2.source.end.offset++;\n          this.semicolon = true;\n          break;\n        } else if (type === \"{\") {\n          open = true;\n          break;\n        } else if (type === \"}\") {\n          if (params.length > 0) {\n            shift = params.length - 1;\n            prev = params[shift];\n            while (prev && prev[0] === \"space\") {\n              prev = params[--shift];\n            }\n            if (prev) {\n              node2.source.end = this.getPosition(prev[3] || prev[2]);\n              node2.source.end.offset++;\n            }\n          }\n          this.end(token);\n          break;\n        } else {\n          params.push(token);\n        }\n      } else {\n        params.push(token);\n      }\n      if (this.tokenizer.endOfFile()) {\n        last = true;\n        break;\n      }\n    }\n    node2.raws.between = this.spacesAndCommentsFromEnd(params);\n    if (params.length) {\n      node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n      this.raw(node2, \"params\", params);\n      if (last) {\n        token = params[params.length - 1];\n        node2.source.end = this.getPosition(token[3] || token[2]);\n        node2.source.end.offset++;\n        this.spaces = node2.raws.between;\n        node2.raws.between = \"\";\n      }\n    } else {\n      node2.raws.afterName = \"\";\n      node2.params = \"\";\n    }\n    if (open) {\n      node2.nodes = [];\n      this.current = node2;\n    }\n  }\n  checkMissedSemicolon(tokens) {\n    let colon = this.colon(tokens);\n    if (colon === false) return;\n    let founded = 0;\n    let token;\n    for (let j = colon - 1; j >= 0; j--) {\n      token = tokens[j];\n      if (token[0] !== \"space\") {\n        founded += 1;\n        if (founded === 2) break;\n      }\n    }\n    throw this.input.error(\n      \"Missed semicolon\",\n      token[0] === \"word\" ? token[3] + 1 : token[2]\n    );\n  }\n  colon(tokens) {\n    let brackets = 0;\n    let token, type, prev;\n    for (let [i2, element] of tokens.entries()) {\n      token = element;\n      type = token[0];\n      if (type === \"(\") {\n        brackets += 1;\n      }\n      if (type === \")\") {\n        brackets -= 1;\n      }\n      if (brackets === 0 && type === \":\") {\n        if (!prev) {\n          this.doubleColon(token);\n        } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n          continue;\n        } else {\n          return i2;\n        }\n      }\n      prev = token;\n    }\n    return false;\n  }\n  comment(token) {\n    let node2 = new Comment$2$1();\n    this.init(node2, token[2]);\n    node2.source.end = this.getPosition(token[3] || token[2]);\n    node2.source.end.offset++;\n    let text = token[1].slice(2, -2);\n    if (/^\\s*$/.test(text)) {\n      node2.text = \"\";\n      node2.raws.left = text;\n      node2.raws.right = \"\";\n    } else {\n      let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n      node2.text = match[2];\n      node2.raws.left = match[1];\n      node2.raws.right = match[3];\n    }\n  }\n  createTokenizer() {\n    this.tokenizer = tokenizer2$1(this.input);\n  }\n  decl(tokens, customProperty) {\n    let node2 = new Declaration$2$1();\n    this.init(node2, tokens[0][2]);\n    let last = tokens[tokens.length - 1];\n    if (last[0] === \";\") {\n      this.semicolon = true;\n      tokens.pop();\n    }\n    node2.source.end = this.getPosition(\n      last[3] || last[2] || findLastWithPosition$1(tokens)\n    );\n    node2.source.end.offset++;\n    while (tokens[0][0] !== \"word\") {\n      if (tokens.length === 1) this.unknownWord(tokens);\n      node2.raws.before += tokens.shift()[1];\n    }\n    node2.source.start = this.getPosition(tokens[0][2]);\n    node2.prop = \"\";\n    while (tokens.length) {\n      let type = tokens[0][0];\n      if (type === \":\" || type === \"space\" || type === \"comment\") {\n        break;\n      }\n      node2.prop += tokens.shift()[1];\n    }\n    node2.raws.between = \"\";\n    let token;\n    while (tokens.length) {\n      token = tokens.shift();\n      if (token[0] === \":\") {\n        node2.raws.between += token[1];\n        break;\n      } else {\n        if (token[0] === \"word\" && /\\w/.test(token[1])) {\n          this.unknownWord([token]);\n        }\n        node2.raws.between += token[1];\n      }\n    }\n    if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n      node2.raws.before += node2.prop[0];\n      node2.prop = node2.prop.slice(1);\n    }\n    let firstSpaces = [];\n    let next;\n    while (tokens.length) {\n      next = tokens[0][0];\n      if (next !== \"space\" && next !== \"comment\") break;\n      firstSpaces.push(tokens.shift());\n    }\n    this.precheckMissedSemicolon(tokens);\n    for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n      token = tokens[i2];\n      if (token[1].toLowerCase() === \"!important\") {\n        node2.important = true;\n        let string = this.stringFrom(tokens, i2);\n        string = this.spacesFromEnd(tokens) + string;\n        if (string !== \" !important\") node2.raws.important = string;\n        break;\n      } else if (token[1].toLowerCase() === \"important\") {\n        let cache = tokens.slice(0);\n        let str = \"\";\n        for (let j = i2; j > 0; j--) {\n          let type = cache[j][0];\n          if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n            break;\n          }\n          str = cache.pop()[1] + str;\n        }\n        if (str.trim().indexOf(\"!\") === 0) {\n          node2.important = true;\n          node2.raws.important = str;\n          tokens = cache;\n        }\n      }\n      if (token[0] !== \"space\" && token[0] !== \"comment\") {\n        break;\n      }\n    }\n    let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n    if (hasWord) {\n      node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n      firstSpaces = [];\n    }\n    this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n    if (node2.value.includes(\":\") && !customProperty) {\n      this.checkMissedSemicolon(tokens);\n    }\n  }\n  doubleColon(token) {\n    throw this.input.error(\n      \"Double colon\",\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    );\n  }\n  emptyRule(token) {\n    let node2 = new Rule$2$1();\n    this.init(node2, token[2]);\n    node2.selector = \"\";\n    node2.raws.between = \"\";\n    this.current = node2;\n  }\n  end(token) {\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon;\n    }\n    this.semicolon = false;\n    this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n    this.spaces = \"\";\n    if (this.current.parent) {\n      this.current.source.end = this.getPosition(token[2]);\n      this.current.source.end.offset++;\n      this.current = this.current.parent;\n    } else {\n      this.unexpectedClose(token);\n    }\n  }\n  endFile() {\n    if (this.current.parent) this.unclosedBlock();\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon;\n    }\n    this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n    this.root.source.end = this.getPosition(this.tokenizer.position());\n  }\n  freeSemicolon(token) {\n    this.spaces += token[1];\n    if (this.current.nodes) {\n      let prev = this.current.nodes[this.current.nodes.length - 1];\n      if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n        prev.raws.ownSemicolon = this.spaces;\n        this.spaces = \"\";\n      }\n    }\n  }\n  // Helpers\n  getPosition(offset) {\n    let pos = this.input.fromOffset(offset);\n    return {\n      column: pos.col,\n      line: pos.line,\n      offset\n    };\n  }\n  init(node2, offset) {\n    this.current.push(node2);\n    node2.source = {\n      input: this.input,\n      start: this.getPosition(offset)\n    };\n    node2.raws.before = this.spaces;\n    this.spaces = \"\";\n    if (node2.type !== \"comment\") this.semicolon = false;\n  }\n  other(start) {\n    let end = false;\n    let type = null;\n    let colon = false;\n    let bracket = null;\n    let brackets = [];\n    let customProperty = start[1].startsWith(\"--\");\n    let tokens = [];\n    let token = start;\n    while (token) {\n      type = token[0];\n      tokens.push(token);\n      if (type === \"(\" || type === \"[\") {\n        if (!bracket) bracket = token;\n        brackets.push(type === \"(\" ? \")\" : \"]\");\n      } else if (customProperty && colon && type === \"{\") {\n        if (!bracket) bracket = token;\n        brackets.push(\"}\");\n      } else if (brackets.length === 0) {\n        if (type === \";\") {\n          if (colon) {\n            this.decl(tokens, customProperty);\n            return;\n          } else {\n            break;\n          }\n        } else if (type === \"{\") {\n          this.rule(tokens);\n          return;\n        } else if (type === \"}\") {\n          this.tokenizer.back(tokens.pop());\n          end = true;\n          break;\n        } else if (type === \":\") {\n          colon = true;\n        }\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop();\n        if (brackets.length === 0) bracket = null;\n      }\n      token = this.tokenizer.nextToken();\n    }\n    if (this.tokenizer.endOfFile()) end = true;\n    if (brackets.length > 0) this.unclosedBracket(bracket);\n    if (end && colon) {\n      if (!customProperty) {\n        while (tokens.length) {\n          token = tokens[tokens.length - 1][0];\n          if (token !== \"space\" && token !== \"comment\") break;\n          this.tokenizer.back(tokens.pop());\n        }\n      }\n      this.decl(tokens, customProperty);\n    } else {\n      this.unknownWord(tokens);\n    }\n  }\n  parse() {\n    let token;\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken();\n      switch (token[0]) {\n        case \"space\":\n          this.spaces += token[1];\n          break;\n        case \";\":\n          this.freeSemicolon(token);\n          break;\n        case \"}\":\n          this.end(token);\n          break;\n        case \"comment\":\n          this.comment(token);\n          break;\n        case \"at-word\":\n          this.atrule(token);\n          break;\n        case \"{\":\n          this.emptyRule(token);\n          break;\n        default:\n          this.other(token);\n          break;\n      }\n    }\n    this.endFile();\n  }\n  precheckMissedSemicolon() {\n  }\n  raw(node2, prop, tokens, customProperty) {\n    let token, type;\n    let length = tokens.length;\n    let value = \"\";\n    let clean = true;\n    let next, prev;\n    for (let i2 = 0; i2 < length; i2 += 1) {\n      token = tokens[i2];\n      type = token[0];\n      if (type === \"space\" && i2 === length - 1 && !customProperty) {\n        clean = false;\n      } else if (type === \"comment\") {\n        prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n        next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n        if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n          if (value.slice(-1) === \",\") {\n            clean = false;\n          } else {\n            value += token[1];\n          }\n        } else {\n          clean = false;\n        }\n      } else {\n        value += token[1];\n      }\n    }\n    if (!clean) {\n      let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n      node2.raws[prop] = { raw, value };\n    }\n    node2[prop] = value;\n  }\n  rule(tokens) {\n    tokens.pop();\n    let node2 = new Rule$2$1();\n    this.init(node2, tokens[0][2]);\n    node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n    this.raw(node2, \"selector\", tokens);\n    this.current = node2;\n  }\n  spacesAndCommentsFromEnd(tokens) {\n    let lastTokenType;\n    let spaces = \"\";\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0];\n      if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n      spaces = tokens.pop()[1] + spaces;\n    }\n    return spaces;\n  }\n  // Errors\n  spacesAndCommentsFromStart(tokens) {\n    let next;\n    let spaces = \"\";\n    while (tokens.length) {\n      next = tokens[0][0];\n      if (next !== \"space\" && next !== \"comment\") break;\n      spaces += tokens.shift()[1];\n    }\n    return spaces;\n  }\n  spacesFromEnd(tokens) {\n    let lastTokenType;\n    let spaces = \"\";\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0];\n      if (lastTokenType !== \"space\") break;\n      spaces = tokens.pop()[1] + spaces;\n    }\n    return spaces;\n  }\n  stringFrom(tokens, from) {\n    let result2 = \"\";\n    for (let i2 = from; i2 < tokens.length; i2++) {\n      result2 += tokens[i2][1];\n    }\n    tokens.splice(from, tokens.length - from);\n    return result2;\n  }\n  unclosedBlock() {\n    let pos = this.current.source.start;\n    throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n  }\n  unclosedBracket(bracket) {\n    throw this.input.error(\n      \"Unclosed bracket\",\n      { offset: bracket[2] },\n      { offset: bracket[2] + 1 }\n    );\n  }\n  unexpectedClose(token) {\n    throw this.input.error(\n      \"Unexpected }\",\n      { offset: token[2] },\n      { offset: token[2] + 1 }\n    );\n  }\n  unknownWord(tokens) {\n    throw this.input.error(\n      \"Unknown word\",\n      { offset: tokens[0][2] },\n      { offset: tokens[0][2] + tokens[0][1].length }\n    );\n  }\n  unnamedAtrule(node2, token) {\n    throw this.input.error(\n      \"At-rule without name\",\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    );\n  }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n  let input2 = new Input$2$1(css, opts);\n  let parser2 = new Parser2$1(input2);\n  try {\n    parser2.parse();\n  } catch (e2) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n        if (/\\.scss$/i.test(opts.from)) {\n          e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n        } else if (/\\.sass/i.test(opts.from)) {\n          e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n        } else if (/\\.less$/i.test(opts.from)) {\n          e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n        }\n      }\n    }\n    throw e2;\n  }\n  return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n  atrule: \"AtRule\",\n  comment: \"Comment\",\n  decl: \"Declaration\",\n  document: \"Document\",\n  root: \"Root\",\n  rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n  AtRule: true,\n  AtRuleExit: true,\n  Comment: true,\n  CommentExit: true,\n  Declaration: true,\n  DeclarationExit: true,\n  Document: true,\n  DocumentExit: true,\n  Once: true,\n  OnceExit: true,\n  postcssPlugin: true,\n  prepare: true,\n  Root: true,\n  RootExit: true,\n  Rule: true,\n  RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n  Once: true,\n  postcssPlugin: true,\n  prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n  return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n  let key = false;\n  let type = TYPE_TO_CLASS_NAME$1[node2.type];\n  if (node2.type === \"decl\") {\n    key = node2.prop.toLowerCase();\n  } else if (node2.type === \"atrule\") {\n    key = node2.name.toLowerCase();\n  }\n  if (key && node2.append) {\n    return [\n      type,\n      type + \"-\" + key,\n      CHILDREN$1,\n      type + \"Exit\",\n      type + \"Exit-\" + key\n    ];\n  } else if (key) {\n    return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n  } else if (node2.append) {\n    return [type, CHILDREN$1, type + \"Exit\"];\n  } else {\n    return [type, type + \"Exit\"];\n  }\n}\nfunction toStack$1(node2) {\n  let events;\n  if (node2.type === \"document\") {\n    events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n  } else if (node2.type === \"root\") {\n    events = [\"Root\", CHILDREN$1, \"RootExit\"];\n  } else {\n    events = getEvents$1(node2);\n  }\n  return {\n    eventIndex: 0,\n    events,\n    iterator: 0,\n    node: node2,\n    visitorIndex: 0,\n    visitors: []\n  };\n}\nfunction cleanMarks$1(node2) {\n  node2[isClean$3] = false;\n  if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n  return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n  constructor(processor2, css, opts) {\n    this.stringified = false;\n    this.processed = false;\n    let root2;\n    if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n      root2 = cleanMarks$1(css);\n    } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n      root2 = cleanMarks$1(css.root);\n      if (css.map) {\n        if (typeof opts.map === \"undefined\") opts.map = {};\n        if (!opts.map.inline) opts.map.inline = false;\n        opts.map.prev = css.map;\n      }\n    } else {\n      let parser2 = parse$2$1;\n      if (opts.syntax) parser2 = opts.syntax.parse;\n      if (opts.parser) parser2 = opts.parser;\n      if (parser2.parse) parser2 = parser2.parse;\n      try {\n        root2 = parser2(css, opts);\n      } catch (error) {\n        this.processed = true;\n        this.error = error;\n      }\n      if (root2 && !root2[my$3]) {\n        Container$1$1.rebuild(root2);\n      }\n    }\n    this.result = new Result$2$1(processor2, root2, opts);\n    this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n    this.plugins = this.processor.plugins.map((plugin22) => {\n      if (typeof plugin22 === \"object\" && plugin22.prepare) {\n        return { ...plugin22, ...plugin22.prepare(this.result) };\n      } else {\n        return plugin22;\n      }\n    });\n  }\n  async() {\n    if (this.error) return Promise.reject(this.error);\n    if (this.processed) return Promise.resolve(this.result);\n    if (!this.processing) {\n      this.processing = this.runAsync();\n    }\n    return this.processing;\n  }\n  catch(onRejected) {\n    return this.async().catch(onRejected);\n  }\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally);\n  }\n  getAsyncError() {\n    throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n  }\n  handleError(error, node2) {\n    let plugin22 = this.result.lastPlugin;\n    try {\n      if (node2) node2.addToError(error);\n      this.error = error;\n      if (error.name === \"CssSyntaxError\" && !error.plugin) {\n        error.plugin = plugin22.postcssPlugin;\n        error.setMessage();\n      } else if (plugin22.postcssVersion) {\n        if (process.env.NODE_ENV !== \"production\") {\n          let pluginName = plugin22.postcssPlugin;\n          let pluginVer = plugin22.postcssVersion;\n          let runtimeVer = this.result.processor.version;\n          let a2 = pluginVer.split(\".\");\n          let b = runtimeVer.split(\".\");\n          if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n            console.error(\n              \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n            );\n          }\n        }\n      }\n    } catch (err) {\n      if (console && console.error) console.error(err);\n    }\n    return error;\n  }\n  prepareVisitors() {\n    this.listeners = {};\n    let add = (plugin22, type, cb) => {\n      if (!this.listeners[type]) this.listeners[type] = [];\n      this.listeners[type].push([plugin22, cb]);\n    };\n    for (let plugin22 of this.plugins) {\n      if (typeof plugin22 === \"object\") {\n        for (let event in plugin22) {\n          if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n            throw new Error(\n              `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n            );\n          }\n          if (!NOT_VISITORS$1[event]) {\n            if (typeof plugin22[event] === \"object\") {\n              for (let filter in plugin22[event]) {\n                if (filter === \"*\") {\n                  add(plugin22, event, plugin22[event][filter]);\n                } else {\n                  add(\n                    plugin22,\n                    event + \"-\" + filter.toLowerCase(),\n                    plugin22[event][filter]\n                  );\n                }\n              }\n            } else if (typeof plugin22[event] === \"function\") {\n              add(plugin22, event, plugin22[event]);\n            }\n          }\n        }\n      }\n    }\n    this.hasListener = Object.keys(this.listeners).length > 0;\n  }\n  async runAsync() {\n    this.plugin = 0;\n    for (let i2 = 0; i2 < this.plugins.length; i2++) {\n      let plugin22 = this.plugins[i2];\n      let promise = this.runOnRoot(plugin22);\n      if (isPromise$1(promise)) {\n        try {\n          await promise;\n        } catch (error) {\n          throw this.handleError(error);\n        }\n      }\n    }\n    this.prepareVisitors();\n    if (this.hasListener) {\n      let root2 = this.result.root;\n      while (!root2[isClean$3]) {\n        root2[isClean$3] = true;\n        let stack = [toStack$1(root2)];\n        while (stack.length > 0) {\n          let promise = this.visitTick(stack);\n          if (isPromise$1(promise)) {\n            try {\n              await promise;\n            } catch (e2) {\n              let node2 = stack[stack.length - 1].node;\n              throw this.handleError(e2, node2);\n            }\n          }\n        }\n      }\n      if (this.listeners.OnceExit) {\n        for (let [plugin22, visitor] of this.listeners.OnceExit) {\n          this.result.lastPlugin = plugin22;\n          try {\n            if (root2.type === \"document\") {\n              let roots = root2.nodes.map(\n                (subRoot) => visitor(subRoot, this.helpers)\n              );\n              await Promise.all(roots);\n            } else {\n              await visitor(root2, this.helpers);\n            }\n          } catch (e2) {\n            throw this.handleError(e2);\n          }\n        }\n      }\n    }\n    this.processed = true;\n    return this.stringify();\n  }\n  runOnRoot(plugin22) {\n    this.result.lastPlugin = plugin22;\n    try {\n      if (typeof plugin22 === \"object\" && plugin22.Once) {\n        if (this.result.root.type === \"document\") {\n          let roots = this.result.root.nodes.map(\n            (root2) => plugin22.Once(root2, this.helpers)\n          );\n          if (isPromise$1(roots[0])) {\n            return Promise.all(roots);\n          }\n          return roots;\n        }\n        return plugin22.Once(this.result.root, this.helpers);\n      } else if (typeof plugin22 === \"function\") {\n        return plugin22(this.result.root, this.result);\n      }\n    } catch (error) {\n      throw this.handleError(error);\n    }\n  }\n  stringify() {\n    if (this.error) throw this.error;\n    if (this.stringified) return this.result;\n    this.stringified = true;\n    this.sync();\n    let opts = this.result.opts;\n    let str = stringify$2$1;\n    if (opts.syntax) str = opts.syntax.stringify;\n    if (opts.stringifier) str = opts.stringifier;\n    if (str.stringify) str = str.stringify;\n    let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n    let data = map.generate();\n    this.result.css = data[0];\n    this.result.map = data[1];\n    return this.result;\n  }\n  sync() {\n    if (this.error) throw this.error;\n    if (this.processed) return this.result;\n    this.processed = true;\n    if (this.processing) {\n      throw this.getAsyncError();\n    }\n    for (let plugin22 of this.plugins) {\n      let promise = this.runOnRoot(plugin22);\n      if (isPromise$1(promise)) {\n        throw this.getAsyncError();\n      }\n    }\n    this.prepareVisitors();\n    if (this.hasListener) {\n      let root2 = this.result.root;\n      while (!root2[isClean$3]) {\n        root2[isClean$3] = true;\n        this.walkSync(root2);\n      }\n      if (this.listeners.OnceExit) {\n        if (root2.type === \"document\") {\n          for (let subRoot of root2.nodes) {\n            this.visitSync(this.listeners.OnceExit, subRoot);\n          }\n        } else {\n          this.visitSync(this.listeners.OnceExit, root2);\n        }\n      }\n    }\n    return this.result;\n  }\n  then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!(\"from\" in this.opts)) {\n        warnOnce$1$1(\n          \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n        );\n      }\n    }\n    return this.async().then(onFulfilled, onRejected);\n  }\n  toString() {\n    return this.css;\n  }\n  visitSync(visitors, node2) {\n    for (let [plugin22, visitor] of visitors) {\n      this.result.lastPlugin = plugin22;\n      let promise;\n      try {\n        promise = visitor(node2, this.helpers);\n      } catch (e2) {\n        throw this.handleError(e2, node2.proxyOf);\n      }\n      if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n        return true;\n      }\n      if (isPromise$1(promise)) {\n        throw this.getAsyncError();\n      }\n    }\n  }\n  visitTick(stack) {\n    let visit2 = stack[stack.length - 1];\n    let { node: node2, visitors } = visit2;\n    if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n      stack.pop();\n      return;\n    }\n    if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n      let [plugin22, visitor] = visitors[visit2.visitorIndex];\n      visit2.visitorIndex += 1;\n      if (visit2.visitorIndex === visitors.length) {\n        visit2.visitors = [];\n        visit2.visitorIndex = 0;\n      }\n      this.result.lastPlugin = plugin22;\n      try {\n        return visitor(node2.toProxy(), this.helpers);\n      } catch (e2) {\n        throw this.handleError(e2, node2);\n      }\n    }\n    if (visit2.iterator !== 0) {\n      let iterator = visit2.iterator;\n      let child;\n      while (child = node2.nodes[node2.indexes[iterator]]) {\n        node2.indexes[iterator] += 1;\n        if (!child[isClean$3]) {\n          child[isClean$3] = true;\n          stack.push(toStack$1(child));\n          return;\n        }\n      }\n      visit2.iterator = 0;\n      delete node2.indexes[iterator];\n    }\n    let events = visit2.events;\n    while (visit2.eventIndex < events.length) {\n      let event = events[visit2.eventIndex];\n      visit2.eventIndex += 1;\n      if (event === CHILDREN$1) {\n        if (node2.nodes && node2.nodes.length) {\n          node2[isClean$3] = true;\n          visit2.iterator = node2.getIterator();\n        }\n        return;\n      } else if (this.listeners[event]) {\n        visit2.visitors = this.listeners[event];\n        return;\n      }\n    }\n    stack.pop();\n  }\n  walkSync(node2) {\n    node2[isClean$3] = true;\n    let events = getEvents$1(node2);\n    for (let event of events) {\n      if (event === CHILDREN$1) {\n        if (node2.nodes) {\n          node2.each((child) => {\n            if (!child[isClean$3]) this.walkSync(child);\n          });\n        }\n      } else {\n        let visitors = this.listeners[event];\n        if (visitors) {\n          if (this.visitSync(visitors, node2.toProxy())) return;\n        }\n      }\n    }\n  }\n  warnings() {\n    return this.sync().warnings();\n  }\n  get content() {\n    return this.stringify().content;\n  }\n  get css() {\n    return this.stringify().css;\n  }\n  get map() {\n    return this.stringify().map;\n  }\n  get messages() {\n    return this.sync().messages;\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    return this.sync().root;\n  }\n  get [Symbol.toStringTag]() {\n    return \"LazyResult\";\n  }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n  postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n  constructor(processor2, css, opts) {\n    css = css.toString();\n    this.stringified = false;\n    this._processor = processor2;\n    this._css = css;\n    this._opts = opts;\n    this._map = void 0;\n    let root2;\n    let str = stringify$1$1;\n    this.result = new Result$1$1(this._processor, root2, this._opts);\n    this.result.css = css;\n    let self = this;\n    Object.defineProperty(this.result, \"root\", {\n      get() {\n        return self.root;\n      }\n    });\n    let map = new MapGenerator2$1(str, root2, this._opts, css);\n    if (map.isMap()) {\n      let [generatedCSS, generatedMap] = map.generate();\n      if (generatedCSS) {\n        this.result.css = generatedCSS;\n      }\n      if (generatedMap) {\n        this.result.map = generatedMap;\n      }\n    } else {\n      map.clearAnnotation();\n      this.result.css = map.css;\n    }\n  }\n  async() {\n    if (this.error) return Promise.reject(this.error);\n    return Promise.resolve(this.result);\n  }\n  catch(onRejected) {\n    return this.async().catch(onRejected);\n  }\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally);\n  }\n  sync() {\n    if (this.error) throw this.error;\n    return this.result;\n  }\n  then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!(\"from\" in this._opts)) {\n        warnOnce2$1(\n          \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n        );\n      }\n    }\n    return this.async().then(onFulfilled, onRejected);\n  }\n  toString() {\n    return this._css;\n  }\n  warnings() {\n    return [];\n  }\n  get content() {\n    return this.result.css;\n  }\n  get css() {\n    return this.result.css;\n  }\n  get map() {\n    return this.result.map;\n  }\n  get messages() {\n    return [];\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    if (this._root) {\n      return this._root;\n    }\n    let root2;\n    let parser2 = parse$1$1;\n    try {\n      root2 = parser2(this._css, this._opts);\n    } catch (error) {\n      this.error = error;\n    }\n    if (this.error) {\n      throw this.error;\n    } else {\n      this._root = root2;\n      return root2;\n    }\n  }\n  get [Symbol.toStringTag]() {\n    return \"NoWorkResult\";\n  }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n  constructor(plugins = []) {\n    this.version = \"8.4.38\";\n    this.plugins = this.normalize(plugins);\n  }\n  normalize(plugins) {\n    let normalized = [];\n    for (let i2 of plugins) {\n      if (i2.postcss === true) {\n        i2 = i2();\n      } else if (i2.postcss) {\n        i2 = i2.postcss;\n      }\n      if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n        normalized = normalized.concat(i2.plugins);\n      } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n        normalized.push(i2);\n      } else if (typeof i2 === \"function\") {\n        normalized.push(i2);\n      } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n        if (process.env.NODE_ENV !== \"production\") {\n          throw new Error(\n            \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n          );\n        }\n      } else {\n        throw new Error(i2 + \" is not a PostCSS plugin\");\n      }\n    }\n    return normalized;\n  }\n  process(css, opts = {}) {\n    if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n      return new NoWorkResult2$1(this, css, opts);\n    } else {\n      return new LazyResult$1$1(this, css, opts);\n    }\n  }\n  use(plugin22) {\n    this.plugins = this.plugins.concat(this.normalize([plugin22]));\n    return this;\n  }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n  if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n  let { inputs: ownInputs, ...defaults } = json;\n  if (ownInputs) {\n    inputs = [];\n    for (let input2 of ownInputs) {\n      let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n      if (inputHydrated.map) {\n        inputHydrated.map = {\n          ...inputHydrated.map,\n          __proto__: PreviousMap2$1.prototype\n        };\n      }\n      inputs.push(inputHydrated);\n    }\n  }\n  if (defaults.nodes) {\n    defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n  }\n  if (defaults.source) {\n    let { inputId, ...source } = defaults.source;\n    defaults.source = source;\n    if (inputId != null) {\n      defaults.source.input = inputs[inputId];\n    }\n  }\n  if (defaults.type === \"root\") {\n    return new Root$1$1(defaults);\n  } else if (defaults.type === \"decl\") {\n    return new Declaration$1$1(defaults);\n  } else if (defaults.type === \"rule\") {\n    return new Rule$1$1(defaults);\n  } else if (defaults.type === \"comment\") {\n    return new Comment$1$1(defaults);\n  } else if (defaults.type === \"atrule\") {\n    return new AtRule$1$1(defaults);\n  } else {\n    throw new Error(\"Unknown node type: \" + json.type);\n  }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n  if (plugins.length === 1 && Array.isArray(plugins[0])) {\n    plugins = plugins[0];\n  }\n  return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n  let warningPrinted = false;\n  function creator(...args) {\n    if (console && console.warn && !warningPrinted) {\n      warningPrinted = true;\n      console.warn(\n        name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n      );\n      if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n        console.warn(\n          name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n        );\n      }\n    }\n    let transformer = initializer(...args);\n    transformer.postcssPlugin = name;\n    transformer.postcssVersion = new Processor2$1().version;\n    return transformer;\n  }\n  let cache;\n  Object.defineProperty(creator, \"postcss\", {\n    get() {\n      if (!cache) cache = creator();\n      return cache;\n    }\n  });\n  creator.process = function(css, processOpts, pluginOpts) {\n    return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n  };\n  return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n  if (n2.__esModule) return n2;\n  var f2 = n2.default;\n  if (typeof f2 == \"function\") {\n    var a2 = function a22() {\n      if (this instanceof a22) {\n        return Reflect.construct(f2, arguments, this.constructor);\n      }\n      return f2.apply(this, arguments);\n    };\n    a2.prototype = f2.prototype;\n  } else a2 = {};\n  Object.defineProperty(a2, \"__esModule\", { value: true });\n  Object.keys(n2).forEach(function(k) {\n    var d = Object.getOwnPropertyDescriptor(n2, k);\n    Object.defineProperty(a2, k, d.get ? d : {\n      enumerable: true,\n      get: function() {\n        return n2[k];\n      }\n    });\n  });\n  return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n  return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n  constructor(message, line, column, source, file, plugin22) {\n    super(message);\n    this.name = \"CssSyntaxError\";\n    this.reason = message;\n    if (file) {\n      this.file = file;\n    }\n    if (source) {\n      this.source = source;\n    }\n    if (plugin22) {\n      this.plugin = plugin22;\n    }\n    if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n      if (typeof line === \"number\") {\n        this.line = line;\n        this.column = column;\n      } else {\n        this.line = line.line;\n        this.column = line.column;\n        this.endLine = column.line;\n        this.endColumn = column.column;\n      }\n    }\n    this.setMessage();\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, CssSyntaxError2);\n    }\n  }\n  setMessage() {\n    this.message = this.plugin ? this.plugin + \": \" : \"\";\n    this.message += this.file ? this.file : \"<css input>\";\n    if (typeof this.line !== \"undefined\") {\n      this.message += \":\" + this.line + \":\" + this.column;\n    }\n    this.message += \": \" + this.reason;\n  }\n  showSourceCode(color) {\n    if (!this.source) return \"\";\n    let css = this.source;\n    if (color == null) color = pico.isColorSupported;\n    if (terminalHighlight$1) {\n      if (color) css = terminalHighlight$1(css);\n    }\n    let lines = css.split(/\\r?\\n/);\n    let start = Math.max(this.line - 3, 0);\n    let end = Math.min(this.line + 2, lines.length);\n    let maxWidth = String(end).length;\n    let mark, aside;\n    if (color) {\n      let { bold, gray, red } = pico.createColors(true);\n      mark = (text) => bold(red(text));\n      aside = (text) => gray(text);\n    } else {\n      mark = aside = (str) => str;\n    }\n    return lines.slice(start, end).map((line, index2) => {\n      let number = start + 1 + index2;\n      let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n      if (number === this.line) {\n        let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n        return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n      }\n      return \" \" + aside(gutter) + line;\n    }).join(\"\\n\");\n  }\n  toString() {\n    let code = this.showSourceCode();\n    if (code) {\n      code = \"\\n\\n\" + code + \"\\n\";\n    }\n    return this.name + \": \" + this.message + code;\n  }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n  after: \"\\n\",\n  beforeClose: \"\\n\",\n  beforeComment: \"\\n\",\n  beforeDecl: \"\\n\",\n  beforeOpen: \" \",\n  beforeRule: \"\\n\",\n  colon: \": \",\n  commentLeft: \" \",\n  commentRight: \" \",\n  emptyBody: \"\",\n  indent: \"    \",\n  semicolon: false\n};\nfunction capitalize(str) {\n  return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n  constructor(builder) {\n    this.builder = builder;\n  }\n  atrule(node2, semicolon) {\n    let name = \"@\" + node2.name;\n    let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n    if (typeof node2.raws.afterName !== \"undefined\") {\n      name += node2.raws.afterName;\n    } else if (params) {\n      name += \" \";\n    }\n    if (node2.nodes) {\n      this.block(node2, name + params);\n    } else {\n      let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n      this.builder(name + params + end, node2);\n    }\n  }\n  beforeAfter(node2, detect) {\n    let value;\n    if (node2.type === \"decl\") {\n      value = this.raw(node2, null, \"beforeDecl\");\n    } else if (node2.type === \"comment\") {\n      value = this.raw(node2, null, \"beforeComment\");\n    } else if (detect === \"before\") {\n      value = this.raw(node2, null, \"beforeRule\");\n    } else {\n      value = this.raw(node2, null, \"beforeClose\");\n    }\n    let buf = node2.parent;\n    let depth = 0;\n    while (buf && buf.type !== \"root\") {\n      depth += 1;\n      buf = buf.parent;\n    }\n    if (value.includes(\"\\n\")) {\n      let indent = this.raw(node2, null, \"indent\");\n      if (indent.length) {\n        for (let step = 0; step < depth; step++) value += indent;\n      }\n    }\n    return value;\n  }\n  block(node2, start) {\n    let between = this.raw(node2, \"between\", \"beforeOpen\");\n    this.builder(start + between + \"{\", node2, \"start\");\n    let after;\n    if (node2.nodes && node2.nodes.length) {\n      this.body(node2);\n      after = this.raw(node2, \"after\");\n    } else {\n      after = this.raw(node2, \"after\", \"emptyBody\");\n    }\n    if (after) this.builder(after);\n    this.builder(\"}\", node2, \"end\");\n  }\n  body(node2) {\n    let last = node2.nodes.length - 1;\n    while (last > 0) {\n      if (node2.nodes[last].type !== \"comment\") break;\n      last -= 1;\n    }\n    let semicolon = this.raw(node2, \"semicolon\");\n    for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n      let child = node2.nodes[i2];\n      let before = this.raw(child, \"before\");\n      if (before) this.builder(before);\n      this.stringify(child, last !== i2 || semicolon);\n    }\n  }\n  comment(node2) {\n    let left = this.raw(node2, \"left\", \"commentLeft\");\n    let right = this.raw(node2, \"right\", \"commentRight\");\n    this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n  }\n  decl(node2, semicolon) {\n    let between = this.raw(node2, \"between\", \"colon\");\n    let string = node2.prop + between + this.rawValue(node2, \"value\");\n    if (node2.important) {\n      string += node2.raws.important || \" !important\";\n    }\n    if (semicolon) string += \";\";\n    this.builder(string, node2);\n  }\n  document(node2) {\n    this.body(node2);\n  }\n  raw(node2, own, detect) {\n    let value;\n    if (!detect) detect = own;\n    if (own) {\n      value = node2.raws[own];\n      if (typeof value !== \"undefined\") return value;\n    }\n    let parent = node2.parent;\n    if (detect === \"before\") {\n      if (!parent || parent.type === \"root\" && parent.first === node2) {\n        return \"\";\n      }\n      if (parent && parent.type === \"document\") {\n        return \"\";\n      }\n    }\n    if (!parent) return DEFAULT_RAW[detect];\n    let root2 = node2.root();\n    if (!root2.rawCache) root2.rawCache = {};\n    if (typeof root2.rawCache[detect] !== \"undefined\") {\n      return root2.rawCache[detect];\n    }\n    if (detect === \"before\" || detect === \"after\") {\n      return this.beforeAfter(node2, detect);\n    } else {\n      let method = \"raw\" + capitalize(detect);\n      if (this[method]) {\n        value = this[method](root2, node2);\n      } else {\n        root2.walk((i2) => {\n          value = i2.raws[own];\n          if (typeof value !== \"undefined\") return false;\n        });\n      }\n    }\n    if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n    root2.rawCache[detect] = value;\n    return value;\n  }\n  rawBeforeClose(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && i2.nodes.length > 0) {\n        if (typeof i2.raws.after !== \"undefined\") {\n          value = i2.raws.after;\n          if (value.includes(\"\\n\")) {\n            value = value.replace(/[^\\n]+$/, \"\");\n          }\n          return false;\n        }\n      }\n    });\n    if (value) value = value.replace(/\\S/g, \"\");\n    return value;\n  }\n  rawBeforeComment(root2, node2) {\n    let value;\n    root2.walkComments((i2) => {\n      if (typeof i2.raws.before !== \"undefined\") {\n        value = i2.raws.before;\n        if (value.includes(\"\\n\")) {\n          value = value.replace(/[^\\n]+$/, \"\");\n        }\n        return false;\n      }\n    });\n    if (typeof value === \"undefined\") {\n      value = this.raw(node2, null, \"beforeDecl\");\n    } else if (value) {\n      value = value.replace(/\\S/g, \"\");\n    }\n    return value;\n  }\n  rawBeforeDecl(root2, node2) {\n    let value;\n    root2.walkDecls((i2) => {\n      if (typeof i2.raws.before !== \"undefined\") {\n        value = i2.raws.before;\n        if (value.includes(\"\\n\")) {\n          value = value.replace(/[^\\n]+$/, \"\");\n        }\n        return false;\n      }\n    });\n    if (typeof value === \"undefined\") {\n      value = this.raw(node2, null, \"beforeRule\");\n    } else if (value) {\n      value = value.replace(/\\S/g, \"\");\n    }\n    return value;\n  }\n  rawBeforeOpen(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.type !== \"decl\") {\n        value = i2.raws.between;\n        if (typeof value !== \"undefined\") return false;\n      }\n    });\n    return value;\n  }\n  rawBeforeRule(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n        if (typeof i2.raws.before !== \"undefined\") {\n          value = i2.raws.before;\n          if (value.includes(\"\\n\")) {\n            value = value.replace(/[^\\n]+$/, \"\");\n          }\n          return false;\n        }\n      }\n    });\n    if (value) value = value.replace(/\\S/g, \"\");\n    return value;\n  }\n  rawColon(root2) {\n    let value;\n    root2.walkDecls((i2) => {\n      if (typeof i2.raws.between !== \"undefined\") {\n        value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n        return false;\n      }\n    });\n    return value;\n  }\n  rawEmptyBody(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && i2.nodes.length === 0) {\n        value = i2.raws.after;\n        if (typeof value !== \"undefined\") return false;\n      }\n    });\n    return value;\n  }\n  rawIndent(root2) {\n    if (root2.raws.indent) return root2.raws.indent;\n    let value;\n    root2.walk((i2) => {\n      let p = i2.parent;\n      if (p && p !== root2 && p.parent && p.parent === root2) {\n        if (typeof i2.raws.before !== \"undefined\") {\n          let parts = i2.raws.before.split(\"\\n\");\n          value = parts[parts.length - 1];\n          value = value.replace(/\\S/g, \"\");\n          return false;\n        }\n      }\n    });\n    return value;\n  }\n  rawSemicolon(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n        value = i2.raws.semicolon;\n        if (typeof value !== \"undefined\") return false;\n      }\n    });\n    return value;\n  }\n  rawValue(node2, prop) {\n    let value = node2[prop];\n    let raw = node2.raws[prop];\n    if (raw && raw.value === value) {\n      return raw.raw;\n    }\n    return value;\n  }\n  root(node2) {\n    this.body(node2);\n    if (node2.raws.after) this.builder(node2.raws.after);\n  }\n  rule(node2) {\n    this.block(node2, this.rawValue(node2, \"selector\"));\n    if (node2.raws.ownSemicolon) {\n      this.builder(node2.raws.ownSemicolon, node2, \"end\");\n    }\n  }\n  stringify(node2, semicolon) {\n    if (!this[node2.type]) {\n      throw new Error(\n        \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n      );\n    }\n    this[node2.type](node2, semicolon);\n  }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n  let str = new Stringifier$1(builder);\n  str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n  let cloned = new obj.constructor();\n  for (let i2 in obj) {\n    if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n      continue;\n    }\n    if (i2 === \"proxyCache\") continue;\n    let value = obj[i2];\n    let type = typeof value;\n    if (i2 === \"parent\" && type === \"object\") {\n      if (parent) cloned[i2] = parent;\n    } else if (i2 === \"source\") {\n      cloned[i2] = value;\n    } else if (Array.isArray(value)) {\n      cloned[i2] = value.map((j) => cloneNode(j, cloned));\n    } else {\n      if (type === \"object\" && value !== null) value = cloneNode(value);\n      cloned[i2] = value;\n    }\n  }\n  return cloned;\n}\nlet Node$4 = class Node3 {\n  constructor(defaults = {}) {\n    this.raws = {};\n    this[isClean$2] = false;\n    this[my$2] = true;\n    for (let name in defaults) {\n      if (name === \"nodes\") {\n        this.nodes = [];\n        for (let node2 of defaults[name]) {\n          if (typeof node2.clone === \"function\") {\n            this.append(node2.clone());\n          } else {\n            this.append(node2);\n          }\n        }\n      } else {\n        this[name] = defaults[name];\n      }\n    }\n  }\n  addToError(error) {\n    error.postcssNode = this;\n    if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n      let s2 = this.source;\n      error.stack = error.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n      );\n    }\n    return error;\n  }\n  after(add) {\n    this.parent.insertAfter(this, add);\n    return this;\n  }\n  assign(overrides = {}) {\n    for (let name in overrides) {\n      this[name] = overrides[name];\n    }\n    return this;\n  }\n  before(add) {\n    this.parent.insertBefore(this, add);\n    return this;\n  }\n  cleanRaws(keepBetween) {\n    delete this.raws.before;\n    delete this.raws.after;\n    if (!keepBetween) delete this.raws.between;\n  }\n  clone(overrides = {}) {\n    let cloned = cloneNode(this);\n    for (let name in overrides) {\n      cloned[name] = overrides[name];\n    }\n    return cloned;\n  }\n  cloneAfter(overrides = {}) {\n    let cloned = this.clone(overrides);\n    this.parent.insertAfter(this, cloned);\n    return cloned;\n  }\n  cloneBefore(overrides = {}) {\n    let cloned = this.clone(overrides);\n    this.parent.insertBefore(this, cloned);\n    return cloned;\n  }\n  error(message, opts = {}) {\n    if (this.source) {\n      let { end, start } = this.rangeBy(opts);\n      return this.source.input.error(\n        message,\n        { column: start.column, line: start.line },\n        { column: end.column, line: end.line },\n        opts\n      );\n    }\n    return new CssSyntaxError$2(message);\n  }\n  getProxyProcessor() {\n    return {\n      get(node2, prop) {\n        if (prop === \"proxyOf\") {\n          return node2;\n        } else if (prop === \"root\") {\n          return () => node2.root().toProxy();\n        } else {\n          return node2[prop];\n        }\n      },\n      set(node2, prop, value) {\n        if (node2[prop] === value) return true;\n        node2[prop] = value;\n        if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n        prop === \"text\") {\n          node2.markDirty();\n        }\n        return true;\n      }\n    };\n  }\n  markDirty() {\n    if (this[isClean$2]) {\n      this[isClean$2] = false;\n      let next = this;\n      while (next = next.parent) {\n        next[isClean$2] = false;\n      }\n    }\n  }\n  next() {\n    if (!this.parent) return void 0;\n    let index2 = this.parent.index(this);\n    return this.parent.nodes[index2 + 1];\n  }\n  positionBy(opts, stringRepresentation) {\n    let pos = this.source.start;\n    if (opts.index) {\n      pos = this.positionInside(opts.index, stringRepresentation);\n    } else if (opts.word) {\n      stringRepresentation = this.toString();\n      let index2 = stringRepresentation.indexOf(opts.word);\n      if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n    }\n    return pos;\n  }\n  positionInside(index2, stringRepresentation) {\n    let string = stringRepresentation || this.toString();\n    let column = this.source.start.column;\n    let line = this.source.start.line;\n    for (let i2 = 0; i2 < index2; i2++) {\n      if (string[i2] === \"\\n\") {\n        column = 1;\n        line += 1;\n      } else {\n        column += 1;\n      }\n    }\n    return { column, line };\n  }\n  prev() {\n    if (!this.parent) return void 0;\n    let index2 = this.parent.index(this);\n    return this.parent.nodes[index2 - 1];\n  }\n  rangeBy(opts) {\n    let start = {\n      column: this.source.start.column,\n      line: this.source.start.line\n    };\n    let end = this.source.end ? {\n      column: this.source.end.column + 1,\n      line: this.source.end.line\n    } : {\n      column: start.column + 1,\n      line: start.line\n    };\n    if (opts.word) {\n      let stringRepresentation = this.toString();\n      let index2 = stringRepresentation.indexOf(opts.word);\n      if (index2 !== -1) {\n        start = this.positionInside(index2, stringRepresentation);\n        end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n      }\n    } else {\n      if (opts.start) {\n        start = {\n          column: opts.start.column,\n          line: opts.start.line\n        };\n      } else if (opts.index) {\n        start = this.positionInside(opts.index);\n      }\n      if (opts.end) {\n        end = {\n          column: opts.end.column,\n          line: opts.end.line\n        };\n      } else if (typeof opts.endIndex === \"number\") {\n        end = this.positionInside(opts.endIndex);\n      } else if (opts.index) {\n        end = this.positionInside(opts.index + 1);\n      }\n    }\n    if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n      end = { column: start.column + 1, line: start.line };\n    }\n    return { end, start };\n  }\n  raw(prop, defaultType) {\n    let str = new Stringifier22();\n    return str.raw(this, prop, defaultType);\n  }\n  remove() {\n    if (this.parent) {\n      this.parent.removeChild(this);\n    }\n    this.parent = void 0;\n    return this;\n  }\n  replaceWith(...nodes) {\n    if (this.parent) {\n      let bookmark = this;\n      let foundSelf = false;\n      for (let node2 of nodes) {\n        if (node2 === this) {\n          foundSelf = true;\n        } else if (foundSelf) {\n          this.parent.insertAfter(bookmark, node2);\n          bookmark = node2;\n        } else {\n          this.parent.insertBefore(bookmark, node2);\n        }\n      }\n      if (!foundSelf) {\n        this.remove();\n      }\n    }\n    return this;\n  }\n  root() {\n    let result2 = this;\n    while (result2.parent && result2.parent.type !== \"document\") {\n      result2 = result2.parent;\n    }\n    return result2;\n  }\n  toJSON(_, inputs) {\n    let fixed = {};\n    let emitInputs = inputs == null;\n    inputs = inputs || /* @__PURE__ */ new Map();\n    let inputsNextIndex = 0;\n    for (let name in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, name)) {\n        continue;\n      }\n      if (name === \"parent\" || name === \"proxyCache\") continue;\n      let value = this[name];\n      if (Array.isArray(value)) {\n        fixed[name] = value.map((i2) => {\n          if (typeof i2 === \"object\" && i2.toJSON) {\n            return i2.toJSON(null, inputs);\n          } else {\n            return i2;\n          }\n        });\n      } else if (typeof value === \"object\" && value.toJSON) {\n        fixed[name] = value.toJSON(null, inputs);\n      } else if (name === \"source\") {\n        let inputId = inputs.get(value.input);\n        if (inputId == null) {\n          inputId = inputsNextIndex;\n          inputs.set(value.input, inputsNextIndex);\n          inputsNextIndex++;\n        }\n        fixed[name] = {\n          end: value.end,\n          inputId,\n          start: value.start\n        };\n      } else {\n        fixed[name] = value;\n      }\n    }\n    if (emitInputs) {\n      fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n    }\n    return fixed;\n  }\n  toProxy() {\n    if (!this.proxyCache) {\n      this.proxyCache = new Proxy(this, this.getProxyProcessor());\n    }\n    return this.proxyCache;\n  }\n  toString(stringifier2 = stringify$3) {\n    if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n    let result2 = \"\";\n    stringifier2(this, (i2) => {\n      result2 += i2;\n    });\n    return result2;\n  }\n  warn(result2, text, opts) {\n    let data = { node: this };\n    for (let i2 in opts) data[i2] = opts[i2];\n    return result2.warn(text, data);\n  }\n  get proxyOf() {\n    return this;\n  }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n  constructor(defaults) {\n    if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n      defaults = { ...defaults, value: String(defaults.value) };\n    }\n    super(defaults);\n    this.type = \"decl\";\n  }\n  get variable() {\n    return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n  }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n  return (size = defaultSize) => {\n    let id = \"\";\n    let i2 = size;\n    while (i2--) {\n      id += alphabet[Math.random() * alphabet.length | 0];\n    }\n    return id;\n  };\n};\nlet nanoid$1 = (size = 21) => {\n  let id = \"\";\n  let i2 = size;\n  while (i2--) {\n    id += urlAlphabet[Math.random() * 64 | 0];\n  }\n  return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n  if (Buffer) {\n    return Buffer.from(str, \"base64\").toString();\n  } else {\n    return window.atob(str);\n  }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n  constructor(css, opts) {\n    if (opts.map === false) return;\n    this.loadAnnotation(css);\n    this.inline = this.startWith(this.annotation, \"data:\");\n    let prev = opts.map ? opts.map.prev : void 0;\n    let text = this.loadMap(opts.from, prev);\n    if (!this.mapFile && opts.from) {\n      this.mapFile = opts.from;\n    }\n    if (this.mapFile) this.root = dirname$1(this.mapFile);\n    if (text) this.text = text;\n  }\n  consumer() {\n    if (!this.consumerCache) {\n      this.consumerCache = new SourceMapConsumer$2(this.text);\n    }\n    return this.consumerCache;\n  }\n  decodeInline(text) {\n    let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n    let baseUri = /^data:application\\/json;base64,/;\n    let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n    let uri = /^data:application\\/json,/;\n    if (charsetUri.test(text) || uri.test(text)) {\n      return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n    }\n    if (baseCharsetUri.test(text) || baseUri.test(text)) {\n      return fromBase64(text.substr(RegExp.lastMatch.length));\n    }\n    let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n    throw new Error(\"Unsupported source map encoding \" + encoding);\n  }\n  getAnnotationURL(sourceMapString) {\n    return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n  }\n  isMap(map) {\n    if (typeof map !== \"object\") return false;\n    return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n  }\n  loadAnnotation(css) {\n    let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n    if (!comments) return;\n    let start = css.lastIndexOf(comments.pop());\n    let end = css.indexOf(\"*/\", start);\n    if (start > -1 && end > -1) {\n      this.annotation = this.getAnnotationURL(css.substring(start, end));\n    }\n  }\n  loadFile(path) {\n    this.root = dirname$1(path);\n    if (existsSync(path)) {\n      this.mapFile = path;\n      return readFileSync(path, \"utf-8\").toString().trim();\n    }\n  }\n  loadMap(file, prev) {\n    if (prev === false) return false;\n    if (prev) {\n      if (typeof prev === \"string\") {\n        return prev;\n      } else if (typeof prev === \"function\") {\n        let prevPath = prev(file);\n        if (prevPath) {\n          let map = this.loadFile(prevPath);\n          if (!map) {\n            throw new Error(\n              \"Unable to load previous source map: \" + prevPath.toString()\n            );\n          }\n          return map;\n        }\n      } else if (prev instanceof SourceMapConsumer$2) {\n        return SourceMapGenerator$2.fromSourceMap(prev).toString();\n      } else if (prev instanceof SourceMapGenerator$2) {\n        return prev.toString();\n      } else if (this.isMap(prev)) {\n        return JSON.stringify(prev);\n      } else {\n        throw new Error(\n          \"Unsupported previous source map format: \" + prev.toString()\n        );\n      }\n    } else if (this.inline) {\n      return this.decodeInline(this.annotation);\n    } else if (this.annotation) {\n      let map = this.annotation;\n      if (file) map = join(dirname$1(file), map);\n      return this.loadFile(map);\n    }\n  }\n  startWith(string, start) {\n    if (!string) return false;\n    return string.substr(0, start.length) === start;\n  }\n  withContent() {\n    return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n  }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n  constructor(css, opts = {}) {\n    if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n      throw new Error(`PostCSS received ${css} instead of CSS string`);\n    }\n    this.css = css.toString();\n    if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n      this.hasBOM = true;\n      this.css = this.css.slice(1);\n    } else {\n      this.hasBOM = false;\n    }\n    if (opts.from) {\n      if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n        this.file = opts.from;\n      } else {\n        this.file = resolve$1(opts.from);\n      }\n    }\n    if (pathAvailable$1 && sourceMapAvailable$1) {\n      let map = new PreviousMap$1(this.css, opts);\n      if (map.text) {\n        this.map = map;\n        let file = map.consumer().file;\n        if (!this.file && file) this.file = this.mapResolve(file);\n      }\n    }\n    if (!this.file) {\n      this.id = \"<input css \" + nanoid(6) + \">\";\n    }\n    if (this.map) this.map.file = this.from;\n  }\n  error(message, line, column, opts = {}) {\n    let result2, endLine, endColumn;\n    if (line && typeof line === \"object\") {\n      let start = line;\n      let end = column;\n      if (typeof start.offset === \"number\") {\n        let pos = this.fromOffset(start.offset);\n        line = pos.line;\n        column = pos.col;\n      } else {\n        line = start.line;\n        column = start.column;\n      }\n      if (typeof end.offset === \"number\") {\n        let pos = this.fromOffset(end.offset);\n        endLine = pos.line;\n        endColumn = pos.col;\n      } else {\n        endLine = end.line;\n        endColumn = end.column;\n      }\n    } else if (!column) {\n      let pos = this.fromOffset(line);\n      line = pos.line;\n      column = pos.col;\n    }\n    let origin = this.origin(line, column, endLine, endColumn);\n    if (origin) {\n      result2 = new CssSyntaxError$1(\n        message,\n        origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n        origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n        origin.source,\n        origin.file,\n        opts.plugin\n      );\n    } else {\n      result2 = new CssSyntaxError$1(\n        message,\n        endLine === void 0 ? line : { column, line },\n        endLine === void 0 ? column : { column: endColumn, line: endLine },\n        this.css,\n        this.file,\n        opts.plugin\n      );\n    }\n    result2.input = { column, endColumn, endLine, line, source: this.css };\n    if (this.file) {\n      if (pathToFileURL$1) {\n        result2.input.url = pathToFileURL$1(this.file).toString();\n      }\n      result2.input.file = this.file;\n    }\n    return result2;\n  }\n  fromOffset(offset) {\n    let lastLine, lineToIndex;\n    if (!this[fromOffsetCache]) {\n      let lines = this.css.split(\"\\n\");\n      lineToIndex = new Array(lines.length);\n      let prevIndex = 0;\n      for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n        lineToIndex[i2] = prevIndex;\n        prevIndex += lines[i2].length + 1;\n      }\n      this[fromOffsetCache] = lineToIndex;\n    } else {\n      lineToIndex = this[fromOffsetCache];\n    }\n    lastLine = lineToIndex[lineToIndex.length - 1];\n    let min = 0;\n    if (offset >= lastLine) {\n      min = lineToIndex.length - 1;\n    } else {\n      let max = lineToIndex.length - 2;\n      let mid;\n      while (min < max) {\n        mid = min + (max - min >> 1);\n        if (offset < lineToIndex[mid]) {\n          max = mid - 1;\n        } else if (offset >= lineToIndex[mid + 1]) {\n          min = mid + 1;\n        } else {\n          min = mid;\n          break;\n        }\n      }\n    }\n    return {\n      col: offset - lineToIndex[min] + 1,\n      line: min + 1\n    };\n  }\n  mapResolve(file) {\n    if (/^\\w+:\\/\\//.test(file)) {\n      return file;\n    }\n    return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n  }\n  origin(line, column, endLine, endColumn) {\n    if (!this.map) return false;\n    let consumer = this.map.consumer();\n    let from = consumer.originalPositionFor({ column, line });\n    if (!from.source) return false;\n    let to;\n    if (typeof endLine === \"number\") {\n      to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n    }\n    let fromUrl;\n    if (isAbsolute(from.source)) {\n      fromUrl = pathToFileURL$1(from.source);\n    } else {\n      fromUrl = new URL(\n        from.source,\n        this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n      );\n    }\n    let result2 = {\n      column: from.column,\n      endColumn: to && to.column,\n      endLine: to && to.line,\n      line: from.line,\n      url: fromUrl.toString()\n    };\n    if (fromUrl.protocol === \"file:\") {\n      if (fileURLToPath) {\n        result2.file = fileURLToPath(fromUrl);\n      } else {\n        throw new Error(`file: protocol is not available in this PostCSS build`);\n      }\n    }\n    let source = consumer.sourceContentFor(from.source);\n    if (source) result2.source = source;\n    return result2;\n  }\n  toJSON() {\n    let json = {};\n    for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n      if (this[name] != null) {\n        json[name] = this[name];\n      }\n    }\n    if (this.map) {\n      json.map = { ...this.map };\n      if (json.map.consumerCache) {\n        json.map.consumerCache = void 0;\n      }\n    }\n    return json;\n  }\n  get from() {\n    return this.file || this.id;\n  }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n  terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n  constructor(stringify2, root2, opts, cssString) {\n    this.stringify = stringify2;\n    this.mapOpts = opts.map || {};\n    this.root = root2;\n    this.opts = opts;\n    this.css = cssString;\n    this.originalCSS = cssString;\n    this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n    this.memoizedFileURLs = /* @__PURE__ */ new Map();\n    this.memoizedPaths = /* @__PURE__ */ new Map();\n    this.memoizedURLs = /* @__PURE__ */ new Map();\n  }\n  addAnnotation() {\n    let content;\n    if (this.isInline()) {\n      content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n    } else if (typeof this.mapOpts.annotation === \"string\") {\n      content = this.mapOpts.annotation;\n    } else if (typeof this.mapOpts.annotation === \"function\") {\n      content = this.mapOpts.annotation(this.opts.to, this.root);\n    } else {\n      content = this.outputFile() + \".map\";\n    }\n    let eol = \"\\n\";\n    if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n    this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n  }\n  applyPrevMaps() {\n    for (let prev of this.previous()) {\n      let from = this.toUrl(this.path(prev.file));\n      let root2 = prev.root || dirname(prev.file);\n      let map;\n      if (this.mapOpts.sourcesContent === false) {\n        map = new SourceMapConsumer(prev.text);\n        if (map.sourcesContent) {\n          map.sourcesContent = null;\n        }\n      } else {\n        map = prev.consumer();\n      }\n      this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n    }\n  }\n  clearAnnotation() {\n    if (this.mapOpts.annotation === false) return;\n    if (this.root) {\n      let node2;\n      for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n        node2 = this.root.nodes[i2];\n        if (node2.type !== \"comment\") continue;\n        if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n          this.root.removeChild(i2);\n        }\n      }\n    } else if (this.css) {\n      this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n    }\n  }\n  generate() {\n    this.clearAnnotation();\n    if (pathAvailable && sourceMapAvailable && this.isMap()) {\n      return this.generateMap();\n    } else {\n      let result2 = \"\";\n      this.stringify(this.root, (i2) => {\n        result2 += i2;\n      });\n      return [result2];\n    }\n  }\n  generateMap() {\n    if (this.root) {\n      this.generateString();\n    } else if (this.previous().length === 1) {\n      let prev = this.previous()[0].consumer();\n      prev.file = this.outputFile();\n      this.map = SourceMapGenerator.fromSourceMap(prev, {\n        ignoreInvalidMapping: true\n      });\n    } else {\n      this.map = new SourceMapGenerator({\n        file: this.outputFile(),\n        ignoreInvalidMapping: true\n      });\n      this.map.addMapping({\n        generated: { column: 0, line: 1 },\n        original: { column: 0, line: 1 },\n        source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n      });\n    }\n    if (this.isSourcesContent()) this.setSourcesContent();\n    if (this.root && this.previous().length > 0) this.applyPrevMaps();\n    if (this.isAnnotation()) this.addAnnotation();\n    if (this.isInline()) {\n      return [this.css];\n    } else {\n      return [this.css, this.map];\n    }\n  }\n  generateString() {\n    this.css = \"\";\n    this.map = new SourceMapGenerator({\n      file: this.outputFile(),\n      ignoreInvalidMapping: true\n    });\n    let line = 1;\n    let column = 1;\n    let noSource = \"<no source>\";\n    let mapping = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: \"\"\n    };\n    let lines, last;\n    this.stringify(this.root, (str, node2, type) => {\n      this.css += str;\n      if (node2 && type !== \"end\") {\n        mapping.generated.line = line;\n        mapping.generated.column = column - 1;\n        if (node2.source && node2.source.start) {\n          mapping.source = this.sourcePath(node2);\n          mapping.original.line = node2.source.start.line;\n          mapping.original.column = node2.source.start.column - 1;\n          this.map.addMapping(mapping);\n        } else {\n          mapping.source = noSource;\n          mapping.original.line = 1;\n          mapping.original.column = 0;\n          this.map.addMapping(mapping);\n        }\n      }\n      lines = str.match(/\\n/g);\n      if (lines) {\n        line += lines.length;\n        last = str.lastIndexOf(\"\\n\");\n        column = str.length - last;\n      } else {\n        column += str.length;\n      }\n      if (node2 && type !== \"start\") {\n        let p = node2.parent || { raws: {} };\n        let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n        if (!childless || node2 !== p.last || p.raws.semicolon) {\n          if (node2.source && node2.source.end) {\n            mapping.source = this.sourcePath(node2);\n            mapping.original.line = node2.source.end.line;\n            mapping.original.column = node2.source.end.column - 1;\n            mapping.generated.line = line;\n            mapping.generated.column = column - 2;\n            this.map.addMapping(mapping);\n          } else {\n            mapping.source = noSource;\n            mapping.original.line = 1;\n            mapping.original.column = 0;\n            mapping.generated.line = line;\n            mapping.generated.column = column - 1;\n            this.map.addMapping(mapping);\n          }\n        }\n      }\n    });\n  }\n  isAnnotation() {\n    if (this.isInline()) {\n      return true;\n    }\n    if (typeof this.mapOpts.annotation !== \"undefined\") {\n      return this.mapOpts.annotation;\n    }\n    if (this.previous().length) {\n      return this.previous().some((i2) => i2.annotation);\n    }\n    return true;\n  }\n  isInline() {\n    if (typeof this.mapOpts.inline !== \"undefined\") {\n      return this.mapOpts.inline;\n    }\n    let annotation = this.mapOpts.annotation;\n    if (typeof annotation !== \"undefined\" && annotation !== true) {\n      return false;\n    }\n    if (this.previous().length) {\n      return this.previous().some((i2) => i2.inline);\n    }\n    return true;\n  }\n  isMap() {\n    if (typeof this.opts.map !== \"undefined\") {\n      return !!this.opts.map;\n    }\n    return this.previous().length > 0;\n  }\n  isSourcesContent() {\n    if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n      return this.mapOpts.sourcesContent;\n    }\n    if (this.previous().length) {\n      return this.previous().some((i2) => i2.withContent());\n    }\n    return true;\n  }\n  outputFile() {\n    if (this.opts.to) {\n      return this.path(this.opts.to);\n    } else if (this.opts.from) {\n      return this.path(this.opts.from);\n    } else {\n      return \"to.css\";\n    }\n  }\n  path(file) {\n    if (this.mapOpts.absolute) return file;\n    if (file.charCodeAt(0) === 60) return file;\n    if (/^\\w+:\\/\\//.test(file)) return file;\n    let cached = this.memoizedPaths.get(file);\n    if (cached) return cached;\n    let from = this.opts.to ? dirname(this.opts.to) : \".\";\n    if (typeof this.mapOpts.annotation === \"string\") {\n      from = dirname(resolve(from, this.mapOpts.annotation));\n    }\n    let path = relative(from, file);\n    this.memoizedPaths.set(file, path);\n    return path;\n  }\n  previous() {\n    if (!this.previousMaps) {\n      this.previousMaps = [];\n      if (this.root) {\n        this.root.walk((node2) => {\n          if (node2.source && node2.source.input.map) {\n            let map = node2.source.input.map;\n            if (!this.previousMaps.includes(map)) {\n              this.previousMaps.push(map);\n            }\n          }\n        });\n      } else {\n        let input2 = new Input$3(this.originalCSS, this.opts);\n        if (input2.map) this.previousMaps.push(input2.map);\n      }\n    }\n    return this.previousMaps;\n  }\n  setSourcesContent() {\n    let already = {};\n    if (this.root) {\n      this.root.walk((node2) => {\n        if (node2.source) {\n          let from = node2.source.input.from;\n          if (from && !already[from]) {\n            already[from] = true;\n            let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n            this.map.setSourceContent(fromUrl, node2.source.input.css);\n          }\n        }\n      });\n    } else if (this.css) {\n      let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n      this.map.setSourceContent(from, this.css);\n    }\n  }\n  sourcePath(node2) {\n    if (this.mapOpts.from) {\n      return this.toUrl(this.mapOpts.from);\n    } else if (this.usesFileUrls) {\n      return this.toFileUrl(node2.source.input.from);\n    } else {\n      return this.toUrl(this.path(node2.source.input.from));\n    }\n  }\n  toBase64(str) {\n    if (Buffer) {\n      return Buffer.from(str).toString(\"base64\");\n    } else {\n      return window.btoa(unescape(encodeURIComponent(str)));\n    }\n  }\n  toFileUrl(path) {\n    let cached = this.memoizedFileURLs.get(path);\n    if (cached) return cached;\n    if (pathToFileURL) {\n      let fileURL = pathToFileURL(path).toString();\n      this.memoizedFileURLs.set(path, fileURL);\n      return fileURL;\n    } else {\n      throw new Error(\n        \"`map.absolute` option is not available in this PostCSS build\"\n      );\n    }\n  }\n  toUrl(path) {\n    let cached = this.memoizedURLs.get(path);\n    if (cached) return cached;\n    if (sep === \"\\\\\") {\n      path = path.replace(/\\\\/g, \"/\");\n    }\n    let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n    this.memoizedURLs.set(path, url);\n    return url;\n  }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"comment\";\n  }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n  return nodes.map((i2) => {\n    if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n    delete i2.source;\n    return i2;\n  });\n}\nfunction markDirtyUp(node2) {\n  node2[isClean$1] = false;\n  if (node2.proxyOf.nodes) {\n    for (let i2 of node2.proxyOf.nodes) {\n      markDirtyUp(i2);\n    }\n  }\n}\nlet Container$7 = class Container2 extends Node$1 {\n  append(...children) {\n    for (let child of children) {\n      let nodes = this.normalize(child, this.last);\n      for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n    }\n    this.markDirty();\n    return this;\n  }\n  cleanRaws(keepBetween) {\n    super.cleanRaws(keepBetween);\n    if (this.nodes) {\n      for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n    }\n  }\n  each(callback) {\n    if (!this.proxyOf.nodes) return void 0;\n    let iterator = this.getIterator();\n    let index2, result2;\n    while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n      index2 = this.indexes[iterator];\n      result2 = callback(this.proxyOf.nodes[index2], index2);\n      if (result2 === false) break;\n      this.indexes[iterator] += 1;\n    }\n    delete this.indexes[iterator];\n    return result2;\n  }\n  every(condition) {\n    return this.nodes.every(condition);\n  }\n  getIterator() {\n    if (!this.lastEach) this.lastEach = 0;\n    if (!this.indexes) this.indexes = {};\n    this.lastEach += 1;\n    let iterator = this.lastEach;\n    this.indexes[iterator] = 0;\n    return iterator;\n  }\n  getProxyProcessor() {\n    return {\n      get(node2, prop) {\n        if (prop === \"proxyOf\") {\n          return node2;\n        } else if (!node2[prop]) {\n          return node2[prop];\n        } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n          return (...args) => {\n            return node2[prop](\n              ...args.map((i2) => {\n                if (typeof i2 === \"function\") {\n                  return (child, index2) => i2(child.toProxy(), index2);\n                } else {\n                  return i2;\n                }\n              })\n            );\n          };\n        } else if (prop === \"every\" || prop === \"some\") {\n          return (cb) => {\n            return node2[prop](\n              (child, ...other) => cb(child.toProxy(), ...other)\n            );\n          };\n        } else if (prop === \"root\") {\n          return () => node2.root().toProxy();\n        } else if (prop === \"nodes\") {\n          return node2.nodes.map((i2) => i2.toProxy());\n        } else if (prop === \"first\" || prop === \"last\") {\n          return node2[prop].toProxy();\n        } else {\n          return node2[prop];\n        }\n      },\n      set(node2, prop, value) {\n        if (node2[prop] === value) return true;\n        node2[prop] = value;\n        if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n          node2.markDirty();\n        }\n        return true;\n      }\n    };\n  }\n  index(child) {\n    if (typeof child === \"number\") return child;\n    if (child.proxyOf) child = child.proxyOf;\n    return this.proxyOf.nodes.indexOf(child);\n  }\n  insertAfter(exist, add) {\n    let existIndex = this.index(exist);\n    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n    existIndex = this.index(exist);\n    for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n    let index2;\n    for (let id in this.indexes) {\n      index2 = this.indexes[id];\n      if (existIndex < index2) {\n        this.indexes[id] = index2 + nodes.length;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  insertBefore(exist, add) {\n    let existIndex = this.index(exist);\n    let type = existIndex === 0 ? \"prepend\" : false;\n    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n    existIndex = this.index(exist);\n    for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n    let index2;\n    for (let id in this.indexes) {\n      index2 = this.indexes[id];\n      if (existIndex <= index2) {\n        this.indexes[id] = index2 + nodes.length;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  normalize(nodes, sample) {\n    if (typeof nodes === \"string\") {\n      nodes = cleanSource(parse$4(nodes).nodes);\n    } else if (typeof nodes === \"undefined\") {\n      nodes = [];\n    } else if (Array.isArray(nodes)) {\n      nodes = nodes.slice(0);\n      for (let i2 of nodes) {\n        if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n      }\n    } else if (nodes.type === \"root\" && this.type !== \"document\") {\n      nodes = nodes.nodes.slice(0);\n      for (let i2 of nodes) {\n        if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n      }\n    } else if (nodes.type) {\n      nodes = [nodes];\n    } else if (nodes.prop) {\n      if (typeof nodes.value === \"undefined\") {\n        throw new Error(\"Value field is missed in node creation\");\n      } else if (typeof nodes.value !== \"string\") {\n        nodes.value = String(nodes.value);\n      }\n      nodes = [new Declaration$3(nodes)];\n    } else if (nodes.selector) {\n      nodes = [new Rule$4(nodes)];\n    } else if (nodes.name) {\n      nodes = [new AtRule$4(nodes)];\n    } else if (nodes.text) {\n      nodes = [new Comment$3(nodes)];\n    } else {\n      throw new Error(\"Unknown node type in node creation\");\n    }\n    let processed = nodes.map((i2) => {\n      if (!i2[my$1]) Container2.rebuild(i2);\n      i2 = i2.proxyOf;\n      if (i2.parent) i2.parent.removeChild(i2);\n      if (i2[isClean$1]) markDirtyUp(i2);\n      if (typeof i2.raws.before === \"undefined\") {\n        if (sample && typeof sample.raws.before !== \"undefined\") {\n          i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n        }\n      }\n      i2.parent = this.proxyOf;\n      return i2;\n    });\n    return processed;\n  }\n  prepend(...children) {\n    children = children.reverse();\n    for (let child of children) {\n      let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n      for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n      for (let id in this.indexes) {\n        this.indexes[id] = this.indexes[id] + nodes.length;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  push(child) {\n    child.parent = this;\n    this.proxyOf.nodes.push(child);\n    return this;\n  }\n  removeAll() {\n    for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n    this.proxyOf.nodes = [];\n    this.markDirty();\n    return this;\n  }\n  removeChild(child) {\n    child = this.index(child);\n    this.proxyOf.nodes[child].parent = void 0;\n    this.proxyOf.nodes.splice(child, 1);\n    let index2;\n    for (let id in this.indexes) {\n      index2 = this.indexes[id];\n      if (index2 >= child) {\n        this.indexes[id] = index2 - 1;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  replaceValues(pattern, opts, callback) {\n    if (!callback) {\n      callback = opts;\n      opts = {};\n    }\n    this.walkDecls((decl) => {\n      if (opts.props && !opts.props.includes(decl.prop)) return;\n      if (opts.fast && !decl.value.includes(opts.fast)) return;\n      decl.value = decl.value.replace(pattern, callback);\n    });\n    this.markDirty();\n    return this;\n  }\n  some(condition) {\n    return this.nodes.some(condition);\n  }\n  walk(callback) {\n    return this.each((child, i2) => {\n      let result2;\n      try {\n        result2 = callback(child, i2);\n      } catch (e2) {\n        throw child.addToError(e2);\n      }\n      if (result2 !== false && child.walk) {\n        result2 = child.walk(callback);\n      }\n      return result2;\n    });\n  }\n  walkAtRules(name, callback) {\n    if (!callback) {\n      callback = name;\n      return this.walk((child, i2) => {\n        if (child.type === \"atrule\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    if (name instanceof RegExp) {\n      return this.walk((child, i2) => {\n        if (child.type === \"atrule\" && name.test(child.name)) {\n          return callback(child, i2);\n        }\n      });\n    }\n    return this.walk((child, i2) => {\n      if (child.type === \"atrule\" && child.name === name) {\n        return callback(child, i2);\n      }\n    });\n  }\n  walkComments(callback) {\n    return this.walk((child, i2) => {\n      if (child.type === \"comment\") {\n        return callback(child, i2);\n      }\n    });\n  }\n  walkDecls(prop, callback) {\n    if (!callback) {\n      callback = prop;\n      return this.walk((child, i2) => {\n        if (child.type === \"decl\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    if (prop instanceof RegExp) {\n      return this.walk((child, i2) => {\n        if (child.type === \"decl\" && prop.test(child.prop)) {\n          return callback(child, i2);\n        }\n      });\n    }\n    return this.walk((child, i2) => {\n      if (child.type === \"decl\" && child.prop === prop) {\n        return callback(child, i2);\n      }\n    });\n  }\n  walkRules(selector, callback) {\n    if (!callback) {\n      callback = selector;\n      return this.walk((child, i2) => {\n        if (child.type === \"rule\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    if (selector instanceof RegExp) {\n      return this.walk((child, i2) => {\n        if (child.type === \"rule\" && selector.test(child.selector)) {\n          return callback(child, i2);\n        }\n      });\n    }\n    return this.walk((child, i2) => {\n      if (child.type === \"rule\" && child.selector === selector) {\n        return callback(child, i2);\n      }\n    });\n  }\n  get first() {\n    if (!this.proxyOf.nodes) return void 0;\n    return this.proxyOf.nodes[0];\n  }\n  get last() {\n    if (!this.proxyOf.nodes) return void 0;\n    return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n  }\n};\nContainer$7.registerParse = (dependant) => {\n  parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n  Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n  AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n  Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n  if (node2.type === \"atrule\") {\n    Object.setPrototypeOf(node2, AtRule$4.prototype);\n  } else if (node2.type === \"rule\") {\n    Object.setPrototypeOf(node2, Rule$4.prototype);\n  } else if (node2.type === \"decl\") {\n    Object.setPrototypeOf(node2, Declaration$3.prototype);\n  } else if (node2.type === \"comment\") {\n    Object.setPrototypeOf(node2, Comment$3.prototype);\n  } else if (node2.type === \"root\") {\n    Object.setPrototypeOf(node2, Root$6.prototype);\n  }\n  node2[my$1] = true;\n  if (node2.nodes) {\n    node2.nodes.forEach((child) => {\n      Container$7.rebuild(child);\n    });\n  }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n  constructor(defaults) {\n    super({ type: \"document\", ...defaults });\n    if (!this.nodes) {\n      this.nodes = [];\n    }\n  }\n  toResult(opts = {}) {\n    let lazy = new LazyResult$4(new Processor$3(), this, opts);\n    return lazy.stringify();\n  }\n};\nDocument$3.registerLazyResult = (dependant) => {\n  LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n  Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n  if (printed[message]) return;\n  printed[message] = true;\n  if (typeof console !== \"undefined\" && console.warn) {\n    console.warn(message);\n  }\n};\nlet Warning$2 = class Warning2 {\n  constructor(text, opts = {}) {\n    this.type = \"warning\";\n    this.text = text;\n    if (opts.node && opts.node.source) {\n      let range = opts.node.rangeBy(opts);\n      this.line = range.start.line;\n      this.column = range.start.column;\n      this.endLine = range.end.line;\n      this.endColumn = range.end.column;\n    }\n    for (let opt in opts) this[opt] = opts[opt];\n  }\n  toString() {\n    if (this.node) {\n      return this.node.error(this.text, {\n        index: this.index,\n        plugin: this.plugin,\n        word: this.word\n      }).message;\n    }\n    if (this.plugin) {\n      return this.plugin + \": \" + this.text;\n    }\n    return this.text;\n  }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n  constructor(processor2, root2, opts) {\n    this.processor = processor2;\n    this.messages = [];\n    this.root = root2;\n    this.opts = opts;\n    this.css = void 0;\n    this.map = void 0;\n  }\n  toString() {\n    return this.css;\n  }\n  warn(text, opts = {}) {\n    if (!opts.plugin) {\n      if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n        opts.plugin = this.lastPlugin.postcssPlugin;\n      }\n    }\n    let warning2 = new Warning$1(text, opts);\n    this.messages.push(warning2);\n    return warning2;\n  }\n  warnings() {\n    return this.messages.filter((i2) => i2.type === \"warning\");\n  }\n  get content() {\n    return this.css;\n  }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n  let css = input2.css.valueOf();\n  let ignore = options.ignoreErrors;\n  let code, next, quote, content, escape;\n  let escaped, escapePos, prev, n2, currentToken;\n  let length = css.length;\n  let pos = 0;\n  let buffer = [];\n  let returned = [];\n  function position() {\n    return pos;\n  }\n  function unclosed(what) {\n    throw input2.error(\"Unclosed \" + what, pos);\n  }\n  function endOfFile() {\n    return returned.length === 0 && pos >= length;\n  }\n  function nextToken(opts) {\n    if (returned.length) return returned.pop();\n    if (pos >= length) return;\n    let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n    code = css.charCodeAt(pos);\n    switch (code) {\n      case NEWLINE:\n      case SPACE:\n      case TAB:\n      case CR:\n      case FEED: {\n        next = pos;\n        do {\n          next += 1;\n          code = css.charCodeAt(next);\n        } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n        currentToken = [\"space\", css.slice(pos, next)];\n        pos = next - 1;\n        break;\n      }\n      case OPEN_SQUARE:\n      case CLOSE_SQUARE:\n      case OPEN_CURLY:\n      case CLOSE_CURLY:\n      case COLON:\n      case SEMICOLON:\n      case CLOSE_PARENTHESES: {\n        let controlChar = String.fromCharCode(code);\n        currentToken = [controlChar, controlChar, pos];\n        break;\n      }\n      case OPEN_PARENTHESES: {\n        prev = buffer.length ? buffer.pop()[1] : \"\";\n        n2 = css.charCodeAt(pos + 1);\n        if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n          next = pos;\n          do {\n            escaped = false;\n            next = css.indexOf(\")\", next + 1);\n            if (next === -1) {\n              if (ignore || ignoreUnclosed) {\n                next = pos;\n                break;\n              } else {\n                unclosed(\"bracket\");\n              }\n            }\n            escapePos = next;\n            while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n              escapePos -= 1;\n              escaped = !escaped;\n            }\n          } while (escaped);\n          currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n        } else {\n          next = css.indexOf(\")\", pos + 1);\n          content = css.slice(pos, next + 1);\n          if (next === -1 || RE_BAD_BRACKET.test(content)) {\n            currentToken = [\"(\", \"(\", pos];\n          } else {\n            currentToken = [\"brackets\", content, pos, next];\n            pos = next;\n          }\n        }\n        break;\n      }\n      case SINGLE_QUOTE:\n      case DOUBLE_QUOTE: {\n        quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n        next = pos;\n        do {\n          escaped = false;\n          next = css.indexOf(quote, next + 1);\n          if (next === -1) {\n            if (ignore || ignoreUnclosed) {\n              next = pos + 1;\n              break;\n            } else {\n              unclosed(\"string\");\n            }\n          }\n          escapePos = next;\n          while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n            escapePos -= 1;\n            escaped = !escaped;\n          }\n        } while (escaped);\n        currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n        pos = next;\n        break;\n      }\n      case AT: {\n        RE_AT_END.lastIndex = pos + 1;\n        RE_AT_END.test(css);\n        if (RE_AT_END.lastIndex === 0) {\n          next = css.length - 1;\n        } else {\n          next = RE_AT_END.lastIndex - 2;\n        }\n        currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n        pos = next;\n        break;\n      }\n      case BACKSLASH: {\n        next = pos;\n        escape = true;\n        while (css.charCodeAt(next + 1) === BACKSLASH) {\n          next += 1;\n          escape = !escape;\n        }\n        code = css.charCodeAt(next + 1);\n        if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n          next += 1;\n          if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n            while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n              next += 1;\n            }\n            if (css.charCodeAt(next + 1) === SPACE) {\n              next += 1;\n            }\n          }\n        }\n        currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n        pos = next;\n        break;\n      }\n      default: {\n        if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n          next = css.indexOf(\"*/\", pos + 2) + 1;\n          if (next === 0) {\n            if (ignore || ignoreUnclosed) {\n              next = css.length;\n            } else {\n              unclosed(\"comment\");\n            }\n          }\n          currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n        } else {\n          RE_WORD_END.lastIndex = pos + 1;\n          RE_WORD_END.test(css);\n          if (RE_WORD_END.lastIndex === 0) {\n            next = css.length - 1;\n          } else {\n            next = RE_WORD_END.lastIndex - 2;\n          }\n          currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n          buffer.push(currentToken);\n          pos = next;\n        }\n        break;\n      }\n    }\n    pos++;\n    return currentToken;\n  }\n  function back(token) {\n    returned.push(token);\n  }\n  return {\n    back,\n    endOfFile,\n    nextToken,\n    position\n  };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"atrule\";\n  }\n  append(...children) {\n    if (!this.proxyOf.nodes) this.nodes = [];\n    return super.append(...children);\n  }\n  prepend(...children) {\n    if (!this.proxyOf.nodes) this.nodes = [];\n    return super.prepend(...children);\n  }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"root\";\n    if (!this.nodes) this.nodes = [];\n  }\n  normalize(child, sample, type) {\n    let nodes = super.normalize(child);\n    if (sample) {\n      if (type === \"prepend\") {\n        if (this.nodes.length > 1) {\n          sample.raws.before = this.nodes[1].raws.before;\n        } else {\n          delete sample.raws.before;\n        }\n      } else if (this.first !== sample) {\n        for (let node2 of nodes) {\n          node2.raws.before = sample.raws.before;\n        }\n      }\n    }\n    return nodes;\n  }\n  removeChild(child, ignore) {\n    let index2 = this.index(child);\n    if (!ignore && index2 === 0 && this.nodes.length > 1) {\n      this.nodes[1].raws.before = this.nodes[index2].raws.before;\n    }\n    return super.removeChild(child);\n  }\n  toResult(opts = {}) {\n    let lazy = new LazyResult$3(new Processor$2(), this, opts);\n    return lazy.stringify();\n  }\n};\nRoot$5.registerLazyResult = (dependant) => {\n  LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n  Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n  comma(string) {\n    return list$2.split(string, [\",\"], true);\n  },\n  space(string) {\n    let spaces = [\" \", \"\\n\", \"\t\"];\n    return list$2.split(string, spaces);\n  },\n  split(string, separators, last) {\n    let array = [];\n    let current = \"\";\n    let split = false;\n    let func = 0;\n    let inQuote = false;\n    let prevQuote = \"\";\n    let escape = false;\n    for (let letter of string) {\n      if (escape) {\n        escape = false;\n      } else if (letter === \"\\\\\") {\n        escape = true;\n      } else if (inQuote) {\n        if (letter === prevQuote) {\n          inQuote = false;\n        }\n      } else if (letter === '\"' || letter === \"'\") {\n        inQuote = true;\n        prevQuote = letter;\n      } else if (letter === \"(\") {\n        func += 1;\n      } else if (letter === \")\") {\n        if (func > 0) func -= 1;\n      } else if (func === 0) {\n        if (separators.includes(letter)) split = true;\n      }\n      if (split) {\n        if (current !== \"\") array.push(current.trim());\n        current = \"\";\n        split = false;\n      } else {\n        current += letter;\n      }\n    }\n    if (last || current !== \"\") array.push(current.trim());\n    return array;\n  }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"rule\";\n    if (!this.nodes) this.nodes = [];\n  }\n  get selectors() {\n    return list$1.comma(this.selector);\n  }\n  set selectors(values) {\n    let match = this.selector ? this.selector.match(/,\\s*/) : null;\n    let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n    this.selector = values.join(sep2);\n  }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n  empty: true,\n  space: true\n};\nfunction findLastWithPosition(tokens) {\n  for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n    let token = tokens[i2];\n    let pos = token[3] || token[2];\n    if (pos) return pos;\n  }\n}\nlet Parser$1 = class Parser2 {\n  constructor(input2) {\n    this.input = input2;\n    this.root = new Root$4();\n    this.current = this.root;\n    this.spaces = \"\";\n    this.semicolon = false;\n    this.createTokenizer();\n    this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n  }\n  atrule(token) {\n    let node2 = new AtRule$2();\n    node2.name = token[1].slice(1);\n    if (node2.name === \"\") {\n      this.unnamedAtrule(node2, token);\n    }\n    this.init(node2, token[2]);\n    let type;\n    let prev;\n    let shift;\n    let last = false;\n    let open = false;\n    let params = [];\n    let brackets = [];\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken();\n      type = token[0];\n      if (type === \"(\" || type === \"[\") {\n        brackets.push(type === \"(\" ? \")\" : \"]\");\n      } else if (type === \"{\" && brackets.length > 0) {\n        brackets.push(\"}\");\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop();\n      }\n      if (brackets.length === 0) {\n        if (type === \";\") {\n          node2.source.end = this.getPosition(token[2]);\n          node2.source.end.offset++;\n          this.semicolon = true;\n          break;\n        } else if (type === \"{\") {\n          open = true;\n          break;\n        } else if (type === \"}\") {\n          if (params.length > 0) {\n            shift = params.length - 1;\n            prev = params[shift];\n            while (prev && prev[0] === \"space\") {\n              prev = params[--shift];\n            }\n            if (prev) {\n              node2.source.end = this.getPosition(prev[3] || prev[2]);\n              node2.source.end.offset++;\n            }\n          }\n          this.end(token);\n          break;\n        } else {\n          params.push(token);\n        }\n      } else {\n        params.push(token);\n      }\n      if (this.tokenizer.endOfFile()) {\n        last = true;\n        break;\n      }\n    }\n    node2.raws.between = this.spacesAndCommentsFromEnd(params);\n    if (params.length) {\n      node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n      this.raw(node2, \"params\", params);\n      if (last) {\n        token = params[params.length - 1];\n        node2.source.end = this.getPosition(token[3] || token[2]);\n        node2.source.end.offset++;\n        this.spaces = node2.raws.between;\n        node2.raws.between = \"\";\n      }\n    } else {\n      node2.raws.afterName = \"\";\n      node2.params = \"\";\n    }\n    if (open) {\n      node2.nodes = [];\n      this.current = node2;\n    }\n  }\n  checkMissedSemicolon(tokens) {\n    let colon = this.colon(tokens);\n    if (colon === false) return;\n    let founded = 0;\n    let token;\n    for (let j = colon - 1; j >= 0; j--) {\n      token = tokens[j];\n      if (token[0] !== \"space\") {\n        founded += 1;\n        if (founded === 2) break;\n      }\n    }\n    throw this.input.error(\n      \"Missed semicolon\",\n      token[0] === \"word\" ? token[3] + 1 : token[2]\n    );\n  }\n  colon(tokens) {\n    let brackets = 0;\n    let token, type, prev;\n    for (let [i2, element] of tokens.entries()) {\n      token = element;\n      type = token[0];\n      if (type === \"(\") {\n        brackets += 1;\n      }\n      if (type === \")\") {\n        brackets -= 1;\n      }\n      if (brackets === 0 && type === \":\") {\n        if (!prev) {\n          this.doubleColon(token);\n        } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n          continue;\n        } else {\n          return i2;\n        }\n      }\n      prev = token;\n    }\n    return false;\n  }\n  comment(token) {\n    let node2 = new Comment$2();\n    this.init(node2, token[2]);\n    node2.source.end = this.getPosition(token[3] || token[2]);\n    node2.source.end.offset++;\n    let text = token[1].slice(2, -2);\n    if (/^\\s*$/.test(text)) {\n      node2.text = \"\";\n      node2.raws.left = text;\n      node2.raws.right = \"\";\n    } else {\n      let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n      node2.text = match[2];\n      node2.raws.left = match[1];\n      node2.raws.right = match[3];\n    }\n  }\n  createTokenizer() {\n    this.tokenizer = tokenizer22(this.input);\n  }\n  decl(tokens, customProperty) {\n    let node2 = new Declaration$2();\n    this.init(node2, tokens[0][2]);\n    let last = tokens[tokens.length - 1];\n    if (last[0] === \";\") {\n      this.semicolon = true;\n      tokens.pop();\n    }\n    node2.source.end = this.getPosition(\n      last[3] || last[2] || findLastWithPosition(tokens)\n    );\n    node2.source.end.offset++;\n    while (tokens[0][0] !== \"word\") {\n      if (tokens.length === 1) this.unknownWord(tokens);\n      node2.raws.before += tokens.shift()[1];\n    }\n    node2.source.start = this.getPosition(tokens[0][2]);\n    node2.prop = \"\";\n    while (tokens.length) {\n      let type = tokens[0][0];\n      if (type === \":\" || type === \"space\" || type === \"comment\") {\n        break;\n      }\n      node2.prop += tokens.shift()[1];\n    }\n    node2.raws.between = \"\";\n    let token;\n    while (tokens.length) {\n      token = tokens.shift();\n      if (token[0] === \":\") {\n        node2.raws.between += token[1];\n        break;\n      } else {\n        if (token[0] === \"word\" && /\\w/.test(token[1])) {\n          this.unknownWord([token]);\n        }\n        node2.raws.between += token[1];\n      }\n    }\n    if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n      node2.raws.before += node2.prop[0];\n      node2.prop = node2.prop.slice(1);\n    }\n    let firstSpaces = [];\n    let next;\n    while (tokens.length) {\n      next = tokens[0][0];\n      if (next !== \"space\" && next !== \"comment\") break;\n      firstSpaces.push(tokens.shift());\n    }\n    this.precheckMissedSemicolon(tokens);\n    for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n      token = tokens[i2];\n      if (token[1].toLowerCase() === \"!important\") {\n        node2.important = true;\n        let string = this.stringFrom(tokens, i2);\n        string = this.spacesFromEnd(tokens) + string;\n        if (string !== \" !important\") node2.raws.important = string;\n        break;\n      } else if (token[1].toLowerCase() === \"important\") {\n        let cache = tokens.slice(0);\n        let str = \"\";\n        for (let j = i2; j > 0; j--) {\n          let type = cache[j][0];\n          if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n            break;\n          }\n          str = cache.pop()[1] + str;\n        }\n        if (str.trim().indexOf(\"!\") === 0) {\n          node2.important = true;\n          node2.raws.important = str;\n          tokens = cache;\n        }\n      }\n      if (token[0] !== \"space\" && token[0] !== \"comment\") {\n        break;\n      }\n    }\n    let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n    if (hasWord) {\n      node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n      firstSpaces = [];\n    }\n    this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n    if (node2.value.includes(\":\") && !customProperty) {\n      this.checkMissedSemicolon(tokens);\n    }\n  }\n  doubleColon(token) {\n    throw this.input.error(\n      \"Double colon\",\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    );\n  }\n  emptyRule(token) {\n    let node2 = new Rule$2();\n    this.init(node2, token[2]);\n    node2.selector = \"\";\n    node2.raws.between = \"\";\n    this.current = node2;\n  }\n  end(token) {\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon;\n    }\n    this.semicolon = false;\n    this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n    this.spaces = \"\";\n    if (this.current.parent) {\n      this.current.source.end = this.getPosition(token[2]);\n      this.current.source.end.offset++;\n      this.current = this.current.parent;\n    } else {\n      this.unexpectedClose(token);\n    }\n  }\n  endFile() {\n    if (this.current.parent) this.unclosedBlock();\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon;\n    }\n    this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n    this.root.source.end = this.getPosition(this.tokenizer.position());\n  }\n  freeSemicolon(token) {\n    this.spaces += token[1];\n    if (this.current.nodes) {\n      let prev = this.current.nodes[this.current.nodes.length - 1];\n      if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n        prev.raws.ownSemicolon = this.spaces;\n        this.spaces = \"\";\n      }\n    }\n  }\n  // Helpers\n  getPosition(offset) {\n    let pos = this.input.fromOffset(offset);\n    return {\n      column: pos.col,\n      line: pos.line,\n      offset\n    };\n  }\n  init(node2, offset) {\n    this.current.push(node2);\n    node2.source = {\n      input: this.input,\n      start: this.getPosition(offset)\n    };\n    node2.raws.before = this.spaces;\n    this.spaces = \"\";\n    if (node2.type !== \"comment\") this.semicolon = false;\n  }\n  other(start) {\n    let end = false;\n    let type = null;\n    let colon = false;\n    let bracket = null;\n    let brackets = [];\n    let customProperty = start[1].startsWith(\"--\");\n    let tokens = [];\n    let token = start;\n    while (token) {\n      type = token[0];\n      tokens.push(token);\n      if (type === \"(\" || type === \"[\") {\n        if (!bracket) bracket = token;\n        brackets.push(type === \"(\" ? \")\" : \"]\");\n      } else if (customProperty && colon && type === \"{\") {\n        if (!bracket) bracket = token;\n        brackets.push(\"}\");\n      } else if (brackets.length === 0) {\n        if (type === \";\") {\n          if (colon) {\n            this.decl(tokens, customProperty);\n            return;\n          } else {\n            break;\n          }\n        } else if (type === \"{\") {\n          this.rule(tokens);\n          return;\n        } else if (type === \"}\") {\n          this.tokenizer.back(tokens.pop());\n          end = true;\n          break;\n        } else if (type === \":\") {\n          colon = true;\n        }\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop();\n        if (brackets.length === 0) bracket = null;\n      }\n      token = this.tokenizer.nextToken();\n    }\n    if (this.tokenizer.endOfFile()) end = true;\n    if (brackets.length > 0) this.unclosedBracket(bracket);\n    if (end && colon) {\n      if (!customProperty) {\n        while (tokens.length) {\n          token = tokens[tokens.length - 1][0];\n          if (token !== \"space\" && token !== \"comment\") break;\n          this.tokenizer.back(tokens.pop());\n        }\n      }\n      this.decl(tokens, customProperty);\n    } else {\n      this.unknownWord(tokens);\n    }\n  }\n  parse() {\n    let token;\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken();\n      switch (token[0]) {\n        case \"space\":\n          this.spaces += token[1];\n          break;\n        case \";\":\n          this.freeSemicolon(token);\n          break;\n        case \"}\":\n          this.end(token);\n          break;\n        case \"comment\":\n          this.comment(token);\n          break;\n        case \"at-word\":\n          this.atrule(token);\n          break;\n        case \"{\":\n          this.emptyRule(token);\n          break;\n        default:\n          this.other(token);\n          break;\n      }\n    }\n    this.endFile();\n  }\n  precheckMissedSemicolon() {\n  }\n  raw(node2, prop, tokens, customProperty) {\n    let token, type;\n    let length = tokens.length;\n    let value = \"\";\n    let clean = true;\n    let next, prev;\n    for (let i2 = 0; i2 < length; i2 += 1) {\n      token = tokens[i2];\n      type = token[0];\n      if (type === \"space\" && i2 === length - 1 && !customProperty) {\n        clean = false;\n      } else if (type === \"comment\") {\n        prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n        next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n        if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n          if (value.slice(-1) === \",\") {\n            clean = false;\n          } else {\n            value += token[1];\n          }\n        } else {\n          clean = false;\n        }\n      } else {\n        value += token[1];\n      }\n    }\n    if (!clean) {\n      let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n      node2.raws[prop] = { raw, value };\n    }\n    node2[prop] = value;\n  }\n  rule(tokens) {\n    tokens.pop();\n    let node2 = new Rule$2();\n    this.init(node2, tokens[0][2]);\n    node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n    this.raw(node2, \"selector\", tokens);\n    this.current = node2;\n  }\n  spacesAndCommentsFromEnd(tokens) {\n    let lastTokenType;\n    let spaces = \"\";\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0];\n      if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n      spaces = tokens.pop()[1] + spaces;\n    }\n    return spaces;\n  }\n  // Errors\n  spacesAndCommentsFromStart(tokens) {\n    let next;\n    let spaces = \"\";\n    while (tokens.length) {\n      next = tokens[0][0];\n      if (next !== \"space\" && next !== \"comment\") break;\n      spaces += tokens.shift()[1];\n    }\n    return spaces;\n  }\n  spacesFromEnd(tokens) {\n    let lastTokenType;\n    let spaces = \"\";\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0];\n      if (lastTokenType !== \"space\") break;\n      spaces = tokens.pop()[1] + spaces;\n    }\n    return spaces;\n  }\n  stringFrom(tokens, from) {\n    let result2 = \"\";\n    for (let i2 = from; i2 < tokens.length; i2++) {\n      result2 += tokens[i2][1];\n    }\n    tokens.splice(from, tokens.length - from);\n    return result2;\n  }\n  unclosedBlock() {\n    let pos = this.current.source.start;\n    throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n  }\n  unclosedBracket(bracket) {\n    throw this.input.error(\n      \"Unclosed bracket\",\n      { offset: bracket[2] },\n      { offset: bracket[2] + 1 }\n    );\n  }\n  unexpectedClose(token) {\n    throw this.input.error(\n      \"Unexpected }\",\n      { offset: token[2] },\n      { offset: token[2] + 1 }\n    );\n  }\n  unknownWord(tokens) {\n    throw this.input.error(\n      \"Unknown word\",\n      { offset: tokens[0][2] },\n      { offset: tokens[0][2] + tokens[0][1].length }\n    );\n  }\n  unnamedAtrule(node2, token) {\n    throw this.input.error(\n      \"At-rule without name\",\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    );\n  }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n  let input2 = new Input$2(css, opts);\n  let parser2 = new Parser22(input2);\n  try {\n    parser2.parse();\n  } catch (e2) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n        if (/\\.scss$/i.test(opts.from)) {\n          e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n        } else if (/\\.sass/i.test(opts.from)) {\n          e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n        } else if (/\\.less$/i.test(opts.from)) {\n          e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n        }\n      }\n    }\n    throw e2;\n  }\n  return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n  atrule: \"AtRule\",\n  comment: \"Comment\",\n  decl: \"Declaration\",\n  document: \"Document\",\n  root: \"Root\",\n  rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n  AtRule: true,\n  AtRuleExit: true,\n  Comment: true,\n  CommentExit: true,\n  Declaration: true,\n  DeclarationExit: true,\n  Document: true,\n  DocumentExit: true,\n  Once: true,\n  OnceExit: true,\n  postcssPlugin: true,\n  prepare: true,\n  Root: true,\n  RootExit: true,\n  Rule: true,\n  RuleExit: true\n};\nconst NOT_VISITORS = {\n  Once: true,\n  postcssPlugin: true,\n  prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n  return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n  let key = false;\n  let type = TYPE_TO_CLASS_NAME[node2.type];\n  if (node2.type === \"decl\") {\n    key = node2.prop.toLowerCase();\n  } else if (node2.type === \"atrule\") {\n    key = node2.name.toLowerCase();\n  }\n  if (key && node2.append) {\n    return [\n      type,\n      type + \"-\" + key,\n      CHILDREN,\n      type + \"Exit\",\n      type + \"Exit-\" + key\n    ];\n  } else if (key) {\n    return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n  } else if (node2.append) {\n    return [type, CHILDREN, type + \"Exit\"];\n  } else {\n    return [type, type + \"Exit\"];\n  }\n}\nfunction toStack(node2) {\n  let events;\n  if (node2.type === \"document\") {\n    events = [\"Document\", CHILDREN, \"DocumentExit\"];\n  } else if (node2.type === \"root\") {\n    events = [\"Root\", CHILDREN, \"RootExit\"];\n  } else {\n    events = getEvents(node2);\n  }\n  return {\n    eventIndex: 0,\n    events,\n    iterator: 0,\n    node: node2,\n    visitorIndex: 0,\n    visitors: []\n  };\n}\nfunction cleanMarks(node2) {\n  node2[isClean] = false;\n  if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n  return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n  constructor(processor2, css, opts) {\n    this.stringified = false;\n    this.processed = false;\n    let root2;\n    if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n      root2 = cleanMarks(css);\n    } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n      root2 = cleanMarks(css.root);\n      if (css.map) {\n        if (typeof opts.map === \"undefined\") opts.map = {};\n        if (!opts.map.inline) opts.map.inline = false;\n        opts.map.prev = css.map;\n      }\n    } else {\n      let parser2 = parse$2;\n      if (opts.syntax) parser2 = opts.syntax.parse;\n      if (opts.parser) parser2 = opts.parser;\n      if (parser2.parse) parser2 = parser2.parse;\n      try {\n        root2 = parser2(css, opts);\n      } catch (error) {\n        this.processed = true;\n        this.error = error;\n      }\n      if (root2 && !root2[my]) {\n        Container$1.rebuild(root2);\n      }\n    }\n    this.result = new Result$2(processor2, root2, opts);\n    this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n    this.plugins = this.processor.plugins.map((plugin22) => {\n      if (typeof plugin22 === \"object\" && plugin22.prepare) {\n        return { ...plugin22, ...plugin22.prepare(this.result) };\n      } else {\n        return plugin22;\n      }\n    });\n  }\n  async() {\n    if (this.error) return Promise.reject(this.error);\n    if (this.processed) return Promise.resolve(this.result);\n    if (!this.processing) {\n      this.processing = this.runAsync();\n    }\n    return this.processing;\n  }\n  catch(onRejected) {\n    return this.async().catch(onRejected);\n  }\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally);\n  }\n  getAsyncError() {\n    throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n  }\n  handleError(error, node2) {\n    let plugin22 = this.result.lastPlugin;\n    try {\n      if (node2) node2.addToError(error);\n      this.error = error;\n      if (error.name === \"CssSyntaxError\" && !error.plugin) {\n        error.plugin = plugin22.postcssPlugin;\n        error.setMessage();\n      } else if (plugin22.postcssVersion) {\n        if (process.env.NODE_ENV !== \"production\") {\n          let pluginName = plugin22.postcssPlugin;\n          let pluginVer = plugin22.postcssVersion;\n          let runtimeVer = this.result.processor.version;\n          let a2 = pluginVer.split(\".\");\n          let b = runtimeVer.split(\".\");\n          if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n            console.error(\n              \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n            );\n          }\n        }\n      }\n    } catch (err) {\n      if (console && console.error) console.error(err);\n    }\n    return error;\n  }\n  prepareVisitors() {\n    this.listeners = {};\n    let add = (plugin22, type, cb) => {\n      if (!this.listeners[type]) this.listeners[type] = [];\n      this.listeners[type].push([plugin22, cb]);\n    };\n    for (let plugin22 of this.plugins) {\n      if (typeof plugin22 === \"object\") {\n        for (let event in plugin22) {\n          if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n            throw new Error(\n              `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n            );\n          }\n          if (!NOT_VISITORS[event]) {\n            if (typeof plugin22[event] === \"object\") {\n              for (let filter in plugin22[event]) {\n                if (filter === \"*\") {\n                  add(plugin22, event, plugin22[event][filter]);\n                } else {\n                  add(\n                    plugin22,\n                    event + \"-\" + filter.toLowerCase(),\n                    plugin22[event][filter]\n                  );\n                }\n              }\n            } else if (typeof plugin22[event] === \"function\") {\n              add(plugin22, event, plugin22[event]);\n            }\n          }\n        }\n      }\n    }\n    this.hasListener = Object.keys(this.listeners).length > 0;\n  }\n  async runAsync() {\n    this.plugin = 0;\n    for (let i2 = 0; i2 < this.plugins.length; i2++) {\n      let plugin22 = this.plugins[i2];\n      let promise = this.runOnRoot(plugin22);\n      if (isPromise(promise)) {\n        try {\n          await promise;\n        } catch (error) {\n          throw this.handleError(error);\n        }\n      }\n    }\n    this.prepareVisitors();\n    if (this.hasListener) {\n      let root2 = this.result.root;\n      while (!root2[isClean]) {\n        root2[isClean] = true;\n        let stack = [toStack(root2)];\n        while (stack.length > 0) {\n          let promise = this.visitTick(stack);\n          if (isPromise(promise)) {\n            try {\n              await promise;\n            } catch (e2) {\n              let node2 = stack[stack.length - 1].node;\n              throw this.handleError(e2, node2);\n            }\n          }\n        }\n      }\n      if (this.listeners.OnceExit) {\n        for (let [plugin22, visitor] of this.listeners.OnceExit) {\n          this.result.lastPlugin = plugin22;\n          try {\n            if (root2.type === \"document\") {\n              let roots = root2.nodes.map(\n                (subRoot) => visitor(subRoot, this.helpers)\n              );\n              await Promise.all(roots);\n            } else {\n              await visitor(root2, this.helpers);\n            }\n          } catch (e2) {\n            throw this.handleError(e2);\n          }\n        }\n      }\n    }\n    this.processed = true;\n    return this.stringify();\n  }\n  runOnRoot(plugin22) {\n    this.result.lastPlugin = plugin22;\n    try {\n      if (typeof plugin22 === \"object\" && plugin22.Once) {\n        if (this.result.root.type === \"document\") {\n          let roots = this.result.root.nodes.map(\n            (root2) => plugin22.Once(root2, this.helpers)\n          );\n          if (isPromise(roots[0])) {\n            return Promise.all(roots);\n          }\n          return roots;\n        }\n        return plugin22.Once(this.result.root, this.helpers);\n      } else if (typeof plugin22 === \"function\") {\n        return plugin22(this.result.root, this.result);\n      }\n    } catch (error) {\n      throw this.handleError(error);\n    }\n  }\n  stringify() {\n    if (this.error) throw this.error;\n    if (this.stringified) return this.result;\n    this.stringified = true;\n    this.sync();\n    let opts = this.result.opts;\n    let str = stringify$2;\n    if (opts.syntax) str = opts.syntax.stringify;\n    if (opts.stringifier) str = opts.stringifier;\n    if (str.stringify) str = str.stringify;\n    let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n    let data = map.generate();\n    this.result.css = data[0];\n    this.result.map = data[1];\n    return this.result;\n  }\n  sync() {\n    if (this.error) throw this.error;\n    if (this.processed) return this.result;\n    this.processed = true;\n    if (this.processing) {\n      throw this.getAsyncError();\n    }\n    for (let plugin22 of this.plugins) {\n      let promise = this.runOnRoot(plugin22);\n      if (isPromise(promise)) {\n        throw this.getAsyncError();\n      }\n    }\n    this.prepareVisitors();\n    if (this.hasListener) {\n      let root2 = this.result.root;\n      while (!root2[isClean]) {\n        root2[isClean] = true;\n        this.walkSync(root2);\n      }\n      if (this.listeners.OnceExit) {\n        if (root2.type === \"document\") {\n          for (let subRoot of root2.nodes) {\n            this.visitSync(this.listeners.OnceExit, subRoot);\n          }\n        } else {\n          this.visitSync(this.listeners.OnceExit, root2);\n        }\n      }\n    }\n    return this.result;\n  }\n  then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!(\"from\" in this.opts)) {\n        warnOnce$1(\n          \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n        );\n      }\n    }\n    return this.async().then(onFulfilled, onRejected);\n  }\n  toString() {\n    return this.css;\n  }\n  visitSync(visitors, node2) {\n    for (let [plugin22, visitor] of visitors) {\n      this.result.lastPlugin = plugin22;\n      let promise;\n      try {\n        promise = visitor(node2, this.helpers);\n      } catch (e2) {\n        throw this.handleError(e2, node2.proxyOf);\n      }\n      if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n        return true;\n      }\n      if (isPromise(promise)) {\n        throw this.getAsyncError();\n      }\n    }\n  }\n  visitTick(stack) {\n    let visit2 = stack[stack.length - 1];\n    let { node: node2, visitors } = visit2;\n    if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n      stack.pop();\n      return;\n    }\n    if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n      let [plugin22, visitor] = visitors[visit2.visitorIndex];\n      visit2.visitorIndex += 1;\n      if (visit2.visitorIndex === visitors.length) {\n        visit2.visitors = [];\n        visit2.visitorIndex = 0;\n      }\n      this.result.lastPlugin = plugin22;\n      try {\n        return visitor(node2.toProxy(), this.helpers);\n      } catch (e2) {\n        throw this.handleError(e2, node2);\n      }\n    }\n    if (visit2.iterator !== 0) {\n      let iterator = visit2.iterator;\n      let child;\n      while (child = node2.nodes[node2.indexes[iterator]]) {\n        node2.indexes[iterator] += 1;\n        if (!child[isClean]) {\n          child[isClean] = true;\n          stack.push(toStack(child));\n          return;\n        }\n      }\n      visit2.iterator = 0;\n      delete node2.indexes[iterator];\n    }\n    let events = visit2.events;\n    while (visit2.eventIndex < events.length) {\n      let event = events[visit2.eventIndex];\n      visit2.eventIndex += 1;\n      if (event === CHILDREN) {\n        if (node2.nodes && node2.nodes.length) {\n          node2[isClean] = true;\n          visit2.iterator = node2.getIterator();\n        }\n        return;\n      } else if (this.listeners[event]) {\n        visit2.visitors = this.listeners[event];\n        return;\n      }\n    }\n    stack.pop();\n  }\n  walkSync(node2) {\n    node2[isClean] = true;\n    let events = getEvents(node2);\n    for (let event of events) {\n      if (event === CHILDREN) {\n        if (node2.nodes) {\n          node2.each((child) => {\n            if (!child[isClean]) this.walkSync(child);\n          });\n        }\n      } else {\n        let visitors = this.listeners[event];\n        if (visitors) {\n          if (this.visitSync(visitors, node2.toProxy())) return;\n        }\n      }\n    }\n  }\n  warnings() {\n    return this.sync().warnings();\n  }\n  get content() {\n    return this.stringify().content;\n  }\n  get css() {\n    return this.stringify().css;\n  }\n  get map() {\n    return this.stringify().map;\n  }\n  get messages() {\n    return this.sync().messages;\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    return this.sync().root;\n  }\n  get [Symbol.toStringTag]() {\n    return \"LazyResult\";\n  }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n  postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n  constructor(processor2, css, opts) {\n    css = css.toString();\n    this.stringified = false;\n    this._processor = processor2;\n    this._css = css;\n    this._opts = opts;\n    this._map = void 0;\n    let root2;\n    let str = stringify$1;\n    this.result = new Result$1(this._processor, root2, this._opts);\n    this.result.css = css;\n    let self = this;\n    Object.defineProperty(this.result, \"root\", {\n      get() {\n        return self.root;\n      }\n    });\n    let map = new MapGenerator22(str, root2, this._opts, css);\n    if (map.isMap()) {\n      let [generatedCSS, generatedMap] = map.generate();\n      if (generatedCSS) {\n        this.result.css = generatedCSS;\n      }\n      if (generatedMap) {\n        this.result.map = generatedMap;\n      }\n    } else {\n      map.clearAnnotation();\n      this.result.css = map.css;\n    }\n  }\n  async() {\n    if (this.error) return Promise.reject(this.error);\n    return Promise.resolve(this.result);\n  }\n  catch(onRejected) {\n    return this.async().catch(onRejected);\n  }\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally);\n  }\n  sync() {\n    if (this.error) throw this.error;\n    return this.result;\n  }\n  then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!(\"from\" in this._opts)) {\n        warnOnce22(\n          \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n        );\n      }\n    }\n    return this.async().then(onFulfilled, onRejected);\n  }\n  toString() {\n    return this._css;\n  }\n  warnings() {\n    return [];\n  }\n  get content() {\n    return this.result.css;\n  }\n  get css() {\n    return this.result.css;\n  }\n  get map() {\n    return this.result.map;\n  }\n  get messages() {\n    return [];\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    if (this._root) {\n      return this._root;\n    }\n    let root2;\n    let parser2 = parse$1;\n    try {\n      root2 = parser2(this._css, this._opts);\n    } catch (error) {\n      this.error = error;\n    }\n    if (this.error) {\n      throw this.error;\n    } else {\n      this._root = root2;\n      return root2;\n    }\n  }\n  get [Symbol.toStringTag]() {\n    return \"NoWorkResult\";\n  }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n  constructor(plugins = []) {\n    this.version = \"8.4.38\";\n    this.plugins = this.normalize(plugins);\n  }\n  normalize(plugins) {\n    let normalized = [];\n    for (let i2 of plugins) {\n      if (i2.postcss === true) {\n        i2 = i2();\n      } else if (i2.postcss) {\n        i2 = i2.postcss;\n      }\n      if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n        normalized = normalized.concat(i2.plugins);\n      } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n        normalized.push(i2);\n      } else if (typeof i2 === \"function\") {\n        normalized.push(i2);\n      } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n        if (process.env.NODE_ENV !== \"production\") {\n          throw new Error(\n            \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n          );\n        }\n      } else {\n        throw new Error(i2 + \" is not a PostCSS plugin\");\n      }\n    }\n    return normalized;\n  }\n  process(css, opts = {}) {\n    if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n      return new NoWorkResult22(this, css, opts);\n    } else {\n      return new LazyResult$1(this, css, opts);\n    }\n  }\n  use(plugin22) {\n    this.plugins = this.plugins.concat(this.normalize([plugin22]));\n    return this;\n  }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n  if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n  let { inputs: ownInputs, ...defaults } = json;\n  if (ownInputs) {\n    inputs = [];\n    for (let input2 of ownInputs) {\n      let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n      if (inputHydrated.map) {\n        inputHydrated.map = {\n          ...inputHydrated.map,\n          __proto__: PreviousMap22.prototype\n        };\n      }\n      inputs.push(inputHydrated);\n    }\n  }\n  if (defaults.nodes) {\n    defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n  }\n  if (defaults.source) {\n    let { inputId, ...source } = defaults.source;\n    defaults.source = source;\n    if (inputId != null) {\n      defaults.source.input = inputs[inputId];\n    }\n  }\n  if (defaults.type === \"root\") {\n    return new Root$1(defaults);\n  } else if (defaults.type === \"decl\") {\n    return new Declaration$1(defaults);\n  } else if (defaults.type === \"rule\") {\n    return new Rule$1(defaults);\n  } else if (defaults.type === \"comment\") {\n    return new Comment$1(defaults);\n  } else if (defaults.type === \"atrule\") {\n    return new AtRule$1(defaults);\n  } else {\n    throw new Error(\"Unknown node type: \" + json.type);\n  }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n  if (plugins.length === 1 && Array.isArray(plugins[0])) {\n    plugins = plugins[0];\n  }\n  return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n  let warningPrinted = false;\n  function creator(...args) {\n    if (console && console.warn && !warningPrinted) {\n      warningPrinted = true;\n      console.warn(\n        name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n      );\n      if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n        console.warn(\n          name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n        );\n      }\n    }\n    let transformer = initializer(...args);\n    transformer.postcssPlugin = name;\n    transformer.postcssVersion = new Processor22().version;\n    return transformer;\n  }\n  let cache;\n  Object.defineProperty(creator, \"postcss\", {\n    get() {\n      if (!cache) cache = creator();\n      return cache;\n    }\n  });\n  creator.process = function(css, processOpts, pluginOpts) {\n    return postcss([creator(pluginOpts)]).process(css, processOpts);\n  };\n  return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n  constructor(..._args) {\n    __publicField2(this, \"parentElement\", null);\n    __publicField2(this, \"parentNode\", null);\n    __publicField2(this, \"ownerDocument\");\n    __publicField2(this, \"firstChild\", null);\n    __publicField2(this, \"lastChild\", null);\n    __publicField2(this, \"previousSibling\", null);\n    __publicField2(this, \"nextSibling\", null);\n    __publicField2(this, \"ELEMENT_NODE\", 1);\n    __publicField2(this, \"TEXT_NODE\", 3);\n    __publicField2(this, \"nodeType\");\n    __publicField2(this, \"nodeName\");\n    __publicField2(this, \"RRNodeType\");\n  }\n  get childNodes() {\n    const childNodes2 = [];\n    let childIterator = this.firstChild;\n    while (childIterator) {\n      childNodes2.push(childIterator);\n      childIterator = childIterator.nextSibling;\n    }\n    return childNodes2;\n  }\n  contains(node2) {\n    if (!(node2 instanceof BaseRRNode)) return false;\n    else if (node2.ownerDocument !== this.ownerDocument) return false;\n    else if (node2 === this) return true;\n    while (node2.parentNode) {\n      if (node2.parentNode === this) return true;\n      node2 = node2.parentNode;\n    }\n    return false;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  appendChild(_newChild) {\n    throw new Error(\n      `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n    );\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  insertBefore(_newChild, _refChild) {\n    throw new Error(\n      `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n    );\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  removeChild(_node) {\n    throw new Error(\n      `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n    );\n  }\n  toString() {\n    return \"RRNode\";\n  }\n}\nconst testableAccessors = {\n  Node: [\n    \"childNodes\",\n    \"parentNode\",\n    \"parentElement\",\n    \"textContent\",\n    \"ownerDocument\"\n  ],\n  ShadowRoot: [\"host\", \"styleSheets\"],\n  Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n  MutationObserver: []\n};\nconst testableMethods = {\n  Node: [\"contains\", \"getRootNode\"],\n  ShadowRoot: [\"getSelection\"],\n  Element: [],\n  MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n  return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n  if (untaintedBasePrototype[key])\n    return untaintedBasePrototype[key];\n  const defaultObj = globalThis[key];\n  const defaultPrototype = defaultObj.prototype;\n  const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n  const isUntaintedAccessors = Boolean(\n    accessorNames && // @ts-expect-error 2345\n    accessorNames.every(\n      (accessor) => {\n        var _a2, _b;\n        return Boolean(\n          (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n        );\n      }\n    )\n  );\n  const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n  const isUntaintedMethods = Boolean(\n    methodNames && methodNames.every(\n      // @ts-expect-error 2345\n      (method) => {\n        var _a2;\n        return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n      }\n    )\n  );\n  if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n    untaintedBasePrototype[key] = defaultObj.prototype;\n    return defaultObj.prototype;\n  }\n  try {\n    const iframeEl = document.createElement(\"iframe\");\n    document.body.appendChild(iframeEl);\n    const win = iframeEl.contentWindow;\n    if (!win) return defaultObj.prototype;\n    const untaintedObject = win[key].prototype;\n    document.body.removeChild(iframeEl);\n    if (!untaintedObject) return defaultPrototype;\n    return untaintedBasePrototype[key] = untaintedObject;\n  } catch {\n    return defaultPrototype;\n  }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n  var _a2;\n  const cacheKey = `${key}.${String(accessor)}`;\n  if (untaintedAccessorCache[cacheKey])\n    return untaintedAccessorCache[cacheKey].call(\n      instance\n    );\n  const untaintedPrototype = getUntaintedPrototype(key);\n  const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n    untaintedPrototype,\n    accessor\n  )) == null ? void 0 : _a2.get;\n  if (!untaintedAccessor) return instance[accessor];\n  untaintedAccessorCache[cacheKey] = untaintedAccessor;\n  return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n  const cacheKey = `${key}.${String(method)}`;\n  if (untaintedMethodCache[cacheKey])\n    return untaintedMethodCache[cacheKey].bind(\n      instance\n    );\n  const untaintedPrototype = getUntaintedPrototype(key);\n  const untaintedMethod = untaintedPrototype[method];\n  if (typeof untaintedMethod !== \"function\") return instance[method];\n  untaintedMethodCache[cacheKey] = untaintedMethod;\n  return untaintedMethod.bind(instance);\n}\nfunction ownerDocument(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"ownerDocument\");\n}\nfunction childNodes(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n  return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n  return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n  if (!n2 || !(\"host\" in n2)) return null;\n  return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n  return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n  if (!n2 || !(\"shadowRoot\" in n2)) return null;\n  return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n  return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n  return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n  return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nfunction patch(source, name, replacement) {\n  try {\n    if (!(name in source)) {\n      return () => {\n      };\n    }\n    const original = source[name];\n    const wrapped = replacement(original);\n    if (typeof wrapped === \"function\") {\n      wrapped.prototype = wrapped.prototype || {};\n      Object.defineProperties(wrapped, {\n        __rrweb_original__: {\n          enumerable: false,\n          value: original\n        }\n      });\n    }\n    source[name] = wrapped;\n    return () => {\n      source[name] = original;\n    };\n  } catch {\n    return () => {\n    };\n  }\n}\nconst index = {\n  ownerDocument,\n  childNodes,\n  parentNode,\n  parentElement,\n  textContent,\n  contains,\n  getRootNode,\n  host,\n  styleSheets,\n  shadowRoot,\n  querySelector,\n  querySelectorAll,\n  mutationObserver: mutationObserverCtor,\n  patch\n};\nfunction on(type, fn, target = document) {\n  const options = { capture: true, passive: true };\n  target.addEventListener(type, fn, options);\n  return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n  map: {},\n  getId() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return -1;\n  },\n  getNode() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return null;\n  },\n  removeNodeFromMap() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n  },\n  has() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return false;\n  },\n  reset() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n  }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n  _mirror = new Proxy(_mirror, {\n    get(target, prop, receiver) {\n      if (prop === \"map\") {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n      }\n      return Reflect.get(target, prop, receiver);\n    }\n  });\n}\nfunction throttle(func, wait, options = {}) {\n  let timeout = null;\n  let previous = 0;\n  return function(...args) {\n    const now = Date.now();\n    if (!previous && options.leading === false) {\n      previous = now;\n    }\n    const remaining = wait - (now - previous);\n    const context = this;\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      previous = now;\n      func.apply(context, args);\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(() => {\n        previous = options.leading === false ? 0 : Date.now();\n        timeout = null;\n        func.apply(context, args);\n      }, remaining);\n    }\n  };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n  const original = win.Object.getOwnPropertyDescriptor(target, key);\n  win.Object.defineProperty(\n    target,\n    key,\n    isRevoked ? d : {\n      set(value) {\n        setTimeout(() => {\n          d.set.call(this, value);\n        }, 0);\n        if (original && original.set) {\n          original.set.call(this, value);\n        }\n      }\n    }\n  );\n  return () => hookSetter(target, key, original || {}, true);\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n  nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n  var _a2, _b, _c, _d;\n  const doc = win.document;\n  return {\n    left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n    top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n  };\n}\nfunction getWindowHeight() {\n  return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n  return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n  if (!node2) {\n    return null;\n  }\n  const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n  return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n  if (!node2) {\n    return false;\n  }\n  const el = closestElementOfNode(node2);\n  if (!el) {\n    return false;\n  }\n  try {\n    if (typeof blockClass === \"string\") {\n      if (el.classList.contains(blockClass)) return true;\n      if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n    } else {\n      if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n    }\n  } catch (e2) {\n  }\n  if (blockSelector) {\n    if (el.matches(blockSelector)) return true;\n    if (checkAncestors && el.closest(blockSelector) !== null) return true;\n  }\n  return false;\n}\nfunction isSerialized(n2, mirror2) {\n  return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n  if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n    return true;\n  }\n  return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n  if (isShadowRoot(target)) {\n    return false;\n  }\n  const id = mirror2.getId(target);\n  if (!mirror2.has(id)) {\n    return true;\n  }\n  const parent = index.parentNode(target);\n  if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n    return false;\n  }\n  if (!parent) {\n    return true;\n  }\n  return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n  return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n  if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n    win.NodeList.prototype.forEach = Array.prototype.forEach;\n  }\n  if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n    win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n  }\n}\nfunction isSerializedIframe(n2, mirror2) {\n  return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n  return Boolean(\n    n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n  );\n}\nfunction hasShadowRoot(n2) {\n  if (!n2) return false;\n  if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n    return Boolean(n2.shadowRoot);\n  }\n  return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n  constructor() {\n    __publicField(this, \"id\", 1);\n    __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n  }\n  getId(stylesheet) {\n    return this.styleIDMap.get(stylesheet) ?? -1;\n  }\n  has(stylesheet) {\n    return this.styleIDMap.has(stylesheet);\n  }\n  /**\n   * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n   */\n  add(stylesheet, id) {\n    if (this.has(stylesheet)) return this.getId(stylesheet);\n    let newId;\n    if (id === void 0) {\n      newId = this.id++;\n    } else newId = id;\n    this.styleIDMap.set(stylesheet, newId);\n    this.idStyleMap.set(newId, stylesheet);\n    return newId;\n  }\n  getStyle(id) {\n    return this.idStyleMap.get(id) || null;\n  }\n  reset() {\n    this.styleIDMap = /* @__PURE__ */ new WeakMap();\n    this.idStyleMap = /* @__PURE__ */ new Map();\n    this.id = 1;\n  }\n  generateId() {\n    return this.id++;\n  }\n}\nfunction getShadowHost(n2) {\n  var _a2;\n  let shadowHost = null;\n  if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n    shadowHost = index.host(index.getRootNode(n2));\n  return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n  let rootShadowHost = n2;\n  let shadowHost;\n  while (shadowHost = getShadowHost(rootShadowHost))\n    rootShadowHost = shadowHost;\n  return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n  const doc = index.ownerDocument(n2);\n  if (!doc) return false;\n  const shadowHost = getRootShadowHost(n2);\n  return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n  const doc = index.ownerDocument(n2);\n  if (!doc) return false;\n  return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n  EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n  EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n  EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n  EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n  EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n  EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n  EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n  return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n  IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n  IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n  IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n  IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n  IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n  IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n  IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n  IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n  IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n  IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n  IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n  IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n  IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n  IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n  IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n  IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n  IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n  return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n  MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n  MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n  MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n  MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n  MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n  MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n  MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n  MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n  MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n  MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n  MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n  return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n  PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n  PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n  PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n  return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n  CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n  CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n  CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n  return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n  MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n  MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n  MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n  MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n  MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n  return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n  NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n  NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n  NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n  NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n  NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n  NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n  return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n  return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n  constructor() {\n    __publicField(this, \"length\", 0);\n    __publicField(this, \"head\", null);\n    __publicField(this, \"tail\", null);\n  }\n  get(position) {\n    if (position >= this.length) {\n      throw new Error(\"Position outside of list range\");\n    }\n    let current = this.head;\n    for (let index2 = 0; index2 < position; index2++) {\n      current = (current == null ? void 0 : current.next) || null;\n    }\n    return current;\n  }\n  addNode(n2) {\n    const node2 = {\n      value: n2,\n      previous: null,\n      next: null\n    };\n    n2.__ln = node2;\n    if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n      const current = n2.previousSibling.__ln.next;\n      node2.next = current;\n      node2.previous = n2.previousSibling.__ln;\n      n2.previousSibling.__ln.next = node2;\n      if (current) {\n        current.previous = node2;\n      }\n    } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n      const current = n2.nextSibling.__ln.previous;\n      node2.previous = current;\n      node2.next = n2.nextSibling.__ln;\n      n2.nextSibling.__ln.previous = node2;\n      if (current) {\n        current.next = node2;\n      }\n    } else {\n      if (this.head) {\n        this.head.previous = node2;\n      }\n      node2.next = this.head;\n      this.head = node2;\n    }\n    if (node2.next === null) {\n      this.tail = node2;\n    }\n    this.length++;\n  }\n  removeNode(n2) {\n    const current = n2.__ln;\n    if (!this.head) {\n      return;\n    }\n    if (!current.previous) {\n      this.head = current.next;\n      if (this.head) {\n        this.head.previous = null;\n      } else {\n        this.tail = null;\n      }\n    } else {\n      current.previous.next = current.next;\n      if (current.next) {\n        current.next.previous = current.previous;\n      } else {\n        this.tail = current.previous;\n      }\n    }\n    if (n2.__ln) {\n      delete n2.__ln;\n    }\n    this.length--;\n  }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n  constructor() {\n    __publicField(this, \"frozen\", false);\n    __publicField(this, \"locked\", false);\n    __publicField(this, \"texts\", []);\n    __publicField(this, \"attributes\", []);\n    __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"removes\", []);\n    __publicField(this, \"mapRemoves\", []);\n    __publicField(this, \"movedMap\", {});\n    __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n    __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n    __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n    __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"blockClass\");\n    __publicField(this, \"blockSelector\");\n    __publicField(this, \"maskTextClass\");\n    __publicField(this, \"maskTextSelector\");\n    __publicField(this, \"inlineStylesheet\");\n    __publicField(this, \"maskInputOptions\");\n    __publicField(this, \"maskTextFn\");\n    __publicField(this, \"maskInputFn\");\n    __publicField(this, \"keepIframeSrcFn\");\n    __publicField(this, \"recordCanvas\");\n    __publicField(this, \"inlineImages\");\n    __publicField(this, \"slimDOMOptions\");\n    __publicField(this, \"dataURLOptions\");\n    __publicField(this, \"doc\");\n    __publicField(this, \"mirror\");\n    __publicField(this, \"iframeManager\");\n    __publicField(this, \"stylesheetManager\");\n    __publicField(this, \"shadowDomManager\");\n    __publicField(this, \"canvasManager\");\n    __publicField(this, \"processedNodeManager\");\n    __publicField(this, \"unattachedDoc\");\n    __publicField(this, \"processMutations\", (mutations) => {\n      mutations.forEach(this.processMutation);\n      this.emit();\n    });\n    __publicField(this, \"emit\", () => {\n      if (this.frozen || this.locked) {\n        return;\n      }\n      const adds = [];\n      const addedIds = /* @__PURE__ */ new Set();\n      const addList = new DoubleLinkedList();\n      const getNextId = (n2) => {\n        let ns = n2;\n        let nextId = IGNORED_NODE;\n        while (nextId === IGNORED_NODE) {\n          ns = ns && ns.nextSibling;\n          nextId = ns && this.mirror.getId(ns);\n        }\n        return nextId;\n      };\n      const pushAdd = (n2) => {\n        const parent = index.parentNode(n2);\n        if (!parent || !inDom(n2)) {\n          return;\n        }\n        let cssCaptured = false;\n        if (n2.nodeType === Node.TEXT_NODE) {\n          const parentTag = parent.tagName;\n          if (parentTag === \"TEXTAREA\") {\n            return;\n          } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n            cssCaptured = true;\n          }\n        }\n        const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n        const nextId = getNextId(n2);\n        if (parentId === -1 || nextId === -1) {\n          return addList.addNode(n2);\n        }\n        const sn = serializeNodeWithId(n2, {\n          doc: this.doc,\n          mirror: this.mirror,\n          blockClass: this.blockClass,\n          blockSelector: this.blockSelector,\n          maskTextClass: this.maskTextClass,\n          maskTextSelector: this.maskTextSelector,\n          skipChild: true,\n          newlyAddedElement: true,\n          inlineStylesheet: this.inlineStylesheet,\n          maskInputOptions: this.maskInputOptions,\n          maskTextFn: this.maskTextFn,\n          maskInputFn: this.maskInputFn,\n          slimDOMOptions: this.slimDOMOptions,\n          dataURLOptions: this.dataURLOptions,\n          recordCanvas: this.recordCanvas,\n          inlineImages: this.inlineImages,\n          onSerialize: (currentN) => {\n            if (isSerializedIframe(currentN, this.mirror)) {\n              this.iframeManager.addIframe(currentN);\n            }\n            if (isSerializedStylesheet(currentN, this.mirror)) {\n              this.stylesheetManager.trackLinkElement(\n                currentN\n              );\n            }\n            if (hasShadowRoot(n2)) {\n              this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n            }\n          },\n          onIframeLoad: (iframe, childSn) => {\n            this.iframeManager.attachIframe(iframe, childSn);\n            this.shadowDomManager.observeAttachShadow(iframe);\n          },\n          onStylesheetLoad: (link, childSn) => {\n            this.stylesheetManager.attachLinkElement(link, childSn);\n          },\n          cssCaptured\n        });\n        if (sn) {\n          adds.push({\n            parentId,\n            nextId,\n            node: sn\n          });\n          addedIds.add(sn.id);\n        }\n      };\n      while (this.mapRemoves.length) {\n        this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n      }\n      for (const n2 of this.movedSet) {\n        if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n          continue;\n        }\n        pushAdd(n2);\n      }\n      for (const n2 of this.addedSet) {\n        if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n          pushAdd(n2);\n        } else if (isAncestorInSet(this.movedSet, n2)) {\n          pushAdd(n2);\n        } else {\n          this.droppedSet.add(n2);\n        }\n      }\n      let candidate = null;\n      while (addList.length) {\n        let node2 = null;\n        if (candidate) {\n          const parentId = this.mirror.getId(index.parentNode(candidate.value));\n          const nextId = getNextId(candidate.value);\n          if (parentId !== -1 && nextId !== -1) {\n            node2 = candidate;\n          }\n        }\n        if (!node2) {\n          let tailNode = addList.tail;\n          while (tailNode) {\n            const _node = tailNode;\n            tailNode = tailNode.previous;\n            if (_node) {\n              const parentId = this.mirror.getId(index.parentNode(_node.value));\n              const nextId = getNextId(_node.value);\n              if (nextId === -1) continue;\n              else if (parentId !== -1) {\n                node2 = _node;\n                break;\n              } else {\n                const unhandledNode = _node.value;\n                const parent = index.parentNode(unhandledNode);\n                if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n                  const shadowHost = index.host(parent);\n                  const parentId2 = this.mirror.getId(shadowHost);\n                  if (parentId2 !== -1) {\n                    node2 = _node;\n                    break;\n                  }\n                }\n              }\n            }\n          }\n        }\n        if (!node2) {\n          while (addList.head) {\n            addList.removeNode(addList.head.value);\n          }\n          break;\n        }\n        candidate = node2.previous;\n        addList.removeNode(node2.value);\n        pushAdd(node2.value);\n      }\n      const payload = {\n        texts: this.texts.map((text) => {\n          const n2 = text.node;\n          const parent = index.parentNode(n2);\n          if (parent && parent.tagName === \"TEXTAREA\") {\n            this.genTextAreaValueMutation(parent);\n          }\n          return {\n            id: this.mirror.getId(n2),\n            value: text.value\n          };\n        }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n        attributes: this.attributes.map((attribute) => {\n          const { attributes } = attribute;\n          if (typeof attributes.style === \"string\") {\n            const diffAsStr = JSON.stringify(attribute.styleDiff);\n            const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n            if (diffAsStr.length < attributes.style.length) {\n              if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n                attributes.style = attribute.styleDiff;\n              }\n            }\n          }\n          return {\n            id: this.mirror.getId(attribute.node),\n            attributes\n          };\n        }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n        removes: this.removes,\n        adds\n      };\n      if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n        return;\n      }\n      this.texts = [];\n      this.attributes = [];\n      this.attributeMap = /* @__PURE__ */ new WeakMap();\n      this.removes = [];\n      this.addedSet = /* @__PURE__ */ new Set();\n      this.movedSet = /* @__PURE__ */ new Set();\n      this.droppedSet = /* @__PURE__ */ new Set();\n      this.removesSubTreeCache = /* @__PURE__ */ new Set();\n      this.movedMap = {};\n      this.mutationCb(payload);\n    });\n    __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n      let item = this.attributeMap.get(textarea);\n      if (!item) {\n        item = {\n          node: textarea,\n          attributes: {},\n          styleDiff: {},\n          _unchangedStyles: {}\n        };\n        this.attributes.push(item);\n        this.attributeMap.set(textarea, item);\n      }\n      const value = Array.from(\n        index.childNodes(textarea),\n        (cn) => index.textContent(cn) || \"\"\n      ).join(\"\");\n      item.attributes.value = maskInputValue({\n        element: textarea,\n        maskInputOptions: this.maskInputOptions,\n        tagName: textarea.tagName,\n        type: getInputType(textarea),\n        value,\n        maskInputFn: this.maskInputFn\n      });\n    });\n    __publicField(this, \"processMutation\", (m) => {\n      if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n        return;\n      }\n      switch (m.type) {\n        case \"characterData\": {\n          const value = index.textContent(m.target);\n          if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n            this.texts.push({\n              value: needMaskingText(\n                m.target,\n                this.maskTextClass,\n                this.maskTextSelector,\n                true\n                // checkAncestors\n              ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n              node: m.target\n            });\n          }\n          break;\n        }\n        case \"attributes\": {\n          const target = m.target;\n          let attributeName = m.attributeName;\n          let value = m.target.getAttribute(attributeName);\n          if (attributeName === \"value\") {\n            const type = getInputType(target);\n            value = maskInputValue({\n              element: target,\n              maskInputOptions: this.maskInputOptions,\n              tagName: target.tagName,\n              type,\n              value,\n              maskInputFn: this.maskInputFn\n            });\n          }\n          if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n            return;\n          }\n          let item = this.attributeMap.get(m.target);\n          if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n            if (!target.contentDocument) {\n              attributeName = \"rr_src\";\n            } else {\n              return;\n            }\n          }\n          if (!item) {\n            item = {\n              node: m.target,\n              attributes: {},\n              styleDiff: {},\n              _unchangedStyles: {}\n            };\n            this.attributes.push(item);\n            this.attributeMap.set(m.target, item);\n          }\n          if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n            target.setAttribute(\"data-rr-is-password\", \"true\");\n          }\n          if (!ignoreAttribute(target.tagName, attributeName)) {\n            item.attributes[attributeName] = transformAttribute(\n              this.doc,\n              toLowerCase(target.tagName),\n              toLowerCase(attributeName),\n              value\n            );\n            if (attributeName === \"style\") {\n              if (!this.unattachedDoc) {\n                try {\n                  this.unattachedDoc = document.implementation.createHTMLDocument();\n                } catch (e2) {\n                  this.unattachedDoc = this.doc;\n                }\n              }\n              const old = this.unattachedDoc.createElement(\"span\");\n              if (m.oldValue) {\n                old.setAttribute(\"style\", m.oldValue);\n              }\n              for (const pname of Array.from(target.style)) {\n                const newValue = target.style.getPropertyValue(pname);\n                const newPriority = target.style.getPropertyPriority(pname);\n                if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n                  if (newPriority === \"\") {\n                    item.styleDiff[pname] = newValue;\n                  } else {\n                    item.styleDiff[pname] = [newValue, newPriority];\n                  }\n                } else {\n                  item._unchangedStyles[pname] = [newValue, newPriority];\n                }\n              }\n              for (const pname of Array.from(old.style)) {\n                if (target.style.getPropertyValue(pname) === \"\") {\n                  item.styleDiff[pname] = false;\n                }\n              }\n            } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n              if (target.matches(\"dialog:modal\")) {\n                item.attributes[\"rr_open_mode\"] = \"modal\";\n              } else {\n                item.attributes[\"rr_open_mode\"] = \"non-modal\";\n              }\n            }\n          }\n          break;\n        }\n        case \"childList\": {\n          if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n            return;\n          if (m.target.tagName === \"TEXTAREA\") {\n            this.genTextAreaValueMutation(m.target);\n            return;\n          }\n          m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n          m.removedNodes.forEach((n2) => {\n            const nodeId = this.mirror.getId(n2);\n            const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n            if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n              return;\n            }\n            if (this.addedSet.has(n2)) {\n              deepDelete(this.addedSet, n2);\n              this.droppedSet.add(n2);\n            } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n            else if (isAncestorRemoved(m.target, this.mirror)) ;\n            else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n              deepDelete(this.movedSet, n2);\n            } else {\n              this.removes.push({\n                parentId,\n                id: nodeId,\n                isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n              });\n              processRemoves(n2, this.removesSubTreeCache);\n            }\n            this.mapRemoves.push(n2);\n          });\n          break;\n        }\n      }\n    });\n    __publicField(this, \"genAdds\", (n2, target) => {\n      if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n      if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n      if (this.mirror.hasNode(n2)) {\n        if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n          return;\n        }\n        this.movedSet.add(n2);\n        let targetId = null;\n        if (target && this.mirror.hasNode(target)) {\n          targetId = this.mirror.getId(target);\n        }\n        if (targetId && targetId !== -1) {\n          this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n        }\n      } else {\n        this.addedSet.add(n2);\n        this.droppedSet.delete(n2);\n      }\n      if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n        index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n        if (hasShadowRoot(n2)) {\n          index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n            this.processedNodeManager.add(childN, this);\n            this.genAdds(childN, n2);\n          });\n        }\n      }\n    });\n  }\n  init(options) {\n    [\n      \"mutationCb\",\n      \"blockClass\",\n      \"blockSelector\",\n      \"maskTextClass\",\n      \"maskTextSelector\",\n      \"inlineStylesheet\",\n      \"maskInputOptions\",\n      \"maskTextFn\",\n      \"maskInputFn\",\n      \"keepIframeSrcFn\",\n      \"recordCanvas\",\n      \"inlineImages\",\n      \"slimDOMOptions\",\n      \"dataURLOptions\",\n      \"doc\",\n      \"mirror\",\n      \"iframeManager\",\n      \"stylesheetManager\",\n      \"shadowDomManager\",\n      \"canvasManager\",\n      \"processedNodeManager\"\n    ].forEach((key) => {\n      this[key] = options[key];\n    });\n  }\n  freeze() {\n    this.frozen = true;\n    this.canvasManager.freeze();\n  }\n  unfreeze() {\n    this.frozen = false;\n    this.canvasManager.unfreeze();\n    this.emit();\n  }\n  isFrozen() {\n    return this.frozen;\n  }\n  lock() {\n    this.locked = true;\n    this.canvasManager.lock();\n  }\n  unlock() {\n    this.locked = false;\n    this.canvasManager.unlock();\n    this.emit();\n  }\n  reset() {\n    this.shadowDomManager.reset();\n    this.canvasManager.reset();\n  }\n}\nfunction deepDelete(addsSet, n2) {\n  addsSet.delete(n2);\n  index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n  const queue = [n2];\n  while (queue.length) {\n    const next = queue.pop();\n    if (cache.has(next)) continue;\n    cache.add(next);\n    index.childNodes(next).forEach((n22) => queue.push(n22));\n  }\n  return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n  if (removes.size === 0) return false;\n  return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n  const node2 = index.parentNode(n2);\n  if (!node2) return false;\n  return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n  if (set.size === 0) return false;\n  return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n  const parent = index.parentNode(n2);\n  if (!parent) {\n    return false;\n  }\n  if (set.has(parent)) {\n    return true;\n  }\n  return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n  errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n  errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n  if (!errorHandler) {\n    return cb;\n  }\n  const rrwebWrapped = (...rest) => {\n    try {\n      return cb(...rest);\n    } catch (error) {\n      if (errorHandler && errorHandler(error) === true) {\n        return;\n      }\n      throw error;\n    }\n  };\n  return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n  try {\n    if (\"composedPath\" in event) {\n      const path = event.composedPath();\n      if (path.length) {\n        return path[0];\n      }\n    } else if (\"path\" in event && event.path.length) {\n      return event.path[0];\n    }\n  } catch {\n  }\n  return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n  const mutationBuffer = new MutationBuffer();\n  mutationBuffers.push(mutationBuffer);\n  mutationBuffer.init(options);\n  const observer = new (mutationObserverCtor())(\n    callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n  );\n  observer.observe(rootEl, {\n    attributes: true,\n    attributeOldValue: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true\n  });\n  return observer;\n}\nfunction initMoveObserver({\n  mousemoveCb,\n  sampling,\n  doc,\n  mirror: mirror2\n}) {\n  if (sampling.mousemove === false) {\n    return () => {\n    };\n  }\n  const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n  const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n  let positions = [];\n  let timeBaseline;\n  const wrappedCb = throttle(\n    callbackWrapper(\n      (source) => {\n        const totalOffset = Date.now() - timeBaseline;\n        mousemoveCb(\n          positions.map((p) => {\n            p.timeOffset -= totalOffset;\n            return p;\n          }),\n          source\n        );\n        positions = [];\n        timeBaseline = null;\n      }\n    ),\n    callbackThreshold\n  );\n  const updatePosition = callbackWrapper(\n    throttle(\n      callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n        if (!timeBaseline) {\n          timeBaseline = nowTimestamp();\n        }\n        positions.push({\n          x: clientX,\n          y: clientY,\n          id: mirror2.getId(target),\n          timeOffset: nowTimestamp() - timeBaseline\n        });\n        wrappedCb(\n          typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n        );\n      }),\n      threshold,\n      {\n        trailing: false\n      }\n    )\n  );\n  const handlers = [\n    on(\"mousemove\", updatePosition, doc),\n    on(\"touchmove\", updatePosition, doc),\n    on(\"drag\", updatePosition, doc)\n  ];\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction initMouseInteractionObserver({\n  mouseInteractionCb,\n  doc,\n  mirror: mirror2,\n  blockClass,\n  blockSelector,\n  sampling\n}) {\n  if (sampling.mouseInteraction === false) {\n    return () => {\n    };\n  }\n  const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n  const handlers = [];\n  let currentPointerType = null;\n  const getHandler = (eventKey) => {\n    return (event) => {\n      const target = getEventTarget(event);\n      if (isBlocked(target, blockClass, blockSelector, true)) {\n        return;\n      }\n      let pointerType = null;\n      let thisEventKey = eventKey;\n      if (\"pointerType\" in event) {\n        switch (event.pointerType) {\n          case \"mouse\":\n            pointerType = PointerTypes.Mouse;\n            break;\n          case \"touch\":\n            pointerType = PointerTypes.Touch;\n            break;\n          case \"pen\":\n            pointerType = PointerTypes.Pen;\n            break;\n        }\n        if (pointerType === PointerTypes.Touch) {\n          if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n            thisEventKey = \"TouchStart\";\n          } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n            thisEventKey = \"TouchEnd\";\n          }\n        } else if (pointerType === PointerTypes.Pen) ;\n      } else if (legacy_isTouchEvent(event)) {\n        pointerType = PointerTypes.Touch;\n      }\n      if (pointerType !== null) {\n        currentPointerType = pointerType;\n        if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n          pointerType = null;\n        }\n      } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n        pointerType = currentPointerType;\n        currentPointerType = null;\n      }\n      const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n      if (!e2) {\n        return;\n      }\n      const id = mirror2.getId(target);\n      const { clientX, clientY } = e2;\n      callbackWrapper(mouseInteractionCb)({\n        type: MouseInteractions[thisEventKey],\n        id,\n        x: clientX,\n        y: clientY,\n        ...pointerType !== null && { pointerType }\n      });\n    };\n  };\n  Object.keys(MouseInteractions).filter(\n    (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n  ).forEach((eventKey) => {\n    let eventName = toLowerCase(eventKey);\n    const handler = getHandler(eventKey);\n    if (window.PointerEvent) {\n      switch (MouseInteractions[eventKey]) {\n        case MouseInteractions.MouseDown:\n        case MouseInteractions.MouseUp:\n          eventName = eventName.replace(\n            \"mouse\",\n            \"pointer\"\n          );\n          break;\n        case MouseInteractions.TouchStart:\n        case MouseInteractions.TouchEnd:\n          return;\n      }\n    }\n    handlers.push(on(eventName, handler, doc));\n  });\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction initScrollObserver({\n  scrollCb,\n  doc,\n  mirror: mirror2,\n  blockClass,\n  blockSelector,\n  sampling\n}) {\n  const updatePosition = callbackWrapper(\n    throttle(\n      callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n          return;\n        }\n        const id = mirror2.getId(target);\n        if (target === doc && doc.defaultView) {\n          const scrollLeftTop = getWindowScroll(doc.defaultView);\n          scrollCb({\n            id,\n            x: scrollLeftTop.left,\n            y: scrollLeftTop.top\n          });\n        } else {\n          scrollCb({\n            id,\n            x: target.scrollLeft,\n            y: target.scrollTop\n          });\n        }\n      }),\n      sampling.scroll || 100\n    )\n  );\n  return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n  let lastH = -1;\n  let lastW = -1;\n  const updateDimension = callbackWrapper(\n    throttle(\n      callbackWrapper(() => {\n        const height = getWindowHeight();\n        const width = getWindowWidth();\n        if (lastH !== height || lastW !== width) {\n          viewportResizeCb({\n            width: Number(width),\n            height: Number(height)\n          });\n          lastH = height;\n          lastW = width;\n        }\n      }),\n      200\n    )\n  );\n  return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n  inputCb,\n  doc,\n  mirror: mirror2,\n  blockClass,\n  blockSelector,\n  ignoreClass,\n  ignoreSelector,\n  maskInputOptions,\n  maskInputFn,\n  sampling,\n  userTriggeredOnInput\n}) {\n  function eventHandler(event) {\n    let target = getEventTarget(event);\n    const userTriggered = event.isTrusted;\n    const tagName = target && target.tagName;\n    if (target && tagName === \"OPTION\") {\n      target = index.parentElement(target);\n    }\n    if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n      return;\n    }\n    if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n      return;\n    }\n    let text = target.value;\n    let isChecked = false;\n    const type = getInputType(target) || \"\";\n    if (type === \"radio\" || type === \"checkbox\") {\n      isChecked = target.checked;\n    } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n      text = maskInputValue({\n        element: target,\n        maskInputOptions,\n        tagName,\n        type,\n        value: text,\n        maskInputFn\n      });\n    }\n    cbWithDedup(\n      target,\n      userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n    );\n    const name = target.name;\n    if (type === \"radio\" && name && isChecked) {\n      doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n        if (el !== target) {\n          const text2 = el.value;\n          cbWithDedup(\n            el,\n            userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n          );\n        }\n      });\n    }\n  }\n  function cbWithDedup(target, v2) {\n    const lastInputValue = lastInputValueMap.get(target);\n    if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n      lastInputValueMap.set(target, v2);\n      const id = mirror2.getId(target);\n      callbackWrapper(inputCb)({\n        ...v2,\n        id\n      });\n    }\n  }\n  const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n  const handlers = events.map(\n    (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n  );\n  const currentWindow = doc.defaultView;\n  if (!currentWindow) {\n    return () => {\n      handlers.forEach((h) => h());\n    };\n  }\n  const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n    currentWindow.HTMLInputElement.prototype,\n    \"value\"\n  );\n  const hookProperties = [\n    [currentWindow.HTMLInputElement.prototype, \"value\"],\n    [currentWindow.HTMLInputElement.prototype, \"checked\"],\n    [currentWindow.HTMLSelectElement.prototype, \"value\"],\n    [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n    // Some UI library use selectedIndex to set select value\n    [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n    [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n  ];\n  if (propertyDescriptor && propertyDescriptor.set) {\n    handlers.push(\n      ...hookProperties.map(\n        (p) => hookSetter(\n          p[0],\n          p[1],\n          {\n            set() {\n              callbackWrapper(eventHandler)({\n                target: this,\n                isTrusted: false\n                // userTriggered to false as this could well be programmatic\n              });\n            }\n          },\n          false,\n          currentWindow\n        )\n      )\n    );\n  }\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction getNestedCSSRulePositions(rule2) {\n  const positions = [];\n  function recurse(childRule, pos) {\n    if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n      const rules2 = Array.from(\n        childRule.parentRule.cssRules\n      );\n      const index2 = rules2.indexOf(childRule);\n      pos.unshift(index2);\n    } else if (childRule.parentStyleSheet) {\n      const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n      const index2 = rules2.indexOf(childRule);\n      pos.unshift(index2);\n    }\n    return pos;\n  }\n  return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n  let id, styleId;\n  if (!sheet) return {};\n  if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n  else styleId = styleMirror.getId(sheet);\n  return {\n    styleId,\n    id\n  };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n  if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n    return () => {\n    };\n  }\n  const insertRule = win.CSSStyleSheet.prototype.insertRule;\n  win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n    apply: callbackWrapper(\n      (target, thisArg, argumentsList) => {\n        const [rule2, index2] = argumentsList;\n        const { id, styleId } = getIdAndStyleId(\n          thisArg,\n          mirror2,\n          stylesheetManager.styleMirror\n        );\n        if (id && id !== -1 || styleId && styleId !== -1) {\n          styleSheetRuleCb({\n            id,\n            styleId,\n            adds: [{ rule: rule2, index: index2 }]\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      }\n    )\n  });\n  win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n    const rule2 = `${selector} { ${styleBlock} }`;\n    return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n  };\n  const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n  win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n    apply: callbackWrapper(\n      (target, thisArg, argumentsList) => {\n        const [index2] = argumentsList;\n        const { id, styleId } = getIdAndStyleId(\n          thisArg,\n          mirror2,\n          stylesheetManager.styleMirror\n        );\n        if (id && id !== -1 || styleId && styleId !== -1) {\n          styleSheetRuleCb({\n            id,\n            styleId,\n            removes: [{ index: index2 }]\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      }\n    )\n  });\n  win.CSSStyleSheet.prototype.removeRule = function(index2) {\n    return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n  };\n  let replace;\n  if (win.CSSStyleSheet.prototype.replace) {\n    replace = win.CSSStyleSheet.prototype.replace;\n    win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n      apply: callbackWrapper(\n        (target, thisArg, argumentsList) => {\n          const [text] = argumentsList;\n          const { id, styleId } = getIdAndStyleId(\n            thisArg,\n            mirror2,\n            stylesheetManager.styleMirror\n          );\n          if (id && id !== -1 || styleId && styleId !== -1) {\n            styleSheetRuleCb({\n              id,\n              styleId,\n              replace: text\n            });\n          }\n          return target.apply(thisArg, argumentsList);\n        }\n      )\n    });\n  }\n  let replaceSync;\n  if (win.CSSStyleSheet.prototype.replaceSync) {\n    replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n    win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n      apply: callbackWrapper(\n        (target, thisArg, argumentsList) => {\n          const [text] = argumentsList;\n          const { id, styleId } = getIdAndStyleId(\n            thisArg,\n            mirror2,\n            stylesheetManager.styleMirror\n          );\n          if (id && id !== -1 || styleId && styleId !== -1) {\n            styleSheetRuleCb({\n              id,\n              styleId,\n              replaceSync: text\n            });\n          }\n          return target.apply(thisArg, argumentsList);\n        }\n      )\n    });\n  }\n  const supportedNestedCSSRuleTypes = {};\n  if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n    supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n  } else {\n    if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n      supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n    }\n    if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n      supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n    }\n    if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n      supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n    }\n  }\n  const unmodifiedFunctions = {};\n  Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n    unmodifiedFunctions[typeKey] = {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      insertRule: type.prototype.insertRule,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      deleteRule: type.prototype.deleteRule\n    };\n    type.prototype.insertRule = new Proxy(\n      unmodifiedFunctions[typeKey].insertRule,\n      {\n        apply: callbackWrapper(\n          (target, thisArg, argumentsList) => {\n            const [rule2, index2] = argumentsList;\n            const { id, styleId } = getIdAndStyleId(\n              thisArg.parentStyleSheet,\n              mirror2,\n              stylesheetManager.styleMirror\n            );\n            if (id && id !== -1 || styleId && styleId !== -1) {\n              styleSheetRuleCb({\n                id,\n                styleId,\n                adds: [\n                  {\n                    rule: rule2,\n                    index: [\n                      ...getNestedCSSRulePositions(thisArg),\n                      index2 || 0\n                      // defaults to 0\n                    ]\n                  }\n                ]\n              });\n            }\n            return target.apply(thisArg, argumentsList);\n          }\n        )\n      }\n    );\n    type.prototype.deleteRule = new Proxy(\n      unmodifiedFunctions[typeKey].deleteRule,\n      {\n        apply: callbackWrapper(\n          (target, thisArg, argumentsList) => {\n            const [index2] = argumentsList;\n            const { id, styleId } = getIdAndStyleId(\n              thisArg.parentStyleSheet,\n              mirror2,\n              stylesheetManager.styleMirror\n            );\n            if (id && id !== -1 || styleId && styleId !== -1) {\n              styleSheetRuleCb({\n                id,\n                styleId,\n                removes: [\n                  { index: [...getNestedCSSRulePositions(thisArg), index2] }\n                ]\n              });\n            }\n            return target.apply(thisArg, argumentsList);\n          }\n        )\n      }\n    );\n  });\n  return callbackWrapper(() => {\n    win.CSSStyleSheet.prototype.insertRule = insertRule;\n    win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n    replace && (win.CSSStyleSheet.prototype.replace = replace);\n    replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n    Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n      type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n      type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n    });\n  });\n}\nfunction initAdoptedStyleSheetObserver({\n  mirror: mirror2,\n  stylesheetManager\n}, host2) {\n  var _a2, _b, _c;\n  let hostId = null;\n  if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n  else hostId = mirror2.getId(index.host(host2));\n  const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n  const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n    patchTarget == null ? void 0 : patchTarget.prototype,\n    \"adoptedStyleSheets\"\n  ) : void 0;\n  if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n    return () => {\n    };\n  Object.defineProperty(host2, \"adoptedStyleSheets\", {\n    configurable: originalPropertyDescriptor.configurable,\n    enumerable: originalPropertyDescriptor.enumerable,\n    get() {\n      var _a3;\n      return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n    },\n    set(sheets) {\n      var _a3;\n      const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n      if (hostId !== null && hostId !== -1) {\n        try {\n          stylesheetManager.adoptStyleSheets(sheets, hostId);\n        } catch (e2) {\n        }\n      }\n      return result2;\n    }\n  });\n  return callbackWrapper(() => {\n    Object.defineProperty(host2, \"adoptedStyleSheets\", {\n      configurable: originalPropertyDescriptor.configurable,\n      enumerable: originalPropertyDescriptor.enumerable,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      get: originalPropertyDescriptor.get,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      set: originalPropertyDescriptor.set\n    });\n  });\n}\nfunction initStyleDeclarationObserver({\n  styleDeclarationCb,\n  mirror: mirror2,\n  ignoreCSSAttributes,\n  stylesheetManager\n}, { win }) {\n  const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n  win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n    apply: callbackWrapper(\n      (target, thisArg, argumentsList) => {\n        var _a2;\n        const [property, value, priority] = argumentsList;\n        if (ignoreCSSAttributes.has(property)) {\n          return setProperty.apply(thisArg, [property, value, priority]);\n        }\n        const { id, styleId } = getIdAndStyleId(\n          (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n          mirror2,\n          stylesheetManager.styleMirror\n        );\n        if (id && id !== -1 || styleId && styleId !== -1) {\n          styleDeclarationCb({\n            id,\n            styleId,\n            set: {\n              property,\n              value,\n              priority\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            index: getNestedCSSRulePositions(thisArg.parentRule)\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      }\n    )\n  });\n  const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n  win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n    apply: callbackWrapper(\n      (target, thisArg, argumentsList) => {\n        var _a2;\n        const [property] = argumentsList;\n        if (ignoreCSSAttributes.has(property)) {\n          return removeProperty.apply(thisArg, [property]);\n        }\n        const { id, styleId } = getIdAndStyleId(\n          (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n          mirror2,\n          stylesheetManager.styleMirror\n        );\n        if (id && id !== -1 || styleId && styleId !== -1) {\n          styleDeclarationCb({\n            id,\n            styleId,\n            remove: {\n              property\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            index: getNestedCSSRulePositions(thisArg.parentRule)\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      }\n    )\n  });\n  return callbackWrapper(() => {\n    win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n    win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n  });\n}\nfunction initMediaInteractionObserver({\n  mediaInteractionCb,\n  blockClass,\n  blockSelector,\n  mirror: mirror2,\n  sampling,\n  doc\n}) {\n  const handler = callbackWrapper(\n    (type) => throttle(\n      callbackWrapper((event) => {\n        const target = getEventTarget(event);\n        if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n          return;\n        }\n        const { currentTime, volume, muted, playbackRate, loop } = target;\n        mediaInteractionCb({\n          type,\n          id: mirror2.getId(target),\n          currentTime,\n          volume,\n          muted,\n          playbackRate,\n          loop\n        });\n      }),\n      sampling.media || 500\n    )\n  );\n  const handlers = [\n    on(\"play\", handler(MediaInteractions.Play), doc),\n    on(\"pause\", handler(MediaInteractions.Pause), doc),\n    on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n    on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n    on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n  ];\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction initFontObserver({ fontCb, doc }) {\n  const win = doc.defaultView;\n  if (!win) {\n    return () => {\n    };\n  }\n  const handlers = [];\n  const fontMap = /* @__PURE__ */ new WeakMap();\n  const originalFontFace = win.FontFace;\n  win.FontFace = function FontFace2(family, source, descriptors) {\n    const fontFace = new originalFontFace(family, source, descriptors);\n    fontMap.set(fontFace, {\n      family,\n      buffer: typeof source !== \"string\",\n      descriptors,\n      fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n    });\n    return fontFace;\n  };\n  const restoreHandler = patch(\n    doc.fonts,\n    \"add\",\n    function(original) {\n      return function(fontFace) {\n        setTimeout(\n          callbackWrapper(() => {\n            const p = fontMap.get(fontFace);\n            if (p) {\n              fontCb(p);\n              fontMap.delete(fontFace);\n            }\n          }),\n          0\n        );\n        return original.apply(this, [fontFace]);\n      };\n    }\n  );\n  handlers.push(() => {\n    win.FontFace = originalFontFace;\n  });\n  handlers.push(restoreHandler);\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction initSelectionObserver(param) {\n  const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n  let collapsed = true;\n  const updateSelection = callbackWrapper(() => {\n    const selection = doc.getSelection();\n    if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n    collapsed = selection.isCollapsed || false;\n    const ranges = [];\n    const count = selection.rangeCount || 0;\n    for (let i2 = 0; i2 < count; i2++) {\n      const range = selection.getRangeAt(i2);\n      const { startContainer, startOffset, endContainer, endOffset } = range;\n      const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n      if (blocked) continue;\n      ranges.push({\n        start: mirror2.getId(startContainer),\n        startOffset,\n        end: mirror2.getId(endContainer),\n        endOffset\n      });\n    }\n    selectionCb({ ranges });\n  });\n  updateSelection();\n  return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n  doc,\n  customElementCb\n}) {\n  const win = doc.defaultView;\n  if (!win || !win.customElements) return () => {\n  };\n  const restoreHandler = patch(\n    win.customElements,\n    \"define\",\n    function(original) {\n      return function(name, constructor, options) {\n        try {\n          customElementCb({\n            define: {\n              name\n            }\n          });\n        } catch (e2) {\n          console.warn(`Custom element callback failed for ${name}`);\n        }\n        return original.apply(this, [name, constructor, options]);\n      };\n    }\n  );\n  return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n  const {\n    mutationCb,\n    mousemoveCb,\n    mouseInteractionCb,\n    scrollCb,\n    viewportResizeCb,\n    inputCb,\n    mediaInteractionCb,\n    styleSheetRuleCb,\n    styleDeclarationCb,\n    canvasMutationCb,\n    fontCb,\n    selectionCb,\n    customElementCb\n  } = o2;\n  o2.mutationCb = (...p) => {\n    if (hooks.mutation) {\n      hooks.mutation(...p);\n    }\n    mutationCb(...p);\n  };\n  o2.mousemoveCb = (...p) => {\n    if (hooks.mousemove) {\n      hooks.mousemove(...p);\n    }\n    mousemoveCb(...p);\n  };\n  o2.mouseInteractionCb = (...p) => {\n    if (hooks.mouseInteraction) {\n      hooks.mouseInteraction(...p);\n    }\n    mouseInteractionCb(...p);\n  };\n  o2.scrollCb = (...p) => {\n    if (hooks.scroll) {\n      hooks.scroll(...p);\n    }\n    scrollCb(...p);\n  };\n  o2.viewportResizeCb = (...p) => {\n    if (hooks.viewportResize) {\n      hooks.viewportResize(...p);\n    }\n    viewportResizeCb(...p);\n  };\n  o2.inputCb = (...p) => {\n    if (hooks.input) {\n      hooks.input(...p);\n    }\n    inputCb(...p);\n  };\n  o2.mediaInteractionCb = (...p) => {\n    if (hooks.mediaInteaction) {\n      hooks.mediaInteaction(...p);\n    }\n    mediaInteractionCb(...p);\n  };\n  o2.styleSheetRuleCb = (...p) => {\n    if (hooks.styleSheetRule) {\n      hooks.styleSheetRule(...p);\n    }\n    styleSheetRuleCb(...p);\n  };\n  o2.styleDeclarationCb = (...p) => {\n    if (hooks.styleDeclaration) {\n      hooks.styleDeclaration(...p);\n    }\n    styleDeclarationCb(...p);\n  };\n  o2.canvasMutationCb = (...p) => {\n    if (hooks.canvasMutation) {\n      hooks.canvasMutation(...p);\n    }\n    canvasMutationCb(...p);\n  };\n  o2.fontCb = (...p) => {\n    if (hooks.font) {\n      hooks.font(...p);\n    }\n    fontCb(...p);\n  };\n  o2.selectionCb = (...p) => {\n    if (hooks.selection) {\n      hooks.selection(...p);\n    }\n    selectionCb(...p);\n  };\n  o2.customElementCb = (...c2) => {\n    if (hooks.customElement) {\n      hooks.customElement(...c2);\n    }\n    customElementCb(...c2);\n  };\n}\nfunction initObservers(o2, hooks = {}) {\n  const currentWindow = o2.doc.defaultView;\n  if (!currentWindow) {\n    return () => {\n    };\n  }\n  mergeHooks(o2, hooks);\n  let mutationObserver;\n  if (o2.recordDOM) {\n    mutationObserver = initMutationObserver(o2, o2.doc);\n  }\n  const mousemoveHandler = initMoveObserver(o2);\n  const mouseInteractionHandler = initMouseInteractionObserver(o2);\n  const scrollHandler = initScrollObserver(o2);\n  const viewportResizeHandler = initViewportResizeObserver(o2, {\n    win: currentWindow\n  });\n  const inputHandler = initInputObserver(o2);\n  const mediaInteractionHandler = initMediaInteractionObserver(o2);\n  let styleSheetObserver = () => {\n  };\n  let adoptedStyleSheetObserver = () => {\n  };\n  let styleDeclarationObserver = () => {\n  };\n  let fontObserver = () => {\n  };\n  if (o2.recordDOM) {\n    styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n    adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n    styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n      win: currentWindow\n    });\n    if (o2.collectFonts) {\n      fontObserver = initFontObserver(o2);\n    }\n  }\n  const selectionObserver = initSelectionObserver(o2);\n  const customElementObserver = initCustomElementObserver(o2);\n  const pluginHandlers = [];\n  for (const plugin3 of o2.plugins) {\n    pluginHandlers.push(\n      plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n    );\n  }\n  return callbackWrapper(() => {\n    mutationBuffers.forEach((b) => b.reset());\n    mutationObserver == null ? void 0 : mutationObserver.disconnect();\n    mousemoveHandler();\n    mouseInteractionHandler();\n    scrollHandler();\n    viewportResizeHandler();\n    inputHandler();\n    mediaInteractionHandler();\n    styleSheetObserver();\n    adoptedStyleSheetObserver();\n    styleDeclarationObserver();\n    fontObserver();\n    selectionObserver();\n    customElementObserver();\n    pluginHandlers.forEach((h) => h());\n  });\n}\nfunction hasNestedCSSRule(prop) {\n  return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n  return Boolean(\n    typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n    // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n    window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n  );\n}\nclass CrossOriginIframeMirror {\n  constructor(generateIdFn) {\n    __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n    this.generateIdFn = generateIdFn;\n  }\n  getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n    const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n    const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n    let id = idToRemoteIdMap.get(remoteId);\n    if (!id) {\n      id = this.generateIdFn();\n      idToRemoteIdMap.set(remoteId, id);\n      remoteIdToIdMap.set(id, remoteId);\n    }\n    return id;\n  }\n  getIds(iframe, remoteId) {\n    const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n    const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n    return remoteId.map(\n      (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n    );\n  }\n  getRemoteId(iframe, id, map) {\n    const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n    if (typeof id !== \"number\") return id;\n    const remoteId = remoteIdToIdMap.get(id);\n    if (!remoteId) return -1;\n    return remoteId;\n  }\n  getRemoteIds(iframe, ids) {\n    const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n    return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n  }\n  reset(iframe) {\n    if (!iframe) {\n      this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n      this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n      return;\n    }\n    this.iframeIdToRemoteIdMap.delete(iframe);\n    this.iframeRemoteIdToIdMap.delete(iframe);\n  }\n  getIdToRemoteIdMap(iframe) {\n    let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n    if (!idToRemoteIdMap) {\n      idToRemoteIdMap = /* @__PURE__ */ new Map();\n      this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n    }\n    return idToRemoteIdMap;\n  }\n  getRemoteIdToIdMap(iframe) {\n    let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n    if (!remoteIdToIdMap) {\n      remoteIdToIdMap = /* @__PURE__ */ new Map();\n      this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n    }\n    return remoteIdToIdMap;\n  }\n}\nclass IframeManager {\n  constructor(options) {\n    __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n    __publicField(this, \"crossOriginIframeStyleMirror\");\n    __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"mirror\");\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"wrappedEmit\");\n    __publicField(this, \"loadListener\");\n    __publicField(this, \"stylesheetManager\");\n    __publicField(this, \"recordCrossOriginIframes\");\n    this.mutationCb = options.mutationCb;\n    this.wrappedEmit = options.wrappedEmit;\n    this.stylesheetManager = options.stylesheetManager;\n    this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n    this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n      this.stylesheetManager.styleMirror.generateId.bind(\n        this.stylesheetManager.styleMirror\n      )\n    );\n    this.mirror = options.mirror;\n    if (this.recordCrossOriginIframes) {\n      window.addEventListener(\"message\", this.handleMessage.bind(this));\n    }\n  }\n  addIframe(iframeEl) {\n    this.iframes.set(iframeEl, true);\n    if (iframeEl.contentWindow)\n      this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n  }\n  addLoadListener(cb) {\n    this.loadListener = cb;\n  }\n  attachIframe(iframeEl, childSn) {\n    var _a2, _b;\n    this.mutationCb({\n      adds: [\n        {\n          parentId: this.mirror.getId(iframeEl),\n          nextId: null,\n          node: childSn\n        }\n      ],\n      removes: [],\n      texts: [],\n      attributes: [],\n      isAttachIframe: true\n    });\n    if (this.recordCrossOriginIframes)\n      (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n        \"message\",\n        this.handleMessage.bind(this)\n      );\n    (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n    if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n      this.stylesheetManager.adoptStyleSheets(\n        iframeEl.contentDocument.adoptedStyleSheets,\n        this.mirror.getId(iframeEl.contentDocument)\n      );\n  }\n  handleMessage(message) {\n    const crossOriginMessageEvent = message;\n    if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n    crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n      return;\n    const iframeSourceWindow = message.source;\n    if (!iframeSourceWindow) return;\n    const iframeEl = this.crossOriginIframeMap.get(message.source);\n    if (!iframeEl) return;\n    const transformedEvent = this.transformCrossOriginEvent(\n      iframeEl,\n      crossOriginMessageEvent.data.event\n    );\n    if (transformedEvent)\n      this.wrappedEmit(\n        transformedEvent,\n        crossOriginMessageEvent.data.isCheckout\n      );\n  }\n  transformCrossOriginEvent(iframeEl, e2) {\n    var _a2;\n    switch (e2.type) {\n      case EventType.FullSnapshot: {\n        this.crossOriginIframeMirror.reset(iframeEl);\n        this.crossOriginIframeStyleMirror.reset(iframeEl);\n        this.replaceIdOnNode(e2.data.node, iframeEl);\n        const rootId = e2.data.node.id;\n        this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n        this.patchRootIdOnNode(e2.data.node, rootId);\n        return {\n          timestamp: e2.timestamp,\n          type: EventType.IncrementalSnapshot,\n          data: {\n            source: IncrementalSource.Mutation,\n            adds: [\n              {\n                parentId: this.mirror.getId(iframeEl),\n                nextId: null,\n                node: e2.data.node\n              }\n            ],\n            removes: [],\n            texts: [],\n            attributes: [],\n            isAttachIframe: true\n          }\n        };\n      }\n      case EventType.Meta:\n      case EventType.Load:\n      case EventType.DomContentLoaded: {\n        return false;\n      }\n      case EventType.Plugin: {\n        return e2;\n      }\n      case EventType.Custom: {\n        this.replaceIds(\n          e2.data.payload,\n          iframeEl,\n          [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n        );\n        return e2;\n      }\n      case EventType.IncrementalSnapshot: {\n        switch (e2.data.source) {\n          case IncrementalSource.Mutation: {\n            e2.data.adds.forEach((n2) => {\n              this.replaceIds(n2, iframeEl, [\n                \"parentId\",\n                \"nextId\",\n                \"previousId\"\n              ]);\n              this.replaceIdOnNode(n2.node, iframeEl);\n              const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n              rootId && this.patchRootIdOnNode(n2.node, rootId);\n            });\n            e2.data.removes.forEach((n2) => {\n              this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n            });\n            e2.data.attributes.forEach((n2) => {\n              this.replaceIds(n2, iframeEl, [\"id\"]);\n            });\n            e2.data.texts.forEach((n2) => {\n              this.replaceIds(n2, iframeEl, [\"id\"]);\n            });\n            return e2;\n          }\n          case IncrementalSource.Drag:\n          case IncrementalSource.TouchMove:\n          case IncrementalSource.MouseMove: {\n            e2.data.positions.forEach((p) => {\n              this.replaceIds(p, iframeEl, [\"id\"]);\n            });\n            return e2;\n          }\n          case IncrementalSource.ViewportResize: {\n            return false;\n          }\n          case IncrementalSource.MediaInteraction:\n          case IncrementalSource.MouseInteraction:\n          case IncrementalSource.Scroll:\n          case IncrementalSource.CanvasMutation:\n          case IncrementalSource.Input: {\n            this.replaceIds(e2.data, iframeEl, [\"id\"]);\n            return e2;\n          }\n          case IncrementalSource.StyleSheetRule:\n          case IncrementalSource.StyleDeclaration: {\n            this.replaceIds(e2.data, iframeEl, [\"id\"]);\n            this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n            return e2;\n          }\n          case IncrementalSource.Font: {\n            return e2;\n          }\n          case IncrementalSource.Selection: {\n            e2.data.ranges.forEach((range) => {\n              this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n            });\n            return e2;\n          }\n          case IncrementalSource.AdoptedStyleSheet: {\n            this.replaceIds(e2.data, iframeEl, [\"id\"]);\n            this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n            (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n              this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n            });\n            return e2;\n          }\n        }\n      }\n    }\n    return false;\n  }\n  replace(iframeMirror, obj, iframeEl, keys) {\n    for (const key of keys) {\n      if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n      if (Array.isArray(obj[key])) {\n        obj[key] = iframeMirror.getIds(\n          iframeEl,\n          obj[key]\n        );\n      } else {\n        obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n      }\n    }\n    return obj;\n  }\n  replaceIds(obj, iframeEl, keys) {\n    return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n  }\n  replaceStyleIds(obj, iframeEl, keys) {\n    return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n  }\n  replaceIdOnNode(node2, iframeEl) {\n    this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n    if (\"childNodes\" in node2) {\n      node2.childNodes.forEach((child) => {\n        this.replaceIdOnNode(child, iframeEl);\n      });\n    }\n  }\n  patchRootIdOnNode(node2, rootId) {\n    if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n    if (\"childNodes\" in node2) {\n      node2.childNodes.forEach((child) => {\n        this.patchRootIdOnNode(child, rootId);\n      });\n    }\n  }\n}\nclass ShadowDomManager {\n  constructor(options) {\n    __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"scrollCb\");\n    __publicField(this, \"bypassOptions\");\n    __publicField(this, \"mirror\");\n    __publicField(this, \"restoreHandlers\", []);\n    this.mutationCb = options.mutationCb;\n    this.scrollCb = options.scrollCb;\n    this.bypassOptions = options.bypassOptions;\n    this.mirror = options.mirror;\n    this.init();\n  }\n  init() {\n    this.reset();\n    this.patchAttachShadow(Element, document);\n  }\n  addShadowRoot(shadowRoot2, doc) {\n    if (!isNativeShadowDom(shadowRoot2)) return;\n    if (this.shadowDoms.has(shadowRoot2)) return;\n    this.shadowDoms.add(shadowRoot2);\n    const observer = initMutationObserver(\n      {\n        ...this.bypassOptions,\n        doc,\n        mutationCb: this.mutationCb,\n        mirror: this.mirror,\n        shadowDomManager: this\n      },\n      shadowRoot2\n    );\n    this.restoreHandlers.push(() => observer.disconnect());\n    this.restoreHandlers.push(\n      initScrollObserver({\n        ...this.bypassOptions,\n        scrollCb: this.scrollCb,\n        // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n        // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n        doc: shadowRoot2,\n        mirror: this.mirror\n      })\n    );\n    setTimeout(() => {\n      if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n        this.bypassOptions.stylesheetManager.adoptStyleSheets(\n          shadowRoot2.adoptedStyleSheets,\n          this.mirror.getId(index.host(shadowRoot2))\n        );\n      this.restoreHandlers.push(\n        initAdoptedStyleSheetObserver(\n          {\n            mirror: this.mirror,\n            stylesheetManager: this.bypassOptions.stylesheetManager\n          },\n          shadowRoot2\n        )\n      );\n    }, 0);\n  }\n  /**\n   * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n   */\n  observeAttachShadow(iframeElement) {\n    if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n    this.patchAttachShadow(\n      iframeElement.contentWindow.Element,\n      iframeElement.contentDocument\n    );\n  }\n  /**\n   * Patch 'attachShadow' to observe newly added shadow doms.\n   */\n  patchAttachShadow(element, doc) {\n    const manager = this;\n    this.restoreHandlers.push(\n      patch(\n        element.prototype,\n        \"attachShadow\",\n        function(original) {\n          return function(option) {\n            const sRoot = original.call(this, option);\n            const shadowRootEl = index.shadowRoot(this);\n            if (shadowRootEl && inDom(this))\n              manager.addShadowRoot(shadowRootEl, doc);\n            return sRoot;\n          };\n        }\n      )\n    );\n  }\n  reset() {\n    this.restoreHandlers.forEach((handler) => {\n      try {\n        handler();\n      } catch (e2) {\n      }\n    });\n    this.restoreHandlers = [];\n    this.shadowDoms = /* @__PURE__ */ new WeakSet();\n  }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n  lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n  var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n  for (i2 = 0; i2 < len; i2 += 3) {\n    base64 += chars[bytes[i2] >> 2];\n    base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n    base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n    base64 += chars[bytes[i2 + 2] & 63];\n  }\n  if (len % 3 === 2) {\n    base64 = base64.substring(0, base64.length - 1) + \"=\";\n  } else if (len % 3 === 1) {\n    base64 = base64.substring(0, base64.length - 2) + \"==\";\n  }\n  return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n  let contextMap = canvasVarMap.get(ctx);\n  if (!contextMap) {\n    contextMap = /* @__PURE__ */ new Map();\n    canvasVarMap.set(ctx, contextMap);\n  }\n  if (!contextMap.has(ctor)) {\n    contextMap.set(ctor, []);\n  }\n  return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n  if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n    return;\n  const name = value.constructor.name;\n  const list2 = variableListFor$1(ctx, name);\n  let index2 = list2.indexOf(value);\n  if (index2 === -1) {\n    index2 = list2.length;\n    list2.push(value);\n  }\n  return index2;\n};\nfunction serializeArg(value, win, ctx) {\n  if (value instanceof Array) {\n    return value.map((arg) => serializeArg(arg, win, ctx));\n  } else if (value === null) {\n    return value;\n  } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [Object.values(value)]\n    };\n  } else if (\n    // SharedArrayBuffer disabled on most browsers due to spectre.\n    // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n    // value instanceof SharedArrayBuffer ||\n    value instanceof ArrayBuffer\n  ) {\n    const name = value.constructor.name;\n    const base64 = encode(value);\n    return {\n      rr_type: name,\n      base64\n    };\n  } else if (value instanceof DataView) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [\n        serializeArg(value.buffer, win, ctx),\n        value.byteOffset,\n        value.byteLength\n      ]\n    };\n  } else if (value instanceof HTMLImageElement) {\n    const name = value.constructor.name;\n    const { src } = value;\n    return {\n      rr_type: name,\n      src\n    };\n  } else if (value instanceof HTMLCanvasElement) {\n    const name = \"HTMLImageElement\";\n    const src = value.toDataURL();\n    return {\n      rr_type: name,\n      src\n    };\n  } else if (value instanceof ImageData) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [serializeArg(value.data, win, ctx), value.width, value.height]\n    };\n  } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n    const name = value.constructor.name;\n    const index2 = saveWebGLVar(value, win, ctx);\n    return {\n      rr_type: name,\n      index: index2\n    };\n  }\n  return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n  return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n  const webGLConstructorNames = [\n    \"WebGLActiveInfo\",\n    \"WebGLBuffer\",\n    \"WebGLFramebuffer\",\n    \"WebGLProgram\",\n    \"WebGLRenderbuffer\",\n    \"WebGLShader\",\n    \"WebGLShaderPrecisionFormat\",\n    \"WebGLTexture\",\n    \"WebGLUniformLocation\",\n    \"WebGLVertexArrayObject\",\n    // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n    \"WebGLVertexArrayObjectOES\"\n  ];\n  const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n    (name) => typeof win[name] === \"function\"\n  );\n  return Boolean(\n    supportedWebGLConstructorNames.find(\n      (name) => value instanceof win[name]\n    )\n  );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n  const handlers = [];\n  const props2D = Object.getOwnPropertyNames(\n    win.CanvasRenderingContext2D.prototype\n  );\n  for (const prop of props2D) {\n    try {\n      if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n        continue;\n      }\n      const restoreHandler = patch(\n        win.CanvasRenderingContext2D.prototype,\n        prop,\n        function(original) {\n          return function(...args) {\n            if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n              setTimeout(() => {\n                const recordArgs = serializeArgs(args, win, this);\n                cb(this.canvas, {\n                  type: CanvasContext[\"2D\"],\n                  property: prop,\n                  args: recordArgs\n                });\n              }, 0);\n            }\n            return original.apply(this, args);\n          };\n        }\n      );\n      handlers.push(restoreHandler);\n    } catch {\n      const hookHandler = hookSetter(\n        win.CanvasRenderingContext2D.prototype,\n        prop,\n        {\n          set(v2) {\n            cb(this.canvas, {\n              type: CanvasContext[\"2D\"],\n              property: prop,\n              args: [v2],\n              setter: true\n            });\n          }\n        }\n      );\n      handlers.push(hookHandler);\n    }\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\nfunction getNormalizedContextName(contextType) {\n  return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n  const handlers = [];\n  try {\n    const restoreHandler = patch(\n      win.HTMLCanvasElement.prototype,\n      \"getContext\",\n      function(original) {\n        return function(contextType, ...args) {\n          if (!isBlocked(this, blockClass, blockSelector, true)) {\n            const ctxName = getNormalizedContextName(contextType);\n            if (!(\"__context\" in this)) this.__context = ctxName;\n            if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n              if (args[0] && typeof args[0] === \"object\") {\n                const contextAttributes = args[0];\n                if (!contextAttributes.preserveDrawingBuffer) {\n                  contextAttributes.preserveDrawingBuffer = true;\n                }\n              } else {\n                args.splice(0, 1, {\n                  preserveDrawingBuffer: true\n                });\n              }\n            }\n          }\n          return original.apply(this, [contextType, ...args]);\n        };\n      }\n    );\n    handlers.push(restoreHandler);\n  } catch {\n    console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n  const handlers = [];\n  const props = Object.getOwnPropertyNames(prototype);\n  for (const prop of props) {\n    if (\n      //prop.startsWith('get') ||  // e.g. getProgramParameter, but too risky\n      [\n        \"isContextLost\",\n        \"canvas\",\n        \"drawingBufferWidth\",\n        \"drawingBufferHeight\"\n      ].includes(prop)\n    ) {\n      continue;\n    }\n    try {\n      if (typeof prototype[prop] !== \"function\") {\n        continue;\n      }\n      const restoreHandler = patch(\n        prototype,\n        prop,\n        function(original) {\n          return function(...args) {\n            const result2 = original.apply(this, args);\n            saveWebGLVar(result2, win, this);\n            if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n              const recordArgs = serializeArgs(args, win, this);\n              const mutation = {\n                type,\n                property: prop,\n                args: recordArgs\n              };\n              cb(this.canvas, mutation);\n            }\n            return result2;\n          };\n        }\n      );\n      handlers.push(restoreHandler);\n    } catch {\n      const hookHandler = hookSetter(prototype, prop, {\n        set(v2) {\n          cb(this.canvas, {\n            type,\n            property: prop,\n            args: [v2],\n            setter: true\n          });\n        }\n      });\n      handlers.push(hookHandler);\n    }\n  }\n  return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n  const handlers = [];\n  handlers.push(\n    ...patchGLPrototype(\n      win.WebGLRenderingContext.prototype,\n      CanvasContext.WebGL,\n      cb,\n      blockClass,\n      blockSelector,\n      win\n    )\n  );\n  if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n    handlers.push(\n      ...patchGLPrototype(\n        win.WebGL2RenderingContext.prototype,\n        CanvasContext.WebGL2,\n        cb,\n        blockClass,\n        blockSelector,\n        win\n      )\n    );\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n  let objURL;\n  try {\n    objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n    if (!objURL) throw \"\";\n    const worker = new Worker(objURL, {\n      name: options == null ? void 0 : options.name\n    });\n    worker.addEventListener(\"error\", () => {\n      (window.URL || window.webkitURL).revokeObjectURL(objURL);\n    });\n    return worker;\n  } catch (e2) {\n    return new Worker(\n      \"data:text/javascript;base64,\" + encodedJs,\n      {\n        name: options == null ? void 0 : options.name\n      }\n    );\n  } finally {\n    objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n  }\n}\nclass CanvasManager {\n  constructor(options) {\n    __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n    __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n    __publicField(this, \"mirror\");\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"resetObservers\");\n    __publicField(this, \"frozen\", false);\n    __publicField(this, \"locked\", false);\n    __publicField(this, \"processMutation\", (target, mutation) => {\n      const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n      if (newFrame || !this.rafStamps.invokeId)\n        this.rafStamps.invokeId = this.rafStamps.latestId;\n      if (!this.pendingCanvasMutations.has(target)) {\n        this.pendingCanvasMutations.set(target, []);\n      }\n      this.pendingCanvasMutations.get(target).push(mutation);\n    });\n    const {\n      sampling = \"all\",\n      win,\n      blockClass,\n      blockSelector,\n      recordCanvas,\n      dataURLOptions\n    } = options;\n    this.mutationCb = options.mutationCb;\n    this.mirror = options.mirror;\n    if (recordCanvas && sampling === \"all\")\n      this.initCanvasMutationObserver(win, blockClass, blockSelector);\n    if (recordCanvas && typeof sampling === \"number\")\n      this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n        dataURLOptions\n      });\n  }\n  reset() {\n    this.pendingCanvasMutations.clear();\n    this.resetObservers && this.resetObservers();\n  }\n  freeze() {\n    this.frozen = true;\n  }\n  unfreeze() {\n    this.frozen = false;\n  }\n  lock() {\n    this.locked = true;\n  }\n  unlock() {\n    this.locked = false;\n  }\n  initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      true\n    );\n    const snapshotInProgressMap = /* @__PURE__ */ new Map();\n    const worker = new WorkerWrapper();\n    worker.onmessage = (e2) => {\n      const { id } = e2.data;\n      snapshotInProgressMap.set(id, false);\n      if (!(\"base64\" in e2.data)) return;\n      const { base64, type, width, height } = e2.data;\n      this.mutationCb({\n        id,\n        type: CanvasContext[\"2D\"],\n        commands: [\n          {\n            property: \"clearRect\",\n            // wipe canvas\n            args: [0, 0, width, height]\n          },\n          {\n            property: \"drawImage\",\n            // draws (semi-transparent) image\n            args: [\n              {\n                rr_type: \"ImageBitmap\",\n                args: [\n                  {\n                    rr_type: \"Blob\",\n                    data: [{ rr_type: \"ArrayBuffer\", base64 }],\n                    type\n                  }\n                ]\n              },\n              0,\n              0\n            ]\n          }\n        ]\n      });\n    };\n    const timeBetweenSnapshots = 1e3 / fps;\n    let lastSnapshotTime = 0;\n    let rafId;\n    const getCanvas = () => {\n      const matchedCanvas = [];\n      win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n        if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n          matchedCanvas.push(canvas);\n        }\n      });\n      return matchedCanvas;\n    };\n    const takeCanvasSnapshots = (timestamp) => {\n      if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n        rafId = requestAnimationFrame(takeCanvasSnapshots);\n        return;\n      }\n      lastSnapshotTime = timestamp;\n      getCanvas().forEach(async (canvas) => {\n        var _a2;\n        const id = this.mirror.getId(canvas);\n        if (snapshotInProgressMap.get(id)) return;\n        if (canvas.width === 0 || canvas.height === 0) return;\n        snapshotInProgressMap.set(id, true);\n        if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n          const context = canvas.getContext(canvas.__context);\n          if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n            context.clear(context.COLOR_BUFFER_BIT);\n          }\n        }\n        const bitmap = await createImageBitmap(canvas);\n        worker.postMessage(\n          {\n            id,\n            bitmap,\n            width: canvas.width,\n            height: canvas.height,\n            dataURLOptions: options.dataURLOptions\n          },\n          [bitmap]\n        );\n      });\n      rafId = requestAnimationFrame(takeCanvasSnapshots);\n    };\n    rafId = requestAnimationFrame(takeCanvasSnapshots);\n    this.resetObservers = () => {\n      canvasContextReset();\n      cancelAnimationFrame(rafId);\n    };\n  }\n  initCanvasMutationObserver(win, blockClass, blockSelector) {\n    this.startRAFTimestamping();\n    this.startPendingCanvasMutationFlusher();\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      false\n    );\n    const canvas2DReset = initCanvas2DMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector\n    );\n    const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector\n    );\n    this.resetObservers = () => {\n      canvasContextReset();\n      canvas2DReset();\n      canvasWebGL1and2Reset();\n    };\n  }\n  startPendingCanvasMutationFlusher() {\n    requestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n  startRAFTimestamping() {\n    const setLatestRAFTimestamp = (timestamp) => {\n      this.rafStamps.latestId = timestamp;\n      requestAnimationFrame(setLatestRAFTimestamp);\n    };\n    requestAnimationFrame(setLatestRAFTimestamp);\n  }\n  flushPendingCanvasMutations() {\n    this.pendingCanvasMutations.forEach(\n      (_values, canvas) => {\n        const id = this.mirror.getId(canvas);\n        this.flushPendingCanvasMutationFor(canvas, id);\n      }\n    );\n    requestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n  flushPendingCanvasMutationFor(canvas, id) {\n    if (this.frozen || this.locked) {\n      return;\n    }\n    const valuesWithType = this.pendingCanvasMutations.get(canvas);\n    if (!valuesWithType || id === -1) return;\n    const values = valuesWithType.map((value) => {\n      const { type: type2, ...rest } = value;\n      return rest;\n    });\n    const { type } = valuesWithType[0];\n    this.mutationCb({ id, type, commands: values });\n    this.pendingCanvasMutations.delete(canvas);\n  }\n}\nclass StylesheetManager {\n  constructor(options) {\n    __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"adoptedStyleSheetCb\");\n    __publicField(this, \"styleMirror\", new StyleSheetMirror());\n    this.mutationCb = options.mutationCb;\n    this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n  }\n  attachLinkElement(linkEl, childSn) {\n    if (\"_cssText\" in childSn.attributes)\n      this.mutationCb({\n        adds: [],\n        removes: [],\n        texts: [],\n        attributes: [\n          {\n            id: childSn.id,\n            attributes: childSn.attributes\n          }\n        ]\n      });\n    this.trackLinkElement(linkEl);\n  }\n  trackLinkElement(linkEl) {\n    if (this.trackedLinkElements.has(linkEl)) return;\n    this.trackedLinkElements.add(linkEl);\n    this.trackStylesheetInLinkElement(linkEl);\n  }\n  adoptStyleSheets(sheets, hostId) {\n    if (sheets.length === 0) return;\n    const adoptedStyleSheetData = {\n      id: hostId,\n      styleIds: []\n    };\n    const styles = [];\n    for (const sheet of sheets) {\n      let styleId;\n      if (!this.styleMirror.has(sheet)) {\n        styleId = this.styleMirror.add(sheet);\n        styles.push({\n          styleId,\n          rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n            rule: stringifyRule(r2, sheet.href),\n            index: index2\n          }))\n        });\n      } else styleId = this.styleMirror.getId(sheet);\n      adoptedStyleSheetData.styleIds.push(styleId);\n    }\n    if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n    this.adoptedStyleSheetCb(adoptedStyleSheetData);\n  }\n  reset() {\n    this.styleMirror.reset();\n    this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n  }\n  // TODO: take snapshot on stylesheet reload by applying event listener\n  trackStylesheetInLinkElement(_linkEl) {\n  }\n}\nclass ProcessedNodeManager {\n  constructor() {\n    __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"active\", false);\n  }\n  inOtherBuffer(node2, thisBuffer) {\n    const buffers = this.nodeMap.get(node2);\n    return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n  }\n  add(node2, buffer) {\n    if (!this.active) {\n      this.active = true;\n      requestAnimationFrame(() => {\n        this.nodeMap = /* @__PURE__ */ new WeakMap();\n        this.active = false;\n      });\n    }\n    this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n  }\n  destroy() {\n  }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n  if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n    const cleanFrame = document.createElement(\"iframe\");\n    document.body.appendChild(cleanFrame);\n    Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n    document.body.removeChild(cleanFrame);\n  }\n} catch (err) {\n  console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n  const {\n    emit,\n    checkoutEveryNms,\n    checkoutEveryNth,\n    blockClass = \"rr-block\",\n    blockSelector = null,\n    ignoreClass = \"rr-ignore\",\n    ignoreSelector = null,\n    maskTextClass = \"rr-mask\",\n    maskTextSelector = null,\n    inlineStylesheet = true,\n    maskAllInputs,\n    maskInputOptions: _maskInputOptions,\n    slimDOMOptions: _slimDOMOptions,\n    maskInputFn,\n    maskTextFn,\n    hooks,\n    packFn,\n    sampling = {},\n    dataURLOptions = {},\n    mousemoveWait,\n    recordDOM = true,\n    recordCanvas = false,\n    recordCrossOriginIframes = false,\n    recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n    userTriggeredOnInput = false,\n    collectFonts = false,\n    inlineImages = false,\n    plugins,\n    keepIframeSrcFn = () => false,\n    ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n    errorHandler: errorHandler2\n  } = options;\n  registerErrorHandler(errorHandler2);\n  const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n  let passEmitsToParent = false;\n  if (!inEmittingFrame) {\n    try {\n      if (window.parent.document) {\n        passEmitsToParent = false;\n      }\n    } catch (e2) {\n      passEmitsToParent = true;\n    }\n  }\n  if (inEmittingFrame && !emit) {\n    throw new Error(\"emit function is required\");\n  }\n  if (!inEmittingFrame && !passEmitsToParent) {\n    return () => {\n    };\n  }\n  if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n    sampling.mousemove = mousemoveWait;\n  }\n  mirror.reset();\n  const maskInputOptions = maskAllInputs === true ? {\n    color: true,\n    date: true,\n    \"datetime-local\": true,\n    email: true,\n    month: true,\n    number: true,\n    range: true,\n    search: true,\n    tel: true,\n    text: true,\n    time: true,\n    url: true,\n    week: true,\n    textarea: true,\n    select: true,\n    password: true\n  } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n  const slimDOMOptions = slimDOMDefaults(_slimDOMOptions);\n  polyfill$1();\n  let lastFullSnapshotEvent;\n  let incrementalSnapshotCount = 0;\n  const eventProcessor = (e2) => {\n    for (const plugin3 of plugins || []) {\n      if (plugin3.eventProcessor) {\n        e2 = plugin3.eventProcessor(e2);\n      }\n    }\n    if (packFn && // Disable packing events which will be emitted to parent frames.\n    !passEmitsToParent) {\n      e2 = packFn(e2);\n    }\n    return e2;\n  };\n  wrappedEmit = (r2, isCheckout) => {\n    var _a2;\n    const e2 = r2;\n    e2.timestamp = nowTimestamp();\n    if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n      mutationBuffers.forEach((buf) => buf.unfreeze());\n    }\n    if (inEmittingFrame) {\n      emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n    } else if (passEmitsToParent) {\n      const message = {\n        type: \"rrweb\",\n        event: eventProcessor(e2),\n        origin: window.location.origin,\n        isCheckout\n      };\n      window.parent.postMessage(message, \"*\");\n    }\n    if (e2.type === EventType.FullSnapshot) {\n      lastFullSnapshotEvent = e2;\n      incrementalSnapshotCount = 0;\n    } else if (e2.type === EventType.IncrementalSnapshot) {\n      if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n        return;\n      }\n      incrementalSnapshotCount++;\n      const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n      const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n      if (exceedCount || exceedTime) {\n        takeFullSnapshot$1(true);\n      }\n    }\n  };\n  const wrappedMutationEmit = (m) => {\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.Mutation,\n        ...m\n      }\n    });\n  };\n  const wrappedScrollEmit = (p) => wrappedEmit({\n    type: EventType.IncrementalSnapshot,\n    data: {\n      source: IncrementalSource.Scroll,\n      ...p\n    }\n  });\n  const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n    type: EventType.IncrementalSnapshot,\n    data: {\n      source: IncrementalSource.CanvasMutation,\n      ...p\n    }\n  });\n  const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n    type: EventType.IncrementalSnapshot,\n    data: {\n      source: IncrementalSource.AdoptedStyleSheet,\n      ...a2\n    }\n  });\n  const stylesheetManager = new StylesheetManager({\n    mutationCb: wrappedMutationEmit,\n    adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n  });\n  const iframeManager = new IframeManager({\n    mirror,\n    mutationCb: wrappedMutationEmit,\n    stylesheetManager,\n    recordCrossOriginIframes,\n    wrappedEmit\n  });\n  for (const plugin3 of plugins || []) {\n    if (plugin3.getMirror)\n      plugin3.getMirror({\n        nodeMirror: mirror,\n        crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n        crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n      });\n  }\n  const processedNodeManager = new ProcessedNodeManager();\n  canvasManager = new CanvasManager({\n    recordCanvas,\n    mutationCb: wrappedCanvasMutationEmit,\n    win: window,\n    blockClass,\n    blockSelector,\n    mirror,\n    sampling: sampling.canvas,\n    dataURLOptions\n  });\n  const shadowDomManager = new ShadowDomManager({\n    mutationCb: wrappedMutationEmit,\n    scrollCb: wrappedScrollEmit,\n    bypassOptions: {\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskInputOptions,\n      dataURLOptions,\n      maskTextFn,\n      maskInputFn,\n      recordCanvas,\n      inlineImages,\n      sampling,\n      slimDOMOptions,\n      iframeManager,\n      stylesheetManager,\n      canvasManager,\n      keepIframeSrcFn,\n      processedNodeManager\n    },\n    mirror\n  });\n  takeFullSnapshot$1 = (isCheckout = false) => {\n    if (!recordDOM) {\n      return;\n    }\n    wrappedEmit(\n      {\n        type: EventType.Meta,\n        data: {\n          href: window.location.href,\n          width: getWindowWidth(),\n          height: getWindowHeight()\n        }\n      },\n      isCheckout\n    );\n    stylesheetManager.reset();\n    shadowDomManager.init();\n    mutationBuffers.forEach((buf) => buf.lock());\n    const node2 = snapshot(document, {\n      mirror,\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskAllInputs: maskInputOptions,\n      maskTextFn,\n      maskInputFn,\n      slimDOM: slimDOMOptions,\n      dataURLOptions,\n      recordCanvas,\n      inlineImages,\n      onSerialize: (n2) => {\n        if (isSerializedIframe(n2, mirror)) {\n          iframeManager.addIframe(n2);\n        }\n        if (isSerializedStylesheet(n2, mirror)) {\n          stylesheetManager.trackLinkElement(n2);\n        }\n        if (hasShadowRoot(n2)) {\n          shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n        }\n      },\n      onIframeLoad: (iframe, childSn) => {\n        iframeManager.attachIframe(iframe, childSn);\n        shadowDomManager.observeAttachShadow(iframe);\n      },\n      onStylesheetLoad: (linkEl, childSn) => {\n        stylesheetManager.attachLinkElement(linkEl, childSn);\n      },\n      keepIframeSrcFn\n    });\n    if (!node2) {\n      return console.warn(\"Failed to snapshot the document\");\n    }\n    wrappedEmit(\n      {\n        type: EventType.FullSnapshot,\n        data: {\n          node: node2,\n          initialOffset: getWindowScroll(window)\n        }\n      },\n      isCheckout\n    );\n    mutationBuffers.forEach((buf) => buf.unlock());\n    if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n      stylesheetManager.adoptStyleSheets(\n        document.adoptedStyleSheets,\n        mirror.getId(document)\n      );\n  };\n  try {\n    const handlers = [];\n    const observe = (doc) => {\n      var _a2;\n      return callbackWrapper(initObservers)(\n        {\n          mutationCb: wrappedMutationEmit,\n          mousemoveCb: (positions, source) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source,\n              positions\n            }\n          }),\n          mouseInteractionCb: (d) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.MouseInteraction,\n              ...d\n            }\n          }),\n          scrollCb: wrappedScrollEmit,\n          viewportResizeCb: (d) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.ViewportResize,\n              ...d\n            }\n          }),\n          inputCb: (v2) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.Input,\n              ...v2\n            }\n          }),\n          mediaInteractionCb: (p) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.MediaInteraction,\n              ...p\n            }\n          }),\n          styleSheetRuleCb: (r2) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.StyleSheetRule,\n              ...r2\n            }\n          }),\n          styleDeclarationCb: (r2) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.StyleDeclaration,\n              ...r2\n            }\n          }),\n          canvasMutationCb: wrappedCanvasMutationEmit,\n          fontCb: (p) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.Font,\n              ...p\n            }\n          }),\n          selectionCb: (p) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.Selection,\n                ...p\n              }\n            });\n          },\n          customElementCb: (c2) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.CustomElement,\n                ...c2\n              }\n            });\n          },\n          blockClass,\n          ignoreClass,\n          ignoreSelector,\n          maskTextClass,\n          maskTextSelector,\n          maskInputOptions,\n          inlineStylesheet,\n          sampling,\n          recordDOM,\n          recordCanvas,\n          inlineImages,\n          userTriggeredOnInput,\n          collectFonts,\n          doc,\n          maskInputFn,\n          maskTextFn,\n          keepIframeSrcFn,\n          blockSelector,\n          slimDOMOptions,\n          dataURLOptions,\n          mirror,\n          iframeManager,\n          stylesheetManager,\n          shadowDomManager,\n          processedNodeManager,\n          canvasManager,\n          ignoreCSSAttributes,\n          plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n            observer: p.observer,\n            options: p.options,\n            callback: (payload) => wrappedEmit({\n              type: EventType.Plugin,\n              data: {\n                plugin: p.name,\n                payload\n              }\n            })\n          }))) || []\n        },\n        hooks\n      );\n    };\n    iframeManager.addLoadListener((iframeEl) => {\n      try {\n        handlers.push(observe(iframeEl.contentDocument));\n      } catch (error) {\n        console.warn(error);\n      }\n    });\n    const init = () => {\n      takeFullSnapshot$1();\n      handlers.push(observe(document));\n      recording = true;\n    };\n    if ([\"interactive\", \"complete\"].includes(document.readyState)) {\n      init();\n    } else {\n      handlers.push(\n        on(\"DOMContentLoaded\", () => {\n          wrappedEmit({\n            type: EventType.DomContentLoaded,\n            data: {}\n          });\n          if (recordAfter === \"DOMContentLoaded\") init();\n        })\n      );\n      handlers.push(\n        on(\n          \"load\",\n          () => {\n            wrappedEmit({\n              type: EventType.Load,\n              data: {}\n            });\n            if (recordAfter === \"load\") init();\n          },\n          window\n        )\n      );\n    }\n    return () => {\n      handlers.forEach((handler) => {\n        try {\n          handler();\n        } catch (error) {\n          const msg = String(error).toLowerCase();\n          if (!msg.includes(\"cross-origin\")) {\n            console.warn(error);\n          }\n        }\n      });\n      processedNodeManager.destroy();\n      recording = false;\n      unregisterErrorHandler();\n    };\n  } catch (error) {\n    console.warn(error);\n  }\n}\nrecord.addCustomEvent = (tag, payload) => {\n  if (!recording) {\n    throw new Error(\"please add custom event after start recording\");\n  }\n  wrappedEmit({\n    type: EventType.Custom,\n    data: {\n      tag,\n      payload\n    }\n  });\n};\nrecord.freezePage = () => {\n  mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n  if (!recording) {\n    throw new Error(\"please take full snapshot after start recording\");\n  }\n  takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n  t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n  record\n};\n//# sourceMappingURL=record.js.map\n","import { isMobile } from './GleapHelper';\nimport { record } from '@rrweb/record';\n\nexport default class GleapReplayRecorder {\n  startDate = undefined;\n  events = [];\n  bufferSize = 0;\n  stopFunction = undefined;\n  customOptions = {};\n\n  // GleapReplayRecorder singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapReplayRecorder();\n      return this.instance;\n    } else {\n      return this.instance;\n    }\n  }\n\n  constructor() {}\n\n  setOptions(options) {\n    this.customOptions = options;\n  }\n\n  /**\n   * Start replays\n   * @returns\n   */\n  start() {\n    this.stop();\n\n    this.startDate = Date.now();\n    var events = this.events;\n\n    var options = {\n      inlineStylesheet: true,\n      blockClass: 'gl-block',\n      ignoreClass: 'gl-ignore',\n      maskTextClass: 'gl-mask',\n      dataURLOptions: {\n        quality: 0.7,\n      },\n      recordCanvas: false,\n      sampling: {\n        scroll: 150,\n        mouseInteraction: {\n          MouseUp: false,\n          MouseDown: false,\n          Click: true,\n          ContextMenu: true,\n          DblClick: true,\n          Focus: true,\n          Blur: true,\n          TouchStart: true,\n          TouchEnd: false,\n        },\n      },\n      collectFonts: false,\n      recordCrossOriginIframes: false,\n    };\n\n    try {\n      this.stopFunction = record({\n        ...options,\n        ...this.customOptions,\n        emit(rrwebEvent) {\n          const { event } = ensureMaxMessageSize(rrwebEvent);\n          events.push(event);\n        },\n      });\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  /**\n   * Stop replays\n   * @returns\n   */\n  stop() {\n    if (this.stopFunction) {\n      this.stopFunction();\n    }\n\n    this.startDate = undefined;\n    this.events = [];\n    this.bufferSize = 0;\n  }\n\n  /**\n   * Get the current replay data\n   * @returns {Promise<void>}\n   */\n  getReplayData() {\n    const replayResult = {\n      startDate: this.startDate,\n      events: this.events,\n      baseUrl: window.location.origin,\n      width: window.innerWidth,\n      height: window.innerHeight,\n      isMobile: isMobile(),\n      type: 'rrweb',\n    };\n\n    return replayResult;\n  }\n}\n\nexport function ensureMaxMessageSize(data) {\n  let stringifiedData = JSON.stringify(data);\n  if (stringifiedData.length > 4000000) {\n    const dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n    const matches = stringifiedData.matchAll(dataURIRegex);\n    for (const match of matches) {\n      if (match[1].toLocaleLowerCase().slice(0, 6) === 'image/') {\n        stringifiedData = stringifiedData.replace(\n          match[0],\n          'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC'\n        );\n      } else {\n        stringifiedData = stringifiedData.replace(match[0], '');\n      }\n    }\n  }\n  return { event: JSON.parse(stringifiedData), size: stringifiedData.length };\n}\n","export class ScreenDrawer {\n  rerender;\n  svgElement = null;\n  path = null;\n  strPath;\n  strokeWidth = 12;\n  strokeWidthRect = 6;\n  bufferSize = 4;\n  buffer = [];\n  startPoint = null;\n  tool = 'rect';\n  color = '#EB144C';\n  mouseDown = null;\n  mouseMove = null;\n  mouseUp = null;\n  resizeListener = null;\n  pathBuffer = [];\n\n  constructor(rerender) {\n    const self = this;\n\n    this.rerender = rerender;\n\n    this.svgElement = document.querySelector('.bb-capture-svg');\n    this.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n\n    // Window resize listener.\n    this.resizeListener = function (e) {\n      self.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n    };\n    window.addEventListener('resize', this.resizeListener, true);\n\n    this.mouseDown = function (e) {\n      e.preventDefault();\n\n      const colorpicker = document.querySelector('.bb-capture-toolbar-item-colorpicker');\n      if (colorpicker) {\n        colorpicker.style.display = 'none';\n      }\n\n      self.fadeOutToolbar();\n      if (self.tool === 'pen' || self.tool === 'blur') {\n        self.mouseDownPen(e);\n      }\n      if (self.tool === 'rect') {\n        self.mouseDownRect(e);\n      }\n    };\n\n    this.mouseMove = function (e) {\n      e.preventDefault();\n      if (self.tool === 'pen' || self.tool === 'blur') {\n        self.mouseMovePen(e);\n      }\n      if (self.tool === 'rect') {\n        self.mouseMoveRect(e);\n      }\n    };\n\n    this.mouseUp = function (e) {\n      e.preventDefault();\n      self.fadeInToolbar();\n      if (self.tool === 'pen' || self.tool === 'blur') {\n        self.mouseUpPen(e);\n      }\n      if (self.tool === 'rect') {\n        self.mouseUpRect(e);\n      }\n    };\n\n    this.svgElement.addEventListener('mousedown', this.mouseDown);\n    this.svgElement.addEventListener('mousemove', this.mouseMove);\n    this.svgElement.addEventListener('mouseup', this.mouseUp);\n    this.svgElement.addEventListener('touchstart', this.mouseDown, false);\n    this.svgElement.addEventListener('touchmove', this.mouseMove, false);\n    this.svgElement.addEventListener('touchend', this.mouseUp, false);\n\n    setTimeout(() => {\n      this.rerender();\n    }, 100);\n  }\n\n  clear() {\n    if (this.svgElement) {\n      while (this.svgElement.firstChild) {\n        this.svgElement.firstChild.remove();\n      }\n    }\n  }\n\n  destroy() {\n    this.svgElement.removeEventListener('mousedown', this.mouseDown);\n    this.svgElement.removeEventListener('mousemove', this.mouseMove);\n    this.svgElement.removeEventListener('mouseup', this.mouseUp);\n    this.svgElement.removeEventListener('touchstart', this.mouseDown);\n    this.svgElement.removeEventListener('touchmove', this.mouseMove);\n    this.svgElement.removeEventListener('touchend', this.mouseUp);\n    window.removeEventListener('resize', this.resizeListener);\n  }\n\n  mouseUpPen() {\n    if (this.path) {\n      this.path = null;\n    }\n  }\n\n  mouseUpRect() {\n    if (this.path) {\n      this.path = null;\n    }\n  }\n\n  mouseMovePen(e) {\n    if (this.path) {\n      this.appendToBuffer(this.getMousePosition(e));\n      this.updateSvgPath();\n    }\n  }\n\n  mouseMoveRect(e) {\n    if (this.path) {\n      var p = this.getMousePosition(e);\n      var w = Math.abs(p.x - this.startPoint.x);\n      var h = Math.abs(p.y - this.startPoint.y);\n      var x = p.x;\n      var y = p.y;\n      if (p.x > this.startPoint.x) {\n        x = this.startPoint.x;\n      }\n      if (p.y > this.startPoint.y) {\n        y = this.startPoint.y;\n      }\n\n      this.path.setAttributeNS(null, 'x', x);\n      this.path.setAttributeNS(null, 'y', y);\n      this.path.setAttributeNS(null, 'width', w);\n      this.path.setAttributeNS(null, 'height', h);\n    }\n  }\n\n  mouseDownRect(e) {\n    this.path = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n    this.path.setAttribute('fill', 'none');\n    this.path.setAttribute('stroke', this.color);\n    this.path.setAttribute('stroke-linecap', 'round');\n    this.path.setAttribute('stroke-width', this.strokeWidthRect);\n\n    this.startPoint = this.getMousePosition(e);\n    this.appendPathToSvg(this.path);\n  }\n\n  mouseDownPen(e) {\n    var color = this.color + 'AA';\n    var strokeWidth = this.strokeWidth;\n\n    if (this.tool === 'blur') {\n      color = '#000000';\n      strokeWidth = 40;\n    }\n\n    this.path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n    this.path.setAttribute('fill', 'none');\n    this.path.setAttribute('stroke', color);\n    this.path.setAttribute('stroke-linecap', 'round');\n    this.path.setAttribute('stroke-width', strokeWidth);\n    this.buffer = [];\n    var pt = this.getMousePosition(e);\n    this.appendToBuffer(pt);\n    this.strPath = 'M' + pt.x + ' ' + pt.y;\n    this.path.setAttribute('d', this.strPath);\n    this.appendPathToSvg(this.path);\n  }\n\n  setTool(tool) {\n    this.tool = tool;\n  }\n\n  setColor(color) {\n    this.color = color;\n  }\n\n  getMousePosition(e) {\n    if (e.touches && e.touches.length > 0) {\n      return {\n        x: e.touches[0].clientX,\n        y: e.touches[0].clientY,\n      };\n    }\n\n    return {\n      x: e.clientX,\n      y: e.clientY,\n    };\n  }\n\n  // Calculate the average point, starting at offset in the buffer\n  getAveragePoint(offset) {\n    var len = this.buffer.length;\n    if (len % 2 === 1 || len >= this.bufferSize) {\n      var totalX = 0;\n      var totalY = 0;\n      var pt, i;\n      var count = 0;\n      for (i = offset; i < len; i++) {\n        count++;\n        pt = this.buffer[i];\n        totalX += pt.x;\n        totalY += pt.y;\n      }\n      return {\n        x: totalX / count,\n        y: totalY / count,\n      };\n    }\n    return null;\n  }\n\n  updateSvgPath() {\n    var pt = this.getAveragePoint(0);\n\n    if (pt) {\n      // Get the smoothed part of the path that will not change\n      this.strPath += ' L' + pt.x + ' ' + pt.y;\n\n      // Get the last part of the path (close to the current mouse position)\n      // This part will change if the mouse moves again\n      var tmpPath = '';\n      for (var offset = 2; offset < this.buffer.length; offset += 2) {\n        pt = this.getAveragePoint(offset);\n        tmpPath += ' L' + pt.x + ' ' + pt.y;\n      }\n\n      // Set the complete current path coordinates\n      this.path.setAttribute('d', this.strPath + tmpPath);\n    }\n  }\n\n  appendToBuffer(pt) {\n    this.buffer.push(pt);\n    while (this.buffer.length > this.bufferSize) {\n      this.buffer.shift();\n    }\n  }\n\n  appendPathToSvg(path) {\n    this.svgElement.appendChild(path);\n    this.pathBuffer.push(path);\n    this.rerender();\n  }\n\n  removeLastAddedPathFromSvg() {\n    if (this.pathBuffer.length <= 0 || !this.svgElement) {\n      return;\n    }\n\n    this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length - 1]);\n\n    this.pathBuffer.pop();\n\n    this.rerender();\n  }\n\n  fadeOutToolbar() {\n    var fadeTarget = document.querySelector('.bb-capture-toolbar');\n    if (fadeTarget) {\n      fadeTarget.style.opacity = 0;\n      fadeTarget.style.pointerEvents = 'none';\n    }\n  }\n\n  fadeInToolbar() {\n    var fadeTarget = document.querySelector('.bb-capture-toolbar');\n    if (fadeTarget) {\n      fadeTarget.style.opacity = 1;\n      fadeTarget.style.pointerEvents = 'auto';\n    }\n  }\n}\n","export class GleapScrollStopper {\n  keys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n  supportsPassive = false;\n  wheelOpt = this.supportsPassive ? { passive: false } : false;\n  wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\n  scrollDisabled = false;\n\n  // GleapScrollStopper singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapScrollStopper();\n      return this.instance;\n    } else {\n      return this.instance;\n    }\n  }\n\n  constructor() {\n    const self = this;\n    try {\n      window.addEventListener(\n        'test',\n        null,\n        Object.defineProperty({}, 'passive', {\n          get: function () {\n            self.supportsPassive = true;\n            self.wheelOpt = self.supportsPassive ? { passive: false } : false;\n          },\n        })\n      );\n    } catch (e) {}\n  }\n\n  preventDefault(e) {\n    e.preventDefault();\n  }\n\n  preventDefaultForScrollKeys(e) {\n    if (this.keys && this.keys[e.keyCode]) {\n      this.preventDefault(e);\n      return false;\n    }\n  }\n\n  static disableScroll() {\n    const instance = this.getInstance();\n    if (instance.scrollDisabled) {\n      return;\n    }\n\n    instance.scrollDisabled = true;\n\n    window.addEventListener('DOMMouseScroll', instance.preventDefault, false); // older FF\n    window.addEventListener(instance.wheelEvent, instance.preventDefault, instance.wheelOpt); // modern desktop\n    window.addEventListener('touchmove', instance.preventDefault, instance.wheelOpt); // mobile\n    window.addEventListener('keydown', instance.preventDefaultForScrollKeys, false);\n  }\n\n  static enableScroll() {\n    const instance = this.getInstance();\n    if (!instance.scrollDisabled) {\n      return;\n    }\n\n    instance.scrollDisabled = false;\n    window.removeEventListener('DOMMouseScroll', instance.preventDefault, false);\n    window.removeEventListener(instance.wheelEvent, instance.preventDefault, instance.wheelOpt);\n    window.removeEventListener('touchmove', instance.preventDefault, instance.wheelOpt);\n    window.removeEventListener('keydown', instance.preventDefaultForScrollKeys, false);\n  }\n}\n","import Gleap, { GleapTranslationManager, GleapFrameManager } from './Gleap';\nimport { ScreenDrawer } from './ScreenDrawer';\nimport { GleapScrollStopper } from './GleapScrollStopper';\nimport { GleapScreenRecorder } from './GleapScreenRecorder';\nimport { loadIcon } from './UI';\n\nexport default class GleapMarkerManager {\n  type = 'screenshot';\n  dragCursor = null;\n  screenRecorder = null;\n  callback = null;\n  screenDrawer = null;\n  escListener = null;\n  pageLeaveListener = null;\n  overrideLanguage = Gleap.getInstance().overrideLanguage;\n\n  constructor(type) {\n    this.type = type;\n  }\n\n  hideWidgetUI() {\n    const feedbackButton = document.querySelector('.bb-feedback-button');\n    if (feedbackButton) {\n      feedbackButton.style.display = 'none';\n    }\n\n    const dialogUI = document.querySelector('.bb-feedback-dialog-container');\n    if (dialogUI) {\n      dialogUI.style.display = 'none';\n    }\n  }\n\n  showWidgetUI() {\n    if (this.type === 'screenshot') {\n      GleapScrollStopper.enableScroll();\n    }\n\n    // Stop screenrecording.\n    if (this.screenRecorder) {\n      this.screenRecorder.stopScreenRecording();\n    }\n\n    // Unregister ESC listener\n    this.unregisterListeners();\n\n    // Cleanup mouse pointer\n    this.cleanupMousePointer();\n\n    if (this.screenDrawer) {\n      this.screenDrawer.destroy();\n    }\n\n    // Remove the toolbar UI\n    const dialog = document.querySelector('.bb-capture-toolbar');\n    if (dialog) {\n      dialog.remove();\n    }\n\n    // Capture SVG ref\n    const captureSVG = document.querySelector('.bb-capture-svg');\n    if (captureSVG) {\n      captureSVG.classList.add('bb-capture-svg--preview');\n    }\n\n    // Remove the preview UI\n    const videoPreviewContainer = document.querySelector('.bb-capture-preview');\n    if (videoPreviewContainer) {\n      videoPreviewContainer.remove();\n    }\n\n    // Feedback button\n    const feedbackButton = document.querySelector('.bb-feedback-button');\n    if (feedbackButton) {\n      feedbackButton.style.display = 'flex';\n    }\n\n    // Feedback dialog container\n    const dialogUI = document.querySelector('.bb-feedback-dialog-container');\n    if (dialogUI) {\n      dialogUI.style.display = 'block';\n    }\n\n    // Dismiss button\n    const dismissUI = document.querySelector('.bb-capture-dismiss');\n    if (dismissUI) {\n      dismissUI.style.display = 'none';\n    }\n\n    // Hide the color picker\n    const colorPicker = document.querySelector('.bb-capture-toolbar-item-colorpicker');\n    if (colorPicker) {\n      colorPicker.style.display = 'none';\n    }\n\n    // Border layer\n    const borderLayer = document.querySelector('.bb-capture-editor-borderlayer');\n    if (borderLayer) {\n      borderLayer.style.display = 'none';\n    }\n  }\n\n  clear() {\n    const captureEditor = document.querySelector('.bb-capture-editor');\n    if (captureEditor) {\n      captureEditor.remove();\n    }\n  }\n\n  setMouseMove(x, y) {\n    if (!this.dragCursor) {\n      return;\n    }\n\n    this.dragCursor.style.left = `${x + 6}px`;\n    this.dragCursor.style.top = `${y - 26}px`;\n    this.dragCursor.style.right = null;\n  }\n\n  mouseMoveEventHandler(e) {\n    const x = e.clientX;\n    const y = e.clientY;\n    this.setMouseMove(x, y);\n  }\n\n  touchMoveEventHandler(e) {\n    const x = e.touches[0].clientX;\n    const y = e.touches[0].clientY;\n    this.setMouseMove(x, y);\n  }\n\n  setupMousePointer() {\n    const self = this;\n    this.dragCursor = document.querySelector('.bb-capture-editor-drag-info');\n    const captureSVG = document.querySelector('.bb-capture-svg');\n    captureSVG.addEventListener('mouseenter', (e) => {\n      self.dragCursor.style.opacity = 1;\n    });\n\n    captureSVG.addEventListener('mouseleave', (e) => {\n      self.dragCursor.style.opacity = 0;\n    });\n\n    document.documentElement.addEventListener('mousemove', this.mouseMoveEventHandler.bind(this));\n    document.documentElement.addEventListener('touchmove', this.touchMoveEventHandler.bind(this));\n  }\n\n  cleanupMousePointer() {\n    document.documentElement.removeEventListener('mousemove', this.mouseMoveEventHandler);\n    document.documentElement.removeEventListener('touchmove', this.touchMoveEventHandler);\n\n    // Clean up toolbar drag listeners\n    const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n    if (dragHandle) {\n      dragHandle.removeEventListener('mousedown', this.dragStart);\n      dragHandle.removeEventListener('touchstart', this.dragStart);\n      document.removeEventListener('mousemove', this.drag);\n      document.removeEventListener('touchmove', this.drag);\n      document.removeEventListener('mouseup', this.dragEnd);\n      document.removeEventListener('touchend', this.dragEnd);\n    }\n\n    if (this.dragCursor) {\n      this.dragCursor.remove();\n    }\n  }\n\n  createEditorUI() {\n    // Add HTML for drawing and recording\n    var bugReportingEditor = document.createElement('div');\n    bugReportingEditor.className = 'bb-capture-editor';\n    bugReportingEditor.innerHTML = `\n          <div class=\"bb-capture-editor-borderlayer\"></div>\n          <svg class=\"bb-capture-svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" xml:space=\"preserve\"></svg>\n          <div class=\"bb-capture-dismiss\">${loadIcon('dismiss')}</div>\n          <div class='bb-capture-editor-drag-info'>${loadIcon('rect')}</div>\n          <div class=\"bb-capture-toolbar\">\n            <div class=\"bb-capture-toolbar-item bb-capture-item-rec bb-capture-toolbar-item-tool drag-handle-item\" data-type=\"drag\">\n              ${loadIcon('drag')}\n            </div>\n            ${\n              this.type === 'capture'\n                ? `<div class=\"bb-capture-toolbar-item bb-capture-item-rec bb-capture-toolbar-item-recording\" data-type=\"recording\">\n                  ${loadIcon('recorderon')}\n                  ${loadIcon('recorderoff')}\n                  <span class=\"bb-tooltip bb-tooltip-screen-recording\"></span>\n                </div>\n                <div class=\"bb-capture-toolbar-item bb-capture-item-rec\" data-type=\"mic\">\n                  ${loadIcon('mic')}\n                  <span class=\"bb-tooltip bb-tooltip-audio-recording\"></span>\n                </div>\n                <div class=\"bb-capture-toolbar-item-timer bb-capture-item-rec\">2:00</div>\n                <div class=\"bb-capture-toolbar-item-spacer\"></div>\n                <div class=\"bb-capture-toolbar-item bb-capture-toolbar-drawingitem bb-capture-toolbar-item-tool\" data-type=\"pointer\">\n                  ${loadIcon('pointer')}\n                </div>`\n                : ''\n            }\n            <div class=\"bb-capture-toolbar-item bb-capture-toolbar-drawingitem bb-capture-toolbar-item-tool bb-capture-toolbar-item--active\" data-type=\"rect\">\n              ${loadIcon('rect')}\n            </div>\n            <div class=\"bb-capture-toolbar-item bb-capture-toolbar-drawingitem bb-capture-toolbar-item-tool\" data-type=\"pen\">\n              ${loadIcon('pen')}\n            </div>\n            <div class=\"bb-capture-toolbar-item bb-capture-toolbar-drawingitem bb-capture-toolbar-item-tool\" data-type=\"blur\">\n              ${loadIcon('blur')}\n            </div>\n            <div class=\"bb-capture-toolbar-item bb-capture-toolbar-drawingitem\" data-type=\"colorpicker\">\n              <div class=\"bb-capture-toolbar-item-selectedcolor\"></div>\n              <span class=\"bb-tooltip\">${GleapTranslationManager.translateText(`pickAColor`)}</span>\n            </div>\n            <div class=\"bb-capture-toolbar-item bb-capture-toolbar-drawingitem bb-capture-toolbar-item-tool\" data-type=\"undo\">\n              ${loadIcon('undo')}\n              <span class=\"bb-tooltip\">${GleapTranslationManager.translateText(`undo`)}</span>\n            </div>\n            ${\n              this.type !== 'capture'\n                ? `<div class=\"bb-capture-button-next\">${GleapTranslationManager.translateText(`next`)}</div>`\n                : ''\n            }\n          </div>\n          <div class=\"bb-capture-toolbar-item-colorpicker\">\n            <div class=\"bb-capture-toolbar-item-color\" data-color=\"#EB144C\"></div>\n            <div class=\"bb-capture-toolbar-item-color\" data-color=\"#FF6705\"></div>\n            <div class=\"bb-capture-toolbar-item-color\" data-color=\"#FDB903\"></div>\n            <div class=\"bb-capture-toolbar-item-color\" data-color=\"#9900EE\"></div>\n            <div class=\"bb-capture-toolbar-item-color\" data-color=\"#00D082\"></div>\n            <div class=\"bb-capture-toolbar-item-color\" data-color=\"#0A93E4\"></div>\n            <div class=\"bb-capture-toolbar-item-color\" data-color=\"#CCCCCC\"></div>\n          </div>\n          <div class=\"bb-capture-preview\">\n            <div class=\"bb-capture-preview-inner\">\n              <video controls muted autoplay></video>\n              <div class=\"bb-capture-preview-buttons\">\n                <div class=\"bb-capture-preview-retrybutton\">${GleapTranslationManager.translateText(`retry`)}</div>\n                <div class=\"bb-capture-preview-sendbutton\">${GleapTranslationManager.translateText(`next`)}</div>\n              </div>\n            </div>\n          </div>\n        `;\n    document.body.appendChild(bugReportingEditor);\n\n    // Set RTL layout\n    bugReportingEditor.setAttribute('dir', GleapTranslationManager.getInstance().isRTLLayout ? 'rtl' : 'ltr');\n  }\n\n  showNextStep = function () {\n    // Adapt the UI\n    this.showWidgetUI();\n\n    if (this.callback) {\n      GleapFrameManager.getInstance().sendMessage({\n        name: 'set-form-data',\n        data: {\n          formKey: 'capture',\n          data: {\n            value: this.type,\n            dirty: true,\n          },\n        },\n      });\n      this.callback(true);\n    }\n  };\n\n  unregisterListeners() {\n    if (this.escListener) {\n      document.removeEventListener('keydown', this.escListener);\n    }\n\n    if (this.pageLeaveListener) {\n      window.removeEventListener('beforeunload', this.pageLeaveListener);\n    }\n  }\n\n  registerListeners() {\n    const self = this;\n\n    // Esc listener\n    this.escListener = function (evt) {\n      evt = evt || window.event;\n      var isEscape = false;\n      var isEnter = false;\n      if ('key' in evt) {\n        isEscape = evt.key === 'Escape';\n        isEnter = evt.key === 'Enter';\n      }\n      if (isEscape) {\n        self.dismiss();\n      }\n      if (self.type === 'screenshot' && isEnter) {\n        self.showNextStep();\n      }\n    };\n    document.addEventListener('keydown', this.escListener);\n\n    // Page leave listener\n    this.pageLeaveListener = function (event) {\n      event.preventDefault();\n      event.returnValue = '';\n    };\n    window.addEventListener('beforeunload', this.pageLeaveListener);\n  }\n\n  show(callback) {\n    this.callback = callback;\n    const self = this;\n\n    // Register for listeners\n    this.registerListeners();\n\n    // Hide widget UI\n    this.hideWidgetUI();\n\n    // Create the editor UI\n    this.createEditorUI();\n\n    // Setup the mouse pointer\n    this.setupMousePointer();\n\n    // Setup screenshot data\n    if (this.type === 'screenshot') {\n      // Overwrite snapshot position\n      Gleap.getInstance().setGlobalDataItem('snapshotPosition', {\n        x: window.scrollX,\n        y: window.scrollY,\n      });\n\n      // Disable scroll\n      GleapScrollStopper.disableScroll();\n    } else {\n      // Setup screen recording\n      this.setupScreenRecording();\n    }\n\n    // Hook up the drawing.\n    this.screenDrawer = new ScreenDrawer(this.captureScreenDrawerRerender.bind(this));\n\n    this.setupColorPicker();\n    this.setupToolbar();\n  }\n\n  setupColorPicker() {\n    const self = this;\n    const selectedColor = document.querySelector('.bb-capture-toolbar-item-selectedcolor');\n    const colorItems = document.querySelectorAll('.bb-capture-toolbar-item-color');\n    const colorpicker = document.querySelector('.bb-capture-toolbar-item-colorpicker');\n\n    for (var i = 0; i < colorItems.length; i++) {\n      const colorItem = colorItems[i];\n      const hexColor = colorItem.getAttribute('data-color');\n      colorItem.style.backgroundColor = hexColor;\n      colorItem.onclick = function () {\n        if (colorItem) {\n          self.screenDrawer.setColor(hexColor);\n          if (colorpicker) {\n            colorpicker.style.display = 'none';\n          }\n          selectedColor.style.backgroundColor = colorItem.style.backgroundColor;\n          GleapMarkerManager.setPenColor(hexColor);\n        }\n      };\n    }\n  }\n\n  static setPenColor(hexColor) {\n    const penTips = document.querySelectorAll('.bb-pen-tip');\n    for (var j = 0; j < penTips.length; j++) {\n      penTips[j].style.fill = hexColor;\n    }\n  }\n\n  dismiss() {\n    this.showWidgetUI();\n\n    if (this.callback) {\n      this.callback(false);\n    }\n  }\n\n  setupToolbar() {\n    const self = this;\n    const toolbar = document.querySelector('.bb-capture-toolbar');\n    let isDragging = false;\n    let currentX;\n    let currentY;\n    let initialX;\n    let initialY;\n    let xOffset = 0;\n    let yOffset = 0;\n\n    const getTransformValues = () => {\n      const transform = window.getComputedStyle(toolbar).transform;\n      if (transform === 'none') return { x: 0, y: 0 };\n      const matrix = new DOMMatrix(transform);\n      return { x: matrix.m41, y: matrix.m42 };\n    };\n\n    this.dragStart = (e) => {\n      const { x, y } = getTransformValues();\n      xOffset = x;\n      yOffset = y;\n\n      if (e.type === 'mousedown') {\n        initialX = e.clientX - xOffset;\n        initialY = e.clientY - yOffset;\n      } else {\n        initialX = e.touches[0].clientX - xOffset;\n        initialY = e.touches[0].clientY - yOffset;\n      }\n      isDragging = true;\n    };\n\n    this.dragEnd = () => {\n      isDragging = false;\n    };\n\n    this.drag = (e) => {\n      if (isDragging) {\n        e.preventDefault();\n        if (e.type === 'mousemove') {\n          currentX = e.clientX - initialX;\n          currentY = e.clientY - initialY;\n        } else {\n          currentX = e.touches[0].clientX - initialX;\n          currentY = e.touches[0].clientY - initialY;\n        }\n\n        xOffset = currentX;\n        yOffset = currentY;\n\n        toolbar.style.transform = `translate(${currentX}px, ${currentY}px)`;\n      }\n    };\n\n    const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n\n    dragHandle.addEventListener('mousedown', this.dragStart);\n    dragHandle.addEventListener('touchstart', this.dragStart);\n    document.addEventListener('mousemove', this.drag);\n    document.addEventListener('touchmove', this.drag);\n    document.addEventListener('mouseup', this.dragEnd);\n    document.addEventListener('touchend', this.dragEnd);\n\n    // Hook up dismiss button\n    const dismissButton = document.querySelector('.bb-capture-dismiss');\n    dismissButton.onclick = function () {\n      self.dismiss();\n    };\n\n    // Hook up send button\n    const nextButton = document.querySelector('.bb-capture-button-next');\n    if (nextButton) {\n      nextButton.onclick = this.showNextStep.bind(this);\n    }\n\n    const colorpicker = document.querySelector('.bb-capture-toolbar-item-colorpicker');\n\n    // Capture SVG ref\n    const captureSVG = document.querySelector('.bb-capture-svg');\n\n    const chooseTool = function (type, toolbarItem) {\n      const toolbarTools = document.querySelectorAll('.bb-capture-toolbar-item-tool');\n      for (let j = 0; j < toolbarTools.length; j++) {\n        toolbarTools[j].classList.remove('bb-capture-toolbar-item--active');\n      }\n      toolbarItem.classList.add('bb-capture-toolbar-item--active');\n      self.screenDrawer.setTool(type);\n      self.dragCursor.innerHTML = '';\n      if (type === 'pointer') {\n        captureSVG.style.pointerEvents = 'none';\n      } else {\n        captureSVG.style.pointerEvents = 'auto';\n        try {\n          var svgClone = toolbarItem.querySelector('svg').cloneNode(true);\n          if (svgClone && self.dragCursor) {\n            self.dragCursor.appendChild(svgClone);\n          }\n        } catch (exp) {}\n      }\n    };\n\n    // Setup toolbar items\n    var toolbarItems = document.querySelectorAll('.bb-capture-toolbar-item');\n    for (var i = 0; i < toolbarItems.length; i++) {\n      const toolbarItem = toolbarItems[i];\n      toolbarItem.onclick = function () {\n        const type = toolbarItem.getAttribute('data-type');\n        if (colorpicker && type !== 'colorpicker') {\n          colorpicker.style.display = 'none';\n        }\n\n        // Mic & recording buttons\n        if (type === 'mic') {\n          self.screenRecorder.toggleAudio();\n        }\n        if (type === 'recording') {\n          if (self.screenRecorder.isRecording) {\n            self.screenRecorder.stopScreenRecording();\n          } else {\n            self.screenRecorder.startScreenRecording();\n            chooseTool('pointer', document.querySelector(\".bb-capture-toolbar-item[data-type='pointer']\"));\n          }\n        }\n\n        // Marker buttons\n        if (self.type === 'capture' && !self.screenRecorder.isRecording) {\n          // Inactivate buttons.\n          return;\n        }\n        if (type === 'pen' || type === 'blur' || type === 'rect' || type === 'pointer') {\n          chooseTool(type, toolbarItem);\n        }\n        if (type === 'colorpicker') {\n          if (colorpicker.style.display === 'flex') {\n            colorpicker.style.display = 'none';\n          } else {\n            colorpicker.style.display = 'flex';\n          }\n        }\n        if (type === 'undo') {\n          self.screenDrawer.removeLastAddedPathFromSvg();\n        }\n      };\n    }\n  }\n\n  captureScreenDrawerRerender() {\n    if (!this.screenDrawer) {\n      return;\n    }\n\n    const itemInactiveClass = 'bb-capture-editor-item-inactive';\n    const toolbarItems = document.querySelectorAll('.bb-capture-toolbar-item');\n    for (var i = 0; i < toolbarItems.length; i++) {\n      const toolbarItem = toolbarItems[i];\n      const type = toolbarItem.getAttribute('data-type');\n      switch (type) {\n        case 'undo':\n          if (this.screenDrawer.pathBuffer != null && this.screenDrawer.pathBuffer.length > 0) {\n            toolbarItem.classList.remove(itemInactiveClass);\n          } else {\n            toolbarItem.classList.add(itemInactiveClass);\n          }\n          break;\n        default:\n          break;\n      }\n    }\n  }\n\n  captureRenderer() {\n    if (!this.screenRecorder) {\n      return;\n    }\n\n    if (this.screenRecorder.file) {\n      Gleap.getInstance().setGlobalDataItem('screenRecordingData', this.screenRecorder.file);\n    }\n\n    const itemInactiveClass = 'bb-capture-editor-item-inactive';\n    const timerLabel = document.querySelector('.bb-capture-toolbar-item-timer');\n    const toolbarItems = document.querySelectorAll('.bb-capture-toolbar-item');\n    const screenRecordingTooltip = document.querySelector('.bb-tooltip-screen-recording');\n    const audioRecordingTooltip = document.querySelector('.bb-tooltip-audio-recording');\n    const captureEditor = document.querySelector('.bb-capture-editor');\n    const recordingClass = 'bb-capture-editor-recording';\n    const notRecordingClass = 'bb-capture-editor-notrecording';\n    if (this.screenRecorder.isRecording) {\n      captureEditor.classList.add(recordingClass);\n      captureEditor.classList.remove(notRecordingClass);\n    } else {\n      captureEditor.classList.add(notRecordingClass);\n      captureEditor.classList.remove(recordingClass);\n    }\n\n    // Update UI.\n    const dialog = document.querySelector('.bb-capture-toolbar');\n    const videoPreviewContainer = document.querySelector('.bb-capture-preview');\n    videoPreviewContainer.style.display = this.screenRecorder.file ? 'flex' : 'none';\n    dialog.style.display = !this.screenRecorder.file ? 'flex' : 'none';\n\n    for (var i = 0; i < toolbarItems.length; i++) {\n      const toolbarItem = toolbarItems[i];\n      const type = toolbarItem.getAttribute('data-type');\n      switch (type) {\n        case 'mic':\n          if (this.screenRecorder.audioAvailable && this.screenRecorder.available) {\n            toolbarItem.classList.remove(itemInactiveClass);\n            if (!this.screenRecorder.audioMuted) {\n              toolbarItem.classList.remove('bb-capture-toolbar-item--inactivecross');\n              audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText('mute');\n            } else {\n              toolbarItem.classList.add('bb-capture-toolbar-item--inactivecross');\n              audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText('unmute');\n            }\n          } else {\n            toolbarItem.classList.add(itemInactiveClass);\n            toolbarItem.classList.add('bb-capture-toolbar-item--inactivecross');\n            audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText('browserNotSupported');\n          }\n          break;\n\n        case 'recording':\n          if (this.screenRecorder.available) {\n            toolbarItem.classList.remove(itemInactiveClass);\n            if (this.screenRecorder.isRecording) {\n              toolbarItem.setAttribute('data-active', 'true');\n              screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText('stopRecording');\n              timerLabel.style.display = 'block';\n            } else {\n              toolbarItem.setAttribute('data-active', 'false');\n              screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText('startRecording');\n              timerLabel.style.display = 'none';\n            }\n          } else {\n            // Recording is not available.\n            toolbarItem.classList.add(itemInactiveClass);\n            screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText('browserNotSupported');\n          }\n          break;\n\n        default:\n          break;\n      }\n    }\n  }\n\n  setupScreenRecording() {\n    const self = this;\n\n    // Hook preview next button\n    const nextButtonPreview = document.querySelector('.bb-capture-preview-sendbutton');\n    nextButtonPreview.onclick = this.showNextStep.bind(this);\n\n    // Hook retry button\n    const retryButton = document.querySelector('.bb-capture-preview-retrybutton');\n    retryButton.onclick = function () {\n      self.screenRecorder.clearPreview();\n      if (self.screenDrawer) {\n        self.screenDrawer.clear();\n      }\n    };\n\n    // Setup screen recorder\n    this.screenRecorder = new GleapScreenRecorder(\n      this.captureRenderer.bind(this),\n      GleapTranslationManager.translateText('accessToScreenSharingDenied')\n    );\n  }\n}\n","import { GleapFrameManager, GleapFeedbackButtonManager, GleapConfigManager } from './Gleap';\n\nexport default class GleapTranslationManager {\n  overrideLanguage = '';\n  isRTLLayout = false;\n\n  // GleapTranslationManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapTranslationManager();\n    }\n    return this.instance;\n  }\n\n  /**\n   * Returns the language to override the default language.\n   * @returns {string}\n   */\n  getOverrideLanguage() {\n    return this.overrideLanguage;\n  }\n\n  /**\n   * Sets the language to override the default language.\n   * @param {*} language\n   */\n  setOverrideLanguage(language) {\n    this.overrideLanguage = language;\n  }\n\n  updateRTLSupport() {\n    // Update RTL support.\n    const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n    this.isRTLLayout = false;\n    if (flowConfig && flowConfig.localizationOptions && flowConfig.localizationOptions.rtl) {\n      this.isRTLLayout = true;\n    }\n\n    GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n    GleapFrameManager.getInstance().updateFrameStyle();\n  }\n\n  getActiveLanguage() {\n    var language = 'en';\n    if (typeof navigator !== 'undefined') {\n      language = navigator.language.toLowerCase();\n    }\n\n    // Get language from HTML lang attribute if available\n    if (typeof document !== 'undefined' && document.documentElement) {\n      const htmlLang = document.documentElement.lang;\n      if (htmlLang && htmlLang.trim() !== '') {\n        language = htmlLang.toLowerCase().trim();\n      }\n    }\n\n    if (this.overrideLanguage && this.overrideLanguage !== '') {\n      language = this.overrideLanguage.toLowerCase();\n    }\n\n    return language;\n  }\n\n  static translateText(key) {\n    if (!key) {\n      return '';\n    }\n\n    const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n    const staticTranslation = flowConfig.staticTranslations;\n\n    if (staticTranslation && staticTranslation[key]) {\n      return staticTranslation[key];\n    }\n\n    return key;\n  }\n\n  static translateTextWithVars(key, vars) {\n    if (!key) {\n      return '';\n    }\n\n    var template = this.translateText(key);\n    if (!template) {\n      return '';\n    }\n\n    return template.replace(/{(\\w+)}/g, function (_, key) {\n      return vars[key];\n    });\n  }\n}\n","import Gleap from './Gleap';\n\nexport default class GleapShortcutListener {\n  shortCutListener = undefined;\n\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapShortcutListener();\n    }\n    return this.instance;\n  }\n\n  start() {\n    if (this.shortCutListener) {\n      return;\n    }\n\n    const charForEvent = function (event) {\n      var code;\n\n      if (event.key !== undefined) {\n        code = event.key;\n      } else if (event.keyIdentifier !== undefined) {\n        code = event.keyIdentifier;\n      } else if (event.keyCode !== undefined) {\n        code = event.keyCode;\n      }\n\n      return code;\n    };\n\n    this.shortCutListener = document.addEventListener('keyup', function (e) {\n      const char = charForEvent(e);\n      if (e.ctrlKey && (char === 'u' || char === 'U' || char === 85)) {\n        Gleap.startFeedbackFlowWithOptions('bugreporting', {\n          autostartDrawing: true,\n        });\n      }\n    });\n  }\n\n  stop() {\n    if (this.shortCutListener) {\n      document.removeEventListener('keyup', this.shortCutListener);\n      this.shortCutListener = undefined;\n    }\n  }\n}\n","export default class GleapPreFillManager {\n  formPreFill = {};\n\n  // GleapPreFillManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapPreFillManager();\n    }\n    return this.instance;\n  }\n}\n","import Gleap, {\n  GleapFeedbackButtonManager,\n  GleapConfigManager,\n  GleapSession,\n  GleapAudioManager,\n  GleapTranslationManager,\n  GleapEventManager,\n} from './Gleap';\nimport { loadFromGleapCache, saveToGleapCache } from './GleapHelper';\nimport { loadIcon } from './UI';\n\nexport default class GleapNotificationManager {\n  notificationContainer = null;\n  notifications = [];\n  unreadCount = 0;\n  unreadNotificationsKey = 'unread-notifications';\n  isTabActive = true;\n  showNotificationBadge = true;\n\n  // Keep track of the current index of news being shown\n  currentNewsIndex = 0;\n\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapNotificationManager();\n    }\n    return this.instance;\n  }\n\n  constructor() {}\n\n  updateTabBarNotificationCount() {\n    GleapEventManager.notifyEvent('unread-count-changed', this.unreadCount);\n  }\n\n  injectNotificationUI() {\n    if (this.notificationContainer) {\n      return;\n    }\n\n    var elem = document.createElement('div');\n    elem.className = 'gleap-notification-container gleap-font';\n    document.body.appendChild(elem);\n    this.notificationContainer = elem;\n\n    this.updateContainerStyle();\n    this.reloadNotificationsFromCache();\n  }\n\n  reloadNotificationsFromCache() {\n    try {\n      const notificationsFromCache = loadFromGleapCache(this.unreadNotificationsKey);\n      if (notificationsFromCache && notificationsFromCache.length > 0) {\n        let nots = notificationsFromCache.filter(\n          (notification) => new Date(notification.createdAt) > new Date(Date.now() - 1 * 60 * 60 * 1000)\n        );\n\n        if (nots.length > 2) {\n          this.notifications = nots.splice(0, nots.length - 2);\n        } else {\n          this.notifications = nots;\n        }\n        this.renderNotifications();\n      }\n    } catch (exp) {}\n  }\n\n  setNotificationCount(unreadCount) {\n    this.unreadCount = unreadCount;\n    this.updateTabBarNotificationCount();\n\n    // Update the badge counter.\n    GleapFeedbackButtonManager.getInstance().updateNotificationBadge(this.unreadCount);\n  }\n\n  showNotification(notification) {\n    if (!(this.notificationContainer && notification && notification.data)) {\n      return;\n    }\n\n    const notificationsForOutbound = this.notifications.find((e) => notification.outbound === e.outbound);\n    if (!notificationsForOutbound) {\n      this.notifications.push(notification);\n\n      // Play sound only if it's a new one\n      if (notification.sound) {\n        GleapAudioManager.ping();\n      }\n    }\n    if (this.notifications.length > 2) {\n      this.notifications.shift();\n    }\n\n    // Persist notifications.\n    saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n\n    this.renderNotifications();\n  }\n\n  /**\n   * Renders notifications. For news-type notifications, only show\n   * one at a time if there are multiple, with a \"Next\" button to cycle.\n   * The \"Next\" button + pagination are placed within the news content area.\n   *\n   * - Sorts news notifications by createdAt (oldest first).\n   * - Shows \"Done\" on the last news item instead of \"Next\".\n   */\n  renderNotifications() {\n    if (!this.notificationContainer) {\n      return;\n    }\n\n    // Clear the existing notifications in the container (UI only).\n    this.clearAllNotifications(true);\n\n    // Append a close button (which clears everything).\n    const clearElem = document.createElement('div');\n    clearElem.onclick = () => {\n      this.clearAllNotifications();\n      // Reset the news index when everything is closed\n      this.currentNewsIndex = 0;\n    };\n    clearElem.className = 'gleap-notification-close';\n    clearElem.innerHTML = loadIcon('dismiss');\n    this.notificationContainer.appendChild(clearElem);\n\n    // Separate out news notifications vs. others, then sort news by date ascending\n    const newsNotifications = this.notifications\n      .filter((n) => n.data.news)\n      .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n\n    const otherNotifications = this.notifications.filter((n) => !n.data.news);\n\n    // --- Render NEWS notifications (with pagination) ---\n    if (newsNotifications.length > 0) {\n      // We only show ONE news item at a time if there's more than one\n      const currentIndex = this.currentNewsIndex < newsNotifications.length ? this.currentNewsIndex : 0;\n      const currentNews = newsNotifications[currentIndex];\n\n      // Main wrapper for the news notification\n      const newsElem = document.createElement('div');\n      newsElem.className = 'gleap-notification-item-news';\n\n      // The container that holds image + content\n      const newsContainerElem = document.createElement('div');\n      newsContainerElem.className = 'gleap-notification-item-news-container';\n\n      // Create the image element (clickable)\n      if (\n        currentNews.data.coverImageUrl &&\n        currentNews.data.coverImageUrl !== '' &&\n        !currentNews.data.coverImageUrl.includes('NewsImagePlaceholder')\n      ) {\n        const newsImageElem = document.createElement('img');\n        newsImageElem.className = 'gleap-notification-item-news-image';\n        newsImageElem.src = currentNews.data.coverImageUrl;\n\n        // Only the image is clickable\n        newsImageElem.onclick = (e) => {\n          e.stopPropagation();\n          this.openNews(currentNews);\n        };\n        newsContainerElem.appendChild(newsImageElem);\n      }\n\n      // The content container\n      const newsContentElem = document.createElement('div');\n      newsContentElem.className = 'gleap-notification-item-news-content';\n\n      // Title (clickable)\n      const newsTitleElem = document.createElement('div');\n      newsTitleElem.className = 'gleap-notification-item-news-content-title';\n\n      let content = currentNews.data.text || '';\n      content = content.replaceAll('{{name}}', GleapSession.getInstance().getName());\n      newsTitleElem.innerText = content;\n\n      // Only the title is clickable\n      newsTitleElem.onclick = (e) => {\n        e.stopPropagation();\n        this.openNews(currentNews);\n      };\n\n      newsContentElem.appendChild(newsTitleElem);\n\n      // Description / Sender\n      const descHTML = this.renderDescription(currentNews);\n      if (descHTML) {\n        const descElem = document.createElement('div');\n        descElem.className = 'gleap-notification-item-news-preview';\n        descElem.innerHTML = descHTML;\n        newsContentElem.appendChild(descElem);\n      }\n\n      // If there's more than one news item, show pagination + next/done button\n      if (newsNotifications.length > 1) {\n        // Pagination container (still inside .gleap-notification-item-news-content)\n        const paginationElem = document.createElement('div');\n        paginationElem.className = 'gleap-news-pagination';\n\n        // Show current item / total\n        const pageIndicator = document.createElement('span');\n        pageIndicator.className = 'gleap-news-page-indicator';\n        pageIndicator.innerText = `${currentIndex + 1} / ${newsNotifications.length}`;\n        paginationElem.appendChild(pageIndicator);\n\n        // Next or Done button\n        const nextBtn = document.createElement('button');\n        nextBtn.className = 'gleap-news-next-button';\n\n        if (currentIndex < newsNotifications.length - 1) {\n          nextBtn.innerText = GleapTranslationManager.translateText(`next`);\n          nextBtn.onclick = (e) => {\n            e.stopPropagation(); // so we can click the button freely\n            this.currentNewsIndex++;\n            this.renderNotifications();\n          };\n        } else {\n          nextBtn.innerText = GleapTranslationManager.translateText(`done`);\n          nextBtn.onclick = (e) => {\n            e.stopPropagation();\n            this.clearAllNotifications();\n            this.currentNewsIndex = 0;\n          };\n        }\n        paginationElem.appendChild(nextBtn);\n        newsContentElem.appendChild(paginationElem);\n      }\n\n      // Append content to container\n      newsContainerElem.appendChild(newsContentElem);\n      // Append container to the main element\n      newsElem.appendChild(newsContainerElem);\n      // Finally append to the notification container\n      this.notificationContainer.appendChild(newsElem);\n    }\n\n    // --- Render OTHER notifications normally ---\n    for (let i = 0; i < otherNotifications.length; i++) {\n      const notification = otherNotifications[i];\n      let content = notification.data.text || '';\n      // Replace placeholders\n      content = content.replaceAll('{{name}}', GleapSession.getInstance().getName());\n\n      const elem = document.createElement('div');\n      elem.onclick = () => {\n        if (notification.data.conversation) {\n          Gleap.openConversation(notification.data.conversation.shareToken, true);\n        } else if (notification.data.checklist) {\n          Gleap.openChecklist(notification.data.checklist.id, true);\n        } else {\n          Gleap.open();\n        }\n      };\n\n      // Check if it's a checklist type\n      if (notification.data.checklist) {\n        let progress = Math.round((notification.data.currentStep / notification.data.totalSteps) * 100);\n        if (progress < 100) {\n          progress += 4;\n        }\n\n        elem.className = 'gleap-notification-item-checklist';\n        elem.innerHTML = `\n          <div class=\"gleap-notification-item-checklist-container\">\n            <div class=\"gleap-notification-item-checklist-content\">\n              <div class=\"gleap-notification-item-checklist-content-title\">\n                ${notification.data.text}\n              </div>\n              <div class=\"gleap-notification-item-checklist-content-progress\">\n                <div class=\"gleap-notification-item-checklist-content-progress-inner\" style=\"width: ${progress}%;\"></div>\n              </div>\n              <div class=\"gleap-notification-item-checklist-content-next\">\n                <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n                  fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <path d=\"M4 12H20M20 12L14 6M20 12L14 18\"\n                    stroke=\"currentColor\" stroke-width=\"2\"\n                    stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                </svg>\n                ${notification.data.nextStepTitle}\n              </div>\n            </div>\n          </div>`;\n      } else {\n        // Standard non-news notification\n        elem.className = 'gleap-notification-item';\n        elem.innerHTML = `\n          ${\n            notification.data.sender &&\n            notification.data.sender.profileImageUrl &&\n            `<img src=\"${notification.data.sender.profileImageUrl}\" />`\n          }\n          <div class=\"gleap-notification-item-container\">\n            ${\n              notification.data.sender\n                ? `<div class=\"gleap-notification-item-sender\">\n                     ${notification.data.sender.name}\n                   </div>`\n                : ''\n            }\n            <div class=\"gleap-notification-item-content\">${content}</div>\n          </div>`;\n      }\n      this.notificationContainer.appendChild(elem);\n    }\n\n    const hasNotifications = newsNotifications.length > 0 || otherNotifications.length > 0;\n    if (!hasNotifications) {\n      // Clear the notification container\n      this.clearAllNotifications(true);\n    }\n  }\n\n  /**\n   * Helper to open news from a given notification.\n   */\n  openNews(notification) {\n    if (notification.data.news) {\n      Gleap.openNewsArticle(notification.data.news.id, true);\n    } else {\n      Gleap.open();\n    }\n  }\n\n  /**\n   * Helper to render preview or sender info for news notifications.\n   */\n  renderDescription(notification) {\n    const { previewText, sender } = notification.data;\n    if (previewText && previewText.length > 0) {\n      return previewText;\n    } else if (sender) {\n      // Return HTML for the sender name + optional image\n      return `\n        <div class=\"gleap-notification-item-news-sender\">\n          ${sender.profileImageUrl ? `<img src=\"${sender.profileImageUrl}\" alt=\"${sender.name}\" />` : ''}\n          ${sender.name}\n        </div>\n      `;\n    }\n    return '';\n  }\n\n  /**\n   * Clears all notifications from the container.\n   *\n   * @param {boolean} uiOnly - Whether to only clear the UI or also the notifications.\n   */\n  clearAllNotifications(uiOnly = false) {\n    if (!this.notificationContainer) {\n      return;\n    }\n\n    if (!uiOnly) {\n      this.notifications = [];\n      // Reset currentNewsIndex whenever we clear them out\n      this.currentNewsIndex = 0;\n      saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n    }\n\n    while (this.notificationContainer.firstChild) {\n      this.notificationContainer.removeChild(this.notificationContainer.firstChild);\n    }\n  }\n\n  updateContainerStyle() {\n    if (!this.notificationContainer) {\n      return;\n    }\n\n    const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n    const classLeft = 'gleap-notification-container--left';\n    const classNoButton = 'gleap-notification-container--no-button';\n    this.notificationContainer.classList.remove(classLeft);\n    this.notificationContainer.classList.remove(classNoButton);\n\n    if (\n      flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT ||\n      flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n    ) {\n      this.notificationContainer.classList.add(classLeft);\n    }\n\n    if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n      if (flowConfig.feedbackButtonPosition === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n        this.notificationContainer.classList.add(classNoButton);\n      }\n    } else {\n      if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n        this.notificationContainer.classList.add(classNoButton);\n      }\n    }\n\n    this.notificationContainer.setAttribute('dir', GleapTranslationManager.getInstance().isRTLLayout ? 'rtl' : 'ltr');\n  }\n}\n","import { GleapFrameManager, GleapConfigManager } from './Gleap';\n\nexport default class GleapAiChatbarManager {\n  aiUIContainer = null;\n  shadowRoot = null;\n  innerContainer = null;\n  quickActionsContainer = null;\n  quickActions = [];\n  animationTimeouts = new Set();\n  inputText = '';\n  inputElement = null;\n  sendButton = null;\n  manuallyHidden = false;\n  placeholder = 'Ask me anything...';\n  onMessageSend = null;\n  isHidden = true;\n  config = null;\n\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapAiChatbarManager();\n    }\n    return this.instance;\n  }\n\n  constructor() {\n    // Bind methods to ensure proper context\n    this.show = this.show.bind(this);\n    this.hide = this.hide.bind(this);\n    this.destroy = this.destroy.bind(this);\n  }\n\n  setConfig(config) {\n    this.config = config;\n\n    if (config.placeholder) {\n      this.setPlaceholder(config.placeholder);\n    }\n\n    if (config.quickActions && config.quickActions.length > 0) {\n      this.setQuickActions(config.quickActions);\n    }\n\n    if (config.enabled) {\n      this.show();\n    }\n  }\n\n  updateUIVisibility() {\n    if (!this.config?.enabled) {\n      return;\n    }\n\n    const isOpened = GleapFrameManager.getInstance().isOpened();\n    if (isOpened) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  }\n\n  setPlaceholder(placeholder) {\n    this.placeholder = placeholder;\n\n    if (this.inputElement) {\n      this.inputElement.placeholder = placeholder;\n    }\n  }\n\n  setOnMessageSend(callback) {\n    this.onMessageSend = callback;\n  }\n\n  arraysEqual(arr1, arr2) {\n    // Quick length check\n    if (arr1.length !== arr2.length) {\n      return false;\n    }\n\n    // Compare each element\n    for (let i = 0; i < arr1.length; i++) {\n      if (arr1[i] !== arr2[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  show() {\n    if (!this.config?.enabled) {\n      return;\n    }\n\n    if (this.manuallyHidden) {\n      return;\n    }\n\n    if (!this.aiUIContainer) {\n      return;\n    }\n\n    if (!this.isHidden) {\n      return;\n    }\n\n    if (GleapFrameManager.getInstance().isOpened()) {\n      return;\n    }\n\n    this.isHidden = false;\n    this.aiUIContainer.style.display = 'block';\n    this.aiUIContainer.setAttribute('aria-hidden', 'false');\n    // Remove fade-out from inner container and reset animation\n    if (this.innerContainer) {\n      this.innerContainer.classList.remove('fade-out');\n\n      // Get feedback button style and update positioning classes\n      const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n      // Remove previously added positioning classes\n      this.innerContainer.classList.remove('gleap-ai-ui-container--bottom-right');\n      this.innerContainer.classList.remove('gleap-ai-ui-container--bottom-left');\n\n      // Add the appropriate positioning class based on config\n      if (flowConfig?.feedbackButtonPosition === 'BOTTOM_RIGHT') {\n        this.innerContainer.classList.add('gleap-ai-ui-container--bottom-right');\n      } else if (flowConfig?.feedbackButtonPosition === 'BOTTOM_LEFT') {\n        this.innerContainer.classList.add('gleap-ai-ui-container--bottom-left');\n      }\n    }\n  }\n\n  hide() {\n    if (this.isHidden) {\n      return;\n    }\n\n    if (!this.aiUIContainer) {\n      return;\n    }\n\n    this.isHidden = true;\n\n    // Fade out the inner container\n    if (this.innerContainer) {\n      this.innerContainer.classList.add('fade-out');\n    }\n\n    // Hide the whole component after animation\n    const timeoutId = setTimeout(() => {\n      if (this.aiUIContainer) {\n        this.aiUIContainer.style.display = 'none';\n        this.aiUIContainer.setAttribute('aria-hidden', 'true');\n      }\n      this.animationTimeouts.delete(timeoutId);\n    }, 300);\n\n    this.animationTimeouts.add(timeoutId);\n  }\n\n  setQuickActions(quickActions) {\n    if (!Array.isArray(quickActions)) {\n      return;\n    }\n\n    // Check if they changed using array comparison\n    if (this.arraysEqual(this.quickActions, quickActions)) {\n      return;\n    }\n\n    this.quickActions = quickActions;\n    this.updateQuickActions();\n  }\n\n  updateQuickActions() {\n    if (!this.quickActionsContainer) return;\n\n    // Clear existing content\n    this.quickActionsContainer.innerHTML = '';\n\n    // Add new actions with staggered animation\n    this.quickActions.slice(0, 2).forEach((action, index) => {\n      if (typeof action !== 'string' || !action.trim()) {\n        return;\n      }\n\n      const actionElement = document.createElement('div');\n      actionElement.className = 'gleap-ai-ui-quick-action';\n      actionElement.textContent = action.trim();\n      actionElement.setAttribute('role', 'button');\n      actionElement.setAttribute('tabindex', '0');\n      actionElement.setAttribute('aria-label', `Quick action: ${action.trim()}`);\n\n      // Add click and keyboard support\n      actionElement.addEventListener('click', () => {\n        this.sendMessage(action.trim());\n      });\n\n      actionElement.addEventListener('keydown', (e) => {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          this.sendMessage(action.trim());\n        }\n      });\n\n      this.quickActionsContainer.appendChild(actionElement);\n\n      // Trigger animation with delay\n      const timeoutId = setTimeout(\n        () => {\n          if (actionElement.parentNode) {\n            actionElement.classList.add('animate-in');\n          }\n          this.animationTimeouts.delete(timeoutId);\n        },\n        index * 150 + 500\n      );\n\n      this.animationTimeouts.add(timeoutId);\n    });\n  }\n\n  injectAIUI() {\n    if (this.aiUIContainer) {\n      return;\n    }\n\n    if (!document.body) {\n      console.error('GleapAiChatbarManager: Document body not available');\n      return;\n    }\n\n    // Create the host element (this will be in the main document)\n    const elem = document.createElement('div');\n    elem.className = 'gleap-ai-ui-widget';\n    elem.setAttribute('role', 'dialog');\n    elem.setAttribute('aria-label', 'AI Assistant');\n    elem.setAttribute('aria-hidden', 'true');\n    document.body.appendChild(elem);\n    this.aiUIContainer = elem;\n\n    // Create shadow DOM on the host element\n    this.shadowRoot = this.aiUIContainer.attachShadow({ mode: 'open' });\n\n    // Add styles to shadow DOM\n    this.addStylesToShadow();\n\n    // Create and add HTML content directly to shadow DOM\n    this.createUIInShadow();\n\n    // Update the UI visibility\n    this.updateUIVisibility();\n  }\n\n  addStylesToShadow() {\n    const style = document.createElement('style');\n    style.textContent = `\n      .gleap-font, .gleap-font * {\n        font-style: normal;\n        font-variant-caps: normal;\n        font-variant-ligatures: normal;\n        font-variant-numeric: normal;\n        font-variant-east-asian: normal;\n        font-weight: normal;\n        font-stretch: normal;\n        font-size: 100%;\n        line-height: 1;\n        font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n      }\n\n      .gleap-ai-ui-container {\n        position: fixed;\n        bottom: 20px;\n        left: 0;\n        right: 0;\n        height: 0;\n        z-index: 999999;\n        display: flex;\n        flex-direction: column;\n        justify-content: flex-end;\n        align-items: center;\n        opacity: 0;\n        white-space: normal;\n        transform: translateY(20px);\n        animation: fadeUpInContainer 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n      }\n\n      .gleap-ai-ui-quick-actions {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        gap: 8px;\n        margin-bottom: 12px;\n        opacity: 0;\n        transform: translateY(10px);\n        animation: fadeUpIn 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.5s forwards;\n        max-width: 100%;\n      }\n\n      .gleap-ai-ui-quick-action {\n        background: #fff;\n        color: #000;\n        padding: 8px 12px;\n        border-radius: 16px;\n        border-bottom-right-radius: 4px;\n        font-size: 13px;\n        cursor: pointer;\n        border: 1px solid rgba(30, 24, 24, 0.13);\n        transition: background-color 0.2s, transform 0.2s;\n        box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;\n        opacity: 0;\n        transform: translateY(15px) scale(0.95);\n        flex-shrink: 0;\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n      }\n\n      .gleap-ai-ui-quick-action.animate-in {\n        animation: fadeUpInAction 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n      }\n\n      .gleap-ai-ui-quick-action:nth-child(1).animate-in {\n        animation-delay: 0.5s;\n      }\n\n      .gleap-ai-ui-quick-action:nth-child(2).animate-in {\n        animation-delay: 0.65s;\n      }\n\n      .gleap-ai-ui-quick-action:hover {\n        background: #000;\n        color: #fff;\n        border: 1px solid #000000;\n        transform: translateY(-2px) scale(1.02);\n      }\n\n      .gleap-ai-ui-input-container {\n        position: relative;\n        width: auto;\n        min-width: min(280px, calc(100vw - 40px));\n        margin: 0 auto;\n        transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n        opacity: 0;\n        transform: translateY(15px);\n        animation: fadeUpIn 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.45s forwards;\n      }\n\n      .gleap-ai-ui-input-container:focus-within,\n      .gleap-ai-ui-container.active .gleap-ai-ui-input-container {\n        min-width: 430px;\n      }\n\n      @media (max-width: 580px) {\n        .gleap-ai-ui-container {\n          bottom: 23px;\n          align-items: flex-start;\n          left: 20px;\n          right: 20px;\n        }\n\n        .gleap-ai-ui-quick-actions {\n          justify-content: flex-start;\n          gap: 6px;\n          margin-bottom: 10px;\n          width: 100%;\n        }\n\n        .gleap-ai-ui-quick-action {\n          max-width: calc(50% - 28px);\n        }\n\n        .gleap-ai-ui-container--bottom-right {\n          right: 78px;\n        }\n\n        .gleap-ai-ui-container--bottom-left {\n          left: 78px;\n        }\n\n        .gleap-ai-ui-input-container:focus-within,\n        .gleap-ai-ui-input-container {\n          min-width: auto !important;\n          width: 100% !important;\n          max-width: 100% !important;\n          margin: 0px !important;\n        }\n      }\n\n      .animated-gradient-border-wrapper {\n        position: absolute;\n        overflow: hidden;\n        border-radius: 50px;\n        transition: all 0.2s ease-in-out;\n        left: -2px;\n        top: -2px;\n        right: -2px;\n        bottom: -2px;\n      }\n\n      .animated-gradient-border-wrapper-glow {\n        position: absolute;\n        overflow: hidden;\n        border-radius: 50px;\n        filter: blur(15px);\n        left: -2px;\n        top: -2px;\n        right: -2px;\n        bottom: -2px;\n      }\n\n      .group:hover .animated-gradient-border-wrapper,\n      .group:focus-within .animated-gradient-border-wrapper {\n        left: -4px;\n        top: -4px;\n        right: -4px;\n        bottom: -4px;\n      }\n\n      .group:hover .animated-gradient-border-wrapper-glow,\n      .group:focus-within .animated-gradient-border-wrapper-glow {\n        left: -4px;\n        top: -4px;\n        right: -4px;\n        bottom: -4px;\n      }\n\n      .animated-gradient-border-wrapper:before,\n      .animated-gradient-border-wrapper-glow:before {\n        content: \"\";\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        width: 99999px;\n        height: 99999px;\n        background-repeat: no-repeat;\n        background-position: 0 0;\n        opacity: 0.4;\n        background-image: conic-gradient(\n          #0000,\n          #b6e0dc,\n          #eaef8c,\n          #fdc19e,\n          #f29be5,\n          #c4aeff,\n          #0000 95%\n        );\n        filter: blur(20px);\n        transform: translate(-50%, -50%) rotate(0deg);\n        transition: opacity 0.5s ease-in-out;\n        animation: border-spin 4s linear infinite;\n      }\n\n      .group:hover .animated-gradient-border-wrapper-glow:before {\n        opacity: 1;\n      }\n\n      .bg-gradient-blur {\n        position: relative;\n        background: white;\n        border-radius: 42px;\n        box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n        overflow: hidden;\n        z-index: 1;\n      }\n\n      .gleap-ai-ui-input {\n        position: relative;\n        z-index: 1;\n        width: 100%;\n        height: 42px;\n        padding: 0px;\n        border-radius: 42px;\n      }\n\n      .gleap-ai-ui-input-content {\n        display: flex;\n        align-items: center;\n        padding: 0px;\n        height: 100%;\n      }\n\n      .gleap-ai-ui-input input {\n        flex-grow: 1;\n        height: 100%;\n        padding-left: 16px;\n        padding-right: 8px;\n        border: none;\n        background: transparent;\n        font-size: 16px;\n        line-height: 24px;\n        font-weight: 400;\n        color: #000;\n        outline: none;\n        box-sizing: border-box;\n        max-width: 40vw;\n      }\n\n      @supports (field-sizing: content) {\n        .gleap-ai-ui-input input {\n          field-sizing: content;\n        }\n      }\n\n      .gleap-ai-ui-input-send-button {\n        cursor: pointer;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        width: 34px;\n        height: 34px;\n        border-radius: 50%;\n        background: #efefef;\n        margin-left: 0px;\n        margin-right: 4px;\n      }\n\n      .gleap-ai-ui-input-send-button svg {\n        width: 18px;\n        height: 18px;\n        flex-shrink: 0;\n        color: #666;\n        pointer-events: none;\n        z-index: 2;\n        transition: color 0.2s ease;\n      }\n\n      .gleap-ai-ui-container.active .gleap-ai-ui-input-send-button {\n        background: #000;\n        transition: background-color 0.2s ease;\n      }\n\n      .gleap-ai-ui-container.active .gleap-ai-ui-input-send-button svg {\n        color: #fff;\n      }\n\n      .gleap-ai-ui-input input::placeholder {\n        color: rgba(0, 0, 0, 0.6);\n        transition: color 0.2s ease;\n      }\n\n      .gleap-ai-ui-container--noglow .animated-gradient-border-wrapper,\n      .gleap-ai-ui-container--noglow .animated-gradient-border-wrapper {\n        display: none !important;\n      }\n\n      .gleap-ai-ui-container--dark .bg-gradient-blur {\n        background-color: rgba(80, 80, 80, 0.68);\n        backdrop-filter: blur(24px);\n      }\n\n      .gleap-ai-ui-container--dark .gleap-ai-ui-input-send-button {\n        background-color: rgba(255, 255, 255, 0.44);\n      }\n\n      .gleap-ai-ui-container--dark .gleap-ai-ui-input-send-button svg {\n        color: rgba(0, 0, 0, 0.6);\n      }\n\n      .gleap-ai-ui-container--dark .gleap-ai-ui-input input::placeholder {\n        color: rgba(255, 255, 255, 0.44);\n      }\n\n      .gleap-ai-ui-container--dark .gleap-ai-ui-input input {\n        color: #fff;\n      }\n\n      .gleap-ai-ui-container--dark .gleap-ai-ui-input-container:focus-within .gleap-ai-ui-input-send-button,\n      .gleap-ai-ui-container--dark.active .gleap-ai-ui-input-container .gleap-ai-ui-input-send-button {\n        background-color: #fff;\n      }\n\n      .gleap-ai-ui-container--dark .gleap-ai-ui-input-container:focus-within .gleap-ai-ui-input-send-button svg,\n      .gleap-ai-ui-container--dark.active .gleap-ai-ui-input-container .gleap-ai-ui-input-send-button svg {\n        color: #000;\n      }\n\n      @keyframes gradient-shift {\n        0% {\n          background-position: 0% 50%;\n        }\n        50% {\n          background-position: 100% 50%;\n        }\n        100% {\n          background-position: 0% 50%;\n        }\n      }\n\n      @keyframes border-spin {\n        0% {\n          transform: translate(-50%, -50%) rotate(0deg);\n        }\n        100% {\n          transform: translate(-50%, -50%) rotate(-360deg);\n        }\n      }\n\n      @keyframes fadeUpIn {\n        0% {\n          opacity: 0;\n          transform: translateY(20px) scale(0.95);\n        }\n        100% {\n          opacity: 1;\n          transform: translateY(0) scale(1);\n        }\n      }\n\n      @keyframes fadeUpInAction {\n        0% {\n          opacity: 0;\n          transform: translateY(15px) scale(0.95);\n        }\n        100% {\n          opacity: 1;\n          transform: translateY(0) scale(1);\n        }\n      }\n\n      @keyframes fadeUpInContainer {\n        0% {\n          opacity: 0;\n          transform: translateY(20px);\n        }\n        100% {\n          opacity: 1;\n          transform: translateY(0);\n        }\n      }\n\n      @keyframes fadeOutDownContainer {\n        0% {\n          opacity: 1;\n          transform: translateY(0);\n        }\n        100% {\n          opacity: 0;\n          transform: translateY(20px);\n        }\n      }\n\n      .gleap-ai-ui-container.fade-out {\n        animation: fadeOutDownContainer 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards !important;\n      }\n    `;\n    this.shadowRoot.appendChild(style);\n  }\n\n  createUIInShadow() {\n    let extraClasses = '';\n    if (this.config?.style === 'light' || this.config?.style === 'dark') {\n      extraClasses += ' gleap-ai-ui-container--noglow';\n    }\n    if (this.config?.style === 'dark' || this.config?.style === 'dark-glow') {\n      extraClasses += ' gleap-ai-ui-container--dark';\n    }\n\n    // Create the main container div inside shadow DOM\n    this.innerContainer = document.createElement('div');\n    this.innerContainer.className = 'gleap-font gleap-ai-ui-container' + extraClasses;\n    this.innerContainer.setAttribute('part', 'container');\n\n    // Create the HTML structure inside shadow DOM\n    this.innerContainer.innerHTML = `\n      <div class=\"gleap-ai-ui-quick-actions\" part=\"quick-actions\"></div>\n      <div class=\"gleap-ai-ui-input-container\" part=\"input-container\">\n        <div class=\"relative group\" style=\"--border-width: 2px; --border-width-hover: 4px;\">\n          <div class=\"animated-gradient-border-wrapper\"></div>\n          <div class=\"animated-gradient-border-wrapper animated-gradient-border-wrapper-glow\"></div>\n          <div class=\"bg-gradient-blur\" part=\"input-background\">\n            <div class=\"gleap-ai-ui-input\">\n              <div class=\"gleap-ai-ui-input-content\">\n                <input part=\"input\" name=\"AI question\" type=\"text\" placeholder=\"${this.placeholder}\" />\n                <div class=\"gleap-ai-ui-input-send-button\" part=\"send-button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\"><path fill=\"currentColor\" d=\"M342.6 81.4C330.1 68.9 309.8 68.9 297.3 81.4L137.3 241.4C124.8 253.9 124.8 274.2 137.3 286.7C149.8 299.2 170.1 299.2 182.6 286.7L288 181.3L288 552C288 569.7 302.3 584 320 584C337.7 584 352 569.7 352 552L352 181.3L457.4 286.7C469.9 299.2 490.2 299.2 502.7 286.7C515.2 274.2 515.2 253.9 502.7 241.4L342.7 81.4z\"/></svg>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    `;\n\n    // Append the container directly to shadow DOM\n    this.shadowRoot.appendChild(this.innerContainer);\n\n    // Get the quick actions container\n    this.quickActionsContainer = this.shadowRoot.querySelector('.gleap-ai-ui-quick-actions');\n\n    // Get input and send button elements\n    this.inputElement = this.shadowRoot.querySelector('input');\n    this.sendButton = this.shadowRoot.querySelector('.gleap-ai-ui-input-send-button');\n\n    // Add input event listener\n    this.setupInputListener();\n\n    // Update the quick actions\n    this.updateQuickActions();\n  }\n\n  setupInputListener() {\n    if (!this.inputElement || !this.sendButton) {\n      return;\n    }\n\n    this.inputElement.addEventListener('input', (e) => {\n      this.inputText = e.target.value.trim();\n      this.updateSendButtonState();\n    });\n\n    // Add Enter key listener for sending message\n    this.inputElement.addEventListener('keydown', (e) => {\n      if (e.key === 'Enter' && this.inputText.length > 0) {\n        e.preventDefault();\n        this.sendMessage(this.inputText);\n      }\n    });\n\n    // Add click listener for send button\n    this.sendButton.addEventListener('click', () => {\n      if (this.inputText.length > 0) {\n        this.sendMessage(this.inputText);\n      }\n    });\n  }\n\n  updateSendButtonState() {\n    if (!this.sendButton || !this.innerContainer) {\n      return;\n    }\n\n    if (this.inputText.length > 0) {\n      this.innerContainer.classList.add('active');\n    } else {\n      this.innerContainer.classList.remove('active');\n    }\n  }\n\n  sendMessage(question) {\n    if (!question || question.trim().length === 0) {\n      return;\n    }\n\n    // Call the callback if it exists\n    if (this.onMessageSend && typeof this.onMessageSend === 'function') {\n      this.onMessageSend(question.trim());\n    }\n\n    // Reset the input text\n    this.inputText = '';\n    if (this.inputElement) {\n      this.inputElement.value = '';\n    }\n    this.updateSendButtonState();\n  }\n\n  destroy() {\n    // Clear all pending timeouts\n    this.animationTimeouts.forEach((timeoutId) => {\n      clearTimeout(timeoutId);\n    });\n    this.animationTimeouts.clear();\n\n    // Remove DOM elements\n    if (this.aiUIContainer) {\n      this.aiUIContainer.remove();\n      this.aiUIContainer = null;\n    }\n\n    // Clear references\n    this.shadowRoot = null;\n    this.innerContainer = null;\n    this.quickActionsContainer = null;\n    this.quickActions = [];\n    this.inputElement = null;\n    this.sendButton = null;\n    this.inputText = '';\n    this.onMessageSend = null;\n\n    // Reset singleton instance\n    GleapAiChatbarManager.instance = null;\n  }\n}\n","import Gleap, { GleapFrameManager } from './Gleap';\n\nexport default class GleapBannerManager {\n  bannerUrl = 'https://outboundmedia.gleap.io';\n  bannerContainer = null;\n  bannerData = null;\n  disabled = false;\n\n  // GleapBannerManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapBannerManager();\n    }\n    return this.instance;\n  }\n\n  constructor() {\n    this.startCommunication();\n  }\n\n  setBannerUrl(url) {\n    this.bannerUrl = url;\n  }\n\n  startCommunication() {\n    // Add window message listener.\n    window.addEventListener('message', (event) => {\n      if (!this.bannerUrl?.includes(event.origin)) {\n        return;\n      }\n\n      try {\n        const data = JSON.parse(event.data);\n\n        if (data?.type !== 'BANNER') {\n          return;\n        }\n\n        if (data.name === 'banner-loaded' && this.bannerData) {\n          this.sendMessage({\n            name: 'banner-data',\n            data: this.bannerData,\n          });\n        }\n        if (data.name === 'banner-height') {\n          document.documentElement.style.setProperty('--gleap-margin-top', data.data.height + 'px');\n        }\n        if (data.name === 'banner-data-set') {\n          document.body.classList.add('gleap-b-shown');\n\n          if (this.bannerData?.format === 'floating') {\n            document.body.classList.add('gleap-b-f');\n          }\n        }\n        if (data.name === 'banner-close') {\n          this.removeBannerUI();\n        }\n        if (data.name === 'start-conversation') {\n          Gleap.startBot(data.data?.botId);\n        }\n        if (data.name === 'start-custom-action') {\n          Gleap.triggerCustomAction(data.data?.action);\n        }\n        if (data.name === 'start-product-tour') {\n          Gleap.startProductTour(data.data?.tourId, true);\n        }\n        if (data.name === 'open-url') {\n          const url = data.data;\n          const newTab = data.newTab ? true : false;\n          GleapFrameManager.getInstance().urlHandler(url, newTab);\n        }\n        if (data.name === 'show-form') {\n          Gleap.startFeedbackFlow(data.data?.formId);\n        }\n        if (data.name === 'show-survey') {\n          Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n        }\n        if (data.name === 'show-news-article') {\n          Gleap.openNewsArticle(data.data?.articleId);\n        }\n        if (data.name === 'show-help-article') {\n          Gleap.openHelpCenterArticle(data.data?.articleId);\n        }\n        if (data.name === 'show-checklist') {\n          Gleap.startChecklist(data.data?.checklistId, true, data.data?.sharedKey);\n        }\n      } catch (exp) {}\n    });\n  }\n\n  removeBannerUI() {\n    if (this.bannerContainer) {\n      document.body.removeChild(this.bannerContainer);\n      this.bannerContainer = null;\n    }\n\n    document.body.classList.remove('gleap-b-shown');\n    document.body.classList.remove('gleap-b-f');\n  }\n\n  disable() {\n    this.disabled = true;\n    this.removeBannerUI();\n  }\n\n  /**\n   * Injects the feedback button into the current DOM.\n   */\n  injectBannerUI(bannerData) {\n    if (!document.body) {\n      return false;\n    }\n\n    if (this.disabled) {\n      return false;\n    }\n\n    if (this.bannerContainer) {\n      this.removeBannerUI();\n    }\n\n    this.bannerData = bannerData;\n\n    var elem = document.createElement('div');\n    elem.className = 'gleap-b';\n    elem.innerHTML = `<iframe src=\"${this.bannerUrl}\" class=\"gleap-b-frame\" scrolling=\"no\" title=\"Gleap Banner\" role=\"dialog\" frameborder=\"0\"></iframe>`;\n    document.body.appendChild(elem);\n    this.bannerContainer = elem;\n  }\n\n  sendMessage(data) {\n    try {\n      const gleapBFrame = document.querySelector('.gleap-b-frame');\n      if (gleapBFrame && gleapBFrame.contentWindow) {\n        gleapBFrame.contentWindow.postMessage(\n          JSON.stringify({\n            ...data,\n            type: 'banner',\n          }),\n          '*'\n        );\n      }\n    } catch (e) {}\n  }\n\n  showBanner(bannerData) {\n    this.injectBannerUI(bannerData);\n  }\n}\n","import Gleap, { GleapConfigManager, GleapFrameManager } from './Gleap';\n\nexport default class GleapModalManager {\n  modalUrl = 'https://outboundmedia.gleap.io/modal';\n  modalContainer = null;\n  modalData = null;\n  modalBackdropClickListener = null;\n  disabled = false;\n  // singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapModalManager();\n    }\n    return this.instance;\n  }\n\n  constructor() {\n    this._listenForMessages();\n  }\n\n  setModalUrl(url) {\n    this.modalUrl = url;\n  }\n\n  disable() {\n    this.disabled = true;\n    this.hideModal();\n  }\n\n  _listenForMessages() {\n    window.addEventListener('message', (event) => {\n      if (!this.modalUrl?.includes(event.origin)) {\n        return;\n      }\n\n      try {\n        const data = JSON.parse(event.data);\n\n        if (data?.type !== 'MODAL') {\n          return;\n        }\n\n        if (data.name === 'modal-loaded' && this.modalData) {\n          const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n          const primaryColor = flowConfig.color ? flowConfig.color : '#485BFF';\n          const backgroundColor = flowConfig.backgroundColor ? flowConfig.backgroundColor : '#FFFFFF';\n\n          this._postMessage({\n            name: 'modal-data',\n            data: {\n              ...this.modalData,\n              primaryColor: primaryColor,\n              backgroundColor: backgroundColor,\n            },\n          });\n        }\n        if (data.name === 'modal-height') {\n          const height = data?.data?.height;\n          if (height) {\n            // Set the height of the modal iframe\n            const iframe = this.modalContainer.querySelector('.gleap-modal-frame');\n            if (iframe) {\n              iframe.style.height = `${height}px`;\n            }\n          }\n        }\n        if (data.name === 'modal-data-set') {\n          // TODO: Implement\n        }\n        if (data.name === 'modal-close') {\n          this.hideModal();\n        }\n        if (data.name === 'start-conversation') {\n          Gleap.startBot(data.data?.botId);\n        }\n        if (data.name === 'start-custom-action') {\n          Gleap.triggerCustomAction(data.data?.action);\n        }\n        if (data.name === 'start-product-tour') {\n          Gleap.startProductTour(data.data?.tourId, true);\n        }\n        if (data.name === 'open-url') {\n          const url = data.data;\n          const newTab = data.newTab ? true : false;\n          GleapFrameManager.getInstance().urlHandler(url, newTab);\n        }\n        if (data.name === 'show-form') {\n          Gleap.startFeedbackFlow(data.data?.formId);\n        }\n        if (data.name === 'show-survey') {\n          Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n        }\n        if (data.name === 'show-news-article') {\n          Gleap.openNewsArticle(data.data?.articleId);\n        }\n        if (data.name === 'show-help-article') {\n          Gleap.openHelpCenterArticle(data.data?.articleId);\n        }\n        if (data.name === 'show-checklist') {\n          Gleap.startChecklist(data.data?.checklistId, true, data.data?.sharedKey);\n        }\n      } catch (exp) {}\n    });\n  }\n\n  _injectModalUI(modalData) {\n    if (!document.body) return false;\n\n    if (this.disabled) {\n      return false;\n    }\n\n    if (this.modalContainer) {\n      this.hideModal();\n    }\n\n    this.modalData = modalData;\n\n    const wrapper = document.createElement('div');\n    wrapper.className = 'gleap-modal-wrapper';\n    wrapper.innerHTML = `\n      <div class=\"gleap-modal-backdrop\"></div>\n      <div class=\"gleap-modal\">\n        <iframe\n          src=\"${this.modalUrl}\"\n          class=\"gleap-modal-frame\"\n          scrolling=\"no\"\n          title=\"Gleap Modal\"\n          role=\"dialog\"\n          frameborder=\"0\"\n          allow=\"autoplay; encrypted-media; fullscreen; microphone *;\"\n        ></iframe>\n      </div>\n    `;\n    document.body.appendChild(wrapper);\n    this.modalContainer = wrapper;\n\n    // Add on backdrop click listener\n    this.modalBackdropClickListener = this.modalContainer\n      .querySelector('.gleap-modal-backdrop')\n      .addEventListener('click', () => {\n        if (this.modalData?.showCloseButton ?? true) {\n          this.hideModal();\n        }\n      });\n\n    // lock background scroll\n    document.body.classList.add('gleap-modal-open');\n  }\n\n  _postMessage(message) {\n    try {\n      const frame = this.modalContainer.querySelector('.gleap-modal-frame');\n      if (frame?.contentWindow) {\n        frame.contentWindow.postMessage(JSON.stringify({ ...message, type: 'modal' }), this.modalUrl);\n      }\n    } catch (err) {}\n  }\n\n  showModal(modalData) {\n    if (modalData && modalData.config) {\n      this._injectModalUI(modalData.config);\n    }\n  }\n\n  hideModal() {\n    if (!this.modalContainer) return;\n\n    if (this.modalBackdropClickListener) {\n      this.modalContainer\n        .querySelector('.gleap-modal-backdrop')\n        .removeEventListener('click', this.modalBackdropClickListener);\n    }\n\n    document.body.removeChild(this.modalContainer);\n    this.modalContainer = null;\n    document.body.classList.remove('gleap-modal-open');\n  }\n}\n","export default class GleapAudioManager {\n  static audio;\n  static settings = {\n    play: true,\n  };\n\n  static playSound(play) {\n    this.settings.play = play;\n  }\n\n  static ping() {\n    try {\n      if (!this.settings.play) {\n        return;\n      }\n\n      if (!this.audio) {\n        this.audio = new Audio('https://js.gleap.io/res/ping.mp3');\n      }\n\n      const playPromise = this.audio.play();\n      if (playPromise !== undefined) {\n        playPromise.then((_) => {}).catch((error) => {});\n      }\n    } catch (exp) {}\n  }\n}\n","export default class GleapTagManager {\n  tags = [];\n\n  // GleapTagManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapTagManager();\n    }\n    return this.instance;\n  }\n\n  /**\n   * Returns the tags\n   * @returns {*}\n   */\n  getTags() {\n    return this.tags;\n  }\n\n  /**\n   * Sets the tags sent with every ticket.\n   * @param {*} tags Array of strings\n   */\n  setTags(tags) {\n    this.tags = tags;\n  }\n}\n","/**\n * Returns the Tag of the element\n * @param  { Object } element\n * @return { String }\n */\nexport function getID(el) {\n  const id = el.getAttribute('id');\n\n  if (id !== null && id !== '') {\n    // if the ID starts with a number or contains \":\" selecting with a hash will cause a DOMException\n    return id.match(/(?:^\\d|:)/) ? `[id=\"${id}\"]` : '#' + id;\n  }\n  return null;\n}\n","/**\n * Get class names for an element\n *\n * @pararm { Element } el\n * @return { Array }\n */\nexport function getClasses(el) {\n  if (!el.hasAttribute('class')) {\n    return [];\n  }\n\n  try {\n    let classList = Array.prototype.slice.call(el.classList);\n\n    // return only the valid CSS selectors based on RegEx\n    return classList.filter((item) => (!/^[a-z_-][a-z\\d_-]*$/i.test(item) ? null : item));\n  } catch (e) {\n    let className = el.getAttribute('class');\n\n    // remove duplicate and leading/trailing whitespaces\n    className = className.trim().replace(/\\s+/g, ' ');\n\n    // split into separate classnames\n    return className.split(' ');\n  }\n}\n\n/**\n * Returns the Class selectors of the element\n * @param  { Object } element\n * @return { Array }\n */\nexport function getClassSelectors(el) {\n  const classList = getClasses(el).filter(Boolean);\n  return classList.map((cl) => `.${cl}`);\n}\n","/**\n * Recursively combinate items.\n * @param  { Array } result\n * @param  { Array } items\n * @param  { Array } data\n * @param  { Number } start\n * @param  { Number } end\n * @param  { Number } index\n * @param  { Number } k\n */\nfunction kCombinations(result, items, data, start, end, index, k) {\n  if (index === k) {\n    result.push(data.slice(0, index).join(''));\n    return;\n  }\n\n  for (let i = start; i <= end && end - i + 1 >= k - index; ++i) {\n    data[index] = items[i];\n    kCombinations(result, items, data, i + 1, end, index + 1, k);\n  }\n}\n\n/**\n * Returns all the possible selector combinations\n * @param  { Array } items\n * @param  { Number } k\n * @return { Array }\n */\nexport function getCombinations(items, k) {\n  const result = [],\n    n = items.length,\n    data = [];\n\n  for (var l = 1; l <= k; ++l) {\n    kCombinations(result, items, data, 0, n - 1, 0, l);\n  }\n\n  return result;\n}\n","/**\n * Determines if the passed el is a DOM element\n */\nexport function isElement(el) {\n  let isElem;\n\n  if (typeof HTMLElement === 'object') {\n    isElem = el instanceof HTMLElement;\n  } else {\n    isElem = !!el && typeof el === 'object' && el.nodeType === 1 && typeof el.nodeName === 'string';\n  }\n  return isElem;\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns the selectors based on the position of the element relative to its siblings\n * @param  { Object } element\n * @return { Array }\n */\nexport function getNthChild(element) {\n  let counter = 0;\n  let k;\n  let sibling;\n  const { parentNode } = element;\n\n  if (Boolean(parentNode)) {\n    const { childNodes } = parentNode;\n    const len = childNodes.length;\n    for (k = 0; k < len; k++) {\n      sibling = childNodes[k];\n      if (isElement(sibling)) {\n        counter++;\n        if (sibling === element) {\n          return `:nth-child(${counter})`;\n        }\n      }\n    }\n  }\n  return null;\n}\n","/**\n * Returns the Tag of the element\n * @param  { Object } element\n * @return { String }\n */\nexport function getTag(el) {\n  return el.tagName.toLowerCase().replace(/:/g, '\\\\:');\n}\n","/**\n * Checks if the selector is unique\n * @param  { Object } element\n * @param  { String } selector\n * @return { Array }\n */\nexport function isUnique(el, selector) {\n  if (!Boolean(selector)) return false;\n  const elems = el.ownerDocument.querySelectorAll(selector);\n  return elems.length === 1 && elems[0] === el;\n}\n","/**\n * Expose `unique`\n */\n\nimport { getID } from './getID';\nimport { getClassSelectors } from './getClasses';\nimport { getCombinations } from './getCombinations';\nimport { getAttributes } from './getAttributes';\nimport { getNthChild } from './getNthChild';\nimport { getTag } from './getTag';\nimport { isUnique } from './isUnique';\nimport { getParents } from './getParents';\n\n/**\n * Returns all the selectors of the elmenet\n * @param  { Object } element\n * @return { Object }\n */\nfunction getAllSelectors(el, selectors, attributesToIgnore) {\n  const funcs = {\n    Tag: getTag,\n    NthChild: getNthChild,\n    Attributes: (elem) => getAttributes(elem, attributesToIgnore),\n    Class: getClassSelectors,\n    ID: getID,\n  };\n\n  return selectors.reduce((res, next) => {\n    res[next] = funcs[next](el);\n    return res;\n  }, {});\n}\n\n/**\n * Tests uniqueNess of the element inside its parent\n * @param  { Object } element\n * @param { String } Selectors\n * @return { Boolean }\n */\nfunction testUniqueness(element, selector) {\n  try {\n    const { parentNode } = element;\n    const elements = parentNode.querySelectorAll(selector);\n    return elements.length === 1 && elements[0] === element;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tests all selectors for uniqueness and returns the first unique selector.\n * @param  { Object } element\n * @param  { Array } selectors\n * @return { String }\n */\nfunction getFirstUnique(element, selectors) {\n  return selectors.find(testUniqueness.bind(null, element));\n}\n\n/**\n * Checks all the possible selectors of an element to find one unique and return it\n * @param  { Object } element\n * @param  { Array } items\n * @param  { String } tag\n * @return { String }\n */\nfunction getUniqueCombination(element, items, tag) {\n  let combinations = getCombinations(items, 3),\n    firstUnique = getFirstUnique(element, combinations);\n\n  if (Boolean(firstUnique)) {\n    return firstUnique;\n  }\n\n  if (Boolean(tag)) {\n    combinations = combinations.map((combination) => tag + combination);\n    firstUnique = getFirstUnique(element, combinations);\n\n    if (Boolean(firstUnique)) {\n      return firstUnique;\n    }\n  }\n\n  return null;\n}\n\n/**\n * Returns a uniqueSelector based on the passed options\n * @param  { DOM } element\n * @param  { Array } options\n * @return { String }\n */\nfunction getUniqueSelector(element, selectorTypes, attributesToIgnore, excludeRegex) {\n  let foundSelector;\n\n  const elementSelectors = getAllSelectors(element, selectorTypes, attributesToIgnore);\n\n  if (excludeRegex && excludeRegex instanceof RegExp) {\n    elementSelectors.ID = excludeRegex.test(elementSelectors.ID) ? null : elementSelectors.ID;\n    elementSelectors.Class = elementSelectors.Class.filter((className) => !excludeRegex.test(className));\n  }\n\n  for (let selectorType of selectorTypes) {\n    const { ID, Tag, Class: Classes, Attributes, NthChild } = elementSelectors;\n    switch (selectorType) {\n      case 'ID':\n        if (Boolean(ID) && testUniqueness(element, ID)) {\n          return ID;\n        }\n        break;\n\n      case 'Tag':\n        if (Boolean(Tag) && testUniqueness(element, Tag)) {\n          return Tag;\n        }\n        break;\n\n      case 'Class':\n        if (Boolean(Classes) && Classes.length) {\n          foundSelector = getUniqueCombination(element, Classes, Tag);\n          if (foundSelector) {\n            return foundSelector;\n          }\n        }\n        break;\n\n      case 'Attributes':\n        if (Boolean(Attributes) && Attributes.length) {\n          foundSelector = getUniqueCombination(element, Attributes, Tag);\n          if (foundSelector) {\n            return foundSelector;\n          }\n        }\n        break;\n\n      case 'NthChild':\n        if (Boolean(NthChild)) {\n          return NthChild;\n        }\n    }\n  }\n  return '*';\n}\n\n/**\n * Generate unique CSS selector for given DOM element\n *\n * @param {Element} el\n * @return {String}\n * @api private\n */\n\nexport default function unique(el, options = {}) {\n  const {\n    selectorTypes = ['ID', 'Class', 'Tag', 'NthChild'],\n    attributesToIgnore = ['id', 'class', 'length'],\n    excludeRegex = null,\n  } = options;\n  const allSelectors = [];\n  const parents = getParents(el);\n\n  for (let elem of parents) {\n    const selector = getUniqueSelector(elem, selectorTypes, attributesToIgnore, excludeRegex);\n    if (Boolean(selector)) {\n      allSelectors.push(selector);\n    }\n  }\n\n  const selectors = [];\n  for (let it of allSelectors) {\n    selectors.unshift(it);\n    const selector = selectors.join(' > ');\n    if (isUnique(el, selector)) {\n      return selector;\n    }\n  }\n\n  return null;\n}\n","/**\n * Returns the Attribute selectors of the element\n * @param  { DOM Element } element\n * @param  { Array } array of attributes to ignore\n * @return { Array }\n */\nexport function getAttributes(el, attributesToIgnore = ['id', 'class', 'length']) {\n  const { attributes } = el;\n  const attrs = [...attributes];\n\n  return attrs.reduce((sum, next) => {\n    if (!(attributesToIgnore.indexOf(next.nodeName) > -1)) {\n      sum.push(`[${next.nodeName}=\"${next.value}\"]`);\n    }\n    return sum;\n  }, []);\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns all the element and all of its parents\n * @param { DOM Element }\n * @return { Array of DOM elements }\n */\nexport function getParents(el) {\n  const parents = [];\n  let currentElement = el;\n  while (isElement(currentElement)) {\n    parents.push(currentElement);\n    currentElement = currentElement.parentNode;\n  }\n\n  return parents;\n}\n","/**\n * Utility function to get the bounding rectangle of an element.\n * @param {HTMLElement} el - The target element.\n * @returns {Object} An object containing x, y, width, and height.\n */\nfunction getElementBounds(el) {\n  const rect = el.getBoundingClientRect();\n  return {\n    x: window.pageXOffset + rect.left,\n    y: window.pageYOffset + rect.top,\n    width: el.offsetWidth,\n    height: el.offsetHeight,\n  };\n}\n\n/**\n * Class representing an overlay element.\n */\nclass ElementOverlay {\n  /**\n   * Create an ElementOverlay.\n   * @param {Object} options - Configuration options.\n   * @param {string} [options.className] - CSS class name for the overlay.\n   * @param {Object} [options.style] - Style overrides for the overlay.\n   */\n  constructor(options) {\n    // Create and style the overlay element.\n    this.overlay = document.createElement('div');\n    this.overlay.className = options.className || '_ext-element-overlay';\n    this.overlay.style.background = (options.style && options.style.background) || 'rgba(250, 240, 202, 0.2)';\n    this.overlay.style.borderColor = (options.style && options.style.borderColor) || '#F95738';\n    this.overlay.style.borderStyle = (options.style && options.style.borderStyle) || 'solid';\n    this.overlay.style.borderRadius = (options.style && options.style.borderRadius) || '1px';\n    this.overlay.style.borderWidth = (options.style && options.style.borderWidth) || '1px';\n    this.overlay.style.boxSizing = (options.style && options.style.boxSizing) || 'border-box';\n    this.overlay.style.cursor = (options.style && options.style.cursor) || 'crosshair';\n    this.overlay.style.position = (options.style && options.style.position) || 'absolute';\n    this.overlay.style.zIndex = (options.style && options.style.zIndex) || '2147483647';\n    this.overlay.style.margin = (options.style && options.style.margin) || '0px';\n    this.overlay.style.padding = (options.style && options.style.padding) || '0px';\n\n    // Create a container that will host a Shadow DOM.\n    this.shadowContainer = document.createElement('div');\n    this.shadowContainer.className = '_ext-element-overlay-container';\n    this.shadowContainer.style.position = 'absolute';\n    this.shadowContainer.style.top = '0px';\n    this.shadowContainer.style.left = '0px';\n    this.shadowContainer.style.margin = '0px';\n    this.shadowContainer.style.padding = '0px';\n    this.shadowRoot = this.shadowContainer.attachShadow({ mode: 'open' });\n  }\n\n  /**\n   * Adds the overlay to the DOM.\n   * @param {Node} parent - The parent element.\n   * @param {boolean} useShadowDOM - Whether to use Shadow DOM.\n   */\n  addToDOM(parent, useShadowDOM) {\n    this.usingShadowDOM = useShadowDOM;\n    if (useShadowDOM) {\n      parent.insertBefore(this.shadowContainer, parent.firstChild);\n      this.shadowRoot.appendChild(this.overlay);\n    } else {\n      parent.appendChild(this.overlay);\n    }\n  }\n\n  /**\n   * Removes the overlay from the DOM.\n   */\n  removeFromDOM() {\n    this.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n    if (this.overlay.remove) {\n      this.overlay.remove();\n    } else if (this.overlay.parentNode) {\n      this.overlay.parentNode.removeChild(this.overlay);\n    }\n    if (this.usingShadowDOM) {\n      if (this.shadowContainer.remove) {\n        this.shadowContainer.remove();\n      } else if (this.shadowContainer.parentNode) {\n        this.shadowContainer.parentNode.removeChild(this.shadowContainer);\n      }\n    }\n  }\n\n  /**\n   * Enables pointer events on the overlay.\n   */\n  captureCursor() {\n    this.overlay.style.pointerEvents = 'auto';\n  }\n\n  /**\n   * Disables pointer events on the overlay.\n   */\n  ignoreCursor() {\n    this.overlay.style.pointerEvents = 'none';\n  }\n\n  /**\n   * Sets the position and size of the overlay.\n   * @param {Object} bounds - The bounding box.\n   * @param {number} bounds.x - The x-coordinate.\n   * @param {number} bounds.y - The y-coordinate.\n   * @param {number} bounds.width - The width.\n   * @param {number} bounds.height - The height.\n   */\n  setBounds(bounds) {\n    const { x, y, width, height } = bounds;\n    this.overlay.style.left = x + 'px';\n    this.overlay.style.top = y + 'px';\n    this.overlay.style.width = width + 'px';\n    this.overlay.style.height = height + 'px';\n  }\n}\n\n/**\n * Class representing an element picker that uses the overlay.\n */\nclass ElementPicker {\n  /**\n   * Create an ElementPicker.\n   * @param {Object} [overlayOptions] - Options to pass to ElementOverlay.\n   */\n  constructor(overlayOptions) {\n    this.active = false;\n    this.overlay = new ElementOverlay(overlayOptions || {});\n    this.handleMouseMove = this.handleMouseMove.bind(this);\n    this.handleClick = this.handleClick.bind(this);\n    this.tick = this.tick.bind(this);\n  }\n\n  /**\n   * Starts the element picking process.\n   * @param {Object} options - Picker options.\n   * @param {Node} [options.parentElement] - Parent element to attach the overlay.\n   * @param {boolean} [options.useShadowDOM=true] - Whether to use Shadow DOM.\n   * @param {Function} [options.onClick] - Callback invoked on click.\n   * @param {Function} [options.onHover] - Callback invoked on hover.\n   * @param {Function} [options.elementFilter] - Function to filter elements.\n   * @returns {boolean} True if started successfully, false if already active.\n   */\n  start(options) {\n    if (this.active) {\n      return false;\n    }\n    this.active = true;\n    this.options = options;\n\n    document.addEventListener('mousemove', this.handleMouseMove, true);\n    document.addEventListener('click', this.handleClick, true);\n\n    const parentElement = options.parentElement || document.body;\n    const useShadowDOM = options.useShadowDOM !== undefined ? options.useShadowDOM : true;\n    this.overlay.addToDOM(parentElement, useShadowDOM);\n    this.tick();\n\n    return true;\n  }\n\n  /**\n   * Stops the element picking process.\n   */\n  stop() {\n    this.active = false;\n    this.options = undefined;\n\n    document.removeEventListener('mousemove', this.handleMouseMove, true);\n    document.removeEventListener('click', this.handleClick, true);\n\n    this.overlay.removeFromDOM();\n    this.target = undefined;\n    this.mouseX = undefined;\n    this.mouseY = undefined;\n\n    if (this.tickReq) {\n      window.cancelAnimationFrame(this.tickReq);\n    }\n  }\n\n  /**\n   * Handles mouse move events.\n   * @param {MouseEvent} event - The mousemove event.\n   */\n  handleMouseMove(event) {\n    this.mouseX = event.clientX;\n    this.mouseY = event.clientY;\n  }\n\n  /**\n   * Handles click events.\n   * @param {MouseEvent} event - The click event.\n   */\n  handleClick(event) {\n    const clickedEl = document.elementFromPoint(event.clientX, event.clientY);\n    if (this.options && this.options.elementFilter && clickedEl && !this.options.elementFilter(clickedEl)) {\n      return;\n    }\n\n    event.preventDefault();\n    event.stopPropagation();\n    event.stopImmediatePropagation();\n\n    if (this.target && this.options && this.options.onClick) {\n      this.options.onClick(this.target);\n    }\n  }\n\n  /**\n   * The tick function that continuously updates the target element.\n   */\n  tick() {\n    this.updateTarget();\n    this.tickReq = window.requestAnimationFrame(this.tick);\n  }\n\n  /**\n   * Updates the target element based on the current mouse position.\n   */\n  updateTarget() {\n    if (this.mouseX === undefined || this.mouseY === undefined) {\n      return;\n    }\n\n    // Temporarily ignore the overlay's pointer events to detect the underlying element.\n    this.overlay.ignoreCursor();\n    const elAtCursor = document.elementFromPoint(this.mouseX, this.mouseY);\n    const newTarget = elAtCursor;\n    this.overlay.captureCursor();\n\n    // If the target hasn't changed, do nothing.\n    if (!newTarget || newTarget === this.target) {\n      return;\n    }\n\n    // If an element filter is provided and the new target doesn't match, clear the target.\n    if (this.options && this.options.elementFilter) {\n      if (!this.options.elementFilter(newTarget)) {\n        this.target = undefined;\n        this.overlay.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n        return;\n      }\n    }\n\n    this.target = newTarget;\n    const bounds = getElementBounds(newTarget);\n    this.overlay.setBounds(bounds);\n\n    if (this.options && this.options.onHover) {\n      this.options.onHover(newTarget);\n    }\n  }\n}\n\nexport default ElementPicker;\n","import unique from './unique-selector/src/unique-selector';\nimport ElementPicker from './ElementPicker';\n\nclass GleapAdminHelper {\n  picker = null;\n  onElementPicked = null;\n\n  stopPicker = () => {\n    if (this.picker) {\n      this.picker.stop();\n      this.picker = null;\n      return;\n    }\n  };\n\n  startPicker = () => {\n    this.stopPicker();\n    var self = this;\n\n    const style = {\n      borderColor: '#2142E7',\n      background: 'transparent',\n      borderWidth: '4px',\n      borderRadius: '5px',\n    };\n    this.picker = new ElementPicker({ style });\n    this.picker.start({\n      useShadowDOM: false,\n      onClick: (el) => {\n        try {\n          let selector;\n          const tourId = el.getAttribute('data-gleap-tour');\n          if (tourId) {\n            selector = `[data-gleap-tour=\"${tourId}\"]`;\n          } else {\n            selector = unique(el);\n          }\n\n          self.onElementPicked && self.onElementPicked(selector);\n        } catch (e) {\n          console.error('Error while getting unique selector', e);\n        }\n      },\n      elementFilter: (el) => {\n        if (el.classList.contains('gleap-admin-collapse-ui') || el.closest('.gleap-admin-collapse-ui')) {\n          return false;\n        }\n        return true;\n      },\n    });\n  };\n\n  setMode = (mode) => {\n    this.mode = mode;\n    if (mode === 'navigate') {\n      this.stopPicker();\n    }\n    if (mode === 'picker') {\n      this.startPicker();\n    }\n  };\n}\n\nexport default GleapAdminHelper;\n","import { loadIcon } from './UI';\nimport GleapAdminHelper from './GleapAdminHelper';\nimport Gleap, { GleapModalManager, GleapProductTours, GleapBannerManager } from './Gleap';\n\nexport default class GleapAdminManager {\n  libraryInstance = null;\n  lastUrl = undefined;\n  injectedFrame = false;\n  gleapFrameContainer = null;\n  gleapCollapseUI = null;\n  injectedCollapseUI = false;\n  gleapFrame = null;\n  configData = null;\n  adminHelper = null;\n  status = 'navigate';\n  initialized = false;\n\n  // GleapAdminManager singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapAdminManager();\n    }\n\n    return this.instance;\n  }\n\n  logCurrentPage() {\n    const currentUrl = window.location.href;\n    if (currentUrl && currentUrl !== this.lastUrl) {\n      this.lastUrl = currentUrl;\n\n      this.sendMessageToTourBuilder({\n        name: 'page-changed',\n        data: {\n          page: currentUrl,\n        },\n      });\n    }\n  }\n\n  startPageListener() {\n    const self = this;\n    setInterval(function () {\n      self.logCurrentPage();\n    }, 1000);\n  }\n\n  initAdminHelper() {\n    const self = this;\n\n    // Disable product tours.\n    this.initialized = true;\n    GleapProductTours.getInstance().disable();\n    GleapBannerManager.getInstance().disable();\n    GleapModalManager.getInstance().disable();\n    Gleap.close();\n    Gleap.showFeedbackButton(false);\n\n    self.adminHelper = new GleapAdminHelper();\n\n    try {\n      self.adminHelper.onElementPicked = (selector) => {\n        self.toggleCollapseUI(true);\n        self.sendMessageToTourBuilder({\n          name: 'element-picked',\n          data: {\n            selector,\n          },\n        });\n      };\n    } catch (e) {\n      console.log(e);\n    }\n\n    self.injectFrame();\n    self.injectCollapseUI();\n    self.setFrameHeight('loading');\n  }\n\n  setFrameHeight(state) {\n    if (this.gleapFrameContainer) {\n      var height = '';\n      if (state === 'picker' || state === 'navigate') {\n        height = '65px';\n      } else if (state === 'editor') {\n        height = '100vh';\n      } else {\n        height = '0px';\n      }\n      this.gleapFrameContainer.style.height = height;\n    }\n  }\n\n  start() {\n    if (typeof window === 'undefined') {\n      return;\n    }\n\n    if (window.gleapAdminDisabled) {\n      return;\n    }\n\n    var self = this;\n\n    // Add window message listener.\n    window.addEventListener('message', (event) => {\n      if (event.origin !== 'https://app.gleap.io') {\n        return;\n      }\n\n      try {\n        const data = JSON.parse(event.data);\n\n        if (data.type === 'admin') {\n          if (data.name === 'load') {\n            self.configData = data.data;\n            self.initAdminHelper();\n          }\n\n          if (data.name === 'smartlink-search-result') {\n            this.sendMessageToTourBuilder({\n              name: 'smartlink-search-result',\n              data: data.data,\n            });\n          }\n\n          if (data.name === 'translate-complete') {\n            this.sendMessageToTourBuilder({\n              name: 'translate-complete',\n              data: data.data,\n            });\n          }\n        }\n\n        if (data.type === 'tourbuilder') {\n          if (data.name === 'loaddata') {\n            this.sendMessageToTourBuilder({\n              name: 'data',\n              data: {\n                ...self.configData,\n                currentPage: window.location.href,\n              },\n            });\n          }\n\n          if (data.name === 'highlight-element') {\n            // Cleanup.\n            document.querySelectorAll('.gleap-admin-highlight').forEach((el) => {\n              el.classList.remove('gleap-admin-highlight');\n            });\n\n            // Find the element and highlight it.\n            if (data?.data?.selector) {\n              const element = document.querySelector(data?.data?.selector);\n              if (element) {\n                element.classList.add('gleap-admin-highlight');\n              }\n            }\n          }\n\n          if (data.name === 'smartlink-search') {\n            this.sendMessage({\n              name: 'smartlink-search',\n              data: data.data,\n            });\n          }\n\n          if (data.name === 'product-tour-started') {\n            this.sendMessage({\n              name: 'product-tour-started',\n              data: data.data,\n            });\n          }\n\n          if (data.name === 'translate') {\n            this.sendMessage({\n              name: 'translate',\n              data: data.data,\n            });\n          }\n\n          if (data.name === 'save') {\n            this.sendMessage({\n              name: 'save',\n              data: data.data,\n            });\n          }\n\n          if (data.name === 'update-steps') {\n            this.sendMessage({\n              name: 'update-steps',\n              data: data.data,\n            });\n          }\n\n          if (data.name === 'click') {\n            try {\n              document.querySelector(data.data.selector).click();\n            } catch (e) {\n              console.log(e);\n            }\n          }\n\n          if (data.name === 'status-changed') {\n            self.status = data.data;\n            this.setFrameHeight(self.status);\n            self.adminHelper.stopPicker();\n\n            if (self.status === 'picker') {\n              self.adminHelper.startPicker();\n            }\n          }\n        }\n      } catch (exp) {}\n    });\n\n    this.sendMessage({\n      name: 'init',\n    });\n\n    this.startPageListener();\n  }\n\n  sendMessage(data) {\n    try {\n      if (window && window.opener) {\n        window.opener.postMessage(\n          JSON.stringify({\n            ...data,\n            type: 'admin',\n          }),\n          '*'\n        );\n      }\n    } catch (e) {}\n  }\n\n  sendMessageToTourBuilder(data) {\n    try {\n      if (this.gleapFrame && this.gleapFrame.contentWindow) {\n        this.gleapFrame.contentWindow.postMessage(\n          JSON.stringify({\n            ...data,\n            type: 'tourbuilder',\n          }),\n          '*'\n        );\n      }\n    } catch (e) {}\n  }\n\n  toggleCollapseUI = (onlyIfActive = false) => {\n    const COLLAPSE_UI_ACTIVE_CLASS = 'gleap-admin-collapse-ui-active';\n    const FRAME_CONTAINER_ACTIVE_CLASS = 'gleap-admin-frame-container-active';\n\n    // Helper function to check if an element has an active class\n    const isActive = (element, activeClass) => element && element.classList.contains(activeClass);\n\n    // Check if onlyIfActive is true and if the UI elements are already inactive\n    if (\n      onlyIfActive &&\n      (!isActive(this.gleapCollapseUI, COLLAPSE_UI_ACTIVE_CLASS) ||\n        !isActive(this.gleapFrameContainer, FRAME_CONTAINER_ACTIVE_CLASS))\n    ) {\n      return; // Return early without toggling the UI\n    }\n\n    // Toggle the UI elements\n    if (this.gleapCollapseUI) {\n      this.gleapCollapseUI.classList.toggle(COLLAPSE_UI_ACTIVE_CLASS);\n    }\n    if (this.gleapFrameContainer) {\n      this.gleapFrameContainer.classList.toggle(FRAME_CONTAINER_ACTIVE_CLASS);\n    }\n  };\n\n  injectCollapseUI = () => {\n    if (this.injectedCollapseUI) {\n      return;\n    }\n    this.injectedCollapseUI = true;\n\n    // Inject widget HTML.\n    var elem = document.createElement('div');\n    elem.className = 'gleap-admin-collapse-ui';\n    elem.innerHTML = `<div class=\"gleap-admin-collapse-ui-icon\">\n    ${loadIcon('arrowdown')}\n    </div>`;\n    document.body.appendChild(elem);\n\n    this.gleapCollapseUI = elem;\n\n    elem.addEventListener('click', (e) => {\n      e.stopImmediatePropagation();\n      e.stopPropagation();\n      e.preventDefault();\n\n      this.toggleCollapseUI();\n    });\n  };\n\n  injectFrame = () => {\n    if (this.injectedFrame) {\n      return;\n    }\n    this.injectedFrame = true;\n\n    // Inject widget HTML.\n    var elem = document.createElement('div');\n    elem.className = 'gleap-admin-frame-container';\n    elem.innerHTML = `<iframe src=\"https://app.gleap.io/${\n      this?.configData?.type === 'tooltips' ? 'tooltipbuilder' : 'producttourbuilder'\n    }\" class=\"gleap-admin-frame\" scrolling=\"no\" title=\"Gleap Admin Window\" allow=\"autoplay; encrypted-media; fullscreen;\" frameborder=\"0\"></iframe>`;\n    document.body.appendChild(elem);\n\n    this.gleapFrameContainer = elem;\n    this.gleapFrame = document.querySelector('.gleap-admin-frame');\n  };\n}\n","const GleapTours = (function () {\n  'use strict';\n  let currentConfig = {};\n  function configure(config = {}) {\n    currentConfig = {\n      animate: true,\n      allowClose: true,\n      overlayOpacity: 0.7,\n      smoothScroll: false,\n      disableActiveInteraction: false,\n      showProgress: false,\n      stagePadding: 10,\n      stageRadius: 5,\n      popoverOffset: 10,\n      showButtons: ['next', 'previous', 'close'],\n      disableButtons: [],\n      overlayColor: '#000',\n      ...config,\n    };\n  }\n  function getConfig(key) {\n    return key ? currentConfig[key] : currentConfig;\n  }\n  function easeInOutQuad(elapsed, initialValue, amountOfChange, duration) {\n    if ((elapsed /= duration / 2) < 1) {\n      return (amountOfChange / 2) * elapsed * elapsed + initialValue;\n    }\n    return (-amountOfChange / 2) * (--elapsed * (elapsed - 2) - 1) + initialValue;\n  }\n  function getFocusableElements(parentEls) {\n    const focusableQuery =\n      'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n    return parentEls\n      .flatMap((parentEl) => {\n        const isParentFocusable = parentEl.matches(focusableQuery);\n        const focusableEls = Array.from(parentEl.querySelectorAll(focusableQuery));\n        return [...(isParentFocusable ? [parentEl] : []), ...focusableEls];\n      })\n      .filter((el) => {\n        return getComputedStyle(el).pointerEvents !== 'none' && isElementVisible(el);\n      });\n  }\n  function bringInView(element) {\n    if (!element || isElementInView(element)) {\n      return;\n    }\n    const shouldSmoothScroll = getConfig('smoothScroll');\n    element.scrollIntoView({\n      // Removing the smooth scrolling for elements which exist inside the scrollable parent\n      // This was causing the highlight to not properly render\n      behavior: !shouldSmoothScroll || hasScrollableParent(element) ? 'auto' : 'smooth',\n      inline: 'center',\n      block: 'center',\n    });\n  }\n  function hasScrollableParent(e) {\n    if (!e || !e.parentElement) {\n      return;\n    }\n    const parent = e.parentElement;\n    return parent.scrollHeight > parent.clientHeight;\n  }\n  function isElementInView(element) {\n    const rect = element.getBoundingClientRect();\n    return (\n      rect.top >= 0 &&\n      rect.left >= 0 &&\n      rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n      rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n    );\n  }\n  function isElementVisible(el) {\n    return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n  }\n  let currentState = {};\n  function setState(key, value) {\n    currentState[key] = value;\n  }\n  function getState(key) {\n    return key ? currentState[key] : currentState;\n  }\n  function resetState() {\n    currentState = {};\n  }\n  let registeredListeners = {};\n  function listen(hook, callback) {\n    registeredListeners[hook] = callback;\n  }\n  function emit(hook) {\n    var _a;\n    (_a = registeredListeners[hook]) == null ? void 0 : _a.call(registeredListeners);\n  }\n  function destroyEmitter() {\n    registeredListeners = {};\n  }\n  function transitionStage(elapsed, duration, from, to) {\n    let activeStagePosition = getState('__activeStagePosition');\n    const fromDefinition = activeStagePosition ? activeStagePosition : from.getBoundingClientRect();\n    const toDefinition = to.getBoundingClientRect();\n    const x = easeInOutQuad(elapsed, fromDefinition.x, toDefinition.x - fromDefinition.x, duration);\n    const y = easeInOutQuad(elapsed, fromDefinition.y, toDefinition.y - fromDefinition.y, duration);\n    const width = easeInOutQuad(elapsed, fromDefinition.width, toDefinition.width - fromDefinition.width, duration);\n    const height = easeInOutQuad(elapsed, fromDefinition.height, toDefinition.height - fromDefinition.height, duration);\n    activeStagePosition = {\n      x,\n      y,\n      width,\n      height,\n    };\n    renderOverlay(activeStagePosition);\n    setState('__activeStagePosition', activeStagePosition);\n  }\n  function trackActiveElement(element) {\n    if (!element) {\n      return;\n    }\n    const definition = element.getBoundingClientRect();\n    const activeStagePosition = {\n      x: definition.x,\n      y: definition.y,\n      width: definition.width,\n      height: definition.height,\n    };\n    setState('__activeStagePosition', activeStagePosition);\n    renderOverlay(activeStagePosition);\n  }\n  function refreshOverlay() {\n    const activeStagePosition = getState('__activeStagePosition');\n    const overlaySvg = getState('__overlaySvg');\n    if (!activeStagePosition) {\n      return;\n    }\n    if (!overlaySvg) {\n      console.warn('No stage svg found.');\n      return;\n    }\n    const windowX = window.innerWidth;\n    const windowY = window.innerHeight;\n    overlaySvg.setAttribute('viewBox', `0 0 ${windowX} ${windowY}`);\n  }\n  function mountOverlay(stagePosition) {\n    const overlaySvg = createOverlaySvg(stagePosition);\n    document.body.appendChild(overlaySvg);\n    onDriverClick(overlaySvg, (e) => {\n      const target = e.target;\n      if (target.tagName !== 'path') {\n        return;\n      }\n      emit('overlayClick');\n    });\n    setState('__overlaySvg', overlaySvg);\n  }\n  function renderOverlay(stagePosition) {\n    const overlaySvg = getState('__overlaySvg');\n    if (!overlaySvg) {\n      mountOverlay(stagePosition);\n      return;\n    }\n    const pathElement = overlaySvg.firstElementChild;\n    if ((pathElement == null ? void 0 : pathElement.tagName) !== 'path') {\n      throw new Error('no path element found in stage svg');\n    }\n    pathElement.setAttribute('d', generateStageSvgPathString(stagePosition));\n  }\n  function createOverlaySvg(stage) {\n    const windowX = window.innerWidth;\n    const windowY = window.innerHeight;\n    const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n    svg.classList.add('gleap-tour-overlay', 'gleap-tour-overlay-animated');\n    svg.setAttribute('viewBox', `0 0 ${windowX} ${windowY}`);\n    svg.setAttribute('xmlSpace', 'preserve');\n    svg.setAttribute('xmlnsXlink', 'http://www.w3.org/1999/xlink');\n    svg.setAttribute('version', '1.1');\n    svg.setAttribute('preserveAspectRatio', 'xMinYMin slice');\n    svg.style.fillRule = 'evenodd';\n    svg.style.clipRule = 'evenodd';\n    svg.style.strokeLinejoin = 'round';\n    svg.style.strokeMiterlimit = '2';\n    svg.style.zIndex = '10000';\n    svg.style.position = 'fixed';\n    svg.style.top = '0';\n    svg.style.left = '0';\n    svg.style.width = '100%';\n    svg.style.height = '100%';\n    const stagePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n    stagePath.setAttribute('d', generateStageSvgPathString(stage));\n    stagePath.style.fill = getConfig('overlayColor') || 'rgb(0,0,0)';\n    stagePath.style.opacity = `${getConfig('overlayOpacity')}`;\n    stagePath.style.pointerEvents = 'auto';\n    stagePath.style.cursor = 'auto';\n    svg.appendChild(stagePath);\n    return svg;\n  }\n  function generateStageSvgPathString(stage) {\n    const windowX = window.innerWidth;\n    const windowY = window.innerHeight;\n    const stagePadding = getConfig('stagePadding') || 0;\n    const stageRadius = getConfig('stageRadius') || 0;\n    const stageWidth = stage.width + stagePadding * 2;\n    const stageHeight = stage.height + stagePadding * 2;\n    const limitedRadius = Math.min(stageRadius, stageWidth / 2, stageHeight / 2);\n    const normalizedRadius = Math.floor(Math.max(limitedRadius, 0));\n    const highlightBoxX = stage.x - stagePadding + normalizedRadius;\n    const highlightBoxY = stage.y - stagePadding;\n    const highlightBoxWidth = stageWidth - normalizedRadius * 2;\n    const highlightBoxHeight = stageHeight - normalizedRadius * 2;\n    return `M${windowX},0L0,0L0,${windowY}L${windowX},${windowY}L${windowX},0Z\n    M${highlightBoxX},${highlightBoxY} h${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},${normalizedRadius} v${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},${normalizedRadius} h-${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},-${normalizedRadius} v-${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},-${normalizedRadius} z`;\n  }\n  function destroyOverlay() {\n    const overlaySvg = getState('__overlaySvg');\n    if (overlaySvg) {\n      overlaySvg.remove();\n    }\n  }\n  function mountDummyElement() {\n    const existingDummy = document.getElementById('gleap-tour-dummy-element');\n    if (existingDummy) {\n      return existingDummy;\n    }\n    let element = document.createElement('div');\n    element.id = 'gleap-tour-dummy-element';\n    element.style.width = '0';\n    element.style.height = '0';\n    element.style.pointerEvents = 'none';\n    element.style.opacity = '0';\n    element.style.position = 'fixed';\n    element.style.top = '50%';\n    element.style.left = '50%';\n    document.body.appendChild(element);\n    return element;\n  }\n  function highlight(step, attemptTime = 5000) {\n    const { element } = step;\n    let elemObj = element;\n    if (typeof elemObj === 'string') {\n      try {\n        elemObj = document.querySelector(element);\n      } catch (error) {\n        // This will escape colons within IDs but not affect pseudo-classes or other valid uses of colons\n        let refactoredElement = element.replace(/(#[^#\\s]+)/g, function (match) {\n          return match.replace(/:/g, '\\\\:');\n        });\n        elemObj = document.querySelector(refactoredElement);\n      }\n    }\n    if (element && !elemObj && attemptTime >= 0) {\n      setTimeout(() => {\n        hidePopover();\n        highlight(step, attemptTime - 100);\n      }, 100);\n\n      return;\n    }\n\n    if (!elemObj) {\n      if (step.mode === 'INPUT' || step.mode === 'CLICK') {\n        return getConfig('onElementNotFound')(step);\n      }\n    }\n\n    if (!elemObj) {\n      elemObj = mountDummyElement();\n    }\n\n    transferHighlight(elemObj, step);\n  }\n  function refreshActiveHighlight() {\n    var activeHighlight = getState('__activeElement');\n    const activeStep = getState('__activeStep');\n    if (!activeHighlight || !activeStep) {\n      return;\n    }\n\n    // Re-query the element if the cached reference is no longer in the DOM.\n    if (!document.body.contains(activeHighlight) && activeStep.element && typeof activeStep.element === 'string') {\n      try {\n        var freshEl = document.querySelector(activeStep.element);\n        if (!freshEl) {\n          var escaped = activeStep.element.replace(/(#[^#\\s]+)/g, function (match) {\n            return match.replace(/:/g, '\\\\:');\n          });\n          freshEl = document.querySelector(escaped);\n        }\n        if (freshEl) {\n          activeHighlight = freshEl;\n          setState('__activeElement', freshEl);\n          setState('activeElement', freshEl);\n          freshEl.classList.add('gleap-tour-active-element');\n        }\n      } catch (e) {}\n    }\n\n    trackActiveElement(activeHighlight);\n    refreshOverlay();\n    repositionPopover(activeHighlight, activeStep);\n  }\n  function transferHighlight(toElement, toStep) {\n    const duration = 400;\n    const start = Date.now();\n    const fromStep = getState('__activeStep');\n    const fromElement = getState('__activeElement') || toElement;\n    const isFirstHighlight = !fromElement || fromElement === toElement;\n    const isToDummyElement = toElement.id === 'gleap-tour-dummy-element';\n    const isFromDummyElement = fromElement.id === 'gleap-tour-dummy-element';\n    const isAnimatedTour = getConfig('animate');\n    const highlightStartedHook = toStep.onHighlightStarted || getConfig('onHighlightStarted');\n    const highlightedHook = (toStep == null ? void 0 : toStep.onHighlighted) || getConfig('onHighlighted');\n    const deselectedHook = (fromStep == null ? void 0 : fromStep.onDeselected) || getConfig('onDeselected');\n    const config = getConfig();\n    const state = getState();\n    if (!isFirstHighlight && deselectedHook) {\n      deselectedHook(isFromDummyElement ? void 0 : fromElement, fromStep, {\n        config,\n        state,\n      });\n    }\n    if (highlightStartedHook) {\n      highlightStartedHook(isToDummyElement ? void 0 : toElement, toStep, {\n        config,\n        state,\n      });\n    }\n    const hasDelayedPopover = !isFirstHighlight && isAnimatedTour;\n    let isPopoverRendered = false;\n    hidePopover();\n    setState('previousStep', fromStep);\n    setState('previousElement', fromElement);\n    setState('activeStep', toStep);\n    setState('activeElement', toElement);\n    const animate = () => {\n      const transitionCallback = getState('__transitionCallback');\n      if (transitionCallback !== animate) {\n        return;\n      }\n      const elapsed = Date.now() - start;\n      const timeRemaining = duration - elapsed;\n      const isHalfwayThrough = timeRemaining <= duration / 2;\n      if (toStep.popover && isHalfwayThrough && !isPopoverRendered && hasDelayedPopover) {\n        renderPopover(toElement, toStep);\n        isPopoverRendered = true;\n      }\n      if (getConfig('animate') && elapsed < duration) {\n        transitionStage(elapsed, duration, fromElement, toElement);\n      } else {\n        trackActiveElement(toElement);\n        if (highlightedHook) {\n          highlightedHook(isToDummyElement ? void 0 : toElement, toStep, {\n            config: getConfig(),\n            state: getState(),\n          });\n        }\n        setState('__transitionCallback', void 0);\n        setState('__previousStep', fromStep);\n        setState('__previousElement', fromElement);\n        setState('__activeStep', toStep);\n        setState('__activeElement', toElement);\n      }\n      window.requestAnimationFrame(animate);\n    };\n    setState('__transitionCallback', animate);\n    window.requestAnimationFrame(animate);\n    bringInView(toElement);\n    if (!hasDelayedPopover && toStep.popover) {\n      renderPopover(toElement, toStep);\n    }\n    fromElement.classList.remove('gleap-tour-active-element', 'gleap-tour-no-interaction');\n    fromElement.removeAttribute('aria-haspopup');\n    fromElement.removeAttribute('aria-expanded');\n    fromElement.removeAttribute('aria-controls');\n    const disableActiveInteraction = toStep.disableActiveInteraction ?? getConfig('disableActiveInteraction') ?? false;\n    if (disableActiveInteraction) {\n      toElement.classList.add('gleap-tour-no-interaction');\n    }\n    toElement.classList.add('gleap-tour-active-element');\n    toElement.setAttribute('aria-haspopup', 'dialog');\n    toElement.setAttribute('aria-expanded', 'true');\n    toElement.setAttribute('aria-controls', 'gleap-tour-popover-content');\n  }\n  function destroyHighlight() {\n    var _a;\n    (_a = document.getElementById('gleap-tour-dummy-element')) == null ? void 0 : _a.remove();\n    document.querySelectorAll('.gleap-tour-active-element').forEach((element) => {\n      element.classList.remove('gleap-tour-active-element', 'gleap-tour-no-interaction');\n      element.removeAttribute('aria-haspopup');\n      element.removeAttribute('aria-expanded');\n      element.removeAttribute('aria-controls');\n    });\n  }\n  function requireRefresh() {\n    const resizeTimeout = getState('__resizeTimeout');\n    if (resizeTimeout) {\n      window.cancelAnimationFrame(resizeTimeout);\n    }\n    setState('__resizeTimeout', window.requestAnimationFrame(refreshActiveHighlight));\n  }\n  function trapFocus(e) {\n    var _a;\n    const isActivated = getState('isInitialized');\n    if (!isActivated) {\n      return;\n    }\n    const isTabKey = e.key === 'Tab' || e.keyCode === 9;\n    if (!isTabKey) {\n      return;\n    }\n    const activeElement = getState('__activeElement');\n    const popoverEl = (_a = getState('popover')) == null ? void 0 : _a.wrapper;\n    const focusableEls = getFocusableElements([\n      ...(popoverEl ? [popoverEl] : []),\n      ...(activeElement ? [activeElement] : []),\n    ]);\n    const firstFocusableEl = focusableEls[0];\n    const lastFocusableEl = focusableEls[focusableEls.length - 1];\n    e.preventDefault();\n    if (e.shiftKey) {\n      const previousFocusableEl = focusableEls[focusableEls.indexOf(document.activeElement) - 1] || lastFocusableEl;\n      previousFocusableEl == null ? void 0 : previousFocusableEl.focus();\n    } else {\n      const nextFocusableEl = focusableEls[focusableEls.indexOf(document.activeElement) + 1] || firstFocusableEl;\n      nextFocusableEl == null ? void 0 : nextFocusableEl.focus();\n    }\n  }\n  function onKeyup(e) {\n    var _a;\n    const allowKeyboardControl = (_a = getConfig('allowKeyboardControl')) != null ? _a : true;\n    if (!allowKeyboardControl) {\n      return;\n    }\n    if (e.key === 'Escape') {\n      emit('escapePress');\n    } else if (e.key === 'ArrowRight') {\n      emit('arrowRightPress');\n    } else if (e.key === 'ArrowLeft') {\n      emit('arrowLeftPress');\n    }\n  }\n  function onDriverClick(element, listener, shouldPreventDefault) {\n    const listenerWrapper = (e, listener2) => {\n      const target = e.target;\n      if (!element.contains(target)) {\n        return;\n      }\n      if (!shouldPreventDefault || shouldPreventDefault(target)) {\n        e.preventDefault();\n        e.stopPropagation();\n        e.stopImmediatePropagation();\n      }\n      listener2 == null ? void 0 : listener2(e);\n    };\n    const useCapture = true;\n    document.addEventListener('pointerdown', listenerWrapper, useCapture);\n    document.addEventListener('mousedown', listenerWrapper, useCapture);\n    document.addEventListener('pointerup', listenerWrapper, useCapture);\n    document.addEventListener('mouseup', listenerWrapper, useCapture);\n    document.addEventListener(\n      'click',\n      (e) => {\n        listenerWrapper(e, listener);\n      },\n      useCapture\n    );\n  }\n  function initEvents() {\n    window.addEventListener('keyup', onKeyup, false);\n    window.addEventListener('keydown', trapFocus, false);\n    window.addEventListener('resize', requireRefresh);\n    window.addEventListener('scroll', requireRefresh);\n\n    const interval = setInterval(function () {\n      if (!getState('isInitialized')) return;\n      requireRefresh();\n    }, 1000);\n    setState('__positionInterval', interval);\n  }\n  function destroyEvents() {\n    window.removeEventListener('keyup', onKeyup);\n    window.removeEventListener('resize', requireRefresh);\n    window.removeEventListener('scroll', requireRefresh);\n\n    const interval = getState('__positionInterval');\n    if (interval) clearInterval(interval);\n  }\n  function hidePopover() {\n    const popover = getState('popover');\n    if (!popover) {\n      return;\n    }\n    popover.wrapper.style.display = 'none';\n  }\n  function renderPopover(element, step) {\n    var _a, _b;\n    let popover = getState('popover');\n    if (popover) {\n      document.body.removeChild(popover.wrapper);\n    }\n    popover = createPopover();\n    document.body.appendChild(popover.wrapper);\n    const {\n      title,\n      description,\n      showButtons,\n      disableButtons,\n      showProgress,\n      nextBtnText = getConfig('nextBtnText') || 'Next',\n      prevBtnText = getConfig('prevBtnText') || 'Previous',\n      progressText = getConfig('progressText') || '{current} of {total}',\n    } = step.popover || {};\n    popover.nextButton.innerHTML = nextBtnText;\n    popover.previousButton.innerHTML = prevBtnText;\n    popover.progress.innerHTML = progressText;\n    if (title) {\n      popover.title.innerHTML = title;\n      popover.title.style.display = 'block';\n    } else {\n      popover.title.style.display = 'none';\n    }\n    if (description) {\n      popover.description.innerHTML = description;\n      popover.description.style.display = 'block';\n    } else {\n      popover.description.style.display = 'none';\n    }\n    const showButtonsConfig = showButtons || getConfig('showButtons');\n    const showProgressConfig = showProgress || getConfig('showProgress') || false;\n    const showFooter =\n      (showButtonsConfig == null ? void 0 : showButtonsConfig.includes('next')) ||\n      (showButtonsConfig == null ? void 0 : showButtonsConfig.includes('previous')) ||\n      showProgressConfig;\n    popover.closeButton.style.display = showButtonsConfig.includes('close') ? 'block' : 'none';\n    if (showFooter) {\n      popover.footer.style.display = 'flex';\n      popover.progress.style.display = showProgressConfig ? 'block' : 'none';\n      popover.nextButton.style.display = showButtonsConfig.includes('next') ? 'block' : 'none';\n      popover.previousButton.style.display = showButtonsConfig.includes('previous') ? 'block' : 'none';\n    } else {\n      popover.footer.style.display = 'none';\n    }\n    const disabledButtonsConfig = disableButtons || getConfig('disableButtons') || [];\n    if (disabledButtonsConfig == null ? void 0 : disabledButtonsConfig.includes('next')) {\n      popover.nextButton.disabled = true;\n      popover.nextButton.classList.add('gleap-tour-popover-btn-disabled');\n    }\n    if (disabledButtonsConfig == null ? void 0 : disabledButtonsConfig.includes('previous')) {\n      popover.previousButton.disabled = true;\n      popover.previousButton.classList.add('gleap-tour-popover-btn-disabled');\n    }\n    if (disabledButtonsConfig == null ? void 0 : disabledButtonsConfig.includes('close')) {\n      popover.closeButton.disabled = true;\n      popover.closeButton.classList.add('gleap-tour-popover-btn-disabled');\n    }\n    const popoverWrapper = popover.wrapper;\n    popoverWrapper.style.display = 'block';\n    popoverWrapper.style.left = '';\n    popoverWrapper.style.top = '';\n    popoverWrapper.style.bottom = '';\n    popoverWrapper.style.right = '';\n    popoverWrapper.id = 'gleap-tour-popover-content';\n    popoverWrapper.setAttribute('role', 'dialog');\n    popoverWrapper.setAttribute('aria-labelledby', 'gleap-tour-popover-title');\n    popoverWrapper.setAttribute('aria-describedby', 'gleap-tour-popover-description');\n    const popoverArrow = popover.arrow;\n    popoverArrow.className = 'gleap-tour-popover-arrow';\n    const customPopoverClass = ((_a = step.popover) == null ? void 0 : _a.popoverClass) || getConfig('popoverClass') || '';\n    popoverWrapper.className = `gleap-tour-popover ${customPopoverClass}`.trim();\n    onDriverClick(\n      popover.wrapper,\n      (e) => {\n        var _a2, _b2, _c;\n        const target = e.target;\n        const onNextClick = ((_a2 = step.popover) == null ? void 0 : _a2.onNextClick) || getConfig('onNextClick');\n        const onPrevClick = ((_b2 = step.popover) == null ? void 0 : _b2.onPrevClick) || getConfig('onPrevClick');\n        const onCloseClick = ((_c = step.popover) == null ? void 0 : _c.onCloseClick) || getConfig('onCloseClick');\n        if (target.classList.contains('gleap-tour-popover-next-btn')) {\n          if (onNextClick) {\n            return onNextClick(element, step, {\n              config: getConfig(),\n              state: getState(),\n            });\n          } else {\n            return emit('nextClick');\n          }\n        }\n        if (target.classList.contains('gleap-tour-popover-prev-btn')) {\n          if (onPrevClick) {\n            return onPrevClick(element, step, {\n              config: getConfig(),\n              state: getState(),\n            });\n          } else {\n            return emit('prevClick');\n          }\n        }\n        if (target.classList.contains('gleap-tour-popover-close-btn')) {\n          if (onCloseClick) {\n            return onCloseClick(element, step, {\n              config: getConfig(),\n              state: getState(),\n            });\n          } else {\n            return emit('closeClick');\n          }\n        }\n        return void 0;\n      },\n      (target) => {\n        return (\n          !(popover == null ? void 0 : popover.description.contains(target)) &&\n          !(popover == null ? void 0 : popover.title.contains(target)) &&\n          typeof target.className === 'string' &&\n          target.className.includes('gleap-tour-popover')\n        );\n      }\n    );\n    setState('popover', popover);\n    const onPopoverRender = ((_b = step.popover) == null ? void 0 : _b.onPopoverRender) || getConfig('onPopoverRender');\n    if (onPopoverRender) {\n      onPopoverRender(popover, {\n        config: getConfig(),\n        state: getState(),\n      });\n    }\n    repositionPopover(element, step);\n    bringInView(popoverWrapper);\n    const isToDummyElement = element.classList.contains('gleap-tour-dummy-element');\n    const focusableElement = getFocusableElements([popoverWrapper, ...(isToDummyElement ? [] : [element])]);\n    if (focusableElement.length > 0) {\n      focusableElement[0].focus();\n    }\n  }\n  function getPopoverDimensions() {\n    const popover = getState('popover');\n    if (!(popover == null ? void 0 : popover.wrapper)) {\n      return;\n    }\n    const boundingClientRect = popover.wrapper.getBoundingClientRect();\n    const stagePadding = getConfig('stagePadding') || 0;\n    const popoverOffset = getConfig('popoverOffset') || 0;\n    return {\n      width: boundingClientRect.width + stagePadding + popoverOffset,\n      height: boundingClientRect.height + stagePadding + popoverOffset,\n      realWidth: boundingClientRect.width,\n      realHeight: boundingClientRect.height,\n    };\n  }\n  function calculateTopForLeftRight(alignment, config) {\n    const { elementDimensions, popoverDimensions, popoverPadding, popoverArrowDimensions } = config;\n    if (alignment === 'start') {\n      return Math.max(\n        Math.min(\n          elementDimensions.top - popoverPadding,\n          window.innerHeight - popoverDimensions.realHeight - popoverArrowDimensions.width\n        ),\n        popoverArrowDimensions.width\n      );\n    }\n    if (alignment === 'end') {\n      return Math.max(\n        Math.min(\n          elementDimensions.top -\n            (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) +\n            elementDimensions.height +\n            popoverPadding,\n          window.innerHeight -\n            (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n            popoverArrowDimensions.width\n        ),\n        popoverArrowDimensions.width\n      );\n    }\n    if (alignment === 'center') {\n      return Math.max(\n        Math.min(\n          elementDimensions.top +\n            elementDimensions.height / 2 -\n            (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) / 2,\n          window.innerHeight -\n            (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n            popoverArrowDimensions.width\n        ),\n        popoverArrowDimensions.width\n      );\n    }\n    return 0;\n  }\n  function calculateLeftForTopBottom(alignment, config) {\n    const { elementDimensions, popoverDimensions, popoverPadding, popoverArrowDimensions } = config;\n    if (alignment === 'start') {\n      return Math.max(\n        Math.min(\n          elementDimensions.left - popoverPadding,\n          window.innerWidth - popoverDimensions.realWidth - popoverArrowDimensions.width\n        ),\n        popoverArrowDimensions.width\n      );\n    }\n    if (alignment === 'end') {\n      return Math.max(\n        Math.min(\n          elementDimensions.left -\n            (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) +\n            elementDimensions.width +\n            popoverPadding,\n          window.innerWidth -\n            (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n            popoverArrowDimensions.width\n        ),\n        popoverArrowDimensions.width\n      );\n    }\n    if (alignment === 'center') {\n      return Math.max(\n        Math.min(\n          elementDimensions.left +\n            elementDimensions.width / 2 -\n            (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2,\n          window.innerWidth -\n            (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n            popoverArrowDimensions.width\n        ),\n        popoverArrowDimensions.width\n      );\n    }\n    return 0;\n  }\n  function repositionPopover(element, step) {\n    const popover = getState('popover');\n    if (!popover) {\n      return;\n    }\n    const { align = 'start', side = 'left' } = (step == null ? void 0 : step.popover) || {};\n    const requiredAlignment = align;\n    const requiredSide = element.id === 'gleap-tour-dummy-element' ? 'over' : side;\n    const popoverPadding = getConfig('stagePadding') || 0;\n    const popoverDimensions = getPopoverDimensions();\n    const popoverArrowDimensions = popover.arrow.getBoundingClientRect();\n    const elementDimensions = element.getBoundingClientRect();\n    const topValue = elementDimensions.top - popoverDimensions.height;\n    let isTopOptimal = topValue >= 0;\n    const bottomValue = window.innerHeight - (elementDimensions.bottom + popoverDimensions.height);\n    let isBottomOptimal = bottomValue >= 0;\n    const leftValue = elementDimensions.left - popoverDimensions.width;\n    let isLeftOptimal = leftValue >= 0;\n    const rightValue = window.innerWidth - (elementDimensions.right + popoverDimensions.width);\n    let isRightOptimal = rightValue >= 0;\n    const noneOptimal = !isTopOptimal && !isBottomOptimal && !isLeftOptimal && !isRightOptimal;\n    let popoverRenderedSide = requiredSide;\n    if (requiredSide === 'top' && isTopOptimal) {\n      isRightOptimal = isLeftOptimal = isBottomOptimal = false;\n    } else if (requiredSide === 'bottom' && isBottomOptimal) {\n      isRightOptimal = isLeftOptimal = isTopOptimal = false;\n    } else if (requiredSide === 'left' && isLeftOptimal) {\n      isRightOptimal = isTopOptimal = isBottomOptimal = false;\n    } else if (requiredSide === 'right' && isRightOptimal) {\n      isLeftOptimal = isTopOptimal = isBottomOptimal = false;\n    }\n    if (requiredSide === 'over') {\n      const leftToSet = window.innerWidth / 2 - popoverDimensions.realWidth / 2;\n      const topToSet = window.innerHeight / 2 - popoverDimensions.realHeight / 2;\n      popover.wrapper.style.left = `${leftToSet}px`;\n      popover.wrapper.style.right = `auto`;\n      popover.wrapper.style.top = `${topToSet}px`;\n      popover.wrapper.style.bottom = `auto`;\n    } else if (noneOptimal) {\n      const leftValue2 = window.innerWidth / 2 - (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2;\n      const bottomValue2 = 10;\n      popover.wrapper.style.left = `${leftValue2}px`;\n      popover.wrapper.style.right = `auto`;\n      popover.wrapper.style.bottom = `${bottomValue2}px`;\n      popover.wrapper.style.top = `auto`;\n    } else if (isLeftOptimal) {\n      const leftToSet = Math.min(\n        leftValue,\n        window.innerWidth - (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) - popoverArrowDimensions.width\n      );\n      const topToSet = calculateTopForLeftRight(requiredAlignment, {\n        elementDimensions,\n        popoverDimensions,\n        popoverPadding,\n        popoverArrowDimensions,\n      });\n      popover.wrapper.style.left = `${leftToSet}px`;\n      popover.wrapper.style.top = `${topToSet}px`;\n      popover.wrapper.style.bottom = `auto`;\n      popover.wrapper.style.right = 'auto';\n      popoverRenderedSide = 'left';\n    } else if (isRightOptimal) {\n      const rightToSet = Math.min(\n        rightValue,\n        window.innerWidth - (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) - popoverArrowDimensions.width\n      );\n      const topToSet = calculateTopForLeftRight(requiredAlignment, {\n        elementDimensions,\n        popoverDimensions,\n        popoverPadding,\n        popoverArrowDimensions,\n      });\n      popover.wrapper.style.right = `${rightToSet}px`;\n      popover.wrapper.style.top = `${topToSet}px`;\n      popover.wrapper.style.bottom = `auto`;\n      popover.wrapper.style.left = 'auto';\n      popoverRenderedSide = 'right';\n    } else if (isTopOptimal) {\n      const topToSet = Math.min(topValue, window.innerHeight - popoverDimensions.realHeight - popoverArrowDimensions.width);\n      let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n        elementDimensions,\n        popoverDimensions,\n        popoverPadding,\n        popoverArrowDimensions,\n      });\n      popover.wrapper.style.top = `${topToSet}px`;\n      popover.wrapper.style.left = `${leftToSet}px`;\n      popover.wrapper.style.bottom = `auto`;\n      popover.wrapper.style.right = 'auto';\n      popoverRenderedSide = 'top';\n    } else if (isBottomOptimal) {\n      const bottomToSet = Math.min(\n        bottomValue,\n        window.innerHeight -\n          (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n          popoverArrowDimensions.width\n      );\n      let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n        elementDimensions,\n        popoverDimensions,\n        popoverPadding,\n        popoverArrowDimensions,\n      });\n      popover.wrapper.style.left = `${leftToSet}px`;\n      popover.wrapper.style.bottom = `${bottomToSet}px`;\n      popover.wrapper.style.top = `auto`;\n      popover.wrapper.style.right = 'auto';\n      popoverRenderedSide = 'bottom';\n    }\n    if (!noneOptimal) {\n      renderPopoverArrow(requiredAlignment, popoverRenderedSide, element);\n    } else {\n      popover.arrow.classList.add('gleap-tour-popover-arrow-none');\n    }\n  }\n  function renderPopoverArrow(alignment, side, element) {\n    const popover = getState('popover');\n    if (!popover) {\n      return;\n    }\n    const elementDimensions = element.getBoundingClientRect();\n    const popoverDimensions = getPopoverDimensions();\n    const popoverArrow = popover.arrow;\n    const popoverWidth = popoverDimensions.width;\n    const windowWidth = window.innerWidth;\n    const elementWidth = elementDimensions.width;\n    const elementLeft = elementDimensions.left;\n    const popoverHeight = popoverDimensions.height;\n    const windowHeight = window.innerHeight;\n    const elementTop = elementDimensions.top;\n    const elementHeight = elementDimensions.height;\n    popoverArrow.className = 'gleap-tour-popover-arrow';\n    let arrowSide = side;\n    let arrowAlignment = alignment;\n    if (side === 'top') {\n      if (elementLeft + elementWidth <= 0) {\n        arrowSide = 'right';\n        arrowAlignment = 'end';\n      } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n        arrowSide = 'top';\n        arrowAlignment = 'start';\n      }\n      if (elementLeft >= windowWidth) {\n        arrowSide = 'left';\n        arrowAlignment = 'end';\n      } else if (elementLeft + popoverWidth >= windowWidth) {\n        arrowSide = 'top';\n        arrowAlignment = 'end';\n      }\n    } else if (side === 'bottom') {\n      if (elementLeft + elementWidth <= 0) {\n        arrowSide = 'right';\n        arrowAlignment = 'start';\n      } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n        arrowSide = 'bottom';\n        arrowAlignment = 'start';\n      }\n      if (elementLeft >= windowWidth) {\n        arrowSide = 'left';\n        arrowAlignment = 'start';\n      } else if (elementLeft + popoverWidth >= windowWidth) {\n        arrowSide = 'bottom';\n        arrowAlignment = 'end';\n      }\n    } else if (side === 'left') {\n      if (elementTop + elementHeight <= 0) {\n        arrowSide = 'bottom';\n        arrowAlignment = 'end';\n      } else if (elementTop + elementHeight - popoverHeight <= 0) {\n        arrowSide = 'left';\n        arrowAlignment = 'start';\n      }\n      if (elementTop >= windowHeight) {\n        arrowSide = 'top';\n        arrowAlignment = 'end';\n      } else if (elementTop + popoverHeight >= windowHeight) {\n        arrowSide = 'left';\n        arrowAlignment = 'end';\n      }\n    } else if (side === 'right') {\n      if (elementTop + elementHeight <= 0) {\n        arrowSide = 'bottom';\n        arrowAlignment = 'start';\n      } else if (elementTop + elementHeight - popoverHeight <= 0) {\n        arrowSide = 'right';\n        arrowAlignment = 'start';\n      }\n      if (elementTop >= windowHeight) {\n        arrowSide = 'top';\n        arrowAlignment = 'start';\n      } else if (elementTop + popoverHeight >= windowHeight) {\n        arrowSide = 'right';\n        arrowAlignment = 'end';\n      }\n    } else;\n    if (!arrowSide) {\n      popoverArrow.classList.add('gleap-tour-popover-arrow-none');\n    } else {\n      popoverArrow.classList.add(`gleap-tour-popover-arrow-side-${arrowSide}`);\n      popoverArrow.classList.add(`gleap-tour-popover-arrow-align-${arrowAlignment}`);\n    }\n  }\n  function createPopover() {\n    const wrapper = document.createElement('div');\n    wrapper.classList.add('gleap-tour-popover');\n    const arrow = document.createElement('div');\n    arrow.classList.add('gleap-tour-popover-arrow');\n    const title = document.createElement('div');\n    title.id = 'gleap-tour-popover-title';\n    title.classList.add('gleap-tour-popover-title');\n    title.style.display = 'none';\n    title.innerText = 'Popover Title';\n    const description = document.createElement('div');\n    description.id = 'gleap-tour-popover-description';\n    description.classList.add('gleap-tour-popover-description');\n    description.style.display = 'none';\n    description.innerText = 'Popover description is here';\n    const closeButton = document.createElement('button');\n    closeButton.type = 'button';\n    closeButton.classList.add('gleap-tour-popover-close-btn');\n    closeButton.setAttribute('aria-label', 'Close');\n    closeButton.innerHTML = '&times;';\n    const footer = document.createElement('div');\n    footer.classList.add('gleap-tour-popover-footer');\n    const progress = document.createElement('span');\n    progress.classList.add('gleap-tour-popover-progress-text');\n    progress.innerText = '';\n    const footerButtons = document.createElement('span');\n    footerButtons.classList.add('gleap-tour-popover-navigation-btns');\n    const previousButton = document.createElement('button');\n    previousButton.type = 'button';\n    previousButton.classList.add('gleap-tour-popover-prev-btn');\n    previousButton.innerHTML = '&larr; Previous';\n    const nextButton = document.createElement('button');\n    nextButton.type = 'button';\n    nextButton.classList.add('gleap-tour-popover-next-btn');\n    nextButton.innerHTML = 'Next &rarr;';\n    footerButtons.appendChild(previousButton);\n    footerButtons.appendChild(nextButton);\n    footer.appendChild(progress);\n    footer.appendChild(footerButtons);\n    wrapper.appendChild(closeButton);\n    wrapper.appendChild(arrow);\n    wrapper.appendChild(title);\n    wrapper.appendChild(description);\n    wrapper.appendChild(footer);\n    return {\n      wrapper,\n      arrow,\n      title,\n      description,\n      footer,\n      previousButton,\n      nextButton,\n      closeButton,\n      footerButtons,\n      progress,\n    };\n  }\n  function destroyPopover() {\n    var _a;\n    const popover = getState('popover');\n    if (!popover) {\n      return;\n    }\n    (_a = popover.wrapper.parentElement) == null ? void 0 : _a.removeChild(popover.wrapper);\n  }\n  function driver(options = {}) {\n    configure(options);\n    function handleClose() {\n      if (!getConfig('allowClose')) {\n        return;\n      }\n      destroy();\n    }\n    function moveNext() {\n      const activeIndex = getState('activeIndex');\n      const steps = getConfig('steps') || [];\n      if (typeof activeIndex === 'undefined') {\n        return;\n      }\n      const nextStepIndex = activeIndex + 1;\n      if (steps[nextStepIndex]) {\n        drive(nextStepIndex);\n      } else {\n        destroy();\n      }\n    }\n    function movePrevious() {\n      const activeIndex = getState('activeIndex');\n      const steps = getConfig('steps') || [];\n      if (typeof activeIndex === 'undefined') {\n        return;\n      }\n      const previousStepIndex = activeIndex - 1;\n      if (steps[previousStepIndex]) {\n        drive(previousStepIndex);\n      } else {\n        destroy();\n      }\n    }\n    function moveTo(index) {\n      const steps = getConfig('steps') || [];\n      if (steps[index]) {\n        drive(index);\n      } else {\n        destroy();\n      }\n    }\n    function handleArrowLeft() {\n      var _a;\n      const isTransitioning = getState('__transitionCallback');\n      if (isTransitioning) {\n        return;\n      }\n      const activeIndex = getState('activeIndex');\n      const activeStep = getState('__activeStep');\n      const activeElement = getState('__activeElement');\n\n      if (activeStep.mode === 'CLICK') {\n        return;\n      }\n      if (typeof activeIndex === 'undefined' || typeof activeStep === 'undefined') {\n        return;\n      }\n      const currentStepIndex = getState('activeIndex');\n      if (typeof currentStepIndex === 'undefined') {\n        return;\n      }\n      const onPrevClick = ((_a = activeStep.popover) == null ? void 0 : _a.onPrevClick) || getConfig('onPrevClick');\n      if (onPrevClick) {\n        return onPrevClick(activeElement, activeStep, {\n          config: getConfig(),\n          state: getState(),\n        });\n      }\n      movePrevious();\n    }\n    function handleArrowRight() {\n      var _a;\n      const isTransitioning = getState('__transitionCallback');\n      if (isTransitioning) {\n        return;\n      }\n      const activeIndex = getState('activeIndex');\n      const activeStep = getState('__activeStep');\n      const activeElement = getState('__activeElement');\n\n      if (activeStep.mode === 'CLICK') {\n        return;\n      }\n      if (typeof activeIndex === 'undefined' || typeof activeStep === 'undefined') {\n        return;\n      }\n      const onNextClick = ((_a = activeStep.popover) == null ? void 0 : _a.onNextClick) || getConfig('onNextClick');\n      if (onNextClick) {\n        return onNextClick(activeElement, activeStep, {\n          config: getConfig(),\n          state: getState(),\n        });\n      }\n      moveNext();\n    }\n    function init() {\n      if (getState('isInitialized')) {\n        return;\n      }\n      setState('isInitialized', true);\n      document.body.classList.add('gleap-tour-active', getConfig('animate') ? 'gleap-tour-fade' : 'gleap-tour-simple');\n      initEvents();\n      listen('overlayClick', handleClose);\n      listen('escapePress', handleClose);\n      listen('arrowLeftPress', handleArrowLeft);\n      listen('arrowRightPress', handleArrowRight);\n    }\n    function drive(stepIndex = 0) {\n      var _a, _b, _c, _d, _e, _f, _g, _h;\n      const steps = getConfig('steps');\n      if (!steps) {\n        console.error('No steps to drive through');\n        destroy();\n        return;\n      }\n      if (!steps[stepIndex]) {\n        destroy();\n        return;\n      }\n      setState('__activeOnDestroyed', document.activeElement);\n      setState('activeIndex', stepIndex);\n      const currentStep = steps[stepIndex];\n      const hasNextStep = steps[stepIndex + 1];\n      const hasPreviousStep = steps[stepIndex - 1];\n      const doneBtnText =\n        ((_a = currentStep.popover) == null ? void 0 : _a.doneBtnText) || getConfig('doneBtnText') || 'Done';\n      const allowsClosing = getConfig('allowClose');\n      const showProgress =\n        typeof ((_b = currentStep.popover) == null ? void 0 : _b.showProgress) !== 'undefined'\n          ? (_c = currentStep.popover) == null\n            ? void 0\n            : _c.showProgress\n          : getConfig('showProgress');\n      const progressText =\n        ((_d = currentStep.popover) == null ? void 0 : _d.progressText) ||\n        getConfig('progressText') ||\n        '{{current}} of {{total}}';\n      const progressTextReplaced = progressText\n        .replace('{{current}}', `${stepIndex + 1}`)\n        .replace('{{total}}', `${steps.length}`);\n      const configuredButtons = ((_e = currentStep.popover) == null ? void 0 : _e.showButtons) || getConfig('showButtons');\n      const calculatedButtons = ['next', 'previous', ...(allowsClosing ? ['close'] : [])].filter((b) => {\n        return !(configuredButtons == null ? void 0 : configuredButtons.length) || configuredButtons.includes(b);\n      });\n      const onNextClick = ((_f = currentStep.popover) == null ? void 0 : _f.onNextClick) || getConfig('onNextClick');\n      const onPrevClick = ((_g = currentStep.popover) == null ? void 0 : _g.onPrevClick) || getConfig('onPrevClick');\n      const onCloseClick = ((_h = currentStep.popover) == null ? void 0 : _h.onCloseClick) || getConfig('onCloseClick');\n      highlight({\n        ...currentStep,\n        popover: {\n          showButtons: calculatedButtons,\n          nextBtnText: !hasNextStep ? doneBtnText : void 0,\n          disableButtons: [...(!hasPreviousStep ? ['previous'] : [])],\n          showProgress,\n          progressText: progressTextReplaced,\n          onNextClick: onNextClick\n            ? onNextClick\n            : () => {\n                if (!hasNextStep) {\n                  destroy();\n                } else {\n                  drive(stepIndex + 1);\n                }\n              },\n          onPrevClick: onPrevClick\n            ? onPrevClick\n            : () => {\n                drive(stepIndex - 1);\n              },\n          onCloseClick: onCloseClick\n            ? onCloseClick\n            : () => {\n                destroy();\n              },\n          ...((currentStep == null ? void 0 : currentStep.popover) || {}),\n        },\n      });\n    }\n    function destroy(withOnDestroyStartedHook = true) {\n      const activeElement = getState('__activeElement');\n      const activeStep = getState('__activeStep');\n      const activeOnDestroyed = getState('__activeOnDestroyed');\n      const onDestroyStarted = getConfig('onDestroyStarted');\n      if (withOnDestroyStartedHook && onDestroyStarted) {\n        const isActiveDummyElement =\n          !activeElement || (activeElement == null ? void 0 : activeElement.id) === 'gleap-tour-dummy-element';\n        onDestroyStarted(isActiveDummyElement ? void 0 : activeElement, activeStep, {\n          config: getConfig(),\n          state: getState(),\n        });\n        return;\n      }\n      const onDeselected = (activeStep == null ? void 0 : activeStep.onDeselected) || getConfig('onDeselected');\n      const onDestroyed = getConfig('onDestroyed');\n      document.body.classList.remove('gleap-tour-active', 'gleap-tour-fade', 'gleap-tour-simple');\n      destroyEvents();\n      destroyPopover();\n      destroyHighlight();\n      destroyOverlay();\n      destroyEmitter();\n      resetState();\n      if (activeElement && activeStep) {\n        const isActiveDummyElement = activeElement.id === 'gleap-tour-dummy-element';\n        if (onDeselected) {\n          onDeselected(isActiveDummyElement ? void 0 : activeElement, activeStep, {\n            config: getConfig(),\n            state: getState(),\n          });\n        }\n        if (onDestroyed) {\n          onDestroyed(isActiveDummyElement ? void 0 : activeElement, activeStep, {\n            config: getConfig(),\n            state: getState(),\n          });\n        }\n      }\n      if (activeOnDestroyed) {\n        activeOnDestroyed.focus();\n      }\n    }\n    return {\n      isActive: () => getState('isInitialized') || false,\n      refresh: requireRefresh,\n      drive: (stepIndex = 0) => {\n        init();\n        drive(stepIndex);\n      },\n      setConfig: configure,\n      setSteps: (steps) => {\n        resetState();\n        configure({\n          ...getConfig(),\n          steps,\n        });\n      },\n      getConfig,\n      getState,\n      getActiveIndex: () => getState('activeIndex'),\n      isFirstStep: () => getState('activeIndex') === 0,\n      isLastStep: () => {\n        const steps = getConfig('steps') || [];\n        const activeIndex = getState('activeIndex');\n        return activeIndex !== void 0 && activeIndex === steps.length - 1;\n      },\n      getActiveStep: () => getState('activeStep'),\n      getActiveElement: () => getState('activeElement'),\n      getPreviousElement: () => getState('previousElement'),\n      getPreviousStep: () => getState('previousStep'),\n      moveNext,\n      movePrevious,\n      moveTo,\n      hasNextStep: () => {\n        const steps = getConfig('steps') || [];\n        const activeIndex = getState('activeIndex');\n        return activeIndex !== void 0 && steps[activeIndex + 1];\n      },\n      hasPreviousStep: () => {\n        const steps = getConfig('steps') || [];\n        const activeIndex = getState('activeIndex');\n        return activeIndex !== void 0 && steps[activeIndex - 1];\n      },\n      highlight: (step) => {\n        init();\n        highlight({\n          ...step,\n          popover: step.popover\n            ? {\n                showButtons: [],\n                showProgress: false,\n                progressText: '',\n                ...step.popover,\n              }\n            : void 0,\n        });\n      },\n      destroy: () => {\n        destroy(false);\n      },\n    };\n  }\n  return driver;\n})({});\n\nexport default GleapTours;\n","import { GleapConfigManager, GleapTranslationManager } from './Gleap';\nimport { calculateContrast, loadIcon } from './UI';\n\nconst localStorageKey = 'gleap-tour-data';\nconst pointerContainerId = 'copilot-pointer-container';\nconst styleId = 'copilot-tour-styles';\nconst copilotJoinedContainerId = 'copilot-joined-container';\n\nfunction estimateReadTime(text) {\n  if (typeof window === 'undefined') return;\n\n  const wordsPerSecond = 3.6; // Average reading speed\n  const wordCount = text.split(/\\s+/).filter((word) => word.length > 0).length;\n  const readTimeInSeconds = Math.ceil(wordCount / wordsPerSecond);\n  return readTimeInSeconds + 1;\n}\n\nfunction htmlToPlainText(html) {\n  if (typeof window === 'undefined') return;\n\n  const tempDiv = document.createElement('div');\n  tempDiv.innerHTML = html;\n  return tempDiv.textContent || '';\n}\n\nfunction scrollToElement(element) {\n  if (typeof window === 'undefined') return;\n\n  if (element) {\n    element.scrollIntoView({\n      behavior: 'smooth',\n      block: 'center',\n      inline: 'center',\n    });\n  }\n}\n\nfunction performClickAnimation(posX, posY) {\n  if (typeof window === 'undefined') return;\n\n  const wave = document.createElement('div');\n  wave.className = 'click-wave';\n  wave.style.left = `${posX - 17}px`;\n  wave.style.top = `${posY - 17}px`;\n  document.body.appendChild(wave);\n  setTimeout(() => {\n    wave.remove();\n  }, 800);\n}\n\nfunction waitForElement(selector, timeout = 5000) {\n  if (typeof window === 'undefined') return;\n\n  const pollInterval = 100;\n  const maxAttempts = timeout / pollInterval;\n  let attempts = 0;\n  return new Promise((resolve, reject) => {\n    const interval = setInterval(() => {\n      const element = document.querySelector(selector);\n      if (element) {\n        clearInterval(interval);\n        resolve(element);\n      } else if (attempts >= maxAttempts) {\n        clearInterval(interval);\n        reject(new Error(`Element not found for selector: ${selector}`));\n      }\n      attempts++;\n    }, pollInterval);\n  });\n}\n\nfunction smoothScrollToY(yPosition) {\n  if (typeof window === 'undefined') return;\n\n  const viewportHeight = window.innerHeight;\n  const targetScrollPosition = yPosition - viewportHeight / 2;\n  window.scrollTo({\n    top: targetScrollPosition,\n    behavior: 'smooth',\n  });\n}\n\nasync function canPlayAudio() {\n  if (typeof window === 'undefined') return;\n\n  const audio = new Audio('data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAABCxAgAEABAAZGF0YQAAAAA=');\n  try {\n    await audio.play();\n    return true;\n  } catch (err) {\n    return false;\n  }\n}\n\n// Helper: Check if an element is fully visible in the viewport.\nfunction isElementFullyVisible(el) {\n  if (typeof window === 'undefined') return;\n\n  const rect = el.getBoundingClientRect();\n  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= window.innerHeight && rect.right <= window.innerWidth;\n}\n\n// Helper: Get scrollable ancestors of an element.\nfunction getScrollableAncestors(el) {\n  if (typeof window === 'undefined') return;\n\n  let ancestors = [];\n  let current = el.parentElement;\n  while (current) {\n    const style = window.getComputedStyle(current);\n    if ((style.overflowY === 'auto' || style.overflowY === 'scroll') && current.scrollHeight > current.clientHeight) {\n      ancestors.push(current);\n    }\n    current = current.parentElement;\n  }\n  return ancestors;\n}\n\nexport default class GleapCopilotTours {\n  productTourData = undefined;\n  productTourId = undefined;\n  currentActiveIndex = undefined;\n  lastArrowPositionX = undefined;\n  lastArrowPositionY = undefined;\n  onCompleteCallback = undefined;\n  audioMuted = false;\n  currentAudio = undefined;\n\n  // Cached pointer container.\n  _pointerContainer = null;\n  // For scroll handling.\n  _scrollListeners = [];\n  _currentAnchor = null;\n  _currentStep = null;\n  _scrollDebounceTimer = null;\n\n  // GleapReplayRecorder singleton.\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapCopilotTours();\n    }\n    return this.instance;\n  }\n\n  constructor() {\n    const self = this;\n\n    if (typeof window !== 'undefined') {\n      this._scrollListeners = [];\n      this._currentAnchor = null;\n      this._currentStep = null;\n      this._scrollDebounceTimer = null;\n\n      window.addEventListener('resize', () => {\n        if (self.productTourId && self.currentActiveIndex >= 0 && self.productTourData && self.productTourData.steps) {\n          const steps = self.productTourData.steps;\n          const currentStep = steps[self.currentActiveIndex];\n          if (currentStep && currentStep.selector && currentStep.selector !== '') {\n            self.updatePointerPosition(document.querySelector(currentStep.selector), currentStep);\n          }\n        }\n      });\n    }\n  }\n\n  disable() {\n    this.disabled = true;\n\n    this.cleanup();\n  }\n\n  startWithConfig(tourId, config, onCompleteCallback = undefined) {\n    if (typeof window === 'undefined') return;\n    if (this.productTourId) return;\n    if (this.disabled) return;\n\n    this.productTourId = tourId;\n    this.productTourData = config;\n    this.currentActiveIndex = 0;\n    this.onCompleteCallback = onCompleteCallback;\n    this.start();\n  }\n\n  storeUncompletedTour() {\n    if (typeof window === 'undefined') return;\n    if (this.productTourId && this.productTourData) {\n      try {\n        let data = JSON.parse(\n          JSON.stringify({\n            tourData: this.productTourData,\n            tourId: this.productTourId,\n          })\n        );\n        data.tourData.steps = data.tourData.steps.slice(this.currentActiveIndex || 0, data.tourData.steps.length);\n        localStorage.setItem(localStorageKey, JSON.stringify(data));\n      } catch (e) {\n        // Optionally log error in development mode.\n      }\n    } else {\n      localStorage.removeItem(localStorageKey);\n    }\n  }\n\n  // Attach scroll listeners with a debounce to update the pointer position after scrolling stops.\n  attachScrollListeners(anchor, currentStep) {\n    if (typeof window === 'undefined') return;\n    if (!anchor) return;\n    const scrollableAncestors = getScrollableAncestors(anchor);\n    // Also include window.\n    scrollableAncestors.push(window);\n    scrollableAncestors.forEach((el) => {\n      const handler = () => {\n        clearTimeout(this._scrollDebounceTimer);\n        this._scrollDebounceTimer = setTimeout(() => {\n          this.updatePointerPosition(anchor, currentStep);\n        }, 150);\n      };\n      el.addEventListener('scroll', handler, { passive: true });\n      this._scrollListeners.push({ el, handler });\n    });\n  }\n\n  // Remove scroll listeners and clear debounce timer.\n  removeScrollListeners() {\n    if (typeof window === 'undefined') return;\n    if (this._scrollListeners && this._scrollListeners.length > 0) {\n      this._scrollListeners.forEach(({ el, handler }) => {\n        el.removeEventListener('scroll', handler);\n      });\n      this._scrollListeners = [];\n    }\n    if (this._scrollDebounceTimer) {\n      clearTimeout(this._scrollDebounceTimer);\n      this._scrollDebounceTimer = null;\n    }\n  }\n\n  // Updated pointer position:\n  // 1. Scroll the element into view.\n  // 2. After the element is fully visible (or after a maximum delay), update the pointer position to point towards the element.\n  updatePointerPosition(anchor, currentStep) {\n    if (typeof window === 'undefined') return;\n    try {\n      const container = this._pointerContainer || document.getElementById(pointerContainerId);\n      if (!container) return;\n\n      if (!anchor) {\n        container.style.position = 'fixed';\n        container.style.left = '50%';\n        container.style.top = '50%';\n        container.style.transform = 'translate(-50%, -50%)';\n        smoothScrollToY(window.innerHeight / 2);\n        this.removeScrollListeners();\n        this._currentAnchor = null;\n        this._currentStep = null;\n        return;\n      }\n\n      // Step 1: Scroll the element into view.\n      scrollToElement(anchor);\n\n      // Step 2: Poll until the element is fully visible (or after maximum polls).\n      const pollInterval = 100;\n      const maxPolls = 20;\n      let pollCount = 0;\n      const updateFinalPosition = () => {\n        if (isElementFullyVisible(anchor) || pollCount >= maxPolls) {\n          // Compute final target coordinates.\n          const anchorRect = anchor.getBoundingClientRect();\n          const targetX = anchorRect.left + anchorRect.width / 2;\n          const targetY = anchorRect.top + anchorRect.height / 2 + 10; // 10px downward offset.\n          container.style.position = 'fixed';\n          container.style.left = `${targetX}px`;\n          container.style.top = `${targetY}px`;\n          container.style.transform = 'translate(-50%, -50%)';\n\n          // Adjust container if too far right.\n          let containerWidthSpace = 350;\n          if (containerWidthSpace > window.innerWidth - 40) {\n            containerWidthSpace = window.innerWidth - 40;\n          }\n          if (targetX + containerWidthSpace > window.innerWidth - 20) {\n            container.classList.add('copilot-pointer-container-right');\n          } else {\n            container.classList.remove('copilot-pointer-container-right');\n          }\n\n          // Reattach scroll listeners if the target or step has changed.\n          if (this._currentAnchor !== anchor || this._currentStep !== currentStep) {\n            this.removeScrollListeners();\n            this._currentAnchor = anchor;\n            this._currentStep = currentStep;\n            this.attachScrollListeners(anchor, currentStep);\n          }\n        } else {\n          pollCount++;\n          setTimeout(updateFinalPosition, pollInterval);\n        }\n      };\n      updateFinalPosition();\n    } catch (e) {\n      // Optionally log errors.\n    }\n  }\n\n  cleanup() {\n    if (typeof window === 'undefined') return;\n    document.body.classList.add('gl-copilot-fade-out');\n    if (this.currentAudio) {\n      this.currentAudio.pause();\n    }\n    setTimeout(() => {\n      if (this._pointerContainer) {\n        this._pointerContainer.remove();\n        this._pointerContainer = null;\n      } else {\n        const container = document.getElementById(pointerContainerId);\n        if (container) container.remove();\n      }\n      const copilotInfoContainer = document.getElementById(copilotJoinedContainerId);\n      if (copilotInfoContainer) copilotInfoContainer.remove();\n      const styleNode = document.getElementById(styleId);\n      if (styleNode) styleNode.remove();\n      document.body.classList.remove('gl-copilot-fade-out');\n    }, 800);\n\n    this.productTourId = undefined;\n    this.productTourData = undefined;\n\n    this.removeScrollListeners();\n  }\n\n  toggleAudio(muted = false) {\n    this.audioMuted = muted;\n    if (this.currentAudio) {\n      this.currentAudio.muted = this.audioMuted;\n    }\n    document.querySelector(`.${copilotJoinedContainerId}-mute`).innerHTML = loadIcon(this.audioMuted ? 'unmute' : 'mute');\n  }\n\n  setupCopilotTour() {\n    if (typeof window === 'undefined') return;\n\n    const primaryColor = GleapConfigManager.getInstance().flowConfig?.color ?? '#485BFF';\n    const contrastColor = calculateContrast(primaryColor);\n\n    let styleNode = document.getElementById(styleId);\n    if (!styleNode) {\n      styleNode = document.createElement('style');\n      styleNode.id = styleId;\n      styleNode.type = 'text/css';\n      styleNode.textContent = `\n        #${pointerContainerId} {\n          position: absolute;\n          top: 0;\n          left: 0;\n          display: flex;\n          align-items: flex-start;\n          pointer-events: none;\n          z-index: 2147483610;\n          transition: all 0.5s ease;\n        }\n        .${pointerContainerId}-clickmode {\n          cursor: pointer;\n          pointer-events: all !important;\n        }\n        .${pointerContainerId}-clickmode #copilot-info-bubble-content {\n          display: flex !important;\n        }\n        .${pointerContainerId}-clickmode svg {\n          display: none !important;\n        }\n        #${pointerContainerId} svg {\n          width: 20px;\n          height: auto;\n          fill: none;\n        }\n        #copilot-info-bubble {\n          position: relative;\n        }\n        #copilot-info-bubble-content-container {\n          position: absolute;\n          top: 0px;\n          left: 0px;\n          min-width: min(300px, 80vw);\n          display: flex;\n          flex-direction: column;\n          align-items: flex-start;\n        }\n        .${pointerContainerId}-right #copilot-info-bubble-content-container {\n          left: auto !important;\n          right: 0px !important;\n          align-items: flex-end;\n        }\n        .${pointerContainerId}-right .copilot-info-bubble-content {\n          margin-right: 5px;\n        }\n        .${pointerContainerId}-right svg {\n          transform: scaleX(-1);\n        }\n        #copilot-info-bubble-content svg {\n          width: 16px;\n          height: 16px;\n          display: inline-block !important;\n          margin-left: 5px;\n        }\n        #copilot-info-bubble-content {\n          margin-top: 18px;\n          margin-left: 5px;\n          padding: 10px 15px;\n          border-radius: 20px;\n          background-color: black;\n          color: white;\n          font-family: Arial, sans-serif;\n          font-size: 14px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n          max-width: 100%;\n          white-space: normal;\n          overflow-wrap: break-word;\n          word-break: normal;\n          hyphens: none;\n        }\n        .${pointerContainerId}-right #copilot-info-bubble-content {\n          margin-top: 30px;\n          margin-left: 0px;\n          margin-right: 5px;\n        }\n        .click-wave {\n          position: absolute;\n          width: 34px;\n          height: 34px;\n          border-radius: 50%;\n          background-color: rgba(0, 0, 0, 0.5);\n          pointer-events: none;\n          z-index: 2147483611;\n          animation: click-wave-animation 0.8s ease forwards;\n        }\n        @keyframes click-wave-animation {\n          0% {\n            transform: scale(0.2);\n            opacity: 1;\n          }\n          100% {\n            transform: scale(2);\n            opacity: 0;\n          }\n        }\n        @keyframes slideInFromTop {\n          0% {\n            transform: translateY(-100%);\n            opacity: 0;\n          }\n          100% {\n            transform: translateY(0);\n            opacity: 1;\n          }\n        }\n        .${copilotJoinedContainerId} {\n          position: fixed;\n          top: 20px;\n          right: 20px;\n          z-index: 2147483610;\n          background: #fff;\n          padding: 6px;\n          border-radius: 10px;\n          box-shadow: 0 0 20px 0 #C294F2;\n          display: flex;\n          align-items: center;\n          gap: 8px;\n          border: 1px solid rgba(192, 146, 242, 0.5);\n          animation: slideInFromTop 0.5s ease-out forwards;\n        }\n        .${copilotJoinedContainerId} span {\n          font-size: 13px;\n          color: #000;\n          font-family: sans-serif;\n        }\n        .${copilotJoinedContainerId}-avatar {\n          width: 24px;\n          height: 24px;\n          flex-shrink: 0;\n          border-radius: 6px;\n        }\n        .${copilotJoinedContainerId}-mute {\n          display: flex;\n          align-items: center;\n          justify-content: center;\n        }\n        .${copilotJoinedContainerId}-mute svg {\n          width: 20px;\n          height: auto;\n          cursor: pointer;\n          animation: pulsate 2s infinite;\n        }\n        .${copilotJoinedContainerId}-mute svg:hover {\n          opacity: 0.8;\n        }\n        .${copilotJoinedContainerId}-dismiss {\n          display: flex;\n          align-items: center;\n          justify-content: center;\n          padding-right: 3px;\n        }\n        .${copilotJoinedContainerId}-dismiss svg {\n          width: 15px;\n          height: auto;\n          cursor: pointer;\n        }\n        .${copilotJoinedContainerId}-dismiss svg:hover {\n          opacity: 0.8;\n        }\n        @keyframes pulsate {\n          0% {\n            transform: scale(1);\n            opacity: 1;\n          }\n          50% {\n            transform: scale(1.1);\n            opacity: 0.8;\n          }\n          100% {\n            transform: scale(1);\n            opacity: 1;\n          }\n        }\n        @keyframes glCoFadeIn {\n          0% {\n            opacity: 0;\n          }\n          100% {\n            opacity: 1;\n          }\n        }\n        @keyframes glCoFadeOut {\n          0% {\n            opacity: 1;\n          }\n          100% {\n            opacity: 0;\n          }\n        }\n\n        .gleap-audio-unmute-modal-overlay {\n          position: fixed;\n          top: 0;\n          left: 0;\n          width: 100vw;\n          height: 100vh;\n          background-color: rgba(0, 0, 0, 0.5);\n          display: flex;\n          justify-content: center;\n          align-items: center;\n          z-index: 2147483620;\n        }\n\n        .gleap-audio-unmute-modal {\n          background-color: #fff;\n          padding: 20px;\n          border-radius: 8px;\n          box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n          text-align: center;\n          max-width: 90%;\n          width: 400px;\n        }\n\n        .gleap-audio-unmute-modal p {\n          margin-bottom: 20px;\n          font-size: 16px;\n          line-height: 22px;\n          font-weight: normal;\n        }\n\n        .gleap-audio-unmute-button {\n          background: ${primaryColor};\n          color: ${contrastColor};\n          outline: none;\n          border: none;\n          padding: 10px 14px;\n          border-radius: 12px;\n          font-size: 14px;\n          font-weight: bold;\n          cursor: pointer;\n        }\n\n        .gleap-audio-unmute-button:hover {\n          opacity: 0.8;\n        }\n\n        .gleap-tour-continue-button {\n          color: ${primaryColor};\n          text-decoration: none;\n          cursor: pointer;\n          font-size: 14px;\n          font-weight: bold;\n          border: none;\n          background: none;\n          padding: 0;\n          margin: 0;\n          margin-left: 20px;\n        }\n\n        .gleap-tour-continue-button:hover {\n          opacity: 0.8;\n        }\n\n        body.gl-copilot-fade-out::before,\n        body.gl-copilot-fade-out::after,\n        body.gl-copilot-fade-out #${copilotJoinedContainerId} {\n          animation: glCoFadeOut 0.8s ease-out forwards;\n        }\n        ${\n          (this.productTourData?.playVoice ?? true)\n            ? ''\n            : `\n          .${copilotJoinedContainerId}-mute {\n            display: none;\n          }\n        `\n        }\n        ${\n          this.productTourData.gradient\n            ? `body::before {\n          content: \"\";\n          position: fixed;\n          top: 0;\n          left: 0;\n          width: 100vw;\n          height: 100vh;\n          pointer-events: all;\n          z-index: 2147483609;\n          box-sizing: border-box;\n          border: 18px solid transparent;\n          filter: blur(25px);\n          border-image-slice: 1;\n          border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n          animation: glCoFadeIn 1.5s ease-out forwards;\n        }\n  \n        body::after {\n          content: \"\";\n          position: fixed;\n          top: 0;\n          left: 0;\n          width: 100vw;\n          height: 100vh;\n          pointer-events: all;\n          z-index: 2147483609;\n          opacity: 0.5;\n          box-sizing: border-box;\n          border: 3px solid transparent;\n          border-image-slice: 1;\n          border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n          animation: glCoFadeIn 1.5s ease-out forwards;\n        }`\n            : `body::after {\n          content: \"\";\n          position: fixed;\n          top: 0;\n          left: 0;\n          width: 100vw;\n          height: 100vh;\n          pointer-events: all;\n          z-index: 2147483609;\n          opacity: 0;\n        }`\n        }\n      `;\n      document.head.appendChild(styleNode);\n    }\n\n    const container = document.createElement('div');\n    container.id = pointerContainerId;\n    container.style.opacity = 0;\n    // Cache the pointer container.\n    this._pointerContainer = container;\n\n    const svgMouse = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n    svgMouse.setAttribute('viewBox', '0 0 380 476');\n    svgMouse.innerHTML =\n      '<path d=\"M352.595 268.315L352.581 268.302L352.566 268.29L78.6092 24.7278C71.6245 18.433 62.5487 15 53.2 15C32.1157 15 15 32.1157 15 53.2V424C15 444.34 31.4714 461 52 461C62.6797 461 72.8089 456.467 79.8863 448.38C79.8871 448.379 79.8879 448.378 79.8886 448.378L180.804 333.1H327.9C348.384 333.1 365 316.484 365 296C365 285.404 360.46 275.344 352.595 268.315Z\" fill=\"black\" stroke=\"white\" stroke-width=\"30\"/>';\n\n    const infoBubble = document.createElement('div');\n    infoBubble.id = 'copilot-info-bubble';\n    infoBubble.innerHTML = `<div id='copilot-info-bubble-content-container'><div id='copilot-info-bubble-content'></div></div>`;\n\n    const copilotInfoContainer = document.createElement('div');\n    copilotInfoContainer.id = copilotJoinedContainerId;\n    copilotInfoContainer.classList.add(copilotJoinedContainerId);\n    copilotInfoContainer.innerHTML = `\n      <img class=\"${copilotJoinedContainerId}-avatar\" src=\"${this.productTourData?.kaiAvatar}\" />\n      <span>${this.productTourData?.kaiSlug}</span>\n      <div class=\"${copilotJoinedContainerId}-mute\">\n        ${loadIcon(this.audioMuted ? 'unmute' : 'mute')}\n      </div>\n      ${\n        this.productTourData?.allowClose\n          ? `<div class=\"${copilotJoinedContainerId}-dismiss\">\n               ${loadIcon('dismiss')}\n             </div>`\n          : ''\n      }\n    `;\n    document.body.appendChild(copilotInfoContainer);\n\n    const self = this;\n\n    document.querySelector(`.${copilotJoinedContainerId}-mute`).addEventListener('click', () => {\n      this.toggleAudio(!this.audioMuted);\n    });\n\n    if (this.productTourData?.allowClose) {\n      document.querySelector(`.${copilotJoinedContainerId}-dismiss`).addEventListener('click', () => {\n        this.completeTour(false);\n      });\n    }\n\n    container.appendChild(svgMouse);\n    container.appendChild(infoBubble);\n    document.body.appendChild(container);\n  }\n\n  start() {\n    if (typeof window === 'undefined') return;\n    if (this.disabled) return;\n\n    const config = this.productTourData;\n    if (!config) return;\n    canPlayAudio().then((supported) => {\n      this.audioMuted = !supported;\n      this.setupCopilotTour();\n\n      if (this.audioMuted && config?.showUnmuteModal) {\n        this.showAudioUnmuteModal();\n      } else {\n        setTimeout(() => {\n          this.renderNextStep();\n        }, 1500);\n      }\n    });\n  }\n\n  showAudioUnmuteModal() {\n    // Create the overlay element\n    const modalOverlay = document.createElement('div');\n    modalOverlay.classList.add('gleap-audio-unmute-modal-overlay');\n\n    // Create the modal container element\n    const modal = document.createElement('div');\n    modal.classList.add('gleap-audio-unmute-modal');\n\n    // Create and add the modal message\n    const message = document.createElement('p');\n    message.textContent = this.productTourData?.unmuteModalTitle;\n    modal.appendChild(message);\n\n    // Create the \"Unmute Audio\" button\n    const unmuteButton = document.createElement('button');\n    unmuteButton.classList.add('gleap-audio-unmute-button');\n    unmuteButton.textContent = this.productTourData?.unmuteModalButton;\n    unmuteButton.addEventListener('click', () => {\n      this.toggleAudio(false);\n      if (modalOverlay.parentNode) {\n        modalOverlay.parentNode.removeChild(modalOverlay);\n      }\n      setTimeout(() => {\n        this.renderNextStep();\n      }, 1000);\n    });\n    modal.appendChild(unmuteButton);\n\n    // Create the \"Start Anyway\" button\n    const startAnywayButton = document.createElement('button');\n    startAnywayButton.classList.add('gleap-tour-continue-button');\n    startAnywayButton.textContent = this.productTourData?.unmuteModalContinue;\n    startAnywayButton.addEventListener('click', () => {\n      if (modalOverlay.parentNode) {\n        modalOverlay.parentNode.removeChild(modalOverlay);\n      }\n      setTimeout(() => {\n        this.renderNextStep();\n      }, 1000);\n    });\n    modal.appendChild(startAnywayButton);\n\n    // Build the modal and attach it to the DOM\n    modalOverlay.appendChild(modal);\n    document.body.appendChild(modalOverlay);\n  }\n\n  completeTour(success = true) {\n    if (typeof window === 'undefined') return;\n    this.cleanup();\n    if (this.onCompleteCallback) {\n      this.onCompleteCallback(success);\n    }\n  }\n\n  renderNextStep() {\n    if (typeof window === 'undefined') return;\n    if (this.disabled) return;\n\n    const self = this;\n    const config = this.productTourData;\n    const steps = config.steps;\n    if (this.currentActiveIndex >= steps.length) {\n      setTimeout(() => {\n        this.completeTour();\n      }, 500);\n      return;\n    }\n    const currentStep = steps[this.currentActiveIndex];\n    const handleStep = (element) => {\n      this._pointerContainer.style.display = 'flex';\n      if (currentStep.selector && currentStep.selector.length > 0 && !element) {\n        this.completeTour(false);\n        return;\n      }\n      const gotToNextStep = () => {\n        if (currentStep.mode === 'INPUT' && element) {\n          function proceedClickmode() {\n            document.querySelector(`#${pointerContainerId}`).classList.remove('copilot-pointer-container-clickmode');\n            element.classList.remove('gleap-input-highlight');\n            document.getElementById(pointerContainerId).style.display = 'none';\n            self.currentActiveIndex++;\n            self.storeUncompletedTour();\n            self.renderNextStep();\n          }\n          const inputModeType = currentStep.inputType ?? 'default';\n          if (inputModeType === 'default') {\n            function handleInputEvent(e) {\n              if (e?.target?.value?.length === 0) return;\n              const cursor = document.getElementById(`copilot-info-bubble-content`);\n              if (!cursor) return;\n              cursor.innerHTML = `${GleapTranslationManager.translateText(\n                'next'\n              )} <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n  <path fill=\"currentColor\" d=\"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"/>\n</svg>`;\n              cursor.addEventListener('click', proceedClickmode, {\n                once: true,\n              });\n              element.classList.add('gleap-input-highlight');\n              document.querySelector(`#${pointerContainerId}`).classList.add('copilot-pointer-container-clickmode');\n              element.removeEventListener('input', handleInputEvent);\n            }\n            element.addEventListener('input', handleInputEvent, {\n              once: false,\n            });\n            if (element.hasAttribute('contenteditable')) {\n              element.addEventListener('keyup', handleInputEvent, {\n                once: false,\n              });\n            }\n            element.addEventListener(\n              'blur',\n              () => {\n                element.focus();\n              },\n              { once: true }\n            );\n            element.focus();\n          } else {\n            const inputValue = currentStep.inputValue ?? '';\n            let index = 0;\n            function typeCharacter() {\n              if (index < inputValue.length) {\n                element.value += inputValue[index];\n                index++;\n                setTimeout(typeCharacter, 100);\n              } else {\n                setTimeout(() => {\n                  proceedClickmode();\n                }, 1200);\n              }\n            }\n            typeCharacter();\n          }\n          return;\n        }\n        self.currentActiveIndex++;\n        self.storeUncompletedTour();\n        if (currentStep.mode === 'CLICK' && element) {\n          const rect = element.getBoundingClientRect();\n          const scrollX = window.scrollX || 0;\n          const scrollY = window.scrollY || 0;\n          performClickAnimation(rect.left + rect.width / 2 + scrollX, rect.top + rect.height / 2 + scrollY);\n          element.click();\n        }\n        self.renderNextStep();\n      };\n\n      this.updatePointerPosition(element, currentStep);\n      const message = currentStep?.message ? htmlToPlainText(currentStep.message) : '🤔';\n      document.getElementById(`copilot-info-bubble-content`).textContent = message;\n      this._pointerContainer.style.opacity = 1;\n      const readTime = estimateReadTime(message);\n      const continueWithNoAudio = () => {\n        this.currentAudio = undefined;\n        setTimeout(() => {\n          gotToNextStep();\n        }, readTime * 1000);\n      };\n      if (currentStep.voice && currentStep.voice.length > 0) {\n        this.currentAudio = new Audio(currentStep.voice);\n        if (this.audioMuted) {\n          this.currentAudio.muted = true;\n        }\n        this.currentAudio.addEventListener('ended', () => {\n          setTimeout(() => {\n            gotToNextStep();\n          }, 1000);\n        });\n        this.currentAudio\n          .play()\n          .then(() => {})\n          .catch((error) => {\n            continueWithNoAudio();\n          });\n      } else {\n        continueWithNoAudio();\n      }\n    };\n\n    const elementPromise = currentStep.selector ? waitForElement(currentStep.selector) : Promise.resolve(null);\n    elementPromise.then(handleStep).catch(() => handleStep(null));\n  }\n}\n","import { loadIcon } from './UI';\nimport GleapTours from './GleapTours';\nimport Gleap, { GleapEventManager, GleapSession } from './Gleap';\nimport GleapCopilotTours from './GleapCopilotTours';\n\nconst localStorageKey = 'gleap-tour-data';\n\nexport default class GleapProductTours {\n  productTourData = undefined;\n  productTourId = undefined;\n  unmuted = false;\n  currentActiveIndex = undefined;\n  gleapTourObj = undefined;\n  disabled = false;\n\n  // GleapReplayRecorder singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new GleapProductTours();\n      return this.instance;\n    } else {\n      return this.instance;\n    }\n  }\n\n  disable() {\n    if (this.gleapTourObj) {\n      this.gleapTourObj.destroy();\n    }\n\n    // Disable copilot tours.\n    GleapCopilotTours.getInstance().disable();\n\n    this.gleapTourObj = undefined;\n    this.disabled = true;\n  }\n\n  constructor() {\n    const self = this;\n\n    if (typeof window !== 'undefined') {\n      const beforeUnloadListener = (event) => {\n        if (\n          !self?.disabled &&\n          self?.productTourId &&\n          self?.productTourData &&\n          self?.productTourData?.tourType !== 'cobrowse'\n        ) {\n          self.storeUncompletedTour();\n        }\n      };\n\n      if (typeof window !== 'undefined') {\n        window.addEventListener('beforeunload', beforeUnloadListener);\n      }\n    }\n  }\n\n  startWithConfig(tourId, config, delay = 0, manually = false) {\n    // Prevent multiple tours from being started.\n    if (this.productTourId || this.disabled) {\n      return;\n    }\n\n    this.productTourId = tourId;\n    this.productTourData = config;\n    this.currentActiveIndex = 0;\n\n    if (manually) {\n      this.start();\n    } else {\n      const self = this;\n\n      // Validate product tour.\n      GleapSession.getInstance()\n        .validateProductTour(tourId)\n        .then(() => {\n          if (delay > 0) {\n            return setTimeout(() => {\n              self.start();\n            }, delay);\n          } else {\n            return this.start();\n          }\n        })\n        .catch((error) => {\n          console.log('Product tour is not live. Cleaning up...');\n          console.error(error);\n\n          self.onComplete(false);\n        });\n    }\n  }\n\n  onComplete(success = true) {\n    const comData = {\n      tourId: this.productTourId,\n    };\n\n    if (success) {\n      GleapEventManager.notifyEvent('productTourCompleted', comData);\n      Gleap.trackEvent(`tour-${this.productTourId}-completed`, comData);\n    } else {\n      GleapEventManager.notifyEvent('productTourQuit', comData);\n      Gleap.trackEvent(`tour-${this.productTourId}-quit`, comData);\n    }\n\n    // Clear data.\n    if (this.gleapTourObj) {\n      this.gleapTourObj.destroy();\n    }\n\n    this.gleapTourObj = undefined;\n    this.productTourData = undefined;\n    this.productTourId = undefined;\n    this.currentActiveIndex = undefined;\n    this.clearUncompletedTour();\n  }\n\n  loadUncompletedTour() {\n    try {\n      const data = JSON.parse(localStorage.getItem(localStorageKey));\n      if (data?.tourData && data?.tourId) {\n        return data;\n      }\n    } catch (e) {}\n\n    return null;\n  }\n\n  storeUncompletedTour() {\n    if (this.productTourId && this.productTourData) {\n      try {\n        let data = JSON.parse(\n          JSON.stringify({\n            tourData: this.productTourData,\n            tourId: this.productTourId,\n          })\n        );\n\n        data.tourData.steps = data.tourData.steps.slice(this.currentActiveIndex || 0, data.tourData.steps.length);\n\n        localStorage.setItem(localStorageKey, JSON.stringify(data));\n      } catch (e) {}\n    } else {\n      this.clearUncompletedTour();\n    }\n  }\n\n  clearUncompletedTour() {\n    try {\n      localStorage.removeItem(localStorageKey);\n    } catch (e) {}\n  }\n\n  start() {\n    const config = this.productTourData;\n    if (!config) {\n      return;\n    }\n\n    if (config.tourType === 'cobrowse') {\n      return GleapCopilotTours.getInstance().startWithConfig(this.productTourId, config, (success) => {\n        this.onComplete(success);\n      });\n    }\n\n    this.unmuted = false;\n    const steps = config.steps;\n    const self = this;\n\n    var driverSteps = [];\n\n    for (let i = 0; i < steps.length; i++) {\n      const step = steps[i];\n\n      const isClickMode = step.mode === 'CLICK';\n      const isInputMode = step.mode === 'INPUT';\n      const isInteractionMode = step.mode === 'INTERACTION';\n\n      var message = '';\n      var hasSender = false;\n\n      if (step.type === 'video-pointer') {\n        message = `<div class=\"gleap-tour-video\">\n              <video class=\"gleap-tour-video-obj\" muted autoplay>\n                <source src=\"${step.videoUrl}\" type=\"video/mp4\">\n              </video>\n              <div class=\"gleap-tour-video-playpause\">${loadIcon('unmute')}</div>\n            </div>`;\n      } else {\n        var senderHTML = ``;\n\n        if (config.sender && config.sender.firstName) {\n          hasSender = true;\n          senderHTML = `<div class=\"gleap-tour-sender\">\n                <div class=\"gleap-tour-sender-image\" style=\"background-image: url('${config.sender.profileImageUrl}');\"></div>\n                <div class=\"gleap-tour-sender-name\">${config.sender.firstName}</div>\n              </div>`;\n        }\n\n        message = `${senderHTML}<div class=\"gleap-tour-message\">${step.message}</div>`;\n      }\n\n      const disableInteraction = !isClickMode && !isInputMode && !isInteractionMode;\n\n      var driverStep = {\n        disableActiveInteraction: disableInteraction,\n        mode: step.mode,\n        popover: {\n          description: message,\n          popoverClass: `gleap-tour-popover-${step.type} ${\n            !hasSender && 'gleap-tour-popover-no-sender'\n          } ${config.allowClose && 'gleap-tour-popover-can-close'}`,\n          ...(isClickMode\n            ? {\n                showButtons: [],\n              }\n            : {}),\n        },\n      };\n      if (step.selector && step.selector.length > 0) {\n        driverStep.element = step.selector;\n      }\n      driverSteps.push(driverStep);\n    }\n\n    var buttons = ['next', 'close'];\n\n    if (config.backButton) {\n      buttons.push('previous');\n    }\n\n    function onDocumentClick(evnt) {\n      try {\n        var gleapTourPopover = document.querySelector('.gleap-tour-popover');\n        if (gleapTourPopover && !gleapTourPopover.contains(evnt.target)) {\n          const stepIndex = self.gleapTourObj.getActiveIndex();\n          const step = steps[stepIndex];\n          const element = self.gleapTourObj.getActiveElement();\n\n          if (step?.mode === 'CLICK' && evnt?.target !== element) {\n            const isInsideElement = element.contains(evnt?.target);\n            if (!isInsideElement) {\n              // Ignore clicks outside of the actual element.\n              return;\n            }\n          }\n\n          // Store next step index.\n          self.currentActiveIndex = (self.currentActiveIndex || 0) + 1;\n          self.storeUncompletedTour();\n\n          if (\n            (element && element.tagName === 'INPUT') ||\n            step.mode === 'INPUT' ||\n            step.mode === 'INTERACTION' ||\n            evnt?.target?.id.includes('tooltip-svg')\n          ) {\n            // Prevent.\n          } else {\n            self.gleapTourObj.moveNext();\n          }\n        }\n      } catch (e) {}\n    }\n\n    this.gleapTourObj = GleapTours({\n      showProgress: true,\n      allowKeyboardControl: false,\n      steps: driverSteps,\n      showProgress: steps.length > 1,\n      allowClose: config.allowClose,\n      nextBtnText: config.nextText,\n      doneBtnText: config.doneText,\n      prevBtnText: config.prevText,\n      showButtons: buttons,\n      onHighlightStarted: (element, step, config) => {\n        this.currentActiveIndex = config?.state?.activeIndex;\n        this.storeUncompletedTour();\n      },\n      onElementNotFound: (step) => {\n        document.removeEventListener('click', onDocumentClick);\n\n        this.onComplete(false);\n      },\n      onDestroyStarted: () => {\n        if (!this.gleapTourObj.hasNextStep()) {\n          // Mark as completed.\n          this.onComplete(true);\n        } else {\n          // Mark as quit.\n          this.onComplete(false);\n        }\n\n        document.removeEventListener('click', onDocumentClick);\n      },\n      onPopoverRender: (popoverElement) => {\n        // Fix for images and videos.\n        if (popoverElement) {\n          const mediaElements = document.querySelectorAll(\n            '.gleap-tour-popover-description img, .gleap-tour-popover-description video'\n          );\n\n          const performRequentialRefresh = () => {\n            setTimeout(() => {\n              this.gleapTourObj.refresh();\n            }, 500);\n            setTimeout(() => {\n              this.gleapTourObj.refresh();\n            }, 750);\n          };\n\n          for (let i = 0; i < mediaElements.length; i++) {\n            const mediaElement = mediaElements[i];\n            if (mediaElement.tagName === 'IMG') {\n              mediaElement.addEventListener('load', () => {\n                performRequentialRefresh();\n              });\n              mediaElement.addEventListener('error', () => {\n                performRequentialRefresh();\n              });\n            } else if (mediaElement.tagName === 'VIDEO') {\n              mediaElement.addEventListener('canplaythrough', () => {\n                performRequentialRefresh();\n              });\n              mediaElement.addEventListener('error', () => {\n                performRequentialRefresh();\n              });\n            }\n          }\n        }\n\n        const playingClass = 'gleap-tour-video--playing';\n        const playPauseContainer = document.querySelector('.gleap-tour-video-playpause');\n\n        const videoElement = document.querySelector('.gleap-tour-video-obj');\n        if (videoElement) {\n          const videoContainer = videoElement.closest('.gleap-tour-video');\n\n          if (self.unmuted) {\n            if (videoElement) {\n              videoElement.pause();\n              videoElement.muted = false;\n              videoElement.play();\n              videoContainer.classList.add(playingClass);\n            }\n          }\n\n          videoElement.addEventListener('ended', function () {\n            playPauseContainer.innerHTML = loadIcon('replay');\n            playPauseContainer.classList.add('gleap-tour-video-svg--fullscreen');\n            videoContainer.classList.remove(playingClass);\n          });\n\n          videoElement.addEventListener('play', function () {\n            playPauseContainer.classList.remove('gleap-tour-video-svg--fullscreen');\n          });\n\n          if (playPauseContainer) {\n            playPauseContainer.addEventListener('click', () => clickVideo());\n          }\n\n          const clickVideo = () => {\n            if (videoElement.muted) {\n              self.unmuted = true;\n\n              videoElement.pause();\n              videoElement.currentTime = 0;\n              videoElement.muted = false;\n              videoElement.play();\n\n              playPauseContainer.innerHTML = loadIcon('mute');\n              videoContainer.classList.add(playingClass);\n            } else if (videoElement.paused) {\n              videoElement.muted = false;\n              videoElement.play();\n\n              playPauseContainer.innerHTML = loadIcon('mute');\n              videoContainer.classList.add(playingClass);\n            } else {\n              videoElement.pause();\n              playPauseContainer.innerHTML = loadIcon('unmute');\n              videoContainer.classList.remove(playingClass);\n            }\n          };\n        }\n      },\n    });\n    this.gleapTourObj.drive();\n\n    document.addEventListener('click', onDocumentClick, true);\n  }\n}\n","import { injectStyledCSS } from './UI';\nimport GleapNetworkIntercepter from './GleapNetworkIntercepter';\nimport { fixGleapHeight, gleapDataParser, runFunctionWhenDomIsReady } from './GleapHelper';\nimport GleapSession from './GleapSession';\nimport GleapStreamedEvent from './GleapStreamedEvent';\nimport GleapConfigManager from './GleapConfigManager';\nimport GleapFeedback from './GleapFeedback';\nimport GleapFrameManager from './GleapFrameManager';\nimport GleapMetaDataManager from './GleapMetaDataManager';\nimport GleapConsoleLogManager from './GleapConsoleLogManager';\nimport GleapClickListener from './GleapClickListener';\nimport GleapFeedbackButtonManager from './GleapFeedbackButtonManager';\nimport GleapCustomDataManager from './GleapCustomDataManager';\nimport GleapEventManager from './GleapEventManager';\nimport GleapCustomActionManager from './GleapCustomActionManager';\nimport GleapReplayRecorder from './GleapReplayRecorder';\nimport GleapMarkerManager from './GleapMarkerManager';\nimport GleapTranslationManager from './GleapTranslationManager';\nimport GleapShortcutListener from './GleapShortcutListener';\nimport GleapPreFillManager from './GleapPreFillManager';\nimport GleapNotificationManager from './GleapNotificationManager';\nimport GleapAiChatbarManager from './GleapAiChatbarManager';\nimport GleapBannerManager from './GleapBannerManager';\nimport GleapModalManager from './GleapModalManager';\nimport GleapAudioManager from './GleapAudioManager';\nimport GleapTagManager from './GleapTagManager';\nimport GleapAdminManager from './GleapAdminManager';\nimport GleapProductTours from './GleapProductTours';\nimport { checkPageFilter, checkPageRules } from './GleapPageFilter';\nimport { registerGleapChecklist } from './GleapChecklist';\nimport ChecklistNetworkManager from './ChecklistNetworkManager';\n\nif (\n  typeof window !== 'undefined' &&\n  typeof HTMLCanvasElement !== 'undefined' &&\n  HTMLCanvasElement.prototype &&\n  HTMLCanvasElement.prototype.__originalGetContext === undefined\n) {\n  HTMLCanvasElement.prototype.__originalGetContext = HTMLCanvasElement.prototype.getContext;\n  HTMLCanvasElement.prototype.getContext = function (type, options) {\n    return this.__originalGetContext(type, {\n      ...options,\n      preserveDrawingBuffer: true,\n    });\n  };\n}\n\nif (typeof customElements !== 'undefined' && typeof HTMLElement !== 'undefined' && typeof window !== 'undefined') {\n  registerGleapChecklist();\n}\n\nclass Gleap {\n  static invoked = true;\n  static silentCrashReportSent = false;\n  initialized = false;\n  offlineMode = false;\n  disablePageTracking = false;\n  disableInAppNotifications = false;\n  disableQueryParams = false;\n\n  // Global data\n  globalData = {\n    screenRecordingData: null,\n    webReplay: null,\n    snapshotPosition: {\n      x: 0,\n      y: 0,\n    },\n  };\n\n  // Gleap singleton\n  static instance;\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new Gleap();\n      return this.instance;\n    } else {\n      return this.instance;\n    }\n  }\n\n  /**\n   * Main constructor\n   */\n  constructor() {\n    if (typeof window !== 'undefined') {\n      // Make sure all instances are ready.\n      GleapMetaDataManager.getInstance();\n      GleapConsoleLogManager.getInstance().start();\n      GleapClickListener.getInstance().start();\n      GleapAdminManager.getInstance().start();\n      GleapAiChatbarManager.getInstance().setOnMessageSend((question) => {\n        Gleap.askAI(question, true);\n      });\n    }\n  }\n\n  /**\n   * Sets the development environment\n   * @param {*} environment\n   */\n  static setEnvironment(environment) {\n    GleapMetaDataManager.getInstance().environment = environment;\n  }\n\n  /**\n   * Set tags to be submitted with each ticket.\n   * @param {*} tags\n   */\n  static setTags(tags) {\n    GleapTagManager.getInstance().setTags(tags);\n  }\n\n  /**\n   * Sets a custom URL handler.\n   * @param {*} urlHandler\n   */\n  static setUrlHandler(urlHandler) {\n    GleapFrameManager.getInstance().setUrlHandler(urlHandler);\n  }\n\n  /**\n   * Active the Gleap offline mode.\n   * @param {*} offlineMode\n   */\n  static setOfflineMode(offlineMode) {\n    const instance = this.getInstance();\n    instance.offlineMode = offlineMode;\n  }\n\n  /**\n   * Disable the in-app notifications.\n   * @param {*} disableInAppNotifications\n   */\n  static setDisableInAppNotifications(disableInAppNotifications) {\n    const instance = this.getInstance();\n    instance.disableInAppNotifications = disableInAppNotifications;\n  }\n\n  /**\n   * Disable the default page tracking.\n   * @param {*} disablePageTracking\n   */\n  static setDisablePageTracking(disablePageTracking) {\n    const instance = this.getInstance();\n    instance.disablePageTracking = disablePageTracking;\n  }\n\n  /**\n   * Revert console log overwrite.\n   */\n  static disableConsoleLogOverwrite() {\n    GleapConsoleLogManager.getInstance().stop();\n  }\n\n  /**\n   * Set the AI tools.\n   * @param {*} tools\n   */\n  static setAiTools(tools) {\n    GleapConfigManager.getInstance().setAiTools(tools);\n    GleapFrameManager.getInstance().sendConfigUpdate();\n  }\n\n  /**\n   * Attaches external network logs.\n   */\n  static attachNetworkLogs(networkLogs) {\n    GleapNetworkIntercepter.getInstance().externalRequests = gleapDataParser(networkLogs);\n  }\n\n  /**\n   * Add entry to logs.\n   * @param {*} message\n   * @param {*} logLevel\n   * @returns\n   */\n  static log(message, logLevel = 'INFO') {\n    GleapConsoleLogManager.getInstance().addLog(message, logLevel);\n  }\n\n  /**\n   * Initializes the SDK\n   * @param {*} sdkKey\n   */\n  static initialize(sdkKey) {\n    const instance = this.getInstance();\n    if (instance.initialized) {\n      console.warn('Gleap already initialized.');\n      return;\n    }\n\n    instance.initialized = true;\n\n    try {\n      fixGleapHeight();\n    } catch (error) {}\n\n    // Start session\n    const sessionInstance = GleapSession.getInstance();\n    sessionInstance.sdkKey = sdkKey;\n    sessionInstance.setOnSessionReady(() => {\n      // Run auto configuration.\n      setTimeout(() => {\n        GleapConfigManager.getInstance()\n          .start()\n          .then(() => {\n            GleapStreamedEvent.getInstance().start();\n\n            runFunctionWhenDomIsReady(() => {\n              // Inject the widget buttons\n              GleapFeedbackButtonManager.getInstance().injectFeedbackButton();\n\n              // Inject the notification container\n              GleapNotificationManager.getInstance().injectNotificationUI();\n\n              // Inject the AI UI container\n              GleapAiChatbarManager.getInstance().injectAIUI();\n\n              // Check for uncompleted tour.\n              Gleap.checkForUncompletedTour();\n\n              // Check for URL params.\n              Gleap.checkForUrlParams();\n\n              // Notify event.\n              GleapEventManager.notifyEvent('initialized');\n            });\n          })\n          .catch(function (err) {\n            console.warn('Failed to initialize Gleap.');\n          });\n      }, 0);\n    });\n    sessionInstance.startSession();\n  }\n\n  static openURL(url, newTab = false) {\n    GleapFrameManager.getInstance().urlHandler(url, newTab);\n  }\n\n  static disableQueryParams(disableQueryParams = true) {\n    this.getInstance().disableQueryParams = disableQueryParams;\n  }\n\n  static checkForUrlParams() {\n    if (this.getInstance().disableQueryParams) {\n      console.log('Query params are disabled.');\n      return;\n    }\n\n    if (typeof window === 'undefined' || !window.location.search) {\n      return;\n    }\n\n    try {\n      const urlParams = new URLSearchParams(window.location.search);\n\n      const widget = urlParams.get('gleap_widget');\n      if (widget && widget.length > 0) {\n        Gleap.open();\n      }\n\n      const conversationFlow = urlParams.get('gleap_conversation');\n      if (conversationFlow && conversationFlow.length > 0) {\n        if (conversationFlow === 'true') {\n          Gleap.startConversation(true);\n        } else {\n          Gleap.startBot(conversationFlow, true);\n        }\n      }\n\n      const feedbackFlow = urlParams.get('gleap_feedback');\n      if (feedbackFlow && feedbackFlow.length > 0) {\n        Gleap.startFeedbackFlow(feedbackFlow);\n      }\n      const surveyFlow = urlParams.get('gleap_survey');\n      const surveyFlowFormat = urlParams.get('gleap_survey_format');\n      if (surveyFlow && surveyFlow.length > 0) {\n        Gleap.showSurvey(surveyFlow, surveyFlowFormat === 'survey_full' ? 'survey_full' : 'survey');\n      }\n      const tourId = urlParams.get('gleap_tour');\n      if (tourId && tourId.length > 0) {\n        var tourDelay = parseInt(urlParams.get('gleap_tour_delay'));\n        if (isNaN(tourDelay)) {\n          tourDelay = 2;\n        }\n\n        setTimeout(() => {\n          Gleap.startProductTour(tourId);\n        }, tourDelay * 1000);\n      }\n    } catch (exp) {}\n  }\n\n  /**\n   * Destroy\n   * @returns\n   */\n  static destroy() {\n    GleapReplayRecorder.getInstance().stop();\n    GleapStreamedEvent.getInstance().stop();\n    GleapFrameManager.getInstance().destroy();\n    GleapFeedbackButtonManager.getInstance().destroy();\n    GleapNotificationManager.getInstance().clearAllNotifications(true);\n    GleapAiChatbarManager.getInstance().destroy();\n    GleapSession.getInstance().clearSession(0, false);\n    GleapBannerManager.getInstance().removeBannerUI();\n\n    // Reset the initialized flag and clear the instance\n    this.instance = null;\n  }\n\n  /**\n   * Close any open banner.\n   */\n  static closeBanner() {\n    GleapBannerManager.getInstance().removeBannerUI();\n  }\n\n  /**\n   * Close any open modal.\n   */\n  static closeModal() {\n    GleapModalManager.getInstance().hideModal();\n  }\n\n  /**\n   * Show the AI bar.\n   */\n  static showAiChatbar() {\n    GleapAiChatbarManager.getInstance().manuallyHidden = false;\n    GleapAiChatbarManager.getInstance().show();\n  }\n\n  /**\n   * Hide the AI search.\n   */\n  static hideAiChatbar() {\n    GleapAiChatbarManager.getInstance().manuallyHidden = true;\n    GleapAiChatbarManager.getInstance().hide();\n  }\n\n  /**\n   * Set the AI quick actions.\n   * @param {Array<string>} quickActions\n   */\n  static setAiChatbarQuickActions(quickActions) {\n    GleapAiChatbarManager.getInstance().setQuickActions(quickActions);\n  }\n\n  /**\n   * Set the AI chatbar placeholder.\n   * @param {string} placeholder\n   */\n  static setAiChatbarPlaceholder(placeholder) {\n    GleapAiChatbarManager.getInstance().setPlaceholder(placeholder);\n  }\n\n  /**\n   * Enable or disable Gleap session tracking through cookies.\n   * @param {*} useCookies\n   */\n  static setUseCookies(useCookies) {\n    GleapSession.getInstance().useCookies = useCookies;\n  }\n\n  /**\n   * Indentifies the user session\n   * @param {string} userId\n   * @param {*} userData\n   */\n  static identify(userId, userData, userHash) {\n    return GleapSession.getInstance().identifySession(userId, gleapDataParser(userData), userHash);\n  }\n\n  /**\n   * Updates the contact data.\n   * @param {*} userData\n   */\n  static updateContact(userData) {\n    return GleapSession.getInstance().updateSession(gleapDataParser(userData));\n  }\n\n  /**\n   * Clears the current contact.\n   */\n  static clearIdentity() {\n    GleapSession.getInstance().clearSession();\n  }\n\n  /**\n   * Returns the current user session\n   */\n  static getIdentity() {\n    return GleapSession.getInstance().getSession();\n  }\n\n  /**\n   * Returns whether the user is identified or not.\n   */\n  static isUserIdentified() {\n    const session = GleapSession.getInstance().session;\n    if (session && session.userId && session.userId.length > 0) {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Widget opened status\n   * @returns {boolean} isOpened\n   */\n  static isOpened() {\n    return GleapFrameManager.getInstance().isOpened();\n  }\n\n  /**\n   * Hides any open Gleap dialogs.\n   */\n  static hide() {\n    GleapFrameManager.getInstance().hideWidget();\n  }\n\n  /**\n   * Sets the maximum network request count.\n   */\n  static setMaxNetworkRequests(maxRequests) {\n    GleapNetworkIntercepter.getInstance().setMaxRequests(maxRequests);\n  }\n\n  /**\n   * Sets the maximum network request count.\n   */\n  static startNetworkLogger() {\n    GleapNetworkIntercepter.getInstance().start();\n  }\n\n  /**\n   * Sets the network logger blacklist.\n   * @param {Array} networkLogBlacklist\n   */\n  static setNetworkLogsBlacklist(networkLogBlacklist) {\n    GleapNetworkIntercepter.getInstance().setBlacklist(networkLogBlacklist);\n  }\n\n  /**\n   * Sets the network logger props to ignore.\n   * @param {Array} filters\n   */\n  static setNetworkLogPropsToIgnore(filters) {\n    GleapNetworkIntercepter.getInstance().setFilters(filters);\n  }\n\n  /**\n   * Set custom replay options.\n   * @param {*} options\n   */\n  static setReplayOptions(options) {\n    GleapReplayRecorder.getInstance().setOptions(options);\n  }\n\n  /**\n   * Closes any open Gleap dialogs.\n   * @param {boolean} resetRoutes\n   */\n  static close(resetRoutes = false) {\n    GleapFrameManager.getInstance().hideWidget(resetRoutes);\n  }\n\n  /**\n   * Starts the Gleap flow.\n   */\n  static open() {\n    GleapFrameManager.getInstance().setAppMode('widget');\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Track a custom event\n   * @param {string} name\n   * @param {any} data\n   */\n  static trackEvent(name, data) {\n    GleapStreamedEvent.getInstance().logEvent(name, data);\n  }\n\n  /**\n   * Logs a custom event\n   * @param {string} name\n   * @param {any} data\n   * @deprecated Please use trackEvent instead.\n   */\n  static logEvent(name, data) {\n    GleapStreamedEvent.getInstance().logEvent(name, data);\n  }\n\n  /**\n   * Prefills a specific form field.\n   * @param {*} key\n   * @param {*} value\n   */\n  static preFillForm(data) {\n    const cleanedData = gleapDataParser(data);\n    GleapPreFillManager.getInstance().formPreFill = cleanedData;\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'prefill-form-data',\n        data: cleanedData,\n      },\n      true\n    );\n  }\n\n  /**\n   * Register events for Gleap.\n   * @param {*} eventName\n   * @param {*} callback\n   */\n  static on(eventName, callback) {\n    GleapEventManager.on(eventName, callback);\n  }\n\n  /**\n   * Enable or disable shortcuts\n   * @param {boolean} enabled\n   */\n  static enableShortcuts(enabled) {\n    if (enabled) {\n      GleapShortcutListener.getInstance().start();\n    } else {\n      GleapShortcutListener.getInstance().stop();\n    }\n  }\n\n  /**\n   * Show or hide the feedback button\n   * @param {*} show\n   * @returns\n   */\n  static showFeedbackButton(show) {\n    GleapFeedbackButtonManager.getInstance().toggleFeedbackButton(show);\n  }\n\n  /**\n   * Sets the app version code.\n   * @param {string} appVersionCode\n   */\n  static setAppVersionCode(appVersionCode) {\n    GleapMetaDataManager.setAppVersionCode(appVersionCode);\n  }\n\n  /**\n   * Sets the app version code.\n   * @param {string} appVersionCode\n   */\n  static setAppBuildNumber(appBuildNumber) {\n    GleapMetaDataManager.setAppBuildNumber(appBuildNumber);\n  }\n\n  /**\n   * Set a custom ws api url.\n   * @param {string} wsApiUrl\n   */\n  static setWSApiUrl(wsApiUrl) {\n    GleapSession.getInstance().wsApiUrl = wsApiUrl;\n  }\n\n  /**\n   * Set a custom api url.\n   * @param {string} apiUrl\n   */\n  static setApiUrl(apiUrl) {\n    GleapSession.getInstance().apiUrl = apiUrl;\n  }\n\n  /**\n   * Set a custom banner url.\n   * @param {string} bannerUrl\n   */\n  static setBannerUrl(bannerUrl) {\n    GleapBannerManager.getInstance().setBannerUrl(bannerUrl);\n  }\n\n  /**\n   * Set a custom modal url.\n   * @param {string} modalUrl\n   */\n  static setModalUrl(modalUrl) {\n    GleapModalManager.getInstance().setModalUrl(modalUrl);\n  }\n\n  /**\n   * Set a custom frame api url.\n   * @param {string} frameUrl\n   */\n  static setFrameUrl(frameUrl) {\n    GleapFrameManager.getInstance().frameUrl = frameUrl;\n  }\n\n  /**\n   * This method is used to set ticket attributes programmatically.\n   * @param {*} key The key of the attribute you want to add.\n   * @param {*} value The value to set.\n   */\n  static setTicketAttribute(key, value) {\n    GleapCustomDataManager.getInstance().setTicketAttribute(key, value);\n  }\n\n  /**\n   * This method is used to unset ticket attributes programmatically.\n   * @param {*} key The key of the attribute you want to unset.\n   */\n  static unsetTicketAttribute(key) {\n    GleapCustomDataManager.getInstance().unsetTicketAttribute(key);\n  }\n\n  /**\n   * This method is used to clear ticket attributes programmatically.\n   */\n  static clearTicketAttributes() {\n    GleapCustomDataManager.getInstance().clearTicketAttributes();\n  }\n\n  /**\n   * Set custom data that will be attached to the bug-report.\n   * @param {*} data\n   */\n  static attachCustomData(data) {\n    GleapCustomDataManager.getInstance().attachCustomData(data);\n  }\n\n  /**\n   * Add one key value pair to the custom data object\n   * @param {*} key The key of the custom data entry you want to add.\n   * @param {*} value The custom data you want to add.\n   */\n  static setCustomData(key, value) {\n    GleapCustomDataManager.getInstance().setCustomData(key, value);\n  }\n\n  /**\n   * Remove one key value pair of the custom data object\n   * @param {*} key The key of the custom data entry you want to remove.\n   */\n  static removeCustomData(key) {\n    GleapCustomDataManager.getInstance().removeCustomData(key);\n  }\n\n  /**\n   * Clear the custom data\n   */\n  static clearCustomData() {\n    GleapCustomDataManager.getInstance().clearCustomData();\n  }\n\n  /**\n   * Play or mute the sound.\n   * @param {*} play\n   */\n  static playSound(play) {\n    GleapAudioManager.playSound(play);\n  }\n\n  /**\n   * Show or hide the notification badge count.\n   * @param {boolean} showNotificationBadge show or hide the notification badge\n   *\n   */\n  static showTabNotificationBadge(showNotificationBadge) {\n    const notificationInstance = GleapNotificationManager.getInstance();\n    notificationInstance.showNotificationBadge = showNotificationBadge;\n    notificationInstance.updateTabBarNotificationCount();\n  }\n\n  /**\n   * Override the browser language.\n   * @param {string} language country code with two letters\n   */\n  static setLanguage(language) {\n    GleapTranslationManager.getInstance().setOverrideLanguage(language);\n\n    if (Gleap.getInstance().initialized) {\n      setTimeout(() => {\n        Gleap.getInstance().softReInitialize();\n\n        // Update language for contact.\n        Gleap.updateContact({\n          lang: language,\n        });\n      }, 1000);\n    }\n  }\n\n  /**\n   * Register custom action\n   * @param {*} action\n   */\n  static registerCustomAction(customAction) {\n    GleapCustomActionManager.registerCustomAction(customAction);\n  }\n\n  /**\n   * Triggers a custom action\n   * @param {*} actionName\n   */\n  static triggerCustomAction(name) {\n    GleapCustomActionManager.triggerCustomAction(name);\n  }\n\n  /**\n   * Sets a custom color scheme.\n   * @param {string} primaryColor\n   */\n  static setStyles(\n    primaryColor,\n    headerColor,\n    buttonColor,\n    backgroundColor = '#ffffff',\n    borderRadius = 20,\n    buttonX = 20,\n    buttonY = 20,\n    buttonStyle = GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n  ) {\n    runFunctionWhenDomIsReady(() => {\n      injectStyledCSS(primaryColor, headerColor, buttonColor, borderRadius, backgroundColor, buttonX, buttonY, buttonStyle);\n    });\n  }\n\n  /**\n   * Sends a silent feedback report\n   * @param {*} formData\n   * @param {*} priority\n   * @param {*} excludeData\n   */\n  static sendSilentCrashReport(\n    description = '',\n    priority = 'MEDIUM',\n    excludeData = {\n      screenshot: true,\n      replays: true,\n      attachments: true,\n    }\n  ) {\n    return Gleap.sendSilentCrashReportWithFormData(\n      {\n        description,\n      },\n      priority,\n      excludeData\n    );\n  }\n\n  /**\n   * Sends a silent feedback report\n   * @param {*} formData\n   * @param {*} priority\n   * @param {*} excludeData\n   */\n  static sendSilentCrashReportWithFormData(\n    formData,\n    priority = 'MEDIUM',\n    excludeData = {\n      screenshot: true,\n      replays: true,\n      attachments: true,\n    }\n  ) {\n    if (this.silentCrashReportSent) {\n      return;\n    }\n\n    this.silentCrashReportSent = true;\n    setTimeout(() => {\n      this.silentCrashReportSent = false;\n    }, 10000);\n\n    const excludeDataCleaned = excludeData ? gleapDataParser(excludeData) : {};\n    const sessionInstance = GleapSession.getInstance();\n    if (!sessionInstance.ready) {\n      return;\n    }\n\n    var newFormData = formData ? formData : {};\n    if (sessionInstance.session.email) {\n      newFormData.reportedBy = sessionInstance.session.email;\n    }\n\n    const feedback = new GleapFeedback('CRASH', priority, newFormData, true, excludeDataCleaned);\n    feedback\n      .sendFeedback()\n      .then(() => {})\n      .catch((error) => {});\n  }\n\n  /**\n   * Shows a survey manually.\n   * @param {*} actionType\n   * @param {*} format\n   */\n  static showSurvey(actionType, format = 'survey') {\n    Gleap.startFeedbackFlowWithOptions(\n      actionType,\n      {\n        hideBackButton: true,\n        format,\n      },\n      true\n    );\n  }\n\n  /**\n   * Starts a classic feedback form.\n   */\n  static startClassicForm(formId, showBackButton) {\n    Gleap.startFeedbackFlowWithOptions(formId, {\n      hideBackButton: !showBackButton,\n    });\n  }\n\n  /**\n   * Starts the bug reporting flow.\n   */\n  static startFeedbackFlow(feedbackFlow, showBackButton) {\n    Gleap.startFeedbackFlowWithOptions(feedbackFlow, {\n      hideBackButton: !showBackButton,\n    });\n  }\n\n  /**\n   * Starts the bug reporting flow.\n   */\n  static startFeedbackFlowWithOptions(feedbackFlow, options = {}, isSurvey = false) {\n    const { autostartDrawing, hideBackButton, format } = options;\n    const sessionInstance = GleapSession.getInstance();\n    if (!sessionInstance.ready) {\n      return;\n    }\n\n    // Initially set scroll position\n    Gleap.getInstance().setGlobalDataItem('snapshotPosition', {\n      x: window.scrollX,\n      y: window.scrollY,\n    });\n\n    var action = 'start-feedbackflow';\n    if (isSurvey) {\n      action = 'start-survey';\n    }\n\n    GleapFrameManager.getInstance().setAppMode(isSurvey ? format : 'widget');\n\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: action,\n        data: {\n          flow: feedbackFlow,\n          hideBackButton: hideBackButton,\n          format,\n        },\n      },\n      true\n    );\n\n    if (autostartDrawing) {\n      GleapFrameManager.getInstance().showDrawingScreen('screenshot');\n    } else {\n      GleapFrameManager.getInstance().showWidget();\n    }\n  }\n\n  /**\n   * Opens the conversations overview.\n   */\n  static openConversations(showBackButton = true) {\n    GleapFrameManager.getInstance().setAppMode('widget');\n\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'open-conversations',\n        data: {\n          hideBackButton: !showBackButton,\n        },\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Opens a conversation\n   */\n  static openConversation(shareToken, showBackButton = true) {\n    if (!shareToken) {\n      return;\n    }\n\n    GleapFrameManager.getInstance().setAppMode('widget');\n\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'open-conversation',\n        data: {\n          shareToken,\n          hideBackButton: !showBackButton,\n        },\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Starts a new conversation\n   */\n  static startConversation(showBackButton = true) {\n    Gleap.startBot('', showBackButton);\n  }\n\n  /**\n   * Starts a new conversation and attaches the bot with the given id.\n   */\n  static startBot(botId, showBackButton = true) {\n    GleapFrameManager.getInstance().setAppMode('widget');\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'start-bot',\n        data: {\n          botId: botId ? botId : '',\n          hideBackButton: !showBackButton,\n        },\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Starts a new conversation and attaches the bot with the given id.\n   */\n  static askAI(question, showBackButton = true) {\n    GleapFrameManager.getInstance().setAppMode('widget');\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'ask-ai',\n        data: {\n          question,\n          hideBackButton: !showBackButton,\n        },\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Opens a help center collection\n   */\n  static openHelpCenterCollection(collectionId, showBackButton = true) {\n    if (!collectionId) {\n      return;\n    }\n\n    GleapFrameManager.getInstance().setAppMode('widget');\n\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'open-help-collection',\n        data: {\n          collectionId,\n          hideBackButton: !showBackButton,\n        },\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Opens a help article\n   */\n  static openHelpCenterArticle(articleId, showBackButton = true) {\n    if (!articleId) {\n      return;\n    }\n\n    GleapFrameManager.getInstance().setAppMode('widget');\n\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'open-help-article',\n        data: {\n          articleId,\n          hideBackButton: !showBackButton,\n        },\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Opens the help center.\n   */\n  static openHelpCenter(showBackButton = true) {\n    GleapFrameManager.getInstance().setAppMode('widget');\n\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'open-helpcenter',\n        data: {\n          hideBackButton: !showBackButton,\n        },\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Search for news articles in the help center\n   */\n  static searchHelpCenter(term, showBackButton = true) {\n    if (!term) {\n      return;\n    }\n\n    GleapFrameManager.getInstance().setAppMode('widget');\n\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'open-helpcenter-search',\n        data: {\n          term,\n          hideBackButton: !showBackButton,\n        },\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Opens a news article\n   */\n  static openNewsArticle(id, showBackButton = true) {\n    if (!id) {\n      return;\n    }\n\n    GleapFrameManager.getInstance().setAppMode('widget');\n\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'open-news-article',\n        data: {\n          id,\n        },\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Open the checklists overview.\n   */\n  static openChecklists(showBackButton = true) {\n    GleapFrameManager.getInstance().setAppMode('widget');\n\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'open-checklists',\n        data: {},\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Starts a new checklist and opens it.\n   */\n  static startChecklist(outboundId, showBackButton = true, sharedKey = undefined) {\n    if (!outboundId) {\n      return false;\n    }\n\n    GleapFrameManager.getInstance().setAppMode('widget');\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'start-checklist',\n        data: {\n          outboundId: outboundId,\n          hideBackButton: !showBackButton,\n          ...(sharedKey ? { sharedKey: sharedKey } : {}),\n        },\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n\n    return true;\n  }\n\n  /**\n   * Open an existing checklist.\n   */\n  static openChecklist(checklistId, showBackButton = true) {\n    if (!checklistId) {\n      return;\n    }\n\n    GleapFrameManager.getInstance().setAppMode('widget');\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'open-checklist',\n        data: {\n          id: checklistId,\n          hideBackButton: !showBackButton,\n        },\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Gets the full checklist data by validating the outbound ID and fetching the data.\n   * @param {string} outboundId - The outbound checklist ID to get data for.\n   * @param {string} [sharedKey] - Optional shared key for the checklist.\n   * @returns {Promise<object>} A promise that resolves with the full checklist data.\n   *\n   * Available events for checklist updates (use Gleap.on() to listen):\n   * - 'checklist-loaded': Fired when a checklist is initially loaded\n   * - 'checklist-update': Fired when checklist data is updated\n   * - 'checklist-step-completed': Fired when a step is marked as completed\n   * - 'checklist-completed': Fired when the entire checklist is completed\n   */\n  static getChecklistData(outboundId, sharedKey) {\n    if (!outboundId) {\n      return Promise.reject(new Error('outboundId is required'));\n    }\n\n    const networkManager = ChecklistNetworkManager.getInstance();\n\n    // First validate the checklist to get the internal ID\n    return networkManager.validateChecklist(outboundId, sharedKey).then((internalId) => {\n      // Then fetch the full checklist data\n      return networkManager.fetchChecklist(internalId);\n    });\n  }\n\n  /**\n   * Opens the news overview.\n   */\n  static openNews(showBackButton = true) {\n    GleapFrameManager.getInstance().setAppMode('widget');\n\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'open-news',\n        data: {\n          hideBackButton: !showBackButton,\n        },\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  /**\n   * Opens the feature requests overview.\n   */\n  static openFeatureRequests(showBackButton = true) {\n    GleapFrameManager.getInstance().setAppMode('widget');\n\n    GleapFrameManager.getInstance().sendMessage(\n      {\n        name: 'open-feature-requests',\n        data: {},\n      },\n      true\n    );\n\n    GleapFrameManager.getInstance().showWidget();\n  }\n\n  isLiveMode() {\n    if (this.offlineMode === true) {\n      return false;\n    }\n\n    var hostname = window.location.hostname;\n    const isLocalHost =\n      ['localhost', '127.0.0.1', '0.0.0.0', '', '::1'].includes(hostname) ||\n      hostname.startsWith('192.168.') ||\n      hostname.startsWith('10.0.') ||\n      hostname.endsWith('.local') ||\n      !hostname.includes('.');\n    return !isLocalHost;\n  }\n\n  softReInitialize() {\n    GleapFrameManager.getInstance().destroy();\n    GleapConfigManager.getInstance()\n      .start()\n      .then(() => {\n        // Update the feedback button.\n        GleapFeedbackButtonManager.getInstance().refresh();\n\n        // Inject the notification container\n        GleapNotificationManager.getInstance().injectNotificationUI();\n\n        // Inject the AI UI container\n        GleapAiChatbarManager.getInstance().injectAIUI();\n      })\n      .catch(function (err) {\n        console.warn('Failed to initialize Gleap.');\n      });\n  }\n\n  /**\n   * Performs an action.\n   * @param {*} action\n   */\n  performActions(actions) {\n    for (let i = 0; i < actions.length; i++) {\n      const action = actions[i];\n      if (action && action.actionType) {\n        if ((action.pageRules?.length > 0 || action.pageFilter) && window && window.location) {\n          const passed = checkPageRules(window.location.href, action);\n\n          if (!passed) {\n            continue;\n          }\n        }\n\n        if (action.actionType === 'notification') {\n          if (action?.data?.checklist?.popupType === 'widget') {\n            Gleap.openChecklist(action.data.checklist.id, true);\n          } else {\n            if (!this.disableInAppNotifications) {\n              Gleap.showNotification(action);\n            }\n          }\n        } else if (action.actionType === 'banner') {\n          Gleap.showBanner(action);\n        } else if (action.actionType === 'modal') {\n          Gleap.showModal(action);\n        } else if (action.actionType === 'tour') {\n          Gleap.startProductTourWithConfig(action.outbound, action.data, false);\n        } else {\n          Gleap.showSurvey(action.actionType, action.format);\n        }\n      }\n    }\n  }\n\n  static startProductTour(tourId, checkStartUrl = false) {\n    const self = this;\n    GleapSession.getInstance()\n      .startProductTourConfig(tourId)\n      .then((config) => {\n        if (checkStartUrl && config?.startURL && !window?.location?.href?.includes(config?.baseURL)) {\n          window.location.href = `${config.startURL}?gleap_tour=${tourId}&gleap_tour_delay=1`;\n          return;\n        }\n\n        self.startProductTourWithConfig(tourId, config, true);\n      })\n      .catch((error) => {});\n  }\n\n  static checkForUncompletedTour() {\n    const tourData = GleapProductTours.getInstance().loadUncompletedTour();\n    if (tourData) {\n      GleapProductTours.getInstance().startWithConfig(tourData.tourId, tourData.tourData, 500);\n    }\n  }\n\n  static startProductTourWithConfig(tourId, config, manually = false) {\n    GleapProductTours.getInstance().startWithConfig(tourId, config, 0, manually);\n  }\n\n  static showBanner(data) {\n    try {\n      GleapBannerManager.getInstance().showBanner(data);\n    } catch (e) {}\n  }\n\n  static showModal(data) {\n    try {\n      GleapModalManager.getInstance().showModal(data);\n    } catch (e) {}\n  }\n\n  static showNotification(data) {\n    GleapNotificationManager.getInstance().showNotification(data);\n  }\n\n  /**\n   * Sets a global data value\n   * @param {*} key\n   * @param {*} value\n   */\n  setGlobalDataItem(key, value) {\n    this.globalData[key] = value;\n  }\n\n  /**\n   * Gets a global data value\n   * @param {*} key\n   * @returns\n   */\n  getGlobalDataItem(key) {\n    return this.globalData[key];\n  }\n\n  /**\n   * Takes the current replay and assigns it to the global data array.\n   */\n  takeCurrentReplay() {\n    const replayData = GleapReplayRecorder.getInstance().getReplayData();\n    this.setGlobalDataItem('webReplay', replayData);\n  }\n}\n\n// Check for unperformed Gleap actions.\nif (typeof window !== 'undefined') {\n  const GleapActions = window.GleapActions;\n  if (GleapActions && GleapActions.length > 0) {\n    for (var i = 0; i < GleapActions.length; i++) {\n      const GLAction = GleapActions[i];\n      if (GLAction && GLAction.e && Gleap[GLAction.e]) {\n        Gleap[GLAction.e].apply(Gleap, GLAction.a);\n      }\n    }\n  }\n}\n\nconst handleGleapLink = (href) => {\n  try {\n    const urlParts = href.split('/');\n    const type = urlParts[2];\n    if (type === 'article') {\n      const identifier = urlParts[3];\n      Gleap.openHelpCenterArticle(identifier, true);\n    }\n\n    if (type === 'collection') {\n      const identifier = urlParts[3];\n      Gleap.openHelpCenterCollection(identifier, true);\n    }\n\n    if (type === 'flow') {\n      const identifier = urlParts[3];\n      Gleap.startFeedbackFlow(identifier, true);\n    }\n\n    if (type === 'survey') {\n      const identifier = urlParts[3];\n      Gleap.showSurvey(identifier);\n    }\n\n    if (type === 'bot') {\n      const identifier = urlParts[3];\n      Gleap.startBot(identifier, true);\n    }\n\n    if (type === 'news') {\n      const identifier = urlParts[3];\n      Gleap.openNewsArticle(identifier, true);\n    }\n\n    if (type === 'checklist') {\n      const identifier = urlParts[3];\n      Gleap.startChecklist(identifier, true, urlParts[4]);\n    }\n\n    if (type === 'tour') {\n      const identifier = urlParts[3];\n      Gleap.startProductTour(identifier);\n    }\n  } catch (e) {\n    console.error('Failed to handle Gleap link: ', href);\n  }\n};\n\nexport {\n  GleapNetworkIntercepter,\n  GleapAudioManager,\n  GleapNotificationManager,\n  GleapAiChatbarManager,\n  GleapBannerManager,\n  GleapModalManager,\n  GleapPreFillManager,\n  GleapShortcutListener,\n  GleapMarkerManager,\n  GleapTranslationManager,\n  GleapReplayRecorder,\n  GleapFeedback,\n  GleapConsoleLogManager,\n  GleapCustomActionManager,\n  GleapEventManager,\n  GleapCustomDataManager,\n  GleapFeedbackButtonManager,\n  GleapClickListener,\n  GleapSession,\n  GleapStreamedEvent,\n  GleapConfigManager,\n  GleapFrameManager,\n  GleapMetaDataManager,\n  GleapTagManager,\n  GleapProductTours,\n  GleapAdminManager,\n  handleGleapLink,\n};\n\nexport default Gleap;\n","/**\n * Gleap Checklist Web Component\n *\n * Displays an interactive checklist fetched from the Gleap API.\n * Allows users to view steps, mark them as done, trigger actions,\n * and automatically updates based on external events. Includes localization support\n * via GleapTranslationManager.\n *\n * Waits for a Gleap session to be available before initializing and\n * reloads when the session changes (via 'session-updated' event).\n *\n * @element gleap-checklist\n *\n * @attr {string} checklistId - The outbound ID of the checklist to display. Required.\n * @attr {boolean} [info=true] - Whether to display the info section (title, description, sender).\n * @attr {boolean} [progressbar=true] - Whether to display the progress bar.\n * @attr {boolean} [dark=false] - Apply dark mode styling.\n * @attr {boolean} [floating=false] - When set to \"true\", shows a small bubble that expands on click.\n *\n * @cssprop --color-bg - Background color.\n * @cssprop --color-font-title - Title text color.\n * @cssprop --color-font-text - Body text color.\n * @cssprop --color-font-light - Lighter text color.\n * @cssprop --color-primary - Primary accent color.\n * @cssprop --color-primary-light - Light primary color shade.\n * @cssprop --color-primary-contrast - Text color for primary buttons.\n * @cssprop --color-border - Border color.\n * @cssprop --color-gray-light - Light gray background/border color.\n * @cssprop --color-gray-lighter - Even lighter gray background.\n * @cssprop --color-gray-dark - Darker gray text/icon color.\n * @cssprop --color-success - Success color (e.g., for completed items).\n * @cssprop --color-success-light - Contrast color for success elements.\n * @cssprop --radius-sm - Small border radius.\n * @cssprop --radius-lg - Large border radius.\n * @cssprop --radius-full - Full (pill) border radius.\n * @cssprop --shadow-sm - Small box shadow.\n * @cssprop --shadow-md - Medium box shadow.\n * @cssprop --animation-duration - Duration for animations (e.g., accordion).\n * @cssprop --animation-timing - Timing function for animations.\n */\nimport ChecklistNetworkManager from './ChecklistNetworkManager';\nimport Gleap, { GleapConfigManager, GleapSession, GleapTranslationManager, GleapEventManager } from './Gleap';\n\nexport const registerGleapChecklist = () => {\n  if (typeof customElements !== 'undefined' && typeof HTMLElement !== 'undefined' && typeof window !== 'undefined') {\n    class GleapChecklist extends HTMLElement {\n      /** @private {number} */\n      activeStep = -1;\n      /** @private {object|null} */\n      checklistData = null;\n      /** @private {boolean} */\n      _isInitialLoad = false;\n      /** @private {boolean} */\n      _initialActiveSet = false;\n      /** @private {boolean} Flag indicating if the component has loaded data at least once. */\n      _hasLoaded = false;\n      /** @private {boolean} Flag indicating if a Gleap session is currently considered active by the component. */\n      _isSessionReady = false;\n\n      /** @private {Function} */\n      _boundHandleChecklistUpdate = this.handleChecklistUpdate.bind(this);\n      /** @private {Function} */\n      _boundHandleSessionUpdate = this.handleSessionUpdate.bind(this);\n\n      constructor() {\n        super();\n        this.attachShadow({ mode: 'open' });\n        // Ensure NetworkManager instance is created only if Gleap is available\n        try {\n          if (typeof GleapSession !== 'undefined' && typeof ChecklistNetworkManager !== 'undefined') {\n            this._networkManager = ChecklistNetworkManager.getInstance();\n          } else {\n            this._networkManager = null;\n          }\n        } catch (e) {\n          this._networkManager = null;\n        }\n        // Bind click handlers for floating mode.\n        this._boundFloatingLauncherClick = this.handleFloatingLauncherClick.bind(this);\n        this._boundFloatingCloseClick = this.handleFloatingCloseClick.bind(this);\n        this._floatingHideTimeout = null;\n      }\n\n      // --- Observed Attributes ---\n      static get observedAttributes() {\n        return ['checklistId', 'info', 'progressbar', 'dark', 'floating', 'sharedKey'];\n      }\n\n      // --- Lifecycle Callbacks ---\n      connectedCallback() {\n        window.addEventListener('checkListUpdate', this._boundHandleChecklistUpdate);\n        window.addEventListener('session-updated', this._boundHandleSessionUpdate);\n        window.addEventListener('resize', (this._boundResizeHandler = this.handleResize.bind(this)));\n        this._checkSessionAndLoad();\n      }\n\n      disconnectedCallback() {\n        window.removeEventListener('checkListUpdate', this._boundHandleChecklistUpdate);\n        window.removeEventListener('session-updated', this._boundHandleSessionUpdate);\n        window.removeEventListener('resize', this._boundResizeHandler);\n        this.removeFloatingClickListeners();\n        if (this._floatingHideTimeout) {\n          clearTimeout(this._floatingHideTimeout);\n          this._floatingHideTimeout = null;\n        }\n        this.checklistData = null;\n        this.activeStep = -1;\n        this._hasLoaded = false;\n        this._isSessionReady = false;\n        this._initialActiveSet = false;\n        this.renderResponse();\n      }\n\n      handleResize() {\n        this.updateActiveTaskMaxHeight();\n      }\n\n      attributeChangedCallback(name, oldValue, newValue) {\n        if (oldValue !== newValue) {\n          if (name === 'checklistId' && this._isSessionReady) {\n            this.loadChecklist();\n          } else if (name !== 'checklistId' && this._hasLoaded) {\n            if (this.checklistData) {\n              this.renderChecklist(this.checklistData);\n            }\n          }\n        }\n      }\n\n      // --- Session Handling ---\n      _checkSessionAndLoad() {\n        const gleapSessionInstance = this._getGleapSessionInstance();\n        const hasChecklistId = this.getAttribute('checklistId');\n\n        if (gleapSessionInstance.ready && hasChecklistId) {\n          this._isSessionReady = true;\n          this._networkManager = ChecklistNetworkManager.getInstance();\n          this.loadChecklist();\n        } else {\n          this._isSessionReady = false;\n          this._hasLoaded = false;\n          this.checklistData = null;\n          this.activeStep = -1;\n          this._initialActiveSet = false;\n          this.renderResponse();\n        }\n      }\n\n      handleSessionUpdate() {\n        this._checkSessionAndLoad();\n      }\n\n      _getGleapSessionInstance() {\n        try {\n          return typeof GleapSession !== 'undefined' ? GleapSession.getInstance() : null;\n        } catch (e) {\n          return null;\n        }\n      }\n\n      // --- Getters for Configuration ---\n      get infoEnabled() {\n        const attr = this.getAttribute('info');\n        return attr === null || attr.toLowerCase() !== 'false';\n      }\n\n      get progressbarEnabled() {\n        const attr = this.getAttribute('progressbar');\n        return attr === null || attr.toLowerCase() !== 'false';\n      }\n\n      get floatingEnabled() {\n        return this.getAttribute('floating') === 'true';\n      }\n\n      // --- Translation Helpers ---\n      _translate(key, defaultValue = '') {\n        return GleapTranslationManager.translateText(key) || defaultValue;\n      }\n\n      _translateWithVars(key, vars, defaultValue = '') {\n        return GleapTranslationManager.translateTextWithVars(key, vars) || defaultValue;\n      }\n\n      // --- SVG Icons ---\n      getCheckIcon() {\n        return `<svg width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"display: block;\">\n                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M20.7071 5.29289C21.0976 5.68342 21.0976 6.31658 20.7071 6.70711L9.70711 17.7071C9.31658 18.0976 8.68342 18.0976 8.29289 17.7071L3.29289 12.7071C2.90237 12.3166 2.90237 11.6834 3.29289 11.2929C3.68342 10.9024 4.31658 10.9024 4.70711 11.2929L9 15.5858L19.2929 5.29289C19.6834 4.90237 20.3166 4.90237 20.7071 5.29289Z\" fill=\"currentColor\"/>\n                  </svg>`;\n      }\n\n      // --- Data Loading and Handling ---\n      loadChecklist() {\n        if (!this._isSessionReady || !this._networkManager) {\n          return;\n        }\n        const checklistId = this.getAttribute('checklistId');\n        if (checklistId) {\n          this.activeStep = -1;\n          this._initialActiveSet = false;\n          this.validateChecklist(checklistId);\n        } else {\n          this.renderResponse();\n          this.checklistData = null;\n          this._hasLoaded = false;\n        }\n      }\n\n      getQueryParams() {\n        const gleapSessionInstance = this._getGleapSessionInstance();\n        if (!gleapSessionInstance?.session) {\n          return '';\n        }\n        const session = gleapSessionInstance.session;\n        let lang = 'en';\n        try {\n          if (typeof GleapTranslationManager !== 'undefined') {\n            lang = GleapTranslationManager.getInstance().getActiveLanguage() || 'en';\n          }\n        } catch (e) {}\n        return `gleapId=${session.gleapId || ''}&gleapHash=${session.gleapHash || ''}&lang=${lang}`;\n      }\n\n      makeRequest(method, url, data, callback) {\n        const gleapSessionInstance = this._getGleapSessionInstance();\n        if (!gleapSessionInstance?.session) {\n          const mockXhr = {\n            readyState: 4,\n            status: 0,\n            responseText: 'Session unavailable',\n            _isMock: true,\n          };\n          callback(mockXhr);\n          return;\n        }\n        const xhr = new XMLHttpRequest();\n        xhr.open(method, url);\n        try {\n          gleapSessionInstance.injectSession(xhr);\n        } catch (e) {}\n        if (data) {\n          xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n        }\n        xhr.onreadystatechange = () => {\n          if (xhr.readyState === 4) {\n            callback(xhr);\n          }\n        };\n        xhr.onerror = () => {\n          callback(xhr);\n        };\n        xhr.send(data ? JSON.stringify(data) : null);\n      }\n\n      validateChecklist(outboundId) {\n        if (!this._isSessionReady || !this._networkManager) {\n          return;\n        }\n        this.checklistData = null;\n        this._hasLoaded = false;\n        this.renderResponse();\n        const sharedKey = this.getAttribute('sharedKey');\n\n        this._networkManager\n          .validateChecklist(outboundId, sharedKey)\n          .then((internalId) => {\n            if (!this.isConnected || !this._isSessionReady || !internalId) {\n              return;\n            }\n            this.fetchChecklist(internalId);\n          })\n          .catch((error) => {\n            this.renderResponse();\n            this.checklistData = null;\n            this._hasLoaded = false;\n          });\n      }\n\n      fetchChecklist(checklistId) {\n        if (!this._isSessionReady || !this._networkManager) {\n          return;\n        }\n        this._isInitialLoad = !this._hasLoaded;\n        this._networkManager\n          .fetchChecklist(checklistId)\n          .then((data) => {\n            if (!this.isConnected || !this._isSessionReady || !data) {\n              this._hasLoaded = false;\n              this.checklistData = null;\n              this._checkSessionAndLoad();\n              return;\n            }\n            this.checklistData = data;\n            this._hasLoaded = true;\n            if (data.status === 'done') {\n              this.renderResponse();\n              return;\n            }\n            if (this._isInitialLoad && !this._initialActiveSet) {\n              const steps = data.outbound?.config?.steps || [];\n              const completedSteps = data.completedSteps || [];\n              const firstIncompleteIndex = steps.findIndex((step) => !completedSteps.includes(step.id));\n              this.activeStep = firstIncompleteIndex >= 0 ? firstIncompleteIndex : -1;\n              if (this.activeStep !== -1) {\n                this._initialActiveSet = true;\n              }\n            }\n            this.renderChecklist(this.checklistData);\n\n            // Notify external listeners about the initial checklist load\n            GleapEventManager.notifyEvent('checklist-loaded', {\n              checklistId: this.checklistData.id,\n              outboundId: this.checklistData.outbound?.id,\n              completedSteps: this.checklistData.completedSteps,\n              status: this.checklistData.status,\n              data: this.checklistData,\n            });\n          })\n          .catch((error) => {\n            this.renderResponse();\n            this.checklistData = null;\n            this._hasLoaded = false;\n          });\n      }\n\n      updateChecklist(id, data) {\n        const gleapSessionInstance = this._getGleapSessionInstance();\n        if (!gleapSessionInstance?.session) {\n          return;\n        }\n        const apiUrl = gleapSessionInstance.apiUrl;\n        if (!apiUrl) {\n          return;\n        }\n        const session = gleapSessionInstance.session;\n        const gleapId = session?.gleapId ?? '';\n        const gleapHash = session?.gleapHash ?? '';\n        let lang = 'en';\n        try {\n          if (typeof GleapTranslationManager !== 'undefined') {\n            lang = GleapTranslationManager.getInstance().getActiveLanguage() || 'en';\n          }\n        } catch (e) {}\n        let url = `${apiUrl}/outbound/checklists/${id}`;\n        if (data.checkedStep) {\n          url += `/increment/${data.checkedStep}`;\n        }\n        url += `?gleapId=${gleapId}&gleapHash=${gleapHash}&lang=${lang}`;\n        this.makeRequest('PUT', url, data, (xhr) => {\n          if (xhr._isMock) return;\n          if (!(xhr.status === 200 || xhr.status === 204)) {\n            // Update failed\n          }\n        });\n      }\n\n      // --- External Update Handling ---\n      handleChecklistUpdate(event) {\n        if (!this._hasLoaded || !this.checklistData) {\n          return;\n        }\n        const updateData = event.detail;\n        if (!updateData || updateData.id !== this.checklistData.id) {\n          return;\n        }\n        const previousCompletedSteps = [...(this.checklistData.completedSteps || [])];\n        let dataChanged = false;\n        let activeStepCompleted = false;\n        const currentlyActiveStepIndex = this.activeStep;\n        if (\n          updateData.completedSteps &&\n          JSON.stringify(updateData.completedSteps) !== JSON.stringify(previousCompletedSteps)\n        ) {\n          this.checklistData.completedSteps = [...updateData.completedSteps];\n          dataChanged = true;\n          if (currentlyActiveStepIndex !== -1) {\n            const activeStepId = this.checklistData.outbound?.config?.steps?.[currentlyActiveStepIndex]?.id;\n            if (\n              activeStepId &&\n              this.checklistData.completedSteps.includes(activeStepId) &&\n              !previousCompletedSteps.includes(activeStepId)\n            ) {\n              activeStepCompleted = true;\n            }\n          }\n        }\n        if (updateData.status && updateData.status !== this.checklistData.status) {\n          this.checklistData.status = updateData.status;\n          dataChanged = true;\n        }\n        if (activeStepCompleted) {\n          const steps = this.checklistData.outbound?.config?.steps || [];\n          let nextActiveStep = -1;\n          for (let i = currentlyActiveStepIndex + 1; i < steps.length; i++) {\n            if (!this.checklistData.completedSteps.includes(steps[i].id)) {\n              nextActiveStep = i;\n              break;\n            }\n          }\n          if (this.activeStep !== nextActiveStep) {\n            this.setActiveStep(nextActiveStep);\n          }\n          dataChanged = true;\n        }\n        if (dataChanged) {\n          this.renderChecklist(this.checklistData);\n\n          // Notify external listeners about the checklist update\n          GleapEventManager.notifyEvent('checklist-update', {\n            checklistId: this.checklistData.id,\n            outboundId: this.checklistData.outbound?.id,\n            completedSteps: this.checklistData.completedSteps,\n            status: this.checklistData.status,\n            data: this.checklistData,\n          });\n        }\n      }\n\n      // --- Floating (Click-based) Listeners ---\n      handleFloatingLauncherClick(event) {\n        event.stopPropagation();\n\n        if (this.checklistData.status === 'done') {\n          return;\n        }\n\n        const tasks = this.shadowRoot.querySelector('.checklist-tasks');\n        if (tasks) {\n          tasks.style.display = tasks.style.display === 'block' ? 'none' : 'block';\n        }\n      }\n\n      handleFloatingCloseClick(event) {\n        event.stopPropagation();\n        const tasks = this.shadowRoot.querySelector('.checklist-tasks');\n        if (tasks) {\n          tasks.style.display = 'none';\n        }\n      }\n\n      addFloatingClickListeners() {\n        const launcher = this.shadowRoot.querySelector('.checklist-floating-launcher');\n        if (launcher) {\n          launcher.addEventListener('click', this._boundFloatingLauncherClick);\n        }\n        const header = this.shadowRoot.querySelector('.checklist-floating-header');\n        if (header) {\n          header.addEventListener('click', this._boundFloatingCloseClick);\n        }\n      }\n\n      removeFloatingClickListeners() {\n        const launcher = this.shadowRoot.querySelector('.checklist-floating-launcher');\n        if (launcher) {\n          launcher.removeEventListener('click', this._boundFloatingLauncherClick);\n        }\n        const header = this.shadowRoot.querySelector('.checklist-floating-header');\n        if (header) {\n          header.removeEventListener('click', this._boundFloatingCloseClick);\n        }\n      }\n\n      // --- Rendering Logic ---\n      renderResponse() {\n        this.shadowRoot.innerHTML = '';\n      }\n\n      /**\n       * Renders the floating launcher. When called with the default class (\"checklist-floating\")\n       * it shows a chevron icon; when called with \"checklist-floating-header\" it shows a close icon.\n       */\n      renderFloatingLauncher(outbound, className = 'checklist-floating', renderDoneState = false) {\n        const steps = outbound.config?.steps || [];\n        const completedSteps = this.checklistData?.completedSteps || [];\n        let progress = 0;\n        if (this.progressbarEnabled && steps.length > 0) {\n          const totalSteps = steps.length;\n          const doneSteps = completedSteps.length;\n          progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n        }\n\n        // Determine the next incomplete step\n        const nextIncompleteStep = steps.find((step) => !completedSteps.includes(step.id));\n        let titleText =\n          steps.length > 0\n            ? nextIncompleteStep\n              ? nextIncompleteStep.title ||\n                this._translateWithVars(\n                  'stepDefaultTitle',\n                  { index: steps.indexOf(nextIncompleteStep) + 1 },\n                  `Step ${steps.indexOf(nextIncompleteStep) + 1}`\n                )\n              : ''\n            : outbound.subject || '';\n\n        let subtitleText =\n          steps.length > 0 ? (nextIncompleteStep ? nextIncompleteStep.description || '' : '') : outbound.message || '';\n\n        if (renderDoneState) {\n          titleText = outbound.config?.successTitle || '';\n          subtitleText = outbound.config?.successMessage || '';\n          progress = 100;\n        }\n\n        const circumference = 2 * Math.PI * 7;\n        const computedOffset = circumference - (progress / 100) * circumference;\n\n        const isHeader = className === 'checklist-floating-header';\n        const icon = isHeader\n          ? `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n               <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n               <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n             </svg>`\n          : `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n               <polyline points=\"6 9 12 15 18 9\"></polyline>\n             </svg>`;\n\n        return `\n          <div part=\"${className}\" class=\"${\n            isHeader ? 'checklist-floating-header' : 'checklist-floating-launcher'\n          } ${renderDoneState ? 'checklist-floating-launcher--done' : ''}\">\n            <div class=\"floating-header\">\n              <div class=\"floating-circular-progress\">\n                <svg viewBox=\"0 0 20 20\">\n                  <circle class=\"track\" cx=\"10\" cy=\"10\" r=\"7\"></circle>\n                  <circle class=\"progress\" cx=\"10\" cy=\"10\" r=\"7\" stroke-dasharray=\"${circumference.toFixed(\n                    2\n                  )}\" stroke-dashoffset=\"${computedOffset.toFixed(2)}\"></circle>\n                </svg>\n              </div>\n              <div class=\"floating-title\">${titleText}</div>\n              ${renderDoneState ? '' : `<span class=\"floating-icon\">${icon}</span>`}\n            </div>\n            <div class=\"floating-subtitle\">${subtitleText}</div>\n          </div>\n        `;\n      }\n\n      renderInfoSection(outbound) {\n        if (!this.infoEnabled || !outbound) return '';\n        const subject = outbound.subject || this._translate('checklistDefaultTitle', 'Checklist');\n        const message = outbound.message || '';\n        let senderHtml = '';\n        if (outbound.sender?.profileImageUrl) {\n          senderHtml = `\n            <div part=\"sender\" class=\"checklists-sender\">\n              <img part=\"sender-image\" src=\"${outbound.sender.profileImageUrl}\" alt=\"${\n                outbound.sender.firstName || 'Sender'\n              }'s profile picture\" style=\"object-fit: cover;\" />\n              <span part=\"sender-name\">${outbound.sender.firstName || ''}</span>\n            </div>`;\n        }\n        return `\n          <div part=\"info\" class=\"checklists-info\">\n            ${subject ? `<div part=\"info-title\" class=\"checklists-title\">${subject}</div>` : ''}\n            ${message ? `<div part=\"info-description\" class=\"checklists-description\">${message}</div>` : ''}\n            ${senderHtml}\n          </div>`;\n      }\n\n      renderProgressSection(steps = [], completedSteps = []) {\n        if (!this.progressbarEnabled || !steps.length) return '';\n        const totalSteps = steps.length;\n        const doneSteps = completedSteps.length;\n        const progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n        let duration = 0;\n        steps.forEach((step) => {\n          if (!completedSteps.includes(step.id) && step.duration > 0) {\n            duration += step.duration;\n          }\n        });\n        const progressLabel = this._translateWithVars(\n          'taskProgress',\n          { a: doneSteps, b: totalSteps },\n          `${doneSteps} of ${totalSteps} done`\n        );\n        const durationLabel =\n          duration > 0 ? this._translateWithVars('aboutMinutes', { a: duration }, `About ${duration} min left`) : '';\n        return `\n          <div part=\"progress-labels\" class=\"checklist-progress-labels\">\n            <div part=\"progress-label-primary\" class=\"checklist-progress-label\">${progressLabel}</div>\n            ${\n              durationLabel\n                ? `<div part=\"progress-label-secondary\" class=\"checklist-progress-label\">${durationLabel}</div>`\n                : ''\n            }\n          </div>\n          <div part=\"progress-bar\" class=\"checklist-progress-bar\">\n            <div part=\"progress-bar-progress\" class=\"checklist-progress-bar-progress\" style=\"width: ${progress}%;\"></div>\n          </div>`;\n      }\n\n      renderTasks(steps = [], completedSteps = []) {\n        if (!steps || steps.length === 0) return `<p>${this._translate('noStepsDefined', 'No steps defined.')}</p>`;\n        return steps\n          .map((step, index) => {\n            const isTaskDone = completedSteps.includes(step.id);\n            const isActive = this.activeStep === index;\n            const badge = isTaskDone\n              ? `<span part=\"task-badge\" class=\"checklist-task-header--badge checklist-task-header--badge-done\">${this.getCheckIcon()}</span>`\n              : `<span part=\"task-badge\" class=\"checklist-task-header--badge\">${index + 1}</span>`;\n            const stepTitle =\n              step.title || this._translateWithVars('stepDefaultTitle', { index: index + 1 }, `Step ${index + 1}`);\n            const stepDescription = step.description || '';\n            const actionButtonText = step.actionTitle || this._translate('actionDefaultTitle', 'Action');\n            const actionHtml =\n              step.action && step.action !== 'none'\n                ? `<div part=\"task-action\" class=\"checklist-task-body-action\" data-action-index=\"${index}\">\n                      <button type=\"button\" class=\"action-button form-send-button\">${actionButtonText}</button>\n                   </div>`\n                : '';\n            const markDoneLabel = this._translate('markAsDone', 'Mark as done');\n            const markDoneHtml =\n              step.allowMarkDone && !isTaskDone\n                ? `<div part=\"task-mark-done\" class=\"checklist-task-body-markdone\" data-markdone-index=\"${index}\">\n                      ${this.getCheckIcon()}\n                      <div class=\"checklist-task-body-markdone-label\">${markDoneLabel}</div>\n                   </div>`\n                : '';\n            const taskClasses = [\n              'checklist-task',\n              isTaskDone ? 'checklist-task--done' : '',\n              isActive ? 'checklist-task--active' : '',\n            ]\n              .filter(Boolean)\n              .join(' ');\n            return `\n              <div part=\"task\" class=\"${taskClasses}\" data-task-index=\"${index}\">\n                <div part=\"task-header\" class=\"checklist-task-header\" role=\"button\" aria-expanded=\"${isActive}\" aria-controls=\"task-body-${index}\">\n                  ${badge}\n                  <div part=\"task-header-title\" class=\"checklist-task-header--title\">${stepTitle}</div>\n                  <span part=\"task-header-chevron\" class=\"checklist-task-header--chevron\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                      <polyline points=\"6 9 12 15 18 9\"></polyline>\n                    </svg>\n                  </span>\n                </div>\n                <div part=\"task-body\" class=\"checklist-task-body\" id=\"task-body-${index}\">\n                  <div part=\"task-body-inner\" class=\"checklist-task-body-inner\">\n                    ${\n                      stepDescription\n                        ? `<div part=\"task-body-content\" class=\"checklist-task-body-content\">${stepDescription}</div>`\n                        : ''\n                    }\n                    ${actionHtml}\n                    ${markDoneHtml}\n                  </div>\n                </div>\n              </div>`;\n          })\n          .join('');\n      }\n\n      renderChecklist(data) {\n        if (!this._hasLoaded || !data || !data.outbound) {\n          this._checkSessionAndLoad();\n          return;\n        }\n        const { outbound } = data;\n        const steps = outbound.config?.steps || [];\n        const completedSteps = data.completedSteps || [];\n        const isDone = data.status === 'done' || (steps.length > 0 && completedSteps.length >= steps.length);\n        let content = '';\n        if (isDone) {\n          const successTitle = outbound.config?.successTitle || '';\n          const successMessage = outbound.config?.successMessage || '';\n          if (this.floatingEnabled) {\n            content = this.renderFloatingLauncher(outbound, 'checklist-floating-launcher', true);\n          } else {\n            content = `\n              <div part=\"content\" class=\"checklists-content checklists-content--done\">\n                <div part=\"success-icon\" class=\"checklists-success-icon\">\n                  <span part=\"success-icon-circle\" class=\"checklists-success-icon--circle\">${this.getCheckIcon()}</span>\n                </div>\n                <div part=\"success-title\" class=\"checklists-title\">${successTitle}</div>\n                <div part=\"success-description\" class=\"checklists-description\">${successMessage}</div>\n              </div>`;\n          }\n          if (this.activeStep !== -1) this.activeStep = -1;\n        } else {\n          content = `\n            <div part=\"content\" class=\"checklists-content\">\n              ${!this.floatingEnabled ? this.renderInfoSection(outbound) : ''}\n              ${!this.floatingEnabled ? this.renderProgressSection(steps, completedSteps) : ''}\n              ${this.floatingEnabled ? this.renderFloatingLauncher(outbound) : ''}\n              <div part=\"tasks\" class=\"checklist-tasks\">\n                ${this.floatingEnabled ? this.renderFloatingLauncher(outbound, 'checklist-floating-header') : ''}\n                ${this.renderTasks(steps, completedSteps)}\n              </div>\n            </div>`;\n        }\n\n        const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n        const primaryColor = flowConfig.color ? flowConfig.color : '#485BFF';\n\n        const styles = `\n          <style>\n            :host {\n              display: block;\n              --color-bg: #ffffff;\n              --color-font-title: #1f2937;\n              --color-font-text: #4b5563;\n              --color-font-light: #6b7280;\n              --color-primary: ${primaryColor};\n              --color-primary-light: ${primaryColor}22;\n              --color-primary-contrast: #ffffff;\n              --color-border: #e5e7eb;\n              --color-gray-light: #f3f4f6;\n              --color-gray-lighter: #f9fafb;\n              --color-gray-dark: #6b7280;\n              --color-success: #10b981;\n              --color-success-light: #ffffff;\n              --radius-sm: 4px;\n              --radius-lg: 12px;\n              --radius-full: 9999px;\n              --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n              --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -2px rgba(0, 0, 0, 0.08);\n              --shadow-lg: rgba(0, 0, 0, 0.2) 0px 7px 29px 0px;\n              --animation-duration: 0.2s;\n              --animation-timing: ease-in-out;\n              font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n              box-sizing: border-box;\n            }\n            :host([dark]) {\n              --color-bg: #1f2937;\n              --color-font-title: #f9fafb;\n              --color-font-text: #d1d5db;\n              --color-font-light: #9ca3af;\n              --color-primary: ${primaryColor};\n              --color-primary-light: ${primaryColor}22;\n              --color-primary-contrast: #ffffff;\n              --color-border: #374151;\n              --color-gray-light: #374151;\n              --color-gray-lighter: #111827;\n              --color-gray-dark: #9ca3af;\n              --color-success: #34d399;\n              --color-success-light: #1f2937;\n            }\n            *, *:before, *:after { box-sizing: inherit; }\n            .checklists-content { color: var(--color-font-text); }\n            .checklists-content--done { text-align: center; }\n            .checklists-info { margin-bottom: 24px; text-align: center; }\n            .checklists-title { font-size: 1.25rem; font-weight: 600; margin-bottom: 8px; color: var(--color-font-title); }\n            .checklists-description { font-size: 0.9rem; margin-bottom: 16px; color: var(--color-font-text); line-height: 1.5; }\n            .checklists-sender { display: flex; align-items: center; justify-content: center; gap: 8px; }\n            .checklists-sender img { width: 28px; height: 28px; border-radius: var(--radius-full); object-fit: cover; }\n            .checklists-sender span { font-size: 0.875rem; color: var(--color-font-light); font-weight: 500; }\n            .checklists-success-icon { margin-bottom: 16px; line-height: 0; }\n            .checklists-success-icon--circle { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: var(--radius-full); background-color: var(--color-success); color: var(--color-success-light); font-size: 22px; }\n            .checklist-progress-labels { display: flex; justify-content: space-between; margin-bottom: 8px; }\n            .checklist-progress-label { font-size: 0.75rem; color: var(--color-font-light); font-weight: 500; }\n            .checklist-progress-bar { width: 100%; height: 6px; background-color: var(--color-gray-light); border-radius: var(--radius-full); overflow: hidden; margin-bottom: 20px; }\n            .checklist-progress-bar-progress { height: 100%; background-color: var(--color-primary); transition: width var(--animation-duration) var(--animation-timing); border-radius: var(--radius-full); }\n            .checklist-tasks { display: flex; flex-direction: column; gap: 12px; }\n            .checklist-task { border: 1px solid var(--color-border); border-radius: var(--radius-lg); background-color: var(--color-bg); box-shadow: var(--shadow-sm); overflow: hidden; transition: background-color var(--animation-duration) var(--animation-timing), border-color var(--animation-duration) var(--animation-timing); }\n            .checklist-task-header { display: flex; align-items: center; padding: 15px 20px; cursor: pointer; gap: 12px; position: relative; }\n            .checklist-task-header:hover { background: var(--color-gray-lighter); }\n            .checklist-task-header:hover .checklist-task-header--chevron {\n              color: var(--color-font-title);\n            }\n            .checklist-task-header--badge { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: var(--radius-full); background-color: var(--color-primary-light); color: var(--color-primary); font-size: 0.875rem; font-weight: 600; flex-shrink: 0; transition: background-color var(--animation-duration) var(--animation-timing), color var(--animation-duration) var(--animation-timing); line-height: 1; }\n            .checklist-task-header--badge svg { width: 16px; height: 16px; }\n            .checklist-task-header--title { flex-grow: 1; font-size: 0.9rem; font-weight: 500; color: var(--color-font-title); transition: font-weight var(--animation-duration) var(--animation-timing), color var(--animation-duration) var(--animation-timing), text-decoration var(--animation-duration) var(--animation-timing); }\n            .checklist-task-header--chevron { color: var(--color-font-light); transition: transform var(--animation-duration) var(--animation-timing); flex-shrink: 0; margin-left: auto; }\n            .checklist-task-header--chevron svg { display: block; width: 18px; height: 18px; }\n            .checklist-task-body {\n              overflow: hidden;\n              transition: max-height var(--animation-duration) var(--animation-timing), opacity var(--animation-duration) var(--animation-timing);\n              max-height: 0;\n              opacity: 0;\n            }\n            .checklist-task--active .checklist-task-body {\n              max-height: var(--task-body-active-height, 200px);\n              opacity: 1;\n            }\n            .checklist-task-body-inner { padding: 4px 16px 20px 60px; font-size: 0.875rem; color: var(--color-font-text); line-height: 1.5; }\n            .checklist-task-body-content { margin-bottom: 16px; }\n            .checklist-task-body-content p:first-child { margin-top: 0; }\n            .checklist-task-body-content p:last-child { margin-bottom: 0; }\n            .checklist-task-body-content iframe { width: 100%; height: 315px; object-fit: contain; border: none; }\n            .checklist-task-body-action { margin-top: 16px; }\n            .action-button { display: inline-flex; align-items: center; justify-content: center; background-color: var(--color-primary); color: var(--color-primary-contrast); padding: 10px 18px; font-size: 0.875rem; font-weight: 500; border-radius: var(--radius-lg); border: none; text-align: center; cursor: pointer; transition: background-color var(--animation-duration) var(--animation-timing), box-shadow var(--animation-duration) var(--animation-timing); box-shadow: var(--shadow-sm); }\n            .action-button:hover { background-color: color-mix(in srgb, var(--color-primary) 90%, black); box-shadow: var(--shadow-md); }\n            .action-button:focus { outline: 2px solid color-mix(in srgb, var(--color-primary) 50%, transparent); outline-offset: 2px; }\n            .checklist-task-body-markdone { margin-top: 20px; border-top: 1px solid var(--color-border); padding: 16px 0 0px 0; display: flex; align-items: center; cursor: pointer; color: var(--color-primary); transition: color var(--animation-duration) var(--animation-timing); }\n            .checklist-task-body-markdone:hover { color: color-mix(in srgb, var(--color-primary) 80%, black); }\n            .checklist-task-body-markdone svg { width: 18px; height: 18px; margin-right: 6px; flex-shrink: 0; font-size: 18px; }\n            .checklist-task-body-markdone-label { font-size: 0.875rem; font-weight: 500; line-height: 1; }\n            .checklist-task--active .checklist-task-header--title { font-weight: 600; }\n            .checklist-task--active .checklist-task-header--chevron { transform: rotate(180deg); }\n            .checklist-task--active .checklist-task-header:hover { background: linear-gradient(180deg, var(--color-gray-lighter), transparent); }\n            .checklist-task--done { background-color: var(--color-gray-lighter); border-color: var(--color-gray-light); box-shadow: none; }\n            .checklist-task--done .checklist-task-header--badge { background-color: var(--color-success); color: var(--color-success-light); }\n            .checklist-task--done .checklist-task-header--title { color: var(--color-font-light); }\n            .checklist-task--done .checklist-task-body-inner { color: var(--color-font-light); }\n            .checklist-task--done .checklist-task-header--title {\n              text-decoration: line-through;\n            }\n  \n            /* -------------------------\n               Floating style addition\n               Only applies if floating=\"true\"\n               ------------------------- */\n            :host([floating=\"true\"]) .checklists-content {\n              position: relative;\n            }\n            :host([floating=\"true\"]) .checklist-tasks {\n              position: absolute;\n              bottom: 0;\n              left: 0;\n              z-index: 1000;\n              max-height: 90vh;\n              display: none;\n              padding: 0px;\n              min-width: min(380px, 90vw);\n              background-color: var(--color-bg);\n              border-radius: var(--radius-lg);\n              box-shadow: var(--shadow-lg);\n              overflow: hidden;\n            }\n            :host([floating=\"true\"]) .checklist-task {\n              border-radius: 0px;\n              border: none;\n              box-shadow: none;\n              border-bottom: 1px solid var(--color-border);\n            }\n            :host([floating=\"true\"]) .checklist-task:last-child {\n              border-bottom: none;\n            }\n            :host([floating=\"true\"]) .checklist-task--done {\n              background-color: transparent;\n            }\n            :host([floating=\"true\"]) .checklist-task-header:hover {\n              background: linear-gradient(180deg, var(--color-gray-lighter), transparent);\n            }\n  \n            /* -------------------------\n               Floating Launcher Styles\n               ------------------------- */\n            .checklist-floating-launcher {\n              padding: 12px;\n              background-color: var(--color-bg);\n              border: 1px solid var(--color-border);\n              border-radius: var(--radius-lg);\n              box-shadow: var(--shadow-md);\n              transition: transform 0.3s ease;\n              cursor: pointer;\n            }\n            .checklist-floating-launcher--done {\n              cursor: default !important;\n            }\n            .checklist-floating-header {\n              padding: 20px;\n              padding-bottom: 16px;\n              border-bottom: 1px solid var(--color-border);\n              cursor: pointer;\n            }\n            .checklist-floating-header:hover .floating-icon,\n            .checklist-floating-launcher:hover .floating-icon {\n              color: var(--color-font-title);\n            }\n            .floating-header {\n              display: flex;\n              align-items: center;\n              justify-content: flex-start;\n            }\n            .floating-title {\n              font-size: 0.875rem;\n              font-weight: 600;\n              color: var(--color-font-title);\n              max-width: calc(100% - 32px);\n              display: -webkit-box;\n              -webkit-line-clamp: 1;\n              -webkit-box-orient: vertical;\n              overflow: hidden;\n            }\n            .floating-subtitle {\n              font-size: 0.875rem;\n              color: var(--color-font-text);\n              margin-top: 8px;\n              max-width: 100%;\n              display: -webkit-box;\n              -webkit-line-clamp: 1;\n              -webkit-box-orient: vertical;\n              overflow: hidden;\n            }\n            .floating-circular-progress {\n              width: 26px;\n              height: 26px;\n              margin-right: 6px;\n            }\n            .floating-circular-progress svg {\n              width: 100%;\n              height: 100%;\n              transform: rotate(-90deg);\n            }\n            .floating-circular-progress .track {\n              fill: none;\n              stroke: var(--color-gray-light);\n              stroke-width: 3;\n            }\n            .floating-circular-progress .progress {\n              fill: none;\n              stroke: var(--color-primary);\n              stroke-width: 3;\n              stroke-linecap: round;\n              transition: stroke-dashoffset var(--animation-duration) var(--animation-timing);\n            }\n            .checklist-floating-launcher--done .floating-circular-progress .progress {\n              stroke: var(--color-success);\n            }\n            .floating-icon {\n              margin-left: auto;\n              color: var(--color-font-light);\n            }\n          </style>\n        `;\n        this.shadowRoot.innerHTML = styles + content;\n        this.addTaskEventListeners();\n        if (this.floatingEnabled) {\n          this.addFloatingClickListeners();\n        }\n        if (this.activeStep !== -1) {\n          this.toggleTask(this.activeStep, true);\n        }\n      }\n\n      updateActiveTaskMaxHeight() {\n        if (this.activeStep !== -1) {\n          const taskBodyInner = this.shadowRoot.querySelector(\n            `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body-inner`\n          );\n          const container = this.shadowRoot.querySelector(\n            `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body`\n          );\n          if (taskBodyInner && container) {\n            const height = taskBodyInner.offsetHeight;\n            container.style.setProperty('--task-body-active-height', `${height}px`);\n          }\n        }\n      }\n\n      // --- Event Listener Setup ---\n      addTaskEventListeners() {\n        const tasks = this.shadowRoot.querySelectorAll('.checklist-task');\n        tasks.forEach((task) => {\n          const header = task.querySelector('.checklist-task-header');\n          const index = parseInt(task.getAttribute('data-task-index'), 10);\n          if (header) {\n            header.addEventListener('click', () => {\n              const newActiveStep = this.activeStep === index ? -1 : index;\n              this.setActiveStep(newActiveStep);\n            });\n          }\n          const markDoneBtn = task.querySelector('.checklist-task-body-markdone');\n          if (markDoneBtn) {\n            markDoneBtn.addEventListener('click', (e) => {\n              e.stopPropagation();\n              if (!this.checklistData?.outbound?.config?.steps) return;\n              const step = this.checklistData.outbound.config.steps[index];\n              if (!step) return;\n              const previouslyActiveStep = this.activeStep;\n              if (!this.checklistData.completedSteps) this.checklistData.completedSteps = [];\n              if (!this.checklistData.completedSteps.includes(step.id)) {\n                this.checklistData.completedSteps.push(step.id);\n                const allSteps = this.checklistData.outbound.config.steps;\n                let nextActiveStep = -1;\n                if (previouslyActiveStep === index) {\n                  for (let i = index + 1; i < allSteps.length; i++) {\n                    if (!this.checklistData.completedSteps.includes(allSteps[i].id)) {\n                      nextActiveStep = i;\n                      break;\n                    }\n                  }\n                  this.setActiveStep(nextActiveStep);\n                }\n                // Preserve the state of the floating modal.\n                setTimeout(() => {\n                  let isModalOpen = false;\n                  if (this.floatingEnabled) {\n                    const tasksModal = this.shadowRoot.querySelector('.checklist-tasks');\n                    isModalOpen = tasksModal && tasksModal.style.display === 'block';\n                  }\n                  this.renderChecklist(this.checklistData);\n                  if (this.floatingEnabled && isModalOpen) {\n                    const tasksModal = this.shadowRoot.querySelector('.checklist-tasks');\n                    if (tasksModal) tasksModal.style.display = 'block';\n                  }\n                }, 300);\n                const updateData = { checkedStep: step.id };\n                if (allSteps.length > 0 && this.checklistData.completedSteps.length >= allSteps.length) {\n                  this.checklistData.status = 'done';\n                  updateData.status = 'done';\n                }\n                this.updateChecklist(this.checklistData.id, updateData);\n              }\n            });\n          }\n          const actionBtn = task.querySelector('.checklist-task-body-action .action-button');\n          if (actionBtn) {\n            actionBtn.addEventListener('click', (e) => {\n              e.stopPropagation();\n              if (!this.checklistData?.outbound?.config?.steps || typeof Gleap === 'undefined') return;\n              const step = this.checklistData.outbound.config.steps[index];\n              if (!step || !step.action || step.action === 'none') return;\n              try {\n                if (step.action === 'BOT') Gleap.startBot(step.botId);\n                else if (step.action === 'CUSTOM_ACTION') Gleap.triggerCustomAction(step.actionBody);\n                else if (step.action === 'REDIRECT_URL') {\n                  e.preventDefault();\n                  e.stopPropagation();\n                  e.stopImmediatePropagation();\n                  Gleap.openURL(step.actionBody, !!step.actionOpenInNewTab);\n                } else if (step.action === 'FEEDBACK_FLOW') Gleap.startFeedbackFlow(step.formId);\n                else if (step.action === 'NEWS_ARTICLE') Gleap.openNewsArticle(step.articleId);\n                else if (step.action === 'HELP_ARTICLE') Gleap.openHelpCenterArticle(step.articleId);\n                else if (step.action === 'CHECKLIST') Gleap.startChecklist(step.outboundId, true, step?.sharedKey);\n                else if (step.action === 'PRODUCT_TOUR') Gleap.startProductTour(step.productTourId, true);\n              } catch (gleapError) {}\n            });\n          }\n        });\n      }\n\n      // --- Animation and State Management ---\n      setActiveStep(index) {\n        const previousActiveStep = this.activeStep;\n        this.activeStep = index;\n        const tasksToToggle = [];\n        if (previousActiveStep !== -1 && previousActiveStep !== this.activeStep) {\n          tasksToToggle.push({ index: previousActiveStep, open: false });\n        }\n        if (this.activeStep !== -1 && this.activeStep !== previousActiveStep) {\n          tasksToToggle.push({ index: this.activeStep, open: true });\n        }\n        tasksToToggle.forEach(({ index, open }) => {\n          this.toggleTask(index, open);\n        });\n      }\n\n      toggleTask(index, forceOpen = null) {\n        const taskElement = this.shadowRoot.querySelector(`.checklist-task[data-task-index=\"${index}\"]`);\n        if (!taskElement) return;\n        const header = taskElement.querySelector('.checklist-task-header');\n        if (!header) return;\n        const isOpen = taskElement.classList.contains('checklist-task--active');\n        const shouldOpen = forceOpen !== null ? forceOpen : !isOpen;\n        if (shouldOpen) {\n          if (!isOpen) {\n            taskElement.classList.add('checklist-task--active');\n            header.setAttribute('aria-expanded', 'true');\n          }\n          const taskBodyInner = taskElement.querySelector('.checklist-task-body-inner');\n          if (taskBodyInner) {\n            const height = taskBodyInner.offsetHeight;\n            const taskBody = taskElement.querySelector('.checklist-task-body');\n            if (taskBody) {\n              taskBody.style.setProperty('--task-body-active-height', `${height}px`);\n            }\n          }\n          // Recalculate height when iframes finish loading\n          const iframes = taskElement.querySelectorAll('iframe');\n          iframes.forEach((iframe) => {\n            if (!iframe._heightListenerAdded) {\n              iframe._heightListenerAdded = true;\n              iframe.addEventListener('load', () => {\n                if (this.activeStep === index) {\n                  this.updateActiveTaskMaxHeight();\n                }\n              });\n            }\n          });\n        } else if (!shouldOpen && isOpen) {\n          taskElement.classList.remove('checklist-task--active');\n          header.setAttribute('aria-expanded', 'false');\n        }\n      }\n    }\n\n    if (typeof customElements !== 'undefined' && !customElements.get('gleap-checklist')) {\n      customElements.define('gleap-checklist', GleapChecklist);\n    }\n  }\n};\n","import Gleap from './Gleap';\n\nexport default Gleap;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","GleapFeedbackButtonManager","_classCallCheck","_defineProperty","value","this","instance","feedbackButton","remove","buttonHidden","lastButtonIcon","injectedFeedbackButton","show","getInstance","updateFeedbackButtonState","GleapNotificationManager","updateContainerStyle","frameManager","GleapFrameManager","isOpened","redDotClass","existingDot","querySelector","concat","dot","document","createElement","className","appendChild","hideWidget","updateRedDot","showingRedDot","setAppMode","showWidget","_this","elem","addEventListener","feedbackButtonPressed","body","count","notificationBadge","notificationHiddenClass","classList","innerText","add","updateFeedbackButtonText","injectFeedbackButton","flowConfig","GleapConfigManager","getFlowConfig","feedbackButtonPosition","FEEDBACK_BUTTON_CLASSIC","FEEDBACK_BUTTON_CLASSIC_BOTTOM","FEEDBACK_BUTTON_CLASSIC_LEFT","widgetButtonText","GleapAiChatbarManager","updateUIVisibility","buttonIcon","buttonLogo","loadIcon","setAttribute","GleapTranslationManager","isRTLLayout","innerHTML","hideButton","FEEDBACK_BUTTON_NONE","FEEDBACK_BUTTON_BOTTOM_LEFT","appMode","hideForGuests","GleapSession","isUser","calculateShadeColor","col","amt","replace","length","_col$match2","_slicedToArray","match","r","g","b","_ref","parseInt","Math","max","min","toString","rr","gg","bb","calculateContrast","hex","substr","name","color","GleapNetworkIntercepter","Date","now","loadAllResources","contentType","toLocaleLowerCase","supportedContentTypes","i","includes","requests","JSON","parse","stringify","values","externalRequests","filters","request","headers","j","payload","payloadObj","e","response","responseText","data","window","performance","resources","getEntriesByType","resource","indexOf","initiatorType","find","url","push","type","date","startTimestamp","startTime","duration","round","exp","blacklist","defaultBlacklist","filter","maxRequests","stopped","keys","keysToRemove","slice","bbRequestId","startDate","getTime","text","size","TextEncoder","encode","encodeURI","s","split","Blob","getTextContentSize","undefined","TextDecoder","_typeof","ArrayBuffer","isView","decode","payloadText","cleanupPayload","cleanupContentSize","initialized","self","interceptNetworkRequests","onFetch","params","fromEntries","entries","method","preparePayload","cleanRequests","onFetchLoad","req","status","statusText","calcRequestTime","isContentTypeSupported","then","err","onFetchFailed","onOpen","args","onSend","requestHeaders","onError","currentTarget","onLoad","target","responseType","callback","originalFetch","open","XMLHttpRequest","send","gleapSetRequestHeader","setRequestHeader","header","requestId","arguments","bind","apply","fetch","clone","blob","Promise","resolve","reject","fr","FileReader","onload","evt","result","onerror","readAsText","resizeImage","base64Str","maxWidth","maxHeight","isJPEG","img","Image","src","canvas","MAX_WIDTH","MAX_HEIGHT","width","height","getContext","drawImage","toDataURL","MOBILE_UA_REGEX","getDeviceType","isMobile","nav","navigator","userAgentData","mobile","test","userAgent","vendor","maxTouchPoints","matchMedia","coarsePointer","matches","gleapDataParser","String","truncateString","str","num","removeSubDomain","v","parts","is2ndLevelDomain","secondLevel","join","loadFromGleapCache","cachedData","localStorage","getItem","saveToGleapCache","k","setItem","removeItem","runFunctionWhenDomIsReady","readyState","RequestStatus","ChecklistNetworkManager","Map","validationCache","clear","fetchCache","validationRequests","fetchRequests","gleapSessionInstance","session","lang","getActiveLanguage","gleapId","gleapHash","apiUrl","xhr","injectSession","onreadystatechange","responseData","error","outboundId","sharedKey","cacheKey","_createCacheKey","cachedResult","internalId","has","_getApiUrl","Error","set","_getQueryParams","requestPromise","_makeRequest","id","_this2","floor","createCoords","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","param","placement","axis","getAxisLength","yAxisSides","Set","getAlignmentAxis","alignment","lrPlacement","rlPlacement","tbPlacement","btPlacement","getOppositeAxisPlacements","flipAlignment","direction","rtl","list","side","isStart","getSideList","map","getOppositePlacement","padding","expandPaddingObject","rect","computeCoordsFromPlacement","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","originSides","hasWindow","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","invalidOverflowDisplayValues","isOverflowElement","overflow","overflowX","overflowY","display","tableElements","isTableElement","topLayerSelectors","isTopLayer","some","selector","_e","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","css","containerType","backdropFilter","willChange","contain","CSS","supports","lastTraversableNodeNames","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","scrollX","scrollY","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","visualViewport","parent","getPrototypeOf","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getWindowScrollBarX","leftScroll","getHTMLOffset","scroll","htmlRect","SCROLLBAR_MAX","absoluteOrFixed","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","compatMode","marginLeft","marginRight","clippingStableScrollbarWidth","abs","getViewportRect","scrollWidth","scrollHeight","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","setLeftRTLScrollbarOffset","offsetRect","htmlOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","svgOffsetParent","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cache","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","floatingDimensions","getClientRects","Array","from","isRTL","rectsAreEqual","a","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","root","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","elementRectForRootMargin","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","offset","arrow","alignmentOffset","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","enabled","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","initialSideAxis","isBasePlacement","oppositePlacement","getExpandedPlacements","hasFallbackAxisSideDirection","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","d","reset","resetPlacement","sort","_overflowsData$filter2","currentSideAxis","acc","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","_platform$detectOverf","nextX","nextY","computePosition","checkPageFilter","currentUrl","pageFilter","pageFilterType","removeTrailingSlash","isMatchingUrl","regex","startsWith","substring","regexPattern","RegExp","generateRegex","matched","endsWith","checkPageRules","action","rules","pageRules","GleapTooltipManager","WeakMap","tooltip","hasAttribute","nextId","tooltipElem","mode","hotspotContainer","canEmbed","firstChild","insertBefore","nextSibling","hotspot","icon","animated","repositionHotspot","elementToTooltipMap","floatingUIInstance","createTooltip","elementToFloatingUIMap","filteredTooltips","getFilteredTooltips","checkForTooltips","tooltips","location","href","page","pageType","querySelectorAll","linkTooltip","sessionInstance","http","sdkKey","console","updateFilteredTooltips","nodeType","ELEMENT_NODE","checkNodeTooltip","childNodes","childNode","processNodeInsertion","_this3","_this4","time","timeout","handleResizeThrottled","updateHotspotPositions","context","_toConsumableArray","observer","MutationObserver","mutations","lastUrl","mutation","addedNodes","removedNodes","floatingUI","childList","subtree","attributes","attributeFilter","_this5","tooltipText","tooltipData","hideTimeout","arrowEl","posX","shift","assign","style","arrowPos","transform","visibility","opacity","pointerEvents","hide","voidElements","tagName","resizeListener","anchor","removeAttribute","tooltipId","getAttribute","posY","offsetX","offsetY","elementRect","range","createRange","selectNodeContents","fixedWidth","anchorRect","tooltipSize","email","userId","phone","onSessionReady","ready","onSessionReadyListener","attemp","retry","GleapEventManager","notifyEvent","useCookies","cookie","eraseGleapCookie","sendMessage","clearAllNotifications","setNotificationCount","GleapBannerManager","removeBannerUI","GleapModalManager","hideModal","isNaN","newTimeout","pow","startSession","_this$session","sessionChanged","days","expires","setTime","toUTCString","setGleapCookie","encodeURIComponent","clearCache","GleapStreamedEvent","restart","tooltipManager","destroy","load","dispatchEvent","CustomEvent","notifySessionReady","sessionCookie","nameEQ","ca","c","charAt","getGleapCookie","sessionData","decodeURIComponent","validateSession","cachedSession","clearSession","deviceType","userData","checkIfSessionDataNeedsUpdate","userDataKeys","userDataKey","customData","setOnSessionReady","_objectSpread","sdkVersion","SDK_VERSION","ws","userHash","checkIfSessionNeedsUpdate","dataToSend","tourId","tourData","_window","passedPageFilter","sendSessionUpdate","streamEvents","mainLoopTimeout","runEventStreamLoop","streamingEvents","errorCount","streamedEventArray","socket","OPEN","sessionDuration","GleapMetaDataManager","getSessionDuration","events","opened","handleOpenBound","handleOpen","handleErrorBound","handleError","handleMessageBound","handleMessage","handleCloseBound","handleClose","connectionTimeout","pingWS","clearInterval","close","cleanupWebSocket","connectedWebSocketGleapId","WebSocket","wsApiUrl","event","setInterval","processMessage","initWebSocket","message","GleapAdminManager","_ai$e","_message$data","u","ai","listOfActionsWhereIgnoreOpened","filteredActions","_action$actionType","actionType","Gleap","performActions","setConfig","placeholder","p","quickActions","_checklistData$comple","_checklistData$comple2","checklistData","completedSteps","completedStepsBefore","_loop","_checklistData$steps","step","steps","stepIndex","checklistId","stepId","detail","eventArray","cleanupMainLoop","trackInitialEvents","startPageListener","resetErrorCountLoop","logEvent","logCurrentPage","disablePageTracking","log","eventMaxLength","parseIntWithDefault","val","def","parsed","onConfigLoaded","onConfigLoadedListener","aiTools","sendConfigUpdate","cachedConfig","applyConfig","loadConfigFromServer","_unused","clearGleapCache","setStyles","headerColor","buttonColor","backgroundColor","borderRadius","buttonX","buttonY","applyStylesFromConfig","enableWebReplays","GleapReplayRecorder","stop","enableNetworkLogs","setLoadAllResources","sendNetworkResources","networkLogPropsToIgnore","setFilters","networkLogBlacklist","setBlacklist","updateRTLSupport","enableShortcuts","aiBar","notifyConfigLoaded","_regeneratorRuntime","t","n","Symbol","iterator","asyncIterator","toStringTag","define","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","reverse","pop","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","_asyncToGenerator","documentToHTML","doctype","publicId","systemId","outerHTML","loadCSSUrlResources","basePath","remote","asyncFn","matchedData","matchedUrl","replaceAll","resourcePath","URL","fetchCSSResource","resourceData","promises","_len","_key","promise","all","reader","onloadend","readAsDataURL","fetchItemResource","isBlacklisted","warn","progressResource","replaceStyleNodes","styleSheet","cssTextContent","styleId","cloneTargetNode","ownerNode","replacementNode","head","styleNode","cssText","createTextNode","linkNode","rel","media","getTextContentFromStyleSheet","cssRules","cssRuleItem","depth","sanitizeCSSBraces","downloadAllCSSUrlResources","basePathURL","styleSheets","mediaText","baseTags","getElementsByTagName","origin","lastIndexOf","replacedStyle","styletext","stylesheet","results","prepareRemoteData","dom","imgItems","imgItemsPromises","item","downloadAllImages","handleAdoptedStyleSheets","shadowNodeId","adoptedStyleSheets","shadowStyleNode","firstElementChild","extractFinalCSSState","getAnimations","animations","finalCSSState","animation","_animation$effect","keyframes","effect","getKeyframes","finalKeyframe","property","deepClone","_callee3","cloneNode","fragment","clonedHead","_context3","_ref2","_callee2","shadowRoot","walkTree","webAnimations","boundingRect","resizedImage","_boundingRect","rootShadowNodeId","_context2","_ref3","_callee","nextn","nextp","innerShadowRoot","_context","t0","nextElementSibling","_x5","_x6","_x7","HTMLCanvasElement","toUpperCase","contains","checked","_x2","_x3","_x4","createDocumentFragment","_x","prepareScreenshotData","_ref4","_callee4","styleTags","linkImportElems","referenceNode","scriptElems","existingBasePath","baseElems","baseUrl","newBaseUrl","baseNode","dialogElems","bbElems","_context4","innerWidth","innerHeight","_x8","_x9","_createForOfIteratorHelper","allowArrayLike","it","isArray","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","normalCompletion","didErr","_e2","arr","len","arr2","_defineProperties","props","descriptor","_toPropertyKey","toPrimitive","_toPrimitive","GleapScreenRecorder","rerender","permissionErrorText","Constructor","MAX_RECORD_TIME","mediaDevices","getDisplayMedia","available","RERENDER_DELAY","protoProps","staticProps","_uploadScreenRecording","_startAudioRecording","_startScreenRecording","_step","_iterator","MIME_TYPES","MediaRecorder","isTypeSupported","stream","getTracks","track","_","tracks","validTracks","MediaStream","videoTracks","getVideoTracks","audioTracks","getAudioTracks","displayStream","composed","isRecording","video","ideal","screen","frameRate","IDEAL_FRAME_RATE","MAX_FRAME_RATE","displaySurface","audio","selfBrowserSurface","_displayStream","_displayVideoTrack","getFirstVideoTrack","audioMuted","startAudioRecording","audioAvailable","createMediaStream","handleRecord","alert","mediaRecorder","recordingTimer","stopStreamTracks","_micStream","voiceStream","micTrack","_composed","getUserMedia","echoCancellation","noiseSuppression","autoGainControl","getFirstAudioTrack","videoEl","SELECTORS","PREVIEW_VIDEO","file","recordedChunks","mimeType","getSupportedMimeType","recordTime","timerLabel","TIMER_LABEL","remainingTime","maxRecordTime","formatTime","stopScreenRecording","TIMER_UPDATE_INTERVAL","ondataavailable","videoTrack","onended","prepareRecording","onstop","CHUNK_INTERVAL","completeBlob","extension","File","previewVideoElement","createObjectURL","screenRecordingData","formData","FormData","append","fileUrl","GleapFeedback","priority","isSilent","excludeData","spamToken","gleapInstance","GleapCustomDataManager","getCustomData","metaData","getMetaData","consoleLog","GleapConsoleLogManager","getLogs","networkLogs","getRequests","customEventLog","getEventArray","ticketAttributes","getTicketAttributes","dataPromises","webReplay","getGlobalDataItem","isLiveSite","recordingUrlPromise","uploadScreenRecording","recordingUrl","screenRecordingUrl","screenshot","screenshotDataPromise","isLiveMode","screenshotData","snapshotPosition","feedbackData","outbound","tags","GleapTagManager","getTags","keysToExclude","keyToExclude","takeSnapshot","getData","feedback","newTab","newWindow","focus","cmp_block_ignoredomains","injectedFrame","autoWhiteListCookieManager","frameUrl","gleapFrameContainer","gleapFrame","updateFrameStyle","showFrameContainer","closeElement","surveyStyle","extendedStyle","surveyFullStyle","classicStyle","classicStyleLeft","modernStyleLeft","noButtonStyleLeft","allStyles","styleToApply","startCommunication","appHeight","setProperty","handler","urlHandler","innerContainer","escListener","widgetOpened","markerManager","showLoader","loadingClass","disableBGFade","disableBGGradient","updateUI","workThroughQueue","setGlobalDataItem","updateWidgetStatus","registerEscListener","isSurvey","updateNotificationBadge","runWidgetShouldOpenCallback","injectFrame","isWidgetOpen","resetRoutes","hideMarkerManager","reloadNotificationsFromCache","unregisterEscListener","queue","comReady","contentWindow","postMessage","getSession","getAiTools","overrideLanguage","getOverrideLanguage","GleapMarkerManager","success","workQueue","_this6","addMessageListener","GleapAudioManager","ping","showImage","ticketData","frameHeight","_data$data","startProductTour","GleapCustomActionManager","triggerCustomAction","shareToken","_checklistData$outbou","_checklistData$outbou2","_data$data2","_checklistData2$outbo","sendingFeedback","feedbackType","sendFeedback","reportedBy","trackEvent","showDrawingScreen","bannerUrl","listeners","appVersionCode","appBuildNumber","sessionStart","nameOffset","verOffset","ix","nAgt","browserName","appName","fullVersion","appVersion","majorVersion","OSName","browser","systemName","buildVersionNumber","releaseVersionNumber","devicePixelRatio","screenWidth","screenHeight","language","userLanguage","sdkType","environment","logArray","disabled","originalConsoleLog","logLevel","logMaxLength","addLog","origConsole","addLogWithArgs","GleapClickListener","protocol","preventDefault","handleGleapLink","elementId","elementClass","elemId","elemClass","elementTag","htmlPre","htmlPost","getDOMElementDescription","takeCurrentReplay","eventListeners","eventListener","eventName","customAction","customActionCallbacks","_a","__defProp","__publicField","__defNormalProp","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","globalThis","Zone","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","iframeEl","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","n2","parentElement","textContent","other","getRootNode","selectors","mutationObserver","patch","source","replacement","original","wrapped","defineProperties","__rrweb_original__","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","sheetHref","baseURI","stringifiedRules","rule2","stringifyRule","isCSSImportRule","importStringified","statement","layerName","supportsText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","getId","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","delete","hasNode","node2","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","path","baseURL","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","stack","part","normalizeCssString","_testNoPxNorm","markCssSplits","childNodes2","splits","iterCount","cssTextNorm","normFactor","i2","textContentNorm","jLimit","startSubstring","cssNormSplits","splitNorm","prevTextContent","prevMinLength","normPart","splitCssText","_id","tagNameRegex","IGNORED_NODE","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","trim","getHref","isSVGElement","ownerSVGElement","customHref","a2","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","needMaskingText","maskTextClass","maskTextSelector","closest","e2","serializeNode","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","Document","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","attr","_cssText","sheet","selected","rr_open_mode","__context","ctx","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","class","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","slimDOMDefaults","_slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaVerification","headMetaAuthorship","headMetaDescKeywords","headTitleMutations","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","as","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","plugin22","super","reason","plugin","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","aside","lines","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","atrule","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","last","child","before","decl","string","important","own","first","root2","rawCache","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","rule","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","Node$4$1","defaults","addToError","postcssNode","input","insertAfter","overrides","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","replaceWith","bookmark","foundSelf","result2","toJSON","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","proxyOf","node$1","Node$3$1","Declaration$4$1","variable","declaration$1","nonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","sourceContentFor","json","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","fileURL","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","cb","exist","existIndex","splice","sample","rebuild","prepend","unshift","removeAll","replaceValues","pattern","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","doubleColon","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","helpers","postcss","plugins","processing","runAsync","onRejected","catch","onFinally","getAsyncError","postcssVersion","prepareVisitors","version","hasListener","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","process","use","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childIterator","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","capture","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","trailing","hookSetter","isRevoked","receiver","nowTimestamp","getWindowScroll","_d","scrollingElement","pageXOffset","pageYOffset","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isIgnored","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","genAdds","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_mirror2","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","attributeOldValue","characterData","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","CSSStyleDeclaration","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","setter","encodedJs","WorkerWrapper","objURL","webkitURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r2","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","month","search","tel","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","customOptions","stopFunction","ContextMenu","DblClick","Focus","Blur","rrwebEvent","stringifiedData","dataURIRegex","matchAll","ensureMaxMessageSize","bufferSize","ScreenDrawer","svgElement","minHeight","mouseDown","colorpicker","fadeOutToolbar","tool","mouseDownPen","mouseDownRect","mouseMove","mouseMovePen","mouseMoveRect","mouseUp","fadeInToolbar","mouseUpPen","mouseUpRect","appendToBuffer","getMousePosition","updateSvgPath","w","startPoint","setAttributeNS","createElementNS","strokeWidthRect","appendPathToSvg","strokeWidth","pt","strPath","touches","totalX","totalY","getAveragePoint","tmpPath","pathBuffer","fadeTarget","GleapScrollStopper","supportsPassive","wheelOpt","scrollDisabled","wheelEvent","preventDefaultForScrollKeys","keyCode","showWidgetUI","formKey","dirty","dialogUI","enableScroll","screenRecorder","unregisterListeners","cleanupMousePointer","screenDrawer","dialog","captureSVG","videoPreviewContainer","dismissUI","colorPicker","borderLayer","captureEditor","dragCursor","setMouseMove","mouseMoveEventHandler","touchMoveEventHandler","dragHandle","dragStart","drag","dragEnd","bugReportingEditor","translateText","pageLeaveListener","isEscape","isEnter","dismiss","showNextStep","returnValue","registerListeners","hideWidgetUI","createEditorUI","setupMousePointer","disableScroll","setupScreenRecording","captureScreenDrawerRerender","setupColorPicker","setupToolbar","selectedColor","colorItems","colorItem","hexColor","onclick","setColor","setPenColor","currentX","currentY","initialX","initialY","toolbar","isDragging","xOffset","yOffset","_getTransformValues","matrix","DOMMatrix","m41","m42","getTransformValues","nextButton","chooseTool","toolbarItem","toolbarTools","setTool","svgClone","toolbarItems","_loop2","toggleAudio","startScreenRecording","removeLastAddedPathFromSvg","itemInactiveClass","screenRecordingTooltip","audioRecordingTooltip","recordingClass","notRecordingClass","clearPreview","captureRenderer","penTips","fill","staticTranslation","staticTranslations","vars","template","localizationOptions","htmlLang","GleapShortcutListener","shortCutListener","char","keyIdentifier","ctrlKey","startFeedbackFlowWithOptions","autostartDrawing","GleapPreFillManager","unreadCount","notificationContainer","notificationsFromCache","unreadNotificationsKey","nots","notification","createdAt","notifications","renderNotifications","updateTabBarNotificationCount","sound","clearElem","currentNewsIndex","newsNotifications","news","otherNotifications","currentIndex","currentNews","newsElem","newsContainerElem","coverImageUrl","newsImageElem","stopPropagation","openNews","newsContentElem","newsTitleElem","getName","descHTML","renderDescription","descElem","paginationElem","pageIndicator","nextBtn","conversation","openConversation","checklist","openChecklist","progress","currentStep","totalSteps","nextStepTitle","sender","profileImageUrl","openNewsArticle","_notification$data","previewText","uiOnly","classLeft","classNoButton","setPlaceholder","setQuickActions","_this$config","inputElement","onMessageSend","arr1","_this$config2","manuallyHidden","aiUIContainer","isHidden","animationTimeouts","arraysEqual","updateQuickActions","quickActionsContainer","actionElement","attachShadow","addStylesToShadow","createUIInShadow","_this$config3","_this$config4","_this$config5","_this$config6","extraClasses","sendButton","setupInputListener","inputText","updateSendButtonState","question","_this$bannerUrl","_this$bannerData","_data$data3","_data$data4","_data$data5","_data$data6","_data$data7","_data$data8","_data$data9","_data$data10","bannerData","format","startBot","botId","startFeedbackFlow","formId","showSurvey","surveyFormat","articleId","openHelpCenterArticle","startChecklist","bannerContainer","gleapBFrame","injectBannerUI","_listenForMessages","modalUrl","_this$modalUrl","_data$data11","modalData","primaryColor","_postMessage","modalContainer","wrapper","modalBackdropClickListener","_this2$modalData$show","_this2$modalData","showCloseButton","frame","_injectModalUI","play","settings","Audio","playPromise","getID","getClassSelectors","getClasses","cl","kCombinations","items","getNthChild","sibling","counter","getTag","isUnique","elems","getAllSelectors","attributesToIgnore","funcs","Tag","NthChild","Attributes","sum","getAttributes","Class","ID","res","testUniqueness","getFirstUnique","getUniqueCombination","combinations","getCombinations","firstUnique","combination","getUniqueSelector","selectorTypes","excludeRegex","foundSelector","elementSelectors","selectorType","Classes","unique","_step2","_options$selectorType","_options$attributesTo","_options$excludeRegex","allSelectors","parents","currentElement","getParents","_iterator2","_i","_allSelectors","ElementOverlay","overlay","background","borderColor","borderStyle","borderWidth","boxSizing","cursor","zIndex","margin","shadowContainer","_createClass","useShadowDOM","usingShadowDOM","setBounds","bounds","ElementPicker","overlayOptions","handleMouseMove","handleClick","tick","addToDOM","removeFromDOM","mouseX","mouseY","tickReq","clickedEl","elementFromPoint","elementFilter","stopImmediatePropagation","onClick","updateTarget","ignoreCursor","newTarget","captureCursor","onHover","GleapAdminHelper","picker","stopPicker","onElementPicked","startPicker","COLLAPSE_UI_ACTIVE_CLASS","FRAME_CONTAINER_ACTIVE_CLASS","isActive","activeClass","gleapCollapseUI","toggle","injectedCollapseUI","toggleCollapseUI","_this$configData","configData","sendMessageToTourBuilder","GleapProductTours","disable","showFeedbackButton","adminHelper","injectCollapseUI","setFrameHeight","gleapAdminDisabled","initAdminHelper","currentPage","click","opener","GleapTours","currentConfig","configure","animate","allowClose","overlayOpacity","smoothScroll","disableActiveInteraction","showProgress","stagePadding","stageRadius","popoverOffset","showButtons","disableButtons","overlayColor","getConfig","easeInOutQuad","elapsed","initialValue","amountOfChange","getFocusableElements","parentEls","focusableQuery","flatMap","parentEl","isParentFocusable","focusableEls","isElementVisible","bringInView","isElementInView","shouldSmoothScroll","scrollIntoView","behavior","hasScrollableParent","currentState","setState","getState","resetState","registeredListeners","listen","hook","trackActiveElement","activeStagePosition","renderOverlay","mountOverlay","stagePosition","overlaySvg","stage","windowX","windowY","svg","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","stagePath","generateStageSvgPathString","createOverlaySvg","onDriverClick","pathElement","stageWidth","stageHeight","limitedRadius","normalizedRadius","highlightBoxX","highlightBoxY","highlightBoxWidth","highlightBoxHeight","highlight","attemptTime","elemObj","refactoredElement","hidePopover","existingDummy","getElementById","mountDummyElement","toElement","toStep","_toStep$disableActive","fromStep","fromElement","isFirstHighlight","isToDummyElement","isFromDummyElement","isAnimatedTour","highlightStartedHook","onHighlightStarted","highlightedHook","onHighlighted","deselectedHook","onDeselected","hasDelayedPopover","isPopoverRendered","isHalfwayThrough","popover","renderPopover","fromDefinition","toDefinition","transitionStage","transferHighlight","refreshActiveHighlight","activeHighlight","activeStep","freshEl","refreshOverlay","repositionPopover","requireRefresh","resizeTimeout","trapFocus","activeElement","popoverEl","firstFocusableEl","lastFocusableEl","shiftKey","previousFocusableEl","nextFocusableEl","onKeyup","shouldPreventDefault","listenerWrapper","listener2","useCapture","title","description","closeButton","footer","footerButtons","previousButton","createPopover","_ref2$nextBtnText","nextBtnText","_ref2$prevBtnText","prevBtnText","_ref2$progressText","progressText","showButtonsConfig","showProgressConfig","showFooter","disabledButtonsConfig","popoverWrapper","customPopoverClass","popoverClass","_b2","onNextClick","onPrevClick","onCloseClick","onPopoverRender","focusableElement","getPopoverDimensions","boundingClientRect","realWidth","realHeight","calculateTopForLeftRight","elementDimensions","popoverDimensions","popoverPadding","popoverArrowDimensions","calculateLeftForTopBottom","_ref3$align","align","_ref3$side","requiredAlignment","requiredSide","topValue","isTopOptimal","bottomValue","isBottomOptimal","leftValue","isLeftOptimal","rightValue","isRightOptimal","noneOptimal","popoverRenderedSide","leftToSet","topToSet","leftValue2","rightToSet","bottomToSet","popoverArrow","popoverWidth","windowWidth","elementWidth","elementLeft","popoverHeight","windowHeight","elementTop","elementHeight","arrowSide","arrowAlignment","renderPopoverArrow","moveNext","activeIndex","nextStepIndex","drive","movePrevious","previousStepIndex","handleArrowLeft","handleArrowRight","_f","_g","_h","hasNextStep","hasPreviousStep","doneBtnText","allowsClosing","progressTextReplaced","configuredButtons","calculatedButtons","withOnDestroyStartedHook","activeOnDestroyed","onDestroyStarted","onDestroyed","interval","destroyEvents","destroyPopover","destroyHighlight","isActiveDummyElement","setSteps","getActiveIndex","isFirstStep","isLastStep","getActiveStep","getActiveElement","getPreviousElement","getPreviousStep","moveTo","localStorageKey","pointerContainerId","copilotJoinedContainerId","_canPlayAudio","GleapCopilotTours","_scrollListeners","_currentAnchor","_currentStep","_scrollDebounceTimer","productTourId","currentActiveIndex","productTourData","updatePointerPosition","onCompleteCallback","scrollableAncestors","getScrollableAncestors","_pointerContainer","yPosition","targetScrollPosition","scrollTo","smoothScrollToY","removeScrollListeners","pollCount","updateFinalPosition","isElementFullyVisible","targetX","targetY","containerWidthSpace","attachScrollListeners","currentAudio","pause","copilotInfoContainer","_GleapConfigManager$g","_GleapConfigManager$g2","_this$productTourData3","_this$productTourData4","_this$productTourData5","_this$productTourData6","_this$productTourData","_this$productTourData2","contrastColor","playVoice","gradient","svgMouse","infoBubble","kaiAvatar","kaiSlug","completeTour","canPlayAudio","supported","setupCopilotTour","showUnmuteModal","showAudioUnmuteModal","renderNextStep","_this$productTourData7","_this$productTourData8","_this$productTourData9","modalOverlay","modal","unmuteModalTitle","unmuteButton","unmuteModalButton","startAnywayButton","unmuteModalContinue","_this7","handleStep","gotToNextStep","_currentStep$inputTyp","proceedClickmode","storeUncompletedTour","inputType","handleInputEvent","_e$target","once","_currentStep$inputVal","inputValue","typeCharacter","wave","performClickAnimation","tempDiv","htmlToPlainText","readTime","wordCount","ceil","estimateReadTime","continueWithNoAudio","voice","elementPromise","maxAttempts","attempts","waitForElement","_self$productTourData","tourType","gleapTourObj","delay","manually","validateProductTour","onComplete","comData","clearUncompletedTour","startWithConfig","unmuted","driverSteps","isClickMode","isInputMode","isInteractionMode","hasSender","videoUrl","senderHTML","firstName","driverStep","buttons","backButton","allowKeyboardControl","nextText","doneText","prevText","_config$state","onDocumentClick","popoverElement","mediaElements","performRequentialRefresh","mediaElement","playingClass","playPauseContainer","videoElement","videoContainer","clickVideo","evnt","gleapTourPopover","_evnt$target","__originalGetContext","GleapChecklist","_HTMLElement","_assertThisInitialized","_callSuper","handleChecklistUpdate","handleSessionUpdate","_networkManager","_boundFloatingLauncherClick","handleFloatingLauncherClick","_boundFloatingCloseClick","handleFloatingCloseClick","_floatingHideTimeout","_inherits","_wrapNativeSuper","_boundHandleChecklistUpdate","_boundHandleSessionUpdate","_boundResizeHandler","handleResize","_checkSessionAndLoad","removeFloatingClickListeners","_hasLoaded","_isSessionReady","_initialActiveSet","renderResponse","updateActiveTaskMaxHeight","loadChecklist","renderChecklist","_getGleapSessionInstance","hasChecklistId","defaultValue","translateTextWithVars","validateChecklist","_isMock","isConnected","fetchChecklist","_isInitialLoad","_this3$checklistData$","_data$outbound","firstIncompleteIndex","findIndex","_session$gleapId","_session$gleapHash","checkedStep","makeRequest","updateData","_this$checklistData$o3","previousCompletedSteps","dataChanged","activeStepCompleted","currentlyActiveStepIndex","_this$checklistData$o","activeStepId","_this$checklistData$o2","nextActiveStep","setActiveStep","tasks","launcher","_outbound$config","_this$checklistData","renderDoneState","progressbarEnabled","doneSteps","_outbound$config2","_outbound$config3","nextIncompleteStep","titleText","_translateWithVars","subject","subtitleText","successTitle","successMessage","circumference","PI","computedOffset","isHeader","toFixed","_outbound$sender","infoEnabled","_translate","senderHtml","progressLabel","durationLabel","isTaskDone","badge","getCheckIcon","stepTitle","stepDescription","actionButtonText","actionTitle","actionHtml","markDoneLabel","markDoneHtml","allowMarkDone","taskClasses","_outbound$config4","_outbound$config5","_outbound$config6","floatingEnabled","renderFloatingLauncher","renderInfoSection","renderProgressSection","renderTasks","addTaskEventListeners","addFloatingClickListeners","toggleTask","taskBodyInner","task","newActiveStep","markDoneBtn","_this5$checklistData","previouslyActiveStep","allSteps","isModalOpen","tasksModal","updateChecklist","actionBtn","_this5$checklistData2","actionBody","openURL","actionOpenInNewTab","gleapError","previousActiveStep","tasksToToggle","forceOpen","taskElement","isOpen","shouldOpen","taskBody","_heightListenerAdded","registerGleapChecklist","setOnMessageSend","askAI","offlineMode","hostname","injectNotificationUI","injectAIUI","actions","_action$pageRules","_action$data","popupType","disableInAppNotifications","showNotification","showBanner","showModal","startProductTourWithConfig","globalData","replayData","getReplayData","setTags","setUrlHandler","tools","setAiTools","updateContainerHeight","initialHeight","fixGleapHeight","checkForUncompletedTour","checkForUrlParams","disableQueryParams","urlParams","URLSearchParams","widget","conversationFlow","startConversation","feedbackFlow","surveyFlow","surveyFlowFormat","tourDelay","identifySession","updateSession","setMaxRequests","setOptions","cleanedData","formPreFill","toggleFeedbackButton","setAppVersionCode","setAppBuildNumber","setBannerUrl","setModalUrl","setTicketAttribute","unsetTicketAttribute","clearTicketAttributes","attachCustomData","setCustomData","removeCustomData","clearCustomData","playSound","showNotificationBadge","notificationInstance","setOverrideLanguage","softReInitialize","updateContact","registerCustomAction","buttonStyle","contrastButtonColor","contrastBackgroundColor","contrastHeaderColor","isDarkMode","headerDarkColor","subTextColor","backgroundColorHover","hoverHoverColor","buttonBorderRadius","containerRadius","chatRadius","formItemBorderRadius","formItemSmallBorderRadius","bottomInfoOffset","colorStyleSheet","zIndexBase","injectStyledCSS","replays","attachments","sendSilentCrashReportWithFormData","silentCrashReportSent","excludeDataCleaned","newFormData","hideBackButton","showBackButton","flow","collectionId","term","networkManager","checkStartUrl","startProductTourConfig","startURL","loadUncompletedTour","GleapActions","GLAction","urlParts","identifier","openHelpCenterCollection"],"sourceRoot":""}