mixpanel-browser 2.62.0 → 2.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"mixpanel-recorder.min.js","sources":["../src/window.js","../node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","../node_modules/rrweb/es/rrweb/packages/types/dist/types.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/error-handler.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","../node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__funcToSource.js","../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createInlineWorkerFactory.js","../node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/processed-node-manager.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../src/promise-polyfill.js","../node_modules/@rrweb/types/dist/types.js","../src/config.js","../src/utils.js","../src/storage/indexed-db.js","../src/gdpr-utils.js","../src/shared-lock.js","../src/storage/local-storage.js","../src/request-queue.js","../src/request-batcher.js","../src/recorder/utils.js","../src/recorder/session-recording.js","../src/recorder/recording-registry.js","../src/recorder/recorder.js","../src/recorder/index.js"],"sourcesContent":["// since es6 imports are static and we run unit tests from the console, window won't be defined when importing this file\nvar win;\nif (typeof(window) === 'undefined') {\n var loc = {\n hostname: ''\n };\n win = {\n crypto: {randomUUID: function() {throw Error('unsupported');}},\n navigator: { userAgent: '', onLine: true },\n document: {\n createElement: function() { return {}; },\n location: loc,\n referrer: ''\n },\n screen: { width: 0, height: 0 },\n location: loc,\n addEventListener: function() {},\n removeEventListener: function() {}\n };\n} else {\n win = window;\n}\n\nexport { win as window };\n","var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n const host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction escapeImportStatement(rule) {\r\n const { cssText } = rule;\r\n if (cssText.split('\"').length < 3)\r\n return cssText;\r\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\r\n if (rule.layerName === '') {\r\n statement.push(`layer`);\r\n }\r\n else if (rule.layerName) {\r\n statement.push(`layer(${rule.layerName})`);\r\n }\r\n if (rule.supportsText) {\r\n statement.push(`supports(${rule.supportsText})`);\r\n }\r\n if (rule.media.length) {\r\n statement.push(rule.media.mediaText);\r\n }\r\n return statement.join(' ') + ';';\r\n}\r\nfunction stringifyStylesheet(s) {\r\n try {\r\n const rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules, stringifyRule).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction stringifyRule(rule) {\r\n let importStringified;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n importStringified =\r\n stringifyStylesheet(rule.styleSheet) ||\r\n escapeImportStatement(rule);\r\n }\r\n catch (error) {\r\n }\r\n }\r\n else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\r\n return fixSafariColons(rule.cssText);\r\n }\r\n return importStringified || rule.cssText;\r\n}\r\nfunction fixSafariColons(cssStringified) {\r\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\r\n return cssStringified.replace(regex, '$1\\\\$2');\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nfunction isCSSStyleRule(rule) {\r\n return 'selectorText' in rule;\r\n}\r\nclass Mirror {\r\n constructor() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n getId(n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n const id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n }\r\n getNode(id) {\r\n return this.idNodeMap.get(id) || null;\r\n }\r\n getIds() {\r\n return Array.from(this.idNodeMap.keys());\r\n }\r\n getMeta(n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n }\r\n removeNodeFromMap(n) {\r\n const id = this.getId(n);\r\n this.idNodeMap.delete(id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\r\n }\r\n }\r\n has(id) {\r\n return this.idNodeMap.has(id);\r\n }\r\n hasNode(node) {\r\n return this.nodeMetaMap.has(node);\r\n }\r\n add(n, meta) {\r\n const id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n replace(id, n) {\r\n const oldNode = this.getNode(id);\r\n if (oldNode) {\r\n const meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n }\r\n reset() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n}\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue({ element, maskInputOptions, tagName, type, value, maskInputFn, }) {\r\n let text = value || '';\r\n const actualType = type && toLowerCase(type);\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n (actualType && maskInputOptions[actualType])) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text, element);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nfunction toLowerCase(str) {\r\n return str.toLowerCase();\r\n}\r\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n const chunkSize = 50;\r\n for (let x = 0; x < canvas.width; x += chunkSize) {\r\n for (let y = 0; y < canvas.height; y += chunkSize) {\r\n const getImageData = ctx.getImageData;\r\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some((pixel) => pixel !== 0))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isNodeMetaEqual(a, b) {\r\n if (!a || !b || a.type !== b.type)\r\n return false;\r\n if (a.type === NodeType.Document)\r\n return a.compatMode === b.compatMode;\r\n else if (a.type === NodeType.DocumentType)\r\n return (a.name === b.name &&\r\n a.publicId === b.publicId &&\r\n a.systemId === b.systemId);\r\n else if (a.type === NodeType.Comment ||\r\n a.type === NodeType.Text ||\r\n a.type === NodeType.CDATA)\r\n return a.textContent === b.textContent;\r\n else if (a.type === NodeType.Element)\r\n return (a.tagName === b.tagName &&\r\n JSON.stringify(a.attributes) ===\r\n JSON.stringify(b.attributes) &&\r\n a.isSVG === b.isSVG &&\r\n a.needBlock === b.needBlock);\r\n return false;\r\n}\r\nfunction getInputType(element) {\r\n const type = element.type;\r\n return element.hasAttribute('data-rr-is-password')\r\n ? 'password'\r\n : type\r\n ?\r\n toLowerCase(type)\r\n : null;\r\n}\r\nfunction extractFileExtension(path, baseURL) {\r\n var _a;\r\n let url;\r\n try {\r\n url = new URL(path, baseURL !== null && baseURL !== void 0 ? baseURL : window.location.href);\r\n }\r\n catch (err) {\r\n return null;\r\n }\r\n const regex = /\\.([0-9a-z]+)(?:$)/i;\r\n const match = url.pathname.match(regex);\r\n return (_a = match === null || match === void 0 ? void 0 : match[1]) !== null && _a !== void 0 ? _a : null;\r\n}\n\nlet _id = 1;\r\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nconst IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n const processedTagName = toLowerCase(element.tagName);\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction extractOrigin(url) {\r\n let origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nlet canvasService;\r\nlet canvasCtx;\r\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\r\nconst URL_WWW_MATCH = /^www\\..*/i;\r\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\r\n const filePath = path1 || path2 || path3;\r\n const maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (filePath[0] === '/') {\r\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\r\n }\r\n const stack = href.split('/');\r\n const parts = filePath.split('/');\r\n stack.pop();\r\n for (const part of parts) {\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\r\n });\r\n}\r\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n let pos = 0;\r\n function collectCharacters(regEx) {\r\n let chars;\r\n const match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n const output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n let url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n let descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n let inParens = false;\r\n while (true) {\r\n const c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n const a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n const a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (!value) {\r\n return value;\r\n }\r\n if (name === 'src' ||\r\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset') {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style') {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n return value;\r\n}\r\nfunction ignoreAttribute(tagName, name, _value) {\r\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n try {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (let eIndex = element.classList.length; eIndex--;) {\r\n const className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (let eIndex = node.classList.length; eIndex--;) {\r\n const className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector, checkAncestors) {\r\n try {\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (checkAncestors) {\r\n if (el.closest(`.${maskTextClass}`))\r\n return true;\r\n }\r\n else {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n }\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, checkAncestors))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (checkAncestors) {\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n else {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n const win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n let fired = false;\r\n let readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n const blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n let fired = false;\r\n let styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, needsMask, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\r\n const rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode,\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId,\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc,\r\n blockClass,\r\n blockSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n rootId,\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n needsMask,\r\n maskTextFn,\r\n rootId,\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId,\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId,\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n const docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n const { needsMask, maskTextFn, rootId } = options;\r\n const parentTagName = n.parentNode && n.parentNode.tagName;\r\n let textContent = n.textContent;\r\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStylesheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle && !isScript && textContent && needsMask) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent, n.parentElement)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle,\r\n rootId,\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n const { doc, blockClass, blockSelector, inlineStylesheet, maskInputOptions = {}, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, } = options;\r\n const needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n const tagName = getValidTagName(n);\r\n let attributes = {};\r\n const len = n.attributes.length;\r\n for (let i = 0; i < len; i++) {\r\n const attr = n.attributes[i];\r\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\r\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value);\r\n }\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n const stylesheet = Array.from(doc.styleSheets).find((s) => {\r\n return s.href === n.href;\r\n });\r\n let cssText = null;\r\n if (stylesheet) {\r\n cssText = stringifyStylesheet(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n const cssText = stringifyStylesheet(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n const value = n.value;\r\n const checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n attributes.value = maskInputValue({\r\n element: n,\r\n type: getInputType(n),\r\n tagName,\r\n value,\r\n maskInputOptions,\r\n maskInputFn,\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n const blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n const image = n;\r\n const oldValue = image.crossOrigin;\r\n image.crossOrigin = 'anonymous';\r\n const recordInlineImage = () => {\r\n image.removeEventListener('load', recordInlineImage);\r\n try {\r\n canvasService.width = image.naturalWidth;\r\n canvasService.height = image.naturalHeight;\r\n canvasCtx.drawImage(image, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\r\n }\r\n oldValue\r\n ? (attributes.crossOrigin = oldValue)\r\n : image.removeAttribute('crossorigin');\r\n };\r\n if (image.complete && image.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image.addEventListener('load', recordInlineImage);\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n const mediaAttributes = attributes;\r\n mediaAttributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n mediaAttributes.rr_mediaCurrentTime = n.currentTime;\r\n mediaAttributes.rr_mediaPlaybackRate = n.playbackRate;\r\n mediaAttributes.rr_mediaMuted = n.muted;\r\n mediaAttributes.rr_mediaLoop = n.loop;\r\n mediaAttributes.rr_mediaVolume = n.volume;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n const { width, height } = n.getBoundingClientRect();\r\n attributes = {\r\n class: attributes.class,\r\n rr_width: `${width}px`,\r\n rr_height: `${height}px`,\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n let isCustomElement;\r\n try {\r\n if (customElements.get(tagName))\r\n isCustomElement = true;\r\n }\r\n catch (e) {\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName,\r\n attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock,\r\n rootId,\r\n isCustom: isCustomElement,\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined || maybeAttr === null) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n (sn.attributes.rel === 'preload' ||\r\n sn.attributes.rel === 'modulepreload') &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n extractFileExtension(sn.attributes.href) === 'js'))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, maskTextClass, maskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\r\n let { needsMask } = options;\r\n let { preserveWhiteSpace = true } = options;\r\n if (!needsMask &&\r\n n.childNodes) {\r\n const checkAncestors = needsMask === undefined;\r\n needsMask = needMaskingText(n, maskTextClass, maskTextSelector, checkAncestors);\r\n }\r\n const _serializedNode = serializeNode(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n let id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n const serializedNode = Object.assign(_serializedNode, { id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n let recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n const shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n const bypassOptions = {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n };\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'textarea' &&\r\n serializedNode.attributes.value !== undefined) ;\r\n else {\r\n for (const childN of Array.from(n.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (const childN of Array.from(n.shadowRoot.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, () => {\r\n const iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n typeof serializedNode.attributes.rel === 'string' &&\r\n (serializedNode.attributes.rel === 'stylesheet' ||\r\n (serializedNode.attributes.rel === 'preload' &&\r\n typeof serializedNode.attributes.href === 'string' &&\r\n extractFileExtension(serializedNode.attributes.href) === 'css'))) {\r\n onceStylesheetLoaded(n, () => {\r\n if (onStylesheetLoad) {\r\n const serializedLinkNode = serializeNodeWithId(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true,\r\n }\r\n : maskAllInputs;\r\n const slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true,\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n newlyAddedElement: false,\r\n });\r\n}\r\n\nconst commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options = {}) {\r\n let lineno = 1;\r\n let column = 1;\r\n function updatePosition(str) {\r\n const lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n const i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n const start = { line: lineno, column };\r\n return (node) => {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n class Position {\r\n constructor(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column };\r\n this.source = options.source;\r\n }\r\n }\r\n Position.prototype.content = css;\r\n const errorsList = [];\r\n function error(msg) {\r\n const err = new Error(`${options.source || ''}:${lineno}:${column}: ${msg}`);\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n const rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList,\r\n },\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n let node;\r\n const rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n const m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n const str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules = []) {\r\n let c;\r\n while ((c = comment())) {\r\n if (c) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n const pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n let i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n const str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str,\r\n });\r\n }\r\n function selector() {\r\n whitespace();\r\n while (css[0] == '}') {\r\n error('extra closing bracket');\r\n css = css.slice(1);\r\n whitespace();\r\n }\r\n const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const cleanedInput = m[0]\r\n .trim()\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (m) => {\r\n return m.replace(/,/g, '\\u200C');\r\n });\r\n return customSplit(cleanedInput).map((s) => s.replace(/\\u200C/g, ',').trim());\r\n }\r\n function customSplit(input) {\r\n const result = [];\r\n let currentSegment = '';\r\n let depthParentheses = 0;\r\n let depthBrackets = 0;\r\n for (const char of input) {\r\n if (char === '(') {\r\n depthParentheses++;\r\n }\r\n else if (char === ')') {\r\n depthParentheses--;\r\n }\r\n else if (char === '[') {\r\n depthBrackets++;\r\n }\r\n else if (char === ']') {\r\n depthBrackets--;\r\n }\r\n if (char === ',' && depthParentheses === 0 && depthBrackets === 0) {\r\n result.push(currentSegment);\r\n currentSegment = '';\r\n }\r\n else {\r\n currentSegment += char;\r\n }\r\n }\r\n if (currentSegment) {\r\n result.push(currentSegment);\r\n }\r\n return result;\r\n }\r\n function declaration() {\r\n const pos = position();\r\n const propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n const prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(`property missing ':'`);\r\n }\r\n const val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n const ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : '',\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n const decls = [];\r\n if (!open()) {\r\n return error(`missing '{'`);\r\n }\r\n comments(decls);\r\n let decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(`missing '}'`);\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n let m;\r\n const vals = [];\r\n const pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations(),\r\n });\r\n }\r\n function atkeyframes() {\r\n const pos = position();\r\n let m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n const name = m[1];\r\n if (!open()) {\r\n return error(`@keyframes missing '{'`);\r\n }\r\n let frame;\r\n let frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@keyframes missing '}'`);\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name,\r\n vendor,\r\n keyframes: frames,\r\n });\r\n }\r\n function atsupports() {\r\n const pos = position();\r\n const m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const supports = trim(m[1]);\r\n if (!open()) {\r\n return error(`@supports missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@supports missing '}'`);\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports,\r\n rules: style,\r\n });\r\n }\r\n function athost() {\r\n const pos = position();\r\n const m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@host missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@host missing '}'`);\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style,\r\n });\r\n }\r\n function atmedia() {\r\n const pos = position();\r\n const m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const media = trim(m[1]);\r\n if (!open()) {\r\n return error(`@media missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@media missing '}'`);\r\n }\r\n return pos({\r\n type: 'media',\r\n media,\r\n rules: style,\r\n });\r\n }\r\n function atcustommedia() {\r\n const pos = position();\r\n const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2]),\r\n });\r\n }\r\n function atpage() {\r\n const pos = position();\r\n const m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n const sel = selector() || [];\r\n if (!open()) {\r\n return error(`@page missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@page missing '}'`);\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls,\r\n });\r\n }\r\n function atdocument() {\r\n const pos = position();\r\n const m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = trim(m[1]);\r\n const doc = trim(m[2]);\r\n if (!open()) {\r\n return error(`@document missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@document missing '}'`);\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor,\r\n rules: style,\r\n });\r\n }\r\n function atfontface() {\r\n const pos = position();\r\n const m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@font-face missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@font-face missing '}'`);\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls,\r\n });\r\n }\r\n const atimport = _compileAtrule('import');\r\n const atcharset = _compileAtrule('charset');\r\n const atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n const re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return () => {\r\n const pos = position();\r\n const m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n const ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n const pos = position();\r\n const sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations(),\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n const isNode = obj && typeof obj.type === 'string';\r\n const childParent = isNode ? obj : parent;\r\n for (const k of Object.keys(obj)) {\r\n const value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach((v) => {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null,\r\n });\r\n }\r\n return obj;\r\n}\n\nconst tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient',\r\n};\r\nfunction getTagName(n) {\r\n let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nconst MEDIA_SELECTOR = /(max|min)-device-(width|height)/;\r\nconst MEDIA_SELECTOR_GLOBAL = new RegExp(MEDIA_SELECTOR.source, 'g');\r\nconst HOVER_SELECTOR = /([^\\\\]):hover/;\r\nconst HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction adaptCssForReplay(cssText, cache) {\r\n const cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n const ast = parse(cssText, {\r\n silent: true,\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n const selectors = [];\r\n const medias = [];\r\n function getSelectors(rule) {\r\n if ('selectors' in rule && rule.selectors) {\r\n rule.selectors.forEach((selector) => {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n if ('media' in rule && rule.media && MEDIA_SELECTOR.test(rule.media)) {\r\n medias.push(rule.media);\r\n }\r\n if ('rules' in rule && rule.rules) {\r\n rule.rules.forEach(getSelectors);\r\n }\r\n }\r\n getSelectors(ast.stylesheet);\r\n let result = cssText;\r\n if (selectors.length > 0) {\r\n const selectorMatcher = new RegExp(selectors\r\n .filter((selector, index) => selectors.indexOf(selector) === index)\r\n .sort((a, b) => b.length - a.length)\r\n .map((selector) => {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n result = result.replace(selectorMatcher, (selector) => {\r\n const newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return `${selector}, ${newSelector}`;\r\n });\r\n }\r\n if (medias.length > 0) {\r\n const mediaMatcher = new RegExp(medias\r\n .filter((media, index) => medias.indexOf(media) === index)\r\n .sort((a, b) => b.length - a.length)\r\n .map((media) => {\r\n return escapeRegExp(media);\r\n })\r\n .join('|'), 'g');\r\n result = result.replace(mediaMatcher, (media) => {\r\n return media.replace(MEDIA_SELECTOR_GLOBAL, '$1-$2');\r\n });\r\n }\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n const stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass,\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var _a;\r\n const { doc, hackCss, cache } = options;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n const tagName = getTagName(n);\r\n let node;\r\n if (n.isSVG) {\r\n node = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n if (n.isCustom &&\r\n ((_a = doc.defaultView) === null || _a === void 0 ? void 0 : _a.customElements) &&\r\n !doc.defaultView.customElements.get(n.tagName))\r\n doc.defaultView.customElements.define(n.tagName, class extends doc.defaultView.HTMLElement {\r\n });\r\n node = doc.createElement(tagName);\r\n }\r\n const specialAttributes = {};\r\n for (const name in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\r\n continue;\r\n }\r\n let value = n.attributes[name];\r\n if (tagName === 'option' &&\r\n name === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === null) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name.startsWith('rr_')) {\r\n specialAttributes[name] = value;\r\n continue;\r\n }\r\n const isTextarea = tagName === 'textarea' && name === 'value';\r\n const isRemoteOrDynamicCss = tagName === 'style' && name === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = adaptCssForReplay(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n node.appendChild(doc.createTextNode(value));\r\n n.childNodes = [];\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name === 'xlink:href') {\r\n node.setAttributeNS('http://www.w3.org/1999/xlink', name, value.toString());\r\n }\r\n else if (name === 'onload' ||\r\n name === 'onclick' ||\r\n name.substring(0, 7) === 'onmouse') {\r\n node.setAttribute('_' + name, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name === 'content') {\r\n node.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n (n.attributes.rel === 'preload' ||\r\n n.attributes.rel === 'modulepreload') &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node.setAttribute(name, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n for (const name in specialAttributes) {\r\n const value = specialAttributes[name];\r\n if (tagName === 'canvas' && name === 'rr_dataURL') {\r\n const image = document.createElement('img');\r\n image.onload = () => {\r\n const ctx = node.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image, 0, 0, image.width, image.height);\r\n }\r\n };\r\n image.src = value.toString();\r\n if (node.RRNodeType)\r\n node.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name === 'rr_dataURL') {\r\n const image = node;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name === 'rr_width') {\r\n node.style.width = value.toString();\r\n }\r\n else if (name === 'rr_height') {\r\n node.style.height = value.toString();\r\n }\r\n else if (name === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node.currentTime = value;\r\n }\r\n else if (name === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node\r\n .play()\r\n .catch((e) => console.warn('media playback error', e));\r\n break;\r\n case 'paused':\r\n node.pause();\r\n break;\r\n }\r\n }\r\n else if (name === 'rr_mediaPlaybackRate' &&\r\n typeof value === 'number') {\r\n node.playbackRate = value;\r\n }\r\n else if (name === 'rr_mediaMuted' && typeof value === 'boolean') {\r\n node.muted = value;\r\n }\r\n else if (name === 'rr_mediaLoop' && typeof value === 'boolean') {\r\n node.loop = value;\r\n }\r\n else if (name === 'rr_mediaVolume' && typeof value === 'number') {\r\n node.volume = value;\r\n }\r\n }\r\n if (n.isShadowHost) {\r\n if (!node.shadowRoot) {\r\n node.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node.shadowRoot.firstChild) {\r\n node.shadowRoot.removeChild(node.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? adaptCssForReplay(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n const { doc, mirror, skipChild = false, hackCss = true, afterAppend, cache, } = options;\r\n if (mirror.has(n.id)) {\r\n const nodeInMirror = mirror.getNode(n.id);\r\n const meta = mirror.getMeta(nodeInMirror);\r\n if (isNodeMetaEqual(meta, n))\r\n return mirror.getNode(n.id);\r\n }\r\n let node = buildNode(n, { doc, hackCss, cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (const childN of n.childNodes) {\r\n const childNode = buildNodeWithSN(childN, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else if (n.type === NodeType.Document &&\r\n childN.type == NodeType.Element) {\r\n const htmlElement = childNode;\r\n let body = null;\r\n htmlElement.childNodes.forEach((child) => {\r\n if (child.nodeName === 'BODY')\r\n body = child;\r\n });\r\n if (body) {\r\n htmlElement.removeChild(body);\r\n node.appendChild(childNode);\r\n htmlElement.appendChild(body);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (const id of mirror.getIds()) {\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n const n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n const el = node;\r\n for (const name in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name) &&\r\n name.startsWith('rr_'))) {\r\n continue;\r\n }\r\n const value = n.attributes[name];\r\n if (name === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n const { doc, onVisit, hackCss = true, afterAppend, cache, mirror = new Mirror(), } = options;\r\n const node = buildNodeWithSN(n, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n visit(mirror, (visitedNode) => {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, adaptCssForReplay, buildNodeWithSN, classMatchesRegex, createCache, createMirror, escapeImportStatement, extractFileExtension, fixSafariColons, genId, getInputType, ignoreAttribute, is2DCanvasBlank, isCSSImportRule, isCSSStyleRule, isElement, isNativeShadowDom, isNodeMetaEqual, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, stringifyRule, stringifyStylesheet, toLowerCase, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nlet nowTimestamp = Date.now;\r\nif (!(/[1-9][0-9]{12}/.test(Date.now().toString()))) {\r\n nowTimestamp = () => new Date().getTime();\r\n}\r\nfunction getWindowScroll(win) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const doc = win.document;\r\n return {\r\n left: doc.scrollingElement\r\n ? doc.scrollingElement.scrollLeft\r\n : win.pageXOffset !== undefined\r\n ? win.pageXOffset\r\n : (doc === null || doc === void 0 ? void 0 : doc.documentElement.scrollLeft) ||\r\n ((_b = (_a = doc === null || doc === void 0 ? void 0 : doc.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\r\n ((_c = doc === null || doc === void 0 ? void 0 : doc.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: doc.scrollingElement\r\n ? doc.scrollingElement.scrollTop\r\n : win.pageYOffset !== undefined\r\n ? win.pageYOffset\r\n : (doc === null || doc === void 0 ? void 0 : doc.documentElement.scrollTop) ||\r\n ((_e = (_d = doc === null || doc === void 0 ? void 0 : doc.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = doc === null || doc === void 0 ? void 0 : doc.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n };\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction closestElementOfNode(node) {\r\n if (!node) {\r\n return null;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n return el;\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = closestElementOfNode(node);\r\n if (!el) {\r\n return false;\r\n }\r\n try {\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n }\r\n catch (e) {\r\n }\r\n if (blockSelector) {\r\n if (el.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction legacy_isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\r\nfunction getShadowHost(n) {\r\n var _a, _b;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n return shadowHost;\r\n}\r\nfunction getRootShadowHost(n) {\r\n let rootShadowHost = n;\r\n let shadowHost;\r\n while ((shadowHost = getShadowHost(rootShadowHost)))\r\n rootShadowHost = shadowHost;\r\n return rootShadowHost;\r\n}\r\nfunction shadowHostInDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n const shadowHost = getRootShadowHost(n);\r\n return doc.contains(shadowHost);\r\n}\r\nfunction inDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n return doc.contains(n) || shadowHostInDom(n);\r\n}\n\nexport { StyleSheetMirror, _mirror, closestElementOfNode, getBaseDimension, getNestedRule, getPositionsAndIndex, getRootShadowHost, getShadowHost, getWindowHeight, getWindowScroll, getWindowWidth, hasShadowRoot, hookSetter, inDom, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, iterateResolveTree, legacy_isTouchEvent, nowTimestamp, on, patch, polyfill, queueToResolveTrees, shadowHostInDom, throttle, uniqueTextMutations };\n","var 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 ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, PointerTypes, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, getInputType, maskInputValue, ignoreAttribute, transformAttribute, toLowerCase, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, closestElementOfNode, hasShadowRoot, inDom, getShadowHost, isSerializedIframe, isSerializedStylesheet } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n this.tail = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n if (node.next === null) {\r\n this.tail = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n else {\r\n this.tail = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n else {\r\n this.tail = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.attributeMap = new WeakMap();\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addedIds = new Set();\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n if (!n.parentNode ||\r\n !inDom(n) ||\r\n n.parentNode.tagName === 'TEXTAREA') {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(getShadowHost(n))\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n addedIds.add(sn.id);\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of this.movedSet) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of this.addedSet) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n let tailNode = addList.tail;\r\n while (tailNode) {\r\n const _node = tailNode;\r\n tailNode = tailNode.previous;\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => {\r\n const n = text.node;\r\n if (n.parentNode &&\r\n n.parentNode.tagName === 'TEXTAREA') {\r\n this.genTextAreaValueMutation(n.parentNode);\r\n }\r\n return {\r\n id: this.mirror.getId(n),\r\n value: text.value,\r\n };\r\n })\r\n .filter((text) => !addedIds.has(text.id))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => {\r\n const { attributes } = attribute;\r\n if (typeof attributes.style === 'string') {\r\n const diffAsStr = JSON.stringify(attribute.styleDiff);\r\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\r\n if (diffAsStr.length < attributes.style.length) {\r\n if ((diffAsStr + unchangedAsStr).split('var(').length ===\r\n attributes.style.split('var(').length) {\r\n attributes.style = attribute.styleDiff;\r\n }\r\n }\r\n }\r\n return {\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attributes,\r\n };\r\n })\r\n .filter((attribute) => !addedIds.has(attribute.id))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.attributeMap = new WeakMap();\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.genTextAreaValueMutation = (textarea) => {\r\n let item = this.attributeMap.get(textarea);\r\n if (!item) {\r\n item = {\r\n node: textarea,\r\n attributes: {},\r\n styleDiff: {},\r\n _unchangedStyles: {},\r\n };\r\n this.attributes.push(item);\r\n this.attributeMap.set(textarea, item);\r\n }\r\n item.attributes.value = Array.from(textarea.childNodes, (cn) => cn.textContent || '').join('');\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, true) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value, closestElementOfNode(m.target))\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let attributeName = m.attributeName;\r\n let value = m.target.getAttribute(attributeName);\r\n if (attributeName === 'value') {\r\n const type = getInputType(target);\r\n value = maskInputValue({\r\n element: target,\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributeMap.get(m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n styleDiff: {},\r\n _unchangedStyles: {},\r\n };\r\n this.attributes.push(item);\r\n this.attributeMap.set(m.target, item);\r\n }\r\n if (attributeName === 'type' &&\r\n target.tagName === 'INPUT' &&\r\n (m.oldValue || '').toLowerCase() === 'password') {\r\n target.setAttribute('data-rr-is-password', 'true');\r\n }\r\n if (!ignoreAttribute(target.tagName, attributeName)) {\r\n item.attributes[attributeName] = transformAttribute(this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value);\r\n if (attributeName === 'style') {\r\n if (!this.unattachedDoc) {\r\n try {\r\n this.unattachedDoc =\r\n document.implementation.createHTMLDocument();\r\n }\r\n catch (e) {\r\n this.unattachedDoc = this.doc;\r\n }\r\n }\r\n const old = this.unattachedDoc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n item.styleDiff[pname] = newValue;\r\n }\r\n else {\r\n item.styleDiff[pname] = [newValue, newPriority];\r\n }\r\n }\r\n else {\r\n item._unchangedStyles[pname] = [newValue, newPriority];\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n item.styleDiff[pname] = false;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n if (m.target.tagName === 'TEXTAREA') {\r\n this.genTextAreaValueMutation(m.target);\r\n return;\r\n }\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.processedNodeManager.inOtherBuffer(n, this))\r\n return;\r\n if (this.addedSet.has(n) || this.movedSet.has(n))\r\n return;\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false)) {\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n if (hasShadowRoot(n)) {\r\n n.shadowRoot.childNodes.forEach((childN) => {\r\n this.processedNodeManager.add(childN, this);\r\n this.genAdds(childN, n);\r\n });\r\n }\r\n }\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n 'processedNodeManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","let errorHandler;\r\nfunction registerErrorHandler(handler) {\r\n errorHandler = handler;\r\n}\r\nfunction unregisterErrorHandler() {\r\n errorHandler = undefined;\r\n}\r\nconst callbackWrapper = (cb) => {\r\n if (!errorHandler) {\r\n return cb;\r\n }\r\n const rrwebWrapped = ((...rest) => {\r\n try {\r\n return cb(...rest);\r\n }\r\n catch (error) {\r\n if (errorHandler && errorHandler(error) === true) {\r\n return;\r\n }\r\n throw error;\r\n }\r\n });\r\n return rrwebWrapped;\r\n};\n\nexport { callbackWrapper, registerErrorHandler, unregisterErrorHandler };\n","import { toLowerCase, getInputType, maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowScroll, getWindowHeight, getWindowWidth, hookSetter, patch, legacy_isTouchEvent, nowTimestamp } from '../utils.js';\nimport { MouseInteractions, IncrementalSource, PointerTypes } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\nimport { callbackWrapper } from './error-handler.js';\n\nconst mutationBuffers = [];\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n }\r\n catch (_a) {\r\n }\r\n return event && event.target;\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle(callbackWrapper((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }), callbackThreshold);\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = legacy_isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = nowTimestamp();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: nowTimestamp() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }), threshold, {\r\n trailing: false,\r\n }));\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n let currentPointerType = null;\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n let pointerType = null;\r\n let thisEventKey = eventKey;\r\n if ('pointerType' in event) {\r\n switch (event.pointerType) {\r\n case 'mouse':\r\n pointerType = PointerTypes.Mouse;\r\n break;\r\n case 'touch':\r\n pointerType = PointerTypes.Touch;\r\n break;\r\n case 'pen':\r\n pointerType = PointerTypes.Pen;\r\n break;\r\n }\r\n if (pointerType === PointerTypes.Touch) {\r\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\r\n thisEventKey = 'TouchStart';\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\r\n thisEventKey = 'TouchEnd';\r\n }\r\n }\r\n else if (pointerType === PointerTypes.Pen) ;\r\n }\r\n else if (legacy_isTouchEvent(event)) {\r\n pointerType = PointerTypes.Touch;\r\n }\r\n if (pointerType !== null) {\r\n currentPointerType = pointerType;\r\n if ((thisEventKey.startsWith('Touch') &&\r\n pointerType === PointerTypes.Touch) ||\r\n (thisEventKey.startsWith('Mouse') &&\r\n pointerType === PointerTypes.Mouse)) {\r\n pointerType = null;\r\n }\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\r\n pointerType = currentPointerType;\r\n currentPointerType = null;\r\n }\r\n const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n callbackWrapper(mouseInteractionCb)(Object.assign({ type: MouseInteractions[thisEventKey], id, x: clientX, y: clientY }, (pointerType !== null && { pointerType })));\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n let eventName = toLowerCase(eventKey);\r\n const handler = getHandler(eventKey);\r\n if (window.PointerEvent) {\r\n switch (MouseInteractions[eventKey]) {\r\n case MouseInteractions.MouseDown:\r\n case MouseInteractions.MouseUp:\r\n eventName = eventName.replace('mouse', 'pointer');\r\n break;\r\n case MouseInteractions.TouchStart:\r\n case MouseInteractions.TouchEnd:\r\n return;\r\n }\r\n }\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc && doc.defaultView) {\r\n const scrollLeftTop = getWindowScroll(doc.defaultView);\r\n scrollCb({\r\n id,\r\n x: scrollLeftTop.left,\r\n y: scrollLeftTop.top,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }), sampling.scroll || 100));\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = callbackWrapper(throttle(callbackWrapper(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }), 200));\r\n return on('resize', updateDimension, win);\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, ignoreSelector, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n const tagName = target && target.tagName;\r\n if (target && tagName === 'OPTION') {\r\n target = target.parentElement;\r\n }\r\n if (!target ||\r\n !tagName ||\r\n INPUT_TAGS.indexOf(tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n if (target.classList.contains(ignoreClass) ||\r\n (ignoreSelector && target.matches(ignoreSelector))) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n const type = getInputType(target) || '';\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n element: target,\r\n maskInputOptions,\r\n tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, userTriggeredOnInput\r\n ? { text, isChecked, userTriggered }\r\n : { text, isChecked });\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n const text = el.value;\r\n cbWithDedup(el, userTriggeredOnInput\r\n ? { text, isChecked: !isChecked, userTriggered: false }\r\n : { text, isChecked: !isChecked });\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n callbackWrapper(inputCb)(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n callbackWrapper(eventHandler)({\r\n target: this,\r\n isTrusted: false,\r\n });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((hasNestedCSSRule('CSSGroupingRule') &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (hasNestedCSSRule('CSSMediaRule') &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (hasNestedCSSRule('CSSSupportsRule') &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (hasNestedCSSRule('CSSConditionRule') &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\r\n return () => {\r\n };\r\n }\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(thisArg),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(thisArg), index] },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n });\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = (patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype)\r\n ? Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets')\r\n : undefined;\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return callbackWrapper(() => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n });\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n var _a;\r\n const [property, value, priority] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(thisArg, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n var _a;\r\n const [property] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(thisArg, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n });\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, doc, }) {\r\n const handler = callbackWrapper((type) => throttle(callbackWrapper((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate, loop } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n loop,\r\n });\r\n }), sampling.media || 500));\r\n const handlers = [\r\n on('play', handler(0), doc),\r\n on('pause', handler(1), doc),\r\n on('seeked', handler(2), doc),\r\n on('volumechange', handler(3), doc),\r\n on('ratechange', handler(4), doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(callbackWrapper(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }), 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = callbackWrapper(() => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n });\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction initCustomElementObserver({ doc, customElementCb, }) {\r\n const win = doc.defaultView;\r\n if (!win || !win.customElements)\r\n return () => { };\r\n const restoreHandler = patch(win.customElements, 'define', function (original) {\r\n return function (name, constructor, options) {\r\n try {\r\n customElementCb({\r\n define: {\r\n name,\r\n },\r\n });\r\n }\r\n catch (e) {\r\n console.warn(`Custom element callback failed for ${name}`);\r\n }\r\n return original.apply(this, [name, constructor, options]);\r\n };\r\n });\r\n return restoreHandler;\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, customElementCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n o.customElementCb = (...c) => {\r\n if (hooks.customElement) {\r\n hooks.customElement(...c);\r\n }\r\n customElementCb(...c);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n let mutationObserver;\r\n if (o.recordDOM) {\r\n mutationObserver = initMutationObserver(o, o.doc);\r\n }\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o, {\r\n win: currentWindow,\r\n });\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n let styleSheetObserver = () => { };\r\n let adoptedStyleSheetObserver = () => { };\r\n let styleDeclarationObserver = () => { };\r\n let fontObserver = () => { };\r\n if (o.recordDOM) {\r\n styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n if (o.collectFonts) {\r\n fontObserver = initFontObserver(o);\r\n }\r\n }\r\n const selectionObserver = initSelectionObserver(o);\r\n const customElementObserver = initCustomElementObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return callbackWrapper(() => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver === null || mutationObserver === void 0 ? void 0 : mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n customElementObserver();\r\n pluginHandlers.forEach((h) => h());\r\n });\r\n}\r\nfunction hasNestedCSSRule(prop) {\r\n return typeof window[prop] !== 'undefined';\r\n}\r\nfunction canMonkeyPatchNestedCSSRule(prop) {\r\n return Boolean(typeof window[prop] !== 'undefined' &&\r\n window[prop].prototype &&\r\n 'insertRule' in window[prop].prototype &&\r\n 'deleteRule' in window[prop].prototype);\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId, NodeType } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.crossOriginIframeRootIdMap = new WeakMap();\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n const crossOriginMessageEvent = message;\r\n if (crossOriginMessageEvent.data.type !== 'rrweb' ||\r\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\r\n return;\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n const rootId = e.data.node.id;\r\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\r\n this.patchRootIdOnNode(e.data.node, rootId);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\r\n rootId && this.patchRootIdOnNode(n.node, rootId);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id', 'rootId']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n patchRootIdOnNode(node, rootId) {\r\n if (node.type !== NodeType.Document && !node.rootId)\r\n node.rootId = rootId;\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.patchRootIdOnNode(child, rootId);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch, inDom } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restoreHandlers = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n this.init();\r\n }\r\n init() {\r\n this.reset();\r\n this.patchAttachShadow(Element, document);\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n const observer = initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n this.restoreHandlers.push(() => observer.disconnect());\r\n this.restoreHandlers.push(initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror })));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n this.restoreHandlers.push(initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot));\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (!iframeElement.contentWindow || !iframeElement.contentDocument)\r\n return;\r\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\r\n }\r\n patchAttachShadow(element, doc) {\r\n const manager = this;\r\n this.restoreHandlers.push(patch(element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot && inDom(this))\r\n manager.addShadowRoot(this.shadowRoot, doc);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n reset() {\r\n this.restoreHandlers.forEach((handler) => {\r\n try {\r\n handler();\r\n }\r\n catch (e) {\r\n }\r\n });\r\n this.restoreHandlers = [];\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return args.map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs(args, win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction getNormalizedContextName(contextType) {\r\n return contextType === 'experimental-webgl' ? 'webgl' : contextType;\r\n}\r\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n const ctxName = getNormalizedContextName(contextType);\r\n if (!('__context' in this))\r\n this.__context = ctxName;\r\n if (setPreserveDrawingBufferToTrue &&\r\n ['webgl', 'webgl2'].includes(ctxName)) {\r\n if (args[0] && typeof args[0] === 'object') {\r\n const contextAttributes = args[0];\r\n if (!contextAttributes.preserveDrawingBuffer) {\r\n contextAttributes.preserveDrawingBuffer = true;\r\n }\r\n }\r\n else {\r\n args.splice(0, 1, {\r\n preserveDrawingBuffer: true,\r\n });\r\n }\r\n }\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if ('tagName' in this.canvas &&\r\n !isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs(args, win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","function funcToSource(fn, sourcemapArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var source = fn.toString();\n var lines = source.split('\\n');\n lines.pop();\n lines.shift();\n var blankPrefixLength = lines[0].search(/\\S/);\n var regex = /(['\"])__worker_loader_strict__(['\"])/g;\n for (var i = 0, n = lines.length; i < n; ++i) {\n lines[i] = lines[i].substring(blankPrefixLength).replace(regex, '$1use strict$2') + '\\n';\n }\n if (sourcemap) {\n lines.push('\\/\\/# sourceMappingURL=' + sourcemap + '\\n');\n }\n return lines;\n}\n\nexport { funcToSource };\n","import { funcToSource } from './_rollup-plugin-web-worker-loader__helper__funcToSource.js';\n\nfunction createURL(fn, sourcemapArg) {\n var lines = funcToSource(fn, sourcemapArg);\n var blob = new Blob(lines, { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createInlineWorkerFactory(fn, sourcemapArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(fn, sourcemapArg);\n return new Worker(url, options);\n };\n}\n\nexport { createInlineWorkerFactory };\n","import { createInlineWorkerFactory } from './_rollup-plugin-web-worker-loader__helper__browser__createInlineWorkerFactory.js';\n\nvar WorkerFactory = createInlineWorkerFactory(/* rollup-plugin-web-worker-loader */function () {\n(function () {\n '__worker_loader_strict__';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n\r\n function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n }\n\n /*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n var encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n };\n\n const lastBlobMap = new Map();\r\n const transparentBlobMap = new Map();\r\n function getTransparentBlobFor(width, height, dataURLOptions) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const id = `${width}-${height}`;\r\n if ('OffscreenCanvas' in globalThis) {\r\n if (transparentBlobMap.has(id))\r\n return transparentBlobMap.get(id);\r\n const offscreen = new OffscreenCanvas(width, height);\r\n offscreen.getContext('2d');\r\n const blob = yield offscreen.convertToBlob(dataURLOptions);\r\n const arrayBuffer = yield blob.arrayBuffer();\r\n const base64 = encode(arrayBuffer);\r\n transparentBlobMap.set(id, base64);\r\n return base64;\r\n }\r\n else {\r\n return '';\r\n }\r\n });\r\n }\r\n const worker = self;\r\n worker.onmessage = function (e) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if ('OffscreenCanvas' in globalThis) {\r\n const { id, bitmap, width, height, dataURLOptions } = e.data;\r\n const transparentBase64 = getTransparentBlobFor(width, height, dataURLOptions);\r\n const offscreen = new OffscreenCanvas(width, height);\r\n const ctx = offscreen.getContext('2d');\r\n ctx.drawImage(bitmap, 0, 0);\r\n bitmap.close();\r\n const blob = yield offscreen.convertToBlob(dataURLOptions);\r\n const type = blob.type;\r\n const arrayBuffer = yield blob.arrayBuffer();\r\n const base64 = encode(arrayBuffer);\r\n if (!lastBlobMap.has(id) && (yield transparentBase64) === base64) {\r\n lastBlobMap.set(id, base64);\r\n return worker.postMessage({ id });\r\n }\r\n if (lastBlobMap.get(id) === base64)\r\n return worker.postMessage({ id });\r\n worker.postMessage({\r\n id,\r\n type,\r\n base64,\r\n width,\r\n height,\r\n });\r\n lastBlobMap.set(id, base64);\r\n }\r\n else {\r\n return worker.postMessage({ id: e.data.id });\r\n }\r\n });\r\n };\n\n})();\n}, null);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, true);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n if (canvas.width === 0 || canvas.height === 0)\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n const bitmap = yield createImageBitmap(canvas);\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, false);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { stringifyRule } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n styles.push({\r\n styleId,\r\n rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\r\n rule: stringifyRule(r),\r\n index,\r\n })),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","class ProcessedNodeManager {\r\n constructor() {\r\n this.nodeMap = new WeakMap();\r\n this.loop = true;\r\n this.periodicallyClear();\r\n }\r\n periodicallyClear() {\r\n requestAnimationFrame(() => {\r\n this.clear();\r\n if (this.loop)\r\n this.periodicallyClear();\r\n });\r\n }\r\n inOtherBuffer(node, thisBuffer) {\r\n const buffers = this.nodeMap.get(node);\r\n return (buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer));\r\n }\r\n add(node, buffer) {\r\n this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\r\n }\r\n clear() {\r\n this.nodeMap = new WeakMap();\r\n }\r\n destroy() {\r\n this.loop = false;\r\n }\r\n}\n\nexport { ProcessedNodeManager as default };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, nowTimestamp, on, getWindowWidth, getWindowHeight, getWindowScroll, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\nimport ProcessedNodeManager from './processed-node-manager.js';\nimport { callbackWrapper, unregisterErrorHandler, registerErrorHandler } from './error-handler.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: nowTimestamp() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordDOM = true, recordCanvas = false, recordCrossOriginIframes = false, recordAfter = options.recordAfter === 'DOMContentLoaded'\r\n ? options.recordAfter\r\n : 'load', userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), errorHandler, } = options;\r\n registerErrorHandler(errorHandler);\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n if (window.parent.document) {\r\n passEmitsToParent = false;\r\n }\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn &&\r\n !passEmitsToParent) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n origin: window.location.origin,\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n const processedNodeManager = new ProcessedNodeManager();\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n processedNodeManager,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n if (!recordDOM) {\r\n return;\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n shadowDomManager.init();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: getWindowScroll(window),\r\n },\r\n }), isCheckout);\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n const observe = (doc) => {\r\n var _a;\r\n return callbackWrapper(initObservers)({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n customElementCb: (c) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CustomElement }, c),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n ignoreSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordDOM,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n processedNodeManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n try {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n if (recordAfter === 'DOMContentLoaded')\r\n init();\r\n }));\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n if (recordAfter === 'load')\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n processedNodeManager.destroy();\r\n recording = false;\r\n unregisterErrorHandler();\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n","import { window } from './window';\n/**\n * Promise polyfill sourced from https://github.com/getify/native-promise-only.\n * Modified to\n * - remove UMD wrapper and export as an object, so that we don't globally polyfill Promise.\n * - rename access notation for dynamically referenced props to avoid minification, e.g. this.__NPO__ -> this['__NPO__']\n*/\n\n/*! Native Promise Only\n v0.8.1 (c) Kyle Simpson\n MIT License: http://getify.mit-license.org\n*/\n\n/*jshint validthis:true */\n'use strict';\n\nvar setImmediate = window['setImmediate'];\nvar builtInProp, cycle, schedulingQueue,\n ToString = Object.prototype.toString,\n timer = (typeof setImmediate !== 'undefined') ?\n function timer(fn) { return setImmediate(fn); } :\n setTimeout;\n\n// dammit, IE8.\ntry {\n Object.defineProperty({},'x',{});\n builtInProp = function builtInProp(obj,name,val,config) {\n return Object.defineProperty(obj,name,{\n value: val,\n writable: true,\n configurable: config !== false\n });\n };\n}\ncatch (err) {\n builtInProp = function builtInProp(obj,name,val) {\n obj[name] = val;\n return obj;\n };\n}\n\n// Note: using a queue instead of array for efficiency\nschedulingQueue = (function Queue() {\n var first, last, item;\n\n function Item(fn,self) {\n this.fn = fn;\n this.self = self;\n this.next = void 0;\n }\n\n return {\n add: function add(fn,self) {\n item = new Item(fn,self);\n if (last) {\n last.next = item;\n }\n else {\n first = item;\n }\n last = item;\n item = void 0;\n },\n drain: function drain() {\n var f = first;\n first = last = cycle = void 0;\n\n while (f) {\n f.fn.call(f.self);\n f = f.next;\n }\n }\n };\n})();\n\nfunction schedule(fn,self) {\n schedulingQueue.add(fn,self);\n if (!cycle) {\n cycle = timer(schedulingQueue.drain);\n }\n}\n\n// promise duck typing\nfunction isThenable(o) {\n var _then, oType = typeof o;\n\n if (o !== null && (oType === 'object' || oType === 'function')) {\n _then = o.then;\n }\n return typeof _then === 'function' ? _then : false;\n}\n\nfunction notify() {\n for (var i=0; i<this.chain.length; i++) {\n notifyIsolated(\n this,\n (this.state === 1) ? this.chain[i].success : this.chain[i].failure,\n this.chain[i]\n );\n }\n this.chain.length = 0;\n}\n\n// NOTE: This is a separate function to isolate\n// the `try..catch` so that other code can be\n// optimized better\nfunction notifyIsolated(self,cb,chain) {\n var ret, _then;\n try {\n if (cb === false) {\n chain.reject(self.msg);\n }\n else {\n if (cb === true) {\n ret = self.msg;\n }\n else {\n ret = cb.call(void 0,self.msg);\n }\n\n if (ret === chain.promise) {\n chain.reject(TypeError('Promise-chain cycle'));\n }\n // eslint-disable-next-line no-cond-assign\n else if (_then = isThenable(ret)) {\n _then.call(ret,chain.resolve,chain.reject);\n }\n else {\n chain.resolve(ret);\n }\n }\n }\n catch (err) {\n chain.reject(err);\n }\n}\n\nfunction resolve(msg) {\n var _then, self = this;\n\n // already triggered?\n if (self.triggered) { return; }\n\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n\n try {\n // eslint-disable-next-line no-cond-assign\n if (_then = isThenable(msg)) {\n schedule(function(){\n var defWrapper = new MakeDefWrapper(self);\n try {\n _then.call(msg,\n function $resolve$(){ resolve.apply(defWrapper,arguments); },\n function $reject$(){ reject.apply(defWrapper,arguments); }\n );\n }\n catch (err) {\n reject.call(defWrapper,err);\n }\n });\n }\n else {\n self.msg = msg;\n self.state = 1;\n if (self.chain.length > 0) {\n schedule(notify,self);\n }\n }\n }\n catch (err) {\n reject.call(new MakeDefWrapper(self),err);\n }\n}\n\nfunction reject(msg) {\n var self = this;\n\n // already triggered?\n if (self.triggered) { return; }\n\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n\n self.msg = msg;\n self.state = 2;\n if (self.chain.length > 0) {\n schedule(notify,self);\n }\n}\n\nfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n for (var idx=0; idx<arr.length; idx++) {\n (function IIFE(idx){\n Constructor.resolve(arr[idx])\n .then(\n function $resolver$(msg){\n resolver(idx,msg);\n },\n rejecter\n );\n })(idx);\n }\n}\n\nfunction MakeDefWrapper(self) {\n this.def = self;\n this.triggered = false;\n}\n\nfunction MakeDef(self) {\n this.promise = self;\n this.state = 0;\n this.triggered = false;\n this.chain = [];\n this.msg = void 0;\n}\n\nfunction NpoPromise(executor) {\n if (typeof executor !== 'function') {\n throw TypeError('Not a function');\n }\n\n if (this['__NPO__'] !== 0) {\n throw TypeError('Not a promise');\n }\n\n // instance shadowing the inherited \"brand\"\n // to signal an already \"initialized\" promise\n this['__NPO__'] = 1;\n\n var def = new MakeDef(this);\n\n this['then'] = function then(success,failure) {\n var o = {\n success: typeof success === 'function' ? success : true,\n failure: typeof failure === 'function' ? failure : false\n };\n // Note: `then(..)` itself can be borrowed to be used against\n // a different promise constructor for making the chained promise,\n // by substituting a different `this` binding.\n o.promise = new this.constructor(function extractChain(resolve,reject) {\n if (typeof resolve !== 'function' || typeof reject !== 'function') {\n throw TypeError('Not a function');\n }\n\n o.resolve = resolve;\n o.reject = reject;\n });\n def.chain.push(o);\n\n if (def.state !== 0) {\n schedule(notify,def);\n }\n\n return o.promise;\n };\n this['catch'] = function $catch$(failure) {\n return this.then(void 0,failure);\n };\n\n try {\n executor.call(\n void 0,\n function publicResolve(msg){\n resolve.call(def,msg);\n },\n function publicReject(msg) {\n reject.call(def,msg);\n }\n );\n }\n catch (err) {\n reject.call(def,err);\n }\n}\n\nvar PromisePrototype = builtInProp({},'constructor',NpoPromise,\n /*configurable=*/false\n);\n\n // Note: Android 4 cannot use `Object.defineProperty(..)` here\nNpoPromise.prototype = PromisePrototype;\n\n// built-in \"brand\" to signal an \"uninitialized\" promise\nbuiltInProp(PromisePrototype,'__NPO__',0,\n /*configurable=*/false\n);\n\nbuiltInProp(NpoPromise,'resolve',function Promise$resolve(msg) {\n var Constructor = this;\n\n // spec mandated checks\n // note: best \"isPromise\" check that's practical for now\n if (msg && typeof msg === 'object' && msg['__NPO__'] === 1) {\n return msg;\n }\n\n return new Constructor(function executor(resolve,reject){\n if (typeof resolve !== 'function' || typeof reject !== 'function') {\n throw TypeError('Not a function');\n }\n\n resolve(msg);\n });\n});\n\nbuiltInProp(NpoPromise,'reject',function Promise$reject(msg) {\n return new this(function executor(resolve,reject){\n if (typeof resolve !== 'function' || typeof reject !== 'function') {\n throw TypeError('Not a function');\n }\n\n reject(msg);\n });\n});\n\nbuiltInProp(NpoPromise,'all',function Promise$all(arr) {\n var Constructor = this;\n\n // spec mandated checks\n if (ToString.call(arr) !== '[object Array]') {\n return Constructor.reject(TypeError('Not an array'));\n }\n if (arr.length === 0) {\n return Constructor.resolve([]);\n }\n\n return new Constructor(function executor(resolve,reject){\n if (typeof resolve !== 'function' || typeof reject !== 'function') {\n throw TypeError('Not a function');\n }\n\n var len = arr.length, msgs = Array(len), count = 0;\n\n iteratePromises(Constructor,arr,function resolver(idx,msg) {\n msgs[idx] = msg;\n if (++count === len) {\n resolve(msgs);\n }\n },reject);\n });\n});\n\nbuiltInProp(NpoPromise,'race',function Promise$race(arr) {\n var Constructor = this;\n\n // spec mandated checks\n if (ToString.call(arr) !== '[object Array]') {\n return Constructor.reject(TypeError('Not an array'));\n }\n\n return new Constructor(function executor(resolve,reject){\n if (typeof resolve !== 'function' || typeof reject !== 'function') {\n throw TypeError('Not a function');\n }\n\n iteratePromises(Constructor,arr,function resolver(idx,msg){\n resolve(msg);\n },reject);\n });\n});\n\nvar PromisePolyfill;\nif (typeof Promise !== 'undefined' && Promise.toString().indexOf('[native code]') !== -1) {\n PromisePolyfill = Promise;\n} else {\n PromisePolyfill = NpoPromise;\n}\n\nexport { PromisePolyfill as Promise, NpoPromise };\n","var 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 ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\nexport {\n CanvasContext,\n EventType,\n IncrementalSource,\n MediaInteractions,\n MouseInteractions,\n PointerTypes,\n ReplayerEvents\n};\n//# sourceMappingURL=types.js.map\n","var Config = {\n DEBUG: false,\n LIB_VERSION: '2.62.0'\n};\n\nexport default Config;\n","/* eslint camelcase: \"off\", eqeqeq: \"off\" */\nimport Config from './config';\nimport { NpoPromise, Promise } from './promise-polyfill';\nimport { window } from './window';\n\n// Maximum allowed session recording length\nvar MAX_RECORDING_MS = 24 * 60 * 60 * 1000; // 24 hours\n// Maximum allowed value for minimum session recording length\nvar MAX_VALUE_FOR_MIN_RECORDING_MS = 8 * 1000; // 8 seconds\n\n/*\n * Saved references to long variable names, so that closure compiler can\n * minimize file size.\n */\n\nvar ArrayProto = Array.prototype,\n FuncProto = Function.prototype,\n ObjProto = Object.prototype,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty,\n windowConsole = window.console,\n navigator = window.navigator,\n document = window.document,\n windowOpera = window.opera,\n screen = window.screen,\n userAgent = navigator.userAgent;\n\nvar nativeBind = FuncProto.bind,\n nativeForEach = ArrayProto.forEach,\n nativeIndexOf = ArrayProto.indexOf,\n nativeMap = ArrayProto.map,\n nativeIsArray = Array.isArray,\n breaker = {};\n\nvar _ = {\n trim: function(str) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n};\n\n// Console override\nvar console = {\n /** @type {function(...*)} */\n log: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n try {\n windowConsole.log.apply(windowConsole, arguments);\n } catch (err) {\n _.each(arguments, function(arg) {\n windowConsole.log(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n warn: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel warning:'].concat(_.toArray(arguments));\n try {\n windowConsole.warn.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.warn(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n error: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n try {\n windowConsole.error.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.error(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n critical: function() {\n if (!_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n try {\n windowConsole.error.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.error(arg);\n });\n }\n }\n }\n};\n\nvar log_func_with_prefix = function(func, prefix) {\n return function() {\n arguments[0] = '[' + prefix + '] ' + arguments[0];\n return func.apply(console, arguments);\n };\n};\nvar console_with_prefix = function(prefix) {\n return {\n log: log_func_with_prefix(console.log, prefix),\n error: log_func_with_prefix(console.error, prefix),\n critical: log_func_with_prefix(console.critical, prefix)\n };\n};\n\n\nvar safewrap = function(f) {\n return function() {\n try {\n return f.apply(this, arguments);\n } catch (e) {\n console.critical('Implementation error. Please turn on debug and contact support@mixpanel.com.');\n if (Config.DEBUG){\n console.critical(e);\n }\n }\n };\n};\n\nvar safewrapClass = function(klass) {\n var proto = klass.prototype;\n for (var func in proto) {\n if (typeof(proto[func]) === 'function') {\n proto[func] = safewrap(proto[func]);\n }\n }\n};\n\n\n// UNDERSCORE\n// Embed part of the Underscore Library\n_.bind = function(func, context) {\n var args, bound;\n if (nativeBind && func.bind === nativeBind) {\n return nativeBind.apply(func, slice.call(arguments, 1));\n }\n if (!_.isFunction(func)) {\n throw new TypeError();\n }\n args = slice.call(arguments, 2);\n bound = function() {\n if (!(this instanceof bound)) {\n return func.apply(context, args.concat(slice.call(arguments)));\n }\n var ctor = {};\n ctor.prototype = func.prototype;\n var self = new ctor();\n ctor.prototype = null;\n var result = func.apply(self, args.concat(slice.call(arguments)));\n if (Object(result) === result) {\n return result;\n }\n return self;\n };\n return bound;\n};\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} context\n */\n_.each = function(obj, iterator, context) {\n if (obj === null || obj === undefined) {\n return;\n }\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) {\n return;\n }\n }\n } else {\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(context, obj[key], key, obj) === breaker) {\n return;\n }\n }\n }\n }\n};\n\n_.extend = function(obj) {\n _.each(slice.call(arguments, 1), function(source) {\n for (var prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop];\n }\n }\n });\n return obj;\n};\n\n_.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n};\n\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// var bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\n_.isFunction = function(f) {\n try {\n return /^\\s*\\bfunction\\b/.test(f);\n } catch (x) {\n return false;\n }\n};\n\n_.isArguments = function(obj) {\n return !!(obj && hasOwnProperty.call(obj, 'callee'));\n};\n\n_.toArray = function(iterable) {\n if (!iterable) {\n return [];\n }\n if (iterable.toArray) {\n return iterable.toArray();\n }\n if (_.isArray(iterable)) {\n return slice.call(iterable);\n }\n if (_.isArguments(iterable)) {\n return slice.call(iterable);\n }\n return _.values(iterable);\n};\n\n_.map = function(arr, callback, context) {\n if (nativeMap && arr.map === nativeMap) {\n return arr.map(callback, context);\n } else {\n var results = [];\n _.each(arr, function(item) {\n results.push(callback.call(context, item));\n });\n return results;\n }\n};\n\n_.keys = function(obj) {\n var results = [];\n if (obj === null) {\n return results;\n }\n _.each(obj, function(value, key) {\n results[results.length] = key;\n });\n return results;\n};\n\n_.values = function(obj) {\n var results = [];\n if (obj === null) {\n return results;\n }\n _.each(obj, function(value) {\n results[results.length] = value;\n });\n return results;\n};\n\n_.include = function(obj, target) {\n var found = false;\n if (obj === null) {\n return found;\n }\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1;\n }\n _.each(obj, function(value) {\n if (found || (found = (value === target))) {\n return breaker;\n }\n });\n return found;\n};\n\n_.includes = function(str, needle) {\n return str.indexOf(needle) !== -1;\n};\n\n// Underscore Addons\n_.inherit = function(subclass, superclass) {\n subclass.prototype = new superclass();\n subclass.prototype.constructor = subclass;\n subclass.superclass = superclass.prototype;\n return subclass;\n};\n\n_.isObject = function(obj) {\n return (obj === Object(obj) && !_.isArray(obj));\n};\n\n_.isEmptyObject = function(obj) {\n if (_.isObject(obj)) {\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n return true;\n }\n return false;\n};\n\n_.isUndefined = function(obj) {\n return obj === void 0;\n};\n\n_.isString = function(obj) {\n return toString.call(obj) == '[object String]';\n};\n\n_.isDate = function(obj) {\n return toString.call(obj) == '[object Date]';\n};\n\n_.isNumber = function(obj) {\n return toString.call(obj) == '[object Number]';\n};\n\n_.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n};\n\n_.encodeDates = function(obj) {\n _.each(obj, function(v, k) {\n if (_.isDate(v)) {\n obj[k] = _.formatDate(v);\n } else if (_.isObject(v)) {\n obj[k] = _.encodeDates(v); // recurse\n }\n });\n return obj;\n};\n\n_.timestamp = function() {\n Date.now = Date.now || function() {\n return +new Date;\n };\n return Date.now();\n};\n\n_.formatDate = function(d) {\n // YYYY-MM-DDTHH:MM:SS in UTC\n function pad(n) {\n return n < 10 ? '0' + n : n;\n }\n return d.getUTCFullYear() + '-' +\n pad(d.getUTCMonth() + 1) + '-' +\n pad(d.getUTCDate()) + 'T' +\n pad(d.getUTCHours()) + ':' +\n pad(d.getUTCMinutes()) + ':' +\n pad(d.getUTCSeconds());\n};\n\n_.strip_empty_properties = function(p) {\n var ret = {};\n _.each(p, function(v, k) {\n if (_.isString(v) && v.length > 0) {\n ret[k] = v;\n }\n });\n return ret;\n};\n\n/*\n * this function returns a copy of object after truncating it. If\n * passed an Array or Object it will iterate through obj and\n * truncate all the values recursively.\n */\n_.truncate = function(obj, length) {\n var ret;\n\n if (typeof(obj) === 'string') {\n ret = obj.slice(0, length);\n } else if (_.isArray(obj)) {\n ret = [];\n _.each(obj, function(val) {\n ret.push(_.truncate(val, length));\n });\n } else if (_.isObject(obj)) {\n ret = {};\n _.each(obj, function(val, key) {\n ret[key] = _.truncate(val, length);\n });\n } else {\n ret = obj;\n }\n\n return ret;\n};\n\n_.JSONEncode = (function() {\n return function(mixed_val) {\n var value = mixed_val;\n var quote = function(string) {\n var escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g; // eslint-disable-line no-control-regex\n var meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n\n escapable.lastIndex = 0;\n return escapable.test(string) ?\n '\"' + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' :\n '\"' + string + '\"';\n };\n\n var str = function(key, holder) {\n var gap = '';\n var indent = ' ';\n var i = 0; // The loop counter.\n var k = ''; // The member key.\n var v = ''; // The member value.\n var length = 0;\n var mind = gap;\n var partial = [];\n var value = holder[key];\n\n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n\n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n\n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n\n return String(value);\n\n case 'object':\n // If the type is 'object', we might be dealing with an object or an array or\n // null.\n // Due to a specification blunder in ECMAScript, typeof null is 'object',\n // so watch out for that case.\n if (!value) {\n return 'null';\n }\n\n // Make an array to hold the partial results of stringifying this object value.\n gap += indent;\n partial = [];\n\n // Is the value an array?\n if (toString.apply(value) === '[object Array]') {\n // The value is an array. Stringify every element. Use null as a placeholder\n // for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n\n // Join all of the elements together, separated with commas, and wrap them in\n // brackets.\n v = partial.length === 0 ? '[]' :\n gap ? '[\\n' + gap +\n partial.join(',\\n' + gap) + '\\n' +\n mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n\n // Iterate through all of the keys in the object.\n for (k in value) {\n if (hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n\n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n v = partial.length === 0 ? '{}' :\n gap ? '{' + partial.join(',') + '' +\n mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n };\n\n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {\n '': value\n });\n };\n})();\n\n/**\n * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n * Slightly modified to throw a real Error rather than a POJO\n */\n_.JSONDecode = (function() {\n var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n 'b': '\\b',\n 'f': '\\f',\n 'n': '\\n',\n 'r': '\\r',\n 't': '\\t'\n },\n text,\n error = function(m) {\n var e = new SyntaxError(m);\n e.at = at;\n e.text = text;\n throw e;\n },\n next = function(c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error('Expected \\'' + c + '\\' instead of \\'' + ch + '\\'');\n }\n // Get the next character. When there are no more characters,\n // return the empty string.\n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n number = function() {\n // Parse a number value.\n var number,\n string = '';\n\n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error('Bad number');\n } else {\n return number;\n }\n },\n\n string = function() {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n }\n if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error('Bad string');\n },\n white = function() {\n // Skip whitespace.\n while (ch && ch <= ' ') {\n next();\n }\n },\n word = function() {\n // true, false, or null.\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error('Unexpected \"' + ch + '\"');\n },\n value, // Placeholder for the value function.\n array = function() {\n // Parse an array value.\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error('Bad array');\n },\n object = function() {\n // Parse an object value.\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error('Bad object');\n };\n\n value = function() {\n // Parse a JSON value. It could be an object, an array, a string,\n // a number, or a word.\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n };\n\n // Return the json_parse function. It will have access to all of the\n // above functions and variables.\n return function(source) {\n var result;\n\n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error('Syntax error');\n }\n\n return result;\n };\n})();\n\n_.base64Encode = function(data) {\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = '',\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data = _.utf8Encode(data);\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n};\n\n_.utf8Encode = function(string) {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n var utftext = '',\n start,\n end;\n var stringl = 0,\n n;\n\n start = end = 0;\n stringl = string.length;\n\n for (n = 0; n < stringl; n++) {\n var c1 = string.charCodeAt(n);\n var enc = null;\n\n if (c1 < 128) {\n end++;\n } else if ((c1 > 127) && (c1 < 2048)) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n }\n if (enc !== null) {\n if (end > start) {\n utftext += string.substring(start, end);\n }\n utftext += enc;\n start = end = n + 1;\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length);\n }\n\n return utftext;\n};\n\n_.UUID = function() {\n try {\n // use native Crypto API when available\n return window['crypto']['randomUUID']();\n } catch (err) {\n // fall back to generating our own UUID\n // based on https://gist.github.com/scwood/3bff42cc005cc20ab7ec98f0d8e1d59d\n var uuid = new Array(36);\n for (var i = 0; i < 36; i++) {\n uuid[i] = Math.floor(Math.random() * 16);\n }\n uuid[14] = 4; // set bits 12-15 of time-high-and-version to 0100\n uuid[19] = uuid[19] &= ~(1 << 2); // set bit 6 of clock-seq-and-reserved to zero\n uuid[19] = uuid[19] |= (1 << 3); // set bit 7 of clock-seq-and-reserved to one\n uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';\n\n return _.map(uuid, function(x) {\n return x.toString(16);\n }).join('');\n }\n};\n\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false tracking data\nvar BLOCKED_UA_STRS = [\n 'ahrefsbot',\n 'ahrefssiteaudit',\n 'amazonbot',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'chrome-lighthouse',\n 'facebookexternal',\n 'petalbot',\n 'pinterest',\n 'screaming frog',\n 'yahoo! slurp',\n 'yandex',\n\n // a whole bunch of goog-specific crawlers\n // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google'\n];\n_.isBlockedUA = function(ua) {\n var i;\n ua = ua.toLowerCase();\n for (i = 0; i < BLOCKED_UA_STRS.length; i++) {\n if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n_.HTTPBuildQuery = function(formdata, arg_separator) {\n var use_val, use_key, tmp_arr = [];\n\n if (_.isUndefined(arg_separator)) {\n arg_separator = '&';\n }\n\n _.each(formdata, function(val, key) {\n use_val = encodeURIComponent(val.toString());\n use_key = encodeURIComponent(key);\n tmp_arr[tmp_arr.length] = use_key + '=' + use_val;\n });\n\n return tmp_arr.join(arg_separator);\n};\n\n_.getQueryParam = function(url, param) {\n // Expects a raw URL\n\n param = param.replace(/[[]/g, '\\\\[').replace(/[\\]]/g, '\\\\]');\n var regexS = '[\\\\?&]' + param + '=([^&#]*)',\n regex = new RegExp(regexS),\n results = regex.exec(url);\n if (results === null || (results && typeof(results[1]) !== 'string' && results[1].length)) {\n return '';\n } else {\n var result = results[1];\n try {\n result = decodeURIComponent(result);\n } catch(err) {\n console.error('Skipping decoding for malformed query param: ' + result);\n }\n return result.replace(/\\+/g, ' ');\n }\n};\n\n\n// _.cookie\n// Methods partially borrowed from quirksmode.org/js/cookies.html\n_.cookie = {\n get: function(name) {\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) == ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n },\n\n parse: function(name) {\n var cookie;\n try {\n cookie = _.JSONDecode(_.cookie.get(name)) || {};\n } catch (err) {\n // noop\n }\n return cookie;\n },\n\n set_seconds: function(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '',\n expires = '',\n secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (seconds) {\n var date = new Date();\n date.setTime(date.getTime() + (seconds * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n document.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n },\n\n set: function(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '', expires = '', secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n document.cookie = new_cookie_val;\n return new_cookie_val;\n },\n\n remove: function(name, is_cross_subdomain, domain_override) {\n _.cookie.set(name, '', -1, is_cross_subdomain, false, false, domain_override);\n }\n};\n\nvar _testStorageSupported = function (storage) {\n var supported = true;\n try {\n var key = '__mplss_' + cheap_guid(8),\n val = 'xyz';\n storage.setItem(key, val);\n if (storage.getItem(key) !== val) {\n supported = false;\n }\n storage.removeItem(key);\n } catch (err) {\n supported = false;\n }\n return supported;\n};\n\nvar _localStorageSupported = null;\nvar localStorageSupported = function(storage, forceCheck) {\n if (_localStorageSupported !== null && !forceCheck) {\n return _localStorageSupported;\n }\n return _localStorageSupported = _testStorageSupported(storage || window.localStorage);\n};\n\nvar _sessionStorageSupported = null;\nvar sessionStorageSupported = function(storage, forceCheck) {\n if (_sessionStorageSupported !== null && !forceCheck) {\n return _sessionStorageSupported;\n }\n return _sessionStorageSupported = _testStorageSupported(storage || window.sessionStorage);\n};\n\nfunction _storageWrapper(storage, name, is_supported_fn) {\n var log_error = function(msg) {\n console.error(name + ' error: ' + msg);\n };\n\n return {\n is_supported: function(forceCheck) {\n var supported = is_supported_fn(storage, forceCheck);\n if (!supported) {\n console.error(name + ' unsupported');\n }\n return supported;\n },\n error: log_error,\n get: function(key) {\n try {\n return storage.getItem(key);\n } catch (err) {\n log_error(err);\n }\n return null;\n },\n parse: function(key) {\n try {\n return _.JSONDecode(storage.getItem(key)) || {};\n } catch (err) {\n // noop\n }\n return null;\n },\n set: function(key, value) {\n try {\n storage.setItem(key, value);\n } catch (err) {\n log_error(err);\n }\n },\n remove: function(key) {\n try {\n storage.removeItem(key);\n } catch (err) {\n log_error(err);\n }\n }\n };\n}\n\n_.localStorage = _storageWrapper(window.localStorage, 'localStorage', localStorageSupported);\n_.sessionStorage = _storageWrapper(window.sessionStorage, 'sessionStorage', sessionStorageSupported);\n\n_.register_event = (function() {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from Mixpanel\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n var register_event = function(element, type, handler, oldSchool, useCapture) {\n if (!element) {\n console.error('No valid element provided to register_event');\n return;\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture);\n } else {\n var ontype = 'on' + type;\n var old_handler = element[ontype]; // can be undefined\n element[ontype] = makeHandler(element, handler, old_handler);\n }\n };\n\n function makeHandler(element, new_handler, old_handlers) {\n var handler = function(event) {\n event = event || fixEvent(window.event);\n\n // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n if (!event) {\n return undefined;\n }\n\n var ret = true;\n var old_result, new_result;\n\n if (_.isFunction(old_handlers)) {\n old_result = old_handlers(event);\n }\n new_result = new_handler.call(element, event);\n\n if ((false === old_result) || (false === new_result)) {\n ret = false;\n }\n\n return ret;\n };\n\n return handler;\n }\n\n function fixEvent(event) {\n if (event) {\n event.preventDefault = fixEvent.preventDefault;\n event.stopPropagation = fixEvent.stopPropagation;\n }\n return event;\n }\n fixEvent.preventDefault = function() {\n this.returnValue = false;\n };\n fixEvent.stopPropagation = function() {\n this.cancelBubble = true;\n };\n\n return register_event;\n})();\n\n\nvar TOKEN_MATCH_REGEX = new RegExp('^(\\\\w*)\\\\[(\\\\w+)([=~\\\\|\\\\^\\\\$\\\\*]?)=?\"?([^\\\\]\"]*)\"?\\\\]$');\n\n_.dom_query = (function() {\n /* document.getElementsBySelector(selector)\n - returns an array of element objects from the current document\n matching the CSS selector. Selectors can contain element names,\n class names and ids and can be nested. For example:\n\n elements = document.getElementsBySelector('div#main p a.external')\n\n Will return an array of all 'a' elements with 'external' in their\n class attribute that are contained inside 'p' elements that are\n contained inside the 'div' element which has id=\"main\"\n\n New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\n Version 0.4 - Simon Willison, March 25th 2003\n -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n -- Opera 7 fails\n\n Version 0.5 - Carl Sverre, Jan 7th 2013\n -- Now uses jQuery-esque `hasClass` for testing class name\n equality. This fixes a bug related to '-' characters being\n considered not part of a 'word' in regex.\n */\n\n function getAllChildren(e) {\n // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n return e.all ? e.all : e.getElementsByTagName('*');\n }\n\n var bad_whitespace = /[\\t\\r\\n]/g;\n\n function hasClass(elem, selector) {\n var className = ' ' + selector + ' ';\n return ((' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0);\n }\n\n function getElementsBySelector(selector) {\n // Attempt to fail gracefully in lesser browsers\n if (!document.getElementsByTagName) {\n return [];\n }\n // Split selector in to tokens\n var tokens = selector.split(' ');\n var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;\n var currentContext = [document];\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i].replace(/^\\s+/, '').replace(/\\s+$/, '');\n if (token.indexOf('#') > -1) {\n // Token is an ID selector\n bits = token.split('#');\n tagName = bits[0];\n var id = bits[1];\n var element = document.getElementById(id);\n if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {\n // element not found or tag with that ID not found, return false\n return [];\n }\n // Set currentContext to contain just this element\n currentContext = [element];\n continue; // Skip to next token\n }\n if (token.indexOf('.') > -1) {\n // Token contains a class selector\n bits = token.split('.');\n tagName = bits[0];\n var className = bits[1];\n if (!tagName) {\n tagName = '*';\n }\n // Get elements matching tag, filter them for class selector\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (found[j].className &&\n _.isString(found[j].className) && // some SVG elements have classNames which are not strings\n hasClass(found[j], className)\n ) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n continue; // Skip to next token\n }\n // Code to deal with attribute selectors\n var token_match = token.match(TOKEN_MATCH_REGEX);\n if (token_match) {\n tagName = token_match[1];\n var attrName = token_match[2];\n var attrOperator = token_match[3];\n var attrValue = token_match[4];\n if (!tagName) {\n tagName = '*';\n }\n // Grab all of the tagName elements within current context\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n var checkFunction; // This function will be used to filter the elements\n switch (attrOperator) {\n case '=': // Equality\n checkFunction = function(e) {\n return (e.getAttribute(attrName) == attrValue);\n };\n break;\n case '~': // Match one of space seperated words\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('\\\\b' + attrValue + '\\\\b')));\n };\n break;\n case '|': // Match start with value followed by optional hyphen\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?')));\n };\n break;\n case '^': // Match starts with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) === 0);\n };\n break;\n case '$': // Match ends with value - fails with \"Warning\" in Opera 7\n checkFunction = function(e) {\n return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length);\n };\n break;\n case '*': // Match ends with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) > -1);\n };\n break;\n default:\n // Just test for existence of attribute\n checkFunction = function(e) {\n return e.getAttribute(attrName);\n };\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (checkFunction(found[j])) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n continue; // Skip to next token\n }\n // If we get here, token is JUST an element (not a class or ID selector)\n tagName = token;\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n elements = currentContext[j].getElementsByTagName(tagName);\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = found;\n }\n return currentContext;\n }\n\n return function(query) {\n if (_.isElement(query)) {\n return [query];\n } else if (_.isObject(query) && !_.isUndefined(query.length)) {\n return query;\n } else {\n return getElementsBySelector.call(this, query);\n }\n };\n})();\n\nvar CAMPAIGN_KEYWORDS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'utm_id', 'utm_source_platform','utm_campaign_id', 'utm_creative_format', 'utm_marketing_tactic'];\nvar CLICK_IDS = ['dclid', 'fbclid', 'gclid', 'ko_click_id', 'li_fat_id', 'msclkid', 'sccid', 'ttclid', 'twclid', 'wbraid'];\n\n_.info = {\n campaignParams: function(default_value) {\n var kw = '',\n params = {};\n _.each(CAMPAIGN_KEYWORDS, function(kwkey) {\n kw = _.getQueryParam(document.URL, kwkey);\n if (kw.length) {\n params[kwkey] = kw;\n } else if (default_value !== undefined) {\n params[kwkey] = default_value;\n }\n });\n\n return params;\n },\n\n clickParams: function() {\n var id = '',\n params = {};\n _.each(CLICK_IDS, function(idkey) {\n id = _.getQueryParam(document.URL, idkey);\n if (id.length) {\n params[idkey] = id;\n }\n });\n\n return params;\n },\n\n marketingParams: function() {\n return _.extend(_.info.campaignParams(), _.info.clickParams());\n },\n\n searchEngine: function(referrer) {\n if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google';\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing';\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo';\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo';\n } else {\n return null;\n }\n },\n\n searchInfo: function(referrer) {\n var search = _.info.searchEngine(referrer),\n param = (search != 'yahoo') ? 'q' : 'p',\n ret = {};\n\n if (search !== null) {\n ret['$search_engine'] = search;\n\n var keyword = _.getQueryParam(referrer, param);\n if (keyword.length) {\n ret['mp_keyword'] = keyword;\n }\n }\n\n return ret;\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function(user_agent, vendor, opera) {\n vendor = vendor || ''; // vendor is undefined for at least IE9\n if (opera || _.includes(user_agent, ' OPR/')) {\n if (_.includes(user_agent, 'Mini')) {\n return 'Opera Mini';\n }\n return 'Opera';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile';\n } else if (_.includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet';\n } else if (_.includes(user_agent, 'Edge') || _.includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge';\n } else if (_.includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile';\n } else if (_.includes(user_agent, 'Chrome')) {\n return 'Chrome';\n } else if (_.includes(user_agent, 'CriOS')) {\n return 'Chrome iOS';\n } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {\n return 'UC Browser';\n } else if (_.includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS';\n } else if (_.includes(vendor, 'Apple')) {\n if (_.includes(user_agent, 'Mobile')) {\n return 'Mobile Safari';\n }\n return 'Safari';\n } else if (_.includes(user_agent, 'Android')) {\n return 'Android Mobile';\n } else if (_.includes(user_agent, 'Konqueror')) {\n return 'Konqueror';\n } else if (_.includes(user_agent, 'Firefox')) {\n return 'Firefox';\n } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {\n return 'Internet Explorer';\n } else if (_.includes(user_agent, 'Gecko')) {\n return 'Mozilla';\n } else {\n return '';\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n */\n browserVersion: function(userAgent, vendor, opera) {\n var browser = _.info.browser(userAgent, vendor, opera);\n var versionRegexs = {\n 'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n 'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n 'Chrome': /Chrome\\/(\\d+(\\.\\d+)?)/,\n 'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n 'UC Browser' : /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n 'Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Opera': /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n 'Firefox': /Firefox\\/(\\d+(\\.\\d+)?)/,\n 'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n 'Konqueror': /Konqueror:(\\d+(\\.\\d+)?)/,\n 'BlackBerry': /BlackBerry (\\d+(\\.\\d+)?)/,\n 'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n 'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n 'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n 'Mozilla': /rv:(\\d+(\\.\\d+)?)/\n };\n var regex = versionRegexs[browser];\n if (regex === undefined) {\n return null;\n }\n var matches = userAgent.match(regex);\n if (!matches) {\n return null;\n }\n return parseFloat(matches[matches.length - 2]);\n },\n\n os: function() {\n var a = userAgent;\n if (/Windows/i.test(a)) {\n if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n return 'Windows Phone';\n }\n return 'Windows';\n } else if (/(iPhone|iPad|iPod)/.test(a)) {\n return 'iOS';\n } else if (/Android/.test(a)) {\n return 'Android';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n return 'BlackBerry';\n } else if (/Mac/i.test(a)) {\n return 'Mac OS X';\n } else if (/Linux/.test(a)) {\n return 'Linux';\n } else if (/CrOS/.test(a)) {\n return 'Chrome OS';\n } else {\n return '';\n }\n },\n\n device: function(user_agent) {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone';\n } else if (/iPad/.test(user_agent)) {\n return 'iPad';\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch';\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (/Android/.test(user_agent)) {\n return 'Android';\n } else {\n return '';\n }\n },\n\n referringDomain: function(referrer) {\n var split = referrer.split('/');\n if (split.length >= 3) {\n return split[2];\n }\n return '';\n },\n\n currentUrl: function() {\n return window.location.href;\n },\n\n properties: function(extra_props) {\n if (typeof extra_props !== 'object') {\n extra_props = {};\n }\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera),\n '$referrer': document.referrer,\n '$referring_domain': _.info.referringDomain(document.referrer),\n '$device': _.info.device(userAgent)\n }), {\n '$current_url': _.info.currentUrl(),\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera),\n '$screen_height': screen.height,\n '$screen_width': screen.width,\n 'mp_lib': 'web',\n '$lib_version': Config.LIB_VERSION,\n '$insert_id': cheap_guid(),\n 'time': _.timestamp() / 1000 // epoch time in seconds\n }, _.strip_empty_properties(extra_props));\n },\n\n people_properties: function() {\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera)\n }), {\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera)\n });\n },\n\n mpPageViewProperties: function() {\n return _.strip_empty_properties({\n 'current_page_title': document.title,\n 'current_domain': window.location.hostname,\n 'current_url_path': window.location.pathname,\n 'current_url_protocol': window.location.protocol,\n 'current_url_search': window.location.search\n });\n }\n};\n\n/**\n * Returns a throttled function that will only run at most every `waitMs` and returns a promise that resolves with the next invocation.\n * Throttled calls will build up a batch of args and invoke the callback with all args since the last invocation.\n */\nvar batchedThrottle = function (fn, waitMs) {\n var timeoutPromise = null;\n var throttledItems = [];\n return function (item) {\n var self = this;\n throttledItems.push(item);\n\n if (!timeoutPromise) {\n timeoutPromise = new Promise(function (resolve) {\n setTimeout(function () {\n var returnValue = fn.apply(self, [throttledItems]);\n timeoutPromise = null;\n throttledItems = [];\n resolve(returnValue);\n }, waitMs);\n });\n }\n return timeoutPromise;\n };\n};\n\nvar cheap_guid = function(maxlen) {\n var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);\n return maxlen ? guid.substring(0, maxlen) : guid;\n};\n\n// naive way to extract domain name (example.com) from full hostname (my.sub.example.com)\nvar SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\\.[a-z]+$/i;\n// this next one attempts to account for some ccSLDs, e.g. extracting oxford.ac.uk from www.oxford.ac.uk\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i;\n/**\n * Attempts to extract main domain name from full hostname, using a few blunt heuristics. For\n * common TLDs like .com/.org that always have a simple SLD.TLD structure (example.com), we\n * simply extract the last two .-separated parts of the hostname (SIMPLE_DOMAIN_MATCH_REGEX).\n * For others, we attempt to account for short ccSLD+TLD combos (.ac.uk) with the legacy\n * DOMAIN_MATCH_REGEX (kept to maintain backwards compatibility with existing Mixpanel\n * integrations). The only _reliable_ way to extract domain from hostname is with an up-to-date\n * list like at https://publicsuffix.org/ so for cases that this helper fails at, the SDK\n * offers the 'cookie_domain' config option to set it explicitly.\n * @example\n * extract_domain('my.sub.example.com')\n * // 'example.com'\n */\nvar extract_domain = function(hostname) {\n var domain_regex = DOMAIN_MATCH_REGEX;\n var parts = hostname.split('.');\n var tld = parts[parts.length - 1];\n if (tld.length > 4 || tld === 'com' || tld === 'org') {\n domain_regex = SIMPLE_DOMAIN_MATCH_REGEX;\n }\n var matches = hostname.match(domain_regex);\n return matches ? matches[0] : '';\n};\n\n/**\n * Check whether we have network connection. default to true for browsers that don't support navigator.onLine (IE)\n * @returns {boolean}\n */\nvar isOnline = function() {\n var onLine = window.navigator['onLine'];\n return _.isUndefined(onLine) || onLine;\n};\n\nvar NOOP_FUNC = function () {};\n\nvar JSONStringify = null, JSONParse = null;\nif (typeof JSON !== 'undefined') {\n JSONStringify = JSON.stringify;\n JSONParse = JSON.parse;\n}\nJSONStringify = JSONStringify || _.JSONEncode;\nJSONParse = JSONParse || _.JSONDecode;\n\n// UNMINIFIED EXPORTS (for closure compiler)\n_['info'] = _.info;\n_['info']['browser'] = _.info.browser;\n_['info']['browserVersion'] = _.info.browserVersion;\n_['info']['device'] = _.info.device;\n_['info']['properties'] = _.info.properties;\n_['isBlockedUA'] = _.isBlockedUA;\n_['isEmptyObject'] = _.isEmptyObject;\n_['isObject'] = _.isObject;\n_['JSONDecode'] = _.JSONDecode;\n_['JSONEncode'] = _.JSONEncode;\n_['toArray'] = _.toArray;\n_['NPO'] = NpoPromise;\n\nexport {\n _,\n batchedThrottle,\n cheap_guid,\n console_with_prefix,\n console,\n document,\n extract_domain,\n JSONParse,\n JSONStringify,\n isOnline,\n localStorageSupported,\n MAX_RECORDING_MS,\n MAX_VALUE_FOR_MIN_RECORDING_MS,\n navigator,\n NOOP_FUNC,\n safewrap,\n safewrapClass,\n slice,\n userAgent,\n};\n","import { Promise } from '../promise-polyfill';\nimport { window } from '../window';\n\nvar MIXPANEL_DB_NAME = 'mixpanelBrowserDb';\n\nvar RECORDING_EVENTS_STORE_NAME = 'mixpanelRecordingEvents';\nvar RECORDING_REGISTRY_STORE_NAME = 'mixpanelRecordingRegistry';\n\n// note: increment the version number when adding new object stores\nvar DB_VERSION = 1;\nvar OBJECT_STORES = [RECORDING_EVENTS_STORE_NAME, RECORDING_REGISTRY_STORE_NAME];\n\n/**\n * @type {import('./wrapper').StorageWrapper}\n */\nvar IDBStorageWrapper = function (storeName) {\n /**\n * @type {Promise<IDBDatabase>|null}\n */\n this.dbPromise = null;\n this.storeName = storeName;\n};\n\nIDBStorageWrapper.prototype._openDb = function () {\n return new Promise(function (resolve, reject) {\n var openRequest = window.indexedDB.open(MIXPANEL_DB_NAME, DB_VERSION);\n openRequest['onerror'] = function () {\n reject(openRequest.error);\n };\n\n openRequest['onsuccess'] = function () {\n resolve(openRequest.result);\n };\n\n openRequest['onupgradeneeded'] = function (ev) {\n var db = ev.target.result;\n\n OBJECT_STORES.forEach(function (storeName) {\n db.createObjectStore(storeName);\n });\n };\n });\n};\n\nIDBStorageWrapper.prototype.init = function () {\n if (!window.indexedDB) {\n return Promise.reject('indexedDB is not supported in this browser');\n }\n\n if (!this.dbPromise) {\n this.dbPromise = this._openDb();\n }\n\n return this.dbPromise\n .then(function (dbOrError) {\n if (dbOrError instanceof window['IDBDatabase']) {\n return Promise.resolve();\n } else {\n return Promise.reject(dbOrError);\n }\n });\n};\n\n/**\n * @param {IDBTransactionMode} mode\n * @param {function(IDBObjectStore): void} storeCb\n */\nIDBStorageWrapper.prototype.makeTransaction = function (mode, storeCb) {\n var storeName = this.storeName;\n var doTransaction = function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction(storeName, mode);\n transaction.oncomplete = function () {\n resolve(transaction);\n };\n transaction.onabort = transaction.onerror = function () {\n reject(transaction.error);\n };\n\n storeCb(transaction.objectStore(storeName));\n });\n };\n\n return this.dbPromise\n .then(doTransaction)\n .catch(function (err) {\n if (err && err['name'] === 'InvalidStateError') {\n // try reopening the DB if the connection is closed\n this.dbPromise = this._openDb();\n return this.dbPromise.then(doTransaction);\n } else {\n return Promise.reject(err);\n }\n }.bind(this));\n};\n\nIDBStorageWrapper.prototype.setItem = function (key, value) {\n return this.makeTransaction('readwrite', function (objectStore) {\n objectStore.put(value, key);\n });\n};\n\nIDBStorageWrapper.prototype.getItem = function (key) {\n var req;\n return this.makeTransaction('readonly', function (objectStore) {\n req = objectStore.get(key);\n }).then(function () {\n return req.result;\n });\n};\n\nIDBStorageWrapper.prototype.removeItem = function (key) {\n return this.makeTransaction('readwrite', function (objectStore) {\n objectStore.delete(key);\n });\n};\n\nIDBStorageWrapper.prototype.getAll = function () {\n var req;\n return this.makeTransaction('readonly', function (objectStore) {\n req = objectStore.getAll();\n }).then(function () {\n return req.result;\n });\n};\n\nexport { IDBStorageWrapper, RECORDING_EVENTS_STORE_NAME, RECORDING_REGISTRY_STORE_NAME };\n","/**\n * GDPR utils\n *\n * The General Data Protection Regulation (GDPR) is a regulation in EU law on data protection\n * and privacy for all individuals within the European Union. It addresses the export of personal\n * data outside the EU. The GDPR aims primarily to give control back to citizens and residents\n * over their personal data and to simplify the regulatory environment for international business\n * by unifying the regulation within the EU.\n *\n * This set of utilities is intended to enable opt in/out functionality in the Mixpanel JS SDK.\n * These functions are used internally by the SDK and are not intended to be publicly exposed.\n */\n\nimport { _, console } from './utils';\nimport { window } from './window';\n\n/**\n * A function used to track a Mixpanel event (e.g. MixpanelLib.track)\n * @callback trackFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n */\n\n/** Public **/\n\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nexport function optIn(token, options) {\n _optInOut(true, token, options);\n}\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\nexport function optOut(token, options) {\n _optInOut(false, token, options);\n}\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\nexport function hasOptedIn(token, options) {\n return _getStorageValue(token, options) === '1';\n}\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the user has opted out of the given opt type\n */\nexport function hasOptedOut(token, options) {\n if (_hasDoNotTrackFlagOn(options)) {\n console.warn('This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\"');\n return true;\n }\n var optedOut = _getStorageValue(token, options) === '0';\n if (optedOut) {\n console.warn('You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data.');\n }\n return optedOut;\n}\n\n/**\n * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nexport function addOptOutCheckMixpanelLib(method) {\n return _addOptOutCheck(method, function(name) {\n return this.get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nexport function addOptOutCheckMixpanelPeople(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nexport function addOptOutCheckMixpanelGroup(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nexport function clearOptInOut(token, options) {\n options = options || {};\n _getStorage(options).remove(\n _getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain\n );\n}\n\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either _.cookie or _.localstorage\n */\nfunction _getStorage(options) {\n options = options || {};\n return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;\n}\n\n/**\n * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\nfunction _getStorageKey(token, options) {\n options = options || {};\n return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n\n/**\n * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\nfunction _getStorageValue(token, options) {\n return _getStorage(options).get(_getStorageKey(token, options));\n}\n\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the DNT setting is true\n */\nfunction _hasDoNotTrackFlagOn(options) {\n if (options && options.ignoreDnt) {\n return false;\n }\n var win = (options && options.window) || window;\n var nav = win['navigator'] || {};\n var hasDntOn = false;\n\n _.each([\n nav['doNotTrack'], // standard\n nav['msDoNotTrack'],\n win['doNotTrack']\n ], function(dntValue) {\n if (_.includes([true, 1, '1', 'yes'], dntValue)) {\n hasDntOn = true;\n }\n });\n\n return hasDntOn;\n}\n\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction _optInOut(optValue, token, options) {\n if (!_.isString(token) || !token.length) {\n console.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n return;\n }\n\n options = options || {};\n\n _getStorage(options).set(\n _getStorageKey(token, options),\n optValue ? 1 : 0,\n _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null,\n !!options.crossSubdomainCookie,\n !!options.secureCookie,\n !!options.crossSiteCookie,\n options.cookieDomain\n );\n\n if (options.track && optValue) { // only track event if opting in (optValue=true)\n options.track(options.trackEventName || '$opt_in', options.trackProperties, {\n 'send_immediately': true\n });\n }\n}\n\n/**\n * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction _addOptOutCheck(method, getConfigValue) {\n return function() {\n var optedOut = false;\n\n try {\n var token = getConfigValue.call(this, 'token');\n var ignoreDnt = getConfigValue.call(this, 'ignore_dnt');\n var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');\n var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');\n var win = getConfigValue.call(this, 'window'); // used to override window during browser tests\n\n if (token) { // if there was an issue getting the token, continue method execution as normal\n optedOut = hasOptedOut(token, {\n ignoreDnt: ignoreDnt,\n persistenceType: persistenceType,\n persistencePrefix: persistencePrefix,\n window: win\n });\n }\n } catch(err) {\n console.error('Unexpected error when checking tracking opt-out status: ' + err);\n }\n\n if (!optedOut) {\n return method.apply(this, arguments);\n }\n\n var callback = arguments[arguments.length - 1];\n if (typeof(callback) === 'function') {\n callback(0);\n }\n\n return;\n };\n}\n","import { Promise } from './promise-polyfill';\nimport { console_with_prefix, localStorageSupported, _ } from './utils'; // eslint-disable-line camelcase\nimport { window } from './window';\n\nvar logger = console_with_prefix('lock');\n\n/**\n * SharedLock: a mutex built on HTML5 localStorage, to ensure that only one browser\n * window/tab at a time will be able to access shared resources.\n *\n * Based on the Alur and Taubenfeld fast lock\n * (http://www.cs.rochester.edu/research/synchronization/pseudocode/fastlock.html)\n * with an added timeout to ensure there will be eventual progress in the event\n * that a window is closed in the middle of the callback.\n *\n * Implementation based on the original version by David Wolever (https://github.com/wolever)\n * at https://gist.github.com/wolever/5fd7573d1ef6166e8f8c4af286a69432.\n *\n * @example\n * const myLock = new SharedLock('some-key');\n * myLock.withLock(function() {\n * console.log('I hold the mutex!');\n * });\n *\n * @constructor\n */\nvar SharedLock = function(key, options) {\n options = options || {};\n\n this.storageKey = key;\n this.storage = options.storage || window.localStorage;\n this.pollIntervalMS = options.pollIntervalMS || 100;\n this.timeoutMS = options.timeoutMS || 2000;\n\n // dependency-inject promise implementation for testing purposes\n this.promiseImpl = options.promiseImpl || Promise;\n};\n\n// pass in a specific pid to test contention scenarios; otherwise\n// it is chosen randomly for each acquisition attempt\nSharedLock.prototype.withLock = function(lockedCB, pid) {\n var Promise = this.promiseImpl;\n return new Promise(_.bind(function (resolve, reject) {\n var i = pid || (new Date().getTime() + '|' + Math.random());\n var startTime = new Date().getTime();\n var key = this.storageKey;\n var pollIntervalMS = this.pollIntervalMS;\n var timeoutMS = this.timeoutMS;\n var storage = this.storage;\n\n var keyX = key + ':X';\n var keyY = key + ':Y';\n var keyZ = key + ':Z';\n\n var delay = function(cb) {\n if (new Date().getTime() - startTime > timeoutMS) {\n logger.error('Timeout waiting for mutex on ' + key + '; clearing lock. [' + i + ']');\n storage.removeItem(keyZ);\n storage.removeItem(keyY);\n loop();\n return;\n }\n setTimeout(function() {\n try {\n cb();\n } catch(err) {\n reject(err);\n }\n }, pollIntervalMS * (Math.random() + 0.1));\n };\n\n var waitFor = function(predicate, cb) {\n if (predicate()) {\n cb();\n } else {\n delay(function() {\n waitFor(predicate, cb);\n });\n }\n };\n\n var getSetY = function() {\n var valY = storage.getItem(keyY);\n if (valY && valY !== i) { // if Y == i then this process already has the lock (useful for test cases)\n return false;\n } else {\n storage.setItem(keyY, i);\n if (storage.getItem(keyY) === i) {\n return true;\n } else {\n if (!localStorageSupported(storage, true)) {\n reject(new Error('localStorage support dropped while acquiring lock'));\n }\n return false;\n }\n }\n };\n\n var loop = function() {\n storage.setItem(keyX, i);\n\n waitFor(getSetY, function() {\n if (storage.getItem(keyX) === i) {\n criticalSection();\n return;\n }\n\n delay(function() {\n if (storage.getItem(keyY) !== i) {\n loop();\n return;\n }\n waitFor(function() {\n return !storage.getItem(keyZ);\n }, criticalSection);\n });\n });\n };\n\n var criticalSection = function() {\n storage.setItem(keyZ, '1');\n var removeLock = function () {\n storage.removeItem(keyZ);\n if (storage.getItem(keyY) === i) {\n storage.removeItem(keyY);\n }\n if (storage.getItem(keyX) === i) {\n storage.removeItem(keyX);\n }\n };\n\n lockedCB()\n .then(function (ret) {\n removeLock();\n resolve(ret);\n })\n .catch(function (err) {\n removeLock();\n reject(err);\n });\n };\n\n try {\n if (localStorageSupported(storage, true)) {\n loop();\n } else {\n throw new Error('localStorage support check failed');\n }\n } catch(err) {\n reject(err);\n }\n }, this));\n};\n\nexport { SharedLock };\n","import { Promise } from '../promise-polyfill';\nimport { _, JSONParse, JSONStringify } from '../utils'; // eslint-disable-line camelcase\n\n/**\n * @type {import('./wrapper').StorageWrapper}\n */\nvar LocalStorageWrapper = function (storageOverride) {\n this.storage = storageOverride || localStorage;\n};\n\nLocalStorageWrapper.prototype.init = function () {\n return Promise.resolve();\n};\n\nLocalStorageWrapper.prototype.setItem = function (key, value) {\n return new Promise(_.bind(function (resolve, reject) {\n try {\n this.storage.setItem(key, JSONStringify(value));\n } catch (e) {\n reject(e);\n }\n resolve();\n }, this));\n};\n\nLocalStorageWrapper.prototype.getItem = function (key) {\n return new Promise(_.bind(function (resolve, reject) {\n var item;\n try {\n item = JSONParse(this.storage.getItem(key));\n } catch (e) {\n reject(e);\n }\n resolve(item);\n }, this));\n};\n\nLocalStorageWrapper.prototype.removeItem = function (key) {\n return new Promise(_.bind(function (resolve, reject) {\n try {\n this.storage.removeItem(key);\n } catch (e) {\n reject(e);\n }\n resolve();\n }, this));\n};\n\nexport { LocalStorageWrapper };\n","import { SharedLock } from './shared-lock';\nimport { batchedThrottle, cheap_guid, console_with_prefix, localStorageSupported, _ } from './utils'; // eslint-disable-line camelcase\nimport { window } from './window';\nimport { LocalStorageWrapper } from './storage/local-storage';\nimport { Promise } from './promise-polyfill';\n\nvar logger = console_with_prefix('batch');\n\n/**\n * RequestQueue: queue for batching API requests with localStorage backup for retries.\n * Maintains an in-memory queue which represents the source of truth for the current\n * page, but also writes all items out to a copy in the browser's localStorage, which\n * can be read on subsequent pageloads and retried. For batchability, all the request\n * items in the queue should be of the same type (events, people updates, group updates)\n * so they can be sent in a single request to the same API endpoint.\n *\n * LocalStorage keying and locking: In order for reloads and subsequent pageloads of\n * the same site to access the same persisted data, they must share the same localStorage\n * key (for instance based on project token and queue type). Therefore access to the\n * localStorage entry is guarded by an asynchronous mutex (SharedLock) to prevent\n * simultaneously open windows/tabs from overwriting each other's data (which would lead\n * to data loss in some situations).\n * @constructor\n */\nvar RequestQueue = function (storageKey, options) {\n options = options || {};\n this.storageKey = storageKey;\n this.usePersistence = options.usePersistence;\n if (this.usePersistence) {\n this.queueStorage = options.queueStorage || new LocalStorageWrapper();\n this.lock = new SharedLock(storageKey, {\n storage: options.sharedLockStorage || window.localStorage,\n timeoutMS: options.sharedLockTimeoutMS,\n });\n }\n this.reportError = options.errorReporter || _.bind(logger.error, logger);\n\n this.pid = options.pid || null; // pass pid to test out storage lock contention scenarios\n\n this.memQueue = [];\n this.initialized = false;\n\n if (options.enqueueThrottleMs) {\n this.enqueuePersisted = batchedThrottle(_.bind(this._enqueuePersisted, this), options.enqueueThrottleMs);\n } else {\n this.enqueuePersisted = _.bind(function (queueEntry) {\n return this._enqueuePersisted([queueEntry]);\n }, this);\n }\n};\n\nRequestQueue.prototype.ensureInit = function () {\n if (this.initialized) {\n return Promise.resolve();\n }\n\n return this.queueStorage\n .init()\n .then(_.bind(function () {\n this.initialized = true;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error initializing queue persistence. Disabling persistence', err);\n this.initialized = true;\n this.usePersistence = false;\n }, this));\n};\n\n/**\n * Add one item to queues (memory and localStorage). The queued entry includes\n * the given item along with an auto-generated ID and a \"flush-after\" timestamp.\n * It is expected that the item will be sent over the network and dequeued\n * before the flush-after time; if this doesn't happen it is considered orphaned\n * (e.g., the original tab where it was enqueued got closed before it could be\n * sent) and the item can be sent by any tab that finds it in localStorage.\n *\n * The final callback param is called with a param indicating success or\n * failure of the enqueue operation; it is asynchronous because the localStorage\n * lock is asynchronous.\n */\nRequestQueue.prototype.enqueue = function (item, flushInterval) {\n var queueEntry = {\n 'id': cheap_guid(),\n 'flushAfter': new Date().getTime() + flushInterval * 2,\n 'payload': item\n };\n\n if (!this.usePersistence) {\n this.memQueue.push(queueEntry);\n return Promise.resolve(true);\n } else {\n return this.enqueuePersisted(queueEntry);\n }\n};\n\nRequestQueue.prototype._enqueuePersisted = function (queueEntries) {\n var enqueueItem = _.bind(function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n return this.saveToStorage(storedQueue.concat(queueEntries));\n }, this))\n .then(_.bind(function (succeeded) {\n // only add to in-memory queue when storage succeeds\n if (succeeded) {\n this.memQueue = this.memQueue.concat(queueEntries);\n }\n\n return succeeded;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error enqueueing items', err, queueEntries);\n return false;\n }, this));\n }, this);\n\n return this.lock\n .withLock(enqueueItem, this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n return false;\n }, this));\n};\n\n/**\n * Read out the given number of queue entries. If this.memQueue\n * has fewer than batchSize items, then look for \"orphaned\" items\n * in the persisted queue (items where the 'flushAfter' time has\n * already passed).\n */\nRequestQueue.prototype.fillBatch = function (batchSize) {\n var batch = this.memQueue.slice(0, batchSize);\n if (this.usePersistence && batch.length < batchSize) {\n // don't need lock just to read events; localStorage is thread-safe\n // and the worst that could happen is a duplicate send of some\n // orphaned events, which will be deduplicated on the server side\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n if (storedQueue.length) {\n // item IDs already in batch; don't duplicate out of storage\n var idsInBatch = {}; // poor man's Set\n _.each(batch, function (item) {\n idsInBatch[item['id']] = true;\n });\n\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (new Date().getTime() > item['flushAfter'] && !idsInBatch[item['id']]) {\n item.orphaned = true;\n batch.push(item);\n if (batch.length >= batchSize) {\n break;\n }\n }\n }\n }\n\n return batch;\n }, this));\n } else {\n return Promise.resolve(batch);\n }\n};\n\n/**\n * Remove items with matching 'id' from array (immutably)\n * also remove any item without a valid id (e.g., malformed\n * storage entries).\n */\nvar filterOutIDsAndInvalid = function (items, idSet) {\n var filteredItems = [];\n _.each(items, function (item) {\n if (item['id'] && !idSet[item['id']]) {\n filteredItems.push(item);\n }\n });\n return filteredItems;\n};\n\n/**\n * Remove items with matching IDs from both in-memory queue\n * and persisted queue\n */\nRequestQueue.prototype.removeItemsByID = function (ids) {\n var idSet = {}; // poor man's Set\n _.each(ids, function (id) {\n idSet[id] = true;\n });\n\n this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet);\n if (!this.usePersistence) {\n return Promise.resolve(true);\n } else {\n var removeFromStorage = _.bind(function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue = filterOutIDsAndInvalid(storedQueue, idSet);\n return this.saveToStorage(storedQueue);\n }, this))\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n // an extra check: did storage report success but somehow\n // the items are still there?\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (item['id'] && !!idSet[item['id']]) {\n throw new Error('Item not removed from storage');\n }\n }\n return true;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error removing items', err, ids);\n return false;\n }, this));\n }, this);\n\n return this.lock\n .withLock(removeFromStorage, this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n if (!localStorageSupported(this.lock.storage, true)) {\n // Looks like localStorage writes have stopped working sometime after\n // initialization (probably full), and so nobody can acquire locks\n // anymore. Consider it temporarily safe to remove items without the\n // lock, since nobody's writing successfully anyway.\n return removeFromStorage()\n .then(_.bind(function (success) {\n if (!success) {\n // OK, we couldn't even write out the smaller queue. Try clearing it\n // entirely.\n return this.queueStorage.removeItem(this.storageKey).then(function () {\n return success;\n });\n }\n return success;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error clearing queue', err);\n return false;\n }, this));\n } else {\n return false;\n }\n }, this));\n }\n};\n\n// internal helper for RequestQueue.updatePayloads\nvar updatePayloads = function (existingItems, itemsToUpdate) {\n var newItems = [];\n _.each(existingItems, function (item) {\n var id = item['id'];\n if (id in itemsToUpdate) {\n var newPayload = itemsToUpdate[id];\n if (newPayload !== null) {\n item['payload'] = newPayload;\n newItems.push(item);\n }\n } else {\n // no update\n newItems.push(item);\n }\n });\n return newItems;\n};\n\n/**\n * Update payloads of given items in both in-memory queue and\n * persisted queue. Items set to null are removed from queues.\n */\nRequestQueue.prototype.updatePayloads = function (itemsToUpdate) {\n this.memQueue = updatePayloads(this.memQueue, itemsToUpdate);\n if (!this.usePersistence) {\n return Promise.resolve(true);\n } else {\n return this.lock\n .withLock(_.bind(function lockAcquired() {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue = updatePayloads(storedQueue, itemsToUpdate);\n return this.saveToStorage(storedQueue);\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error updating items', itemsToUpdate, err);\n return false;\n }, this));\n }, this), this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n return false;\n }, this));\n }\n};\n\n/**\n * Read and parse items array from localStorage entry, handling\n * malformed/missing data if necessary.\n */\nRequestQueue.prototype.readFromStorage = function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.getItem(this.storageKey);\n }, this))\n .then(_.bind(function (storageEntry) {\n if (storageEntry) {\n if (!_.isArray(storageEntry)) {\n this.reportError('Invalid storage entry:', storageEntry);\n storageEntry = null;\n }\n }\n return storageEntry || [];\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error retrieving queue', err);\n return [];\n }, this));\n};\n\n/**\n * Serialize the given items array to localStorage.\n */\nRequestQueue.prototype.saveToStorage = function (queue) {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.setItem(this.storageKey, queue);\n }, this))\n .then(function () {\n return true;\n })\n .catch(_.bind(function (err) {\n this.reportError('Error saving queue', err);\n return false;\n }, this));\n};\n\n/**\n * Clear out queues (memory and localStorage).\n */\nRequestQueue.prototype.clear = function () {\n this.memQueue = [];\n\n if (this.usePersistence) {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.removeItem(this.storageKey);\n }, this));\n } else {\n return Promise.resolve();\n }\n};\n\nexport { RequestQueue };\n","import Config from './config';\nimport { Promise } from './promise-polyfill';\nimport { RequestQueue } from './request-queue';\nimport { console_with_prefix, isOnline, _ } from './utils'; // eslint-disable-line camelcase\n\n// maximum interval between request retries after exponential backoff\nvar MAX_RETRY_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes\n\nvar logger = console_with_prefix('batch');\n\n/**\n * RequestBatcher: manages the queueing, flushing, retry etc of requests of one\n * type (events, people, groups).\n * Uses RequestQueue to manage the backing store.\n * @constructor\n */\nvar RequestBatcher = function(storageKey, options) {\n this.errorReporter = options.errorReporter;\n this.queue = new RequestQueue(storageKey, {\n errorReporter: _.bind(this.reportError, this),\n queueStorage: options.queueStorage,\n sharedLockStorage: options.sharedLockStorage,\n sharedLockTimeoutMS: options.sharedLockTimeoutMS,\n usePersistence: options.usePersistence,\n enqueueThrottleMs: options.enqueueThrottleMs\n });\n\n this.libConfig = options.libConfig;\n this.sendRequest = options.sendRequestFunc;\n this.beforeSendHook = options.beforeSendHook;\n this.stopAllBatching = options.stopAllBatchingFunc;\n\n // seed variable batch size + flush interval with configured values\n this.batchSize = this.libConfig['batch_size'];\n this.flushInterval = this.libConfig['batch_flush_interval_ms'];\n\n this.stopped = !this.libConfig['batch_autostart'];\n this.consecutiveRemovalFailures = 0;\n\n // extra client-side dedupe\n this.itemIdsSentSuccessfully = {};\n\n // Make the flush occur at the interval specified by flushIntervalMs, default behavior will attempt consecutive flushes\n // as long as the queue is not empty. This is useful for high-frequency events like Session Replay where we might end up\n // in a request loop and get ratelimited by the server.\n this.flushOnlyOnInterval = options.flushOnlyOnInterval || false;\n\n this._flushPromise = null;\n};\n\n/**\n * Add one item to queue.\n */\nRequestBatcher.prototype.enqueue = function(item) {\n return this.queue.enqueue(item, this.flushInterval);\n};\n\n/**\n * Start flushing batches at the configured time interval. Must call\n * this method upon SDK init in order to send anything over the network.\n */\nRequestBatcher.prototype.start = function() {\n this.stopped = false;\n this.consecutiveRemovalFailures = 0;\n return this.flush();\n};\n\n/**\n * Stop flushing batches. Can be restarted by calling start().\n */\nRequestBatcher.prototype.stop = function() {\n this.stopped = true;\n if (this.timeoutID) {\n clearTimeout(this.timeoutID);\n this.timeoutID = null;\n }\n};\n\n/**\n * Clear out queue.\n */\nRequestBatcher.prototype.clear = function() {\n return this.queue.clear();\n};\n\n/**\n * Restore batch size configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetBatchSize = function() {\n this.batchSize = this.libConfig['batch_size'];\n};\n\n/**\n * Restore flush interval time configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetFlush = function() {\n this.scheduleFlush(this.libConfig['batch_flush_interval_ms']);\n};\n\n/**\n * Schedule the next flush in the given number of milliseconds.\n */\nRequestBatcher.prototype.scheduleFlush = function(flushMS) {\n this.flushInterval = flushMS;\n if (!this.stopped) { // don't schedule anymore if batching has been stopped\n this.timeoutID = setTimeout(_.bind(function() {\n if (!this.stopped) {\n this._flushPromise = this.flush();\n }\n }, this), this.flushInterval);\n }\n};\n\n/**\n * Send a request using the sendRequest callback, but promisified.\n * TODO: sendRequest should be promisified in the first place.\n */\nRequestBatcher.prototype.sendRequestPromise = function(data, options) {\n return new Promise(_.bind(function(resolve) {\n this.sendRequest(data, options, resolve);\n }, this));\n};\n\n\n/**\n * Flush one batch to network. Depending on success/failure modes, it will either\n * remove the batch from the queue or leave it in for retry, and schedule the next\n * flush. In cases of most network or API failures, it will back off exponentially\n * when retrying.\n * @param {Object} [options]\n * @param {boolean} [options.sendBeacon] - whether to send batch with\n * navigator.sendBeacon (only useful for sending batches before page unloads, as\n * sendBeacon offers no callbacks or status indications)\n */\nRequestBatcher.prototype.flush = function(options) {\n if (this.requestInProgress) {\n logger.log('Flush: Request already in progress');\n return Promise.resolve();\n }\n\n this.requestInProgress = true;\n\n options = options || {};\n var timeoutMS = this.libConfig['batch_request_timeout_ms'];\n var startTime = new Date().getTime();\n var currentBatchSize = this.batchSize;\n\n return this.queue.fillBatch(currentBatchSize)\n .then(_.bind(function(batch) {\n\n // if there's more items in the queue than the batch size, attempt\n // to flush again after the current batch is done.\n var attemptSecondaryFlush = batch.length === currentBatchSize;\n var dataForRequest = [];\n var transformedItems = {};\n _.each(batch, function(item) {\n var payload = item['payload'];\n if (this.beforeSendHook && !item.orphaned) {\n payload = this.beforeSendHook(payload);\n }\n if (payload) {\n // mp_sent_by_lib_version prop captures which lib version actually\n // sends each event (regardless of which version originally queued\n // it for sending)\n if (payload['event'] && payload['properties']) {\n payload['properties'] = _.extend(\n {},\n payload['properties'],\n {'mp_sent_by_lib_version': Config.LIB_VERSION}\n );\n }\n var addPayload = true;\n var itemId = item['id'];\n if (itemId) {\n if ((this.itemIdsSentSuccessfully[itemId] || 0) > 5) {\n this.reportError('[dupe] item ID sent too many times, not sending', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n addPayload = false;\n }\n } else {\n this.reportError('[dupe] found item with no ID', {item: item});\n }\n\n if (addPayload) {\n dataForRequest.push(payload);\n }\n }\n transformedItems[item['id']] = payload;\n }, this);\n\n if (dataForRequest.length < 1) {\n this.requestInProgress = false;\n this.resetFlush();\n return Promise.resolve(); // nothing to do\n }\n\n var removeItemsFromQueue = _.bind(function () {\n return this.queue\n .removeItemsByID(\n _.map(batch, function (item) {\n return item['id'];\n })\n )\n .then(_.bind(function (succeeded) {\n // client-side dedupe\n _.each(batch, _.bind(function(item) {\n var itemId = item['id'];\n if (itemId) {\n this.itemIdsSentSuccessfully[itemId] = this.itemIdsSentSuccessfully[itemId] || 0;\n this.itemIdsSentSuccessfully[itemId]++;\n if (this.itemIdsSentSuccessfully[itemId] > 5) {\n this.reportError('[dupe] item ID sent too many times', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n }\n } else {\n this.reportError('[dupe] found item with no ID while removing', {item: item});\n }\n }, this));\n\n if (succeeded) {\n this.consecutiveRemovalFailures = 0;\n if (this.flushOnlyOnInterval && !attemptSecondaryFlush) {\n this.resetFlush(); // schedule next batch with a delay\n return Promise.resolve();\n } else {\n return this.flush(); // handle next batch if the queue isn't empty\n }\n } else {\n if (++this.consecutiveRemovalFailures > 5) {\n this.reportError('Too many queue failures; disabling batching system.');\n this.stopAllBatching();\n } else {\n this.resetFlush();\n }\n return Promise.resolve();\n }\n }, this));\n }, this);\n\n var batchSendCallback = _.bind(function(res) {\n this.requestInProgress = false;\n\n try {\n\n // handle API response in a try-catch to make sure we can reset the\n // flush operation if something goes wrong\n\n if (options.unloading) {\n // update persisted data to include hook transformations\n return this.queue.updatePayloads(transformedItems);\n } else if (\n _.isObject(res) &&\n res.error === 'timeout' &&\n new Date().getTime() - startTime >= timeoutMS\n ) {\n this.reportError('Network timeout; retrying');\n return this.flush();\n } else if (\n _.isObject(res) &&\n (\n res.httpStatusCode >= 500\n || res.httpStatusCode === 429\n || (res.httpStatusCode <= 0 && !isOnline())\n || res.error === 'timeout'\n )\n ) {\n // network or API error, or 429 Too Many Requests, retry\n var retryMS = this.flushInterval * 2;\n if (res.retryAfter) {\n retryMS = (parseInt(res.retryAfter, 10) * 1000) || retryMS;\n }\n retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS);\n this.reportError('Error; retry in ' + retryMS + ' ms');\n this.scheduleFlush(retryMS);\n return Promise.resolve();\n } else if (_.isObject(res) && res.httpStatusCode === 413) {\n // 413 Payload Too Large\n if (batch.length > 1) {\n var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2));\n this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1);\n this.reportError('413 response; reducing batch size to ' + this.batchSize);\n this.resetFlush();\n return Promise.resolve();\n } else {\n this.reportError('Single-event request too large; dropping', batch);\n this.resetBatchSize();\n return removeItemsFromQueue();\n }\n } else {\n // successful network request+response; remove each item in batch from queue\n // (even if it was e.g. a 400, in which case retrying won't help)\n return removeItemsFromQueue();\n }\n } catch(err) {\n this.reportError('Error handling API response', err);\n this.resetFlush();\n }\n }, this);\n var requestOptions = {\n method: 'POST',\n verbose: true,\n ignore_json_errors: true, // eslint-disable-line camelcase\n timeout_ms: timeoutMS // eslint-disable-line camelcase\n };\n if (options.unloading) {\n requestOptions.transport = 'sendBeacon';\n }\n logger.log('MIXPANEL REQUEST:', dataForRequest);\n return this.sendRequestPromise(dataForRequest, requestOptions).then(batchSendCallback);\n }, this))\n .catch(_.bind(function(err) {\n this.reportError('Error flushing request queue', err);\n this.resetFlush();\n }, this));\n};\n\n/**\n * Log error to global logger and optional user-defined logger.\n */\nRequestBatcher.prototype.reportError = function(msg, err) {\n logger.error.apply(logger.error, arguments);\n if (this.errorReporter) {\n try {\n if (!(err instanceof Error)) {\n err = new Error(msg);\n }\n this.errorReporter(msg, err);\n } catch(err) {\n logger.error(err);\n }\n }\n};\n\nexport { RequestBatcher };\n","/**\n * @param {import('./session-recording').SerializedRecording} serializedRecording\n * @returns {boolean}\n */\nvar isRecordingExpired = function(serializedRecording) {\n var now = Date.now();\n return !serializedRecording || now > serializedRecording['maxExpires'] || now > serializedRecording['idleExpires'];\n};\n\nvar RECORD_ENQUEUE_THROTTLE_MS = 250;\n\nexport { isRecordingExpired, RECORD_ENQUEUE_THROTTLE_MS};\n","import { window } from '../window';\nimport { IncrementalSource, EventType } from '@rrweb/types';\nimport { MAX_RECORDING_MS, MAX_VALUE_FOR_MIN_RECORDING_MS, console_with_prefix, NOOP_FUNC, _, localStorageSupported} from '../utils'; // eslint-disable-line camelcase\nimport { IDBStorageWrapper, RECORDING_EVENTS_STORE_NAME } from '../storage/indexed-db';\nimport { addOptOutCheckMixpanelLib } from '../gdpr-utils';\nimport { RequestBatcher } from '../request-batcher';\nimport Config from '../config';\nimport { RECORD_ENQUEUE_THROTTLE_MS } from './utils';\n\nvar logger = console_with_prefix('recorder');\nvar CompressionStream = window['CompressionStream'];\n\nvar RECORDER_BATCHER_LIB_CONFIG = {\n 'batch_size': 1000,\n 'batch_flush_interval_ms': 10 * 1000,\n 'batch_request_timeout_ms': 90 * 1000,\n 'batch_autostart': true\n};\n\nvar ACTIVE_SOURCES = new Set([\n IncrementalSource.MouseMove,\n IncrementalSource.MouseInteraction,\n IncrementalSource.Scroll,\n IncrementalSource.ViewportResize,\n IncrementalSource.Input,\n IncrementalSource.TouchMove,\n IncrementalSource.MediaInteraction,\n IncrementalSource.Drag,\n IncrementalSource.Selection,\n]);\n\nfunction isUserEvent(ev) {\n return ev.type === EventType.IncrementalSnapshot && ACTIVE_SOURCES.has(ev.data.source);\n}\n\n/**\n * @typedef {Object} SerializedRecording\n * @property {number} idleExpires\n * @property {number} maxExpires\n * @property {number} replayStartTime\n * @property {number} seqNo\n * @property {string} batchStartUrl\n * @property {string} replayId\n * @property {string} tabId\n * @property {string} replayStartUrl\n */\n\n/**\n * @typedef {Object} SessionRecordingOptions\n * @property {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n * @property {String} [options.replayId] - unique uuid for a single replay\n * @property {Function} [options.onIdleTimeout] - callback when a recording reaches idle timeout\n * @property {Function} [options.onMaxLengthReached] - callback when a recording reaches its maximum length\n * @property {Function} [options.rrwebRecord] - rrweb's `record` function\n * @property {Function} [options.onBatchSent] - callback when a batch of events is sent to the server\n * @property {Storage} [options.sharedLockStorage] - optional storage for shared lock, used for test dependency injection\n * optional properties for deserialization:\n * @property {number} idleExpires\n * @property {number} maxExpires\n * @property {number} replayStartTime\n * @property {number} seqNo\n * @property {string} batchStartUrl\n * @property {string} replayStartUrl\n */\n\n\n/**\n * This class encapsulates a single session recording and its lifecycle.\n * @param {SessionRecordingOptions} options\n */\nvar SessionRecording = function(options) {\n this._mixpanel = options.mixpanelInstance;\n this._onIdleTimeout = options.onIdleTimeout || NOOP_FUNC;\n this._onMaxLengthReached = options.onMaxLengthReached || NOOP_FUNC;\n this._onBatchSent = options.onBatchSent || NOOP_FUNC;\n this._rrwebRecord = options.rrwebRecord || null;\n\n // internal rrweb stopRecording function\n this._stopRecording = null;\n this.replayId = options.replayId;\n\n this.batchStartUrl = options.batchStartUrl || null;\n this.replayStartUrl = options.replayStartUrl || null;\n this.idleExpires = options.idleExpires || null;\n this.maxExpires = options.maxExpires || null;\n this.replayStartTime = options.replayStartTime || null;\n this.seqNo = options.seqNo || 0;\n\n this.idleTimeoutId = null;\n this.maxTimeoutId = null;\n\n this.recordMaxMs = MAX_RECORDING_MS;\n this.recordMinMs = 0;\n\n // disable persistence if localStorage is not supported\n // request-queue will automatically disable persistence if indexedDB fails to initialize\n var usePersistence = localStorageSupported(options.sharedLockStorage, true);\n\n // each replay has its own batcher key to avoid conflicts between rrweb events of different recordings\n // this will be important when persistence is introduced\n this.batcherKey = '__mprec_' + this.getConfig('name') + '_' + this.getConfig('token') + '_' + this.replayId;\n this.queueStorage = new IDBStorageWrapper(RECORDING_EVENTS_STORE_NAME);\n this.batcher = new RequestBatcher(this.batcherKey, {\n errorReporter: this.reportError.bind(this),\n flushOnlyOnInterval: true,\n libConfig: RECORDER_BATCHER_LIB_CONFIG,\n sendRequestFunc: this.flushEventsWithOptOut.bind(this),\n queueStorage: this.queueStorage,\n sharedLockStorage: options.sharedLockStorage,\n usePersistence: usePersistence,\n stopAllBatchingFunc: this.stopRecording.bind(this),\n\n // increased throttle and shared lock timeout because recording events are very high frequency.\n // this will minimize the amount of lock contention between enqueued events.\n // for session recordings there is a lock for each tab anyway, so there's no risk of deadlock between tabs.\n enqueueThrottleMs: RECORD_ENQUEUE_THROTTLE_MS,\n sharedLockTimeoutMS: 10 * 1000,\n });\n};\n\nSessionRecording.prototype.unloadPersistedData = function () {\n this.batcher.stop();\n return this.batcher.flush()\n .then(function () {\n return this.queueStorage.removeItem(this.batcherKey);\n }.bind(this));\n};\n\nSessionRecording.prototype.getConfig = function(configVar) {\n return this._mixpanel.get_config(configVar);\n};\n\n// Alias for getConfig, used by the common addOptOutCheckMixpanelLib function which\n// reaches into this class instance and expects the snake case version of the function.\n// eslint-disable-next-line camelcase\nSessionRecording.prototype.get_config = function(configVar) {\n return this.getConfig(configVar);\n};\n\nSessionRecording.prototype.startRecording = function (shouldStopBatcher) {\n if (this._rrwebRecord === null) {\n this.reportError('rrweb record function not provided. ');\n return;\n }\n\n if (this._stopRecording !== null) {\n logger.log('Recording already in progress, skipping startRecording.');\n return;\n }\n\n this.recordMaxMs = this.getConfig('record_max_ms');\n if (this.recordMaxMs > MAX_RECORDING_MS) {\n this.recordMaxMs = MAX_RECORDING_MS;\n logger.critical('record_max_ms cannot be greater than ' + MAX_RECORDING_MS + 'ms. Capping value.');\n }\n\n if (!this.maxExpires) {\n this.maxExpires = new Date().getTime() + this.recordMaxMs;\n }\n\n this.recordMinMs = this.getConfig('record_min_ms');\n if (this.recordMinMs > MAX_VALUE_FOR_MIN_RECORDING_MS) {\n this.recordMinMs = MAX_VALUE_FOR_MIN_RECORDING_MS;\n logger.critical('record_min_ms cannot be greater than ' + MAX_VALUE_FOR_MIN_RECORDING_MS + 'ms. Capping value.');\n }\n\n if (!this.replayStartTime) {\n this.replayStartTime = new Date().getTime();\n this.batchStartUrl = _.info.currentUrl();\n this.replayStartUrl = _.info.currentUrl();\n }\n\n if (shouldStopBatcher || this.recordMinMs > 0) {\n // the primary case for shouldStopBatcher is when we're starting recording after a reset\n // and don't want to send anything over the network until there's\n // actual user activity\n // this also applies if the minimum recording length has not been hit yet\n // so that we don't send data until we know the recording will be long enough\n this.batcher.stop();\n } else {\n this.batcher.start();\n }\n\n var resetIdleTimeout = function () {\n clearTimeout(this.idleTimeoutId);\n var idleTimeoutMs = this.getConfig('record_idle_timeout_ms');\n this.idleTimeoutId = setTimeout(this._onIdleTimeout, idleTimeoutMs);\n this.idleExpires = new Date().getTime() + idleTimeoutMs;\n }.bind(this);\n resetIdleTimeout();\n\n var blockSelector = this.getConfig('record_block_selector');\n if (blockSelector === '' || blockSelector === null) {\n blockSelector = undefined;\n }\n\n try {\n this._stopRecording = this._rrwebRecord({\n 'emit': function (ev) {\n if (this.idleExpires && this.idleExpires < ev.timestamp) {\n this._onIdleTimeout();\n return;\n }\n if (isUserEvent(ev)) {\n if (this.batcher.stopped && new Date().getTime() - this.replayStartTime >= this.recordMinMs) {\n // start flushing again after user activity\n this.batcher.start();\n }\n resetIdleTimeout();\n }\n // promise only used to await during tests\n this.__enqueuePromise = this.batcher.enqueue(ev);\n }.bind(this),\n 'blockClass': this.getConfig('record_block_class'),\n 'blockSelector': blockSelector,\n 'collectFonts': this.getConfig('record_collect_fonts'),\n 'dataURLOptions': { // canvas image options (https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL)\n 'type': 'image/webp',\n 'quality': 0.6\n },\n 'maskAllInputs': true,\n 'maskTextClass': this.getConfig('record_mask_text_class'),\n 'maskTextSelector': this.getConfig('record_mask_text_selector'),\n 'recordCanvas': this.getConfig('record_canvas'),\n 'sampling': {\n 'canvas': 15\n }\n });\n } catch (err) {\n this.reportError('Unexpected error when starting rrweb recording.', err);\n }\n\n if (typeof this._stopRecording !== 'function') {\n this.reportError('rrweb failed to start, skipping this recording.');\n this._stopRecording = null;\n this.stopRecording(); // stop batcher looping and any timeouts\n return;\n }\n\n var maxTimeoutMs = this.maxExpires - new Date().getTime();\n this.maxTimeoutId = setTimeout(this._onMaxLengthReached.bind(this), maxTimeoutMs);\n};\n\nSessionRecording.prototype.stopRecording = function (skipFlush) {\n if (!this.isRrwebStopped()) {\n try {\n this._stopRecording();\n } catch (err) {\n this.reportError('Error with rrweb stopRecording', err);\n }\n this._stopRecording = null;\n }\n\n var flushPromise;\n if (this.batcher.stopped) {\n // never got user activity to flush after reset, so just clear the batcher\n flushPromise = this.batcher.clear();\n } else if (!skipFlush) {\n // flush any remaining events from running batcher\n flushPromise = this.batcher.flush();\n }\n this.batcher.stop();\n\n clearTimeout(this.idleTimeoutId);\n clearTimeout(this.maxTimeoutId);\n return flushPromise;\n};\n\nSessionRecording.prototype.isRrwebStopped = function () {\n return this._stopRecording === null;\n};\n\n\n/**\n * Flushes the current batch of events to the server, but passes an opt-out callback to make sure\n * we stop recording and dump any queued events if the user has opted out.\n */\nSessionRecording.prototype.flushEventsWithOptOut = function (data, options, cb) {\n var onOptOut = function (code) {\n // addOptOutCheckMixpanelLib invokes this function with code=0 when the user has opted out\n if (code === 0) {\n this.stopRecording();\n cb({error: 'Tracking has been opted out, stopping recording.'});\n }\n }.bind(this);\n\n this._flushEvents(data, options, cb, onOptOut);\n};\n\n/**\n * @returns {SerializedRecording}\n */\nSessionRecording.prototype.serialize = function () {\n // don't break if mixpanel instance was destroyed at some point\n var tabId;\n try {\n tabId = this._mixpanel.get_tab_id();\n } catch (e) {\n this.reportError('Error getting tab ID for serialization ', e);\n tabId = null;\n }\n\n return {\n 'replayId': this.replayId,\n 'seqNo': this.seqNo,\n 'replayStartTime': this.replayStartTime,\n 'batchStartUrl': this.batchStartUrl,\n 'replayStartUrl': this.replayStartUrl,\n 'idleExpires': this.idleExpires,\n 'maxExpires': this.maxExpires,\n 'tabId': tabId,\n };\n};\n\n\n/**\n * @static\n * @param {SerializedRecording} serializedRecording\n * @param {SessionRecordingOptions} options\n * @returns {SessionRecording}\n */\nSessionRecording.deserialize = function (serializedRecording, options) {\n var recording = new SessionRecording(_.extend({}, options, {\n replayId: serializedRecording['replayId'],\n batchStartUrl: serializedRecording['batchStartUrl'],\n replayStartUrl: serializedRecording['replayStartUrl'],\n idleExpires: serializedRecording['idleExpires'],\n maxExpires: serializedRecording['maxExpires'],\n replayStartTime: serializedRecording['replayStartTime'],\n seqNo: serializedRecording['seqNo'],\n sharedLockStorage: options.sharedLockStorage,\n }));\n\n return recording;\n};\n\nSessionRecording.prototype._sendRequest = function(currentReplayId, reqParams, reqBody, callback) {\n var onSuccess = function (response, responseBody) {\n // Update batch specific props only if the request was successful to guarantee ordering.\n // RequestBatcher will always flush the next batch after the previous one succeeds.\n // extra check to see if the replay ID has changed so that we don't increment the seqNo on the wrong replay\n if (response.status === 200 && this.replayId === currentReplayId) {\n this.seqNo++;\n this.batchStartUrl = _.info.currentUrl();\n }\n\n this._onBatchSent();\n callback({\n status: 0,\n httpStatusCode: response.status,\n responseBody: responseBody,\n retryAfter: response.headers.get('Retry-After')\n });\n }.bind(this);\n\n window['fetch'](this.getConfig('api_host') + '/' + this.getConfig('api_routes')['record'] + '?' + new URLSearchParams(reqParams), {\n 'method': 'POST',\n 'headers': {\n 'Authorization': 'Basic ' + btoa(this.getConfig('token') + ':'),\n 'Content-Type': 'application/octet-stream'\n },\n 'body': reqBody,\n }).then(function (response) {\n response.json().then(function (responseBody) {\n onSuccess(response, responseBody);\n }).catch(function (error) {\n callback({error: error});\n });\n }).catch(function (error) {\n callback({error: error, httpStatusCode: 0});\n });\n};\n\nSessionRecording.prototype._flushEvents = addOptOutCheckMixpanelLib(function (data, options, callback) {\n var numEvents = data.length;\n\n if (numEvents > 0) {\n var replayId = this.replayId;\n\n // each rrweb event has a timestamp - leverage those to get time properties\n var batchStartTime = Infinity;\n var batchEndTime = -Infinity;\n var hasFullSnapshot = false;\n for (var i = 0; i < numEvents; i++) {\n batchStartTime = Math.min(batchStartTime, data[i].timestamp);\n batchEndTime = Math.max(batchEndTime, data[i].timestamp);\n if (data[i].type === EventType.FullSnapshot) {\n hasFullSnapshot = true;\n }\n }\n\n if (this.seqNo === 0) {\n if (!hasFullSnapshot) {\n callback({error: 'First batch does not contain a full snapshot. Aborting recording.'});\n this.stopRecording(true);\n return;\n }\n this.replayStartTime = batchStartTime;\n } else if (!this.replayStartTime) {\n this.reportError('Replay start time not set but seqNo is not 0. Using current batch start time as a fallback.');\n this.replayStartTime = batchStartTime;\n }\n\n var replayLengthMs = batchEndTime - this.replayStartTime;\n\n var reqParams = {\n '$current_url': this.batchStartUrl,\n '$lib_version': Config.LIB_VERSION,\n 'batch_start_time': batchStartTime / 1000,\n 'distinct_id': String(this._mixpanel.get_distinct_id()),\n 'mp_lib': 'web',\n 'replay_id': replayId,\n 'replay_length_ms': replayLengthMs,\n 'replay_start_time': this.replayStartTime / 1000,\n 'replay_start_url': this.replayStartUrl,\n 'seq': this.seqNo\n };\n var eventsJson = JSON.stringify(data);\n\n // send ID management props if they exist\n var deviceId = this._mixpanel.get_property('$device_id');\n if (deviceId) {\n reqParams['$device_id'] = deviceId;\n }\n var userId = this._mixpanel.get_property('$user_id');\n if (userId) {\n reqParams['$user_id'] = userId;\n }\n\n if (CompressionStream) {\n var jsonStream = new Blob([eventsJson], {type: 'application/json'}).stream();\n var gzipStream = jsonStream.pipeThrough(new CompressionStream('gzip'));\n new Response(gzipStream)\n .blob()\n .then(function(compressedBlob) {\n reqParams['format'] = 'gzip';\n this._sendRequest(replayId, reqParams, compressedBlob, callback);\n }.bind(this));\n } else {\n reqParams['format'] = 'body';\n this._sendRequest(replayId, reqParams, eventsJson, callback);\n }\n }\n});\n\n\nSessionRecording.prototype.reportError = function(msg, err) {\n logger.error.apply(logger.error, arguments);\n try {\n if (!err && !(msg instanceof Error)) {\n msg = new Error(msg);\n }\n this.getConfig('error_reporter')(msg, err);\n } catch(err) {\n logger.error(err);\n }\n};\n\nexport { SessionRecording };\n","import { Promise } from '../promise-polyfill';\nimport { IDBStorageWrapper, RECORDING_REGISTRY_STORE_NAME } from '../storage/indexed-db';\nimport { SessionRecording } from './session-recording';\nimport { isRecordingExpired } from './utils';\n\n/**\n * Module for handling the storage and retrieval of recording metadata as well as any active recordings.\n * Makes sure that only one tab can be recording at a time.\n */\nvar RecordingRegistry = function (options) {\n this.idb = new IDBStorageWrapper(RECORDING_REGISTRY_STORE_NAME);\n this.errorReporter = options.errorReporter;\n this.mixpanelInstance = options.mixpanelInstance;\n this.sharedLockStorage = options.sharedLockStorage;\n};\n\nRecordingRegistry.prototype.handleError = function (err) {\n this.errorReporter('IndexedDB error: ', err);\n};\n\n/**\n * @param {import('./session-recording').SerializedRecording} serializedRecording\n */\nRecordingRegistry.prototype.setActiveRecording = function (serializedRecording) {\n var tabId = serializedRecording['tabId'];\n if (!tabId) {\n console.warn('No tab ID is set, cannot persist recording metadata.');\n return Promise.resolve();\n }\n\n return this.idb.init()\n .then(function () {\n return this.idb.setItem(tabId, serializedRecording);\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\n/**\n * @returns {Promise<import('./session-recording').SerializedRecording>}\n */\nRecordingRegistry.prototype.getActiveRecording = function () {\n return this.idb.init()\n .then(function () {\n return this.idb.getItem(this.mixpanelInstance.get_tab_id());\n }.bind(this))\n .then(function (serializedRecording) {\n return isRecordingExpired(serializedRecording) ? null : serializedRecording;\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nRecordingRegistry.prototype.clearActiveRecording = function () {\n // mark recording as expired instead of deleting it in case the page unloads mid-flush and doesn't make it to ingestion.\n // this will ensure the next pageload will flush the remaining events, but not try to continue the recording.\n return this.getActiveRecording()\n .then(function (serializedRecording) {\n if (serializedRecording) {\n serializedRecording['maxExpires'] = 0;\n return this.setActiveRecording(serializedRecording);\n }\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\n/**\n * Flush any inactive recordings from the registry to minimize data loss.\n * The main idea here is that we can flush remaining rrweb events on the next page load if a tab is closed mid-batch.\n */\nRecordingRegistry.prototype.flushInactiveRecordings = function () {\n return this.idb.init()\n .then(function() {\n return this.idb.getAll();\n }.bind(this))\n .then(function (serializedRecordings) {\n // clean up any expired recordings from the registry, non-expired ones may be active in other tabs\n var unloadPromises = serializedRecordings\n .filter(function (serializedRecording) {\n return isRecordingExpired(serializedRecording);\n })\n .map(function (serializedRecording) {\n var sessionRecording = SessionRecording.deserialize(serializedRecording, {\n mixpanelInstance: this.mixpanelInstance,\n sharedLockStorage: this.sharedLockStorage\n });\n return sessionRecording.unloadPersistedData()\n .then(function () {\n // expired recording was successfully flushed, we can clean it up from the registry\n return this.idb.removeItem(serializedRecording['tabId']);\n }.bind(this))\n .catch(this.handleError.bind(this));\n }.bind(this));\n\n return Promise.all(unloadPromises);\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nexport { RecordingRegistry };\n","import { record } from 'rrweb';\nimport { Promise } from '../promise-polyfill';\nimport { SessionRecording } from './session-recording';\nimport { RecordingRegistry } from './recording-registry';\n\nimport { console_with_prefix, _ } from '../utils'; // eslint-disable-line camelcase\n\nvar logger = console_with_prefix('recorder');\n\n/**\n * Recorder API: bundles rrweb and and exposes methods to start and stop recordings.\n * @param {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n*/\nvar MixpanelRecorder = function(mixpanelInstance, rrwebRecord, sharedLockStorage) {\n this.mixpanelInstance = mixpanelInstance;\n this.rrwebRecord = rrwebRecord || record;\n this.sharedLockStorage = sharedLockStorage;\n\n /**\n * @member {import('./registry').RecordingRegistry}\n */\n this.recordingRegistry = new RecordingRegistry({\n mixpanelInstance: this.mixpanelInstance,\n errorReporter: logger.error,\n sharedLockStorage: sharedLockStorage\n });\n this._flushInactivePromise = this.recordingRegistry.flushInactiveRecordings();\n\n this.activeRecording = null;\n};\n\nMixpanelRecorder.prototype.startRecording = function(options) {\n options = options || {};\n if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n logger.log('Recording already in progress, skipping startRecording.');\n return;\n }\n\n var onIdleTimeout = function () {\n logger.log('Idle timeout reached, restarting recording.');\n this.resetRecording();\n }.bind(this);\n\n var onMaxLengthReached = function () {\n logger.log('Max recording length reached, stopping recording.');\n this.resetRecording();\n }.bind(this);\n\n var onBatchSent = function () {\n this.recordingRegistry.setActiveRecording(this.activeRecording.serialize());\n this['__flushPromise'] = this.activeRecording.batcher._flushPromise;\n }.bind(this);\n\n /**\n * @type {import('./session-recording').SessionRecordingOptions}\n */\n var sessionRecordingOptions = {\n mixpanelInstance: this.mixpanelInstance,\n onBatchSent: onBatchSent,\n onIdleTimeout: onIdleTimeout,\n onMaxLengthReached: onMaxLengthReached,\n replayId: _.UUID(),\n rrwebRecord: this.rrwebRecord,\n sharedLockStorage: this.sharedLockStorage\n };\n\n if (options.activeSerializedRecording) {\n this.activeRecording = SessionRecording.deserialize(options.activeSerializedRecording, sessionRecordingOptions);\n } else {\n this.activeRecording = new SessionRecording(sessionRecordingOptions);\n }\n\n this.activeRecording.startRecording(options.shouldStopBatcher);\n return this.recordingRegistry.setActiveRecording(this.activeRecording.serialize());\n};\n\nMixpanelRecorder.prototype.stopRecording = function() {\n var stopPromise = this._stopCurrentRecording(false);\n this.recordingRegistry.clearActiveRecording();\n this.activeRecording = null;\n return stopPromise;\n};\n\nMixpanelRecorder.prototype.pauseRecording = function() {\n return this._stopCurrentRecording(false);\n};\n\nMixpanelRecorder.prototype._stopCurrentRecording = function(skipFlush) {\n if (this.activeRecording) {\n return this.activeRecording.stopRecording(skipFlush);\n }\n return Promise.resolve();\n};\n\nMixpanelRecorder.prototype.resumeRecording = function (startNewIfInactive) {\n if (this.activeRecording && this.activeRecording.isRrwebStopped()) {\n this.activeRecording.startRecording(false);\n return Promise.resolve(null);\n }\n\n return this.recordingRegistry.getActiveRecording()\n .then(function (activeSerializedRecording) {\n if (activeSerializedRecording) {\n return this.startRecording({activeSerializedRecording: activeSerializedRecording});\n } else if (startNewIfInactive) {\n return this.startRecording({shouldStopBatcher: false});\n } else {\n logger.log('No resumable recording found.');\n return null;\n }\n }.bind(this));\n};\n\n\nMixpanelRecorder.prototype.resetRecording = function () {\n this.stopRecording();\n this.startRecording({shouldStopBatcher: true});\n};\n\nMixpanelRecorder.prototype.getActiveReplayId = function () {\n if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n return this.activeRecording.replayId;\n } else {\n return null;\n }\n};\n\n// getter so that older mixpanel-core versions can still retrieve the replay ID\n// when pulling the latest recorder bundle from the CDN\nObject.defineProperty(MixpanelRecorder.prototype, 'replayId', {\n get: function () {\n return this.getActiveReplayId();\n }\n});\n\n\nexport { MixpanelRecorder };\n","import { window } from '../window';\nimport { MixpanelRecorder } from './recorder';\n\nwindow['__mp_recorder'] = MixpanelRecorder;\n"],"names":["win","loc","NodeType","isElement","n","isShadowRoot","host","isNativeShadowDom","shadowRoot","fixBrowserCompatibilityIssuesInCSS","cssText","escapeImportStatement","rule","statement","stringifyStylesheet","s","rules","stringifyRule","importStringified","isCSSImportRule","isCSSStyleRule","fixSafariColons","cssStringified","regex","Mirror","_a","id","childNode","node","meta","oldNode","createMirror","maskInputValue","element","maskInputOptions","tagName","type","value","maskInputFn","text","actualType","toLowerCase","str","ORIGINAL_ATTRIBUTE_NAME","is2DCanvasBlank","canvas","ctx","chunkSize","x","y","getImageData","originalGetImageData","pixel","getInputType","extractFileExtension","path","baseURL","url","match","_id","tagNameRegex","IGNORED_NODE","genId","getValidTagName","processedTagName","extractOrigin","origin","canvasService","canvasCtx","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","absoluteToStylesheet","href","quote1","path1","quote2","path2","path3","filePath","maybeQuote","stack","parts","part","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","getAbsoluteSrcsetString","doc","attributeValue","pos","collectCharacters","regEx","chars","output","absoluteToDoc","descriptorsStr","inParens","c","a","isSVGElement","el","getHref","transformAttribute","name","ignoreAttribute","_value","_isBlockedElement","blockClass","blockSelector","eIndex","className","classMatchesRegex","checkAncestors","needMaskingText","maskTextClass","maskTextSelector","onceIframeLoaded","iframeEl","listener","iframeLoadTimeout","fired","readyState","timer","blankUrl","onceStylesheetLoaded","link","styleSheetLoadTimeout","styleSheetLoaded","serializeNode","options","mirror","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","rootId","getRootId","serializeElementNode","serializeTextNode","docId","parentTagName","textContent","isStyle","isScript","err","needBlock","attributes","len","i","attr","stylesheet","checked","canvasDataURL","blankCanvas","blankCanvasDataURL","image","oldValue","recordInlineImage","mediaAttributes","width","height","isCustomElement","lowerIfExists","maybeAttr","slimDOMExcluded","sn","slimDOMOptions","serializeNodeWithId","skipChild","onSerialize","onIframeLoad","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","serializedNode","recordChild","bypassOptions","childN","serializedChildNode","iframeDoc","serializedIframeNode","serializedLinkNode","snapshot","maskAllInputs","slimDOM","on","fn","target","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","prop","receiver","throttle","func","wait","timeout","previous","args","now","remaining","context","hookSetter","key","d","isRevoked","original","patch","source","replacement","wrapped","nowTimestamp","getWindowScroll","_b","_c","_d","_e","_f","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isSerialized","isIgnored","isAncestorRemoved","legacy_isTouchEvent","event","polyfill","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","newId","getShadowHost","shadowHost","getRootShadowHost","rootShadowHost","shadowHostInDom","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","isNodeInLinkedList","DoubleLinkedList","position","current","index","moveKey","parentId","MutationBuffer","mutations","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","currentN","iframe","childSn","isParentRemoved","isAncestorInSet","candidate","tailNode","_node","unhandledNode","payload","attribute","diffAsStr","unchangedAsStr","textarea","item","cn","m","attributeName","old","pname","newValue","newPriority","nodeId","deepDelete","targetId","addsSet","removes","_isParentRemoved","parentNode","r","set","_isAncestorInSet","errorHandler","registerErrorHandler","handler","unregisterErrorHandler","callbackWrapper","cb","rest","error","mutationBuffers","getEventTarget","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","angularZoneSymbol","observer","initMoveObserver","mousemoveCb","sampling","threshold","callbackThreshold","positions","timeBaseline","wrappedCb","totalOffset","p","updatePosition","evt","clientX","clientY","handlers","initMouseInteractionObserver","mouseInteractionCb","disableMap","currentPointerType","getHandler","eventKey","pointerType","thisEventKey","e","eventName","h","initScrollObserver","scrollCb","scrollLeftTop","initViewportResizeObserver","viewportResizeCb","lastH","lastW","updateDimension","INPUT_TAGS","lastInputValueMap","initInputObserver","inputCb","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isChecked","cbWithDedup","v","lastInputValue","currentWindow","propertyDescriptor","hookProperties","getNestedCSSRulePositions","recurse","childRule","hasNestedCSSRule","getIdAndStyleId","sheet","styleMirror","styleId","initStyleSheetObserver","styleSheetRuleCb","stylesheetManager","insertRule","thisArg","argumentsList","deleteRule","replace","replaceSync","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initAdoptedStyleSheetObserver","hostId","patchTarget","originalPropertyDescriptor","sheets","result","initStyleDeclarationObserver","styleDeclarationCb","ignoreCSSAttributes","setProperty","property","priority","removeProperty","initMediaInteractionObserver","mediaInteractionCb","currentTime","volume","muted","playbackRate","loop","initFontObserver","fontCb","fontMap","originalFontFace","family","descriptors","fontFace","restoreHandler","initSelectionObserver","param","selectionCb","collapsed","updateSelection","selection","ranges","count","range","startContainer","startOffset","endContainer","endOffset","initCustomElementObserver","customElementCb","constructor","mergeHooks","o","hooks","mutationCb","canvasMutationCb","initObservers","mutationObserver","mousemoveHandler","mouseInteractionHandler","scrollHandler","viewportResizeHandler","inputHandler","mediaInteractionHandler","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","selectionObserver","customElementObserver","pluginHandlers","plugin","b","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","remoteIdToIdMap","map","ids","IframeManager","message","crossOriginMessageEvent","transformedEvent","style","iframeMirror","obj","keys","child","ShadowDomManager","iframeElement","manager","option","__rest","t","__awaiter","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","rejected","lookup","encode","arraybuffer","bytes","base64","canvasVarMap","variableListFor","ctor","contextMap","saveWebGLVar","isInstanceOfWebGLObject","list","serializeArg","arg","src","serializeArgs","initCanvas2DMutationObserver","props2D","recordArgs","hookHandler","getNormalizedContextName","contextType","initCanvasContextObserver","setPreserveDrawingBufferToTrue","ctxName","contextAttributes","patchGLPrototype","prototype","props","mutation","initCanvasWebGLMutationObserver","funcToSource","sourcemapArg","sourcemap","lines","blankPrefixLength","createURL","blob","createInlineWorkerFactory","WorkerFactory","lastBlobMap","transparentBlobMap","getTransparentBlobFor","offscreen","arrayBuffer","worker","bitmap","transparentBase64","CanvasManager","fps","canvasContextReset","snapshotInProgressMap","timeBetweenSnapshots","lastSnapshotTime","rafId","getCanvas","matchedCanvas","takeCanvasSnapshots","timestamp","canvas2DReset","canvasWebGL1and2Reset","setLatestRAFTimestamp","values","valuesWithType","StylesheetManager","linkEl","adoptedStyleSheetData","styles","ProcessedNodeManager","thisBuffer","buffers","buffer","wrapEvent","wrappedEmit","takeFullSnapshot","canvasManager","recording","record","emit","checkoutEveryNms","checkoutEveryNth","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordDOM","recordCrossOriginIframes","recordAfter","collectFonts","plugins","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","incrementalSnapshotCount","eventProcessor","isCheckout","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","wrappedAdoptedStyleSheetEmit","iframeManager","processedNodeManager","shadowDomManager","observe","init","tag","setImmediate","window","builtInProp","cycle","schedulingQueue","ToString","val","config","first","last","Item","self","f","schedule","isThenable","_then","oType","notify","notifyIsolated","chain","ret","msg","defWrapper","MakeDefWrapper","iteratePromises","Constructor","arr","resolver","rejecter","idx","MakeDef","NpoPromise","executor","def","success","failure","PromisePrototype","msgs","PromisePolyfill","Config","MAX_RECORDING_MS","MAX_VALUE_FOR_MIN_RECORDING_MS","ArrayProto","FuncProto","ObjProto","slice","toString","hasOwnProperty","windowConsole","navigator","document","windowOpera","screen","userAgent","nativeBind","nativeForEach","nativeIndexOf","nativeMap","nativeIsArray","breaker","_","console","log_func_with_prefix","prefix","console_with_prefix","bound","iterator","l","iterable","callback","results","found","needle","subclass","superclass","k","pad","length","mixed_val","quote","string","escapable","holder","gap","indent","mind","partial","at","ch","escapee","next","number","hex","uffff","white","word","array","object","data","b64","o1","o2","o3","h1","h2","h3","h4","bits","ac","enc","tmp_arr","utftext","start","end","stringl","c1","uuid","BLOCKED_UA_STRS","ua","formdata","arg_separator","use_val","use_key","regexS","nameEQ","ca","cookie","seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","expires","secure","domain","extract_domain","date","days","new_cookie_val","_testStorageSupported","storage","supported","cheap_guid","_localStorageSupported","localStorageSupported","forceCheck","_sessionStorageSupported","sessionStorageSupported","_storageWrapper","is_supported_fn","log_error","register_event","oldSchool","useCapture","ontype","old_handler","makeHandler","new_handler","old_handlers","fixEvent","old_result","new_result","TOKEN_MATCH_REGEX","getAllChildren","bad_whitespace","hasClass","elem","selector","getElementsBySelector","tokens","token","foundCount","j","elements","currentContextIndex","currentContext","token_match","attrName","attrOperator","attrValue","checkFunction","query","CAMPAIGN_KEYWORDS","CLICK_IDS","default_value","kw","params","kwkey","idkey","referrer","search","keyword","user_agent","vendor","opera","browser","versionRegexs","matches","split","extra_props","batchedThrottle","waitMs","timeoutPromise","throttledItems","Promise","returnValue","maxlen","guid","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","hostname","domain_regex","tld","isOnline","onLine","NOOP_FUNC","JSONStringify","JSONParse","MIXPANEL_DB_NAME","RECORDING_EVENTS_STORE_NAME","RECORDING_REGISTRY_STORE_NAME","DB_VERSION","OBJECT_STORES","IDBStorageWrapper","storeName","openRequest","ev","db","dbOrError","mode","storeCb","doTransaction","transaction","objectStore","req","GDPR_DEFAULT_PERSISTENCE_PREFIX","hasOptedOut","_hasDoNotTrackFlagOn","optedOut","_getStorageValue","addOptOutCheckMixpanelLib","method","_addOptOutCheck","_getStorage","_getStorageKey","nav","hasDntOn","dntValue","getConfigValue","ignoreDnt","persistenceType","persistencePrefix","logger","SharedLock","lockedCB","pid","startTime","pollIntervalMS","timeoutMS","keyX","keyY","keyZ","delay","waitFor","predicate","getSetY","valY","criticalSection","removeLock","LocalStorageWrapper","storageOverride","RequestQueue","storageKey","queueEntry","flushInterval","queueEntries","enqueueItem","storedQueue","succeeded","batchSize","batch","idsInBatch","filterOutIDsAndInvalid","items","idSet","filteredItems","removeFromStorage","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","storageEntry","queue","MAX_RETRY_INTERVAL_MS","RequestBatcher","flushMS","currentBatchSize","attemptSecondaryFlush","dataForRequest","transformedItems","addPayload","itemId","removeItemsFromQueue","batchSendCallback","res","retryMS","halvedBatchSize","requestOptions","isRecordingExpired","serializedRecording","RECORD_ENQUEUE_THROTTLE_MS","CompressionStream","RECORDER_BATCHER_LIB_CONFIG","ACTIVE_SOURCES","isUserEvent","SessionRecording","usePersistence","configVar","shouldStopBatcher","resetIdleTimeout","idleTimeoutMs","maxTimeoutMs","skipFlush","flushPromise","onOptOut","code","tabId","currentReplayId","reqParams","reqBody","onSuccess","response","responseBody","numEvents","replayId","batchStartTime","batchEndTime","hasFullSnapshot","replayLengthMs","eventsJson","deviceId","userId","jsonStream","gzipStream","compressedBlob","RecordingRegistry","serializedRecordings","unloadPromises","sessionRecording","MixpanelRecorder","mixpanelInstance","rrwebRecord","sharedLockStorage","onIdleTimeout","onMaxLengthReached","onBatchSent","sessionRecordingOptions","stopPromise","startNewIfInactive","activeSerializedRecording"],"mappings":"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"}
1
+ {"version":3,"file":"mixpanel-recorder.min.js","sources":["../src/window.js","rrweb-compiled.js","../src/promise-polyfill.js","../src/config.js","../src/utils.js","../src/storage/indexed-db.js","../src/gdpr-utils.js","../src/shared-lock.js","../src/storage/local-storage.js","../src/request-queue.js","../src/request-batcher.js","../src/recorder/utils.js","../src/recorder/session-recording.js","../src/recorder/recording-registry.js","../src/recorder/recorder.js","../src/recorder/index.js"],"sourcesContent":["// since es6 imports are static and we run unit tests from the console, window won't be defined when importing this file\nvar win;\nif (typeof(window) === 'undefined') {\n var loc = {\n hostname: ''\n };\n win = {\n crypto: {randomUUID: function() {throw Error('unsupported');}},\n navigator: { userAgent: '', onLine: true },\n document: {\n createElement: function() { return {}; },\n location: loc,\n referrer: ''\n },\n screen: { width: 0, height: 0 },\n location: loc,\n addEventListener: function() {},\n removeEventListener: function() {}\n };\n} else {\n win = window;\n}\n\nexport { win as window };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function construct(Parent, args, Class) {\n var a = [\n null\n ];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _set_prototype_of(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n return Constructor;\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _get_prototype_of(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\nfunction _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _set_prototype_of(o, p);\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function wrapNativeSuper(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _set_prototype_of(Wrapper, Class);\n };\n return _wrap_native_super(Class);\n}\nfunction _is_native_reflect_construct() {\n try {\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike) {\n if (it) o = it;\n var i = 0;\n return function() {\n if (i >= o.length) {\n return {\n done: true\n };\n }\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nfunction _ts_values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = function(obj, key, value) {\n return key in obj ? __defProp(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField = function(obj, key, value) {\n return __defNormalProp(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = function(obj, key, value) {\n return key in obj ? __defProp$1(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField$1 = function(obj, key, value) {\n return __defNormalProp$1(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nvar NodeType$3 = /* @__PURE__ */ function(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 || {});\nvar testableAccessors$1 = {\n Node: [\n \"childNodes\",\n \"parentNode\",\n \"parentElement\",\n \"textContent\"\n ],\n ShadowRoot: [\n \"host\",\n \"styleSheets\"\n ],\n Element: [\n \"shadowRoot\",\n \"querySelector\",\n \"querySelectorAll\"\n ],\n MutationObserver: []\n};\nvar testableMethods$1 = {\n Node: [\n \"contains\",\n \"getRootNode\"\n ],\n ShadowRoot: [\n \"getSelection\"\n ],\n Element: [],\n MutationObserver: [\n \"constructor\"\n ]\n};\nvar untaintedBasePrototype$1 = {};\nvar isAngularZonePresent$1 = function() {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key]) return untaintedBasePrototype$1[key];\n var defaultObj = globalThis[key];\n var defaultPrototype = defaultObj.prototype;\n var accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n var isUntaintedAccessors = Boolean(accessorNames && // @ts-expect-error 2345\n accessorNames.every(function(accessor) {\n var _a2, _b;\n return Boolean((_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\"));\n }));\n var methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n var isUntaintedMethods = Boolean(methodNames && methodNames.every(// @ts-expect-error 2345\n function(method) {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }));\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n var iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n var win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n var untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch (e) {\n return defaultPrototype;\n }\n}\nvar untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n var cacheKey = key + \".\" + String(accessor);\n if (untaintedAccessorCache$1[cacheKey]) return untaintedAccessorCache$1[cacheKey].call(instance);\n var untaintedPrototype = getUntaintedPrototype$1(key);\n var untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(untaintedPrototype, accessor)) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nvar untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n var cacheKey = key + \".\" + String(method);\n if (untaintedMethodCache$1[cacheKey]) return untaintedMethodCache$1[cacheKey].bind(instance);\n var untaintedPrototype = getUntaintedPrototype$1(key);\n var untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\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}\nvar index$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};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n var hostEl = // 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 return Boolean(hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2);\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(/\\sbackground-clip:\\s*text;/g, \" -webkit-background-clip: text; background-clip: text;\");\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n var cssText = rule2.cssText;\n if (cssText.split('\"').length < 3) return cssText;\n var statement = [\n \"@import\",\n \"url(\" + JSON.stringify(rule2.href) + \")\"\n ];\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 var rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n var sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n var stringifiedRules = Array.from(rules2, function(rule2) {\n return 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 var importStringified;\n try {\n importStringified = // 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 var 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 var 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}\nvar Mirror = /*#__PURE__*/ function() {\n function Mirror() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n var _proto = Mirror.prototype;\n _proto.getId = function getId(n2) {\n var _a2;\n if (!n2) return -1;\n var id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id != null ? id : -1;\n };\n _proto.getNode = function getNode(id) {\n return this.idNodeMap.get(id) || null;\n };\n _proto.getIds = function getIds() {\n return Array.from(this.idNodeMap.keys());\n };\n _proto.getMeta = function 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 _proto.removeNodeFromMap = function removeNodeFromMap(n2) {\n var _this = this;\n var id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(function(childNode) {\n return _this.removeNodeFromMap(childNode);\n });\n }\n };\n _proto.has = function has(id) {\n return this.idNodeMap.has(id);\n };\n _proto.hasNode = function hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n };\n _proto.add = function add(n2, meta) {\n var id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n };\n _proto.replace = function replace(id, n2) {\n var oldNode = this.getNode(id);\n if (oldNode) {\n var meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n };\n _proto.reset = function reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n };\n return Mirror;\n}();\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue(param) {\n var element = param.element, maskInputOptions = param.maskInputOptions, tagName = param.tagName, type = param.type, value = param.value, maskInputFn = param.maskInputFn;\n var text = value || \"\";\n var 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}\nvar ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n var ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n var chunkSize = 50;\n for(var x2 = 0; x2 < canvas.width; x2 += chunkSize){\n for(var y = 0; y < canvas.height; y += chunkSize){\n var getImageData = ctx.getImageData;\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n var pixelBuffer = new Uint32Array(// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(ctx, x2, y, Math.min(chunkSize, canvas.width - x2), Math.min(chunkSize, canvas.height - y)).data.buffer);\n if (pixelBuffer.some(function(pixel) {\n return pixel !== 0;\n })) return false;\n }\n }\n return true;\n}\nfunction isNodeMetaEqual(a2, b) {\n if (!a2 || !b || a2.type !== b.type) return false;\n if (a2.type === NodeType$3.Document) return a2.compatMode === b.compatMode;\n else if (a2.type === NodeType$3.DocumentType) return a2.name === b.name && a2.publicId === b.publicId && a2.systemId === b.systemId;\n else if (a2.type === NodeType$3.Comment || a2.type === NodeType$3.Text || a2.type === NodeType$3.CDATA) return a2.textContent === b.textContent;\n else if (a2.type === NodeType$3.Element) return a2.tagName === b.tagName && JSON.stringify(a2.attributes) === JSON.stringify(b.attributes) && a2.isSVG === b.isSVG && a2.needBlock === b.needBlock;\n return false;\n}\nfunction getInputType(element) {\n var type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n var url;\n try {\n url = new URL(path, baseURL != null ? baseURL : window.location.href);\n } catch (err) {\n return null;\n }\n var regex = /\\.([0-9a-z]+)(?:$)/i;\n var match = url.pathname.match(regex);\n var _ref;\n return (_ref = match == null ? void 0 : match[1]) != null ? _ref : null;\n}\nfunction extractOrigin(url) {\n var 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}\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nvar URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nvar URL_WWW_MATCH = /^www\\..*/i;\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(URL_IN_CSS_REF, function(origin, quote1, path1, quote2, path2, path3) {\n var filePath = path1 || path2 || path3;\n var 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 var stack = href.split(\"/\");\n var parts = filePath.split(\"/\");\n stack.pop();\n for(var _iterator = _create_for_of_iterator_helper_loose(parts), _step; !(_step = _iterator()).done;){\n var part = _step.value;\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}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n var childNodes2 = Array.from(style.childNodes);\n var splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n var cssTextNorm = normalizeCssString(cssText);\n for(var i2 = 1; i2 < childNodes2.length; i2++){\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n var textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for(var j = 3; j < textContentNorm.length; j++){\n var bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n var splitNorm = cssTextNorm.indexOf(bit);\n for(var k = splitNorm; k < cssText.length; k++){\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\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}\nvar _id = 1;\nvar tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nvar IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (_instanceof(element, HTMLFormElement)) {\n return \"form\";\n }\n var processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nvar canvasService;\nvar canvasCtx;\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n var pos = 0;\n function collectCharacters(regEx) {\n var chars2;\n var 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 var output = [];\n while(true){\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n var 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 var descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n var inParens = false;\n while(true){\n var 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}\nvar 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 var 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\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\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 (tagName === \"video\" || tagName === \"audio\") && 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(var eIndex = element.classList.length; eIndex--;){\n var 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 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(var eIndex = node2.classList.length; eIndex--;){\n var 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 var 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 return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n var win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n var fired = false;\n var readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n var timer = setTimeout(function() {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", function() {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n var 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 var fired = false;\n var styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n var timer = setTimeout(function() {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", function() {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n var doc = options.doc, mirror2 = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, needsMask = options.needsMask, inlineStylesheet = options.inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, _options_cssCaptured = options.cssCaptured, cssCaptured = _options_cssCaptured === void 0 ? false : _options_cssCaptured;\n var 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 };\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: rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc: doc,\n blockClass: blockClass,\n blockSelector: blockSelector,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskInputFn: maskInputFn,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n keepIframeSrcFn: keepIframeSrcFn,\n newlyAddedElement: newlyAddedElement,\n rootId: rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc: doc,\n needsMask: needsMask,\n maskTextFn: maskTextFn,\n rootId: rootId,\n cssCaptured: cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId: rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId: rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n var docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n var needsMask = options.needsMask, maskTextFn = options.maskTextFn, rootId = options.rootId, cssCaptured = options.cssCaptured;\n var parent = index$1.parentNode(n2);\n var parentTagName = parent && parent.tagName;\n var textContent2 = \"\";\n var isStyle = parentTagName === \"STYLE\" ? true : void 0;\n var 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: rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskInputFn = options.maskInputFn, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, rootId = options.rootId;\n var needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n var tagName = getValidTagName$1(n2);\n var attributes = {};\n var len = n2.attributes.length;\n for(var i2 = 0; i2 < len; i2++){\n var attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value);\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n var stylesheet = Array.from(doc.styleSheets).find(function(s2) {\n return s2.href === n2.href;\n });\n var 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 var cssText1 = stringifyStylesheet(n2.sheet);\n if (cssText1) {\n if (n2.childNodes.length > 1) {\n cssText1 = markCssSplits(cssText1, n2);\n }\n attributes._cssText = cssText1;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n var value = n2.value;\n var 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: tagName,\n value: value,\n maskInputOptions: maskInputOptions,\n maskInputFn: 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(dataURLOptions.type, dataURLOptions.quality);\n }\n } else if (!(\"__context\" in n2)) {\n var canvasDataURL = n2.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n var blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\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 var image = n2;\n var imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"<unknown-src>\";\n var priorCrossOrigin = image.crossOrigin;\n var recordInlineImage = function() {\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(dataURLOptions.type, dataURLOptions.quality);\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\"Cannot inline img src=\" + imageSrc + \"! Error: \" + err);\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 (tagName === \"audio\" || tagName === \"video\") {\n var 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 var _n2_getBoundingClientRect = n2.getBoundingClientRect(), width = _n2_getBoundingClientRect.width, height = _n2_getBoundingClientRect.height;\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 var isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {}\n return {\n type: NodeType$3.Element,\n tagName: tagName,\n attributes: attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock: needBlock,\n rootId: 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 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.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // 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(/^msapplication-tile(image|color)$/) || 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 var doc = options.doc, mirror2 = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _options_skipChild = options.skipChild, skipChild = _options_skipChild === void 0 ? false : _options_skipChild, _options_inlineStylesheet = options.inlineStylesheet, inlineStylesheet = _options_inlineStylesheet === void 0 ? true : _options_inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, _options_inlineImages = options.inlineImages, inlineImages = _options_inlineImages === void 0 ? false : _options_inlineImages, _options_recordCanvas = options.recordCanvas, recordCanvas = _options_recordCanvas === void 0 ? false : _options_recordCanvas, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _options_iframeLoadTimeout = options.iframeLoadTimeout, iframeLoadTimeout = _options_iframeLoadTimeout === void 0 ? 5e3 : _options_iframeLoadTimeout, onStylesheetLoad = options.onStylesheetLoad, _options_stylesheetLoadTimeout = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _options_stylesheetLoadTimeout === void 0 ? 5e3 : _options_stylesheetLoadTimeout, _options_keepIframeSrcFn = options.keepIframeSrcFn, keepIframeSrcFn = _options_keepIframeSrcFn === void 0 ? function() {\n return false;\n } : _options_keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, _options_cssCaptured = options.cssCaptured, cssCaptured = _options_cssCaptured === void 0 ? false : _options_cssCaptured;\n var needsMask = options.needsMask;\n var _options_preserveWhiteSpace = options.preserveWhiteSpace, preserveWhiteSpace = _options_preserveWhiteSpace === void 0 ? true : _options_preserveWhiteSpace;\n if (!needsMask) {\n var checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(n2, maskTextClass, maskTextSelector, checkAncestors);\n }\n var _serializedNode = serializeNode(n2, {\n doc: doc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n keepIframeSrcFn: keepIframeSrcFn,\n newlyAddedElement: newlyAddedElement,\n cssCaptured: cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n var 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 var serializedNode = Object.assign(_serializedNode, {\n id: id\n });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n var recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n var shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl)) 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 var bypassOptions = {\n doc: doc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: skipChild,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: 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(var _iterator = _create_for_of_iterator_helper_loose(Array.from(index$1.childNodes(n2))), _step; !(_step = _iterator()).done;){\n var childN = _step.value;\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n var shadowRootEl1 = null;\n if (isElement(n2) && (shadowRootEl1 = index$1.shadowRoot(n2))) {\n for(var _iterator1 = _create_for_of_iterator_helper_loose(Array.from(index$1.childNodes(shadowRootEl1))), _step1; !(_step1 = _iterator1()).done;){\n var childN1 = _step1.value;\n var serializedChildNode1 = serializeNodeWithId(childN1, bypassOptions);\n if (serializedChildNode1) {\n isNativeShadowDom(shadowRootEl1) && (serializedChildNode1.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode1);\n }\n }\n }\n }\n var 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(n2, function() {\n var iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(n2, serializedIframeNode);\n }\n }\n }, iframeLoadTimeout);\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(n2, function() {\n if (onStylesheetLoad) {\n var serializedLinkNode = serializeNodeWithId(n2, {\n doc: doc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(n2, serializedLinkNode);\n }\n }\n }, stylesheetLoadTimeout);\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n var _ref = options || {}, tmp = _ref.mirror, mirror2 = tmp === void 0 ? new Mirror() : tmp, _ref_blockClass = _ref.blockClass, blockClass = _ref_blockClass === void 0 ? \"rr-block\" : _ref_blockClass, _ref_blockSelector = _ref.blockSelector, blockSelector = _ref_blockSelector === void 0 ? null : _ref_blockSelector, _ref_maskTextClass = _ref.maskTextClass, maskTextClass = _ref_maskTextClass === void 0 ? \"rr-mask\" : _ref_maskTextClass, _ref_maskTextSelector = _ref.maskTextSelector, maskTextSelector = _ref_maskTextSelector === void 0 ? null : _ref_maskTextSelector, _ref_inlineStylesheet = _ref.inlineStylesheet, inlineStylesheet = _ref_inlineStylesheet === void 0 ? true : _ref_inlineStylesheet, _ref_inlineImages = _ref.inlineImages, inlineImages = _ref_inlineImages === void 0 ? false : _ref_inlineImages, _ref_recordCanvas = _ref.recordCanvas, recordCanvas = _ref_recordCanvas === void 0 ? false : _ref_recordCanvas, _ref_maskAllInputs = _ref.maskAllInputs, maskAllInputs = _ref_maskAllInputs === void 0 ? false : _ref_maskAllInputs, maskTextFn = _ref.maskTextFn, maskInputFn = _ref.maskInputFn, _ref_slimDOM = _ref.slimDOM, slimDOM = _ref_slimDOM === void 0 ? false : _ref_slimDOM, dataURLOptions = _ref.dataURLOptions, preserveWhiteSpace = _ref.preserveWhiteSpace, onSerialize = _ref.onSerialize, onIframeLoad = _ref.onIframeLoad, iframeLoadTimeout = _ref.iframeLoadTimeout, onStylesheetLoad = _ref.onStylesheetLoad, stylesheetLoadTimeout = _ref.stylesheetLoadTimeout, _ref_keepIframeSrcFn = _ref.keepIframeSrcFn, keepIframeSrcFn = _ref_keepIframeSrcFn === void 0 ? function() {\n return false;\n } : _ref_keepIframeSrcFn;\n var 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 var slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n } : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nvar MEDIA_SELECTOR = /(max|min)-device-(width|height)/;\nvar MEDIA_SELECTOR_GLOBAL = new RegExp(MEDIA_SELECTOR.source, \"g\");\nvar mediaSelectorPlugin = {\n postcssPlugin: \"postcss-custom-selectors\",\n prepare: function prepare() {\n return {\n postcssPlugin: \"postcss-custom-selectors\",\n AtRule: function AtRule(atrule) {\n if (atrule.params.match(MEDIA_SELECTOR_GLOBAL)) {\n atrule.params = atrule.params.replace(MEDIA_SELECTOR_GLOBAL, \"$1-$2\");\n }\n }\n };\n }\n};\nvar pseudoClassPlugin = {\n postcssPlugin: \"postcss-hover-classes\",\n prepare: function prepare() {\n var fixed = [];\n return {\n Rule: function Rule(rule2) {\n if (fixed.indexOf(rule2) !== -1) {\n return;\n }\n fixed.push(rule2);\n rule2.selectors.forEach(function(selector) {\n if (selector.includes(\":hover\")) {\n rule2.selector += \",\\n\" + selector.replace(/:hover/g, \".\\\\:hover\");\n }\n });\n }\n };\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 (_instanceof(this, 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\", {\n value: true\n });\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 get() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = {\n exports: {}\n};\nvar x$1 = String;\nvar create$1 = function create$1() {\n return {\n isColorSupported: false,\n reset: x$1,\n bold: x$1,\n dim: x$1,\n italic: x$1,\n underline: x$1,\n inverse: x$1,\n hidden: x$1,\n strikethrough: x$1,\n black: x$1,\n red: x$1,\n green: x$1,\n yellow: x$1,\n blue: x$1,\n magenta: x$1,\n cyan: x$1,\n white: x$1,\n gray: x$1,\n bgBlack: x$1,\n bgRed: x$1,\n bgGreen: x$1,\n bgYellow: x$1,\n bgBlue: x$1,\n bgMagenta: x$1,\n bgCyan: x$1,\n bgWhite: x$1\n };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nvar __viteBrowserExternal$2 = {};\nvar __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, {\n value: \"Module\"\n}));\nvar require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nvar pico$1 = picocolors_browserExports$1;\nvar terminalHighlight$1$1 = require$$2$1;\nvar CssSyntaxError$3$1 = /*#__PURE__*/ function(Error1) {\n _inherits(CssSyntaxError, Error1);\n function CssSyntaxError(message, line, column, source, file, plugin22) {\n var _this;\n _this = Error1.call(this, message) || this;\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 return _this;\n }\n var _proto = CssSyntaxError.prototype;\n _proto.setMessage = function 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 _proto.showSourceCode = function showSourceCode(color) {\n var _this = this;\n if (!this.source) return \"\";\n var 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 var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n var maxWidth = String(end).length;\n var mark, aside;\n if (color) {\n var _pico$1_createColors = pico$1.createColors(true), bold = _pico$1_createColors.bold, gray = _pico$1_createColors.gray, red = _pico$1_createColors.red;\n mark = function(text) {\n return bold(red(text));\n };\n aside = function(text) {\n return gray(text);\n };\n } else {\n mark = aside = function(str) {\n return str;\n };\n }\n return lines.slice(start, end).map(function(line, index2) {\n var number = start + 1 + index2;\n var gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === _this.line) {\n var 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 _proto.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n };\n return CssSyntaxError;\n}(_wrap_native_super(Error));\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\");\nvar 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}\nvar Stringifier$2$1 = /*#__PURE__*/ function() {\n function Stringifier(builder) {\n this.builder = builder;\n }\n var _proto = Stringifier.prototype;\n _proto.atrule = function atrule(node2, semicolon) {\n var name = \"@\" + node2.name;\n var 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 var end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n };\n _proto.beforeAfter = function beforeAfter(node2, detect) {\n var 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 var buf = node2.parent;\n var depth = 0;\n while(buf && buf.type !== \"root\"){\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n var indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for(var step = 0; step < depth; step++)value += indent;\n }\n }\n return value;\n };\n _proto.block = function block(node2, start) {\n var between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n var 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 _proto.body = function body(node2) {\n var last = node2.nodes.length - 1;\n while(last > 0){\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n var semicolon = this.raw(node2, \"semicolon\");\n for(var i2 = 0; i2 < node2.nodes.length; i2++){\n var child = node2.nodes[i2];\n var before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n };\n _proto.comment = function comment(node2) {\n var left = this.raw(node2, \"left\", \"commentLeft\");\n var right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n };\n _proto.decl = function decl(node2, semicolon) {\n var between = this.raw(node2, \"between\", \"colon\");\n var 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 _proto.document = function document1(node2) {\n this.body(node2);\n };\n _proto.raw = function raw(node2, own, detect) {\n var value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n var 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 var 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 var method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk(function(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 _proto.rawBeforeClose = function rawBeforeClose(root2) {\n var value;\n root2.walk(function(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 _proto.rawBeforeComment = function rawBeforeComment(root2, node2) {\n var value;\n root2.walkComments(function(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 _proto.rawBeforeDecl = function rawBeforeDecl(root2, node2) {\n var value;\n root2.walkDecls(function(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 _proto.rawBeforeOpen = function rawBeforeOpen(root2) {\n var value;\n root2.walk(function(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 _proto.rawBeforeRule = function rawBeforeRule(root2) {\n var value;\n root2.walk(function(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 _proto.rawColon = function rawColon(root2) {\n var value;\n root2.walkDecls(function(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 _proto.rawEmptyBody = function rawEmptyBody(root2) {\n var value;\n root2.walk(function(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 _proto.rawIndent = function rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n var value;\n root2.walk(function(i2) {\n var p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n var 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 _proto.rawSemicolon = function rawSemicolon(root2) {\n var value;\n root2.walk(function(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 _proto.rawValue = function rawValue(node2, prop) {\n var value = node2[prop];\n var raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n };\n _proto.root = function root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n };\n _proto.rule = function 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 _proto.stringify = function stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\");\n }\n this[node2.type](node2, semicolon);\n };\n return Stringifier;\n}();\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nvar Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n var 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;\nvar isClean$2$1 = symbols$1.isClean, my$2$1 = symbols$1.my;\nvar CssSyntaxError$2$1 = cssSyntaxError$1;\nvar Stringifier2$1 = stringifier$1;\nvar stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n var cloned = new obj.constructor();\n for(var i2 in obj){\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n var value = obj[i2];\n var type = typeof value === \"undefined\" ? \"undefined\" : _type_of(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(function(j) {\n return cloneNode$1(j, cloned);\n });\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nvar Node$4$1 = /*#__PURE__*/ function() {\n function Node2(defaults) {\n if (defaults === void 0) defaults = {};\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for(var name in defaults){\n if (name === \"nodes\") {\n this.nodes = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(defaults[name]), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\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 var _proto = Node2.prototype;\n _proto.addToError = function addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n var s2 = this.source;\n error.stack = error.stack.replace(/\\n\\s{4}at /, \"$&\" + s2.input.from + \":\" + s2.start.line + \":\" + s2.start.column + \"$&\");\n }\n return error;\n };\n _proto.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n _proto.assign = function assign(overrides) {\n if (overrides === void 0) overrides = {};\n for(var name in overrides){\n this[name] = overrides[name];\n }\n return this;\n };\n _proto.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = cloneNode$1(this);\n for(var name in overrides){\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n _proto.cloneAfter = function cloneAfter(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n _proto.cloneBefore = function cloneBefore(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n _proto.error = function error(message, opts) {\n if (opts === void 0) opts = {};\n if (this.source) {\n var _this_rangeBy = this.rangeBy(opts), end = _this_rangeBy.end, start = _this_rangeBy.start;\n return this.source.input.error(message, {\n column: start.column,\n line: start.line\n }, {\n column: end.column,\n line: end.line\n }, opts);\n }\n return new CssSyntaxError$2$1(message);\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else {\n return node2[prop];\n }\n },\n set: function 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 */ prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.markDirty = function markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n var next = this;\n while(next = next.parent){\n next[isClean$2$1] = false;\n }\n }\n };\n _proto.next = function next() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n };\n _proto.positionBy = function positionBy(opts, stringRepresentation) {\n var 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 var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n };\n _proto.positionInside = function positionInside(index2, stringRepresentation) {\n var string = stringRepresentation || this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n for(var 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 {\n column: column,\n line: line\n };\n };\n _proto.prev = function prev() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n };\n _proto.rangeBy = function rangeBy(opts) {\n var start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n var 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 var stringRepresentation = this.toString();\n var 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 = {\n column: start.column + 1,\n line: start.line\n };\n }\n return {\n end: end,\n start: start\n };\n };\n _proto.raw = function raw(prop, defaultType) {\n var str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n };\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n };\n _proto.replaceWith = function replaceWith() {\n for(var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++){\n nodes[_key] = arguments[_key];\n }\n if (this.parent) {\n var bookmark = this;\n var foundSelf = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\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 _proto.root = function root() {\n var result2 = this;\n while(result2.parent && result2.parent.type !== \"document\"){\n result2 = result2.parent;\n }\n return result2;\n };\n _proto.toJSON = function toJSON(_, inputs) {\n var fixed = {};\n var emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n var inputsNextIndex = 0;\n for(var name in this){\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n var value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map(function(i2) {\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n var 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: inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [].concat(inputs.keys()).map(function(input2) {\n return input2.toJSON();\n });\n }\n return fixed;\n };\n _proto.toProxy = function toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n };\n _proto.toString = function toString(stringifier2) {\n if (stringifier2 === void 0) stringifier2 = stringify$3$1;\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n var result2 = \"\";\n stringifier2(this, function(i2) {\n result2 += i2;\n });\n return result2;\n };\n _proto.warn = function warn(result2, text, opts) {\n var data = {\n node: this\n };\n for(var i2 in opts)data[i2] = opts[i2];\n return result2.warn(text, data);\n };\n _create_class(Node2, [\n {\n key: \"proxyOf\",\n get: function get() {\n return this;\n }\n }\n ]);\n return Node2;\n}();\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nvar Node$3$1 = node$1;\nvar Declaration$4$1 = /*#__PURE__*/ function(Node$3$1) {\n _inherits(Declaration, Node$3$1);\n function Declaration(defaults) {\n var _this;\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = _extends({}, defaults, {\n value: String(defaults.value)\n });\n }\n _this = Node$3$1.call(this, defaults) || this;\n _this.type = \"decl\";\n return _this;\n }\n _create_class(Declaration, [\n {\n key: \"variable\",\n get: function get() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n }\n ]);\n return Declaration;\n}(Node$3$1);\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nvar urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nvar nanoid$1$1 = function(size) {\n if (size === void 0) size = 21;\n var id = \"\";\n var i2 = size;\n while(i2--){\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = {\n nanoid: nanoid$1$1};\nvar SourceMapConsumer$2$1 = require$$2$1.SourceMapConsumer, SourceMapGenerator$2$1 = require$$2$1.SourceMapGenerator;\nvar existsSync$1 = require$$2$1.existsSync, readFileSync$1 = require$$2$1.readFileSync;\nvar dirname$1$1 = require$$2$1.dirname, join$1 = require$$2$1.join;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nvar PreviousMap$2$1 = /*#__PURE__*/ function() {\n function PreviousMap(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n var prev = opts.map ? opts.map.prev : void 0;\n var 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 var _proto = PreviousMap.prototype;\n _proto.consumer = function consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n };\n _proto.decodeInline = function decodeInline(text) {\n var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n var baseUri = /^data:application\\/json;base64,/;\n var charsetUri = /^data:application\\/json;charset=utf-?8,/;\n var 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 var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n };\n _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n };\n _proto.isMap = function isMap(map) {\n if ((typeof map === \"undefined\" ? \"undefined\" : _type_of(map)) !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n };\n _proto.loadAnnotation = function loadAnnotation(css) {\n var comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n var start = css.lastIndexOf(comments.pop());\n var end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n };\n _proto.loadFile = function 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 _proto.loadMap = function 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 var prevPath = prev(file);\n if (prevPath) {\n var map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\"Unable to load previous source map: \" + prevPath.toString());\n }\n return map;\n }\n } else if (_instanceof(prev, SourceMapConsumer$2$1)) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (_instanceof(prev, SourceMapGenerator$2$1)) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\"Unsupported previous source map format: \" + prev.toString());\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n var map1 = this.annotation;\n if (file) map1 = join$1(dirname$1$1(file), map1);\n return this.loadFile(map1);\n }\n };\n _proto.startWith = function startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n };\n _proto.withContent = function withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n };\n return PreviousMap;\n}();\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nvar SourceMapConsumer$1$1 = require$$2$1.SourceMapConsumer, SourceMapGenerator$1$1 = require$$2$1.SourceMapGenerator;\nvar fileURLToPath$1 = require$$2$1.fileURLToPath, pathToFileURL$1$1 = require$$2$1.pathToFileURL;\nvar isAbsolute$1 = require$$2$1.isAbsolute, resolve$1$1 = require$$2$1.resolve;\nvar nanoid$2 = nonSecure$1.nanoid;\nvar terminalHighlight$2 = require$$2$1;\nvar CssSyntaxError$1$1 = cssSyntaxError$1;\nvar PreviousMap$1$1 = previousMap$1;\nvar fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nvar sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nvar pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nvar Input$4$1 = /*#__PURE__*/ function() {\n function Input(css, opts) {\n if (opts === void 0) opts = {};\n if (css === null || typeof css === \"undefined\" || (typeof css === \"undefined\" ? \"undefined\" : _type_of(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 var map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n var 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 var _proto = Input.prototype;\n _proto.error = function error(message, line, column, opts) {\n if (opts === void 0) opts = {};\n var result2, endLine, endColumn;\n if (line && (typeof line === \"undefined\" ? \"undefined\" : _type_of(line)) === \"object\") {\n var start = line;\n var end = column;\n if (typeof start.offset === \"number\") {\n var 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 var pos1 = this.fromOffset(end.offset);\n endLine = pos1.line;\n endColumn = pos1.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n var pos2 = this.fromOffset(line);\n line = pos2.line;\n column = pos2.col;\n }\n var origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(message, origin.endLine === void 0 ? origin.line : {\n column: origin.column,\n line: origin.line\n }, origin.endLine === void 0 ? origin.column : {\n column: origin.endColumn,\n line: origin.endLine\n }, origin.source, origin.file, opts.plugin);\n } else {\n result2 = new CssSyntaxError$1$1(message, endLine === void 0 ? line : {\n column: column,\n line: line\n }, endLine === void 0 ? column : {\n column: endColumn,\n line: endLine\n }, this.css, this.file, opts.plugin);\n }\n result2.input = {\n column: column,\n endColumn: endColumn,\n endLine: endLine,\n line: line,\n source: this.css\n };\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 _proto.fromOffset = function fromOffset(offset) {\n var lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n var lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n var prevIndex = 0;\n for(var 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 var min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n var max = lineToIndex.length - 2;\n var 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 _proto.mapResolve = function 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 _proto.origin = function origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n var from = consumer.originalPositionFor({\n column: column,\n line: line\n });\n if (!from.source) return false;\n var to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({\n column: endColumn,\n line: endLine\n });\n }\n var fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile));\n }\n var 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 var source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n };\n _proto.toJSON = function toJSON() {\n var json = {};\n for(var _i = 0, _iter = [\n \"hasBOM\",\n \"css\",\n \"file\",\n \"id\"\n ]; _i < _iter.length; _i++){\n var name = _iter[_i];\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = _extends({}, this.map);\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n };\n _create_class(Input, [\n {\n key: \"from\",\n get: function get() {\n return this.file || this.id;\n }\n }\n ]);\n return Input;\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}\nvar SourceMapConsumer$3 = require$$2$1.SourceMapConsumer, SourceMapGenerator$3 = require$$2$1.SourceMapGenerator;\nvar dirname$2 = require$$2$1.dirname, relative$1 = require$$2$1.relative, resolve$2 = require$$2$1.resolve, sep$1 = require$$2$1.sep;\nvar pathToFileURL$2 = require$$2$1.pathToFileURL;\nvar Input$3$1 = input$1;\nvar sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nvar pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nvar MapGenerator$2$1 = /*#__PURE__*/ function() {\n function MapGenerator(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 var _proto = MapGenerator.prototype;\n _proto.addAnnotation = function addAnnotation() {\n var 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 var eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n };\n _proto.applyPrevMaps = function applyPrevMaps() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.previous()), _step; !(_step = _iterator()).done;){\n var prev = _step.value;\n var from = this.toUrl(this.path(prev.file));\n var root2 = prev.root || dirname$2(prev.file);\n var map = void 0;\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 _proto.clearAnnotation = function clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n var node2;\n for(var 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 _proto.generate = function generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n var result2 = \"\";\n this.stringify(this.root, function(i2) {\n result2 += i2;\n });\n return [\n result2\n ];\n }\n };\n _proto.generateMap = function generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n var 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: {\n column: 0,\n line: 1\n },\n original: {\n column: 0,\n line: 1\n },\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 [\n this.css\n ];\n } else {\n return [\n this.css,\n this.map\n ];\n }\n };\n _proto.generateString = function generateString() {\n var _this = this;\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n var line = 1;\n var column = 1;\n var noSource = \"<no source>\";\n var mapping = {\n generated: {\n column: 0,\n line: 0\n },\n original: {\n column: 0,\n line: 0\n },\n source: \"\"\n };\n var lines, last;\n this.stringify(this.root, function(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 var p = node2.parent || {\n raws: {}\n };\n var 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 _proto.isAnnotation = function 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(function(i2) {\n return i2.annotation;\n });\n }\n return true;\n };\n _proto.isInline = function isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n var 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(function(i2) {\n return i2.inline;\n });\n }\n return true;\n };\n _proto.isMap = function isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n };\n _proto.isSourcesContent = function isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.withContent();\n });\n }\n return true;\n };\n _proto.outputFile = function 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 _proto.path = function 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 var cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n var 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 var path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n };\n _proto.previous = function previous() {\n var _this = this;\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source && node2.source.input.map) {\n var map = node2.source.input.map;\n if (!_this.previousMaps.includes(map)) {\n _this.previousMaps.push(map);\n }\n }\n });\n } else {\n var 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 _proto.setSourcesContent = function setSourcesContent() {\n var _this = this;\n var already = {};\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source) {\n var from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n var 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 var from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n this.map.setSourceContent(from, this.css);\n }\n };\n _proto.sourcePath = function 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 _proto.toBase64 = function toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n };\n _proto.toFileUrl = function toFileUrl(path) {\n var cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n var fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\"`map.absolute` option is not available in this PostCSS build\");\n }\n };\n _proto.toUrl = function toUrl(path) {\n var cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n var url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n };\n return MapGenerator;\n}();\nvar mapGenerator$1 = MapGenerator$2$1;\nvar Node$2$1 = node$1;\nvar Comment$4$1 = /*#__PURE__*/ function(Node$2$1) {\n _inherits(Comment, Node$2$1);\n function Comment(defaults) {\n var _this;\n _this = Node$2$1.call(this, defaults) || this;\n _this.type = \"comment\";\n return _this;\n }\n return Comment;\n}(Node$2$1);\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nvar isClean$1$1 = symbols$1.isClean, my$1$1 = symbols$1.my;\nvar Declaration$3$1 = declaration$1;\nvar Comment$3$1 = comment$1;\nvar Node$1$1 = node$1;\nvar parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map(function(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(var _iterator = _create_for_of_iterator_helper_loose(node2.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n markDirtyUp$1(i2);\n }\n }\n}\nvar Container$7$1 = /*#__PURE__*/ function(Node$1$1) {\n _inherits(Container, Node$1$1);\n function Container() {\n return Node$1$1.apply(this, arguments) || this;\n }\n var _proto = Container.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.last);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.push(node2);\n }\n }\n this.markDirty();\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n Node$1$1.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.cleanRaws(keepBetween);\n }\n }\n };\n _proto.each = function each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n var iterator = this.getIterator();\n var 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 _proto.every = function every(condition) {\n return this.nodes.every(condition);\n };\n _proto.getIterator = function getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n var iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function 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 function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var _node2;\n return (_node2 = node2)[prop].apply(_node2, [].concat(args.map(function(i2) {\n if (typeof i2 === \"function\") {\n return function(child, index2) {\n return i2(child.toProxy(), index2);\n };\n } else {\n return i2;\n }\n })));\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return function(cb) {\n return node2[prop](function(child) {\n for(var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n other[_key - 1] = arguments[_key];\n }\n return cb.apply(void 0, [].concat([\n child.toProxy()\n ], other));\n });\n };\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else if (prop === \"nodes\") {\n return node2.nodes.map(function(i2) {\n return i2.toProxy();\n });\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set: function 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 _proto.index = function 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 _proto.insertAfter = function insertAfter(exist, add) {\n var existIndex = this.index(exist);\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n }\n var index2;\n for(var 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 _proto.insertBefore = function insertBefore(exist, add) {\n var existIndex = this.index(exist);\n var type = existIndex === 0 ? \"prepend\" : false;\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex, 0, node2);\n }\n var index2;\n for(var 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 _proto.normalize = function normalize(nodes, sample) {\n var _this = this;\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(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\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(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var i21 = _step1.value;\n if (i21.parent) i21.parent.removeChild(i21, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [\n nodes\n ];\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 = [\n new Declaration$3$1(nodes)\n ];\n } else if (nodes.selector) {\n nodes = [\n new Rule$4$1(nodes)\n ];\n } else if (nodes.name) {\n nodes = [\n new AtRule$4$1(nodes)\n ];\n } else if (nodes.text) {\n nodes = [\n new Comment$3$1(nodes)\n ];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n var processed = nodes.map(function(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 _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n children = children.reverse();\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.unshift(node2);\n }\n for(var id in this.indexes){\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.push = function push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n };\n _proto.removeAll = function removeAll() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.parent = void 0;\n }\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n };\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n var index2;\n for(var 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 _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls(function(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 _proto.some = function some(condition) {\n return this.nodes.some(condition);\n };\n _proto.walk = function walk(callback) {\n return this.each(function(child, i2) {\n var 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 _proto.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(name, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkComments = function walkComments(callback) {\n return this.walk(function(child, i2) {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n };\n _proto.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function(child, i2) {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(prop, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk(function(child, i2) {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(selector, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n };\n _create_class(Container, [\n {\n key: \"first\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n },\n {\n key: \"last\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n }\n ]);\n return Container;\n}(Node$1$1);\nContainer$7$1.registerParse = function(dependant) {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = function(dependant) {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = function(dependant) {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = function(dependant) {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = function(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(function(child) {\n Container$7$1.rebuild(child);\n });\n }\n};\nvar Container$6$1 = container$1;\nvar LazyResult$4$1, Processor$3$1;\nvar Document$3$1 = /*#__PURE__*/ function(Container$6$1) {\n _inherits(Document2, Container$6$1);\n function Document2(defaults) {\n var _this;\n _this = Container$6$1.call(this, _extends({\n type: \"document\"\n }, defaults)) || this;\n if (!_this.nodes) {\n _this.nodes = [];\n }\n return _this;\n }\n var _proto = Document2.prototype;\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n };\n return Document2;\n}(Container$6$1);\nDocument$3$1.registerLazyResult = function(dependant) {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = function(dependant) {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nvar 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};\nvar Warning$2$1 = /*#__PURE__*/ function() {\n function Warning(text, opts) {\n if (opts === void 0) opts = {};\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n var 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(var opt in opts)this[opt] = opts[opt];\n }\n var _proto = Warning.prototype;\n _proto.toString = function 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 return Warning;\n}();\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nvar Warning$1$1 = warning$1;\nvar Result$3$1 = /*#__PURE__*/ function() {\n function Result(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 var _proto = Result.prototype;\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.warn = function warn(text, opts) {\n if (opts === void 0) opts = {};\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n var warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n };\n _proto.warnings = function warnings() {\n return this.messages.filter(function(i2) {\n return i2.type === \"warning\";\n });\n };\n _create_class(Result, [\n {\n key: \"content\",\n get: function get() {\n return this.css;\n }\n }\n ]);\n return Result;\n}();\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nvar SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nvar DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nvar BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nvar SLASH$1 = \"/\".charCodeAt(0);\nvar NEWLINE$1 = \"\\n\".charCodeAt(0);\nvar SPACE$1 = \" \".charCodeAt(0);\nvar FEED$1 = \"\\f\".charCodeAt(0);\nvar TAB$1 = \"\t\".charCodeAt(0);\nvar CR$1 = \"\\r\".charCodeAt(0);\nvar OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nvar CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nvar OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nvar CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nvar OPEN_CURLY$1 = \"{\".charCodeAt(0);\nvar CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nvar SEMICOLON$1 = \";\".charCodeAt(0);\nvar ASTERISK$1 = \"*\".charCodeAt(0);\nvar COLON$1 = \":\".charCodeAt(0);\nvar AT$1 = \"@\".charCodeAt(0);\nvar RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nvar RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nvar RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options) {\n if (options === void 0) options = {};\n var css = input2.css.valueOf();\n var ignore = options.ignoreErrors;\n var code, next, quote, content, escape;\n var escaped, escapePos, prev, n2, currentToken;\n var length = css.length;\n var pos = 0;\n var buffer = [];\n var 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 var 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 {\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 = [\n \"space\",\n css.slice(pos, next)\n ];\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 {\n var controlChar = String.fromCharCode(code);\n currentToken = [\n controlChar,\n controlChar,\n pos\n ];\n break;\n }\n case OPEN_PARENTHESES$1:\n {\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 = [\n \"brackets\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\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 = [\n \"(\",\n \"(\",\n pos\n ];\n } else {\n currentToken = [\n \"brackets\",\n content,\n pos,\n next\n ];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1:\n {\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 = [\n \"string\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case AT$1:\n {\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 = [\n \"at-word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case BACKSLASH$1:\n {\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 = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n default:\n {\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 = [\n \"comment\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\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 = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\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: back,\n endOfFile: endOfFile,\n nextToken: nextToken,\n position: position\n };\n};\nvar Container$5$1 = container$1;\nvar AtRule$3$1 = /*#__PURE__*/ function(Container$5$1) {\n _inherits(AtRule, Container$5$1);\n function AtRule(defaults) {\n var _this;\n _this = Container$5$1.call(this, defaults) || this;\n _this.type = \"atrule\";\n return _this;\n }\n var _proto = AtRule.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5$1_prototype_append;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5$1_prototype_append = Container$5$1.prototype.append).call.apply(_Container$5$1_prototype_append, [].concat([\n this\n ], children));\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5$1_prototype_prepend;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5$1_prototype_prepend = Container$5$1.prototype.prepend).call.apply(_Container$5$1_prototype_prepend, [].concat([\n this\n ], children));\n };\n return AtRule;\n}(Container$5$1);\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nvar Container$4$1 = container$1;\nvar LazyResult$3$1, Processor$2$1;\nvar Root$5$1 = /*#__PURE__*/ function(Container$4$1) {\n _inherits(Root, Container$4$1);\n function Root(defaults) {\n var _this;\n _this = Container$4$1.call(this, defaults) || this;\n _this.type = \"root\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n var _proto = Root.prototype;\n _proto.normalize = function normalize(child, sample, type) {\n var nodes = Container$4$1.prototype.normalize.call(this, 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(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n };\n _proto.removeChild = function removeChild(child, ignore) {\n var 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 Container$4$1.prototype.removeChild.call(this, child);\n };\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n };\n return Root;\n}(Container$4$1);\nRoot$5$1.registerLazyResult = function(dependant) {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = function(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);\nvar list$2$1 = {\n comma: function comma(string) {\n return list$2$1.split(string, [\n \",\"\n ], true);\n },\n space: function space(string) {\n var spaces = [\n \" \",\n \"\\n\",\n \"\t\"\n ];\n return list$2$1.split(string, spaces);\n },\n split: function split(string, separators, last) {\n var array = [];\n var current = \"\";\n var split = false;\n var func = 0;\n var inQuote = false;\n var prevQuote = \"\";\n var escape = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(string), _step; !(_step = _iterator()).done;){\n var letter = _step.value;\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;\nvar Container$3$1 = container$1;\nvar list$1$1 = list_1$1;\nvar Rule$3$1 = /*#__PURE__*/ function(Container$3$1) {\n _inherits(Rule, Container$3$1);\n function Rule(defaults) {\n var _this;\n _this = Container$3$1.call(this, defaults) || this;\n _this.type = \"rule\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n _create_class(Rule, [\n {\n key: \"selectors\",\n get: function get() {\n return list$1$1.comma(this.selector);\n },\n set: function set(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n }\n ]);\n return Rule;\n}(Container$3$1);\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nvar Declaration$2$1 = declaration$1;\nvar tokenizer2$1 = tokenize$1;\nvar Comment$2$1 = comment$1;\nvar AtRule$2$1 = atRule$1;\nvar Root$4$1 = root$1;\nvar Rule$2$1 = rule$1;\nvar SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n var token = tokens[i2];\n var pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nvar Parser$1$1 = /*#__PURE__*/ function() {\n function Parser(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 = {\n input: input2,\n start: {\n column: 1,\n line: 1,\n offset: 0\n }\n };\n }\n var _proto = Parser.prototype;\n _proto.atrule = function atrule(token) {\n var 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 var type;\n var prev;\n var shift;\n var last = false;\n var open = false;\n var params = [];\n var 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 _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n var founded = 0;\n var token;\n for(var 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(\"Missed semicolon\", token[0] === \"word\" ? token[3] + 1 : token[2]);\n };\n _proto.colon = function colon(tokens) {\n var brackets = 0;\n var token, type, prev;\n for(var _iterator = _create_for_of_iterator_helper_loose(tokens.entries()), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, i2 = _step_value[0], element = _step_value[1];\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 _proto.comment = function comment(token) {\n var 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 var 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 var 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 _proto.createTokenizer = function createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n };\n _proto.decl = function decl(tokens, customProperty) {\n var node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n var last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition$1(tokens));\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 var 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 var 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([\n token\n ]);\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 var firstSpaces = [];\n var 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(var i2 = tokens.length - 1; i2 >= 0; i2--){\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n var 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 var cache = tokens.slice(0);\n var str = \"\";\n for(var j = i2; j > 0; j--){\n var type1 = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type1 !== \"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 var hasWord = tokens.some(function(i2) {\n return i2[0] !== \"space\" && i2[0] !== \"comment\";\n });\n if (hasWord) {\n node2.raws.between += firstSpaces.map(function(i2) {\n return i2[1];\n }).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 _proto.doubleColon = function doubleColon(token) {\n throw this.input.error(\"Double colon\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n _proto.emptyRule = function emptyRule(token) {\n var node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n };\n _proto.end = function 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 _proto.endFile = function 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 _proto.freeSemicolon = function freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n var 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 _proto.getPosition = function getPosition(offset) {\n var pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset: offset\n };\n };\n _proto.init = function 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 _proto.other = function other(start) {\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n var customProperty = start[1].startsWith(\"--\");\n var tokens = [];\n var 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 _proto.parse = function parse() {\n var 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 _proto.precheckMissedSemicolon = function precheckMissedSemicolon() {};\n _proto.raw = function raw(node2, prop, tokens, customProperty) {\n var token, type;\n var length = tokens.length;\n var value = \"\";\n var clean = true;\n var next, prev;\n for(var 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 var raw = tokens.reduce(function(all, i2) {\n return all + i2[1];\n }, \"\");\n node2.raws[prop] = {\n raw: raw,\n value: value\n };\n }\n node2[prop] = value;\n };\n _proto.rule = function rule(tokens) {\n tokens.pop();\n var 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 _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n var lastTokenType;\n var 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 _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n var next;\n var 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 _proto.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType;\n var 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 _proto.stringFrom = function stringFrom(tokens, from) {\n var result2 = \"\";\n for(var i2 = from; i2 < tokens.length; i2++){\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n };\n _proto.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n };\n _proto.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error(\"Unclosed bracket\", {\n offset: bracket[2]\n }, {\n offset: bracket[2] + 1\n });\n };\n _proto.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error(\"Unexpected }\", {\n offset: token[2]\n }, {\n offset: token[2] + 1\n });\n };\n _proto.unknownWord = function unknownWord(tokens) {\n throw this.input.error(\"Unknown word\", {\n offset: tokens[0][2]\n }, {\n offset: tokens[0][2] + tokens[0][1].length\n });\n };\n _proto.unnamedAtrule = function unnamedAtrule(node2, token) {\n throw this.input.error(\"At-rule without name\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n return Parser;\n}();\nvar parser$1 = Parser$1$1;\nvar Container$2$1 = container$1;\nvar Parser2$1 = parser$1;\nvar Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n var input2 = new Input$2$1(css, opts);\n var 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);\nvar isClean$3 = symbols$1.isClean, my$3 = symbols$1.my;\nvar MapGenerator$1$1 = mapGenerator$1;\nvar stringify$2$1 = stringify_1$1;\nvar Container$1$1 = container$1;\nvar Document$2$1 = document$1$1;\nvar warnOnce$1$1 = warnOnce$2$1;\nvar Result$2$1 = result$1;\nvar parse$2$1 = parse_1$1;\nvar Root$3$1 = root$1;\nvar TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nvar 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};\nvar NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nvar CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return (typeof obj === \"undefined\" ? \"undefined\" : _type_of(obj)) === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n var key = false;\n var 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 [\n type,\n type + \"-\" + key,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (node2.append) {\n return [\n type,\n CHILDREN$1,\n type + \"Exit\"\n ];\n } else {\n return [\n type,\n type + \"Exit\"\n ];\n }\n}\nfunction toStack$1(node2) {\n var events;\n if (node2.type === \"document\") {\n events = [\n \"Document\",\n CHILDREN$1,\n \"DocumentExit\"\n ];\n } else if (node2.type === \"root\") {\n events = [\n \"Root\",\n CHILDREN$1,\n \"RootExit\"\n ];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events: 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(function(i2) {\n return cleanMarks$1(i2);\n });\n return node2;\n}\nvar postcss$2$1 = {};\nvar LazyResult$2$1 = /*#__PURE__*/ function() {\n function LazyResult(processor2, css, opts) {\n var _this = this;\n this.stringified = false;\n this.processed = false;\n var root2;\n if ((typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (_instanceof(css, LazyResult) || _instanceof(css, 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 var 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 = _extends({}, postcss$2$1, {\n postcss: postcss$2$1,\n result: this.result\n });\n this.plugins = this.processor.plugins.map(function(plugin22) {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.prepare) {\n return _extends({}, plugin22, plugin22.prepare(_this.result));\n } else {\n return plugin22;\n }\n });\n }\n var _proto = LazyResult.prototype;\n _proto.async = function 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 _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.getAsyncError = function getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n };\n _proto.handleError = function handleError(error, node2) {\n var 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 var pluginName = plugin22.postcssPlugin;\n var pluginVer = plugin22.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a2 = pluginVer.split(\".\");\n var b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\"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 } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n };\n _proto.prepareVisitors = function prepareVisitors() {\n var _this = this;\n this.listeners = {};\n var add = function(plugin22, type, cb) {\n if (!_this.listeners[type]) _this.listeners[type] = [];\n _this.listeners[type].push([\n plugin22,\n cb\n ]);\n };\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\") {\n for(var event in plugin22){\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\"Unknown event \" + event + \" in \" + plugin22.postcssPlugin + \". Try to update PostCSS (\" + this.processor.version + \" now).\");\n }\n if (!NOT_VISITORS$1[event]) {\n if (_type_of(plugin22[event]) === \"object\") {\n for(var filter in plugin22[event]){\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(plugin22, event + \"-\" + filter.toLowerCase(), plugin22[event][filter]);\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 _proto.runAsync = function runAsync() {\n var _this = this;\n return _async_to_generator(function() {\n var i2, plugin22, promise, error, root2, stack, promise1, e2, node2, _loop, _iterator, _step;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this.plugin = 0;\n i2 = 0;\n _state.label = 1;\n case 1:\n if (!(i2 < _this.plugins.length)) return [\n 3,\n 6\n ];\n plugin22 = _this.plugins[i2];\n promise = _this.runOnRoot(plugin22);\n if (!isPromise$1(promise)) return [\n 3,\n 5\n ];\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 4,\n ,\n 5\n ]);\n return [\n 4,\n promise\n ];\n case 3:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 4:\n error = _state.sent();\n throw _this.handleError(error);\n case 5:\n i2++;\n return [\n 3,\n 1\n ];\n case 6:\n _this.prepareVisitors();\n if (!_this.hasListener) return [\n 3,\n 18\n ];\n root2 = _this.result.root;\n _state.label = 7;\n case 7:\n if (!!root2[isClean$3]) return [\n 3,\n 14\n ];\n root2[isClean$3] = true;\n stack = [\n toStack$1(root2)\n ];\n _state.label = 8;\n case 8:\n if (!(stack.length > 0)) return [\n 3,\n 13\n ];\n promise1 = _this.visitTick(stack);\n if (!isPromise$1(promise1)) return [\n 3,\n 12\n ];\n _state.label = 9;\n case 9:\n _state.trys.push([\n 9,\n 11,\n ,\n 12\n ]);\n return [\n 4,\n promise1\n ];\n case 10:\n _state.sent();\n return [\n 3,\n 12\n ];\n case 11:\n e2 = _state.sent();\n node2 = stack[stack.length - 1].node;\n throw _this.handleError(e2, node2);\n case 12:\n return [\n 3,\n 8\n ];\n case 13:\n return [\n 3,\n 7\n ];\n case 14:\n if (!_this.listeners.OnceExit) return [\n 3,\n 18\n ];\n _loop = function() {\n var _step_value, plugin22, visitor, roots, e2;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n _this.result.lastPlugin = plugin22;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 6,\n ,\n 7\n ]);\n if (!(root2.type === \"document\")) return [\n 3,\n 3\n ];\n roots = root2.nodes.map(function(subRoot) {\n return visitor(subRoot, _this.helpers);\n });\n return [\n 4,\n Promise.all(roots)\n ];\n case 2:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 3:\n return [\n 4,\n visitor(root2, _this.helpers)\n ];\n case 4:\n _state.sent();\n _state.label = 5;\n case 5:\n return [\n 3,\n 7\n ];\n case 6:\n e2 = _state.sent();\n throw _this.handleError(e2);\n case 7:\n return [\n 2\n ];\n }\n });\n };\n _iterator = _create_for_of_iterator_helper_loose(_this.listeners.OnceExit);\n _state.label = 15;\n case 15:\n if (!!(_step = _iterator()).done) return [\n 3,\n 18\n ];\n return [\n 5,\n _ts_values(_loop())\n ];\n case 16:\n _state.sent();\n _state.label = 17;\n case 17:\n return [\n 3,\n 15\n ];\n case 18:\n _this.processed = true;\n return [\n 2,\n _this.stringify()\n ];\n }\n });\n })();\n };\n _proto.runOnRoot = function runOnRoot(plugin22) {\n var _this = this;\n this.result.lastPlugin = plugin22;\n try {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n var roots = this.result.root.nodes.map(function(root2) {\n return 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 _proto.stringify = function stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n var opts = this.result.opts;\n var 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 var map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n };\n _proto.sync = function 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(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n var promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n var 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(var _iterator1 = _create_for_of_iterator_helper_loose(root2.nodes), _step1; !(_step1 = _iterator1()).done;){\n var subRoot = _step1.value;\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 _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\"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 return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.visitSync = function visitSync(visitors, node2) {\n for(var _iterator = _create_for_of_iterator_helper_loose(visitors), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n this.result.lastPlugin = plugin22;\n var promise = void 0;\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 _proto.visitTick = function visitTick(stack) {\n var visit2 = stack[stack.length - 1];\n var node2 = visit2.node, visitors = visit2.visitors;\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 var _visitors_visit2_visitorIndex = visitors[visit2.visitorIndex], plugin22 = _visitors_visit2_visitorIndex[0], visitor = _visitors_visit2_visitorIndex[1];\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 var iterator = visit2.iterator;\n var 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 var events = visit2.events;\n while(visit2.eventIndex < events.length){\n var 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 _proto.walkSync = function walkSync(node2) {\n var _this = this;\n node2[isClean$3] = true;\n var events = getEvents$1(node2);\n for(var _iterator = _create_for_of_iterator_helper_loose(events), _step; !(_step = _iterator()).done;){\n var event = _step.value;\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each(function(child) {\n if (!child[isClean$3]) _this.walkSync(child);\n });\n }\n } else {\n var visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n };\n _proto.warnings = function warnings() {\n return this.sync().warnings();\n };\n _create_class(LazyResult, [\n {\n key: \"content\",\n get: function get() {\n return this.stringify().content;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.stringify().css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.stringify().map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return this.sync().messages;\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n return this.sync().root;\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"LazyResult\";\n }\n }\n ]);\n return LazyResult;\n}();\nLazyResult$2$1.registerPostcss = function(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);\nvar MapGenerator2$1 = mapGenerator$1;\nvar stringify$1$1 = stringify_1$1;\nvar warnOnce2$1 = warnOnce$2$1;\nvar parse$1$1 = parse_1$1;\nvar Result$1$1 = result$1;\nvar NoWorkResult$1$1 = /*#__PURE__*/ function() {\n function NoWorkResult(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 var root2;\n var str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n var self = this;\n Object.defineProperty(this.result, \"root\", {\n get: function get() {\n return self.root;\n }\n });\n var map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n var _map_generate = map.generate(), generatedCSS = _map_generate[0], generatedMap = _map_generate[1];\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 var _proto = NoWorkResult.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\"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 return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this._css;\n };\n _proto.warnings = function warnings() {\n return [];\n };\n _create_class(NoWorkResult, [\n {\n key: \"content\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.result.map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return [];\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n if (this._root) {\n return this._root;\n }\n var root2;\n var 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 },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"NoWorkResult\";\n }\n }\n ]);\n return NoWorkResult;\n}();\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nvar NoWorkResult2$1 = noWorkResult$1;\nvar LazyResult$1$1 = lazyResult$1;\nvar Document$1$1 = document$1$1;\nvar Root$2$1 = root$1;\nvar Processor$1$1 = /*#__PURE__*/ function() {\n function Processor(plugins) {\n if (plugins === void 0) plugins = [];\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n var _proto = Processor.prototype;\n _proto.normalize = function normalize(plugins) {\n var normalized = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"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 } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n };\n _proto.process = function process1(css, opts) {\n if (opts === void 0) 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 _proto.use = function use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([\n plugin22\n ]));\n return this;\n };\n return Processor;\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);\nvar Declaration$1$1 = declaration$1;\nvar PreviousMap2$1 = previousMap$1;\nvar Comment$1$1 = comment$1;\nvar AtRule$1$1 = atRule$1;\nvar Input$1$1 = input$1;\nvar Root$1$1 = root$1;\nvar Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map(function(n2) {\n return fromJSON$1$1(n2);\n });\n var ownInputs = json.inputs, defaults = _object_without_properties_loose(json, [\n \"inputs\"\n ]);\n if (ownInputs) {\n inputs = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(ownInputs), _step; !(_step = _iterator()).done;){\n var input2 = _step.value;\n var inputHydrated = _extends({}, input2, {\n __proto__: Input$1$1.prototype\n });\n if (inputHydrated.map) {\n inputHydrated.map = _extends({}, 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(function(n2) {\n return fromJSON$1$1(n2, inputs);\n });\n }\n if (defaults.source) {\n var _defaults_source = defaults.source, inputId = _defaults_source.inputId, source = _object_without_properties_loose(_defaults_source, [\n \"inputId\"\n ]);\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;\nvar CssSyntaxError2$1 = cssSyntaxError$1;\nvar Declaration2$1 = declaration$1;\nvar LazyResult2$1 = lazyResult$1;\nvar Container2$1 = container$1;\nvar Processor2$1 = processor$1;\nvar stringify$5 = stringify_1$1;\nvar fromJSON$2 = fromJSON_1$1;\nvar Document22 = document$1$1;\nvar Warning2$1 = warning$1;\nvar Comment2$1 = comment$1;\nvar AtRule2$1 = atRule$1;\nvar Result2$1 = result$1;\nvar Input2$1 = input$1;\nvar parse$5 = parse_1$1;\nvar list$3 = list_1$1;\nvar Rule2$1 = rule$1;\nvar Root2$1 = root$1;\nvar Node2$1 = node$1;\nfunction postcss$3() {\n for(var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++){\n plugins[_key] = arguments[_key];\n }\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 var warningPrinted = false;\n function creator() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\");\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\");\n }\n }\n var transformer = initializer.apply(void 0, [].concat(args));\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n var cache;\n Object.defineProperty(creator, \"postcss\", {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([\n creator(pluginOpts)\n ]).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 = function(defaults) {\n return new Comment2$1(defaults);\n};\npostcss$3.atRule = function(defaults) {\n return new AtRule2$1(defaults);\n};\npostcss$3.decl = function(defaults) {\n return new Declaration2$1(defaults);\n};\npostcss$3.rule = function(defaults) {\n return new Rule2$1(defaults);\n};\npostcss$3.root = function(defaults) {\n return new Root2$1(defaults);\n};\npostcss$3.document = function(defaults) {\n return new Document22(defaults);\n};\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;\nvar 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 tagMap = {\n script: \"noscript\",\n // camel case svg element tag names\n altglyph: \"altGlyph\",\n altglyphdef: \"altGlyphDef\",\n altglyphitem: \"altGlyphItem\",\n animatecolor: \"animateColor\",\n animatemotion: \"animateMotion\",\n animatetransform: \"animateTransform\",\n clippath: \"clipPath\",\n feblend: \"feBlend\",\n fecolormatrix: \"feColorMatrix\",\n fecomponenttransfer: \"feComponentTransfer\",\n fecomposite: \"feComposite\",\n feconvolvematrix: \"feConvolveMatrix\",\n fediffuselighting: \"feDiffuseLighting\",\n fedisplacementmap: \"feDisplacementMap\",\n fedistantlight: \"feDistantLight\",\n fedropshadow: \"feDropShadow\",\n feflood: \"feFlood\",\n fefunca: \"feFuncA\",\n fefuncb: \"feFuncB\",\n fefuncg: \"feFuncG\",\n fefuncr: \"feFuncR\",\n fegaussianblur: \"feGaussianBlur\",\n feimage: \"feImage\",\n femerge: \"feMerge\",\n femergenode: \"feMergeNode\",\n femorphology: \"feMorphology\",\n feoffset: \"feOffset\",\n fepointlight: \"fePointLight\",\n fespecularlighting: \"feSpecularLighting\",\n fespotlight: \"feSpotLight\",\n fetile: \"feTile\",\n feturbulence: \"feTurbulence\",\n foreignobject: \"foreignObject\",\n glyphref: \"glyphRef\",\n lineargradient: \"linearGradient\",\n radialgradient: \"radialGradient\"\n};\nfunction getTagName(n2) {\n var tagName = tagMap[n2.tagName] ? tagMap[n2.tagName] : n2.tagName;\n if (tagName === \"link\" && n2.attributes._cssText) {\n tagName = \"style\";\n }\n return tagName;\n}\nfunction adaptCssForReplay(cssText, cache) {\n var cachedStyle = cache == null ? void 0 : cache.stylesWithHoverClass.get(cssText);\n if (cachedStyle) return cachedStyle;\n var ast = postcss$1$1([\n mediaSelectorPlugin,\n pseudoClassPlugin\n ]).process(cssText);\n var result2 = ast.css;\n cache == null ? void 0 : cache.stylesWithHoverClass.set(cssText, result2);\n return result2;\n}\nfunction createCache() {\n var stylesWithHoverClass = /* @__PURE__ */ new Map();\n return {\n stylesWithHoverClass: stylesWithHoverClass\n };\n}\nfunction applyCssSplits(n2, cssText, hackCss, cache) {\n var childTextNodes = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(n2.childNodes), _step; !(_step = _iterator()).done;){\n var scn = _step.value;\n if (scn.type === NodeType$3.Text) {\n childTextNodes.push(scn);\n }\n }\n var cssTextSplits = cssText.split(\"/* rr_split */\");\n while(cssTextSplits.length > 1 && cssTextSplits.length > childTextNodes.length){\n cssTextSplits.splice(-2, 2, cssTextSplits.slice(-2).join(\"\"));\n }\n for(var i2 = 0; i2 < childTextNodes.length; i2++){\n var childTextNode = childTextNodes[i2];\n var cssTextSection = cssTextSplits[i2];\n if (childTextNode && cssTextSection) {\n childTextNode.textContent = hackCss ? adaptCssForReplay(cssTextSection, cache) : cssTextSection;\n }\n }\n}\nfunction buildStyleNode(n2, styleEl, cssText, options) {\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\n if (n2.childNodes.length) {\n applyCssSplits(n2, cssText, hackCss, cache);\n } else {\n if (hackCss) {\n cssText = adaptCssForReplay(cssText, cache);\n }\n styleEl.appendChild(doc.createTextNode(cssText));\n }\n}\nfunction buildNode(n2, options) {\n var _a2;\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\n switch(n2.type){\n case NodeType$3.Document:\n return doc.implementation.createDocument(null, \"\", null);\n case NodeType$3.DocumentType:\n return doc.implementation.createDocumentType(n2.name || \"html\", n2.publicId, n2.systemId);\n case NodeType$3.Element:\n {\n var _loop = function(name1) {\n var value = specialAttributes[name1];\n if (tagName === \"canvas\" && name1 === \"rr_dataURL\") {\n var image = doc.createElement(\"img\");\n image.onload = function() {\n var ctx = node2.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(image, 0, 0, image.width, image.height);\n }\n };\n image.src = value.toString();\n if (node2.RRNodeType) node2.rr_dataURL = value.toString();\n } else if (tagName === \"img\" && name1 === \"rr_dataURL\") {\n var image1 = node2;\n if (!image1.currentSrc.startsWith(\"data:\")) {\n image1.setAttribute(\"rrweb-original-src\", n2.attributes.src);\n image1.src = value.toString();\n }\n }\n if (name1 === \"rr_width\") {\n node2.style.setProperty(\"width\", value.toString());\n } else if (name1 === \"rr_height\") {\n node2.style.setProperty(\"height\", value.toString());\n } else if (name1 === \"rr_mediaCurrentTime\" && typeof value === \"number\") {\n node2.currentTime = value;\n } else if (name1 === \"rr_mediaState\") {\n switch(value){\n case \"played\":\n node2.play().catch(function(e2) {\n return console.warn(\"media playback error\", e2);\n });\n break;\n case \"paused\":\n node2.pause();\n break;\n }\n } else if (name1 === \"rr_mediaPlaybackRate\" && typeof value === \"number\") {\n node2.playbackRate = value;\n } else if (name1 === \"rr_mediaMuted\" && typeof value === \"boolean\") {\n node2.muted = value;\n } else if (name1 === \"rr_mediaLoop\" && typeof value === \"boolean\") {\n node2.loop = value;\n } else if (name1 === \"rr_mediaVolume\" && typeof value === \"number\") {\n node2.volume = value;\n } else if (name1 === \"rr_open_mode\") {\n node2.setAttribute(\"rr_open_mode\", value);\n }\n };\n var tagName = getTagName(n2);\n var node2;\n if (n2.isSVG) {\n node2 = doc.createElementNS(\"http://www.w3.org/2000/svg\", tagName);\n } else {\n if (// If the tag name is a custom element name\n n2.isCustom && // If the browser supports custom elements\n ((_a2 = doc.defaultView) == null ? void 0 : _a2.customElements) && // If the custom element hasn't been defined yet\n !doc.defaultView.customElements.get(n2.tagName)) doc.defaultView.customElements.define(n2.tagName, /*#__PURE__*/ function(_doc_defaultView_HTMLElement) {\n _inherits(_class, _doc_defaultView_HTMLElement);\n function _class() {\n return _doc_defaultView_HTMLElement.apply(this, arguments) || this;\n }\n return _class;\n }(doc.defaultView.HTMLElement));\n node2 = doc.createElement(tagName);\n }\n var specialAttributes = {};\n for(var name in n2.attributes){\n if (!Object.prototype.hasOwnProperty.call(n2.attributes, name)) {\n continue;\n }\n var value = n2.attributes[name];\n if (tagName === \"option\" && name === \"selected\" && value === false) {\n continue;\n }\n if (value === null) {\n continue;\n }\n if (value === true) value = \"\";\n if (name.startsWith(\"rr_\")) {\n specialAttributes[name] = value;\n continue;\n }\n if (typeof value !== \"string\") ;\n else if (tagName === \"style\" && name === \"_cssText\") {\n buildStyleNode(n2, node2, value, options);\n continue;\n } else if (tagName === \"textarea\" && name === \"value\") {\n node2.appendChild(doc.createTextNode(value));\n n2.childNodes = [];\n continue;\n }\n try {\n if (n2.isSVG && name === \"xlink:href\") {\n node2.setAttributeNS(\"http://www.w3.org/1999/xlink\", name, value.toString());\n } else if (name === \"onload\" || name === \"onclick\" || name.substring(0, 7) === \"onmouse\") {\n node2.setAttribute(\"_\" + name, value.toString());\n } else if (tagName === \"meta\" && n2.attributes[\"http-equiv\"] === \"Content-Security-Policy\" && name === \"content\") {\n node2.setAttribute(\"csp-content\", value.toString());\n continue;\n } else if (tagName === \"link\" && (n2.attributes.rel === \"preload\" || n2.attributes.rel === \"modulepreload\") && n2.attributes.as === \"script\") {} else if (tagName === \"link\" && n2.attributes.rel === \"prefetch\" && typeof n2.attributes.href === \"string\" && n2.attributes.href.endsWith(\".js\")) {} else if (tagName === \"img\" && n2.attributes.srcset && n2.attributes.rr_dataURL) {\n node2.setAttribute(\"rrweb-original-srcset\", n2.attributes.srcset);\n } else {\n node2.setAttribute(name, value.toString());\n }\n } catch (error) {}\n }\n for(var name1 in specialAttributes)_loop(name1);\n if (n2.isShadowHost) {\n if (!node2.shadowRoot) {\n node2.attachShadow({\n mode: \"open\"\n });\n } else {\n while(node2.shadowRoot.firstChild){\n node2.shadowRoot.removeChild(node2.shadowRoot.firstChild);\n }\n }\n }\n return node2;\n }\n case NodeType$3.Text:\n if (n2.isStyle && hackCss) {\n return doc.createTextNode(adaptCssForReplay(n2.textContent, cache));\n }\n return doc.createTextNode(n2.textContent);\n case NodeType$3.CDATA:\n return doc.createCDATASection(n2.textContent);\n case NodeType$3.Comment:\n return doc.createComment(n2.textContent);\n default:\n return null;\n }\n}\nfunction buildNodeWithSN(n2, options) {\n var doc = options.doc, mirror2 = options.mirror, _options_skipChild = options.skipChild, skipChild = _options_skipChild === void 0 ? false : _options_skipChild, _options_hackCss = options.hackCss, hackCss = _options_hackCss === void 0 ? true : _options_hackCss, afterAppend = options.afterAppend, cache = options.cache;\n if (mirror2.has(n2.id)) {\n var nodeInMirror = mirror2.getNode(n2.id);\n var meta = mirror2.getMeta(nodeInMirror);\n if (isNodeMetaEqual(meta, n2)) return mirror2.getNode(n2.id);\n }\n var node2 = buildNode(n2, {\n doc: doc,\n hackCss: hackCss,\n cache: cache\n });\n if (!node2) {\n return null;\n }\n if (n2.rootId && mirror2.getNode(n2.rootId) !== doc) {\n mirror2.replace(n2.rootId, doc);\n }\n if (n2.type === NodeType$3.Document) {\n doc.close();\n doc.open();\n if (n2.compatMode === \"BackCompat\" && n2.childNodes && n2.childNodes[0].type !== NodeType$3.DocumentType) {\n if (n2.childNodes[0].type === NodeType$3.Element && \"xmlns\" in n2.childNodes[0].attributes && n2.childNodes[0].attributes.xmlns === \"http://www.w3.org/1999/xhtml\") {\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\n } else {\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\n }\n }\n node2 = doc;\n }\n mirror2.add(node2, n2);\n if ((n2.type === NodeType$3.Document || n2.type === NodeType$3.Element) && !skipChild) {\n var _loop = function() {\n var childN = _step.value;\n var childNode = buildNodeWithSN(childN, {\n doc: doc,\n mirror: mirror2,\n skipChild: false,\n hackCss: hackCss,\n afterAppend: afterAppend,\n cache: cache\n });\n if (!childNode) {\n console.warn(\"Failed to rebuild\", childN);\n return \"continue\";\n }\n if (childN.isShadow && isElement(node2) && node2.shadowRoot) {\n node2.shadowRoot.appendChild(childNode);\n } else if (n2.type === NodeType$3.Document && childN.type == NodeType$3.Element) {\n var htmlElement = childNode;\n var body = null;\n htmlElement.childNodes.forEach(function(child) {\n if (child.nodeName === \"BODY\") body = child;\n });\n if (body) {\n htmlElement.removeChild(body);\n node2.appendChild(childNode);\n htmlElement.appendChild(body);\n } else {\n node2.appendChild(childNode);\n }\n } else {\n node2.appendChild(childNode);\n }\n if (afterAppend) {\n afterAppend(childNode, childN.id);\n }\n };\n for(var _iterator = _create_for_of_iterator_helper_loose(n2.childNodes), _step; !(_step = _iterator()).done;)_loop();\n }\n return node2;\n}\nfunction visit(mirror2, onVisit) {\n function walk(node2) {\n onVisit(node2);\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(mirror2.getIds()), _step; !(_step = _iterator()).done;){\n var id = _step.value;\n if (mirror2.has(id)) {\n walk(mirror2.getNode(id));\n }\n }\n}\nfunction handleScroll(node2, mirror2) {\n var n2 = mirror2.getMeta(node2);\n if ((n2 == null ? void 0 : n2.type) !== NodeType$3.Element) {\n return;\n }\n var el = node2;\n for(var name in n2.attributes){\n if (!(Object.prototype.hasOwnProperty.call(n2.attributes, name) && name.startsWith(\"rr_\"))) {\n continue;\n }\n var value = n2.attributes[name];\n if (name === \"rr_scrollLeft\") {\n el.scrollLeft = value;\n }\n if (name === \"rr_scrollTop\") {\n el.scrollTop = value;\n }\n }\n}\nfunction rebuild(n2, options) {\n var doc = options.doc, onVisit = options.onVisit, _options_hackCss = options.hackCss, hackCss = _options_hackCss === void 0 ? true : _options_hackCss, afterAppend = options.afterAppend, cache = options.cache, tmp = options.mirror, mirror2 = tmp === void 0 ? new Mirror() : tmp;\n var node2 = buildNodeWithSN(n2, {\n doc: doc,\n mirror: mirror2,\n skipChild: false,\n hackCss: hackCss,\n afterAppend: afterAppend,\n cache: cache\n });\n visit(mirror2, function(visitedNode) {\n if (onVisit) {\n onVisit(visitedNode);\n }\n handleScroll(visitedNode, mirror2);\n });\n return node2;\n}\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = function(obj, key, value) {\n return key in obj ? __defProp2(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField2 = function(obj, key, value) {\n return __defNormalProp2(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nvar __defProp22 = Object.defineProperty;\nvar __defNormalProp22 = function(obj, key, value) {\n return key in obj ? __defProp22(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField22 = function(obj, key, value) {\n return __defNormalProp22(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nvar Mirror$1 = /*#__PURE__*/ function() {\n function Mirror2() {\n __publicField22(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField22(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n var _proto = Mirror2.prototype;\n _proto.getId = function getId(n2) {\n var _a2;\n if (!n2) return -1;\n var id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id != null ? id : -1;\n };\n _proto.getNode = function getNode(id) {\n return this.idNodeMap.get(id) || null;\n };\n _proto.getIds = function getIds() {\n return Array.from(this.idNodeMap.keys());\n };\n _proto.getMeta = function 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 _proto.removeNodeFromMap = function removeNodeFromMap(n2) {\n var _this = this;\n var id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(function(childNode) {\n return _this.removeNodeFromMap(childNode);\n });\n }\n };\n _proto.has = function has(id) {\n return this.idNodeMap.has(id);\n };\n _proto.hasNode = function hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n };\n _proto.add = function add(n2, meta) {\n var id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n };\n _proto.replace = function replace(id, n2) {\n var oldNode = this.getNode(id);\n if (oldNode) {\n var meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n };\n _proto.reset = function reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n };\n return Mirror2;\n}();\nfunction createMirror$1() {\n return new Mirror$1();\n}\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 (_instanceof(this, 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\", {\n value: true\n });\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 get() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = {\n exports: {}\n};\nvar x = String;\nvar create = function create() {\n return {\n isColorSupported: false,\n reset: x,\n bold: x,\n dim: x,\n italic: x,\n underline: x,\n inverse: x,\n hidden: x,\n strikethrough: x,\n black: x,\n red: x,\n green: x,\n yellow: x,\n blue: x,\n magenta: x,\n cyan: x,\n white: x,\n gray: x,\n bgBlack: x,\n bgRed: x,\n bgGreen: x,\n bgYellow: x,\n bgBlue: x,\n bgMagenta: x,\n bgCyan: x,\n bgWhite: x\n };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nvar __viteBrowserExternal = {};\nvar __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, {\n value: \"Module\"\n}));\nvar require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nvar pico = picocolors_browserExports;\nvar terminalHighlight$1 = require$$2;\nvar CssSyntaxError$3 = /*#__PURE__*/ function(Error1) {\n _inherits(CssSyntaxError2, Error1);\n function CssSyntaxError2(message, line, column, source, file, plugin22) {\n var _this;\n _this = Error1.call(this, message) || this;\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 return _this;\n }\n var _proto = CssSyntaxError2.prototype;\n _proto.setMessage = function 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 _proto.showSourceCode = function showSourceCode(color) {\n var _this = this;\n if (!this.source) return \"\";\n var css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n var maxWidth = String(end).length;\n var mark, aside;\n if (color) {\n var _pico_createColors = pico.createColors(true), bold = _pico_createColors.bold, gray = _pico_createColors.gray, red = _pico_createColors.red;\n mark = function(text) {\n return bold(red(text));\n };\n aside = function(text) {\n return gray(text);\n };\n } else {\n mark = aside = function(str) {\n return str;\n };\n }\n return lines.slice(start, end).map(function(line, index2) {\n var number = start + 1 + index2;\n var gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === _this.line) {\n var 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 _proto.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n };\n return CssSyntaxError2;\n}(_wrap_native_super(Error));\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nvar 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}\nvar Stringifier$2 = /*#__PURE__*/ function() {\n function Stringifier2(builder) {\n this.builder = builder;\n }\n var _proto = Stringifier2.prototype;\n _proto.atrule = function atrule(node2, semicolon) {\n var name = \"@\" + node2.name;\n var 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 var end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n };\n _proto.beforeAfter = function beforeAfter(node2, detect) {\n var 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 var buf = node2.parent;\n var depth = 0;\n while(buf && buf.type !== \"root\"){\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n var indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for(var step = 0; step < depth; step++)value += indent;\n }\n }\n return value;\n };\n _proto.block = function block(node2, start) {\n var between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n var 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 _proto.body = function body(node2) {\n var last = node2.nodes.length - 1;\n while(last > 0){\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n var semicolon = this.raw(node2, \"semicolon\");\n for(var i2 = 0; i2 < node2.nodes.length; i2++){\n var child = node2.nodes[i2];\n var before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n };\n _proto.comment = function comment(node2) {\n var left = this.raw(node2, \"left\", \"commentLeft\");\n var right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n };\n _proto.decl = function decl(node2, semicolon) {\n var between = this.raw(node2, \"between\", \"colon\");\n var 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 _proto.document = function document1(node2) {\n this.body(node2);\n };\n _proto.raw = function raw(node2, own, detect) {\n var value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n var 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 var 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 var method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk(function(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 _proto.rawBeforeClose = function rawBeforeClose(root2) {\n var value;\n root2.walk(function(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 _proto.rawBeforeComment = function rawBeforeComment(root2, node2) {\n var value;\n root2.walkComments(function(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 _proto.rawBeforeDecl = function rawBeforeDecl(root2, node2) {\n var value;\n root2.walkDecls(function(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 _proto.rawBeforeOpen = function rawBeforeOpen(root2) {\n var value;\n root2.walk(function(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 _proto.rawBeforeRule = function rawBeforeRule(root2) {\n var value;\n root2.walk(function(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 _proto.rawColon = function rawColon(root2) {\n var value;\n root2.walkDecls(function(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 _proto.rawEmptyBody = function rawEmptyBody(root2) {\n var value;\n root2.walk(function(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 _proto.rawIndent = function rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n var value;\n root2.walk(function(i2) {\n var p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n var 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 _proto.rawSemicolon = function rawSemicolon(root2) {\n var value;\n root2.walk(function(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 _proto.rawValue = function rawValue(node2, prop) {\n var value = node2[prop];\n var raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n };\n _proto.root = function root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n };\n _proto.rule = function 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 _proto.stringify = function stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\");\n }\n this[node2.type](node2, semicolon);\n };\n return Stringifier2;\n}();\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nvar Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n var str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nvar isClean$2 = symbols.isClean, my$2 = symbols.my;\nvar CssSyntaxError$2 = cssSyntaxError;\nvar Stringifier22 = stringifier;\nvar stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n var cloned = new obj.constructor();\n for(var i2 in obj){\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n var value = obj[i2];\n var type = typeof value === \"undefined\" ? \"undefined\" : _type_of(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(function(j) {\n return cloneNode(j, cloned);\n });\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nvar Node$4 = /*#__PURE__*/ function() {\n function Node3(defaults) {\n if (defaults === void 0) defaults = {};\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for(var name in defaults){\n if (name === \"nodes\") {\n this.nodes = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(defaults[name]), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\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 var _proto = Node3.prototype;\n _proto.addToError = function addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n var s2 = this.source;\n error.stack = error.stack.replace(/\\n\\s{4}at /, \"$&\" + s2.input.from + \":\" + s2.start.line + \":\" + s2.start.column + \"$&\");\n }\n return error;\n };\n _proto.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n _proto.assign = function assign(overrides) {\n if (overrides === void 0) overrides = {};\n for(var name in overrides){\n this[name] = overrides[name];\n }\n return this;\n };\n _proto.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = cloneNode(this);\n for(var name in overrides){\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n _proto.cloneAfter = function cloneAfter(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n _proto.cloneBefore = function cloneBefore(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n _proto.error = function error(message, opts) {\n if (opts === void 0) opts = {};\n if (this.source) {\n var _this_rangeBy = this.rangeBy(opts), end = _this_rangeBy.end, start = _this_rangeBy.start;\n return this.source.input.error(message, {\n column: start.column,\n line: start.line\n }, {\n column: end.column,\n line: end.line\n }, opts);\n }\n return new CssSyntaxError$2(message);\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else {\n return node2[prop];\n }\n },\n set: function 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 */ prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.markDirty = function markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n var next = this;\n while(next = next.parent){\n next[isClean$2] = false;\n }\n }\n };\n _proto.next = function next() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n };\n _proto.positionBy = function positionBy(opts, stringRepresentation) {\n var 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 var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n };\n _proto.positionInside = function positionInside(index2, stringRepresentation) {\n var string = stringRepresentation || this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n for(var 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 {\n column: column,\n line: line\n };\n };\n _proto.prev = function prev() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n };\n _proto.rangeBy = function rangeBy(opts) {\n var start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n var 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 var stringRepresentation = this.toString();\n var 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 = {\n column: start.column + 1,\n line: start.line\n };\n }\n return {\n end: end,\n start: start\n };\n };\n _proto.raw = function raw(prop, defaultType) {\n var str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n };\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n };\n _proto.replaceWith = function replaceWith() {\n for(var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++){\n nodes[_key] = arguments[_key];\n }\n if (this.parent) {\n var bookmark = this;\n var foundSelf = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\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 _proto.root = function root() {\n var result2 = this;\n while(result2.parent && result2.parent.type !== \"document\"){\n result2 = result2.parent;\n }\n return result2;\n };\n _proto.toJSON = function toJSON(_, inputs) {\n var fixed = {};\n var emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n var inputsNextIndex = 0;\n for(var name in this){\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n var value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map(function(i2) {\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n var 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: inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [].concat(inputs.keys()).map(function(input2) {\n return input2.toJSON();\n });\n }\n return fixed;\n };\n _proto.toProxy = function toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n };\n _proto.toString = function toString(stringifier2) {\n if (stringifier2 === void 0) stringifier2 = stringify$3;\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n var result2 = \"\";\n stringifier2(this, function(i2) {\n result2 += i2;\n });\n return result2;\n };\n _proto.warn = function warn(result2, text, opts) {\n var data = {\n node: this\n };\n for(var i2 in opts)data[i2] = opts[i2];\n return result2.warn(text, data);\n };\n _create_class(Node3, [\n {\n key: \"proxyOf\",\n get: function get() {\n return this;\n }\n }\n ]);\n return Node3;\n}();\nvar node = Node$4;\nNode$4.default = Node$4;\nvar Node$3 = node;\nvar Declaration$4 = /*#__PURE__*/ function(Node$3) {\n _inherits(Declaration2, Node$3);\n function Declaration2(defaults) {\n var _this;\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = _extends({}, defaults, {\n value: String(defaults.value)\n });\n }\n _this = Node$3.call(this, defaults) || this;\n _this.type = \"decl\";\n return _this;\n }\n _create_class(Declaration2, [\n {\n key: \"variable\",\n get: function get() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n }\n ]);\n return Declaration2;\n}(Node$3);\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nvar urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nvar nanoid$1 = function(size) {\n if (size === void 0) size = 21;\n var id = \"\";\n var i2 = size;\n while(i2--){\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = {\n nanoid: nanoid$1};\nvar SourceMapConsumer$2 = require$$2.SourceMapConsumer, SourceMapGenerator$2 = require$$2.SourceMapGenerator;\nvar existsSync = require$$2.existsSync, readFileSync = require$$2.readFileSync;\nvar dirname$1 = require$$2.dirname, join = require$$2.join;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nvar PreviousMap$2 = /*#__PURE__*/ function() {\n function PreviousMap2(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n var prev = opts.map ? opts.map.prev : void 0;\n var 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 var _proto = PreviousMap2.prototype;\n _proto.consumer = function consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n };\n _proto.decodeInline = function decodeInline(text) {\n var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n var baseUri = /^data:application\\/json;base64,/;\n var charsetUri = /^data:application\\/json;charset=utf-?8,/;\n var 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 var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n };\n _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n };\n _proto.isMap = function isMap(map) {\n if ((typeof map === \"undefined\" ? \"undefined\" : _type_of(map)) !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n };\n _proto.loadAnnotation = function loadAnnotation(css) {\n var comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n var start = css.lastIndexOf(comments.pop());\n var end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n };\n _proto.loadFile = function 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 _proto.loadMap = function 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 var prevPath = prev(file);\n if (prevPath) {\n var map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\"Unable to load previous source map: \" + prevPath.toString());\n }\n return map;\n }\n } else if (_instanceof(prev, SourceMapConsumer$2)) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (_instanceof(prev, SourceMapGenerator$2)) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\"Unsupported previous source map format: \" + prev.toString());\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n var map1 = this.annotation;\n if (file) map1 = join(dirname$1(file), map1);\n return this.loadFile(map1);\n }\n };\n _proto.startWith = function startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n };\n _proto.withContent = function withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n };\n return PreviousMap2;\n}();\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nvar SourceMapConsumer$1 = require$$2.SourceMapConsumer, SourceMapGenerator$1 = require$$2.SourceMapGenerator;\nvar fileURLToPath = require$$2.fileURLToPath, pathToFileURL$1 = require$$2.pathToFileURL;\nvar isAbsolute = require$$2.isAbsolute, resolve$1 = require$$2.resolve;\nvar nanoid = nonSecure.nanoid;\nvar terminalHighlight = require$$2;\nvar CssSyntaxError$1 = cssSyntaxError;\nvar PreviousMap$1 = previousMap;\nvar fromOffsetCache = Symbol(\"fromOffsetCache\");\nvar sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nvar pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nvar Input$4 = /*#__PURE__*/ function() {\n function Input2(css, opts) {\n if (opts === void 0) opts = {};\n if (css === null || typeof css === \"undefined\" || (typeof css === \"undefined\" ? \"undefined\" : _type_of(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 var map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n var 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 var _proto = Input2.prototype;\n _proto.error = function error(message, line, column, opts) {\n if (opts === void 0) opts = {};\n var result2, endLine, endColumn;\n if (line && (typeof line === \"undefined\" ? \"undefined\" : _type_of(line)) === \"object\") {\n var start = line;\n var end = column;\n if (typeof start.offset === \"number\") {\n var 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 var pos1 = this.fromOffset(end.offset);\n endLine = pos1.line;\n endColumn = pos1.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n var pos2 = this.fromOffset(line);\n line = pos2.line;\n column = pos2.col;\n }\n var origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(message, origin.endLine === void 0 ? origin.line : {\n column: origin.column,\n line: origin.line\n }, origin.endLine === void 0 ? origin.column : {\n column: origin.endColumn,\n line: origin.endLine\n }, origin.source, origin.file, opts.plugin);\n } else {\n result2 = new CssSyntaxError$1(message, endLine === void 0 ? line : {\n column: column,\n line: line\n }, endLine === void 0 ? column : {\n column: endColumn,\n line: endLine\n }, this.css, this.file, opts.plugin);\n }\n result2.input = {\n column: column,\n endColumn: endColumn,\n endLine: endLine,\n line: line,\n source: this.css\n };\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 _proto.fromOffset = function fromOffset(offset) {\n var lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n var lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n var prevIndex = 0;\n for(var 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 var min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n var max = lineToIndex.length - 2;\n var 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 _proto.mapResolve = function 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 _proto.origin = function origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n var from = consumer.originalPositionFor({\n column: column,\n line: line\n });\n if (!from.source) return false;\n var to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({\n column: endColumn,\n line: endLine\n });\n }\n var fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile));\n }\n var 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 var source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n };\n _proto.toJSON = function toJSON() {\n var json = {};\n for(var _i = 0, _iter = [\n \"hasBOM\",\n \"css\",\n \"file\",\n \"id\"\n ]; _i < _iter.length; _i++){\n var name = _iter[_i];\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = _extends({}, this.map);\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n };\n _create_class(Input2, [\n {\n key: \"from\",\n get: function get() {\n return this.file || this.id;\n }\n }\n ]);\n return Input2;\n}();\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nvar SourceMapConsumer = require$$2.SourceMapConsumer, SourceMapGenerator = require$$2.SourceMapGenerator;\nvar dirname = require$$2.dirname, relative = require$$2.relative, resolve = require$$2.resolve, sep = require$$2.sep;\nvar pathToFileURL = require$$2.pathToFileURL;\nvar Input$3 = input;\nvar sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nvar pathAvailable = Boolean(dirname && resolve && relative && sep);\nvar MapGenerator$2 = /*#__PURE__*/ function() {\n function MapGenerator2(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 var _proto = MapGenerator2.prototype;\n _proto.addAnnotation = function addAnnotation() {\n var 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 var eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n };\n _proto.applyPrevMaps = function applyPrevMaps() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.previous()), _step; !(_step = _iterator()).done;){\n var prev = _step.value;\n var from = this.toUrl(this.path(prev.file));\n var root2 = prev.root || dirname(prev.file);\n var map = void 0;\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 _proto.clearAnnotation = function clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n var node2;\n for(var 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 _proto.generate = function generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n var result2 = \"\";\n this.stringify(this.root, function(i2) {\n result2 += i2;\n });\n return [\n result2\n ];\n }\n };\n _proto.generateMap = function generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n var 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: {\n column: 0,\n line: 1\n },\n original: {\n column: 0,\n line: 1\n },\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 [\n this.css\n ];\n } else {\n return [\n this.css,\n this.map\n ];\n }\n };\n _proto.generateString = function generateString() {\n var _this = this;\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n var line = 1;\n var column = 1;\n var noSource = \"<no source>\";\n var mapping = {\n generated: {\n column: 0,\n line: 0\n },\n original: {\n column: 0,\n line: 0\n },\n source: \"\"\n };\n var lines, last;\n this.stringify(this.root, function(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 var p = node2.parent || {\n raws: {}\n };\n var 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 _proto.isAnnotation = function 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(function(i2) {\n return i2.annotation;\n });\n }\n return true;\n };\n _proto.isInline = function isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n var 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(function(i2) {\n return i2.inline;\n });\n }\n return true;\n };\n _proto.isMap = function isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n };\n _proto.isSourcesContent = function isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.withContent();\n });\n }\n return true;\n };\n _proto.outputFile = function 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 _proto.path = function 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 var cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n var 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 var path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n };\n _proto.previous = function previous() {\n var _this = this;\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source && node2.source.input.map) {\n var map = node2.source.input.map;\n if (!_this.previousMaps.includes(map)) {\n _this.previousMaps.push(map);\n }\n }\n });\n } else {\n var 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 _proto.setSourcesContent = function setSourcesContent() {\n var _this = this;\n var already = {};\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source) {\n var from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n var 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 var from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n this.map.setSourceContent(from, this.css);\n }\n };\n _proto.sourcePath = function 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 _proto.toBase64 = function toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n };\n _proto.toFileUrl = function toFileUrl(path) {\n var cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n var fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\"`map.absolute` option is not available in this PostCSS build\");\n }\n };\n _proto.toUrl = function toUrl(path) {\n var cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n var url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n };\n return MapGenerator2;\n}();\nvar mapGenerator = MapGenerator$2;\nvar Node$2 = node;\nvar Comment$4 = /*#__PURE__*/ function(Node$2) {\n _inherits(Comment2, Node$2);\n function Comment2(defaults) {\n var _this;\n _this = Node$2.call(this, defaults) || this;\n _this.type = \"comment\";\n return _this;\n }\n return Comment2;\n}(Node$2);\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nvar isClean$1 = symbols.isClean, my$1 = symbols.my;\nvar Declaration$3 = declaration;\nvar Comment$3 = comment;\nvar Node$1 = node;\nvar parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map(function(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(var _iterator = _create_for_of_iterator_helper_loose(node2.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n markDirtyUp(i2);\n }\n }\n}\nvar Container$7 = /*#__PURE__*/ function(Node$1) {\n _inherits(Container2, Node$1);\n function Container2() {\n return Node$1.apply(this, arguments) || this;\n }\n var _proto = Container2.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.last);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.push(node2);\n }\n }\n this.markDirty();\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n Node$1.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.cleanRaws(keepBetween);\n }\n }\n };\n _proto.each = function each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n var iterator = this.getIterator();\n var 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 _proto.every = function every(condition) {\n return this.nodes.every(condition);\n };\n _proto.getIterator = function getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n var iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function 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 function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var _node2;\n return (_node2 = node2)[prop].apply(_node2, [].concat(args.map(function(i2) {\n if (typeof i2 === \"function\") {\n return function(child, index2) {\n return i2(child.toProxy(), index2);\n };\n } else {\n return i2;\n }\n })));\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return function(cb) {\n return node2[prop](function(child) {\n for(var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n other[_key - 1] = arguments[_key];\n }\n return cb.apply(void 0, [].concat([\n child.toProxy()\n ], other));\n });\n };\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else if (prop === \"nodes\") {\n return node2.nodes.map(function(i2) {\n return i2.toProxy();\n });\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set: function 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 _proto.index = function 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 _proto.insertAfter = function insertAfter(exist, add) {\n var existIndex = this.index(exist);\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n }\n var index2;\n for(var 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 _proto.insertBefore = function insertBefore(exist, add) {\n var existIndex = this.index(exist);\n var type = existIndex === 0 ? \"prepend\" : false;\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex, 0, node2);\n }\n var index2;\n for(var 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 _proto.normalize = function normalize(nodes, sample) {\n var _this = this;\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(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\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(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var i21 = _step1.value;\n if (i21.parent) i21.parent.removeChild(i21, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [\n nodes\n ];\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 = [\n new Declaration$3(nodes)\n ];\n } else if (nodes.selector) {\n nodes = [\n new Rule$4(nodes)\n ];\n } else if (nodes.name) {\n nodes = [\n new AtRule$4(nodes)\n ];\n } else if (nodes.text) {\n nodes = [\n new Comment$3(nodes)\n ];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n var processed = nodes.map(function(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 _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n children = children.reverse();\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.unshift(node2);\n }\n for(var id in this.indexes){\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.push = function push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n };\n _proto.removeAll = function removeAll() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.parent = void 0;\n }\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n };\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n var index2;\n for(var 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 _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls(function(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 _proto.some = function some(condition) {\n return this.nodes.some(condition);\n };\n _proto.walk = function walk(callback) {\n return this.each(function(child, i2) {\n var 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 _proto.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(name, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkComments = function walkComments(callback) {\n return this.walk(function(child, i2) {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n };\n _proto.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function(child, i2) {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(prop, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk(function(child, i2) {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(selector, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n };\n _create_class(Container2, [\n {\n key: \"first\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n },\n {\n key: \"last\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n }\n ]);\n return Container2;\n}(Node$1);\nContainer$7.registerParse = function(dependant) {\n parse$4 = dependant;\n};\nContainer$7.registerRule = function(dependant) {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = function(dependant) {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = function(dependant) {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = function(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(function(child) {\n Container$7.rebuild(child);\n });\n }\n};\nvar Container$6 = container;\nvar LazyResult$4, Processor$3;\nvar Document$3 = /*#__PURE__*/ function(Container$6) {\n _inherits(Document23, Container$6);\n function Document23(defaults) {\n var _this;\n _this = Container$6.call(this, _extends({\n type: \"document\"\n }, defaults)) || this;\n if (!_this.nodes) {\n _this.nodes = [];\n }\n return _this;\n }\n var _proto = Document23.prototype;\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n };\n return Document23;\n}(Container$6);\nDocument$3.registerLazyResult = function(dependant) {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = function(dependant) {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nvar 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};\nvar Warning$2 = /*#__PURE__*/ function() {\n function Warning2(text, opts) {\n if (opts === void 0) opts = {};\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n var 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(var opt in opts)this[opt] = opts[opt];\n }\n var _proto = Warning2.prototype;\n _proto.toString = function 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 return Warning2;\n}();\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nvar Warning$1 = warning;\nvar Result$3 = /*#__PURE__*/ function() {\n function Result2(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 var _proto = Result2.prototype;\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.warn = function warn(text, opts) {\n if (opts === void 0) opts = {};\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n var warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n };\n _proto.warnings = function warnings() {\n return this.messages.filter(function(i2) {\n return i2.type === \"warning\";\n });\n };\n _create_class(Result2, [\n {\n key: \"content\",\n get: function get() {\n return this.css;\n }\n }\n ]);\n return Result2;\n}();\nvar result = Result$3;\nResult$3.default = Result$3;\nvar SINGLE_QUOTE = \"'\".charCodeAt(0);\nvar DOUBLE_QUOTE = '\"'.charCodeAt(0);\nvar BACKSLASH = \"\\\\\".charCodeAt(0);\nvar SLASH = \"/\".charCodeAt(0);\nvar NEWLINE = \"\\n\".charCodeAt(0);\nvar SPACE = \" \".charCodeAt(0);\nvar FEED = \"\\f\".charCodeAt(0);\nvar TAB = \"\t\".charCodeAt(0);\nvar CR = \"\\r\".charCodeAt(0);\nvar OPEN_SQUARE = \"[\".charCodeAt(0);\nvar CLOSE_SQUARE = \"]\".charCodeAt(0);\nvar OPEN_PARENTHESES = \"(\".charCodeAt(0);\nvar CLOSE_PARENTHESES = \")\".charCodeAt(0);\nvar OPEN_CURLY = \"{\".charCodeAt(0);\nvar CLOSE_CURLY = \"}\".charCodeAt(0);\nvar SEMICOLON = \";\".charCodeAt(0);\nvar ASTERISK = \"*\".charCodeAt(0);\nvar COLON = \":\".charCodeAt(0);\nvar AT = \"@\".charCodeAt(0);\nvar RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nvar RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nvar RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options) {\n if (options === void 0) options = {};\n var css = input2.css.valueOf();\n var ignore = options.ignoreErrors;\n var code, next, quote, content, escape;\n var escaped, escapePos, prev, n2, currentToken;\n var length = css.length;\n var pos = 0;\n var buffer = [];\n var 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 var 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 {\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 = [\n \"space\",\n css.slice(pos, next)\n ];\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 {\n var controlChar = String.fromCharCode(code);\n currentToken = [\n controlChar,\n controlChar,\n pos\n ];\n break;\n }\n case OPEN_PARENTHESES:\n {\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 = [\n \"brackets\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\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 = [\n \"(\",\n \"(\",\n pos\n ];\n } else {\n currentToken = [\n \"brackets\",\n content,\n pos,\n next\n ];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE:\n {\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 = [\n \"string\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case AT:\n {\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 = [\n \"at-word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case BACKSLASH:\n {\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 = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n default:\n {\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 = [\n \"comment\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\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 = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\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: back,\n endOfFile: endOfFile,\n nextToken: nextToken,\n position: position\n };\n};\nvar Container$5 = container;\nvar AtRule$3 = /*#__PURE__*/ function(Container$5) {\n _inherits(AtRule2, Container$5);\n function AtRule2(defaults) {\n var _this;\n _this = Container$5.call(this, defaults) || this;\n _this.type = \"atrule\";\n return _this;\n }\n var _proto = AtRule2.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5_prototype_append;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5_prototype_append = Container$5.prototype.append).call.apply(_Container$5_prototype_append, [].concat([\n this\n ], children));\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5_prototype_prepend;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5_prototype_prepend = Container$5.prototype.prepend).call.apply(_Container$5_prototype_prepend, [].concat([\n this\n ], children));\n };\n return AtRule2;\n}(Container$5);\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nvar Container$4 = container;\nvar LazyResult$3, Processor$2;\nvar Root$5 = /*#__PURE__*/ function(Container$4) {\n _inherits(Root2, Container$4);\n function Root2(defaults) {\n var _this;\n _this = Container$4.call(this, defaults) || this;\n _this.type = \"root\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n var _proto = Root2.prototype;\n _proto.normalize = function normalize(child, sample, type) {\n var nodes = Container$4.prototype.normalize.call(this, 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(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n };\n _proto.removeChild = function removeChild(child, ignore) {\n var 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 Container$4.prototype.removeChild.call(this, child);\n };\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n };\n return Root2;\n}(Container$4);\nRoot$5.registerLazyResult = function(dependant) {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = function(dependant) {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nvar list$2 = {\n comma: function comma(string) {\n return list$2.split(string, [\n \",\"\n ], true);\n },\n space: function space(string) {\n var spaces = [\n \" \",\n \"\\n\",\n \"\t\"\n ];\n return list$2.split(string, spaces);\n },\n split: function split(string, separators, last) {\n var array = [];\n var current = \"\";\n var split = false;\n var func = 0;\n var inQuote = false;\n var prevQuote = \"\";\n var escape = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(string), _step; !(_step = _iterator()).done;){\n var letter = _step.value;\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;\nvar Container$3 = container;\nvar list$1 = list_1;\nvar Rule$3 = /*#__PURE__*/ function(Container$3) {\n _inherits(Rule2, Container$3);\n function Rule2(defaults) {\n var _this;\n _this = Container$3.call(this, defaults) || this;\n _this.type = \"rule\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n _create_class(Rule2, [\n {\n key: \"selectors\",\n get: function get() {\n return list$1.comma(this.selector);\n },\n set: function set(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n }\n ]);\n return Rule2;\n}(Container$3);\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nvar Declaration$2 = declaration;\nvar tokenizer22 = tokenize;\nvar Comment$2 = comment;\nvar AtRule$2 = atRule;\nvar Root$4 = root;\nvar Rule$2 = rule;\nvar SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n var token = tokens[i2];\n var pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nvar Parser$1 = /*#__PURE__*/ function() {\n function Parser2(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 = {\n input: input2,\n start: {\n column: 1,\n line: 1,\n offset: 0\n }\n };\n }\n var _proto = Parser2.prototype;\n _proto.atrule = function atrule(token) {\n var 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 var type;\n var prev;\n var shift;\n var last = false;\n var open = false;\n var params = [];\n var 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 _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n var founded = 0;\n var token;\n for(var 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(\"Missed semicolon\", token[0] === \"word\" ? token[3] + 1 : token[2]);\n };\n _proto.colon = function colon(tokens) {\n var brackets = 0;\n var token, type, prev;\n for(var _iterator = _create_for_of_iterator_helper_loose(tokens.entries()), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, i2 = _step_value[0], element = _step_value[1];\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 _proto.comment = function comment(token) {\n var 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 var 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 var 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 _proto.createTokenizer = function createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n };\n _proto.decl = function decl(tokens, customProperty) {\n var node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n var last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition(tokens));\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 var 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 var 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([\n token\n ]);\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 var firstSpaces = [];\n var 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(var i2 = tokens.length - 1; i2 >= 0; i2--){\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n var 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 var cache = tokens.slice(0);\n var str = \"\";\n for(var j = i2; j > 0; j--){\n var type1 = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type1 !== \"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 var hasWord = tokens.some(function(i2) {\n return i2[0] !== \"space\" && i2[0] !== \"comment\";\n });\n if (hasWord) {\n node2.raws.between += firstSpaces.map(function(i2) {\n return i2[1];\n }).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 _proto.doubleColon = function doubleColon(token) {\n throw this.input.error(\"Double colon\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n _proto.emptyRule = function emptyRule(token) {\n var node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n };\n _proto.end = function 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 _proto.endFile = function 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 _proto.freeSemicolon = function freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n var 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 _proto.getPosition = function getPosition(offset) {\n var pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset: offset\n };\n };\n _proto.init = function 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 _proto.other = function other(start) {\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n var customProperty = start[1].startsWith(\"--\");\n var tokens = [];\n var 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 _proto.parse = function parse() {\n var 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 _proto.precheckMissedSemicolon = function precheckMissedSemicolon() {};\n _proto.raw = function raw(node2, prop, tokens, customProperty) {\n var token, type;\n var length = tokens.length;\n var value = \"\";\n var clean = true;\n var next, prev;\n for(var 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 var raw = tokens.reduce(function(all, i2) {\n return all + i2[1];\n }, \"\");\n node2.raws[prop] = {\n raw: raw,\n value: value\n };\n }\n node2[prop] = value;\n };\n _proto.rule = function rule(tokens) {\n tokens.pop();\n var 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 _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n var lastTokenType;\n var 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 _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n var next;\n var 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 _proto.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType;\n var 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 _proto.stringFrom = function stringFrom(tokens, from) {\n var result2 = \"\";\n for(var i2 = from; i2 < tokens.length; i2++){\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n };\n _proto.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n };\n _proto.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error(\"Unclosed bracket\", {\n offset: bracket[2]\n }, {\n offset: bracket[2] + 1\n });\n };\n _proto.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error(\"Unexpected }\", {\n offset: token[2]\n }, {\n offset: token[2] + 1\n });\n };\n _proto.unknownWord = function unknownWord(tokens) {\n throw this.input.error(\"Unknown word\", {\n offset: tokens[0][2]\n }, {\n offset: tokens[0][2] + tokens[0][1].length\n });\n };\n _proto.unnamedAtrule = function unnamedAtrule(node2, token) {\n throw this.input.error(\"At-rule without name\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n return Parser2;\n}();\nvar parser = Parser$1;\nvar Container$2 = container;\nvar Parser22 = parser;\nvar Input$2 = input;\nfunction parse$3(css, opts) {\n var input2 = new Input$2(css, opts);\n var 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);\nvar isClean = symbols.isClean, my = symbols.my;\nvar MapGenerator$1 = mapGenerator;\nvar stringify$2 = stringify_1;\nvar Container$1 = container;\nvar Document$2 = document$1;\nvar warnOnce$1 = warnOnce$2;\nvar Result$2 = result;\nvar parse$2 = parse_1;\nvar Root$3 = root;\nvar TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nvar 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};\nvar NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nvar CHILDREN = 0;\nfunction isPromise(obj) {\n return (typeof obj === \"undefined\" ? \"undefined\" : _type_of(obj)) === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n var key = false;\n var 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 [\n type,\n type + \"-\" + key,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (node2.append) {\n return [\n type,\n CHILDREN,\n type + \"Exit\"\n ];\n } else {\n return [\n type,\n type + \"Exit\"\n ];\n }\n}\nfunction toStack(node2) {\n var events;\n if (node2.type === \"document\") {\n events = [\n \"Document\",\n CHILDREN,\n \"DocumentExit\"\n ];\n } else if (node2.type === \"root\") {\n events = [\n \"Root\",\n CHILDREN,\n \"RootExit\"\n ];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events: 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(function(i2) {\n return cleanMarks(i2);\n });\n return node2;\n}\nvar postcss$2 = {};\nvar LazyResult$2 = /*#__PURE__*/ function() {\n function LazyResult2(processor2, css, opts) {\n var _this = this;\n this.stringified = false;\n this.processed = false;\n var root2;\n if ((typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (_instanceof(css, LazyResult2) || _instanceof(css, 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 var 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 = _extends({}, postcss$2, {\n postcss: postcss$2,\n result: this.result\n });\n this.plugins = this.processor.plugins.map(function(plugin22) {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.prepare) {\n return _extends({}, plugin22, plugin22.prepare(_this.result));\n } else {\n return plugin22;\n }\n });\n }\n var _proto = LazyResult2.prototype;\n _proto.async = function 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 _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.getAsyncError = function getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n };\n _proto.handleError = function handleError(error, node2) {\n var 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 var pluginName = plugin22.postcssPlugin;\n var pluginVer = plugin22.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a2 = pluginVer.split(\".\");\n var b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\"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 } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n };\n _proto.prepareVisitors = function prepareVisitors() {\n var _this = this;\n this.listeners = {};\n var add = function(plugin22, type, cb) {\n if (!_this.listeners[type]) _this.listeners[type] = [];\n _this.listeners[type].push([\n plugin22,\n cb\n ]);\n };\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\") {\n for(var event in plugin22){\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\"Unknown event \" + event + \" in \" + plugin22.postcssPlugin + \". Try to update PostCSS (\" + this.processor.version + \" now).\");\n }\n if (!NOT_VISITORS[event]) {\n if (_type_of(plugin22[event]) === \"object\") {\n for(var filter in plugin22[event]){\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(plugin22, event + \"-\" + filter.toLowerCase(), plugin22[event][filter]);\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 _proto.runAsync = function runAsync() {\n var _this = this;\n return _async_to_generator(function() {\n var i2, plugin22, promise, error, root2, stack, promise1, e2, node2, _loop, _iterator, _step;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this.plugin = 0;\n i2 = 0;\n _state.label = 1;\n case 1:\n if (!(i2 < _this.plugins.length)) return [\n 3,\n 6\n ];\n plugin22 = _this.plugins[i2];\n promise = _this.runOnRoot(plugin22);\n if (!isPromise(promise)) return [\n 3,\n 5\n ];\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 4,\n ,\n 5\n ]);\n return [\n 4,\n promise\n ];\n case 3:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 4:\n error = _state.sent();\n throw _this.handleError(error);\n case 5:\n i2++;\n return [\n 3,\n 1\n ];\n case 6:\n _this.prepareVisitors();\n if (!_this.hasListener) return [\n 3,\n 18\n ];\n root2 = _this.result.root;\n _state.label = 7;\n case 7:\n if (!!root2[isClean]) return [\n 3,\n 14\n ];\n root2[isClean] = true;\n stack = [\n toStack(root2)\n ];\n _state.label = 8;\n case 8:\n if (!(stack.length > 0)) return [\n 3,\n 13\n ];\n promise1 = _this.visitTick(stack);\n if (!isPromise(promise1)) return [\n 3,\n 12\n ];\n _state.label = 9;\n case 9:\n _state.trys.push([\n 9,\n 11,\n ,\n 12\n ]);\n return [\n 4,\n promise1\n ];\n case 10:\n _state.sent();\n return [\n 3,\n 12\n ];\n case 11:\n e2 = _state.sent();\n node2 = stack[stack.length - 1].node;\n throw _this.handleError(e2, node2);\n case 12:\n return [\n 3,\n 8\n ];\n case 13:\n return [\n 3,\n 7\n ];\n case 14:\n if (!_this.listeners.OnceExit) return [\n 3,\n 18\n ];\n _loop = function() {\n var _step_value, plugin22, visitor, roots, e2;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n _this.result.lastPlugin = plugin22;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 6,\n ,\n 7\n ]);\n if (!(root2.type === \"document\")) return [\n 3,\n 3\n ];\n roots = root2.nodes.map(function(subRoot) {\n return visitor(subRoot, _this.helpers);\n });\n return [\n 4,\n Promise.all(roots)\n ];\n case 2:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 3:\n return [\n 4,\n visitor(root2, _this.helpers)\n ];\n case 4:\n _state.sent();\n _state.label = 5;\n case 5:\n return [\n 3,\n 7\n ];\n case 6:\n e2 = _state.sent();\n throw _this.handleError(e2);\n case 7:\n return [\n 2\n ];\n }\n });\n };\n _iterator = _create_for_of_iterator_helper_loose(_this.listeners.OnceExit);\n _state.label = 15;\n case 15:\n if (!!(_step = _iterator()).done) return [\n 3,\n 18\n ];\n return [\n 5,\n _ts_values(_loop())\n ];\n case 16:\n _state.sent();\n _state.label = 17;\n case 17:\n return [\n 3,\n 15\n ];\n case 18:\n _this.processed = true;\n return [\n 2,\n _this.stringify()\n ];\n }\n });\n })();\n };\n _proto.runOnRoot = function runOnRoot(plugin22) {\n var _this = this;\n this.result.lastPlugin = plugin22;\n try {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n var roots = this.result.root.nodes.map(function(root2) {\n return 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 _proto.stringify = function stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n var opts = this.result.opts;\n var 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 var map = new MapGenerator$1(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n };\n _proto.sync = function 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(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n var promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n var 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(var _iterator1 = _create_for_of_iterator_helper_loose(root2.nodes), _step1; !(_step1 = _iterator1()).done;){\n var subRoot = _step1.value;\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 _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\"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 return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.visitSync = function visitSync(visitors, node2) {\n for(var _iterator = _create_for_of_iterator_helper_loose(visitors), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n this.result.lastPlugin = plugin22;\n var promise = void 0;\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 _proto.visitTick = function visitTick(stack) {\n var visit2 = stack[stack.length - 1];\n var node2 = visit2.node, visitors = visit2.visitors;\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 var _visitors_visit2_visitorIndex = visitors[visit2.visitorIndex], plugin22 = _visitors_visit2_visitorIndex[0], visitor = _visitors_visit2_visitorIndex[1];\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 var iterator = visit2.iterator;\n var 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 var events = visit2.events;\n while(visit2.eventIndex < events.length){\n var 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 _proto.walkSync = function walkSync(node2) {\n var _this = this;\n node2[isClean] = true;\n var events = getEvents(node2);\n for(var _iterator = _create_for_of_iterator_helper_loose(events), _step; !(_step = _iterator()).done;){\n var event = _step.value;\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each(function(child) {\n if (!child[isClean]) _this.walkSync(child);\n });\n }\n } else {\n var visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n };\n _proto.warnings = function warnings() {\n return this.sync().warnings();\n };\n _create_class(LazyResult2, [\n {\n key: \"content\",\n get: function get() {\n return this.stringify().content;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.stringify().css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.stringify().map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return this.sync().messages;\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n return this.sync().root;\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"LazyResult\";\n }\n }\n ]);\n return LazyResult2;\n}();\nLazyResult$2.registerPostcss = function(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);\nvar MapGenerator22 = mapGenerator;\nvar stringify$1 = stringify_1;\nvar warnOnce22 = warnOnce$2;\nvar parse$1 = parse_1;\nvar Result$1 = result;\nvar NoWorkResult$1 = /*#__PURE__*/ function() {\n function NoWorkResult2(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 var root2;\n var str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n var self = this;\n Object.defineProperty(this.result, \"root\", {\n get: function get() {\n return self.root;\n }\n });\n var map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n var _map_generate = map.generate(), generatedCSS = _map_generate[0], generatedMap = _map_generate[1];\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 var _proto = NoWorkResult2.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\"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 return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this._css;\n };\n _proto.warnings = function warnings() {\n return [];\n };\n _create_class(NoWorkResult2, [\n {\n key: \"content\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.result.map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return [];\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n if (this._root) {\n return this._root;\n }\n var root2;\n var 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 },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"NoWorkResult\";\n }\n }\n ]);\n return NoWorkResult2;\n}();\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nvar NoWorkResult22 = noWorkResult;\nvar LazyResult$1 = lazyResult;\nvar Document$1 = document$1;\nvar Root$2 = root;\nvar Processor$1 = /*#__PURE__*/ function() {\n function Processor2(plugins) {\n if (plugins === void 0) plugins = [];\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n var _proto = Processor2.prototype;\n _proto.normalize = function normalize(plugins) {\n var normalized = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"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 } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n };\n _proto.process = function process1(css, opts) {\n if (opts === void 0) 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 _proto.use = function use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([\n plugin22\n ]));\n return this;\n };\n return Processor2;\n}();\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nvar Declaration$1 = declaration;\nvar PreviousMap22 = previousMap;\nvar Comment$1 = comment;\nvar AtRule$1 = atRule;\nvar Input$1 = input;\nvar Root$1 = root;\nvar Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map(function(n2) {\n return fromJSON$1(n2);\n });\n var ownInputs = json.inputs, defaults = _object_without_properties_loose(json, [\n \"inputs\"\n ]);\n if (ownInputs) {\n inputs = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(ownInputs), _step; !(_step = _iterator()).done;){\n var input2 = _step.value;\n var inputHydrated = _extends({}, input2, {\n __proto__: Input$1.prototype\n });\n if (inputHydrated.map) {\n inputHydrated.map = _extends({}, inputHydrated.map, {\n __proto__: PreviousMap22.prototype\n });\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(function(n2) {\n return fromJSON$1(n2, inputs);\n });\n }\n if (defaults.source) {\n var _defaults_source = defaults.source, inputId = _defaults_source.inputId, source = _object_without_properties_loose(_defaults_source, [\n \"inputId\"\n ]);\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;\nvar CssSyntaxError22 = cssSyntaxError;\nvar Declaration22 = declaration;\nvar LazyResult22 = lazyResult;\nvar Container22 = container;\nvar Processor22 = processor;\nvar stringify = stringify_1;\nvar fromJSON = fromJSON_1;\nvar Document222 = document$1;\nvar Warning22 = warning;\nvar Comment22 = comment;\nvar AtRule22 = atRule;\nvar Result22 = result;\nvar Input22 = input;\nvar parse = parse_1;\nvar list = list_1;\nvar Rule22 = rule;\nvar Root22 = root;\nvar Node22 = node;\nfunction postcss() {\n for(var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++){\n plugins[_key] = arguments[_key];\n }\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 var warningPrinted = false;\n function creator() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\");\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\");\n }\n }\n var transformer = initializer.apply(void 0, [].concat(args));\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n var cache;\n Object.defineProperty(creator, \"postcss\", {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([\n creator(pluginOpts)\n ]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = function(defaults) {\n return new Comment22(defaults);\n};\npostcss.atRule = function(defaults) {\n return new AtRule22(defaults);\n};\npostcss.decl = function(defaults) {\n return new Declaration22(defaults);\n};\npostcss.rule = function(defaults) {\n return new Rule22(defaults);\n};\npostcss.root = function(defaults) {\n return new Root22(defaults);\n};\npostcss.document = function(defaults) {\n return new Document222(defaults);\n};\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;\nvar 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;\nvar NodeType$1 = /* @__PURE__ */ function(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$1 || {});\nfunction parseCSSText(cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n var comment2 = /\\/\\*.*?\\*\\//g;\n cssText.replace(comment2, \"\").split(listDelimiter).forEach(function(item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[camelize(tmp[0].trim())] = tmp[1].trim());\n }\n });\n return res;\n}\nfunction toCSSText(style) {\n var properties = [];\n for(var name in style){\n var value = style[name];\n if (typeof value !== \"string\") continue;\n var normalizedName = hyphenate(name);\n properties.push(normalizedName + \": \" + value + \";\");\n }\n return properties.join(\" \");\n}\nvar camelizeRE = /-([a-z])/g;\nvar CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9-]+$/;\nvar camelize = function(str) {\n if (CUSTOM_PROPERTY_REGEX.test(str)) return str;\n return str.replace(camelizeRE, function(_, c2) {\n return c2 ? c2.toUpperCase() : \"\";\n });\n};\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = function(str) {\n return str.replace(hyphenateRE, \"-$1\").toLowerCase();\n};\nvar BaseRRNode = /*#__PURE__*/ function() {\n function BaseRRNode() {\n for(var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++){\n _args[_key] = arguments[_key];\n }\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 var _proto = BaseRRNode.prototype;\n _proto.contains = function contains(node2) {\n if (!_instanceof(node2, 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 _proto.appendChild = function appendChild(_newChild) {\n throw new Error(\"RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.\");\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.insertBefore = function insertBefore(_newChild, _refChild) {\n throw new Error(\"RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.\");\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.removeChild = function removeChild(_node) {\n throw new Error(\"RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.\");\n };\n _proto.toString = function toString() {\n return \"RRNode\";\n };\n _create_class(BaseRRNode, [\n {\n key: \"childNodes\",\n get: function get() {\n var childNodes2 = [];\n var childIterator = this.firstChild;\n while(childIterator){\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n }\n ]);\n return BaseRRNode;\n}();\nvar BaseRRDocument = /*#__PURE__*/ function(BaseRRNode) {\n _inherits(BaseRRDocument, BaseRRNode);\n function BaseRRDocument() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var _this;\n _this = BaseRRNode.call(this, args) || this;\n __publicField2(_this, \"nodeType\", 9);\n __publicField2(_this, \"nodeName\", \"#document\");\n __publicField2(_this, \"compatMode\", \"CSS1Compat\");\n __publicField2(_this, \"RRNodeType\", NodeType$1.Document);\n __publicField2(_this, \"textContent\", null);\n _this.ownerDocument = _this;\n return _this;\n }\n var _proto = BaseRRDocument.prototype;\n _proto.appendChild = function appendChild1(newChild) {\n var nodeType = newChild.RRNodeType;\n if (nodeType === NodeType$1.Element || nodeType === NodeType$1.DocumentType) {\n if (this.childNodes.some(function(s2) {\n return s2.RRNodeType === nodeType;\n })) {\n throw new Error(\"RRDomException: Failed to execute 'appendChild' on 'RRNode': Only one \" + (nodeType === NodeType$1.Element ? \"RRElement\" : \"RRDoctype\") + \" on RRDocument allowed.\");\n }\n }\n var child = appendChild(this, newChild);\n child.parentElement = null;\n return child;\n };\n _proto.insertBefore = function insertBefore1(newChild, refChild) {\n var nodeType = newChild.RRNodeType;\n if (nodeType === NodeType$1.Element || nodeType === NodeType$1.DocumentType) {\n if (this.childNodes.some(function(s2) {\n return s2.RRNodeType === nodeType;\n })) {\n throw new Error(\"RRDomException: Failed to execute 'insertBefore' on 'RRNode': Only one \" + (nodeType === NodeType$1.Element ? \"RRElement\" : \"RRDoctype\") + \" on RRDocument allowed.\");\n }\n }\n var child = insertBefore(this, newChild, refChild);\n child.parentElement = null;\n return child;\n };\n _proto.removeChild = function removeChild1(node2) {\n return removeChild(this, node2);\n };\n _proto.open = function open() {\n this.firstChild = null;\n this.lastChild = null;\n };\n _proto.close = function close() {};\n /**\n * Adhoc implementation for setting xhtml namespace in rebuilt.ts (rrweb-snapshot).\n * There are two lines used this function:\n * 1. doc.write('\\<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\"\\>')\n * 2. doc.write('\\<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\"\\>')\n */ _proto.write = function write(content) {\n var publicId;\n if (content === '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">') publicId = \"-//W3C//DTD XHTML 1.0 Transitional//EN\";\n else if (content === '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">') publicId = \"-//W3C//DTD HTML 4.0 Transitional//EN\";\n if (publicId) {\n var doctype = this.createDocumentType(\"html\", publicId, \"\");\n this.open();\n this.appendChild(doctype);\n }\n };\n _proto.createDocument = function createDocument(_namespace, _qualifiedName, _doctype) {\n return new BaseRRDocument();\n };\n _proto.createDocumentType = function createDocumentType(qualifiedName, publicId, systemId) {\n var doctype = new BaseRRDocumentType(qualifiedName, publicId, systemId);\n doctype.ownerDocument = this;\n return doctype;\n };\n _proto.createElement = function createElement(tagName) {\n var element = new BaseRRElement(tagName);\n element.ownerDocument = this;\n return element;\n };\n _proto.createElementNS = function createElementNS(_namespaceURI, qualifiedName) {\n return this.createElement(qualifiedName);\n };\n _proto.createTextNode = function createTextNode(data) {\n var text = new BaseRRText(data);\n text.ownerDocument = this;\n return text;\n };\n _proto.createComment = function createComment(data) {\n var comment2 = new BaseRRComment(data);\n comment2.ownerDocument = this;\n return comment2;\n };\n _proto.createCDATASection = function createCDATASection(data) {\n var CDATASection = new BaseRRCDATASection(data);\n CDATASection.ownerDocument = this;\n return CDATASection;\n };\n _proto.toString = function toString() {\n return \"RRDocument\";\n };\n _create_class(BaseRRDocument, [\n {\n key: \"documentElement\",\n get: function get() {\n return this.childNodes.find(function(node2) {\n return node2.RRNodeType === NodeType$1.Element && node2.tagName === \"HTML\";\n }) || null;\n }\n },\n {\n key: \"body\",\n get: function get() {\n var _a2;\n return ((_a2 = this.documentElement) == null ? void 0 : _a2.childNodes.find(function(node2) {\n return node2.RRNodeType === NodeType$1.Element && node2.tagName === \"BODY\";\n })) || null;\n }\n },\n {\n key: \"head\",\n get: function get() {\n var _a2;\n return ((_a2 = this.documentElement) == null ? void 0 : _a2.childNodes.find(function(node2) {\n return node2.RRNodeType === NodeType$1.Element && node2.tagName === \"HEAD\";\n })) || null;\n }\n },\n {\n key: \"implementation\",\n get: function get() {\n return this;\n }\n },\n {\n key: \"firstElementChild\",\n get: function get() {\n return this.documentElement;\n }\n }\n ]);\n return BaseRRDocument;\n}(BaseRRNode);\nvar BaseRRDocumentType = /*#__PURE__*/ function(BaseRRNode) {\n _inherits(BaseRRDocumentType, BaseRRNode);\n function BaseRRDocumentType(qualifiedName, publicId, systemId) {\n var _this;\n _this = BaseRRNode.call(this) || this;\n __publicField2(_this, \"nodeType\", 10);\n __publicField2(_this, \"RRNodeType\", NodeType$1.DocumentType);\n __publicField2(_this, \"name\");\n __publicField2(_this, \"publicId\");\n __publicField2(_this, \"systemId\");\n __publicField2(_this, \"textContent\", null);\n _this.name = qualifiedName;\n _this.publicId = publicId;\n _this.systemId = systemId;\n _this.nodeName = qualifiedName;\n return _this;\n }\n var _proto = BaseRRDocumentType.prototype;\n _proto.toString = function toString() {\n return \"RRDocumentType\";\n };\n return BaseRRDocumentType;\n}(BaseRRNode);\nvar BaseRRElement = /*#__PURE__*/ function(BaseRRNode) {\n _inherits(BaseRRElement, BaseRRNode);\n function BaseRRElement(tagName) {\n var _this;\n _this = BaseRRNode.call(this) || this;\n __publicField2(_this, \"nodeType\", 1);\n __publicField2(_this, \"RRNodeType\", NodeType$1.Element);\n __publicField2(_this, \"tagName\");\n __publicField2(_this, \"attributes\", {});\n __publicField2(_this, \"shadowRoot\", null);\n __publicField2(_this, \"scrollLeft\");\n __publicField2(_this, \"scrollTop\");\n _this.tagName = tagName.toUpperCase();\n _this.nodeName = tagName.toUpperCase();\n return _this;\n }\n var _proto = BaseRRElement.prototype;\n _proto.getAttribute = function getAttribute(name) {\n if (this.attributes[name] === void 0) return null;\n return this.attributes[name];\n };\n _proto.setAttribute = function setAttribute(name, attribute) {\n this.attributes[name] = attribute;\n };\n _proto.setAttributeNS = function setAttributeNS(_namespace, qualifiedName, value) {\n this.setAttribute(qualifiedName, value);\n };\n _proto.removeAttribute = function removeAttribute(name) {\n delete this.attributes[name];\n };\n _proto.appendChild = function appendChild1(newChild) {\n return appendChild(this, newChild);\n };\n _proto.insertBefore = function insertBefore1(newChild, refChild) {\n return insertBefore(this, newChild, refChild);\n };\n _proto.removeChild = function removeChild1(node2) {\n return removeChild(this, node2);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.attachShadow = function attachShadow(_init) {\n var shadowRoot2 = this.ownerDocument.createElement(\"SHADOWROOT\");\n this.shadowRoot = shadowRoot2;\n return shadowRoot2;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.dispatchEvent = function dispatchEvent(_event) {\n return true;\n };\n _proto.toString = function toString() {\n var attributeString = \"\";\n for(var attribute in this.attributes){\n attributeString += attribute + '=\"' + this.attributes[attribute] + '\" ';\n }\n return this.tagName + \" \" + attributeString;\n };\n _create_class(BaseRRElement, [\n {\n key: \"textContent\",\n get: function get() {\n var result2 = \"\";\n this.childNodes.forEach(function(node2) {\n return result2 += node2.textContent;\n });\n return result2;\n },\n set: function set(textContent2) {\n this.firstChild = null;\n this.lastChild = null;\n this.appendChild(this.ownerDocument.createTextNode(textContent2));\n }\n },\n {\n key: \"classList\",\n get: function get() {\n var _this = this;\n return new ClassList(this.attributes.class, function(newClassName) {\n _this.attributes.class = newClassName;\n });\n }\n },\n {\n key: \"id\",\n get: function get() {\n return this.attributes.id || \"\";\n }\n },\n {\n key: \"className\",\n get: function get() {\n return this.attributes.class || \"\";\n }\n },\n {\n key: \"style\",\n get: function get() {\n var _this = this;\n var style = this.attributes.style ? parseCSSText(this.attributes.style) : {};\n var hyphenateRE2 = /\\B([A-Z])/g;\n style.setProperty = function(name, value, priority) {\n if (hyphenateRE2.test(name)) return;\n var normalizedName = camelize(name);\n if (!value) delete style[normalizedName];\n else style[normalizedName] = value;\n if (priority === \"important\") style[normalizedName] += \" !important\";\n _this.attributes.style = toCSSText(style);\n };\n style.removeProperty = function(name) {\n if (hyphenateRE2.test(name)) return \"\";\n var normalizedName = camelize(name);\n var value = style[normalizedName] || \"\";\n delete style[normalizedName];\n _this.attributes.style = toCSSText(style);\n return value;\n };\n return style;\n }\n }\n ]);\n return BaseRRElement;\n}(BaseRRNode);\nvar BaseRRMediaElement = /*#__PURE__*/ function(BaseRRElement) {\n _inherits(BaseRRMediaElement, BaseRRElement);\n function BaseRRMediaElement() {\n var _this;\n _this = BaseRRElement.apply(this, arguments) || this;\n __publicField2(_this, \"currentTime\");\n __publicField2(_this, \"volume\");\n __publicField2(_this, \"paused\");\n __publicField2(_this, \"muted\");\n __publicField2(_this, \"playbackRate\");\n __publicField2(_this, \"loop\");\n return _this;\n }\n var _proto = BaseRRMediaElement.prototype;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.attachShadow = function attachShadow(_init) {\n throw new Error(\"RRDomException: Failed to execute 'attachShadow' on 'RRElement': This RRElement does not support attachShadow\");\n };\n _proto.play = function play() {\n this.paused = false;\n };\n _proto.pause = function pause() {\n this.paused = true;\n };\n return BaseRRMediaElement;\n}(BaseRRElement);\nvar BaseRRDialogElement = /*#__PURE__*/ function(BaseRRElement) {\n _inherits(BaseRRDialogElement, BaseRRElement);\n function BaseRRDialogElement() {\n var _this;\n _this = BaseRRElement.apply(this, arguments) || this;\n __publicField2(_this, \"tagName\", \"DIALOG\");\n __publicField2(_this, \"nodeName\", \"DIALOG\");\n return _this;\n }\n var _proto = BaseRRDialogElement.prototype;\n _proto.close = function close() {\n this.removeAttribute(\"open\");\n this.removeAttribute(\"rr_open_mode\");\n };\n _proto.show = function show() {\n this.setAttribute(\"open\", \"\");\n this.setAttribute(\"rr_open_mode\", \"non-modal\");\n };\n _proto.showModal = function showModal() {\n this.setAttribute(\"open\", \"\");\n this.setAttribute(\"rr_open_mode\", \"modal\");\n };\n _create_class(BaseRRDialogElement, [\n {\n key: \"isModal\",\n get: function get() {\n return this.getAttribute(\"rr_open_mode\") === \"modal\";\n }\n },\n {\n key: \"open\",\n get: function get() {\n return this.getAttribute(\"open\") !== null;\n }\n }\n ]);\n return BaseRRDialogElement;\n}(BaseRRElement);\nvar BaseRRText = /*#__PURE__*/ function(BaseRRNode) {\n _inherits(BaseRRText, BaseRRNode);\n function BaseRRText(data) {\n var _this;\n _this = BaseRRNode.call(this) || this;\n __publicField2(_this, \"nodeType\", 3);\n __publicField2(_this, \"nodeName\", \"#text\");\n __publicField2(_this, \"RRNodeType\", NodeType$1.Text);\n __publicField2(_this, \"data\");\n _this.data = data;\n return _this;\n }\n var _proto = BaseRRText.prototype;\n _proto.toString = function toString() {\n return \"RRText text=\" + JSON.stringify(this.data);\n };\n _create_class(BaseRRText, [\n {\n key: \"textContent\",\n get: function get() {\n return this.data;\n },\n set: function set(textContent2) {\n this.data = textContent2;\n }\n }\n ]);\n return BaseRRText;\n}(BaseRRNode);\nvar BaseRRComment = /*#__PURE__*/ function(BaseRRNode) {\n _inherits(BaseRRComment, BaseRRNode);\n function BaseRRComment(data) {\n var _this;\n _this = BaseRRNode.call(this) || this;\n __publicField2(_this, \"nodeType\", 8);\n __publicField2(_this, \"nodeName\", \"#comment\");\n __publicField2(_this, \"RRNodeType\", NodeType$1.Comment);\n __publicField2(_this, \"data\");\n _this.data = data;\n return _this;\n }\n var _proto = BaseRRComment.prototype;\n _proto.toString = function toString() {\n return \"RRComment text=\" + JSON.stringify(this.data);\n };\n _create_class(BaseRRComment, [\n {\n key: \"textContent\",\n get: function get() {\n return this.data;\n },\n set: function set(textContent2) {\n this.data = textContent2;\n }\n }\n ]);\n return BaseRRComment;\n}(BaseRRNode);\nvar BaseRRCDATASection = /*#__PURE__*/ function(BaseRRNode) {\n _inherits(BaseRRCDATASection, BaseRRNode);\n function BaseRRCDATASection(data) {\n var _this;\n _this = BaseRRNode.call(this) || this;\n __publicField2(_this, \"nodeName\", \"#cdata-section\");\n __publicField2(_this, \"nodeType\", 4);\n __publicField2(_this, \"RRNodeType\", NodeType$1.CDATA);\n __publicField2(_this, \"data\");\n _this.data = data;\n return _this;\n }\n var _proto = BaseRRCDATASection.prototype;\n _proto.toString = function toString() {\n return \"RRCDATASection data=\" + JSON.stringify(this.data);\n };\n _create_class(BaseRRCDATASection, [\n {\n key: \"textContent\",\n get: function get() {\n return this.data;\n },\n set: function set(textContent2) {\n this.data = textContent2;\n }\n }\n ]);\n return BaseRRCDATASection;\n}(BaseRRNode);\nvar ClassList = function ClassList(classText, onChange) {\n var _this = this;\n __publicField2(this, \"onChange\");\n __publicField2(this, \"classes\", []);\n __publicField2(this, \"add\", function() {\n for(var _len = arguments.length, classNames = new Array(_len), _key = 0; _key < _len; _key++){\n classNames[_key] = arguments[_key];\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(classNames), _step; !(_step = _iterator()).done;){\n var item = _step.value;\n var className = String(item);\n if (_this.classes.indexOf(className) >= 0) continue;\n _this.classes.push(className);\n }\n _this.onChange && _this.onChange(_this.classes.join(\" \"));\n });\n __publicField2(this, \"remove\", function() {\n for(var _len = arguments.length, classNames = new Array(_len), _key = 0; _key < _len; _key++){\n classNames[_key] = arguments[_key];\n }\n _this.classes = _this.classes.filter(function(item) {\n return classNames.indexOf(item) === -1;\n });\n _this.onChange && _this.onChange(_this.classes.join(\" \"));\n });\n if (classText) {\n var _this_classes;\n var classes = classText.trim().split(/\\s+/);\n (_this_classes = this.classes).push.apply(_this_classes, [].concat(classes));\n }\n this.onChange = onChange;\n};\nfunction appendChild(parent, newChild) {\n if (newChild.parentNode) newChild.parentNode.removeChild(newChild);\n if (parent.lastChild) {\n parent.lastChild.nextSibling = newChild;\n newChild.previousSibling = parent.lastChild;\n } else {\n parent.firstChild = newChild;\n newChild.previousSibling = null;\n }\n parent.lastChild = newChild;\n newChild.nextSibling = null;\n newChild.parentNode = parent;\n newChild.parentElement = parent;\n newChild.ownerDocument = parent.ownerDocument;\n return newChild;\n}\nfunction insertBefore(parent, newChild, refChild) {\n if (!refChild) return appendChild(parent, newChild);\n if (refChild.parentNode !== parent) throw new Error(\"Failed to execute 'insertBefore' on 'RRNode': The RRNode before which the new node is to be inserted is not a child of this RRNode.\");\n if (newChild === refChild) return newChild;\n if (newChild.parentNode) newChild.parentNode.removeChild(newChild);\n newChild.previousSibling = refChild.previousSibling;\n refChild.previousSibling = newChild;\n newChild.nextSibling = refChild;\n if (newChild.previousSibling) newChild.previousSibling.nextSibling = newChild;\n else parent.firstChild = newChild;\n newChild.parentElement = parent;\n newChild.parentNode = parent;\n newChild.ownerDocument = parent.ownerDocument;\n return newChild;\n}\nfunction removeChild(parent, child) {\n if (child.parentNode !== parent) throw new Error(\"Failed to execute 'removeChild' on 'RRNode': The RRNode to be removed is not a child of this RRNode.\");\n if (child.previousSibling) child.previousSibling.nextSibling = child.nextSibling;\n else parent.firstChild = child.nextSibling;\n if (child.nextSibling) child.nextSibling.previousSibling = child.previousSibling;\n else parent.lastChild = child.previousSibling;\n child.previousSibling = null;\n child.nextSibling = null;\n child.parentElement = null;\n child.parentNode = null;\n return child;\n}\nvar NodeType$2 = /* @__PURE__ */ function(NodeType2) {\n NodeType2[NodeType2[\"PLACEHOLDER\"] = 0] = \"PLACEHOLDER\";\n NodeType2[NodeType2[\"ELEMENT_NODE\"] = 1] = \"ELEMENT_NODE\";\n NodeType2[NodeType2[\"ATTRIBUTE_NODE\"] = 2] = \"ATTRIBUTE_NODE\";\n NodeType2[NodeType2[\"TEXT_NODE\"] = 3] = \"TEXT_NODE\";\n NodeType2[NodeType2[\"CDATA_SECTION_NODE\"] = 4] = \"CDATA_SECTION_NODE\";\n NodeType2[NodeType2[\"ENTITY_REFERENCE_NODE\"] = 5] = \"ENTITY_REFERENCE_NODE\";\n NodeType2[NodeType2[\"ENTITY_NODE\"] = 6] = \"ENTITY_NODE\";\n NodeType2[NodeType2[\"PROCESSING_INSTRUCTION_NODE\"] = 7] = \"PROCESSING_INSTRUCTION_NODE\";\n NodeType2[NodeType2[\"COMMENT_NODE\"] = 8] = \"COMMENT_NODE\";\n NodeType2[NodeType2[\"DOCUMENT_NODE\"] = 9] = \"DOCUMENT_NODE\";\n NodeType2[NodeType2[\"DOCUMENT_TYPE_NODE\"] = 10] = \"DOCUMENT_TYPE_NODE\";\n NodeType2[NodeType2[\"DOCUMENT_FRAGMENT_NODE\"] = 11] = \"DOCUMENT_FRAGMENT_NODE\";\n return NodeType2;\n}(NodeType$2 || {});\nvar NAMESPACES = {\n svg: \"http://www.w3.org/2000/svg\",\n \"xlink:href\": \"http://www.w3.org/1999/xlink\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\nvar SVGTagMap = {\n altglyph: \"altGlyph\",\n altglyphdef: \"altGlyphDef\",\n altglyphitem: \"altGlyphItem\",\n animatecolor: \"animateColor\",\n animatemotion: \"animateMotion\",\n animatetransform: \"animateTransform\",\n clippath: \"clipPath\",\n feblend: \"feBlend\",\n fecolormatrix: \"feColorMatrix\",\n fecomponenttransfer: \"feComponentTransfer\",\n fecomposite: \"feComposite\",\n feconvolvematrix: \"feConvolveMatrix\",\n fediffuselighting: \"feDiffuseLighting\",\n fedisplacementmap: \"feDisplacementMap\",\n fedistantlight: \"feDistantLight\",\n fedropshadow: \"feDropShadow\",\n feflood: \"feFlood\",\n fefunca: \"feFuncA\",\n fefuncb: \"feFuncB\",\n fefuncg: \"feFuncG\",\n fefuncr: \"feFuncR\",\n fegaussianblur: \"feGaussianBlur\",\n feimage: \"feImage\",\n femerge: \"feMerge\",\n femergenode: \"feMergeNode\",\n femorphology: \"feMorphology\",\n feoffset: \"feOffset\",\n fepointlight: \"fePointLight\",\n fespecularlighting: \"feSpecularLighting\",\n fespotlight: \"feSpotLight\",\n fetile: \"feTile\",\n feturbulence: \"feTurbulence\",\n foreignobject: \"foreignObject\",\n glyphref: \"glyphRef\",\n lineargradient: \"linearGradient\",\n radialgradient: \"radialGradient\"\n};\nvar createdNodeSet = null;\nfunction diff(oldTree, newTree, replayer, rrnodeMirror) {\n if (rrnodeMirror === void 0) rrnodeMirror = newTree.mirror || newTree.ownerDocument.mirror;\n oldTree = diffBeforeUpdatingChildren(oldTree, newTree, replayer, rrnodeMirror);\n diffChildren(oldTree, newTree, replayer, rrnodeMirror);\n diffAfterUpdatingChildren(oldTree, newTree, replayer);\n}\nfunction diffBeforeUpdatingChildren(oldTree, newTree, replayer, rrnodeMirror) {\n var _a2;\n if (replayer.afterAppend && !createdNodeSet) {\n createdNodeSet = /* @__PURE__ */ new WeakSet();\n setTimeout(function() {\n createdNodeSet = null;\n }, 0);\n }\n if (!sameNodeType(oldTree, newTree)) {\n var calibratedOldTree = createOrGetNode(newTree, replayer.mirror, rrnodeMirror);\n (_a2 = oldTree.parentNode) == null ? void 0 : _a2.replaceChild(calibratedOldTree, oldTree);\n oldTree = calibratedOldTree;\n }\n switch(newTree.RRNodeType){\n case NodeType$1.Document:\n {\n if (!nodeMatching(oldTree, newTree, replayer.mirror, rrnodeMirror)) {\n var newMeta = rrnodeMirror.getMeta(newTree);\n if (newMeta) {\n replayer.mirror.removeNodeFromMap(oldTree);\n oldTree.close();\n oldTree.open();\n replayer.mirror.add(oldTree, newMeta);\n createdNodeSet == null ? void 0 : createdNodeSet.add(oldTree);\n }\n }\n break;\n }\n case NodeType$1.Element:\n {\n var oldElement = oldTree;\n var newRRElement = newTree;\n switch(newRRElement.tagName){\n case \"IFRAME\":\n {\n var oldContentDocument = oldTree.contentDocument;\n if (!oldContentDocument) break;\n diff(oldContentDocument, newTree.contentDocument, replayer, rrnodeMirror);\n break;\n }\n }\n if (newRRElement.shadowRoot) {\n if (!oldElement.shadowRoot) oldElement.attachShadow({\n mode: \"open\"\n });\n diffChildren(// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n oldElement.shadowRoot, newRRElement.shadowRoot, replayer, rrnodeMirror);\n }\n diffProps(oldElement, newRRElement, rrnodeMirror);\n break;\n }\n }\n return oldTree;\n}\nfunction diffAfterUpdatingChildren(oldTree, newTree, replayer) {\n var _a2;\n switch(newTree.RRNodeType){\n case NodeType$1.Document:\n {\n var scrollData = newTree.scrollData;\n scrollData && replayer.applyScroll(scrollData, true);\n break;\n }\n case NodeType$1.Element:\n {\n var oldElement = oldTree;\n var newRRElement = newTree;\n newRRElement.scrollData && replayer.applyScroll(newRRElement.scrollData, true);\n newRRElement.inputData && replayer.applyInput(newRRElement.inputData);\n switch(newRRElement.tagName){\n case \"AUDIO\":\n case \"VIDEO\":\n {\n var oldMediaElement = oldTree;\n var newMediaRRElement = newRRElement;\n if (newMediaRRElement.paused !== void 0) newMediaRRElement.paused ? void oldMediaElement.pause() : void oldMediaElement.play();\n if (newMediaRRElement.muted !== void 0) oldMediaElement.muted = newMediaRRElement.muted;\n if (newMediaRRElement.volume !== void 0) oldMediaElement.volume = newMediaRRElement.volume;\n if (newMediaRRElement.currentTime !== void 0) oldMediaElement.currentTime = newMediaRRElement.currentTime;\n if (newMediaRRElement.playbackRate !== void 0) oldMediaElement.playbackRate = newMediaRRElement.playbackRate;\n if (newMediaRRElement.loop !== void 0) oldMediaElement.loop = newMediaRRElement.loop;\n break;\n }\n case \"CANVAS\":\n {\n var rrCanvasElement = newTree;\n if (rrCanvasElement.rr_dataURL !== null) {\n var image = document.createElement(\"img\");\n image.onload = function() {\n var ctx = oldElement.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(image, 0, 0, image.width, image.height);\n }\n };\n image.src = rrCanvasElement.rr_dataURL;\n }\n rrCanvasElement.canvasMutations.forEach(function(canvasMutation2) {\n return replayer.applyCanvas(canvasMutation2.event, canvasMutation2.mutation, oldTree);\n });\n break;\n }\n case \"STYLE\":\n {\n var styleSheet = oldElement.sheet;\n styleSheet && newTree.rules.forEach(function(data) {\n return replayer.applyStyleSheetMutation(data, styleSheet);\n });\n break;\n }\n case \"DIALOG\":\n {\n var dialog = oldElement;\n var rrDialog = newRRElement;\n var wasOpen = dialog.open;\n var wasModal = dialog.matches(\"dialog:modal\");\n var shouldBeOpen = rrDialog.open;\n var shouldBeModal = rrDialog.isModal;\n var modalChanged = wasModal !== shouldBeModal;\n var openChanged = wasOpen !== shouldBeOpen;\n if (modalChanged || wasOpen && openChanged) dialog.close();\n if (shouldBeOpen && (openChanged || modalChanged)) {\n try {\n if (shouldBeModal) dialog.showModal();\n else dialog.show();\n } catch (e2) {\n console.warn(e2);\n }\n }\n break;\n }\n }\n break;\n }\n case NodeType$1.Text:\n case NodeType$1.Comment:\n case NodeType$1.CDATA:\n {\n if (oldTree.textContent !== newTree.data) oldTree.textContent = newTree.data;\n break;\n }\n }\n if (createdNodeSet == null ? void 0 : createdNodeSet.has(oldTree)) {\n createdNodeSet.delete(oldTree);\n (_a2 = replayer.afterAppend) == null ? void 0 : _a2.call(replayer, oldTree, replayer.mirror.getId(oldTree));\n }\n}\nfunction diffProps(oldTree, newTree, rrnodeMirror) {\n var _loop = function(name) {\n var newValue = newAttributes[name];\n var sn = rrnodeMirror.getMeta(newTree);\n if ((sn == null ? void 0 : sn.isSVG) && NAMESPACES[name]) oldTree.setAttributeNS(NAMESPACES[name], name, newValue);\n else if (newTree.tagName === \"CANVAS\" && name === \"rr_dataURL\") {\n var image = document.createElement(\"img\");\n image.src = newValue;\n image.onload = function() {\n var ctx = oldTree.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(image, 0, 0, image.width, image.height);\n }\n };\n } else if (newTree.tagName === \"IFRAME\" && name === \"srcdoc\") return \"continue\";\n else {\n try {\n oldTree.setAttribute(name, newValue);\n } catch (err) {\n console.warn(err);\n }\n }\n };\n var oldAttributes = oldTree.attributes;\n var newAttributes = newTree.attributes;\n for(var name in newAttributes)_loop(name);\n for(var _iterator = _create_for_of_iterator_helper_loose(Array.from(oldAttributes)), _step; !(_step = _iterator()).done;){\n var name1 = _step.value.name;\n if (!(name1 in newAttributes)) oldTree.removeAttribute(name1);\n }\n newTree.scrollLeft && (oldTree.scrollLeft = newTree.scrollLeft);\n newTree.scrollTop && (oldTree.scrollTop = newTree.scrollTop);\n}\nfunction diffChildren(oldTree, newTree, replayer, rrnodeMirror) {\n var oldChildren = Array.from(oldTree.childNodes);\n var newChildren = newTree.childNodes;\n if (oldChildren.length === 0 && newChildren.length === 0) return;\n var oldStartIndex = 0, oldEndIndex = oldChildren.length - 1, newStartIndex = 0, newEndIndex = newChildren.length - 1;\n var oldStartNode = oldChildren[oldStartIndex], oldEndNode = oldChildren[oldEndIndex], newStartNode = newChildren[newStartIndex], newEndNode = newChildren[newEndIndex];\n var oldIdToIndex = void 0, indexInOld = void 0;\n while(oldStartIndex <= oldEndIndex && newStartIndex <= newEndIndex){\n if (oldStartNode === void 0) {\n oldStartNode = oldChildren[++oldStartIndex];\n } else if (oldEndNode === void 0) {\n oldEndNode = oldChildren[--oldEndIndex];\n } else if (// same first node?\n nodeMatching(oldStartNode, newStartNode, replayer.mirror, rrnodeMirror)) {\n oldStartNode = oldChildren[++oldStartIndex];\n newStartNode = newChildren[++newStartIndex];\n } else if (// same last node?\n nodeMatching(oldEndNode, newEndNode, replayer.mirror, rrnodeMirror)) {\n oldEndNode = oldChildren[--oldEndIndex];\n newEndNode = newChildren[--newEndIndex];\n } else if (// is the first old node the same as the last new node?\n nodeMatching(oldStartNode, newEndNode, replayer.mirror, rrnodeMirror)) {\n try {\n oldTree.insertBefore(oldStartNode, oldEndNode.nextSibling);\n } catch (e2) {\n console.warn(e2);\n }\n oldStartNode = oldChildren[++oldStartIndex];\n newEndNode = newChildren[--newEndIndex];\n } else if (// is the last old node the same as the first new node?\n nodeMatching(oldEndNode, newStartNode, replayer.mirror, rrnodeMirror)) {\n try {\n oldTree.insertBefore(oldEndNode, oldStartNode);\n } catch (e2) {\n console.warn(e2);\n }\n oldEndNode = oldChildren[--oldEndIndex];\n newStartNode = newChildren[++newStartIndex];\n } else {\n if (!oldIdToIndex) {\n oldIdToIndex = {};\n for(var i2 = oldStartIndex; i2 <= oldEndIndex; i2++){\n var oldChild2 = oldChildren[i2];\n if (oldChild2 && replayer.mirror.hasNode(oldChild2)) oldIdToIndex[replayer.mirror.getId(oldChild2)] = i2;\n }\n }\n indexInOld = oldIdToIndex[rrnodeMirror.getId(newStartNode)];\n var nodeToMove = oldChildren[indexInOld];\n if (indexInOld !== void 0 && nodeToMove && nodeMatching(nodeToMove, newStartNode, replayer.mirror, rrnodeMirror)) {\n try {\n oldTree.insertBefore(nodeToMove, oldStartNode);\n } catch (e2) {\n console.warn(e2);\n }\n oldChildren[indexInOld] = void 0;\n } else {\n var newNode = createOrGetNode(newStartNode, replayer.mirror, rrnodeMirror);\n if (oldTree.nodeName === \"#document\" && oldStartNode && /**\n * Special case 1: one document isn't allowed to have two doctype nodes at the same time, so we need to remove the old one first before inserting the new one.\n * How this case happens: A parent document in the old tree already has a doctype node with an id e.g. #1. A new full snapshot rebuilds the replayer with a new doctype node with another id #2. According to the algorithm, the new doctype node will be inserted before the old one, which is not allowed by the Document standard.\n */ (newNode.nodeType === newNode.DOCUMENT_TYPE_NODE && oldStartNode.nodeType === oldStartNode.DOCUMENT_TYPE_NODE || /**\n * Special case 2: one document isn't allowed to have two HTMLElements at the same time, so we need to remove the old one first before inserting the new one.\n * How this case happens: A mounted iframe element has an automatically created HTML element. We should delete it before inserting a serialized one. Otherwise, an error 'Only one element on document allowed' will be thrown.\n */ newNode.nodeType === newNode.ELEMENT_NODE && oldStartNode.nodeType === oldStartNode.ELEMENT_NODE)) {\n oldTree.removeChild(oldStartNode);\n replayer.mirror.removeNodeFromMap(oldStartNode);\n oldStartNode = oldChildren[++oldStartIndex];\n }\n try {\n oldTree.insertBefore(newNode, oldStartNode || null);\n } catch (e2) {\n console.warn(e2);\n }\n }\n newStartNode = newChildren[++newStartIndex];\n }\n }\n if (oldStartIndex > oldEndIndex) {\n var referenceRRNode = newChildren[newEndIndex + 1];\n var referenceNode = null;\n if (referenceRRNode) referenceNode = replayer.mirror.getNode(rrnodeMirror.getId(referenceRRNode));\n for(; newStartIndex <= newEndIndex; ++newStartIndex){\n var newNode1 = createOrGetNode(newChildren[newStartIndex], replayer.mirror, rrnodeMirror);\n try {\n oldTree.insertBefore(newNode1, referenceNode);\n } catch (e2) {\n console.warn(e2);\n }\n }\n } else if (newStartIndex > newEndIndex) {\n for(; oldStartIndex <= oldEndIndex; oldStartIndex++){\n var node2 = oldChildren[oldStartIndex];\n if (!node2 || node2.parentNode !== oldTree) continue;\n try {\n oldTree.removeChild(node2);\n replayer.mirror.removeNodeFromMap(node2);\n } catch (e2) {\n console.warn(e2);\n }\n }\n }\n var oldChild = oldTree.firstChild;\n var newChild = newTree.firstChild;\n while(oldChild !== null && newChild !== null){\n diff(oldChild, newChild, replayer, rrnodeMirror);\n oldChild = oldChild.nextSibling;\n newChild = newChild.nextSibling;\n }\n}\nfunction createOrGetNode(rrNode, domMirror, rrnodeMirror) {\n var nodeId = rrnodeMirror.getId(rrNode);\n var sn = rrnodeMirror.getMeta(rrNode);\n var node2 = null;\n if (nodeId > -1) node2 = domMirror.getNode(nodeId);\n if (node2 !== null && sameNodeType(node2, rrNode)) return node2;\n switch(rrNode.RRNodeType){\n case NodeType$1.Document:\n node2 = new Document();\n break;\n case NodeType$1.DocumentType:\n node2 = document.implementation.createDocumentType(rrNode.name, rrNode.publicId, rrNode.systemId);\n break;\n case NodeType$1.Element:\n {\n var tagName = rrNode.tagName.toLowerCase();\n tagName = SVGTagMap[tagName] || tagName;\n if (sn && \"isSVG\" in sn && (sn == null ? void 0 : sn.isSVG)) {\n node2 = document.createElementNS(NAMESPACES[\"svg\"], tagName);\n } else node2 = document.createElement(rrNode.tagName);\n break;\n }\n case NodeType$1.Text:\n node2 = document.createTextNode(rrNode.data);\n break;\n case NodeType$1.Comment:\n node2 = document.createComment(rrNode.data);\n break;\n case NodeType$1.CDATA:\n node2 = document.createCDATASection(rrNode.data);\n break;\n }\n if (sn) domMirror.add(node2, _extends({}, sn));\n try {\n createdNodeSet == null ? void 0 : createdNodeSet.add(node2);\n } catch (e2) {}\n return node2;\n}\nfunction sameNodeType(node1, node2) {\n if (node1.nodeType !== node2.nodeType) return false;\n return node1.nodeType !== node1.ELEMENT_NODE || node1.tagName.toUpperCase() === node2.tagName;\n}\nfunction nodeMatching(node1, node2, domMirror, rrdomMirror) {\n var node1Id = domMirror.getId(node1);\n var node2Id = rrdomMirror.getId(node2);\n if (node1Id === -1 || node1Id !== node2Id) return false;\n return sameNodeType(node1, node2);\n}\nvar RRDocument = /*#__PURE__*/ function(BaseRRDocument) {\n _inherits(RRDocument, BaseRRDocument);\n function RRDocument(mirror2) {\n var _this;\n _this = BaseRRDocument.call(this) || this;\n __publicField2(_this, \"UNSERIALIZED_STARTING_ID\", -2);\n __publicField2(_this, \"_unserializedId\", _this.UNSERIALIZED_STARTING_ID);\n __publicField2(_this, \"mirror\", createMirror());\n __publicField2(_this, \"scrollData\", null);\n if (mirror2) {\n _this.mirror = mirror2;\n }\n return _this;\n }\n var _proto = RRDocument.prototype;\n _proto.createDocument = function createDocument(_namespace, _qualifiedName, _doctype) {\n return new RRDocument();\n };\n _proto.createDocumentType = function createDocumentType(qualifiedName, publicId, systemId) {\n var documentTypeNode = new RRDocumentType(qualifiedName, publicId, systemId);\n documentTypeNode.ownerDocument = this;\n return documentTypeNode;\n };\n _proto.createElement = function createElement(tagName) {\n var upperTagName = tagName.toUpperCase();\n var element;\n switch(upperTagName){\n case \"AUDIO\":\n case \"VIDEO\":\n element = new RRMediaElement(upperTagName);\n break;\n case \"IFRAME\":\n element = new RRIFrameElement(upperTagName, this.mirror);\n break;\n case \"CANVAS\":\n element = new RRCanvasElement(upperTagName);\n break;\n case \"STYLE\":\n element = new RRStyleElement(upperTagName);\n break;\n case \"DIALOG\":\n element = new RRDialogElement(upperTagName);\n break;\n default:\n element = new RRElement(upperTagName);\n break;\n }\n element.ownerDocument = this;\n return element;\n };\n _proto.createComment = function createComment(data) {\n var commentNode = new RRComment(data);\n commentNode.ownerDocument = this;\n return commentNode;\n };\n _proto.createCDATASection = function createCDATASection(data) {\n var sectionNode = new RRCDATASection(data);\n sectionNode.ownerDocument = this;\n return sectionNode;\n };\n _proto.createTextNode = function createTextNode(data) {\n var textNode = new RRText(data);\n textNode.ownerDocument = this;\n return textNode;\n };\n _proto.destroyTree = function destroyTree() {\n this.firstChild = null;\n this.lastChild = null;\n this.mirror.reset();\n };\n _proto.open = function open() {\n BaseRRDocument.prototype.open.call(this);\n this._unserializedId = this.UNSERIALIZED_STARTING_ID;\n };\n _create_class(RRDocument, [\n {\n key: \"unserializedId\",\n get: /**\n * Every time the id is used, it will minus 1 automatically to avoid collisions.\n */ function get() {\n return this._unserializedId--;\n }\n }\n ]);\n return RRDocument;\n}(BaseRRDocument);\nvar RRDocumentType = BaseRRDocumentType;\nvar RRElement = /*#__PURE__*/ function(BaseRRElement) {\n _inherits(RRElement, BaseRRElement);\n function RRElement() {\n var _this;\n _this = BaseRRElement.apply(this, arguments) || this;\n __publicField2(_this, \"inputData\", null);\n __publicField2(_this, \"scrollData\", null);\n return _this;\n }\n return RRElement;\n}(BaseRRElement);\nvar RRMediaElement = /*#__PURE__*/ function(BaseRRMediaElement) {\n _inherits(RRMediaElement, BaseRRMediaElement);\n function RRMediaElement() {\n return BaseRRMediaElement.apply(this, arguments) || this;\n }\n return RRMediaElement;\n}(BaseRRMediaElement);\nvar RRDialogElement = /*#__PURE__*/ function(BaseRRDialogElement) {\n _inherits(RRDialogElement, BaseRRDialogElement);\n function RRDialogElement() {\n return BaseRRDialogElement.apply(this, arguments) || this;\n }\n return RRDialogElement;\n}(BaseRRDialogElement);\nvar RRCanvasElement = /*#__PURE__*/ function(RRElement) {\n _inherits(RRCanvasElement, RRElement);\n function RRCanvasElement() {\n var _this;\n _this = RRElement.apply(this, arguments) || this;\n __publicField2(_this, \"rr_dataURL\", null);\n __publicField2(_this, \"canvasMutations\", []);\n return _this;\n }\n var _proto = RRCanvasElement.prototype;\n /**\n * This is a dummy implementation to distinguish RRCanvasElement from real HTMLCanvasElement.\n */ _proto.getContext = function getContext() {\n return null;\n };\n return RRCanvasElement;\n}(RRElement);\nvar RRStyleElement = /*#__PURE__*/ function(RRElement) {\n _inherits(RRStyleElement, RRElement);\n function RRStyleElement() {\n var _this;\n _this = RRElement.apply(this, arguments) || this;\n __publicField2(_this, \"rules\", []);\n return _this;\n }\n return RRStyleElement;\n}(RRElement);\nvar RRIFrameElement = /*#__PURE__*/ function(RRElement) {\n _inherits(RRIFrameElement, RRElement);\n function RRIFrameElement(upperTagName, mirror2) {\n var _this;\n _this = RRElement.call(this, upperTagName) || this;\n __publicField2(_this, \"contentDocument\", new RRDocument());\n _this.contentDocument.mirror = mirror2;\n return _this;\n }\n return RRIFrameElement;\n}(RRElement);\nvar RRText = BaseRRText;\nvar RRComment = BaseRRComment;\nvar RRCDATASection = BaseRRCDATASection;\nfunction getValidTagName(element) {\n if (_instanceof(element, HTMLFormElement)) {\n return \"FORM\";\n }\n return element.tagName.toUpperCase();\n}\nfunction buildFromNode(node2, rrdom, domMirror, parentRRNode) {\n var rrNode;\n switch(node2.nodeType){\n case NodeType$2.DOCUMENT_NODE:\n if (parentRRNode && parentRRNode.nodeName === \"IFRAME\") rrNode = parentRRNode.contentDocument;\n else {\n rrNode = rrdom;\n rrNode.compatMode = node2.compatMode;\n }\n break;\n case NodeType$2.DOCUMENT_TYPE_NODE:\n {\n var documentType = node2;\n rrNode = rrdom.createDocumentType(documentType.name, documentType.publicId, documentType.systemId);\n break;\n }\n case NodeType$2.ELEMENT_NODE:\n {\n var elementNode = node2;\n var tagName = getValidTagName(elementNode);\n rrNode = rrdom.createElement(tagName);\n var rrElement = rrNode;\n for(var _iterator = _create_for_of_iterator_helper_loose(Array.from(elementNode.attributes)), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, name = _step_value.name, value = _step_value.value;\n rrElement.attributes[name] = value;\n }\n elementNode.scrollLeft && (rrElement.scrollLeft = elementNode.scrollLeft);\n elementNode.scrollTop && (rrElement.scrollTop = elementNode.scrollTop);\n break;\n }\n case NodeType$2.TEXT_NODE:\n rrNode = rrdom.createTextNode(node2.textContent || \"\");\n break;\n case NodeType$2.CDATA_SECTION_NODE:\n rrNode = rrdom.createCDATASection(node2.data);\n break;\n case NodeType$2.COMMENT_NODE:\n rrNode = rrdom.createComment(node2.textContent || \"\");\n break;\n case NodeType$2.DOCUMENT_FRAGMENT_NODE:\n rrNode = parentRRNode.attachShadow({\n mode: \"open\"\n });\n break;\n default:\n return null;\n }\n var sn = domMirror.getMeta(node2);\n if (_instanceof(rrdom, RRDocument)) {\n if (!sn) {\n sn = getDefaultSN(rrNode, rrdom.unserializedId);\n domMirror.add(node2, sn);\n }\n rrdom.mirror.add(rrNode, _extends({}, sn));\n }\n return rrNode;\n}\nfunction buildFromDom(dom, domMirror, rrdom) {\n if (domMirror === void 0) domMirror = createMirror$1();\n if (rrdom === void 0) rrdom = new RRDocument();\n function walk2(node2, parentRRNode) {\n var rrNode = buildFromNode(node2, rrdom, domMirror, parentRRNode);\n if (rrNode === null) return;\n if (// if the parentRRNode isn't a RRIFrameElement\n (parentRRNode == null ? void 0 : parentRRNode.nodeName) !== \"IFRAME\" && // if node isn't a shadow root\n node2.nodeType !== NodeType$2.DOCUMENT_FRAGMENT_NODE) {\n parentRRNode == null ? void 0 : parentRRNode.appendChild(rrNode);\n rrNode.parentNode = parentRRNode;\n rrNode.parentElement = parentRRNode;\n }\n if (node2.nodeName === \"IFRAME\") {\n var iframeDoc = node2.contentDocument;\n iframeDoc && walk2(iframeDoc, rrNode);\n } else if (node2.nodeType === NodeType$2.DOCUMENT_NODE || node2.nodeType === NodeType$2.ELEMENT_NODE || node2.nodeType === NodeType$2.DOCUMENT_FRAGMENT_NODE) {\n if (node2.nodeType === NodeType$2.ELEMENT_NODE && node2.shadowRoot) walk2(node2.shadowRoot, rrNode);\n node2.childNodes.forEach(function(childNode) {\n return walk2(childNode, rrNode);\n });\n }\n }\n walk2(dom, null);\n return rrdom;\n}\nfunction createMirror() {\n return new Mirror22();\n}\nvar Mirror22 = /*#__PURE__*/ function() {\n function Mirror22() {\n __publicField2(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField2(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n var _proto = Mirror22.prototype;\n _proto.getId = function getId(n2) {\n var _a2;\n if (!n2) return -1;\n var id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id != null ? id : -1;\n };\n _proto.getNode = function getNode(id) {\n return this.idNodeMap.get(id) || null;\n };\n _proto.getIds = function getIds() {\n return Array.from(this.idNodeMap.keys());\n };\n _proto.getMeta = function 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 _proto.removeNodeFromMap = function removeNodeFromMap(n2) {\n var _this = this;\n var id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(function(childNode) {\n return _this.removeNodeFromMap(childNode);\n });\n }\n };\n _proto.has = function has(id) {\n return this.idNodeMap.has(id);\n };\n _proto.hasNode = function hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n };\n _proto.add = function add(n2, meta) {\n var id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n };\n _proto.replace = function replace(id, n2) {\n var oldNode = this.getNode(id);\n if (oldNode) {\n var meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n };\n _proto.reset = function reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n };\n return Mirror22;\n}();\nfunction getDefaultSN(node2, id) {\n switch(node2.RRNodeType){\n case NodeType$1.Document:\n return {\n id: id,\n type: node2.RRNodeType,\n childNodes: []\n };\n case NodeType$1.DocumentType:\n {\n var doctype = node2;\n return {\n id: id,\n type: node2.RRNodeType,\n name: doctype.name,\n publicId: doctype.publicId,\n systemId: doctype.systemId\n };\n }\n case NodeType$1.Element:\n return {\n id: id,\n type: node2.RRNodeType,\n tagName: node2.tagName.toLowerCase(),\n // In rrweb data, all tagNames are lowercase.\n attributes: {},\n childNodes: []\n };\n case NodeType$1.Text:\n return {\n id: id,\n type: node2.RRNodeType,\n textContent: node2.textContent || \"\"\n };\n case NodeType$1.Comment:\n return {\n id: id,\n type: node2.RRNodeType,\n textContent: node2.textContent || \"\"\n };\n case NodeType$1.CDATA:\n return {\n id: id,\n type: node2.RRNodeType,\n textContent: \"\"\n };\n }\n}\nvar testableAccessors = {\n Node: [\n \"childNodes\",\n \"parentNode\",\n \"parentElement\",\n \"textContent\"\n ],\n ShadowRoot: [\n \"host\",\n \"styleSheets\"\n ],\n Element: [\n \"shadowRoot\",\n \"querySelector\",\n \"querySelectorAll\"\n ],\n MutationObserver: []\n};\nvar testableMethods = {\n Node: [\n \"contains\",\n \"getRootNode\"\n ],\n ShadowRoot: [\n \"getSelection\"\n ],\n Element: [],\n MutationObserver: [\n \"constructor\"\n ]\n};\nvar untaintedBasePrototype = {};\nvar isAngularZonePresent = function() {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key]) return untaintedBasePrototype[key];\n var defaultObj = globalThis[key];\n var defaultPrototype = defaultObj.prototype;\n var accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n var isUntaintedAccessors = Boolean(accessorNames && // @ts-expect-error 2345\n accessorNames.every(function(accessor) {\n var _a2, _b;\n return Boolean((_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\"));\n }));\n var methodNames = key in testableMethods ? testableMethods[key] : void 0;\n var isUntaintedMethods = Boolean(methodNames && methodNames.every(// @ts-expect-error 2345\n function(method) {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }));\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n var iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n var win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n var untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch (e) {\n return defaultPrototype;\n }\n}\nvar untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n var cacheKey = key + \".\" + String(accessor);\n if (untaintedAccessorCache[cacheKey]) return untaintedAccessorCache[cacheKey].call(instance);\n var untaintedPrototype = getUntaintedPrototype(key);\n var untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(untaintedPrototype, accessor)) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nvar untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n var cacheKey = key + \".\" + String(method);\n if (untaintedMethodCache[cacheKey]) return untaintedMethodCache[cacheKey].bind(instance);\n var untaintedPrototype = getUntaintedPrototype(key);\n var untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\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}\nvar index = {\n childNodes: childNodes,\n parentNode: parentNode,\n parentElement: parentElement,\n textContent: textContent,\n contains: contains,\n getRootNode: getRootNode,\n host: host,\n styleSheets: styleSheets,\n shadowRoot: shadowRoot,\n querySelector: querySelector,\n querySelectorAll: querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target) {\n if (target === void 0) target = document;\n var options = {\n capture: true,\n passive: true\n };\n target.addEventListener(type, fn, options);\n return function() {\n return target.removeEventListener(type, fn, options);\n };\n}\nvar 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.\";\nvar _mirror = {\n map: {},\n getId: function getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode: function getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap: function removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has: function has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset: function 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: function 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 if (options === void 0) options = {};\n var timeout = null;\n var previous = 0;\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n var remaining = wait - (now - previous);\n var 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(function() {\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) {\n if (win === void 0) win = window;\n var original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(target, key, isRevoked ? d : {\n set: function set(value) {\n var _this = this;\n setTimeout(function() {\n d.set.call(_this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n });\n return function() {\n return hookSetter(target, key, original || {}, true);\n };\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function() {};\n }\n var original = source[name];\n var 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 function() {\n source[name] = original;\n };\n } catch (e) {\n return function() {};\n }\n}\nvar nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = function() {\n return /* @__PURE__ */ new Date().getTime();\n };\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n var 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 var 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 var 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 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 var id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n var 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) {\n if (win === void 0) 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 queueToResolveTrees(queue) {\n var queueNodeMap = {};\n var putIntoMap = function(m, parent) {\n var nodeInTree = {\n value: m,\n parent: parent,\n children: []\n };\n queueNodeMap[m.node.id] = nodeInTree;\n return nodeInTree;\n };\n var queueNodeTrees = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(queue), _step; !(_step = _iterator()).done;){\n var mutation = _step.value;\n var nextId = mutation.nextId, parentId = mutation.parentId;\n if (nextId && nextId in queueNodeMap) {\n var nextInTree = queueNodeMap[nextId];\n if (nextInTree.parent) {\n var idx = nextInTree.parent.children.indexOf(nextInTree);\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\n } else {\n var idx1 = queueNodeTrees.indexOf(nextInTree);\n queueNodeTrees.splice(idx1, 0, putIntoMap(mutation, null));\n }\n continue;\n }\n if (parentId in queueNodeMap) {\n var parentInTree = queueNodeMap[parentId];\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\n continue;\n }\n queueNodeTrees.push(putIntoMap(mutation, null));\n }\n return queueNodeTrees;\n}\nfunction iterateResolveTree(tree, cb) {\n cb(tree.value);\n for(var i2 = tree.children.length - 1; i2 >= 0; i2--){\n iterateResolveTree(tree.children[i2], cb);\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2));\n}\nfunction getBaseDimension(node2, rootIframe) {\n var _a2, _b;\n var frameElement = (_b = (_a2 = node2.ownerDocument) == null ? void 0 : _a2.defaultView) == null ? void 0 : _b.frameElement;\n if (!frameElement || frameElement === rootIframe) {\n return {\n x: 0,\n y: 0,\n relativeScale: 1,\n absoluteScale: 1\n };\n }\n var frameDimension = frameElement.getBoundingClientRect();\n var frameBaseDimension = getBaseDimension(frameElement, rootIframe);\n var relativeScale = frameDimension.height / frameElement.clientHeight;\n return {\n x: frameDimension.x * frameBaseDimension.relativeScale + frameBaseDimension.x,\n y: frameDimension.y * frameBaseDimension.relativeScale + frameBaseDimension.y,\n relativeScale: relativeScale,\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale\n };\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (_instanceof(n2, BaseRRNode) && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nfunction getNestedRule(rules2, position) {\n var rule2 = rules2[position[0]];\n if (position.length === 1) {\n return rule2;\n } else {\n return getNestedRule(rule2.cssRules[position[1]].cssRules, position.slice(2));\n }\n}\nfunction getPositionsAndIndex(nestedIndex) {\n var positions = [].concat(nestedIndex);\n var index2 = positions.pop();\n return {\n positions: positions,\n index: index2\n };\n}\nfunction uniqueTextMutations(mutations) {\n var idSet = /* @__PURE__ */ new Set();\n var uniqueMutations = [];\n for(var i2 = mutations.length; i2--;){\n var mutation = mutations[i2];\n if (!idSet.has(mutation.id)) {\n uniqueMutations.push(mutation);\n idSet.add(mutation.id);\n }\n }\n return uniqueMutations;\n}\nvar StyleSheetMirror = /*#__PURE__*/ function() {\n function StyleSheetMirror() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n var _proto = StyleSheetMirror.prototype;\n _proto.getId = function getId(stylesheet) {\n var _this_styleIDMap_get;\n return (_this_styleIDMap_get = this.styleIDMap.get(stylesheet)) != null ? _this_styleIDMap_get : -1;\n };\n _proto.has = function 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 */ _proto.add = function add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n var 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 _proto.getStyle = function getStyle(id) {\n return this.idStyleMap.get(id) || null;\n };\n _proto.reset = function reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n };\n _proto.generateId = function generateId() {\n return this.id++;\n };\n return StyleSheetMirror;\n}();\nfunction getShadowHost(n2) {\n var _a2;\n var 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))) shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n var rootShadowHost = n2;\n var shadowHost;\n while(shadowHost = getShadowHost(rootShadowHost))rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n var doc = n2.ownerDocument;\n if (!doc) return false;\n var shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n var doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n StyleSheetMirror: StyleSheetMirror,\n get _mirror () {\n return _mirror;\n },\n closestElementOfNode: closestElementOfNode,\n getBaseDimension: getBaseDimension,\n getNestedRule: getNestedRule,\n getPositionsAndIndex: getPositionsAndIndex,\n getRootShadowHost: getRootShadowHost,\n getShadowHost: getShadowHost,\n getWindowHeight: getWindowHeight,\n getWindowScroll: getWindowScroll,\n getWindowWidth: getWindowWidth,\n hasShadowRoot: hasShadowRoot,\n hookSetter: hookSetter,\n inDom: inDom,\n isAncestorRemoved: isAncestorRemoved,\n isBlocked: isBlocked,\n isIgnored: isIgnored,\n isSerialized: isSerialized,\n isSerializedIframe: isSerializedIframe,\n isSerializedStylesheet: isSerializedStylesheet,\n iterateResolveTree: iterateResolveTree,\n legacy_isTouchEvent: legacy_isTouchEvent,\n get nowTimestamp () {\n return nowTimestamp;\n },\n on: on,\n patch: patch,\n polyfill: polyfill$1,\n queueToResolveTrees: queueToResolveTrees,\n shadowHostInDom: shadowHostInDom,\n throttle: throttle,\n uniqueTextMutations: uniqueTextMutations\n}, Symbol.toStringTag, {\n value: \"Module\"\n}));\nvar EventType = /* @__PURE__ */ function(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__ */ function(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__ */ function(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__ */ function(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__ */ function(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__ */ function(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 ReplayerEvents = /* @__PURE__ */ function(ReplayerEvents2) {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n}(ReplayerEvents || {});\nvar NodeType = /* @__PURE__ */ function(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}\nvar DoubleLinkedList = /*#__PURE__*/ function() {\n function DoubleLinkedList() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n var _proto = DoubleLinkedList.prototype;\n _proto.get = function get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n var current = this.head;\n for(var index2 = 0; index2 < position; index2++){\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n };\n _proto.addNode = function addNode(n2) {\n var node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n var 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 var current1 = n2.nextSibling.__ln.previous;\n node2.previous = current1;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current1) {\n current1.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 _proto.removeNode = function removeNode(n2) {\n var 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 return DoubleLinkedList;\n}();\nvar moveKey = function(id, parentId) {\n return id + \"@\" + parentId;\n};\nvar MutationBuffer = /*#__PURE__*/ function() {\n function MutationBuffer() {\n var _this = this;\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 /**\n * the browser MutationObserver emits multiple mutations after\n * a delay for performance reasons, making tracing added nodes hard\n * in our `processMutations` callback function.\n * For example, if we append an element el_1 into body, and then append\n * another element el_2 into el_1, these two mutations may be passed to the\n * callback function together when the two operations were done.\n * Generally we need to trace child nodes of newly added nodes, but in this\n * case if we count el_2 as el_1's child node in the first mutation record,\n * then we will count el_2 again in the second mutation record which was\n * duplicated.\n * To avoid of duplicate counting added nodes, we use a Set to store\n * added nodes and its child nodes during iterate mutation records. Then\n * collect added nodes from the Set which have no duplicate copy. But\n * this also causes newly added nodes will not be serialized with id ASAP,\n * which means all the id related calculation should be lazy too.\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\", function(mutations) {\n mutations.forEach(_this.processMutation);\n _this.emit();\n });\n __publicField(this, \"emit\", function() {\n if (_this.frozen || _this.locked) {\n return;\n }\n var adds = [];\n var addedIds = /* @__PURE__ */ new Set();\n var addList = new DoubleLinkedList();\n var getNextId = function(n2) {\n var ns = n2;\n var 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 var pushAdd = function(n2) {\n var parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n var cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n var parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && _this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n var parentId = isShadowRoot(parent) ? _this.mirror.getId(getShadowHost(n2)) : _this.mirror.getId(parent);\n var nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n var 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: function(currentN) {\n if (isSerializedIframe(currentN, _this.mirror)) {\n _this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, _this.mirror)) {\n _this.stylesheetManager.trackLinkElement(currentN);\n }\n if (hasShadowRoot(n2)) {\n _this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), _this.doc);\n }\n },\n onIframeLoad: function(iframe, childSn) {\n _this.iframeManager.attachIframe(iframe, childSn);\n _this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: function(link, childSn) {\n _this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured: cssCaptured\n });\n if (sn) {\n adds.push({\n parentId: parentId,\n nextId: 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(var _iterator = _create_for_of_iterator_helper_loose(_this.movedSet), _step; !(_step = _iterator()).done;){\n var n2 = _step.value;\n if (isParentRemoved(_this.removesSubTreeCache, n2, _this.mirror) && !_this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for(var _iterator1 = _create_for_of_iterator_helper_loose(_this.addedSet), _step1; !(_step1 = _iterator1()).done;){\n var n21 = _step1.value;\n if (!isAncestorInSet(_this.droppedSet, n21) && !isParentRemoved(_this.removesSubTreeCache, n21, _this.mirror)) {\n pushAdd(n21);\n } else if (isAncestorInSet(_this.movedSet, n21)) {\n pushAdd(n21);\n } else {\n _this.droppedSet.add(n21);\n }\n }\n var candidate = null;\n while(addList.length){\n var node2 = null;\n if (candidate) {\n var parentId = _this.mirror.getId(index.parentNode(candidate.value));\n var nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n var tailNode = addList.tail;\n while(tailNode){\n var _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n var parentId1 = _this.mirror.getId(index.parentNode(_node.value));\n var nextId1 = getNextId(_node.value);\n if (nextId1 === -1) continue;\n else if (parentId1 !== -1) {\n node2 = _node;\n break;\n } else {\n var unhandledNode = _node.value;\n var parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n var shadowHost = index.host(parent);\n var 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 var payload = {\n texts: _this.texts.map(function(text) {\n var n2 = text.node;\n var 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(function(text) {\n return !addedIds.has(text.id);\n }).filter(function(text) {\n return _this.mirror.has(text.id);\n }),\n attributes: _this.attributes.map(function(attribute) {\n var attributes = attribute.attributes;\n if (typeof attributes.style === \"string\") {\n var diffAsStr = JSON.stringify(attribute.styleDiff);\n var 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: attributes\n };\n }).filter(function(attribute) {\n return !addedIds.has(attribute.id);\n }).filter(function(attribute) {\n return _this.mirror.has(attribute.id);\n }),\n removes: _this.removes,\n adds: 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\", function(textarea) {\n var 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 item.attributes.value = Array.from(index.childNodes(textarea), function(cn) {\n return index.textContent(cn) || \"\";\n }).join(\"\");\n });\n __publicField(this, \"processMutation\", function(m) {\n if (isIgnored(m.target, _this.mirror, _this.slimDOMOptions)) {\n return;\n }\n switch(m.type){\n case \"characterData\":\n {\n var 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(m.target, _this.maskTextClass, _this.maskTextSelector, true) && 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 {\n var target = m.target;\n var attributeName = m.attributeName;\n var value1 = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n var type = getInputType(target);\n value1 = maskInputValue({\n element: target,\n maskInputOptions: _this.maskInputOptions,\n tagName: target.tagName,\n type: type,\n value: value1,\n maskInputFn: _this.maskInputFn\n });\n }\n if (isBlocked(m.target, _this.blockClass, _this.blockSelector, false) || value1 === m.oldValue) {\n return;\n }\n var item = _this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !_this.keepIframeSrcFn(value1)) {\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(_this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value1);\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 var old = _this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(Array.from(target.style)), _step; !(_step = _iterator()).done;){\n var pname = _step.value;\n var newValue = target.style.getPropertyValue(pname);\n var 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] = [\n newValue,\n newPriority\n ];\n }\n } else {\n item._unchangedStyles[pname] = [\n newValue,\n newPriority\n ];\n }\n }\n for(var _iterator1 = _create_for_of_iterator_helper_loose(Array.from(old.style)), _step1; !(_step1 = _iterator1()).done;){\n var pname1 = _step1.value;\n if (target.style.getPropertyValue(pname1) === \"\") {\n item.styleDiff[pname1] = 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 {\n if (isBlocked(m.target, _this.blockClass, _this.blockSelector, true)) return;\n if (m.target.tagName === \"TEXTAREA\") {\n _this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach(function(n2) {\n return _this.genAdds(n2, m.target);\n });\n m.removedNodes.forEach(function(n2) {\n var nodeId = _this.mirror.getId(n2);\n var 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: 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 /**\n * Make sure you check if `n`'s parent is blocked before calling this function\n * */ __publicField(this, \"genAdds\", function(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 var 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(function(childN) {\n return _this.genAdds(childN);\n });\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach(function(childN) {\n _this.processedNodeManager.add(childN, _this);\n _this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n var _proto = MutationBuffer.prototype;\n _proto.init = function init(options) {\n var _this = this;\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(function(key) {\n _this[key] = options[key];\n });\n };\n _proto.freeze = function freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n };\n _proto.unfreeze = function unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n };\n _proto.isFrozen = function isFrozen() {\n return this.frozen;\n };\n _proto.lock = function lock() {\n this.locked = true;\n this.canvasManager.lock();\n };\n _proto.unlock = function unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n };\n _proto.reset = function reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n };\n return MutationBuffer;\n}();\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach(function(childN) {\n return deepDelete(addsSet, childN);\n });\n}\nfunction processRemoves(n2, cache) {\n var queue = [\n n2\n ];\n while(queue.length){\n var next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach(function(n22) {\n return queue.push(n22);\n });\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 var 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 var 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}\nvar errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nvar callbackWrapper = function(cb) {\n if (!errorHandler) {\n return cb;\n }\n var rrwebWrapped = function() {\n for(var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++){\n rest[_key] = arguments[_key];\n }\n try {\n return cb.apply(void 0, [].concat(rest));\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nvar mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n var 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 (e) {}\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n var mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n var observer = new (mutationObserverCtor())(callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)));\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(param) {\n var mousemoveCb = param.mousemoveCb, sampling = param.sampling, doc = param.doc, mirror2 = param.mirror;\n if (sampling.mousemove === false) {\n return function() {};\n }\n var threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n var callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n var positions = [];\n var timeBaseline;\n var wrappedCb = throttle(callbackWrapper(function(source) {\n var totalOffset = Date.now() - timeBaseline;\n mousemoveCb(positions.map(function(p) {\n p.timeOffset -= totalOffset;\n return p;\n }), source);\n positions = [];\n timeBaseline = null;\n }), callbackThreshold);\n var updatePosition = callbackWrapper(throttle(callbackWrapper(function(evt) {\n var target = getEventTarget(evt);\n var _ref = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt, clientX = _ref.clientX, clientY = _ref.clientY;\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(typeof DragEvent !== \"undefined\" && _instanceof(evt, DragEvent) ? IncrementalSource.Drag : _instanceof(evt, MouseEvent) ? IncrementalSource.MouseMove : IncrementalSource.TouchMove);\n }), threshold, {\n trailing: false\n }));\n var handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initMouseInteractionObserver(param) {\n var mouseInteractionCb = param.mouseInteractionCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, sampling = param.sampling;\n if (sampling.mouseInteraction === false) {\n return function() {};\n }\n var disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n var handlers = [];\n var currentPointerType = null;\n var getHandler = function(eventKey) {\n return function(event) {\n var target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n var pointerType = null;\n var 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 var e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n var id = mirror2.getId(target);\n var clientX = e2.clientX, clientY = e2.clientY;\n callbackWrapper(mouseInteractionCb)(_extends({\n type: MouseInteractions[thisEventKey],\n id: id,\n x: clientX,\n y: clientY\n }, pointerType !== null && {\n pointerType: pointerType\n }));\n };\n };\n Object.keys(MouseInteractions).filter(function(key) {\n return Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false;\n }).forEach(function(eventKey) {\n var eventName = toLowerCase(eventKey);\n var handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch(MouseInteractions[eventKey]){\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\"mouse\", \"pointer\");\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(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initScrollObserver(param) {\n var scrollCb = param.scrollCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, sampling = param.sampling;\n var updatePosition = callbackWrapper(throttle(callbackWrapper(function(evt) {\n var target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n var id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n var scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id: id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id: id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }), sampling.scroll || 100));\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver(param, param1) {\n var viewportResizeCb = param.viewportResizeCb;\n var win = param1.win;\n var lastH = -1;\n var lastW = -1;\n var updateDimension = callbackWrapper(throttle(callbackWrapper(function() {\n var height = getWindowHeight();\n var 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 }), 200));\n return on(\"resize\", updateDimension, win);\n}\nvar INPUT_TAGS = [\n \"INPUT\",\n \"TEXTAREA\",\n \"SELECT\"\n];\nvar lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver(param) {\n var inputCb = param.inputCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, ignoreClass = param.ignoreClass, ignoreSelector = param.ignoreSelector, maskInputOptions = param.maskInputOptions, maskInputFn = param.maskInputFn, sampling = param.sampling, userTriggeredOnInput = param.userTriggeredOnInput;\n function eventHandler(event) {\n var target = getEventTarget(event);\n var userTriggered = event.isTrusted;\n var 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 var text = target.value;\n var isChecked = false;\n var 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: maskInputOptions,\n tagName: tagName,\n type: type,\n value: text,\n maskInputFn: maskInputFn\n });\n }\n cbWithDedup(target, userTriggeredOnInput ? {\n text: text,\n isChecked: isChecked,\n userTriggered: userTriggered\n } : {\n text: text,\n isChecked: isChecked\n });\n var name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]').forEach(function(el) {\n if (el !== target) {\n var text2 = el.value;\n cbWithDedup(el, userTriggeredOnInput ? {\n text: text2,\n isChecked: !isChecked,\n userTriggered: false\n } : {\n text: text2,\n isChecked: !isChecked\n });\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n var lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n var id = mirror2.getId(target);\n callbackWrapper(inputCb)(_extends({}, v2, {\n id: id\n }));\n }\n }\n var events = sampling.input === \"last\" ? [\n \"change\"\n ] : [\n \"input\",\n \"change\"\n ];\n var handlers = events.map(function(eventName) {\n return on(eventName, callbackWrapper(eventHandler), doc);\n });\n var currentWindow = doc.defaultView;\n if (!currentWindow) {\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n }\n var propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, \"value\");\n var hookProperties = [\n [\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n ],\n [\n currentWindow.HTMLInputElement.prototype,\n \"checked\"\n ],\n [\n currentWindow.HTMLSelectElement.prototype,\n \"value\"\n ],\n [\n currentWindow.HTMLTextAreaElement.prototype,\n \"value\"\n ],\n // Some UI library use selectedIndex to set select value\n [\n currentWindow.HTMLSelectElement.prototype,\n \"selectedIndex\"\n ],\n [\n currentWindow.HTMLOptionElement.prototype,\n \"selected\"\n ]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n var _handlers;\n (_handlers = handlers).push.apply(_handlers, [].concat(hookProperties.map(function(p) {\n return hookSetter(p[0], p[1], {\n set: function set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n });\n }\n }, false, currentWindow);\n })));\n }\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n var positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && _instanceof(childRule.parentRule, CSSGroupingRule) || hasNestedCSSRule(\"CSSMediaRule\") && _instanceof(childRule.parentRule, CSSMediaRule) || hasNestedCSSRule(\"CSSSupportsRule\") && _instanceof(childRule.parentRule, CSSSupportsRule) || hasNestedCSSRule(\"CSSConditionRule\") && _instanceof(childRule.parentRule, CSSConditionRule)) {\n var rules2 = Array.from(childRule.parentRule.cssRules);\n var index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n var rules21 = Array.from(childRule.parentStyleSheet.cssRules);\n var index21 = rules21.indexOf(childRule);\n pos.unshift(index21);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n var 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: styleId,\n id: id\n };\n}\nfunction initStyleSheetObserver(param, param1) {\n var styleSheetRuleCb = param.styleSheetRuleCb, mirror2 = param.mirror, stylesheetManager = param.stylesheetManager;\n var win = param1.win;\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return function() {};\n }\n var insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var rule2 = argumentsList[0], index2 = argumentsList[1];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n adds: [\n {\n rule: rule2,\n index: index2\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2) {\n if (index2 === void 0) index2 = this.cssRules.length;\n var rule2 = selector + \" { \" + styleBlock + \" }\";\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [\n rule2,\n index2\n ]);\n };\n var deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var index2 = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n removes: [\n {\n index: index2\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [\n index2\n ]);\n };\n var replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var text = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n }\n var replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var text = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n }\n var 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 var unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(function(param) {\n var typeKey = param[0], type = param[1];\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(unmodifiedFunctions[typeKey].insertRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var rule2 = argumentsList[0], index2 = argumentsList[1];\n var _getIdAndStyleId = getIdAndStyleId(thisArg.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n adds: [\n {\n rule: rule2,\n index: [].concat(getNestedCSSRulePositions(thisArg), [\n index2 || 0\n ])\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var index2 = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n removes: [\n {\n index: [].concat(getNestedCSSRulePositions(thisArg), [\n index2\n ])\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n });\n return callbackWrapper(function() {\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(function(param) {\n var typeKey = param[0], type = param[1];\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver(param, host2) {\n var mirror2 = param.mirror, stylesheetManager = param.stylesheetManager;\n var _a2, _b, _c;\n var hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n var 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 var originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(patchTarget == null ? void 0 : patchTarget.prototype, \"adoptedStyleSheets\") : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor) return function() {};\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get: function get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set: function set(sheets) {\n var _a3;\n var 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 return result2;\n }\n });\n return callbackWrapper(function() {\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(param, param1) {\n var styleDeclarationCb = param.styleDeclarationCb, mirror2 = param.mirror, ignoreCSSAttributes = param.ignoreCSSAttributes, stylesheetManager = param.stylesheetManager;\n var win = param1.win;\n var setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var _a2;\n var property = argumentsList[0], value = argumentsList[1], priority = argumentsList[2];\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [\n property,\n value,\n priority\n ]);\n }\n var _getIdAndStyleId = getIdAndStyleId((_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id: id,\n styleId: styleId,\n set: {\n property: property,\n value: value,\n priority: 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 var removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var _a2;\n var property = argumentsList[0];\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [\n property\n ]);\n }\n var _getIdAndStyleId = getIdAndStyleId((_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id: id,\n styleId: styleId,\n remove: {\n property: 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 return callbackWrapper(function() {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver(param) {\n var mediaInteractionCb = param.mediaInteractionCb, blockClass = param.blockClass, blockSelector = param.blockSelector, mirror2 = param.mirror, sampling = param.sampling, doc = param.doc;\n var handler = callbackWrapper(function(type) {\n return throttle(callbackWrapper(function(event) {\n var target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n var currentTime = target.currentTime, volume = target.volume, muted = target.muted, playbackRate = target.playbackRate, loop = target.loop;\n mediaInteractionCb({\n type: type,\n id: mirror2.getId(target),\n currentTime: currentTime,\n volume: volume,\n muted: muted,\n playbackRate: playbackRate,\n loop: loop\n });\n }), sampling.media || 500);\n });\n var 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(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initFontObserver(param) {\n var fontCb = param.fontCb, doc = param.doc;\n var win = doc.defaultView;\n if (!win) {\n return function() {};\n }\n var handlers = [];\n var fontMap = /* @__PURE__ */ new WeakMap();\n var originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n var fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family: family,\n buffer: typeof source !== \"string\",\n descriptors: descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n var restoreHandler = patch(doc.fonts, \"add\", function(original) {\n return function(fontFace) {\n setTimeout(callbackWrapper(function() {\n var p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }), 0);\n return original.apply(this, [\n fontFace\n ]);\n };\n });\n handlers.push(function() {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initSelectionObserver(param) {\n var doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, selectionCb = param.selectionCb;\n var collapsed = true;\n var updateSelection = callbackWrapper(function() {\n var selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n var ranges = [];\n var count = selection.rangeCount || 0;\n for(var i2 = 0; i2 < count; i2++){\n var range = selection.getRangeAt(i2);\n var startContainer = range.startContainer, startOffset = range.startOffset, endContainer = range.endContainer, endOffset = range.endOffset;\n var 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: startOffset,\n end: mirror2.getId(endContainer),\n endOffset: endOffset\n });\n }\n selectionCb({\n ranges: ranges\n });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver(param) {\n var doc = param.doc, customElementCb = param.customElementCb;\n var win = doc.defaultView;\n if (!win || !win.customElements) return function() {};\n var restoreHandler = patch(win.customElements, \"define\", function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name: name\n }\n });\n } catch (e2) {\n console.warn(\"Custom element callback failed for \" + name);\n }\n return original.apply(this, [\n name,\n constructor,\n options\n ]);\n };\n });\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n var mutationCb = o2.mutationCb, mousemoveCb = o2.mousemoveCb, mouseInteractionCb = o2.mouseInteractionCb, scrollCb = o2.scrollCb, viewportResizeCb = o2.viewportResizeCb, inputCb = o2.inputCb, mediaInteractionCb = o2.mediaInteractionCb, styleSheetRuleCb = o2.styleSheetRuleCb, styleDeclarationCb = o2.styleDeclarationCb, canvasMutationCb = o2.canvasMutationCb, fontCb = o2.fontCb, selectionCb = o2.selectionCb, customElementCb = o2.customElementCb;\n o2.mutationCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mutation) {\n var _hooks;\n (_hooks = hooks).mutation.apply(_hooks, [].concat(p));\n }\n mutationCb.apply(void 0, [].concat(p));\n };\n o2.mousemoveCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mousemove) {\n var _hooks;\n (_hooks = hooks).mousemove.apply(_hooks, [].concat(p));\n }\n mousemoveCb.apply(void 0, [].concat(p));\n };\n o2.mouseInteractionCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mouseInteraction) {\n var _hooks;\n (_hooks = hooks).mouseInteraction.apply(_hooks, [].concat(p));\n }\n mouseInteractionCb.apply(void 0, [].concat(p));\n };\n o2.scrollCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.scroll) {\n var _hooks;\n (_hooks = hooks).scroll.apply(_hooks, [].concat(p));\n }\n scrollCb.apply(void 0, [].concat(p));\n };\n o2.viewportResizeCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.viewportResize) {\n var _hooks;\n (_hooks = hooks).viewportResize.apply(_hooks, [].concat(p));\n }\n viewportResizeCb.apply(void 0, [].concat(p));\n };\n o2.inputCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.input) {\n var _hooks;\n (_hooks = hooks).input.apply(_hooks, [].concat(p));\n }\n inputCb.apply(void 0, [].concat(p));\n };\n o2.mediaInteractionCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mediaInteaction) {\n var _hooks;\n (_hooks = hooks).mediaInteaction.apply(_hooks, [].concat(p));\n }\n mediaInteractionCb.apply(void 0, [].concat(p));\n };\n o2.styleSheetRuleCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.styleSheetRule) {\n var _hooks;\n (_hooks = hooks).styleSheetRule.apply(_hooks, [].concat(p));\n }\n styleSheetRuleCb.apply(void 0, [].concat(p));\n };\n o2.styleDeclarationCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.styleDeclaration) {\n var _hooks;\n (_hooks = hooks).styleDeclaration.apply(_hooks, [].concat(p));\n }\n styleDeclarationCb.apply(void 0, [].concat(p));\n };\n o2.canvasMutationCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.canvasMutation) {\n var _hooks;\n (_hooks = hooks).canvasMutation.apply(_hooks, [].concat(p));\n }\n canvasMutationCb.apply(void 0, [].concat(p));\n };\n o2.fontCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.font) {\n var _hooks;\n (_hooks = hooks).font.apply(_hooks, [].concat(p));\n }\n fontCb.apply(void 0, [].concat(p));\n };\n o2.selectionCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.selection) {\n var _hooks;\n (_hooks = hooks).selection.apply(_hooks, [].concat(p));\n }\n selectionCb.apply(void 0, [].concat(p));\n };\n o2.customElementCb = function() {\n for(var _len = arguments.length, c2 = new Array(_len), _key = 0; _key < _len; _key++){\n c2[_key] = arguments[_key];\n }\n if (hooks.customElement) {\n var _hooks;\n (_hooks = hooks).customElement.apply(_hooks, [].concat(c2));\n }\n customElementCb.apply(void 0, [].concat(c2));\n };\n}\nfunction initObservers(o2, hooks) {\n if (hooks === void 0) hooks = {};\n var currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return function() {};\n }\n mergeHooks(o2, hooks);\n var mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n var mousemoveHandler = initMoveObserver(o2);\n var mouseInteractionHandler = initMouseInteractionObserver(o2);\n var scrollHandler = initScrollObserver(o2);\n var viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n var inputHandler = initInputObserver(o2);\n var mediaInteractionHandler = initMediaInteractionObserver(o2);\n var styleSheetObserver = function() {};\n var adoptedStyleSheetObserver = function() {};\n var styleDeclarationObserver = function() {};\n var fontObserver = function() {};\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, {\n win: currentWindow\n });\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 var selectionObserver = initSelectionObserver(o2);\n var customElementObserver = initCustomElementObserver(o2);\n var pluginHandlers = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(o2.plugins), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n pluginHandlers.push(plugin3.observer(plugin3.callback, currentWindow, plugin3.options));\n }\n return callbackWrapper(function() {\n mutationBuffers.forEach(function(b) {\n return b.reset();\n });\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(function(h) {\n return h();\n });\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(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}\nvar CrossOriginIframeMirror = /*#__PURE__*/ function() {\n function CrossOriginIframeMirror(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n var _proto = CrossOriginIframeMirror.prototype;\n _proto.getId = function getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n var idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n var remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n var 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 _proto.getIds = function getIds(iframe, remoteId) {\n var _this = this;\n var idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(function(id) {\n return _this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap);\n });\n };\n _proto.getRemoteId = function getRemoteId(iframe, id, map) {\n var remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n var remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n };\n _proto.getRemoteIds = function getRemoteIds(iframe, ids) {\n var _this = this;\n var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map(function(id) {\n return _this.getRemoteId(iframe, id, remoteIdToIdMap);\n });\n };\n _proto.reset = function 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 _proto.getIdToRemoteIdMap = function getIdToRemoteIdMap(iframe) {\n var 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 _proto.getRemoteIdToIdMap = function getRemoteIdToIdMap(iframe) {\n var 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 return CrossOriginIframeMirror;\n}();\nvar IframeManager = /*#__PURE__*/ function() {\n function IframeManager(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(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n var _proto = IframeManager.prototype;\n _proto.addIframe = function addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow) this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n };\n _proto.addLoadListener = function addLoadListener(cb) {\n this.loadListener = cb;\n };\n _proto.attachIframe = function 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) (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\"message\", this.handleMessage.bind(this));\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0) this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\n };\n _proto.handleMessage = function handleMessage(message) {\n var 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) return;\n var iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n var iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n var transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\n if (transformedEvent) this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\n };\n _proto.transformCrossOriginEvent = function transformCrossOriginEvent(iframeEl, e2) {\n var _this = this;\n var _a2;\n switch(e2.type){\n case EventType.FullSnapshot:\n {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n var 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 {\n return false;\n }\n case EventType.Plugin:\n {\n return e2;\n }\n case EventType.Custom:\n {\n this.replaceIds(e2.data.payload, iframeEl, [\n \"id\",\n \"parentId\",\n \"previousId\",\n \"nextId\"\n ]);\n return e2;\n }\n case EventType.IncrementalSnapshot:\n {\n switch(e2.data.source){\n case IncrementalSource.Mutation:\n {\n e2.data.adds.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n _this.replaceIdOnNode(n2.node, iframeEl);\n var rootId = _this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && _this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"id\"\n ]);\n });\n e2.data.attributes.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"id\"\n ]);\n });\n e2.data.texts.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"id\"\n ]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove:\n {\n e2.data.positions.forEach(function(p) {\n _this.replaceIds(p, iframeEl, [\n \"id\"\n ]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize:\n {\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 {\n this.replaceIds(e2.data, iframeEl, [\n \"id\"\n ]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration:\n {\n this.replaceIds(e2.data, iframeEl, [\n \"id\"\n ]);\n this.replaceStyleIds(e2.data, iframeEl, [\n \"styleId\"\n ]);\n return e2;\n }\n case IncrementalSource.Font:\n {\n return e2;\n }\n case IncrementalSource.Selection:\n {\n e2.data.ranges.forEach(function(range) {\n _this.replaceIds(range, iframeEl, [\n \"start\",\n \"end\"\n ]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet:\n {\n this.replaceIds(e2.data, iframeEl, [\n \"id\"\n ]);\n this.replaceStyleIds(e2.data, iframeEl, [\n \"styleIds\"\n ]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach(function(style) {\n _this.replaceStyleIds(style, iframeEl, [\n \"styleId\"\n ]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n };\n _proto.replace = function replace(iframeMirror, obj, iframeEl, keys) {\n for(var _iterator = _create_for_of_iterator_helper_loose(keys), _step; !(_step = _iterator()).done;){\n var key = _step.value;\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n };\n _proto.replaceIds = function replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n };\n _proto.replaceStyleIds = function replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n };\n _proto.replaceIdOnNode = function replaceIdOnNode(node2, iframeEl) {\n var _this = this;\n this.replaceIds(node2, iframeEl, [\n \"id\",\n \"rootId\"\n ]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach(function(child) {\n _this.replaceIdOnNode(child, iframeEl);\n });\n }\n };\n _proto.patchRootIdOnNode = function patchRootIdOnNode(node2, rootId) {\n var _this = this;\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach(function(child) {\n _this.patchRootIdOnNode(child, rootId);\n });\n }\n };\n return IframeManager;\n}();\nvar ShadowDomManager = /*#__PURE__*/ function() {\n function ShadowDomManager(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 var _proto = ShadowDomManager.prototype;\n _proto.init = function init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n };\n _proto.addShadowRoot = function addShadowRoot(shadowRoot2, doc) {\n var _this = this;\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n var observer = initMutationObserver(_extends({}, this.bypassOptions, {\n doc: doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n }), shadowRoot2);\n this.restoreHandlers.push(function() {\n return observer.disconnect();\n });\n this.restoreHandlers.push(initScrollObserver(_extends({}, 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 setTimeout(function() {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0) _this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot2.adoptedStyleSheets, _this.mirror.getId(index.host(shadowRoot2)));\n _this.restoreHandlers.push(initAdoptedStyleSheetObserver({\n mirror: _this.mirror,\n stylesheetManager: _this.bypassOptions.stylesheetManager\n }, shadowRoot2));\n }, 0);\n };\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */ _proto.observeAttachShadow = function observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\n };\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */ _proto.patchAttachShadow = function patchAttachShadow(element, doc) {\n var manager = this;\n this.restoreHandlers.push(patch(element.prototype, \"attachShadow\", function(original) {\n return function(option) {\n var sRoot = original.call(this, option);\n var shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this)) manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }));\n };\n _proto.reset = function reset() {\n this.restoreHandlers.forEach(function(handler) {\n try {\n handler();\n } catch (e2) {}\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n };\n return ShadowDomManager;\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 encode(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};\nvar decode = function decode(base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i2, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for(i2 = 0; i2 < len; i2 += 4){\n encoded1 = lookup[base64.charCodeAt(i2)];\n encoded2 = lookup[base64.charCodeAt(i2 + 1)];\n encoded3 = lookup[base64.charCodeAt(i2 + 2)];\n encoded4 = lookup[base64.charCodeAt(i2 + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return arraybuffer;\n};\nvar canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n var 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}\nvar saveWebGLVar = function(value, win, ctx) {\n if (!value || !(isInstanceOfWebGLObject(value, win) || (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\")) return;\n var name = value.constructor.name;\n var list2 = variableListFor$1(ctx, name);\n var 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 (_instanceof(value, Array)) {\n return value.map(function(arg) {\n return serializeArg(arg, win, ctx);\n });\n } else if (value === null) {\n return value;\n } else if (_instanceof(value, Float32Array) || _instanceof(value, Float64Array) || _instanceof(value, Int32Array) || _instanceof(value, Uint32Array) || _instanceof(value, Uint8Array) || _instanceof(value, Uint16Array) || _instanceof(value, Int16Array) || _instanceof(value, Int8Array) || _instanceof(value, Uint8ClampedArray)) {\n var name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n Object.values(value)\n ]\n };\n } else if (// 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 _instanceof(value, ArrayBuffer)) {\n var name1 = value.constructor.name;\n var base64 = encode(value);\n return {\n rr_type: name1,\n base64: base64\n };\n } else if (_instanceof(value, DataView)) {\n var name2 = value.constructor.name;\n return {\n rr_type: name2,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (_instanceof(value, HTMLImageElement)) {\n var name3 = value.constructor.name;\n var src = value.src;\n return {\n rr_type: name3,\n src: src\n };\n } else if (_instanceof(value, HTMLCanvasElement)) {\n var name4 = \"HTMLImageElement\";\n var src1 = value.toDataURL();\n return {\n rr_type: name4,\n src: src1\n };\n } else if (_instanceof(value, ImageData)) {\n var name5 = value.constructor.name;\n return {\n rr_type: name5,\n args: [\n serializeArg(value.data, win, ctx),\n value.width,\n value.height\n ]\n };\n } else if (isInstanceOfWebGLObject(value, win) || (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\") {\n var name6 = value.constructor.name;\n var index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name6,\n index: index2\n };\n }\n return value;\n}\nvar serializeArgs = function(args, win, ctx) {\n return args.map(function(arg) {\n return serializeArg(arg, win, ctx);\n });\n};\nvar isInstanceOfWebGLObject = function(value, win) {\n var 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 var supportedWebGLConstructorNames = webGLConstructorNames.filter(function(name) {\n return typeof win[name] === \"function\";\n });\n return Boolean(supportedWebGLConstructorNames.find(function(name) {\n return _instanceof(value, win[name]);\n }));\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n var _loop = function() {\n var prop = _step.value;\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n return \"continue\";\n }\n var restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function(original) {\n return function() {\n var _this = this;\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(function() {\n var 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 handlers.push(restoreHandler);\n } catch (e) {\n var hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n set: function set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [\n v2\n ],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n };\n var handlers = [];\n var props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n for(var _iterator = _create_for_of_iterator_helper_loose(props2D), _step; !(_step = _iterator()).done;)_loop();\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n var handlers = [];\n try {\n var restoreHandler = patch(win.HTMLCanvasElement.prototype, \"getContext\", function(original) {\n return function(contextType) {\n for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n args[_key - 1] = arguments[_key];\n }\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n var ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\n \"webgl\",\n \"webgl2\"\n ].includes(ctxName)) {\n if (args[0] && _type_of(args[0]) === \"object\") {\n var 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, [].concat([\n contextType\n ], args));\n };\n });\n handlers.push(restoreHandler);\n } catch (e) {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n var _loop = function() {\n var prop = _step.value;\n if (//prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)) {\n return \"continue\";\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n return \"continue\";\n }\n var restoreHandler = patch(prototype, prop, function(original) {\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n var recordArgs = serializeArgs(args, win, this);\n var mutation = {\n type: type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n });\n handlers.push(restoreHandler);\n } catch (e) {\n var hookHandler = hookSetter(prototype, prop, {\n set: function set(v2) {\n cb(this.canvas, {\n type: type,\n property: prop,\n args: [\n v2\n ],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n };\n var handlers = [];\n var props = Object.getOwnPropertyNames(prototype);\n for(var _iterator = _create_for_of_iterator_helper_loose(props), _step; !(_step = _iterator()).done;)_loop();\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n var _handlers;\n var handlers = [];\n (_handlers = handlers).push.apply(_handlers, [].concat(patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, win)));\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n var _handlers1;\n (_handlers1 = handlers).push.apply(_handlers1, [].concat(patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, win)));\n }\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n}\nvar encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nvar decodeBase64 = function(base64) {\n return Uint8Array.from(atob(base64), function(c2) {\n return c2.charCodeAt(0);\n });\n};\nvar blob = typeof window !== \"undefined\" && window.Blob && new Blob([\n decodeBase64(encodedJs)\n], {\n type: \"text/javascript;charset=utf-8\"\n});\nfunction WorkerWrapper(options) {\n var objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n var worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", function() {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\"data:text/javascript;base64,\" + encodedJs, {\n name: options == null ? void 0 : options.name\n });\n } finally{\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nvar CanvasManager = /*#__PURE__*/ function() {\n function CanvasManager(options) {\n var _this = this;\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", {\n latestId: 0,\n invokeId: null\n });\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\", function(target, mutation) {\n var newFrame = _this.rafStamps.invokeId && _this.rafStamps.latestId !== _this.rafStamps.invokeId;\n if (newFrame || !_this.rafStamps.invokeId) _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 var _options_sampling = options.sampling, sampling = _options_sampling === void 0 ? \"all\" : _options_sampling, win = options.win, blockClass = options.blockClass, blockSelector = options.blockSelector, recordCanvas = options.recordCanvas, dataURLOptions = options.dataURLOptions;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\") this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\") this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions: dataURLOptions\n });\n }\n var _proto = CanvasManager.prototype;\n _proto.reset = function reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n };\n _proto.freeze = function freeze() {\n this.frozen = true;\n };\n _proto.unfreeze = function unfreeze() {\n this.frozen = false;\n };\n _proto.lock = function lock() {\n this.locked = true;\n };\n _proto.unlock = function unlock() {\n this.locked = false;\n };\n _proto.initCanvasFPSObserver = function initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n var _this = this;\n var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, true);\n var snapshotInProgressMap = /* @__PURE__ */ new Map();\n var worker = new WorkerWrapper();\n worker.onmessage = function(e2) {\n var id = e2.data.id;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n var _e2_data = e2.data, base64 = _e2_data.base64, type = _e2_data.type, width = _e2_data.width, height = _e2_data.height;\n _this.mutationCb({\n id: id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [\n 0,\n 0,\n width,\n height\n ]\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: [\n {\n rr_type: \"ArrayBuffer\",\n base64: base64\n }\n ],\n type: type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n var timeBetweenSnapshots = 1e3 / fps;\n var lastSnapshotTime = 0;\n var rafId;\n var getCanvas = function() {\n var matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach(function(canvas) {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n var takeCanvasSnapshots = function(timestamp) {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n var _this1 = _this;\n getCanvas().forEach(/*#__PURE__*/ _async_to_generator(function(canvas) {\n var _a2, id, context, bitmap;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n id = _this1.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return [\n 2\n ];\n if (canvas.width === 0 || canvas.height === 0) return [\n 2\n ];\n snapshotInProgressMap.set(id, true);\n if ([\n \"webgl\",\n \"webgl2\"\n ].includes(canvas.__context)) {\n 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 return [\n 4,\n createImageBitmap(canvas)\n ];\n case 1:\n bitmap = _state.sent();\n worker.postMessage({\n id: id,\n bitmap: bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n }, [\n bitmap\n ]);\n return [\n 2\n ];\n }\n });\n }));\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = function() {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n };\n _proto.initCanvasMutationObserver = function initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, false);\n var canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\n var canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\n this.resetObservers = function() {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n };\n _proto.startPendingCanvasMutationFlusher = function startPendingCanvasMutationFlusher() {\n var _this = this;\n requestAnimationFrame(function() {\n return _this.flushPendingCanvasMutations();\n });\n };\n _proto.startRAFTimestamping = function startRAFTimestamping() {\n var _this = this;\n var setLatestRAFTimestamp = function(timestamp) {\n _this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n _proto.flushPendingCanvasMutations = function flushPendingCanvasMutations() {\n var _this = this;\n this.pendingCanvasMutations.forEach(function(_values, canvas) {\n var id = _this.mirror.getId(canvas);\n _this.flushPendingCanvasMutationFor(canvas, id);\n });\n requestAnimationFrame(function() {\n return _this.flushPendingCanvasMutations();\n });\n };\n _proto.flushPendingCanvasMutationFor = function flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n var valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n var values = valuesWithType.map(function(value) {\n value.type; var rest = _object_without_properties_loose(value, [\n \"type\"\n ]);\n return rest;\n });\n var type = valuesWithType[0].type;\n this.mutationCb({\n id: id,\n type: type,\n commands: values\n });\n this.pendingCanvasMutations.delete(canvas);\n };\n return CanvasManager;\n}();\nvar StylesheetManager = /*#__PURE__*/ function() {\n function StylesheetManager(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 var _proto = StylesheetManager.prototype;\n _proto.attachLinkElement = function attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes) 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 _proto.trackLinkElement = function trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n };\n _proto.adoptStyleSheets = function adoptStyleSheets(sheets, hostId) {\n var _this, _loop = function() {\n var sheet = _step.value;\n var styleId = void 0;\n if (!_this.styleMirror.has(sheet)) {\n styleId = _this.styleMirror.add(sheet);\n styles.push({\n styleId: styleId,\n rules: Array.from(sheet.rules || CSSRule, function(r2, index2) {\n return {\n rule: stringifyRule(r2, sheet.href),\n index: index2\n };\n })\n });\n } else styleId = _this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n };\n if (sheets.length === 0) return;\n var adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n var styles = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(sheets), _step; !(_step = _iterator()).done;)_this = this, _loop();\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n };\n _proto.reset = function reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n };\n // TODO: take snapshot on stylesheet reload by applying event listener\n _proto.trackStylesheetInLinkElement = function trackStylesheetInLinkElement(_linkEl) {};\n return StylesheetManager;\n}();\nvar ProcessedNodeManager = /*#__PURE__*/ function() {\n function ProcessedNodeManager() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n var _proto = ProcessedNodeManager.prototype;\n _proto.inOtherBuffer = function inOtherBuffer(node2, thisBuffer) {\n var buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some(function(buffer) {\n return buffer !== thisBuffer;\n });\n };\n _proto.add = function add(node2, buffer) {\n var _this = this;\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(function() {\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 _proto.destroy = function destroy() {};\n return ProcessedNodeManager;\n}();\nvar wrappedEmit;\nvar takeFullSnapshot$1;\nvar canvasManager;\nvar recording = false;\ntry {\n if (Array.from([\n 1\n ], function(x2) {\n return x2 * 2;\n })[0] !== 2) {\n var 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}\nvar mirror = createMirror$2();\nfunction record(options) {\n if (options === void 0) options = {};\n var emit = options.emit, checkoutEveryNms = options.checkoutEveryNms, checkoutEveryNth = options.checkoutEveryNth, _options_blockClass = options.blockClass, blockClass = _options_blockClass === void 0 ? \"rr-block\" : _options_blockClass, _options_blockSelector = options.blockSelector, blockSelector = _options_blockSelector === void 0 ? null : _options_blockSelector, _options_ignoreClass = options.ignoreClass, ignoreClass = _options_ignoreClass === void 0 ? \"rr-ignore\" : _options_ignoreClass, _options_ignoreSelector = options.ignoreSelector, ignoreSelector = _options_ignoreSelector === void 0 ? null : _options_ignoreSelector, _options_maskTextClass = options.maskTextClass, maskTextClass = _options_maskTextClass === void 0 ? \"rr-mask\" : _options_maskTextClass, _options_maskTextSelector = options.maskTextSelector, maskTextSelector = _options_maskTextSelector === void 0 ? null : _options_maskTextSelector, _options_inlineStylesheet = options.inlineStylesheet, inlineStylesheet = _options_inlineStylesheet === void 0 ? true : _options_inlineStylesheet, maskAllInputs = options.maskAllInputs, _maskInputOptions = options.maskInputOptions, _slimDOMOptions = options.slimDOMOptions, maskInputFn = options.maskInputFn, maskTextFn = options.maskTextFn, hooks = options.hooks, packFn = options.packFn, _options_sampling = options.sampling, sampling = _options_sampling === void 0 ? {} : _options_sampling, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, mousemoveWait = options.mousemoveWait, _options_recordDOM = options.recordDOM, recordDOM = _options_recordDOM === void 0 ? true : _options_recordDOM, _options_recordCanvas = options.recordCanvas, recordCanvas = _options_recordCanvas === void 0 ? false : _options_recordCanvas, _options_recordCrossOriginIframes = options.recordCrossOriginIframes, recordCrossOriginIframes = _options_recordCrossOriginIframes === void 0 ? false : _options_recordCrossOriginIframes, _options_recordAfter = options.recordAfter, recordAfter = _options_recordAfter === void 0 ? options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\" : _options_recordAfter, _options_userTriggeredOnInput = options.userTriggeredOnInput, userTriggeredOnInput = _options_userTriggeredOnInput === void 0 ? false : _options_userTriggeredOnInput, _options_collectFonts = options.collectFonts, collectFonts = _options_collectFonts === void 0 ? false : _options_collectFonts, _options_inlineImages = options.inlineImages, inlineImages = _options_inlineImages === void 0 ? false : _options_inlineImages, plugins = options.plugins, _options_keepIframeSrcFn = options.keepIframeSrcFn, keepIframeSrcFn = _options_keepIframeSrcFn === void 0 ? function() {\n return false;\n } : _options_keepIframeSrcFn, _options_ignoreCSSAttributes = options.ignoreCSSAttributes, ignoreCSSAttributes = _options_ignoreCSSAttributes === void 0 ? /* @__PURE__ */ new Set([]) : _options_ignoreCSSAttributes, errorHandler2 = options.errorHandler;\n registerErrorHandler(errorHandler2);\n var inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n var 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 function() {};\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n var 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 : {\n password: true\n };\n var slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\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 } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n var lastFullSnapshotEvent;\n var incrementalSnapshotCount = 0;\n var eventProcessor = function(e2) {\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\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 = function(r2, isCheckout) {\n var _a2;\n var 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(function(buf) {\n return buf.unfreeze();\n });\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n var message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout: 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 var exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n var exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n var wrappedMutationEmit = function(m) {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Mutation\n }, m)\n });\n };\n var wrappedScrollEmit = function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Scroll\n }, p)\n });\n };\n var wrappedCanvasMutationEmit = function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.CanvasMutation\n }, p)\n });\n };\n var wrappedAdoptedStyleSheetEmit = function(a2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.AdoptedStyleSheet\n }, a2)\n });\n };\n var stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n var iframeManager = new IframeManager({\n mirror: mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager: stylesheetManager,\n recordCrossOriginIframes: recordCrossOriginIframes,\n wrappedEmit: wrappedEmit\n });\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.getMirror) plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n var processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas: recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass: blockClass,\n blockSelector: blockSelector,\n mirror: mirror,\n sampling: sampling.canvas,\n dataURLOptions: dataURLOptions\n });\n var shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n dataURLOptions: dataURLOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n sampling: sampling,\n slimDOMOptions: slimDOMOptions,\n iframeManager: iframeManager,\n stylesheetManager: stylesheetManager,\n canvasManager: canvasManager,\n keepIframeSrcFn: keepIframeSrcFn,\n processedNodeManager: processedNodeManager\n },\n mirror: mirror\n });\n takeFullSnapshot$1 = function(isCheckout) {\n if (isCheckout === void 0) isCheckout = false;\n if (!recordDOM) {\n return;\n }\n wrappedEmit({\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n }, isCheckout);\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach(function(buf) {\n return buf.lock();\n });\n var node2 = snapshot(document, {\n mirror: mirror,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n onSerialize: function(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: function(iframe, childSn) {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: function(linkEl, childSn) {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit({\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n }, isCheckout);\n mutationBuffers.forEach(function(buf) {\n return buf.unlock();\n });\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0) stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\n };\n try {\n var handlers = [];\n var observe = function(doc) {\n var _a2;\n return callbackWrapper(initObservers)({\n mutationCb: wrappedMutationEmit,\n mousemoveCb: function(positions, source) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: source,\n positions: positions\n }\n });\n },\n mouseInteractionCb: function(d) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.MouseInteraction\n }, d)\n });\n },\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: function(d) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.ViewportResize\n }, d)\n });\n },\n inputCb: function(v2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Input\n }, v2)\n });\n },\n mediaInteractionCb: function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.MediaInteraction\n }, p)\n });\n },\n styleSheetRuleCb: function(r2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.StyleSheetRule\n }, r2)\n });\n },\n styleDeclarationCb: function(r2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.StyleDeclaration\n }, r2)\n });\n },\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Font\n }, p)\n });\n },\n selectionCb: function(p) {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Selection\n }, p)\n });\n },\n customElementCb: function(c2) {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.CustomElement\n }, c2)\n });\n },\n blockClass: blockClass,\n ignoreClass: ignoreClass,\n ignoreSelector: ignoreSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n maskInputOptions: maskInputOptions,\n inlineStylesheet: inlineStylesheet,\n sampling: sampling,\n recordDOM: recordDOM,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n userTriggeredOnInput: userTriggeredOnInput,\n collectFonts: collectFonts,\n doc: doc,\n maskInputFn: maskInputFn,\n maskTextFn: maskTextFn,\n keepIframeSrcFn: keepIframeSrcFn,\n blockSelector: blockSelector,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n mirror: mirror,\n iframeManager: iframeManager,\n stylesheetManager: stylesheetManager,\n shadowDomManager: shadowDomManager,\n processedNodeManager: processedNodeManager,\n canvasManager: canvasManager,\n ignoreCSSAttributes: ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter(function(p) {\n return p.observer;\n })) == null ? void 0 : _a2.map(function(p) {\n return {\n observer: p.observer,\n options: p.options,\n callback: function(payload) {\n return wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload: payload\n }\n });\n }\n };\n })) || []\n }, hooks);\n };\n iframeManager.addLoadListener(function(iframeEl) {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n var init = function() {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(on(\"DOMContentLoaded\", function() {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n }));\n handlers.push(on(\"load\", function() {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n }, window));\n }\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = function(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: tag,\n payload: payload\n }\n });\n};\nrecord.freezePage = function() {\n mutationBuffers.forEach(function(buf) {\n return buf.freeze();\n });\n};\nrecord.takeFullSnapshot = function(isCheckout) {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nfunction mitt$1(n2) {\n return {\n all: n2 = n2 || /* @__PURE__ */ new Map(),\n on: function on(t2, e2) {\n var i2 = n2.get(t2);\n i2 ? i2.push(e2) : n2.set(t2, [\n e2\n ]);\n },\n off: function off(t2, e2) {\n var i2 = n2.get(t2);\n i2 && (e2 ? i2.splice(i2.indexOf(e2) >>> 0, 1) : n2.set(t2, []));\n },\n emit: function emit(t2, e2) {\n var i2 = n2.get(t2);\n i2 && i2.slice().map(function(n3) {\n n3(e2);\n }), (i2 = n2.get(\"*\")) && i2.slice().map(function(n3) {\n n3(t2, e2);\n });\n }\n };\n}\nvar mittProxy = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: mitt$1\n}, Symbol.toStringTag, {\n value: \"Module\"\n}));\nfunction polyfill(w, d) {\n if (w === void 0) w = window;\n if (d === void 0) d = document;\n if (\"scrollBehavior\" in d.documentElement.style && w.__forceSmoothScrollPolyfill__ !== true) {\n return;\n }\n var Element2 = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element2.prototype.scroll || scrollElement,\n scrollIntoView: Element2.prototype.scrollIntoView\n };\n var now = w.performance && w.performance.now ? w.performance.now.bind(w.performance) : Date.now;\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = [\n \"MSIE \",\n \"Trident/\",\n \"Edge/\"\n ];\n return new RegExp(userAgentPatterns.join(\"|\")).test(userAgent);\n }\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n function scrollElement(x2, y) {\n this.scrollLeft = x2;\n this.scrollTop = y;\n }\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n function shouldBailOut(firstArg) {\n if (firstArg === null || (typeof firstArg === \"undefined\" ? \"undefined\" : _type_of(firstArg)) !== \"object\" || firstArg.behavior === void 0 || firstArg.behavior === \"auto\" || firstArg.behavior === \"instant\") {\n return true;\n }\n if ((typeof firstArg === \"undefined\" ? \"undefined\" : _type_of(firstArg)) === \"object\" && firstArg.behavior === \"smooth\") {\n return false;\n }\n throw new TypeError(\"behavior member of ScrollOptions \" + firstArg.behavior + \" is not a valid value for enumeration ScrollBehavior.\");\n }\n function hasScrollableSpace(el, axis) {\n if (axis === \"Y\") {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n if (axis === \"X\") {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)[\"overflow\" + axis];\n return overflowValue === \"auto\" || overflowValue === \"scroll\";\n }\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, \"Y\") && canOverflow(el, \"Y\");\n var isScrollableX = hasScrollableSpace(el, \"X\") && canOverflow(el, \"X\");\n return isScrollableY || isScrollableX;\n }\n function findScrollableParent(el) {\n while(el !== d.body && isScrollable(el) === false){\n el = el.parentNode || el.host;\n }\n return el;\n }\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n elapsed = elapsed > 1 ? 1 : elapsed;\n value = ease(elapsed);\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n context.method.call(context.scrollable, currentX, currentY);\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n function smoothScroll(el, x2, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x2,\n y: y\n });\n }\n w.scroll = w.scrollTo = function() {\n if (arguments[0] === void 0) {\n return;\n }\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(w, arguments[0].left !== void 0 ? arguments[0].left : _type_of(arguments[0]) !== \"object\" ? arguments[0] : w.scrollX || w.pageXOffset, // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== void 0 ? arguments[0].top : arguments[1] !== void 0 ? arguments[1] : w.scrollY || w.pageYOffset);\n return;\n }\n smoothScroll.call(w, d.body, arguments[0].left !== void 0 ? ~~arguments[0].left : w.scrollX || w.pageXOffset, arguments[0].top !== void 0 ? ~~arguments[0].top : w.scrollY || w.pageYOffset);\n };\n w.scrollBy = function() {\n if (arguments[0] === void 0) {\n return;\n }\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(w, arguments[0].left !== void 0 ? arguments[0].left : _type_of(arguments[0]) !== \"object\" ? arguments[0] : 0, arguments[0].top !== void 0 ? arguments[0].top : arguments[1] !== void 0 ? arguments[1] : 0);\n return;\n }\n smoothScroll.call(w, d.body, ~~arguments[0].left + (w.scrollX || w.pageXOffset), ~~arguments[0].top + (w.scrollY || w.pageYOffset));\n };\n Element2.prototype.scroll = Element2.prototype.scrollTo = function() {\n if (arguments[0] === void 0) {\n return;\n }\n if (shouldBailOut(arguments[0]) === true) {\n if (typeof arguments[0] === \"number\" && arguments[1] === void 0) {\n throw new SyntaxError(\"Value could not be converted\");\n }\n original.elementScroll.call(this, // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== void 0 ? ~~arguments[0].left : _type_of(arguments[0]) !== \"object\" ? ~~arguments[0] : this.scrollLeft, // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== void 0 ? ~~arguments[0].top : arguments[1] !== void 0 ? ~~arguments[1] : this.scrollTop);\n return;\n }\n var left = arguments[0].left;\n var top = arguments[0].top;\n smoothScroll.call(this, this, typeof left === \"undefined\" ? this.scrollLeft : ~~left, typeof top === \"undefined\" ? this.scrollTop : ~~top);\n };\n Element2.prototype.scrollBy = function() {\n if (arguments[0] === void 0) {\n return;\n }\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(this, arguments[0].left !== void 0 ? ~~arguments[0].left + this.scrollLeft : ~~arguments[0] + this.scrollLeft, arguments[0].top !== void 0 ? ~~arguments[0].top + this.scrollTop : ~~arguments[1] + this.scrollTop);\n return;\n }\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n Element2.prototype.scrollIntoView = function() {\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(this, arguments[0] === void 0 ? true : arguments[0]);\n return;\n }\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n if (scrollableParent !== d.body) {\n smoothScroll.call(this, scrollableParent, scrollableParent.scrollLeft + clientRects.left - parentRects.left, scrollableParent.scrollTop + clientRects.top - parentRects.top);\n if (w.getComputedStyle(scrollableParent).position !== \"fixed\") {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: \"smooth\"\n });\n }\n } else {\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: \"smooth\"\n });\n }\n };\n}\nvar Timer = /*#__PURE__*/ function() {\n function Timer(actions, config) {\n if (actions === void 0) actions = [];\n __publicField(this, \"timeOffset\", 0);\n __publicField(this, \"speed\");\n __publicField(this, \"actions\");\n __publicField(this, \"raf\", null);\n __publicField(this, \"lastTimestamp\");\n this.actions = actions;\n this.speed = config.speed;\n }\n var _proto = Timer.prototype;\n /**\n * Add an action, possibly after the timer starts.\n */ _proto.addAction = function addAction(action) {\n var rafWasActive = this.raf === true;\n if (!this.actions.length || this.actions[this.actions.length - 1].delay <= action.delay) {\n this.actions.push(action);\n } else {\n var index2 = this.findActionIndex(action);\n this.actions.splice(index2, 0, action);\n }\n if (rafWasActive) {\n this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n }\n };\n _proto.start = function start() {\n this.timeOffset = 0;\n this.lastTimestamp = performance.now();\n this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n };\n _proto.rafCheck = function rafCheck() {\n var time = performance.now();\n this.timeOffset += (time - this.lastTimestamp) * this.speed;\n this.lastTimestamp = time;\n while(this.actions.length){\n var action = this.actions[0];\n if (this.timeOffset >= action.delay) {\n this.actions.shift();\n action.doAction();\n } else {\n break;\n }\n }\n if (this.actions.length > 0) {\n this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n } else {\n this.raf = true;\n }\n };\n _proto.clear = function clear() {\n if (this.raf) {\n if (this.raf !== true) {\n cancelAnimationFrame(this.raf);\n }\n this.raf = null;\n }\n this.actions.length = 0;\n };\n _proto.setSpeed = function setSpeed(speed) {\n this.speed = speed;\n };\n _proto.isActive = function isActive() {\n return this.raf !== null;\n };\n _proto.findActionIndex = function findActionIndex(action) {\n var start = 0;\n var end = this.actions.length - 1;\n while(start <= end){\n var mid = Math.floor((start + end) / 2);\n if (this.actions[mid].delay < action.delay) {\n start = mid + 1;\n } else if (this.actions[mid].delay > action.delay) {\n end = mid - 1;\n } else {\n return mid + 1;\n }\n }\n return start;\n };\n return Timer;\n}();\nfunction addDelay(event, baselineTime) {\n if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.MouseMove && event.data.positions && event.data.positions.length) {\n var firstOffset = event.data.positions[0].timeOffset;\n var firstTimestamp = event.timestamp + firstOffset;\n event.delay = firstTimestamp - baselineTime;\n return firstTimestamp - baselineTime;\n }\n event.delay = event.timestamp - baselineTime;\n return event.delay;\n}\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */ function t(t2, n2) {\n var e2 = \"function\" == typeof Symbol && t2[Symbol.iterator];\n if (!e2) return t2;\n var r2, o2, i2 = e2.call(t2), a2 = [];\n try {\n for(; (void 0 === n2 || n2-- > 0) && !(r2 = i2.next()).done;)a2.push(r2.value);\n } catch (t3) {\n o2 = {\n error: t3\n };\n } finally{\n try {\n r2 && !r2.done && (e2 = i2.return) && e2.call(i2);\n } finally{\n if (o2) throw o2.error;\n }\n }\n return a2;\n}\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nvar e = {\n type: \"xstate.init\"\n};\nfunction r(t2) {\n return void 0 === t2 ? [] : [].concat(t2);\n}\nfunction o(t2) {\n return {\n type: \"xstate.assign\",\n assignment: t2\n };\n}\nfunction i(t2, n2) {\n return \"string\" == typeof (t2 = \"string\" == typeof t2 && n2 && n2[t2] ? n2[t2] : t2) ? {\n type: t2\n } : \"function\" == typeof t2 ? {\n type: t2.name,\n exec: t2\n } : t2;\n}\nfunction a(t2) {\n return function(n2) {\n return t2 === n2;\n };\n}\nfunction u(t2) {\n return \"string\" == typeof t2 ? {\n type: t2\n } : t2;\n}\nfunction c(t2, n2) {\n return {\n value: t2,\n context: n2,\n actions: [],\n changed: false,\n matches: a(t2)\n };\n}\nfunction f(t2, n2, e2) {\n var r2 = n2, o2 = false;\n return [\n t2.filter(function(t3) {\n if (\"xstate.assign\" === t3.type) {\n o2 = true;\n var n3 = Object.assign({}, r2);\n return \"function\" == typeof t3.assignment ? n3 = t3.assignment(r2, e2) : Object.keys(t3.assignment).forEach(function(o3) {\n n3[o3] = \"function\" == typeof t3.assignment[o3] ? t3.assignment[o3](r2, e2) : t3.assignment[o3];\n }), r2 = n3, false;\n }\n return true;\n }),\n r2,\n o2\n ];\n}\nfunction s(n2, o2) {\n void 0 === o2 && (o2 = {});\n var s2 = t(f(r(n2.states[n2.initial].entry).map(function(t2) {\n return i(t2, o2.actions);\n }), n2.context, e), 2), l2 = s2[0], v2 = s2[1], y = {\n config: n2,\n _options: o2,\n initialState: {\n value: n2.initial,\n actions: l2,\n context: v2,\n matches: a(n2.initial)\n },\n transition: function transition(e2, o3) {\n var s3, l3, v3 = \"string\" == typeof e2 ? {\n value: e2,\n context: n2.context\n } : e2, p = v3.value, g = v3.context, d = u(o3), x2 = n2.states[p];\n if (x2.on) {\n var m = r(x2.on[d.type]);\n try {\n for(var h = function(t2) {\n var n3 = \"function\" == typeof Symbol && Symbol.iterator, e3 = n3 && t2[n3], r2 = 0;\n if (e3) return e3.call(t2);\n if (t2 && \"number\" == typeof t2.length) return {\n next: function next() {\n return t2 && r2 >= t2.length && (t2 = void 0), {\n value: t2 && t2[r2++],\n done: !t2\n };\n }\n };\n throw new TypeError(n3 ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n }(m), b = h.next(); !b.done; b = h.next()){\n var S = b.value;\n if (void 0 === S) return c(p, g);\n var w = \"string\" == typeof S ? {\n target: S\n } : S, j = w.target, E = w.actions, R = void 0 === E ? [] : E, N = w.cond, O = void 0 === N ? function O() {\n return true;\n } : N, _ = void 0 === j, k = null != j ? j : p, T = n2.states[k];\n if (O(g, d)) {\n var q = t(f((_ ? r(R) : [].concat(x2.exit, R, T.entry).filter(function(t2) {\n return t2;\n })).map(function(t2) {\n return i(t2, y._options.actions);\n }), g, d), 3), z = q[0], A = q[1], B = q[2], C = null != j ? j : p;\n return {\n value: C,\n context: A,\n actions: z,\n changed: j !== p || z.length > 0 || B,\n matches: a(C)\n };\n }\n }\n } catch (t2) {\n s3 = {\n error: t2\n };\n } finally{\n try {\n b && !b.done && (l3 = h.return) && l3.call(h);\n } finally{\n if (s3) throw s3.error;\n }\n }\n }\n return c(p, g);\n }\n };\n return y;\n}\nvar l = function l(t2, n2) {\n return t2.actions.forEach(function(e2) {\n var r2 = e2.exec;\n return r2 && r2(t2.context, n2);\n });\n};\nfunction v(t2) {\n var r2 = t2.initialState, o2 = n.NotStarted, i2 = /* @__PURE__ */ new Set(), c2 = {\n _machine: t2,\n send: function send(e2) {\n o2 === n.Running && (r2 = t2.transition(r2, e2), l(r2, u(e2)), i2.forEach(function(t3) {\n return t3(r2);\n }));\n },\n subscribe: function subscribe(t3) {\n return i2.add(t3), t3(r2), {\n unsubscribe: function unsubscribe() {\n return i2.delete(t3);\n }\n };\n },\n start: function start(i3) {\n if (i3) {\n var u2 = \"object\" == (typeof i3 === \"undefined\" ? \"undefined\" : _type_of(i3)) ? i3 : {\n context: t2.config.context,\n value: i3\n };\n r2 = {\n value: u2.value,\n actions: [],\n context: u2.context,\n matches: a(u2.value)\n };\n }\n return o2 = n.Running, l(r2, e), c2;\n },\n stop: function stop() {\n return o2 = n.Stopped, i2.clear(), c2;\n },\n get state () {\n return r2;\n },\n get status () {\n return o2;\n }\n };\n return c2;\n}\nfunction discardPriorSnapshots(events, baselineTime) {\n for(var idx = events.length - 1; idx >= 0; idx--){\n var event = events[idx];\n if (event.type === EventType.Meta) {\n if (event.timestamp <= baselineTime) {\n return events.slice(idx);\n }\n }\n }\n return events;\n}\nfunction createPlayerService(context, param) {\n var getCastFn = param.getCastFn, applyEventsSynchronously = param.applyEventsSynchronously, emitter = param.emitter;\n var playerMachine = s({\n id: \"player\",\n context: context,\n initial: \"paused\",\n states: {\n playing: {\n on: {\n PAUSE: {\n target: \"paused\",\n actions: [\n \"pause\"\n ]\n },\n CAST_EVENT: {\n target: \"playing\",\n actions: \"castEvent\"\n },\n END: {\n target: \"paused\",\n actions: [\n \"resetLastPlayedEvent\",\n \"pause\"\n ]\n },\n ADD_EVENT: {\n target: \"playing\",\n actions: [\n \"addEvent\"\n ]\n }\n }\n },\n paused: {\n on: {\n PLAY: {\n target: \"playing\",\n actions: [\n \"recordTimeOffset\",\n \"play\"\n ]\n },\n CAST_EVENT: {\n target: \"paused\",\n actions: \"castEvent\"\n },\n TO_LIVE: {\n target: \"live\",\n actions: [\n \"startLive\"\n ]\n },\n ADD_EVENT: {\n target: \"paused\",\n actions: [\n \"addEvent\"\n ]\n }\n }\n },\n live: {\n on: {\n ADD_EVENT: {\n target: \"live\",\n actions: [\n \"addEvent\"\n ]\n },\n CAST_EVENT: {\n target: \"live\",\n actions: [\n \"castEvent\"\n ]\n }\n }\n }\n }\n }, {\n actions: {\n castEvent: o({\n lastPlayedEvent: function(ctx, event) {\n if (event.type === \"CAST_EVENT\") {\n return event.payload.event;\n }\n return ctx.lastPlayedEvent;\n }\n }),\n recordTimeOffset: o(function(ctx, event) {\n var timeOffset = ctx.timeOffset;\n if (\"payload\" in event && \"timeOffset\" in event.payload) {\n timeOffset = event.payload.timeOffset;\n }\n return _extends({}, ctx, {\n timeOffset: timeOffset,\n baselineTime: ctx.events[0].timestamp + timeOffset\n });\n }),\n play: function play(ctx) {\n var _loop = function() {\n var event = _step1.value;\n if (lastPlayedTimestamp && lastPlayedTimestamp < baselineTime && (event.timestamp <= lastPlayedTimestamp || event === lastPlayedEvent)) {\n return \"continue\";\n }\n if (event.timestamp < baselineTime) {\n syncEvents.push(event);\n } else {\n var castFn = getCastFn(event, false);\n timer.addAction({\n doAction: function() {\n castFn();\n },\n delay: event.delay\n });\n }\n };\n var _a2;\n var timer = ctx.timer, events = ctx.events, baselineTime = ctx.baselineTime, lastPlayedEvent = ctx.lastPlayedEvent;\n timer.clear();\n for(var _iterator = _create_for_of_iterator_helper_loose(events), _step; !(_step = _iterator()).done;){\n var event = _step.value;\n addDelay(event, baselineTime);\n }\n var neededEvents = discardPriorSnapshots(events, baselineTime);\n var lastPlayedTimestamp = lastPlayedEvent == null ? void 0 : lastPlayedEvent.timestamp;\n if ((lastPlayedEvent == null ? void 0 : lastPlayedEvent.type) === EventType.IncrementalSnapshot && lastPlayedEvent.data.source === IncrementalSource.MouseMove) {\n lastPlayedTimestamp = lastPlayedEvent.timestamp + ((_a2 = lastPlayedEvent.data.positions[0]) == null ? void 0 : _a2.timeOffset);\n }\n if (baselineTime < (lastPlayedTimestamp || 0)) {\n emitter.emit(ReplayerEvents.PlayBack);\n }\n var syncEvents = new Array();\n for(var _iterator1 = _create_for_of_iterator_helper_loose(neededEvents), _step1; !(_step1 = _iterator1()).done;)_loop();\n applyEventsSynchronously(syncEvents);\n emitter.emit(ReplayerEvents.Flush);\n timer.start();\n },\n pause: function pause(ctx) {\n ctx.timer.clear();\n },\n resetLastPlayedEvent: o(function(ctx) {\n return _extends({}, ctx, {\n lastPlayedEvent: null\n });\n }),\n startLive: o({\n baselineTime: function(ctx, event) {\n ctx.timer.start();\n if (event.type === \"TO_LIVE\" && event.payload.baselineTime) {\n return event.payload.baselineTime;\n }\n return Date.now();\n }\n }),\n addEvent: o(function(ctx, machineEvent) {\n var baselineTime = ctx.baselineTime, timer = ctx.timer, events = ctx.events;\n if (machineEvent.type === \"ADD_EVENT\") {\n var event = machineEvent.payload.event;\n addDelay(event, baselineTime);\n var end = events.length - 1;\n if (!events[end] || events[end].timestamp <= event.timestamp) {\n events.push(event);\n } else {\n var insertionIndex = -1;\n var start = 0;\n while(start <= end){\n var mid = Math.floor((start + end) / 2);\n if (events[mid].timestamp <= event.timestamp) {\n start = mid + 1;\n } else {\n end = mid - 1;\n }\n }\n if (insertionIndex === -1) {\n insertionIndex = start;\n }\n events.splice(insertionIndex, 0, event);\n }\n var isSync = event.timestamp < baselineTime;\n var castFn = getCastFn(event, isSync);\n if (isSync) {\n castFn();\n } else if (timer.isActive()) {\n timer.addAction({\n doAction: function() {\n castFn();\n },\n delay: event.delay\n });\n }\n }\n return _extends({}, ctx, {\n events: events\n });\n })\n }\n });\n return v(playerMachine);\n}\nfunction createSpeedService(context) {\n var speedMachine = s({\n id: \"speed\",\n context: context,\n initial: \"normal\",\n states: {\n normal: {\n on: {\n FAST_FORWARD: {\n target: \"skipping\",\n actions: [\n \"recordSpeed\",\n \"setSpeed\"\n ]\n },\n SET_SPEED: {\n target: \"normal\",\n actions: [\n \"setSpeed\"\n ]\n }\n }\n },\n skipping: {\n on: {\n BACK_TO_NORMAL: {\n target: \"normal\",\n actions: [\n \"restoreSpeed\"\n ]\n },\n SET_SPEED: {\n target: \"normal\",\n actions: [\n \"setSpeed\"\n ]\n }\n }\n }\n }\n }, {\n actions: {\n setSpeed: function(ctx, event) {\n if (\"payload\" in event) {\n ctx.timer.setSpeed(event.payload.speed);\n }\n },\n recordSpeed: o({\n normalSpeed: function(ctx) {\n return ctx.timer.speed;\n }\n }),\n restoreSpeed: function(ctx) {\n ctx.timer.setSpeed(ctx.normalSpeed);\n }\n }\n });\n return v(speedMachine);\n}\nvar rules = function(blockClass) {\n return [\n \".\" + blockClass + \" { background: currentColor }\",\n \"noscript { display: none !important; }\"\n ];\n};\nvar webGLVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor(ctx, ctor) {\n var contextMap = webGLVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n webGLVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nfunction deserializeArg(imageMap, ctx, preload) {\n return /*#__PURE__*/ _async_to_generator(function(arg) {\n var args, name, index2, name1, args1, ctor, _tmp, _, _1, image, image2, blobContents, blob2, result2;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (!(arg && (typeof arg === \"undefined\" ? \"undefined\" : _type_of(arg)) === \"object\" && \"rr_type\" in arg)) return [\n 3,\n 11\n ];\n if (preload) preload.isUnchanged = false;\n if (!(arg.rr_type === \"ImageBitmap\" && \"args\" in arg)) return [\n 3,\n 3\n ];\n return [\n 4,\n deserializeArg(imageMap, ctx, preload)(arg.args)\n ];\n case 1:\n args = _state.sent();\n return [\n 4,\n createImageBitmap.apply(null, args)\n ];\n case 2:\n return [\n 2,\n _state.sent()\n ];\n case 3:\n if (!(\"index\" in arg)) return [\n 3,\n 4\n ];\n if (preload || ctx === null) return [\n 2,\n arg\n ];\n name = arg.rr_type, index2 = arg.index;\n return [\n 2,\n variableListFor(ctx, name)[index2]\n ];\n case 4:\n if (!(\"args\" in arg)) return [\n 3,\n 6\n ];\n name1 = arg.rr_type, args1 = arg.args;\n ctor = window[name1];\n _tmp = [\n ctor\n ];\n _1 = (_ = []).concat;\n return [\n 4,\n Promise.all(args1.map(deserializeArg(imageMap, ctx, preload)))\n ];\n case 5:\n return [\n 2,\n _construct.apply(void 0, _tmp.concat([\n _1.apply(_, [\n _state.sent()\n ])\n ]))\n ];\n case 6:\n if (!(\"base64\" in arg)) return [\n 3,\n 7\n ];\n return [\n 2,\n decode(arg.base64)\n ];\n case 7:\n if (!(\"src\" in arg)) return [\n 3,\n 8\n ];\n image = imageMap.get(arg.src);\n if (image) {\n return [\n 2,\n image\n ];\n } else {\n image2 = new Image();\n image2.src = arg.src;\n imageMap.set(arg.src, image2);\n return [\n 2,\n image2\n ];\n }\n case 8:\n if (!(\"data\" in arg && arg.rr_type === \"Blob\")) return [\n 3,\n 10\n ];\n return [\n 4,\n Promise.all(arg.data.map(deserializeArg(imageMap, ctx, preload)))\n ];\n case 9:\n blobContents = _state.sent();\n blob2 = new Blob(blobContents, {\n type: arg.type\n });\n return [\n 2,\n blob2\n ];\n case 10:\n return [\n 3,\n 13\n ];\n case 11:\n if (!Array.isArray(arg)) return [\n 3,\n 13\n ];\n return [\n 4,\n Promise.all(arg.map(deserializeArg(imageMap, ctx, preload)))\n ];\n case 12:\n result2 = _state.sent();\n return [\n 2,\n result2\n ];\n case 13:\n return [\n 2,\n arg\n ];\n }\n });\n });\n}\nfunction getContext(target, type) {\n try {\n if (type === CanvasContext.WebGL) {\n return target.getContext(\"webgl\") || target.getContext(\"experimental-webgl\");\n }\n return target.getContext(\"webgl2\");\n } catch (e2) {\n return null;\n }\n}\nvar WebGLVariableConstructorsNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\"\n];\nfunction saveToWebGLVarMap(ctx, result2) {\n if (!(result2 == null ? void 0 : result2.constructor)) return;\n var name = result2.constructor.name;\n if (!WebGLVariableConstructorsNames.includes(name)) return;\n var variables = variableListFor(ctx, name);\n if (!variables.includes(result2)) variables.push(result2);\n}\nfunction webglMutation(_) {\n return _webglMutation.apply(this, arguments);\n}\nfunction _webglMutation() {\n _webglMutation = _async_to_generator(function(param) {\n var mutation, target, type, imageMap, errorHandler2, ctx, original, args, result2, error;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n mutation = param.mutation, target = param.target, type = param.type, imageMap = param.imageMap, errorHandler2 = param.errorHandler;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 3,\n ,\n 4\n ]);\n ctx = getContext(target, type);\n if (!ctx) return [\n 2\n ];\n if (mutation.setter) {\n ctx[mutation.property] = mutation.args[0];\n return [\n 2\n ];\n }\n original = ctx[mutation.property];\n return [\n 4,\n Promise.all(mutation.args.map(deserializeArg(imageMap, ctx)))\n ];\n case 2:\n args = _state.sent();\n result2 = original.apply(ctx, args);\n saveToWebGLVarMap(ctx, result2);\n return [\n 3,\n 4\n ];\n case 3:\n error = _state.sent();\n errorHandler2(mutation, error);\n return [\n 3,\n 4\n ];\n case 4:\n return [\n 2\n ];\n }\n });\n });\n return _webglMutation.apply(this, arguments);\n}\nfunction canvasMutation$1(_) {\n return _canvasMutation$1.apply(this, arguments);\n}\nfunction _canvasMutation$1() {\n _canvasMutation$1 = _async_to_generator(function(param) {\n var event, mutations, target, imageMap, errorHandler2, ctx, mutationArgsPromises, args;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n event = param.event, mutations = param.mutations, target = param.target, imageMap = param.imageMap, errorHandler2 = param.errorHandler;\n ctx = target.getContext(\"2d\");\n if (!ctx) {\n errorHandler2(mutations[0], new Error(\"Canvas context is null\"));\n return [\n 2\n ];\n }\n mutationArgsPromises = mutations.map(/*#__PURE__*/ _async_to_generator(function(mutation) {\n return _ts_generator(this, function(_state) {\n return [\n 2,\n Promise.all(mutation.args.map(deserializeArg(imageMap, ctx)))\n ];\n });\n }));\n return [\n 4,\n Promise.all(mutationArgsPromises)\n ];\n case 1:\n args = _state.sent();\n args.forEach(function(args2, index2) {\n var mutation = mutations[index2];\n try {\n if (mutation.setter) {\n ctx[mutation.property] = mutation.args[0];\n return;\n }\n var original = ctx[mutation.property];\n if (mutation.property === \"drawImage\" && typeof mutation.args[0] === \"string\") {\n imageMap.get(event);\n original.apply(ctx, mutation.args);\n } else {\n original.apply(ctx, args2);\n }\n } catch (error) {\n errorHandler2(mutation, error);\n }\n return;\n });\n return [\n 2\n ];\n }\n });\n });\n return _canvasMutation$1.apply(this, arguments);\n}\nfunction canvasMutation(_) {\n return _canvasMutation.apply(this, arguments);\n}\nfunction _canvasMutation() {\n _canvasMutation = _async_to_generator(function(param) {\n var event, mutation, target, imageMap, canvasEventMap, errorHandler2, precomputedMutation, commands, i2, command, error;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n event = param.event, mutation = param.mutation, target = param.target, imageMap = param.imageMap, canvasEventMap = param.canvasEventMap, errorHandler2 = param.errorHandler;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 8,\n ,\n 9\n ]);\n precomputedMutation = canvasEventMap.get(event) || mutation;\n commands = \"commands\" in precomputedMutation ? precomputedMutation.commands : [\n precomputedMutation\n ];\n if (![\n CanvasContext.WebGL,\n CanvasContext.WebGL2\n ].includes(mutation.type)) return [\n 3,\n 6\n ];\n i2 = 0;\n _state.label = 2;\n case 2:\n if (!(i2 < commands.length)) return [\n 3,\n 5\n ];\n command = commands[i2];\n return [\n 4,\n webglMutation({\n mutation: command,\n type: mutation.type,\n target: target,\n imageMap: imageMap,\n errorHandler: errorHandler2\n })\n ];\n case 3:\n _state.sent();\n _state.label = 4;\n case 4:\n i2++;\n return [\n 3,\n 2\n ];\n case 5:\n return [\n 2\n ];\n case 6:\n return [\n 4,\n canvasMutation$1({\n event: event,\n mutations: commands,\n target: target,\n imageMap: imageMap,\n errorHandler: errorHandler2\n })\n ];\n case 7:\n _state.sent();\n return [\n 3,\n 9\n ];\n case 8:\n error = _state.sent();\n errorHandler2(mutation, error);\n return [\n 3,\n 9\n ];\n case 9:\n return [\n 2\n ];\n }\n });\n });\n return _canvasMutation.apply(this, arguments);\n}\nvar MediaManager = /*#__PURE__*/ function() {\n function MediaManager(options) {\n var _this = this;\n __publicField(this, \"mediaMap\", /* @__PURE__ */ new Map());\n __publicField(this, \"warn\");\n __publicField(this, \"service\");\n __publicField(this, \"speedService\");\n __publicField(this, \"emitter\");\n __publicField(this, \"getCurrentTime\");\n __publicField(this, \"metadataCallbackMap\", /* @__PURE__ */ new Map());\n this.warn = options.warn;\n this.service = options.service;\n this.speedService = options.speedService;\n this.emitter = options.emitter;\n this.getCurrentTime = options.getCurrentTime;\n this.emitter.on(ReplayerEvents.Start, this.start.bind(this));\n this.emitter.on(ReplayerEvents.SkipStart, this.start.bind(this));\n this.emitter.on(ReplayerEvents.Pause, this.pause.bind(this));\n this.emitter.on(ReplayerEvents.Finish, this.pause.bind(this));\n this.speedService.subscribe(function() {\n _this.syncAllMediaElements();\n });\n }\n var _proto = MediaManager.prototype;\n _proto.syncAllMediaElements = function syncAllMediaElements(options) {\n var _this = this;\n if (options === void 0) options = {\n pause: false\n };\n this.mediaMap.forEach(function(_mediaState, target) {\n _this.syncTargetWithState(target);\n if (options.pause) {\n target.pause();\n }\n });\n };\n _proto.start = function start() {\n this.syncAllMediaElements();\n };\n _proto.pause = function pause() {\n this.syncAllMediaElements({\n pause: true\n });\n };\n _proto.seekTo = function seekTo(param) {\n var time = param.time, target = param.target, mediaState = param.mediaState;\n if (mediaState.isPlaying) {\n var differenceBetweenCurrentTimeAndMediaMutationTimestamp = time - mediaState.lastInteractionTimeOffset;\n var mediaPlaybackOffset = differenceBetweenCurrentTimeAndMediaMutationTimestamp / 1e3 * mediaState.playbackRate;\n var duration = \"duration\" in target && target.duration;\n if (Number.isNaN(duration)) {\n this.waitForMetadata(target);\n return;\n }\n var seekToTime = mediaState.currentTimeAtLastInteraction + mediaPlaybackOffset;\n if (target.loop && // RRMediaElement doesn't have a duration property\n duration !== false) {\n seekToTime = seekToTime % duration;\n }\n target.currentTime = seekToTime;\n } else {\n target.pause();\n target.currentTime = mediaState.currentTimeAtLastInteraction;\n }\n };\n _proto.waitForMetadata = function waitForMetadata(target) {\n var _this = this;\n if (this.metadataCallbackMap.has(target)) return;\n if (!(\"addEventListener\" in target)) return;\n var onLoadedMetadata = function() {\n _this.metadataCallbackMap.delete(target);\n var mediaState = _this.mediaMap.get(target);\n if (!mediaState) return;\n _this.seekTo({\n time: _this.getCurrentTime(),\n target: target,\n mediaState: mediaState\n });\n };\n this.metadataCallbackMap.set(target, onLoadedMetadata);\n target.addEventListener(\"loadedmetadata\", onLoadedMetadata, {\n once: true\n });\n };\n _proto.getMediaStateFromMutation = function getMediaStateFromMutation(param) {\n var target = param.target, timeOffset = param.timeOffset, mutation = param.mutation;\n var lastState = this.mediaMap.get(target);\n var type = mutation.type, playbackRate = mutation.playbackRate, currentTime = mutation.currentTime, muted = mutation.muted, volume = mutation.volume, loop = mutation.loop;\n var isPlaying = type === MediaInteractions.Play || type !== MediaInteractions.Pause && ((lastState == null ? void 0 : lastState.isPlaying) || target.getAttribute(\"autoplay\") !== null);\n var _ref, _ref1, _ref2, _ref3, _ref4;\n var mediaState = {\n isPlaying: isPlaying,\n currentTimeAtLastInteraction: (_ref = currentTime != null ? currentTime : lastState == null ? void 0 : lastState.currentTimeAtLastInteraction) != null ? _ref : 0,\n lastInteractionTimeOffset: timeOffset,\n playbackRate: (_ref1 = playbackRate != null ? playbackRate : lastState == null ? void 0 : lastState.playbackRate) != null ? _ref1 : 1,\n volume: (_ref2 = volume != null ? volume : lastState == null ? void 0 : lastState.volume) != null ? _ref2 : 1,\n muted: (_ref3 = muted != null ? muted : lastState == null ? void 0 : lastState.muted) != null ? _ref3 : target.getAttribute(\"muted\") === null,\n loop: (_ref4 = loop != null ? loop : lastState == null ? void 0 : lastState.loop) != null ? _ref4 : target.getAttribute(\"loop\") === null\n };\n return mediaState;\n };\n _proto.syncTargetWithState = function syncTargetWithState(target) {\n var mediaState = this.mediaMap.get(target);\n if (!mediaState) return;\n var muted = mediaState.muted, loop = mediaState.loop, volume = mediaState.volume, isPlaying = mediaState.isPlaying;\n var playerIsPaused = this.service.state.matches(\"paused\");\n var playbackRate = mediaState.playbackRate * this.speedService.state.context.timer.speed;\n try {\n this.seekTo({\n time: this.getCurrentTime(),\n target: target,\n mediaState: mediaState\n });\n if (target.volume !== volume) {\n target.volume = volume;\n }\n target.muted = muted;\n target.loop = loop;\n if (target.playbackRate !== playbackRate) {\n target.playbackRate = playbackRate;\n }\n if (isPlaying && !playerIsPaused) {\n void target.play();\n } else {\n target.pause();\n }\n } catch (error) {\n this.warn(// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/restrict-template-expressions\n \"Failed to replay media interactions: \" + (error.message || error));\n }\n };\n _proto.addMediaElements = function addMediaElements(node2, timeOffset, mirror2) {\n if (![\n \"AUDIO\",\n \"VIDEO\"\n ].includes(node2.nodeName)) return;\n var target = node2;\n var serializedNode = mirror2.getMeta(target);\n if (!serializedNode || !(\"attributes\" in serializedNode)) return;\n var playerIsPaused = this.service.state.matches(\"paused\");\n var mediaAttributes = serializedNode.attributes;\n var isPlaying = false;\n if (mediaAttributes.rr_mediaState) {\n isPlaying = mediaAttributes.rr_mediaState === \"played\";\n } else {\n isPlaying = target.getAttribute(\"autoplay\") !== null;\n }\n if (isPlaying && playerIsPaused) target.pause();\n var playbackRate = 1;\n if (typeof mediaAttributes.rr_mediaPlaybackRate === \"number\") {\n playbackRate = mediaAttributes.rr_mediaPlaybackRate;\n }\n var muted = false;\n if (typeof mediaAttributes.rr_mediaMuted === \"boolean\") {\n muted = mediaAttributes.rr_mediaMuted;\n } else {\n muted = target.getAttribute(\"muted\") !== null;\n }\n var loop = false;\n if (typeof mediaAttributes.rr_mediaLoop === \"boolean\") {\n loop = mediaAttributes.rr_mediaLoop;\n } else {\n loop = target.getAttribute(\"loop\") !== null;\n }\n var volume = 1;\n if (typeof mediaAttributes.rr_mediaVolume === \"number\") {\n volume = mediaAttributes.rr_mediaVolume;\n }\n var currentTimeAtLastInteraction = 0;\n if (typeof mediaAttributes.rr_mediaCurrentTime === \"number\") {\n currentTimeAtLastInteraction = mediaAttributes.rr_mediaCurrentTime;\n }\n this.mediaMap.set(target, {\n isPlaying: isPlaying,\n currentTimeAtLastInteraction: currentTimeAtLastInteraction,\n lastInteractionTimeOffset: timeOffset,\n playbackRate: playbackRate,\n volume: volume,\n muted: muted,\n loop: loop\n });\n this.syncTargetWithState(target);\n };\n _proto.mediaMutation = function mediaMutation(param) {\n var target = param.target, timeOffset = param.timeOffset, mutation = param.mutation;\n this.mediaMap.set(target, this.getMediaStateFromMutation({\n target: target,\n timeOffset: timeOffset,\n mutation: mutation\n }));\n this.syncTargetWithState(target);\n };\n _proto.isSupportedMediaElement = function isSupportedMediaElement(node2) {\n return [\n \"AUDIO\",\n \"VIDEO\"\n ].includes(node2.nodeName);\n };\n _proto.reset = function reset() {\n this.mediaMap.clear();\n };\n return MediaManager;\n}();\nfunction applyDialogToTopLevel(node2, attributeMutation) {\n if (node2.nodeName !== \"DIALOG\" || _instanceof(node2, BaseRRNode)) return;\n var dialog = node2;\n var oldIsOpen = dialog.open;\n var oldIsModalState = oldIsOpen && dialog.matches(\"dialog:modal\");\n var rrOpenMode = dialog.getAttribute(\"rr_open_mode\");\n var newIsOpen = typeof (attributeMutation == null ? void 0 : attributeMutation.attributes.open) === \"string\" || typeof dialog.getAttribute(\"open\") === \"string\";\n var newIsModalState = rrOpenMode === \"modal\";\n var newIsNonModalState = rrOpenMode === \"non-modal\";\n var modalStateChanged = oldIsModalState && newIsNonModalState || !oldIsModalState && newIsModalState;\n if (oldIsOpen && !modalStateChanged) return;\n if (!dialog.isConnected) {\n console.warn(\"dialog is not attached to the dom\", dialog);\n return;\n }\n if (oldIsOpen) dialog.close();\n if (!newIsOpen) return;\n if (newIsModalState) dialog.showModal();\n else dialog.show();\n}\nfunction removeDialogFromTopLevel(node2, attributeMutation) {\n if (node2.nodeName !== \"DIALOG\" || _instanceof(node2, BaseRRNode)) return;\n var dialog = node2;\n if (!dialog.isConnected) {\n console.warn(\"dialog is not attached to the dom\", dialog);\n return;\n }\n if (attributeMutation.attributes.open === null) {\n dialog.removeAttribute(\"open\");\n dialog.removeAttribute(\"rr_open_mode\");\n }\n}\nvar SKIP_TIME_INTERVAL = 5 * 1e3;\nvar mitt = mitt$1 || mittProxy;\nvar REPLAY_CONSOLE_PREFIX = \"[replayer]\";\nvar defaultMouseTailConfig = {\n duration: 500,\n lineCap: \"round\",\n lineWidth: 3,\n strokeStyle: \"red\"\n};\nfunction indicatesTouchDevice(e2) {\n return e2.type == EventType.IncrementalSnapshot && (e2.data.source == IncrementalSource.TouchMove || e2.data.source == IncrementalSource.MouseInteraction && e2.data.type == MouseInteractions.TouchStart);\n}\nvar Replayer = /*#__PURE__*/ function() {\n function Replayer(events, config) {\n var _this = this;\n __publicField(this, \"wrapper\");\n __publicField(this, \"iframe\");\n __publicField(this, \"service\");\n __publicField(this, \"speedService\");\n __publicField(this, \"config\");\n // In the fast-forward process, if the virtual-dom optimization is used, this flag value is true.\n __publicField(this, \"usingVirtualDom\", false);\n __publicField(this, \"virtualDom\", new RRDocument());\n __publicField(this, \"mouse\");\n __publicField(this, \"mouseTail\", null);\n __publicField(this, \"tailPositions\", []);\n __publicField(this, \"emitter\", mitt());\n __publicField(this, \"nextUserInteractionEvent\");\n __publicField(this, \"legacy_missingNodeRetryMap\", {});\n // The replayer uses the cache to speed up replay and scrubbing.\n __publicField(this, \"cache\", createCache());\n __publicField(this, \"imageMap\", /* @__PURE__ */ new Map());\n __publicField(this, \"canvasEventMap\", /* @__PURE__ */ new Map());\n __publicField(this, \"mirror\", createMirror$2());\n // Used to track StyleSheetObjects adopted on multiple document hosts.\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n // Used to track video & audio elements, and keep them in sync with general playback.\n __publicField(this, \"mediaManager\");\n __publicField(this, \"firstFullSnapshot\", null);\n __publicField(this, \"newDocumentQueue\", []);\n __publicField(this, \"mousePos\", null);\n __publicField(this, \"touchActive\", null);\n __publicField(this, \"lastMouseDownEvent\", null);\n // Keep the rootNode of the last hovered element. So when hovering a new element, we can remove the last hovered element's :hover style.\n __publicField(this, \"lastHoveredRootNode\");\n // In the fast-forward mode, only the last selection data needs to be applied.\n __publicField(this, \"lastSelectionData\", null);\n // In the fast-forward mode using VirtualDom optimization, all stylesheetRule, and styleDeclaration events on constructed StyleSheets will be delayed to get applied until the flush stage.\n __publicField(this, \"constructedStyleMutations\", []);\n // Similar to the reason for constructedStyleMutations.\n __publicField(this, \"adoptedStyleSheets\", []);\n __publicField(this, \"handleResize\", function(dimension) {\n _this.iframe.style.display = \"inherit\";\n for(var _i = 0, _iter = [\n _this.mouseTail,\n _this.iframe\n ]; _i < _iter.length; _i++){\n var el = _iter[_i];\n if (!el) {\n continue;\n }\n el.setAttribute(\"width\", String(dimension.width));\n el.setAttribute(\"height\", String(dimension.height));\n }\n });\n __publicField(this, \"applyEventsSynchronously\", function(events) {\n for(var _iterator = _create_for_of_iterator_helper_loose(events), _step; !(_step = _iterator()).done;){\n var event = _step.value;\n switch(event.type){\n case EventType.DomContentLoaded:\n case EventType.Load:\n case EventType.Custom:\n continue;\n case EventType.FullSnapshot:\n case EventType.Meta:\n case EventType.Plugin:\n case EventType.IncrementalSnapshot:\n break;\n }\n var castFn = _this.getCastFn(event, true);\n castFn();\n }\n });\n __publicField(this, \"getCastFn\", function(event, isSync) {\n if (isSync === void 0) isSync = false;\n var castFn;\n switch(event.type){\n case EventType.DomContentLoaded:\n case EventType.Load:\n break;\n case EventType.Custom:\n castFn = function() {\n _this.emitter.emit(ReplayerEvents.CustomEvent, event);\n };\n break;\n case EventType.Meta:\n castFn = function() {\n return _this.emitter.emit(ReplayerEvents.Resize, {\n width: event.data.width,\n height: event.data.height\n });\n };\n break;\n case EventType.FullSnapshot:\n castFn = function() {\n var _a2;\n if (_this.firstFullSnapshot) {\n if (_this.firstFullSnapshot === event) {\n _this.firstFullSnapshot = true;\n return;\n }\n } else {\n _this.firstFullSnapshot = true;\n }\n _this.mediaManager.reset();\n _this.styleMirror.reset();\n _this.rebuildFullSnapshot(event, isSync);\n (_a2 = _this.iframe.contentWindow) == null ? void 0 : _a2.scrollTo(event.data.initialOffset);\n };\n break;\n case EventType.IncrementalSnapshot:\n castFn = function() {\n _this.applyIncremental(event, isSync);\n if (isSync) {\n return;\n }\n if (event === _this.nextUserInteractionEvent) {\n _this.nextUserInteractionEvent = null;\n _this.backToNormal();\n }\n if (_this.config.skipInactive && !_this.nextUserInteractionEvent) {\n for(var _iterator = _create_for_of_iterator_helper_loose(_this.service.state.context.events), _step; !(_step = _iterator()).done;){\n var _event = _step.value;\n if (_event.timestamp <= event.timestamp) {\n continue;\n }\n if (_this.isUserInteraction(_event)) {\n if (// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n _event.delay - event.delay > _this.config.inactivePeriodThreshold * _this.speedService.state.context.timer.speed) {\n _this.nextUserInteractionEvent = _event;\n }\n break;\n }\n }\n if (_this.nextUserInteractionEvent) {\n var skipTime = // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n _this.nextUserInteractionEvent.delay - event.delay;\n var payload = {\n speed: Math.min(Math.round(skipTime / SKIP_TIME_INTERVAL), _this.config.maxSpeed)\n };\n _this.speedService.send({\n type: \"FAST_FORWARD\",\n payload: payload\n });\n _this.emitter.emit(ReplayerEvents.SkipStart, payload);\n }\n }\n };\n break;\n }\n var wrappedCastFn = function() {\n if (castFn) {\n castFn();\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(_this.config.plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.handler) plugin3.handler(event, isSync, {\n replayer: _this\n });\n }\n _this.service.send({\n type: \"CAST_EVENT\",\n payload: {\n event: event\n }\n });\n var last_index = _this.service.state.context.events.length - 1;\n if (!_this.config.liveMode && event === _this.service.state.context.events[last_index]) {\n var finish = function() {\n if (last_index < _this.service.state.context.events.length - 1) {\n return;\n }\n _this.backToNormal();\n _this.service.send(\"END\");\n _this.emitter.emit(ReplayerEvents.Finish);\n };\n var finish_buffer = 50;\n if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.MouseMove && event.data.positions.length) {\n finish_buffer += Math.max(0, -event.data.positions[0].timeOffset);\n }\n setTimeout(finish, finish_buffer);\n }\n _this.emitter.emit(ReplayerEvents.EventCast, event);\n };\n return wrappedCastFn;\n });\n if (!(config == null ? void 0 : config.liveMode) && events.length < 2) {\n throw new Error(\"Replayer need at least 2 events.\");\n }\n var defaultConfig = {\n speed: 1,\n maxSpeed: 360,\n root: document.body,\n loadTimeout: 0,\n skipInactive: false,\n inactivePeriodThreshold: 10 * 1e3,\n showWarning: true,\n showDebug: false,\n blockClass: \"rr-block\",\n liveMode: false,\n insertStyleRules: [],\n triggerFocus: true,\n UNSAFE_replayCanvas: false,\n pauseAnimation: true,\n mouseTail: defaultMouseTailConfig,\n useVirtualDom: true,\n // Virtual-dom optimization is enabled by default.\n logger: console\n };\n this.config = Object.assign({}, defaultConfig, config);\n this.handleResize = this.handleResize.bind(this);\n this.getCastFn = this.getCastFn.bind(this);\n this.applyEventsSynchronously = this.applyEventsSynchronously.bind(this);\n this.emitter.on(ReplayerEvents.Resize, this.handleResize);\n this.setupDom();\n for(var _iterator = _create_for_of_iterator_helper_loose(this.config.plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.getMirror) plugin3.getMirror({\n nodeMirror: this.mirror\n });\n }\n this.emitter.on(ReplayerEvents.Flush, function() {\n if (_this.usingVirtualDom) {\n var replayerHandler = {\n mirror: _this.mirror,\n applyCanvas: function(canvasEvent, canvasMutationData, target) {\n void canvasMutation({\n event: canvasEvent,\n mutation: canvasMutationData,\n target: target,\n imageMap: _this.imageMap,\n canvasEventMap: _this.canvasEventMap,\n errorHandler: _this.warnCanvasMutationFailed.bind(_this)\n });\n },\n applyInput: _this.applyInput.bind(_this),\n applyScroll: _this.applyScroll.bind(_this),\n applyStyleSheetMutation: function(data, styleSheet) {\n if (data.source === IncrementalSource.StyleSheetRule) _this.applyStyleSheetRule(data, styleSheet);\n else if (data.source === IncrementalSource.StyleDeclaration) _this.applyStyleDeclaration(data, styleSheet);\n },\n afterAppend: function(node2, id) {\n for(var _iterator = _create_for_of_iterator_helper_loose(_this.config.plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.onBuild) plugin3.onBuild(node2, {\n id: id,\n replayer: _this\n });\n }\n }\n };\n if (_this.iframe.contentDocument) try {\n diff(_this.iframe.contentDocument, _this.virtualDom, replayerHandler, _this.virtualDom.mirror);\n } catch (e2) {\n console.warn(e2);\n }\n _this.virtualDom.destroyTree();\n _this.usingVirtualDom = false;\n if (Object.keys(_this.legacy_missingNodeRetryMap).length) {\n for(var key in _this.legacy_missingNodeRetryMap){\n try {\n var value = _this.legacy_missingNodeRetryMap[key];\n var realNode = createOrGetNode(value.node, _this.mirror, _this.virtualDom.mirror);\n diff(realNode, value.node, replayerHandler, _this.virtualDom.mirror);\n value.node = realNode;\n } catch (error) {\n _this.warn(error);\n }\n }\n }\n _this.constructedStyleMutations.forEach(function(data) {\n _this.applyStyleSheetMutation(data);\n });\n _this.constructedStyleMutations = [];\n _this.adoptedStyleSheets.forEach(function(data) {\n _this.applyAdoptedStyleSheet(data);\n });\n _this.adoptedStyleSheets = [];\n }\n if (_this.mousePos) {\n _this.moveAndHover(_this.mousePos.x, _this.mousePos.y, _this.mousePos.id, true, _this.mousePos.debugData);\n _this.mousePos = null;\n }\n if (_this.touchActive === true) {\n _this.mouse.classList.add(\"touch-active\");\n } else if (_this.touchActive === false) {\n _this.mouse.classList.remove(\"touch-active\");\n }\n _this.touchActive = null;\n if (_this.lastMouseDownEvent) {\n var _this_lastMouseDownEvent = _this.lastMouseDownEvent, target = _this_lastMouseDownEvent[0], event = _this_lastMouseDownEvent[1];\n target.dispatchEvent(event);\n }\n _this.lastMouseDownEvent = null;\n if (_this.lastSelectionData) {\n _this.applySelection(_this.lastSelectionData);\n _this.lastSelectionData = null;\n }\n });\n this.emitter.on(ReplayerEvents.PlayBack, function() {\n _this.firstFullSnapshot = null;\n _this.mirror.reset();\n _this.styleMirror.reset();\n _this.mediaManager.reset();\n });\n var timer = new Timer([], {\n speed: this.config.speed\n });\n this.service = createPlayerService({\n events: events.map(function(e2) {\n if (config && config.unpackFn) {\n return config.unpackFn(e2);\n }\n return e2;\n }).sort(function(a1, a2) {\n return a1.timestamp - a2.timestamp;\n }),\n timer: timer,\n timeOffset: 0,\n baselineTime: 0,\n lastPlayedEvent: null\n }, {\n getCastFn: this.getCastFn,\n applyEventsSynchronously: this.applyEventsSynchronously,\n emitter: this.emitter\n });\n this.service.start();\n this.service.subscribe(function(state) {\n _this.emitter.emit(ReplayerEvents.StateChange, {\n player: state\n });\n });\n this.speedService = createSpeedService({\n normalSpeed: -1,\n timer: timer\n });\n this.speedService.start();\n this.speedService.subscribe(function(state) {\n _this.emitter.emit(ReplayerEvents.StateChange, {\n speed: state\n });\n });\n this.mediaManager = new MediaManager({\n warn: this.warn.bind(this),\n service: this.service,\n speedService: this.speedService,\n emitter: this.emitter,\n getCurrentTime: this.getCurrentTime.bind(this)\n });\n var firstMeta = this.service.state.context.events.find(function(e2) {\n return e2.type === EventType.Meta;\n });\n var firstFullsnapshot = this.service.state.context.events.find(function(e2) {\n return e2.type === EventType.FullSnapshot;\n });\n if (firstMeta) {\n var _firstMeta_data = firstMeta.data, width = _firstMeta_data.width, height = _firstMeta_data.height;\n setTimeout(function() {\n _this.emitter.emit(ReplayerEvents.Resize, {\n width: width,\n height: height\n });\n }, 0);\n }\n if (firstFullsnapshot) {\n setTimeout(function() {\n var _a2;\n if (_this.firstFullSnapshot) {\n return;\n }\n _this.firstFullSnapshot = firstFullsnapshot;\n _this.rebuildFullSnapshot(firstFullsnapshot);\n (_a2 = _this.iframe.contentWindow) == null ? void 0 : _a2.scrollTo(firstFullsnapshot.data.initialOffset);\n }, 1);\n }\n if (this.service.state.context.events.find(indicatesTouchDevice)) {\n this.mouse.classList.add(\"touch-device\");\n }\n }\n var _proto = Replayer.prototype;\n _proto.on = function on(event, handler) {\n this.emitter.on(event, handler);\n return this;\n };\n _proto.off = function off(event, handler) {\n this.emitter.off(event, handler);\n return this;\n };\n _proto.setConfig = function setConfig(config) {\n var _this = this;\n Object.keys(config).forEach(function(key) {\n config[key];\n _this.config[key] = config[key];\n });\n if (!this.config.skipInactive) {\n this.backToNormal();\n }\n if (typeof config.speed !== \"undefined\") {\n this.speedService.send({\n type: \"SET_SPEED\",\n payload: {\n speed: config.speed\n }\n });\n }\n if (typeof config.mouseTail !== \"undefined\") {\n if (config.mouseTail === false) {\n if (this.mouseTail) {\n this.mouseTail.style.display = \"none\";\n }\n } else {\n if (!this.mouseTail) {\n this.mouseTail = document.createElement(\"canvas\");\n this.mouseTail.width = Number.parseFloat(this.iframe.width);\n this.mouseTail.height = Number.parseFloat(this.iframe.height);\n this.mouseTail.classList.add(\"replayer-mouse-tail\");\n this.wrapper.insertBefore(this.mouseTail, this.iframe);\n }\n this.mouseTail.style.display = \"inherit\";\n }\n }\n };\n _proto.getMetaData = function getMetaData() {\n var firstEvent = this.service.state.context.events[0];\n var lastEvent = this.service.state.context.events[this.service.state.context.events.length - 1];\n return {\n startTime: firstEvent.timestamp,\n endTime: lastEvent.timestamp,\n totalTime: lastEvent.timestamp - firstEvent.timestamp\n };\n };\n /**\n * Get the actual time offset the player is at now compared to the first event.\n */ _proto.getCurrentTime = function getCurrentTime() {\n return this.timer.timeOffset + this.getTimeOffset();\n };\n /**\n * Get the time offset the player is at now compared to the first event, but without regard for the timer.\n */ _proto.getTimeOffset = function getTimeOffset() {\n var _this_service_state_context = this.service.state.context, baselineTime = _this_service_state_context.baselineTime, events = _this_service_state_context.events;\n return baselineTime - events[0].timestamp;\n };\n _proto.getMirror = function getMirror() {\n return this.mirror;\n };\n /**\n * This API was designed to be used as play at any time offset.\n * Since we minimized the data collected from recorder, we do not\n * have the ability of undo an event.\n * So the implementation of play at any time offset will always iterate\n * all of the events, cast event before the offset synchronously\n * and cast event after the offset asynchronously with timer.\n * @param timeOffset - number\n */ _proto.play = function play(timeOffset) {\n if (timeOffset === void 0) timeOffset = 0;\n var _a2, _b;\n if (this.service.state.matches(\"paused\")) {\n this.service.send({\n type: \"PLAY\",\n payload: {\n timeOffset: timeOffset\n }\n });\n } else {\n this.service.send({\n type: \"PAUSE\"\n });\n this.service.send({\n type: \"PLAY\",\n payload: {\n timeOffset: timeOffset\n }\n });\n }\n (_b = (_a2 = this.iframe.contentDocument) == null ? void 0 : _a2.getElementsByTagName(\"html\")[0]) == null ? void 0 : _b.classList.remove(\"rrweb-paused\");\n this.emitter.emit(ReplayerEvents.Start);\n };\n _proto.pause = function pause(timeOffset) {\n var _a2, _b;\n if (timeOffset === void 0 && this.service.state.matches(\"playing\")) {\n this.service.send({\n type: \"PAUSE\"\n });\n }\n if (typeof timeOffset === \"number\") {\n this.play(timeOffset);\n this.service.send({\n type: \"PAUSE\"\n });\n }\n (_b = (_a2 = this.iframe.contentDocument) == null ? void 0 : _a2.getElementsByTagName(\"html\")[0]) == null ? void 0 : _b.classList.add(\"rrweb-paused\");\n this.emitter.emit(ReplayerEvents.Pause);\n };\n _proto.resume = function resume(timeOffset) {\n if (timeOffset === void 0) timeOffset = 0;\n this.warn(\"The 'resume' was deprecated in 1.0. Please use 'play' method which has the same interface.\");\n this.play(timeOffset);\n this.emitter.emit(ReplayerEvents.Resume);\n };\n /**\n * Totally destroy this replayer and please be careful that this operation is irreversible.\n * Memory occupation can be released by removing all references to this replayer.\n */ _proto.destroy = function destroy() {\n this.pause();\n this.mirror.reset();\n this.styleMirror.reset();\n this.mediaManager.reset();\n this.config.root.removeChild(this.wrapper);\n this.emitter.emit(ReplayerEvents.Destroy);\n };\n _proto.startLive = function startLive(baselineTime) {\n this.service.send({\n type: \"TO_LIVE\",\n payload: {\n baselineTime: baselineTime\n }\n });\n };\n _proto.addEvent = function addEvent(rawEvent) {\n var _this = this;\n var event = this.config.unpackFn ? this.config.unpackFn(rawEvent) : rawEvent;\n if (indicatesTouchDevice(event)) {\n this.mouse.classList.add(\"touch-device\");\n }\n void Promise.resolve().then(function() {\n return _this.service.send({\n type: \"ADD_EVENT\",\n payload: {\n event: event\n }\n });\n });\n };\n _proto.enableInteract = function enableInteract() {\n this.iframe.setAttribute(\"scrolling\", \"auto\");\n this.iframe.style.pointerEvents = \"auto\";\n };\n _proto.disableInteract = function disableInteract() {\n this.iframe.setAttribute(\"scrolling\", \"no\");\n this.iframe.style.pointerEvents = \"none\";\n };\n /**\n * Empties the replayer's cache and reclaims memory.\n * The replayer will use this cache to speed up the playback.\n */ _proto.resetCache = function resetCache() {\n this.cache = createCache();\n };\n _proto.setupDom = function setupDom() {\n this.wrapper = document.createElement(\"div\");\n this.wrapper.classList.add(\"replayer-wrapper\");\n this.config.root.appendChild(this.wrapper);\n this.mouse = document.createElement(\"div\");\n this.mouse.classList.add(\"replayer-mouse\");\n this.wrapper.appendChild(this.mouse);\n if (this.config.mouseTail !== false) {\n this.mouseTail = document.createElement(\"canvas\");\n this.mouseTail.classList.add(\"replayer-mouse-tail\");\n this.mouseTail.style.display = \"inherit\";\n this.wrapper.appendChild(this.mouseTail);\n }\n this.iframe = document.createElement(\"iframe\");\n var attributes = [\n \"allow-same-origin\"\n ];\n if (this.config.UNSAFE_replayCanvas) {\n attributes.push(\"allow-scripts\");\n }\n this.iframe.style.display = \"none\";\n this.iframe.setAttribute(\"sandbox\", attributes.join(\" \"));\n this.disableInteract();\n this.wrapper.appendChild(this.iframe);\n if (this.iframe.contentWindow && this.iframe.contentDocument) {\n polyfill(this.iframe.contentWindow, this.iframe.contentDocument);\n polyfill$1(this.iframe.contentWindow);\n }\n };\n _proto.rebuildFullSnapshot = function rebuildFullSnapshot(event, isSync) {\n var _this, _loop = function() {\n var _step_value = _step.value, mutationInQueue = _step_value.mutationInQueue, builtNode = _step_value.builtNode;\n _this.attachDocumentToIframe(mutationInQueue, builtNode);\n _this.newDocumentQueue = _this.newDocumentQueue.filter(function(m) {\n return m !== mutationInQueue;\n });\n };\n var _this1 = this;\n if (isSync === void 0) isSync = false;\n if (!this.iframe.contentDocument) {\n return this.warn(\"Looks like your replayer has been destroyed.\");\n }\n if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n this.warn(\"Found unresolved missing node map\", this.legacy_missingNodeRetryMap);\n }\n this.legacy_missingNodeRetryMap = {};\n var collectedIframes = [];\n var collectedDialogs = /* @__PURE__ */ new Set();\n var afterAppend = function(builtNode, id) {\n if (builtNode.nodeName === \"DIALOG\") collectedDialogs.add(builtNode);\n _this1.collectIframeAndAttachDocument(collectedIframes, builtNode);\n if (_this1.mediaManager.isSupportedMediaElement(builtNode)) {\n var events = _this1.service.state.context.events;\n _this1.mediaManager.addMediaElements(builtNode, event.timestamp - events[0].timestamp, _this1.mirror);\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(_this1.config.plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.onBuild) plugin3.onBuild(builtNode, {\n id: id,\n replayer: _this1\n });\n }\n };\n if (this.usingVirtualDom) {\n this.virtualDom.destroyTree();\n this.usingVirtualDom = false;\n }\n this.mirror.reset();\n rebuild(event.data.node, {\n doc: this.iframe.contentDocument,\n afterAppend: afterAppend,\n cache: this.cache,\n mirror: this.mirror\n });\n afterAppend(this.iframe.contentDocument, event.data.node.id);\n for(var _iterator = _create_for_of_iterator_helper_loose(collectedIframes), _step; !(_step = _iterator()).done;)_this = this, _loop();\n var _this_iframe_contentDocument = this.iframe.contentDocument, documentElement = _this_iframe_contentDocument.documentElement, head = _this_iframe_contentDocument.head;\n this.insertStyleRules(documentElement, head);\n collectedDialogs.forEach(function(d) {\n return applyDialogToTopLevel(d);\n });\n if (!this.service.state.matches(\"playing\")) {\n this.iframe.contentDocument.getElementsByTagName(\"html\")[0].classList.add(\"rrweb-paused\");\n }\n this.emitter.emit(ReplayerEvents.FullsnapshotRebuilded, event);\n if (!isSync) {\n this.waitForStylesheetLoad();\n }\n if (this.config.UNSAFE_replayCanvas) {\n void this.preloadAllImages();\n }\n };\n _proto.insertStyleRules = function insertStyleRules(documentElement, head) {\n var _a2;\n var injectStylesRules = rules(this.config.blockClass).concat(this.config.insertStyleRules);\n if (this.config.pauseAnimation) {\n injectStylesRules.push(\"html.rrweb-paused *, html.rrweb-paused *:before, html.rrweb-paused *:after { animation-play-state: paused !important; }\");\n }\n if (!injectStylesRules.length) {\n return;\n }\n if (this.usingVirtualDom) {\n var styleEl = this.virtualDom.createElement(\"style\");\n this.virtualDom.mirror.add(styleEl, getDefaultSN(styleEl, this.virtualDom.unserializedId));\n documentElement.insertBefore(styleEl, head);\n styleEl.rules.push({\n source: IncrementalSource.StyleSheetRule,\n adds: injectStylesRules.map(function(cssText, index2) {\n return {\n rule: cssText,\n index: index2\n };\n })\n });\n } else {\n var styleEl1 = document.createElement(\"style\");\n documentElement.insertBefore(styleEl1, head);\n for(var idx = 0; idx < injectStylesRules.length; idx++){\n (_a2 = styleEl1.sheet) == null ? void 0 : _a2.insertRule(injectStylesRules[idx], idx);\n }\n }\n };\n _proto.attachDocumentToIframe = function attachDocumentToIframe(mutation, iframeEl) {\n var _this, _loop = function() {\n var _step_value = _step.value, mutationInQueue = _step_value.mutationInQueue, builtNode = _step_value.builtNode;\n _this.attachDocumentToIframe(mutationInQueue, builtNode);\n _this.newDocumentQueue = _this.newDocumentQueue.filter(function(m) {\n return m !== mutationInQueue;\n });\n };\n var _this1 = this;\n var mirror2 = this.usingVirtualDom ? this.virtualDom.mirror : this.mirror;\n var collectedIframes = [];\n var collectedDialogs = /* @__PURE__ */ new Set();\n var afterAppend = function(builtNode, id) {\n if (builtNode.nodeName === \"DIALOG\") collectedDialogs.add(builtNode);\n _this1.collectIframeAndAttachDocument(collectedIframes, builtNode);\n var sn = mirror2.getMeta(builtNode);\n if ((sn == null ? void 0 : sn.type) === NodeType.Element && (sn == null ? void 0 : sn.tagName.toUpperCase()) === \"HTML\") {\n var _iframeEl_contentDocument = iframeEl.contentDocument, documentElement = _iframeEl_contentDocument.documentElement, head = _iframeEl_contentDocument.head;\n _this1.insertStyleRules(documentElement, head);\n }\n if (_this1.usingVirtualDom) return;\n for(var _iterator = _create_for_of_iterator_helper_loose(_this1.config.plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.onBuild) plugin3.onBuild(builtNode, {\n id: id,\n replayer: _this1\n });\n }\n };\n buildNodeWithSN(mutation.node, {\n doc: iframeEl.contentDocument,\n mirror: mirror2,\n hackCss: true,\n skipChild: false,\n afterAppend: afterAppend,\n cache: this.cache\n });\n afterAppend(iframeEl.contentDocument, mutation.node.id);\n for(var _iterator = _create_for_of_iterator_helper_loose(collectedIframes), _step; !(_step = _iterator()).done;)_this = this, _loop();\n collectedDialogs.forEach(function(d) {\n return applyDialogToTopLevel(d);\n });\n };\n _proto.collectIframeAndAttachDocument = function collectIframeAndAttachDocument(collected, builtNode) {\n var _this = this;\n if (isSerializedIframe(builtNode, this.mirror)) {\n var mutationInQueue = this.newDocumentQueue.find(function(m) {\n return m.parentId === _this.mirror.getId(builtNode);\n });\n if (mutationInQueue) {\n collected.push({\n mutationInQueue: mutationInQueue,\n builtNode: builtNode\n });\n }\n }\n };\n /**\n * pause when loading style sheet, resume when loaded all timeout exceed\n */ _proto.waitForStylesheetLoad = function waitForStylesheetLoad() {\n var _this = this;\n var _a2;\n var head = (_a2 = this.iframe.contentDocument) == null ? void 0 : _a2.head;\n if (head) {\n var unloadSheets = /* @__PURE__ */ new Set();\n var timer;\n var beforeLoadState = this.service.state;\n var stateHandler = function() {\n beforeLoadState = _this.service.state;\n };\n this.emitter.on(ReplayerEvents.Start, stateHandler);\n this.emitter.on(ReplayerEvents.Pause, stateHandler);\n var unsubscribe = function() {\n _this.emitter.off(ReplayerEvents.Start, stateHandler);\n _this.emitter.off(ReplayerEvents.Pause, stateHandler);\n };\n head.querySelectorAll('link[rel=\"stylesheet\"]').forEach(function(css) {\n if (!css.sheet) {\n unloadSheets.add(css);\n css.addEventListener(\"load\", function() {\n unloadSheets.delete(css);\n if (unloadSheets.size === 0 && timer !== -1) {\n if (beforeLoadState.matches(\"playing\")) {\n _this.play(_this.getCurrentTime());\n }\n _this.emitter.emit(ReplayerEvents.LoadStylesheetEnd);\n if (timer) {\n clearTimeout(timer);\n }\n unsubscribe();\n }\n });\n }\n });\n if (unloadSheets.size > 0) {\n this.service.send({\n type: \"PAUSE\"\n });\n this.emitter.emit(ReplayerEvents.LoadStylesheetStart);\n timer = setTimeout(function() {\n if (beforeLoadState.matches(\"playing\")) {\n _this.play(_this.getCurrentTime());\n }\n timer = -1;\n unsubscribe();\n }, this.config.loadTimeout);\n }\n }\n };\n /**\n * pause when there are some canvas drawImage args need to be loaded\n */ _proto.preloadAllImages = function preloadAllImages() {\n var _this = this;\n return _async_to_generator(function() {\n var _loop, promises, _iterator, _step;\n return _ts_generator(this, function(_state) {\n _loop = function() {\n var event = _step.value;\n if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.CanvasMutation) {\n promises.push(_this.deserializeAndPreloadCanvasEvents(event.data, event));\n var commands = \"commands\" in event.data ? event.data.commands : [\n event.data\n ];\n commands.forEach(function(c2) {\n _this.preloadImages(c2, event);\n });\n }\n };\n promises = [];\n for(_iterator = _create_for_of_iterator_helper_loose(_this.service.state.context.events); !(_step = _iterator()).done;)_loop();\n return [\n 2,\n Promise.all(promises)\n ];\n });\n })();\n };\n _proto.preloadImages = function preloadImages(data, event) {\n if (data.property === \"drawImage\" && typeof data.args[0] === \"string\" && !this.imageMap.has(event)) {\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n var imgd = ctx == null ? void 0 : ctx.createImageData(canvas.width, canvas.height);\n ctx == null ? void 0 : ctx.putImageData(imgd, 0, 0);\n }\n };\n _proto.deserializeAndPreloadCanvasEvents = function deserializeAndPreloadCanvasEvents(data, event) {\n var _this = this;\n return _async_to_generator(function() {\n var status, commands, args;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (!!_this.canvasEventMap.has(event)) return [\n 3,\n 4\n ];\n status = {\n isUnchanged: true\n };\n if (!(\"commands\" in data)) return [\n 3,\n 2\n ];\n return [\n 4,\n Promise.all(data.commands.map(/*#__PURE__*/ _async_to_generator(function(c2) {\n var args;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n Promise.all(c2.args.map(deserializeArg(_this.imageMap, null, status)))\n ];\n case 1:\n args = _state.sent();\n return [\n 2,\n _extends({}, c2, {\n args: args\n })\n ];\n }\n });\n })))\n ];\n case 1:\n commands = _state.sent();\n if (status.isUnchanged === false) _this.canvasEventMap.set(event, _extends({}, data, {\n commands: commands\n }));\n return [\n 3,\n 4\n ];\n case 2:\n return [\n 4,\n Promise.all(data.args.map(deserializeArg(_this.imageMap, null, status)))\n ];\n case 3:\n args = _state.sent();\n if (status.isUnchanged === false) _this.canvasEventMap.set(event, _extends({}, data, {\n args: args\n }));\n _state.label = 4;\n case 4:\n return [\n 2\n ];\n }\n });\n })();\n };\n _proto.applyIncremental = function applyIncremental(e2, isSync) {\n var _this = this;\n var _a2, _b, _c;\n var d = e2.data;\n switch(d.source){\n case IncrementalSource.Mutation:\n {\n try {\n this.applyMutation(d, isSync);\n } catch (error) {\n this.warn(\"Exception in mutation \" + (error.message || error), d);\n }\n break;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove:\n if (isSync) {\n var lastPosition = d.positions[d.positions.length - 1];\n this.mousePos = {\n x: lastPosition.x,\n y: lastPosition.y,\n id: lastPosition.id,\n debugData: d\n };\n } else {\n d.positions.forEach(function(p) {\n var action = {\n doAction: function() {\n _this.moveAndHover(p.x, p.y, p.id, isSync, d);\n },\n delay: p.timeOffset + e2.timestamp - _this.service.state.context.baselineTime\n };\n _this.timer.addAction(action);\n });\n this.timer.addAction({\n doAction: function doAction() {},\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n delay: e2.delay - ((_a2 = d.positions[0]) == null ? void 0 : _a2.timeOffset)\n });\n }\n break;\n case IncrementalSource.MouseInteraction:\n {\n if (d.id === -1) {\n break;\n }\n var event = new Event(toLowerCase(MouseInteractions[d.type]));\n var target = this.mirror.getNode(d.id);\n if (!target) {\n return this.debugNodeNotFound(d, d.id);\n }\n this.emitter.emit(ReplayerEvents.MouseInteraction, {\n type: d.type,\n target: target\n });\n var triggerFocus = this.config.triggerFocus;\n switch(d.type){\n case MouseInteractions.Blur:\n if (\"blur\" in target) {\n target.blur();\n }\n break;\n case MouseInteractions.Focus:\n if (triggerFocus && target.focus) {\n target.focus({\n preventScroll: true\n });\n }\n break;\n case MouseInteractions.Click:\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n if (isSync) {\n if (d.type === MouseInteractions.TouchStart) {\n this.touchActive = true;\n } else if (d.type === MouseInteractions.TouchEnd) {\n this.touchActive = false;\n }\n if (d.type === MouseInteractions.MouseDown) {\n this.lastMouseDownEvent = [\n target,\n event\n ];\n } else if (d.type === MouseInteractions.MouseUp) {\n this.lastMouseDownEvent = null;\n }\n this.mousePos = {\n x: d.x || 0,\n y: d.y || 0,\n id: d.id,\n debugData: d\n };\n } else {\n if (d.type === MouseInteractions.TouchStart) {\n this.tailPositions.length = 0;\n }\n this.moveAndHover(d.x || 0, d.y || 0, d.id, isSync, d);\n if (d.type === MouseInteractions.Click) {\n this.mouse.classList.remove(\"active\");\n void this.mouse.offsetWidth;\n this.mouse.classList.add(\"active\");\n } else if (d.type === MouseInteractions.TouchStart) {\n void this.mouse.offsetWidth;\n this.mouse.classList.add(\"touch-active\");\n } else if (d.type === MouseInteractions.TouchEnd) {\n this.mouse.classList.remove(\"touch-active\");\n } else {\n target.dispatchEvent(event);\n }\n }\n break;\n case MouseInteractions.TouchCancel:\n if (isSync) {\n this.touchActive = false;\n } else {\n this.mouse.classList.remove(\"touch-active\");\n }\n break;\n default:\n target.dispatchEvent(event);\n }\n break;\n }\n case IncrementalSource.Scroll:\n {\n if (d.id === -1) {\n break;\n }\n if (this.usingVirtualDom) {\n var target1 = this.virtualDom.mirror.getNode(d.id);\n if (!target1) {\n return this.debugNodeNotFound(d, d.id);\n }\n target1.scrollData = d;\n break;\n }\n this.applyScroll(d, isSync);\n break;\n }\n case IncrementalSource.ViewportResize:\n this.emitter.emit(ReplayerEvents.Resize, {\n width: d.width,\n height: d.height\n });\n break;\n case IncrementalSource.Input:\n {\n if (d.id === -1) {\n break;\n }\n if (this.usingVirtualDom) {\n var target2 = this.virtualDom.mirror.getNode(d.id);\n if (!target2) {\n return this.debugNodeNotFound(d, d.id);\n }\n target2.inputData = d;\n break;\n }\n this.applyInput(d);\n break;\n }\n case IncrementalSource.MediaInteraction:\n {\n var target3 = this.usingVirtualDom ? this.virtualDom.mirror.getNode(d.id) : this.mirror.getNode(d.id);\n if (!target3) {\n return this.debugNodeNotFound(d, d.id);\n }\n var mediaEl = target3;\n var events = this.service.state.context.events;\n this.mediaManager.mediaMutation({\n target: mediaEl,\n timeOffset: e2.timestamp - events[0].timestamp,\n mutation: d\n });\n break;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration:\n {\n if (this.usingVirtualDom) {\n if (d.styleId) this.constructedStyleMutations.push(d);\n else if (d.id) (_b = this.virtualDom.mirror.getNode(d.id)) == null ? void 0 : _b.rules.push(d);\n } else this.applyStyleSheetMutation(d);\n break;\n }\n case IncrementalSource.CanvasMutation:\n {\n if (!this.config.UNSAFE_replayCanvas) {\n return;\n }\n if (this.usingVirtualDom) {\n var target4 = this.virtualDom.mirror.getNode(d.id);\n if (!target4) {\n return this.debugNodeNotFound(d, d.id);\n }\n target4.canvasMutations.push({\n event: e2,\n mutation: d\n });\n } else {\n var target5 = this.mirror.getNode(d.id);\n if (!target5) {\n return this.debugNodeNotFound(d, d.id);\n }\n void canvasMutation({\n event: e2,\n mutation: d,\n target: target5,\n imageMap: this.imageMap,\n canvasEventMap: this.canvasEventMap,\n errorHandler: this.warnCanvasMutationFailed.bind(this)\n });\n }\n break;\n }\n case IncrementalSource.Font:\n {\n try {\n var fontFace = new FontFace(d.family, d.buffer ? new Uint8Array(JSON.parse(d.fontSource)) : d.fontSource, d.descriptors);\n (_c = this.iframe.contentDocument) == null ? void 0 : _c.fonts.add(fontFace);\n } catch (error) {\n this.warn(error);\n }\n break;\n }\n case IncrementalSource.Selection:\n {\n if (isSync) {\n this.lastSelectionData = d;\n break;\n }\n this.applySelection(d);\n break;\n }\n case IncrementalSource.AdoptedStyleSheet:\n {\n if (this.usingVirtualDom) this.adoptedStyleSheets.push(d);\n else this.applyAdoptedStyleSheet(d);\n break;\n }\n }\n };\n /**\n * Apply the mutation to the virtual dom or the real dom.\n * @param d - The mutation data.\n * @param isSync - Whether the mutation should be applied synchronously (while fast-forwarding).\n */ _proto.applyMutation = function applyMutation(d, isSync) {\n var _this = this;\n if (this.config.useVirtualDom && !this.usingVirtualDom && isSync) {\n this.usingVirtualDom = true;\n buildFromDom(this.iframe.contentDocument, this.mirror, this.virtualDom);\n if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n for(var key in this.legacy_missingNodeRetryMap){\n try {\n var value = this.legacy_missingNodeRetryMap[key];\n var virtualNode = buildFromNode(value.node, this.virtualDom, this.mirror);\n if (virtualNode) value.node = virtualNode;\n } catch (error) {\n this.warn(error);\n }\n }\n }\n }\n var mirror2 = this.usingVirtualDom ? this.virtualDom.mirror : this.mirror;\n d.removes = d.removes.filter(function(mutation) {\n if (!mirror2.getNode(mutation.id)) {\n _this.warnNodeNotFound(d, mutation.id);\n return false;\n }\n return true;\n });\n d.removes.forEach(function(mutation) {\n var _a2;\n var target = mirror2.getNode(mutation.id);\n if (!target) {\n return;\n }\n var parent = mirror2.getNode(mutation.parentId);\n if (!parent) {\n return _this.warnNodeNotFound(d, mutation.parentId);\n }\n if (mutation.isShadow && hasShadowRoot(parent)) {\n parent = parent.shadowRoot;\n }\n mirror2.removeNodeFromMap(target);\n if (parent) try {\n parent.removeChild(target);\n if (_this.usingVirtualDom && target.nodeName === \"#text\" && parent.nodeName === \"STYLE\" && ((_a2 = parent.rules) == null ? void 0 : _a2.length) > 0) parent.rules = [];\n } catch (error) {\n if (_instanceof(error, DOMException)) {\n _this.warn(\"parent could not remove child in mutation\", parent, target, d);\n } else {\n throw error;\n }\n }\n });\n var legacy_missingNodeMap = _extends({}, this.legacy_missingNodeRetryMap);\n var queue = [];\n var nextNotInDOM = function(mutation) {\n var next = null;\n if (mutation.nextId) {\n next = mirror2.getNode(mutation.nextId);\n }\n if (mutation.nextId !== null && mutation.nextId !== void 0 && mutation.nextId !== -1 && !next) {\n return true;\n }\n return false;\n };\n var appendNode = function(mutation) {\n var _a2, _b;\n if (!_this.iframe.contentDocument) {\n return _this.warn(\"Looks like your replayer has been destroyed.\");\n }\n var parent = mirror2.getNode(mutation.parentId);\n if (!parent) {\n if (mutation.node.type === NodeType.Document) {\n return _this.newDocumentQueue.push(mutation);\n }\n return queue.push(mutation);\n }\n if (mutation.node.isShadow) {\n if (!hasShadowRoot(parent)) {\n parent.attachShadow({\n mode: \"open\"\n });\n parent = parent.shadowRoot;\n } else parent = parent.shadowRoot;\n }\n var previous = null;\n var next = null;\n if (mutation.previousId) {\n previous = mirror2.getNode(mutation.previousId);\n }\n if (mutation.nextId) {\n next = mirror2.getNode(mutation.nextId);\n }\n if (nextNotInDOM(mutation)) {\n return queue.push(mutation);\n }\n if (mutation.node.rootId && !mirror2.getNode(mutation.node.rootId)) {\n return;\n }\n var targetDoc = mutation.node.rootId ? mirror2.getNode(mutation.node.rootId) : _this.usingVirtualDom ? _this.virtualDom : _this.iframe.contentDocument;\n if (isSerializedIframe(parent, mirror2)) {\n _this.attachDocumentToIframe(mutation, parent);\n return;\n }\n var afterAppend = function(node2, id) {\n if (_this.usingVirtualDom) return;\n applyDialogToTopLevel(node2);\n for(var _iterator = _create_for_of_iterator_helper_loose(_this.config.plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.onBuild) plugin3.onBuild(node2, {\n id: id,\n replayer: _this\n });\n }\n };\n var target = buildNodeWithSN(mutation.node, {\n doc: targetDoc,\n // can be Document or RRDocument\n mirror: mirror2,\n // can be this.mirror or virtualDom.mirror\n skipChild: true,\n hackCss: true,\n cache: _this.cache,\n /**\n * caveat: `afterAppend` only gets called on child nodes of target\n * we have to call it again below when this target was added to the DOM\n */ afterAppend: afterAppend\n });\n if (mutation.previousId === -1 || mutation.nextId === -1) {\n legacy_missingNodeMap[mutation.node.id] = {\n node: target,\n mutation: mutation\n };\n return;\n }\n var parentSn = mirror2.getMeta(parent);\n if (parentSn && parentSn.type === NodeType.Element && mutation.node.type === NodeType.Text) {\n var prospectiveSiblings = Array.isArray(parent.childNodes) ? parent.childNodes : Array.from(parent.childNodes);\n if (parentSn.tagName === \"textarea\") {\n for(var _iterator = _create_for_of_iterator_helper_loose(prospectiveSiblings), _step; !(_step = _iterator()).done;){\n var c2 = _step.value;\n if (c2.nodeType === parent.TEXT_NODE) {\n parent.removeChild(c2);\n }\n }\n } else if (parentSn.tagName === \"style\" && prospectiveSiblings.length === 1) {\n for(var _iterator1 = _create_for_of_iterator_helper_loose(prospectiveSiblings), _step1; !(_step1 = _iterator1()).done;){\n var cssText = _step1.value;\n if (cssText.nodeType === parent.TEXT_NODE && !mirror2.hasNode(cssText)) {\n target.textContent = cssText.textContent;\n parent.removeChild(cssText);\n }\n }\n }\n } else if ((parentSn == null ? void 0 : parentSn.type) === NodeType.Document) {\n var parentDoc = parent;\n if (mutation.node.type === NodeType.DocumentType && ((_a2 = parentDoc.childNodes[0]) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_TYPE_NODE) parentDoc.removeChild(parentDoc.childNodes[0]);\n if (target.nodeName === \"HTML\" && parentDoc.documentElement) parentDoc.removeChild(parentDoc.documentElement);\n }\n if (previous && previous.nextSibling && previous.nextSibling.parentNode) {\n parent.insertBefore(target, previous.nextSibling);\n } else if (next && next.parentNode) {\n parent.contains(next) ? parent.insertBefore(target, next) : parent.insertBefore(target, null);\n } else {\n parent.appendChild(target);\n }\n afterAppend(target, mutation.node.id);\n if (_this.usingVirtualDom && target.nodeName === \"#text\" && parent.nodeName === \"STYLE\" && ((_b = parent.rules) == null ? void 0 : _b.length) > 0) parent.rules = [];\n if (isSerializedIframe(target, _this.mirror)) {\n var targetId = _this.mirror.getId(target);\n var mutationInQueue = _this.newDocumentQueue.find(function(m) {\n return m.parentId === targetId;\n });\n if (mutationInQueue) {\n _this.attachDocumentToIframe(mutationInQueue, target);\n _this.newDocumentQueue = _this.newDocumentQueue.filter(function(m) {\n return m !== mutationInQueue;\n });\n }\n }\n if (mutation.previousId || mutation.nextId) {\n _this.legacy_resolveMissingNode(legacy_missingNodeMap, parent, target, mutation);\n }\n };\n d.adds.forEach(function(mutation) {\n appendNode(mutation);\n });\n var startTime = Date.now();\n while(queue.length){\n var resolveTrees = queueToResolveTrees(queue);\n queue.length = 0;\n if (Date.now() - startTime > 500) {\n this.warn(\"Timeout in the loop, please check the resolve tree data:\", resolveTrees);\n break;\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(resolveTrees), _step; !(_step = _iterator()).done;){\n var tree = _step.value;\n var parent = mirror2.getNode(tree.value.parentId);\n if (!parent) {\n this.debug(\"Drop resolve tree since there is no parent for the root node.\", tree);\n } else {\n iterateResolveTree(tree, function(mutation) {\n appendNode(mutation);\n });\n }\n }\n }\n if (Object.keys(legacy_missingNodeMap).length) {\n Object.assign(this.legacy_missingNodeRetryMap, legacy_missingNodeMap);\n }\n uniqueTextMutations(d.texts).forEach(function(mutation) {\n var _a2;\n var target = mirror2.getNode(mutation.id);\n if (!target) {\n if (d.removes.find(function(r2) {\n return r2.id === mutation.id;\n })) {\n return;\n }\n return _this.warnNodeNotFound(d, mutation.id);\n }\n var parentEl = target.parentElement;\n if (mutation.value && parentEl && parentEl.tagName === \"STYLE\") {\n target.textContent = adaptCssForReplay(mutation.value, _this.cache);\n } else {\n target.textContent = mutation.value;\n }\n if (_this.usingVirtualDom) {\n var parent = target.parentNode;\n if (((_a2 = parent == null ? void 0 : parent.rules) == null ? void 0 : _a2.length) > 0) parent.rules = [];\n }\n });\n d.attributes.forEach(function(mutation) {\n var _loop = function(attributeName) {\n if (typeof attributeName === \"string\") {\n var value = mutation.attributes[attributeName];\n if (value === null) {\n target.removeAttribute(attributeName);\n if (attributeName === \"open\") removeDialogFromTopLevel(target, mutation);\n } else if (typeof value === \"string\") {\n try {\n if (attributeName === \"_cssText\" && (target.nodeName === \"LINK\" || target.nodeName === \"STYLE\")) {\n try {\n var newSn = mirror2.getMeta(target);\n Object.assign(newSn.attributes, mutation.attributes);\n var newNode = buildNodeWithSN(newSn, {\n doc: target.ownerDocument,\n // can be Document or RRDocument\n mirror: mirror2,\n skipChild: true,\n hackCss: true,\n cache: _this.cache\n });\n var siblingNode = target.nextSibling;\n var parentNode2 = target.parentNode;\n if (newNode && parentNode2) {\n parentNode2.removeChild(target);\n parentNode2.insertBefore(newNode, siblingNode);\n mirror2.replace(mutation.id, newNode);\n return \"break\";\n }\n } catch (e2) {}\n }\n if (attributeName === \"value\" && target.nodeName === \"TEXTAREA\") {\n var textarea = target;\n textarea.childNodes.forEach(function(c2) {\n return textarea.removeChild(c2);\n });\n var tn = (_a2 = target.ownerDocument) == null ? void 0 : _a2.createTextNode(value);\n if (tn) {\n textarea.appendChild(tn);\n }\n } else {\n target.setAttribute(attributeName, value);\n }\n if (attributeName === \"rr_open_mode\" && target.nodeName === \"DIALOG\") {\n applyDialogToTopLevel(target, mutation);\n }\n } catch (error) {\n _this.warn(\"An error occurred may due to the checkout feature.\", error);\n }\n } else if (attributeName === \"style\") {\n var styleValues = value;\n var targetEl = target;\n for(var s2 in styleValues){\n if (styleValues[s2] === false) {\n targetEl.style.removeProperty(s2);\n } else if (_instanceof(styleValues[s2], Array)) {\n var svp = styleValues[s2];\n targetEl.style.setProperty(s2, svp[0], svp[1]);\n } else {\n var svs = styleValues[s2];\n targetEl.style.setProperty(s2, svs);\n }\n }\n }\n }\n };\n var _a2;\n var target = mirror2.getNode(mutation.id);\n if (!target) {\n if (d.removes.find(function(r2) {\n return r2.id === mutation.id;\n })) {\n return;\n }\n return _this.warnNodeNotFound(d, mutation.id);\n }\n for(var attributeName in mutation.attributes){\n var _ret = _loop(attributeName);\n if (_ret === \"break\") break;\n }\n });\n };\n /**\n * Apply the scroll data on real elements.\n * If the replayer is in sync mode, smooth scroll behavior should be disabled.\n * @param d - the scroll data\n * @param isSync - whether the replayer is in sync mode(fast-forward)\n */ _proto.applyScroll = function applyScroll(d, isSync) {\n var _a2, _b;\n var target = this.mirror.getNode(d.id);\n if (!target) {\n return this.debugNodeNotFound(d, d.id);\n }\n var sn = this.mirror.getMeta(target);\n if (target === this.iframe.contentDocument) {\n (_a2 = this.iframe.contentWindow) == null ? void 0 : _a2.scrollTo({\n top: d.y,\n left: d.x,\n behavior: isSync ? \"auto\" : \"smooth\"\n });\n } else if ((sn == null ? void 0 : sn.type) === NodeType.Document) {\n (_b = target.defaultView) == null ? void 0 : _b.scrollTo({\n top: d.y,\n left: d.x,\n behavior: isSync ? \"auto\" : \"smooth\"\n });\n } else {\n try {\n target.scrollTo({\n top: d.y,\n left: d.x,\n behavior: isSync ? \"auto\" : \"smooth\"\n });\n } catch (error) {}\n }\n };\n _proto.applyInput = function applyInput(d) {\n var target = this.mirror.getNode(d.id);\n if (!target) {\n return this.debugNodeNotFound(d, d.id);\n }\n try {\n target.checked = d.isChecked;\n target.value = d.text;\n } catch (error) {}\n };\n _proto.applySelection = function applySelection(d) {\n var _this = this;\n try {\n var selectionSet = /* @__PURE__ */ new Set();\n var ranges = d.ranges.map(function(param) {\n var start = param.start, startOffset = param.startOffset, end = param.end, endOffset = param.endOffset;\n var startContainer = _this.mirror.getNode(start);\n var endContainer = _this.mirror.getNode(end);\n if (!startContainer || !endContainer) return;\n var result2 = new Range();\n result2.setStart(startContainer, startOffset);\n result2.setEnd(endContainer, endOffset);\n var doc = startContainer.ownerDocument;\n var selection = doc == null ? void 0 : doc.getSelection();\n selection && selectionSet.add(selection);\n return {\n range: result2,\n selection: selection\n };\n });\n selectionSet.forEach(function(s2) {\n return s2.removeAllRanges();\n });\n ranges.forEach(function(r2) {\n var _a2;\n return r2 && ((_a2 = r2.selection) == null ? void 0 : _a2.addRange(r2.range));\n });\n } catch (error) {}\n };\n _proto.applyStyleSheetMutation = function applyStyleSheetMutation(data) {\n var _a2;\n var styleSheet = null;\n if (data.styleId) styleSheet = this.styleMirror.getStyle(data.styleId);\n else if (data.id) styleSheet = ((_a2 = this.mirror.getNode(data.id)) == null ? void 0 : _a2.sheet) || null;\n if (!styleSheet) return;\n if (data.source === IncrementalSource.StyleSheetRule) this.applyStyleSheetRule(data, styleSheet);\n else if (data.source === IncrementalSource.StyleDeclaration) this.applyStyleDeclaration(data, styleSheet);\n };\n _proto.applyStyleSheetRule = function applyStyleSheetRule(data, styleSheet) {\n var _a2, _b, _c, _d;\n (_a2 = data.adds) == null ? void 0 : _a2.forEach(function(param) {\n var rule2 = param.rule, nestedIndex = param.index;\n try {\n if (Array.isArray(nestedIndex)) {\n var _getPositionsAndIndex = getPositionsAndIndex(nestedIndex), positions = _getPositionsAndIndex.positions, index2 = _getPositionsAndIndex.index;\n var nestedRule = getNestedRule(styleSheet.cssRules, positions);\n nestedRule.insertRule(rule2, index2);\n } else {\n var index21 = nestedIndex === void 0 ? void 0 : Math.min(nestedIndex, styleSheet.cssRules.length);\n styleSheet == null ? void 0 : styleSheet.insertRule(rule2, index21);\n }\n } catch (e2) {}\n });\n (_b = data.removes) == null ? void 0 : _b.forEach(function(param) {\n var nestedIndex = param.index;\n try {\n if (Array.isArray(nestedIndex)) {\n var _getPositionsAndIndex = getPositionsAndIndex(nestedIndex), positions = _getPositionsAndIndex.positions, index2 = _getPositionsAndIndex.index;\n var nestedRule = getNestedRule(styleSheet.cssRules, positions);\n nestedRule.deleteRule(index2 || 0);\n } else {\n styleSheet == null ? void 0 : styleSheet.deleteRule(nestedIndex);\n }\n } catch (e2) {}\n });\n if (data.replace) try {\n void ((_c = styleSheet.replace) == null ? void 0 : _c.call(styleSheet, data.replace));\n } catch (e2) {}\n if (data.replaceSync) try {\n (_d = styleSheet.replaceSync) == null ? void 0 : _d.call(styleSheet, data.replaceSync);\n } catch (e2) {}\n };\n _proto.applyStyleDeclaration = function applyStyleDeclaration(data, styleSheet) {\n if (data.set) {\n var rule2 = getNestedRule(styleSheet.rules, data.index);\n rule2.style.setProperty(data.set.property, data.set.value, data.set.priority);\n }\n if (data.remove) {\n var rule21 = getNestedRule(styleSheet.rules, data.index);\n rule21.style.removeProperty(data.remove.property);\n }\n };\n _proto.applyAdoptedStyleSheet = function applyAdoptedStyleSheet(data) {\n var _this = this;\n var _a2;\n var targetHost = this.mirror.getNode(data.id);\n if (!targetHost) return;\n (_a2 = data.styles) == null ? void 0 : _a2.forEach(function(style) {\n var _a3;\n var newStyleSheet = null;\n var hostWindow = null;\n if (hasShadowRoot(targetHost)) hostWindow = ((_a3 = targetHost.ownerDocument) == null ? void 0 : _a3.defaultView) || null;\n else if (targetHost.nodeName === \"#document\") hostWindow = targetHost.defaultView;\n if (!hostWindow) return;\n try {\n newStyleSheet = new hostWindow.CSSStyleSheet();\n _this.styleMirror.add(newStyleSheet, style.styleId);\n _this.applyStyleSheetRule({\n source: IncrementalSource.StyleSheetRule,\n adds: style.rules\n }, newStyleSheet);\n } catch (e2) {}\n });\n var MAX_RETRY_TIME = 10;\n var count = 0;\n var adoptStyleSheets = function(targetHost2, styleIds) {\n var stylesToAdopt = styleIds.map(function(styleId) {\n return _this.styleMirror.getStyle(styleId);\n }).filter(function(style) {\n return style !== null;\n });\n if (hasShadowRoot(targetHost2)) targetHost2.shadowRoot.adoptedStyleSheets = stylesToAdopt;\n else if (targetHost2.nodeName === \"#document\") targetHost2.adoptedStyleSheets = stylesToAdopt;\n if (stylesToAdopt.length !== styleIds.length && count < MAX_RETRY_TIME) {\n setTimeout(function() {\n return adoptStyleSheets(targetHost2, styleIds);\n }, 0 + 100 * count);\n count++;\n }\n };\n adoptStyleSheets(targetHost, data.styleIds);\n };\n _proto.legacy_resolveMissingNode = function legacy_resolveMissingNode(map, parent, target, targetMutation) {\n var previousId = targetMutation.previousId, nextId = targetMutation.nextId;\n var previousInMap = previousId && map[previousId];\n var nextInMap = nextId && map[nextId];\n if (previousInMap) {\n var node2 = previousInMap.node, mutation = previousInMap.mutation;\n parent.insertBefore(node2, target);\n delete map[mutation.node.id];\n delete this.legacy_missingNodeRetryMap[mutation.node.id];\n if (mutation.previousId || mutation.nextId) {\n this.legacy_resolveMissingNode(map, parent, node2, mutation);\n }\n }\n if (nextInMap) {\n var node21 = nextInMap.node, mutation1 = nextInMap.mutation;\n parent.insertBefore(node21, target.nextSibling);\n delete map[mutation1.node.id];\n delete this.legacy_missingNodeRetryMap[mutation1.node.id];\n if (mutation1.previousId || mutation1.nextId) {\n this.legacy_resolveMissingNode(map, parent, node21, mutation1);\n }\n }\n };\n _proto.moveAndHover = function moveAndHover(x2, y, id, isSync, debugData) {\n var target = this.mirror.getNode(id);\n if (!target) {\n return this.debugNodeNotFound(debugData, id);\n }\n var base = getBaseDimension(target, this.iframe);\n var _x = x2 * base.absoluteScale + base.x;\n var _y = y * base.absoluteScale + base.y;\n this.mouse.style.left = \"\" + _x + \"px\";\n this.mouse.style.top = \"\" + _y + \"px\";\n if (!isSync) {\n this.drawMouseTail({\n x: _x,\n y: _y\n });\n }\n this.hoverElements(target);\n };\n _proto.drawMouseTail = function drawMouseTail(position) {\n var _this = this;\n if (!this.mouseTail) {\n return;\n }\n var _ref = this.config.mouseTail === true ? defaultMouseTailConfig : Object.assign({}, defaultMouseTailConfig, this.config.mouseTail), lineCap = _ref.lineCap, lineWidth = _ref.lineWidth, strokeStyle = _ref.strokeStyle, duration = _ref.duration;\n var draw = function() {\n if (!_this.mouseTail) {\n return;\n }\n var ctx = _this.mouseTail.getContext(\"2d\");\n if (!ctx || !_this.tailPositions.length) {\n return;\n }\n ctx.clearRect(0, 0, _this.mouseTail.width, _this.mouseTail.height);\n ctx.beginPath();\n ctx.lineWidth = lineWidth;\n ctx.lineCap = lineCap;\n ctx.strokeStyle = strokeStyle;\n ctx.moveTo(_this.tailPositions[0].x, _this.tailPositions[0].y);\n _this.tailPositions.forEach(function(p) {\n return ctx.lineTo(p.x, p.y);\n });\n ctx.stroke();\n };\n this.tailPositions.push(position);\n draw();\n setTimeout(function() {\n _this.tailPositions = _this.tailPositions.filter(function(p) {\n return p !== position;\n });\n draw();\n }, duration / this.speedService.state.context.timer.speed);\n };\n _proto.hoverElements = function hoverElements(el) {\n var _a2;\n (_a2 = this.lastHoveredRootNode || this.iframe.contentDocument) == null ? void 0 : _a2.querySelectorAll(\".\\\\:hover\").forEach(function(hoveredEl) {\n hoveredEl.classList.remove(\":hover\");\n });\n this.lastHoveredRootNode = el.getRootNode();\n var currentEl = el;\n while(currentEl){\n if (currentEl.classList) {\n currentEl.classList.add(\":hover\");\n }\n currentEl = currentEl.parentElement;\n }\n };\n _proto.isUserInteraction = function isUserInteraction(event) {\n if (event.type !== EventType.IncrementalSnapshot) {\n return false;\n }\n return event.data.source > IncrementalSource.Mutation && event.data.source <= IncrementalSource.Input;\n };\n _proto.backToNormal = function backToNormal() {\n this.nextUserInteractionEvent = null;\n if (this.speedService.state.matches(\"normal\")) {\n return;\n }\n this.speedService.send({\n type: \"BACK_TO_NORMAL\"\n });\n this.emitter.emit(ReplayerEvents.SkipEnd, {\n speed: this.speedService.state.context.normalSpeed\n });\n };\n _proto.warnNodeNotFound = function warnNodeNotFound(d, id) {\n this.warn(\"Node with id '\" + id + \"' not found. \", d);\n };\n _proto.warnCanvasMutationFailed = function warnCanvasMutationFailed(d, error) {\n this.warn(\"Has error on canvas update\", error, \"canvas mutation:\", d);\n };\n _proto.debugNodeNotFound = function debugNodeNotFound(d, id) {\n this.debug(\"Node with id '\" + id + \"' not found. \", d);\n };\n _proto.warn = function warn() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var _this_config_logger;\n if (!this.config.showWarning) {\n return;\n }\n (_this_config_logger = this.config.logger).warn.apply(_this_config_logger, [].concat([\n REPLAY_CONSOLE_PREFIX\n ], args));\n };\n _proto.debug = function debug() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var _this_config_logger;\n if (!this.config.showDebug) {\n return;\n }\n (_this_config_logger = this.config.logger).log.apply(_this_config_logger, [].concat([\n REPLAY_CONSOLE_PREFIX\n ], args));\n };\n _create_class(Replayer, [\n {\n key: \"timer\",\n get: function get() {\n return this.service.state.context.timer;\n }\n }\n ]);\n return Replayer;\n}();\nvar addCustomEvent = record.addCustomEvent;\nvar freezePage = record.freezePage;\nvar takeFullSnapshot = record.takeFullSnapshot;\n\nexport { EventType, IncrementalSource, MouseInteractions, Replayer, ReplayerEvents, addCustomEvent, canvasMutation, freezePage, _mirror as mirror, record, takeFullSnapshot, utils };\n","import { window } from './window';\n/**\n * Promise polyfill sourced from https://github.com/getify/native-promise-only.\n * Modified to\n * - remove UMD wrapper and export as an object, so that we don't globally polyfill Promise.\n * - rename access notation for dynamically referenced props to avoid minification, e.g. this.__NPO__ -> this['__NPO__']\n*/\n\n/*! Native Promise Only\n v0.8.1 (c) Kyle Simpson\n MIT License: http://getify.mit-license.org\n*/\n\n/*jshint validthis:true */\n'use strict';\n\nvar setImmediate = window['setImmediate'];\nvar builtInProp, cycle, schedulingQueue,\n ToString = Object.prototype.toString,\n timer = (typeof setImmediate !== 'undefined') ?\n function timer(fn) { return setImmediate(fn); } :\n setTimeout;\n\n// dammit, IE8.\ntry {\n Object.defineProperty({},'x',{});\n builtInProp = function builtInProp(obj,name,val,config) {\n return Object.defineProperty(obj,name,{\n value: val,\n writable: true,\n configurable: config !== false\n });\n };\n}\ncatch (err) {\n builtInProp = function builtInProp(obj,name,val) {\n obj[name] = val;\n return obj;\n };\n}\n\n// Note: using a queue instead of array for efficiency\nschedulingQueue = (function Queue() {\n var first, last, item;\n\n function Item(fn,self) {\n this.fn = fn;\n this.self = self;\n this.next = void 0;\n }\n\n return {\n add: function add(fn,self) {\n item = new Item(fn,self);\n if (last) {\n last.next = item;\n }\n else {\n first = item;\n }\n last = item;\n item = void 0;\n },\n drain: function drain() {\n var f = first;\n first = last = cycle = void 0;\n\n while (f) {\n f.fn.call(f.self);\n f = f.next;\n }\n }\n };\n})();\n\nfunction schedule(fn,self) {\n schedulingQueue.add(fn,self);\n if (!cycle) {\n cycle = timer(schedulingQueue.drain);\n }\n}\n\n// promise duck typing\nfunction isThenable(o) {\n var _then, oType = typeof o;\n\n if (o !== null && (oType === 'object' || oType === 'function')) {\n _then = o.then;\n }\n return typeof _then === 'function' ? _then : false;\n}\n\nfunction notify() {\n for (var i=0; i<this.chain.length; i++) {\n notifyIsolated(\n this,\n (this.state === 1) ? this.chain[i].success : this.chain[i].failure,\n this.chain[i]\n );\n }\n this.chain.length = 0;\n}\n\n// NOTE: This is a separate function to isolate\n// the `try..catch` so that other code can be\n// optimized better\nfunction notifyIsolated(self,cb,chain) {\n var ret, _then;\n try {\n if (cb === false) {\n chain.reject(self.msg);\n }\n else {\n if (cb === true) {\n ret = self.msg;\n }\n else {\n ret = cb.call(void 0,self.msg);\n }\n\n if (ret === chain.promise) {\n chain.reject(TypeError('Promise-chain cycle'));\n }\n // eslint-disable-next-line no-cond-assign\n else if (_then = isThenable(ret)) {\n _then.call(ret,chain.resolve,chain.reject);\n }\n else {\n chain.resolve(ret);\n }\n }\n }\n catch (err) {\n chain.reject(err);\n }\n}\n\nfunction resolve(msg) {\n var _then, self = this;\n\n // already triggered?\n if (self.triggered) { return; }\n\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n\n try {\n // eslint-disable-next-line no-cond-assign\n if (_then = isThenable(msg)) {\n schedule(function(){\n var defWrapper = new MakeDefWrapper(self);\n try {\n _then.call(msg,\n function $resolve$(){ resolve.apply(defWrapper,arguments); },\n function $reject$(){ reject.apply(defWrapper,arguments); }\n );\n }\n catch (err) {\n reject.call(defWrapper,err);\n }\n });\n }\n else {\n self.msg = msg;\n self.state = 1;\n if (self.chain.length > 0) {\n schedule(notify,self);\n }\n }\n }\n catch (err) {\n reject.call(new MakeDefWrapper(self),err);\n }\n}\n\nfunction reject(msg) {\n var self = this;\n\n // already triggered?\n if (self.triggered) { return; }\n\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n\n self.msg = msg;\n self.state = 2;\n if (self.chain.length > 0) {\n schedule(notify,self);\n }\n}\n\nfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n for (var idx=0; idx<arr.length; idx++) {\n (function IIFE(idx){\n Constructor.resolve(arr[idx])\n .then(\n function $resolver$(msg){\n resolver(idx,msg);\n },\n rejecter\n );\n })(idx);\n }\n}\n\nfunction MakeDefWrapper(self) {\n this.def = self;\n this.triggered = false;\n}\n\nfunction MakeDef(self) {\n this.promise = self;\n this.state = 0;\n this.triggered = false;\n this.chain = [];\n this.msg = void 0;\n}\n\nfunction NpoPromise(executor) {\n if (typeof executor !== 'function') {\n throw TypeError('Not a function');\n }\n\n if (this['__NPO__'] !== 0) {\n throw TypeError('Not a promise');\n }\n\n // instance shadowing the inherited \"brand\"\n // to signal an already \"initialized\" promise\n this['__NPO__'] = 1;\n\n var def = new MakeDef(this);\n\n this['then'] = function then(success,failure) {\n var o = {\n success: typeof success === 'function' ? success : true,\n failure: typeof failure === 'function' ? failure : false\n };\n // Note: `then(..)` itself can be borrowed to be used against\n // a different promise constructor for making the chained promise,\n // by substituting a different `this` binding.\n o.promise = new this.constructor(function extractChain(resolve,reject) {\n if (typeof resolve !== 'function' || typeof reject !== 'function') {\n throw TypeError('Not a function');\n }\n\n o.resolve = resolve;\n o.reject = reject;\n });\n def.chain.push(o);\n\n if (def.state !== 0) {\n schedule(notify,def);\n }\n\n return o.promise;\n };\n this['catch'] = function $catch$(failure) {\n return this.then(void 0,failure);\n };\n\n try {\n executor.call(\n void 0,\n function publicResolve(msg){\n resolve.call(def,msg);\n },\n function publicReject(msg) {\n reject.call(def,msg);\n }\n );\n }\n catch (err) {\n reject.call(def,err);\n }\n}\n\nvar PromisePrototype = builtInProp({},'constructor',NpoPromise,\n /*configurable=*/false\n);\n\n // Note: Android 4 cannot use `Object.defineProperty(..)` here\nNpoPromise.prototype = PromisePrototype;\n\n// built-in \"brand\" to signal an \"uninitialized\" promise\nbuiltInProp(PromisePrototype,'__NPO__',0,\n /*configurable=*/false\n);\n\nbuiltInProp(NpoPromise,'resolve',function Promise$resolve(msg) {\n var Constructor = this;\n\n // spec mandated checks\n // note: best \"isPromise\" check that's practical for now\n if (msg && typeof msg === 'object' && msg['__NPO__'] === 1) {\n return msg;\n }\n\n return new Constructor(function executor(resolve,reject){\n if (typeof resolve !== 'function' || typeof reject !== 'function') {\n throw TypeError('Not a function');\n }\n\n resolve(msg);\n });\n});\n\nbuiltInProp(NpoPromise,'reject',function Promise$reject(msg) {\n return new this(function executor(resolve,reject){\n if (typeof resolve !== 'function' || typeof reject !== 'function') {\n throw TypeError('Not a function');\n }\n\n reject(msg);\n });\n});\n\nbuiltInProp(NpoPromise,'all',function Promise$all(arr) {\n var Constructor = this;\n\n // spec mandated checks\n if (ToString.call(arr) !== '[object Array]') {\n return Constructor.reject(TypeError('Not an array'));\n }\n if (arr.length === 0) {\n return Constructor.resolve([]);\n }\n\n return new Constructor(function executor(resolve,reject){\n if (typeof resolve !== 'function' || typeof reject !== 'function') {\n throw TypeError('Not a function');\n }\n\n var len = arr.length, msgs = Array(len), count = 0;\n\n iteratePromises(Constructor,arr,function resolver(idx,msg) {\n msgs[idx] = msg;\n if (++count === len) {\n resolve(msgs);\n }\n },reject);\n });\n});\n\nbuiltInProp(NpoPromise,'race',function Promise$race(arr) {\n var Constructor = this;\n\n // spec mandated checks\n if (ToString.call(arr) !== '[object Array]') {\n return Constructor.reject(TypeError('Not an array'));\n }\n\n return new Constructor(function executor(resolve,reject){\n if (typeof resolve !== 'function' || typeof reject !== 'function') {\n throw TypeError('Not a function');\n }\n\n iteratePromises(Constructor,arr,function resolver(idx,msg){\n resolve(msg);\n },reject);\n });\n});\n\nvar PromisePolyfill;\nif (typeof Promise !== 'undefined' && Promise.toString().indexOf('[native code]') !== -1) {\n PromisePolyfill = Promise;\n} else {\n PromisePolyfill = NpoPromise;\n}\n\nexport { PromisePolyfill as Promise, NpoPromise };\n","var Config = {\n DEBUG: false,\n LIB_VERSION: '2.63.0'\n};\n\nexport default Config;\n","/* eslint camelcase: \"off\", eqeqeq: \"off\" */\nimport Config from './config';\nimport { NpoPromise, Promise } from './promise-polyfill';\nimport { window } from './window';\n\n// Maximum allowed session recording length\nvar MAX_RECORDING_MS = 24 * 60 * 60 * 1000; // 24 hours\n// Maximum allowed value for minimum session recording length\nvar MAX_VALUE_FOR_MIN_RECORDING_MS = 8 * 1000; // 8 seconds\n\n/*\n * Saved references to long variable names, so that closure compiler can\n * minimize file size.\n */\n\nvar ArrayProto = Array.prototype,\n FuncProto = Function.prototype,\n ObjProto = Object.prototype,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty,\n windowConsole = window.console,\n navigator = window.navigator,\n document = window.document,\n windowOpera = window.opera,\n screen = window.screen,\n userAgent = navigator.userAgent;\n\nvar nativeBind = FuncProto.bind,\n nativeForEach = ArrayProto.forEach,\n nativeIndexOf = ArrayProto.indexOf,\n nativeMap = ArrayProto.map,\n nativeIsArray = Array.isArray,\n breaker = {};\n\nvar _ = {\n trim: function(str) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n};\n\n// Console override\nvar console = {\n /** @type {function(...*)} */\n log: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n try {\n windowConsole.log.apply(windowConsole, arguments);\n } catch (err) {\n _.each(arguments, function(arg) {\n windowConsole.log(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n warn: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel warning:'].concat(_.toArray(arguments));\n try {\n windowConsole.warn.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.warn(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n error: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n try {\n windowConsole.error.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.error(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n critical: function() {\n if (!_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n try {\n windowConsole.error.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.error(arg);\n });\n }\n }\n }\n};\n\nvar log_func_with_prefix = function(func, prefix) {\n return function() {\n arguments[0] = '[' + prefix + '] ' + arguments[0];\n return func.apply(console, arguments);\n };\n};\nvar console_with_prefix = function(prefix) {\n return {\n log: log_func_with_prefix(console.log, prefix),\n error: log_func_with_prefix(console.error, prefix),\n critical: log_func_with_prefix(console.critical, prefix)\n };\n};\n\n\nvar safewrap = function(f) {\n return function() {\n try {\n return f.apply(this, arguments);\n } catch (e) {\n console.critical('Implementation error. Please turn on debug and contact support@mixpanel.com.');\n if (Config.DEBUG){\n console.critical(e);\n }\n }\n };\n};\n\nvar safewrapClass = function(klass) {\n var proto = klass.prototype;\n for (var func in proto) {\n if (typeof(proto[func]) === 'function') {\n proto[func] = safewrap(proto[func]);\n }\n }\n};\n\n\n// UNDERSCORE\n// Embed part of the Underscore Library\n_.bind = function(func, context) {\n var args, bound;\n if (nativeBind && func.bind === nativeBind) {\n return nativeBind.apply(func, slice.call(arguments, 1));\n }\n if (!_.isFunction(func)) {\n throw new TypeError();\n }\n args = slice.call(arguments, 2);\n bound = function() {\n if (!(this instanceof bound)) {\n return func.apply(context, args.concat(slice.call(arguments)));\n }\n var ctor = {};\n ctor.prototype = func.prototype;\n var self = new ctor();\n ctor.prototype = null;\n var result = func.apply(self, args.concat(slice.call(arguments)));\n if (Object(result) === result) {\n return result;\n }\n return self;\n };\n return bound;\n};\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} context\n */\n_.each = function(obj, iterator, context) {\n if (obj === null || obj === undefined) {\n return;\n }\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) {\n return;\n }\n }\n } else {\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(context, obj[key], key, obj) === breaker) {\n return;\n }\n }\n }\n }\n};\n\n_.extend = function(obj) {\n _.each(slice.call(arguments, 1), function(source) {\n for (var prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop];\n }\n }\n });\n return obj;\n};\n\n_.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n};\n\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// var bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\n_.isFunction = function(f) {\n try {\n return /^\\s*\\bfunction\\b/.test(f);\n } catch (x) {\n return false;\n }\n};\n\n_.isArguments = function(obj) {\n return !!(obj && hasOwnProperty.call(obj, 'callee'));\n};\n\n_.toArray = function(iterable) {\n if (!iterable) {\n return [];\n }\n if (iterable.toArray) {\n return iterable.toArray();\n }\n if (_.isArray(iterable)) {\n return slice.call(iterable);\n }\n if (_.isArguments(iterable)) {\n return slice.call(iterable);\n }\n return _.values(iterable);\n};\n\n_.map = function(arr, callback, context) {\n if (nativeMap && arr.map === nativeMap) {\n return arr.map(callback, context);\n } else {\n var results = [];\n _.each(arr, function(item) {\n results.push(callback.call(context, item));\n });\n return results;\n }\n};\n\n_.keys = function(obj) {\n var results = [];\n if (obj === null) {\n return results;\n }\n _.each(obj, function(value, key) {\n results[results.length] = key;\n });\n return results;\n};\n\n_.values = function(obj) {\n var results = [];\n if (obj === null) {\n return results;\n }\n _.each(obj, function(value) {\n results[results.length] = value;\n });\n return results;\n};\n\n_.include = function(obj, target) {\n var found = false;\n if (obj === null) {\n return found;\n }\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1;\n }\n _.each(obj, function(value) {\n if (found || (found = (value === target))) {\n return breaker;\n }\n });\n return found;\n};\n\n_.includes = function(str, needle) {\n return str.indexOf(needle) !== -1;\n};\n\n// Underscore Addons\n_.inherit = function(subclass, superclass) {\n subclass.prototype = new superclass();\n subclass.prototype.constructor = subclass;\n subclass.superclass = superclass.prototype;\n return subclass;\n};\n\n_.isObject = function(obj) {\n return (obj === Object(obj) && !_.isArray(obj));\n};\n\n_.isEmptyObject = function(obj) {\n if (_.isObject(obj)) {\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n return true;\n }\n return false;\n};\n\n_.isUndefined = function(obj) {\n return obj === void 0;\n};\n\n_.isString = function(obj) {\n return toString.call(obj) == '[object String]';\n};\n\n_.isDate = function(obj) {\n return toString.call(obj) == '[object Date]';\n};\n\n_.isNumber = function(obj) {\n return toString.call(obj) == '[object Number]';\n};\n\n_.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n};\n\n_.encodeDates = function(obj) {\n _.each(obj, function(v, k) {\n if (_.isDate(v)) {\n obj[k] = _.formatDate(v);\n } else if (_.isObject(v)) {\n obj[k] = _.encodeDates(v); // recurse\n }\n });\n return obj;\n};\n\n_.timestamp = function() {\n Date.now = Date.now || function() {\n return +new Date;\n };\n return Date.now();\n};\n\n_.formatDate = function(d) {\n // YYYY-MM-DDTHH:MM:SS in UTC\n function pad(n) {\n return n < 10 ? '0' + n : n;\n }\n return d.getUTCFullYear() + '-' +\n pad(d.getUTCMonth() + 1) + '-' +\n pad(d.getUTCDate()) + 'T' +\n pad(d.getUTCHours()) + ':' +\n pad(d.getUTCMinutes()) + ':' +\n pad(d.getUTCSeconds());\n};\n\n_.strip_empty_properties = function(p) {\n var ret = {};\n _.each(p, function(v, k) {\n if (_.isString(v) && v.length > 0) {\n ret[k] = v;\n }\n });\n return ret;\n};\n\n/*\n * this function returns a copy of object after truncating it. If\n * passed an Array or Object it will iterate through obj and\n * truncate all the values recursively.\n */\n_.truncate = function(obj, length) {\n var ret;\n\n if (typeof(obj) === 'string') {\n ret = obj.slice(0, length);\n } else if (_.isArray(obj)) {\n ret = [];\n _.each(obj, function(val) {\n ret.push(_.truncate(val, length));\n });\n } else if (_.isObject(obj)) {\n ret = {};\n _.each(obj, function(val, key) {\n ret[key] = _.truncate(val, length);\n });\n } else {\n ret = obj;\n }\n\n return ret;\n};\n\n_.JSONEncode = (function() {\n return function(mixed_val) {\n var value = mixed_val;\n var quote = function(string) {\n var escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g; // eslint-disable-line no-control-regex\n var meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n\n escapable.lastIndex = 0;\n return escapable.test(string) ?\n '\"' + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' :\n '\"' + string + '\"';\n };\n\n var str = function(key, holder) {\n var gap = '';\n var indent = ' ';\n var i = 0; // The loop counter.\n var k = ''; // The member key.\n var v = ''; // The member value.\n var length = 0;\n var mind = gap;\n var partial = [];\n var value = holder[key];\n\n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n\n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n\n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n\n return String(value);\n\n case 'object':\n // If the type is 'object', we might be dealing with an object or an array or\n // null.\n // Due to a specification blunder in ECMAScript, typeof null is 'object',\n // so watch out for that case.\n if (!value) {\n return 'null';\n }\n\n // Make an array to hold the partial results of stringifying this object value.\n gap += indent;\n partial = [];\n\n // Is the value an array?\n if (toString.apply(value) === '[object Array]') {\n // The value is an array. Stringify every element. Use null as a placeholder\n // for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n\n // Join all of the elements together, separated with commas, and wrap them in\n // brackets.\n v = partial.length === 0 ? '[]' :\n gap ? '[\\n' + gap +\n partial.join(',\\n' + gap) + '\\n' +\n mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n\n // Iterate through all of the keys in the object.\n for (k in value) {\n if (hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n\n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n v = partial.length === 0 ? '{}' :\n gap ? '{' + partial.join(',') + '' +\n mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n };\n\n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {\n '': value\n });\n };\n})();\n\n/**\n * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n * Slightly modified to throw a real Error rather than a POJO\n */\n_.JSONDecode = (function() {\n var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n 'b': '\\b',\n 'f': '\\f',\n 'n': '\\n',\n 'r': '\\r',\n 't': '\\t'\n },\n text,\n error = function(m) {\n var e = new SyntaxError(m);\n e.at = at;\n e.text = text;\n throw e;\n },\n next = function(c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error('Expected \\'' + c + '\\' instead of \\'' + ch + '\\'');\n }\n // Get the next character. When there are no more characters,\n // return the empty string.\n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n number = function() {\n // Parse a number value.\n var number,\n string = '';\n\n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error('Bad number');\n } else {\n return number;\n }\n },\n\n string = function() {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n }\n if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error('Bad string');\n },\n white = function() {\n // Skip whitespace.\n while (ch && ch <= ' ') {\n next();\n }\n },\n word = function() {\n // true, false, or null.\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error('Unexpected \"' + ch + '\"');\n },\n value, // Placeholder for the value function.\n array = function() {\n // Parse an array value.\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error('Bad array');\n },\n object = function() {\n // Parse an object value.\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error('Bad object');\n };\n\n value = function() {\n // Parse a JSON value. It could be an object, an array, a string,\n // a number, or a word.\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n };\n\n // Return the json_parse function. It will have access to all of the\n // above functions and variables.\n return function(source) {\n var result;\n\n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error('Syntax error');\n }\n\n return result;\n };\n})();\n\n_.base64Encode = function(data) {\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = '',\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data = _.utf8Encode(data);\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n};\n\n_.utf8Encode = function(string) {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n var utftext = '',\n start,\n end;\n var stringl = 0,\n n;\n\n start = end = 0;\n stringl = string.length;\n\n for (n = 0; n < stringl; n++) {\n var c1 = string.charCodeAt(n);\n var enc = null;\n\n if (c1 < 128) {\n end++;\n } else if ((c1 > 127) && (c1 < 2048)) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n }\n if (enc !== null) {\n if (end > start) {\n utftext += string.substring(start, end);\n }\n utftext += enc;\n start = end = n + 1;\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length);\n }\n\n return utftext;\n};\n\n_.UUID = function() {\n try {\n // use native Crypto API when available\n return window['crypto']['randomUUID']();\n } catch (err) {\n // fall back to generating our own UUID\n // based on https://gist.github.com/scwood/3bff42cc005cc20ab7ec98f0d8e1d59d\n var uuid = new Array(36);\n for (var i = 0; i < 36; i++) {\n uuid[i] = Math.floor(Math.random() * 16);\n }\n uuid[14] = 4; // set bits 12-15 of time-high-and-version to 0100\n uuid[19] = uuid[19] &= ~(1 << 2); // set bit 6 of clock-seq-and-reserved to zero\n uuid[19] = uuid[19] |= (1 << 3); // set bit 7 of clock-seq-and-reserved to one\n uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';\n\n return _.map(uuid, function(x) {\n return x.toString(16);\n }).join('');\n }\n};\n\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false tracking data\nvar BLOCKED_UA_STRS = [\n 'ahrefsbot',\n 'ahrefssiteaudit',\n 'amazonbot',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'chrome-lighthouse',\n 'facebookexternal',\n 'petalbot',\n 'pinterest',\n 'screaming frog',\n 'yahoo! slurp',\n 'yandex',\n\n // a whole bunch of goog-specific crawlers\n // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google'\n];\n_.isBlockedUA = function(ua) {\n var i;\n ua = ua.toLowerCase();\n for (i = 0; i < BLOCKED_UA_STRS.length; i++) {\n if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n_.HTTPBuildQuery = function(formdata, arg_separator) {\n var use_val, use_key, tmp_arr = [];\n\n if (_.isUndefined(arg_separator)) {\n arg_separator = '&';\n }\n\n _.each(formdata, function(val, key) {\n use_val = encodeURIComponent(val.toString());\n use_key = encodeURIComponent(key);\n tmp_arr[tmp_arr.length] = use_key + '=' + use_val;\n });\n\n return tmp_arr.join(arg_separator);\n};\n\n_.getQueryParam = function(url, param) {\n // Expects a raw URL\n\n param = param.replace(/[[]/g, '\\\\[').replace(/[\\]]/g, '\\\\]');\n var regexS = '[\\\\?&]' + param + '=([^&#]*)',\n regex = new RegExp(regexS),\n results = regex.exec(url);\n if (results === null || (results && typeof(results[1]) !== 'string' && results[1].length)) {\n return '';\n } else {\n var result = results[1];\n try {\n result = decodeURIComponent(result);\n } catch(err) {\n console.error('Skipping decoding for malformed query param: ' + result);\n }\n return result.replace(/\\+/g, ' ');\n }\n};\n\n\n// _.cookie\n// Methods partially borrowed from quirksmode.org/js/cookies.html\n_.cookie = {\n get: function(name) {\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) == ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n },\n\n parse: function(name) {\n var cookie;\n try {\n cookie = _.JSONDecode(_.cookie.get(name)) || {};\n } catch (err) {\n // noop\n }\n return cookie;\n },\n\n set_seconds: function(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '',\n expires = '',\n secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (seconds) {\n var date = new Date();\n date.setTime(date.getTime() + (seconds * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n document.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n },\n\n set: function(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '', expires = '', secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n document.cookie = new_cookie_val;\n return new_cookie_val;\n },\n\n remove: function(name, is_cross_subdomain, domain_override) {\n _.cookie.set(name, '', -1, is_cross_subdomain, false, false, domain_override);\n }\n};\n\nvar _testStorageSupported = function (storage) {\n var supported = true;\n try {\n var key = '__mplss_' + cheap_guid(8),\n val = 'xyz';\n storage.setItem(key, val);\n if (storage.getItem(key) !== val) {\n supported = false;\n }\n storage.removeItem(key);\n } catch (err) {\n supported = false;\n }\n return supported;\n};\n\nvar _localStorageSupported = null;\nvar localStorageSupported = function(storage, forceCheck) {\n if (_localStorageSupported !== null && !forceCheck) {\n return _localStorageSupported;\n }\n return _localStorageSupported = _testStorageSupported(storage || window.localStorage);\n};\n\nvar _sessionStorageSupported = null;\nvar sessionStorageSupported = function(storage, forceCheck) {\n if (_sessionStorageSupported !== null && !forceCheck) {\n return _sessionStorageSupported;\n }\n return _sessionStorageSupported = _testStorageSupported(storage || window.sessionStorage);\n};\n\nfunction _storageWrapper(storage, name, is_supported_fn) {\n var log_error = function(msg) {\n console.error(name + ' error: ' + msg);\n };\n\n return {\n is_supported: function(forceCheck) {\n var supported = is_supported_fn(storage, forceCheck);\n if (!supported) {\n console.error(name + ' unsupported');\n }\n return supported;\n },\n error: log_error,\n get: function(key) {\n try {\n return storage.getItem(key);\n } catch (err) {\n log_error(err);\n }\n return null;\n },\n parse: function(key) {\n try {\n return _.JSONDecode(storage.getItem(key)) || {};\n } catch (err) {\n // noop\n }\n return null;\n },\n set: function(key, value) {\n try {\n storage.setItem(key, value);\n } catch (err) {\n log_error(err);\n }\n },\n remove: function(key) {\n try {\n storage.removeItem(key);\n } catch (err) {\n log_error(err);\n }\n }\n };\n}\n\n_.localStorage = _storageWrapper(window.localStorage, 'localStorage', localStorageSupported);\n_.sessionStorage = _storageWrapper(window.sessionStorage, 'sessionStorage', sessionStorageSupported);\n\n_.register_event = (function() {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from Mixpanel\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n var register_event = function(element, type, handler, oldSchool, useCapture) {\n if (!element) {\n console.error('No valid element provided to register_event');\n return;\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture);\n } else {\n var ontype = 'on' + type;\n var old_handler = element[ontype]; // can be undefined\n element[ontype] = makeHandler(element, handler, old_handler);\n }\n };\n\n function makeHandler(element, new_handler, old_handlers) {\n var handler = function(event) {\n event = event || fixEvent(window.event);\n\n // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n if (!event) {\n return undefined;\n }\n\n var ret = true;\n var old_result, new_result;\n\n if (_.isFunction(old_handlers)) {\n old_result = old_handlers(event);\n }\n new_result = new_handler.call(element, event);\n\n if ((false === old_result) || (false === new_result)) {\n ret = false;\n }\n\n return ret;\n };\n\n return handler;\n }\n\n function fixEvent(event) {\n if (event) {\n event.preventDefault = fixEvent.preventDefault;\n event.stopPropagation = fixEvent.stopPropagation;\n }\n return event;\n }\n fixEvent.preventDefault = function() {\n this.returnValue = false;\n };\n fixEvent.stopPropagation = function() {\n this.cancelBubble = true;\n };\n\n return register_event;\n})();\n\n\nvar TOKEN_MATCH_REGEX = new RegExp('^(\\\\w*)\\\\[(\\\\w+)([=~\\\\|\\\\^\\\\$\\\\*]?)=?\"?([^\\\\]\"]*)\"?\\\\]$');\n\n_.dom_query = (function() {\n /* document.getElementsBySelector(selector)\n - returns an array of element objects from the current document\n matching the CSS selector. Selectors can contain element names,\n class names and ids and can be nested. For example:\n\n elements = document.getElementsBySelector('div#main p a.external')\n\n Will return an array of all 'a' elements with 'external' in their\n class attribute that are contained inside 'p' elements that are\n contained inside the 'div' element which has id=\"main\"\n\n New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\n Version 0.4 - Simon Willison, March 25th 2003\n -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n -- Opera 7 fails\n\n Version 0.5 - Carl Sverre, Jan 7th 2013\n -- Now uses jQuery-esque `hasClass` for testing class name\n equality. This fixes a bug related to '-' characters being\n considered not part of a 'word' in regex.\n */\n\n function getAllChildren(e) {\n // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n return e.all ? e.all : e.getElementsByTagName('*');\n }\n\n var bad_whitespace = /[\\t\\r\\n]/g;\n\n function hasClass(elem, selector) {\n var className = ' ' + selector + ' ';\n return ((' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0);\n }\n\n function getElementsBySelector(selector) {\n // Attempt to fail gracefully in lesser browsers\n if (!document.getElementsByTagName) {\n return [];\n }\n // Split selector in to tokens\n var tokens = selector.split(' ');\n var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;\n var currentContext = [document];\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i].replace(/^\\s+/, '').replace(/\\s+$/, '');\n if (token.indexOf('#') > -1) {\n // Token is an ID selector\n bits = token.split('#');\n tagName = bits[0];\n var id = bits[1];\n var element = document.getElementById(id);\n if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {\n // element not found or tag with that ID not found, return false\n return [];\n }\n // Set currentContext to contain just this element\n currentContext = [element];\n continue; // Skip to next token\n }\n if (token.indexOf('.') > -1) {\n // Token contains a class selector\n bits = token.split('.');\n tagName = bits[0];\n var className = bits[1];\n if (!tagName) {\n tagName = '*';\n }\n // Get elements matching tag, filter them for class selector\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (found[j].className &&\n _.isString(found[j].className) && // some SVG elements have classNames which are not strings\n hasClass(found[j], className)\n ) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n continue; // Skip to next token\n }\n // Code to deal with attribute selectors\n var token_match = token.match(TOKEN_MATCH_REGEX);\n if (token_match) {\n tagName = token_match[1];\n var attrName = token_match[2];\n var attrOperator = token_match[3];\n var attrValue = token_match[4];\n if (!tagName) {\n tagName = '*';\n }\n // Grab all of the tagName elements within current context\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n var checkFunction; // This function will be used to filter the elements\n switch (attrOperator) {\n case '=': // Equality\n checkFunction = function(e) {\n return (e.getAttribute(attrName) == attrValue);\n };\n break;\n case '~': // Match one of space seperated words\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('\\\\b' + attrValue + '\\\\b')));\n };\n break;\n case '|': // Match start with value followed by optional hyphen\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?')));\n };\n break;\n case '^': // Match starts with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) === 0);\n };\n break;\n case '$': // Match ends with value - fails with \"Warning\" in Opera 7\n checkFunction = function(e) {\n return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length);\n };\n break;\n case '*': // Match ends with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) > -1);\n };\n break;\n default:\n // Just test for existence of attribute\n checkFunction = function(e) {\n return e.getAttribute(attrName);\n };\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (checkFunction(found[j])) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n continue; // Skip to next token\n }\n // If we get here, token is JUST an element (not a class or ID selector)\n tagName = token;\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n elements = currentContext[j].getElementsByTagName(tagName);\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = found;\n }\n return currentContext;\n }\n\n return function(query) {\n if (_.isElement(query)) {\n return [query];\n } else if (_.isObject(query) && !_.isUndefined(query.length)) {\n return query;\n } else {\n return getElementsBySelector.call(this, query);\n }\n };\n})();\n\nvar CAMPAIGN_KEYWORDS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'utm_id', 'utm_source_platform','utm_campaign_id', 'utm_creative_format', 'utm_marketing_tactic'];\nvar CLICK_IDS = ['dclid', 'fbclid', 'gclid', 'ko_click_id', 'li_fat_id', 'msclkid', 'sccid', 'ttclid', 'twclid', 'wbraid'];\n\n_.info = {\n campaignParams: function(default_value) {\n var kw = '',\n params = {};\n _.each(CAMPAIGN_KEYWORDS, function(kwkey) {\n kw = _.getQueryParam(document.URL, kwkey);\n if (kw.length) {\n params[kwkey] = kw;\n } else if (default_value !== undefined) {\n params[kwkey] = default_value;\n }\n });\n\n return params;\n },\n\n clickParams: function() {\n var id = '',\n params = {};\n _.each(CLICK_IDS, function(idkey) {\n id = _.getQueryParam(document.URL, idkey);\n if (id.length) {\n params[idkey] = id;\n }\n });\n\n return params;\n },\n\n marketingParams: function() {\n return _.extend(_.info.campaignParams(), _.info.clickParams());\n },\n\n searchEngine: function(referrer) {\n if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google';\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing';\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo';\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo';\n } else {\n return null;\n }\n },\n\n searchInfo: function(referrer) {\n var search = _.info.searchEngine(referrer),\n param = (search != 'yahoo') ? 'q' : 'p',\n ret = {};\n\n if (search !== null) {\n ret['$search_engine'] = search;\n\n var keyword = _.getQueryParam(referrer, param);\n if (keyword.length) {\n ret['mp_keyword'] = keyword;\n }\n }\n\n return ret;\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function(user_agent, vendor, opera) {\n vendor = vendor || ''; // vendor is undefined for at least IE9\n if (opera || _.includes(user_agent, ' OPR/')) {\n if (_.includes(user_agent, 'Mini')) {\n return 'Opera Mini';\n }\n return 'Opera';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile';\n } else if (_.includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet';\n } else if (_.includes(user_agent, 'Edge') || _.includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge';\n } else if (_.includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile';\n } else if (_.includes(user_agent, 'Chrome')) {\n return 'Chrome';\n } else if (_.includes(user_agent, 'CriOS')) {\n return 'Chrome iOS';\n } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {\n return 'UC Browser';\n } else if (_.includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS';\n } else if (_.includes(vendor, 'Apple')) {\n if (_.includes(user_agent, 'Mobile')) {\n return 'Mobile Safari';\n }\n return 'Safari';\n } else if (_.includes(user_agent, 'Android')) {\n return 'Android Mobile';\n } else if (_.includes(user_agent, 'Konqueror')) {\n return 'Konqueror';\n } else if (_.includes(user_agent, 'Firefox')) {\n return 'Firefox';\n } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {\n return 'Internet Explorer';\n } else if (_.includes(user_agent, 'Gecko')) {\n return 'Mozilla';\n } else {\n return '';\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n */\n browserVersion: function(userAgent, vendor, opera) {\n var browser = _.info.browser(userAgent, vendor, opera);\n var versionRegexs = {\n 'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n 'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n 'Chrome': /Chrome\\/(\\d+(\\.\\d+)?)/,\n 'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n 'UC Browser' : /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n 'Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Opera': /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n 'Firefox': /Firefox\\/(\\d+(\\.\\d+)?)/,\n 'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n 'Konqueror': /Konqueror:(\\d+(\\.\\d+)?)/,\n 'BlackBerry': /BlackBerry (\\d+(\\.\\d+)?)/,\n 'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n 'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n 'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n 'Mozilla': /rv:(\\d+(\\.\\d+)?)/\n };\n var regex = versionRegexs[browser];\n if (regex === undefined) {\n return null;\n }\n var matches = userAgent.match(regex);\n if (!matches) {\n return null;\n }\n return parseFloat(matches[matches.length - 2]);\n },\n\n os: function() {\n var a = userAgent;\n if (/Windows/i.test(a)) {\n if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n return 'Windows Phone';\n }\n return 'Windows';\n } else if (/(iPhone|iPad|iPod)/.test(a)) {\n return 'iOS';\n } else if (/Android/.test(a)) {\n return 'Android';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n return 'BlackBerry';\n } else if (/Mac/i.test(a)) {\n return 'Mac OS X';\n } else if (/Linux/.test(a)) {\n return 'Linux';\n } else if (/CrOS/.test(a)) {\n return 'Chrome OS';\n } else {\n return '';\n }\n },\n\n device: function(user_agent) {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone';\n } else if (/iPad/.test(user_agent)) {\n return 'iPad';\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch';\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (/Android/.test(user_agent)) {\n return 'Android';\n } else {\n return '';\n }\n },\n\n referringDomain: function(referrer) {\n var split = referrer.split('/');\n if (split.length >= 3) {\n return split[2];\n }\n return '';\n },\n\n currentUrl: function() {\n return window.location.href;\n },\n\n properties: function(extra_props) {\n if (typeof extra_props !== 'object') {\n extra_props = {};\n }\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera),\n '$referrer': document.referrer,\n '$referring_domain': _.info.referringDomain(document.referrer),\n '$device': _.info.device(userAgent)\n }), {\n '$current_url': _.info.currentUrl(),\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera),\n '$screen_height': screen.height,\n '$screen_width': screen.width,\n 'mp_lib': 'web',\n '$lib_version': Config.LIB_VERSION,\n '$insert_id': cheap_guid(),\n 'time': _.timestamp() / 1000 // epoch time in seconds\n }, _.strip_empty_properties(extra_props));\n },\n\n people_properties: function() {\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera)\n }), {\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera)\n });\n },\n\n mpPageViewProperties: function() {\n return _.strip_empty_properties({\n 'current_page_title': document.title,\n 'current_domain': window.location.hostname,\n 'current_url_path': window.location.pathname,\n 'current_url_protocol': window.location.protocol,\n 'current_url_search': window.location.search\n });\n }\n};\n\n/**\n * Returns a throttled function that will only run at most every `waitMs` and returns a promise that resolves with the next invocation.\n * Throttled calls will build up a batch of args and invoke the callback with all args since the last invocation.\n */\nvar batchedThrottle = function (fn, waitMs) {\n var timeoutPromise = null;\n var throttledItems = [];\n return function (item) {\n var self = this;\n throttledItems.push(item);\n\n if (!timeoutPromise) {\n timeoutPromise = new Promise(function (resolve) {\n setTimeout(function () {\n var returnValue = fn.apply(self, [throttledItems]);\n timeoutPromise = null;\n throttledItems = [];\n resolve(returnValue);\n }, waitMs);\n });\n }\n return timeoutPromise;\n };\n};\n\nvar cheap_guid = function(maxlen) {\n var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);\n return maxlen ? guid.substring(0, maxlen) : guid;\n};\n\n// naive way to extract domain name (example.com) from full hostname (my.sub.example.com)\nvar SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\\.[a-z]+$/i;\n// this next one attempts to account for some ccSLDs, e.g. extracting oxford.ac.uk from www.oxford.ac.uk\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i;\n/**\n * Attempts to extract main domain name from full hostname, using a few blunt heuristics. For\n * common TLDs like .com/.org that always have a simple SLD.TLD structure (example.com), we\n * simply extract the last two .-separated parts of the hostname (SIMPLE_DOMAIN_MATCH_REGEX).\n * For others, we attempt to account for short ccSLD+TLD combos (.ac.uk) with the legacy\n * DOMAIN_MATCH_REGEX (kept to maintain backwards compatibility with existing Mixpanel\n * integrations). The only _reliable_ way to extract domain from hostname is with an up-to-date\n * list like at https://publicsuffix.org/ so for cases that this helper fails at, the SDK\n * offers the 'cookie_domain' config option to set it explicitly.\n * @example\n * extract_domain('my.sub.example.com')\n * // 'example.com'\n */\nvar extract_domain = function(hostname) {\n var domain_regex = DOMAIN_MATCH_REGEX;\n var parts = hostname.split('.');\n var tld = parts[parts.length - 1];\n if (tld.length > 4 || tld === 'com' || tld === 'org') {\n domain_regex = SIMPLE_DOMAIN_MATCH_REGEX;\n }\n var matches = hostname.match(domain_regex);\n return matches ? matches[0] : '';\n};\n\n/**\n * Check whether we have network connection. default to true for browsers that don't support navigator.onLine (IE)\n * @returns {boolean}\n */\nvar isOnline = function() {\n var onLine = window.navigator['onLine'];\n return _.isUndefined(onLine) || onLine;\n};\n\nvar NOOP_FUNC = function () {};\n\nvar JSONStringify = null, JSONParse = null;\nif (typeof JSON !== 'undefined') {\n JSONStringify = JSON.stringify;\n JSONParse = JSON.parse;\n}\nJSONStringify = JSONStringify || _.JSONEncode;\nJSONParse = JSONParse || _.JSONDecode;\n\n// UNMINIFIED EXPORTS (for closure compiler)\n_['info'] = _.info;\n_['info']['browser'] = _.info.browser;\n_['info']['browserVersion'] = _.info.browserVersion;\n_['info']['device'] = _.info.device;\n_['info']['properties'] = _.info.properties;\n_['isBlockedUA'] = _.isBlockedUA;\n_['isEmptyObject'] = _.isEmptyObject;\n_['isObject'] = _.isObject;\n_['JSONDecode'] = _.JSONDecode;\n_['JSONEncode'] = _.JSONEncode;\n_['toArray'] = _.toArray;\n_['NPO'] = NpoPromise;\n\nexport {\n _,\n batchedThrottle,\n cheap_guid,\n console_with_prefix,\n console,\n document,\n extract_domain,\n JSONParse,\n JSONStringify,\n isOnline,\n localStorageSupported,\n MAX_RECORDING_MS,\n MAX_VALUE_FOR_MIN_RECORDING_MS,\n navigator,\n NOOP_FUNC,\n safewrap,\n safewrapClass,\n slice,\n userAgent,\n};\n","import { Promise } from '../promise-polyfill';\nimport { window } from '../window';\n\nvar MIXPANEL_DB_NAME = 'mixpanelBrowserDb';\n\nvar RECORDING_EVENTS_STORE_NAME = 'mixpanelRecordingEvents';\nvar RECORDING_REGISTRY_STORE_NAME = 'mixpanelRecordingRegistry';\n\n// note: increment the version number when adding new object stores\nvar DB_VERSION = 1;\nvar OBJECT_STORES = [RECORDING_EVENTS_STORE_NAME, RECORDING_REGISTRY_STORE_NAME];\n\n/**\n * @type {import('./wrapper').StorageWrapper}\n */\nvar IDBStorageWrapper = function (storeName) {\n /**\n * @type {Promise<IDBDatabase>|null}\n */\n this.dbPromise = null;\n this.storeName = storeName;\n};\n\nIDBStorageWrapper.prototype._openDb = function () {\n return new Promise(function (resolve, reject) {\n var openRequest = window.indexedDB.open(MIXPANEL_DB_NAME, DB_VERSION);\n openRequest['onerror'] = function () {\n reject(openRequest.error);\n };\n\n openRequest['onsuccess'] = function () {\n resolve(openRequest.result);\n };\n\n openRequest['onupgradeneeded'] = function (ev) {\n var db = ev.target.result;\n\n OBJECT_STORES.forEach(function (storeName) {\n db.createObjectStore(storeName);\n });\n };\n });\n};\n\nIDBStorageWrapper.prototype.init = function () {\n if (!window.indexedDB) {\n return Promise.reject('indexedDB is not supported in this browser');\n }\n\n if (!this.dbPromise) {\n this.dbPromise = this._openDb();\n }\n\n return this.dbPromise\n .then(function (dbOrError) {\n if (dbOrError instanceof window['IDBDatabase']) {\n return Promise.resolve();\n } else {\n return Promise.reject(dbOrError);\n }\n });\n};\n\n/**\n * @param {IDBTransactionMode} mode\n * @param {function(IDBObjectStore): void} storeCb\n */\nIDBStorageWrapper.prototype.makeTransaction = function (mode, storeCb) {\n var storeName = this.storeName;\n var doTransaction = function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction(storeName, mode);\n transaction.oncomplete = function () {\n resolve(transaction);\n };\n transaction.onabort = transaction.onerror = function () {\n reject(transaction.error);\n };\n\n storeCb(transaction.objectStore(storeName));\n });\n };\n\n return this.dbPromise\n .then(doTransaction)\n .catch(function (err) {\n if (err && err['name'] === 'InvalidStateError') {\n // try reopening the DB if the connection is closed\n this.dbPromise = this._openDb();\n return this.dbPromise.then(doTransaction);\n } else {\n return Promise.reject(err);\n }\n }.bind(this));\n};\n\nIDBStorageWrapper.prototype.setItem = function (key, value) {\n return this.makeTransaction('readwrite', function (objectStore) {\n objectStore.put(value, key);\n });\n};\n\nIDBStorageWrapper.prototype.getItem = function (key) {\n var req;\n return this.makeTransaction('readonly', function (objectStore) {\n req = objectStore.get(key);\n }).then(function () {\n return req.result;\n });\n};\n\nIDBStorageWrapper.prototype.removeItem = function (key) {\n return this.makeTransaction('readwrite', function (objectStore) {\n objectStore.delete(key);\n });\n};\n\nIDBStorageWrapper.prototype.getAll = function () {\n var req;\n return this.makeTransaction('readonly', function (objectStore) {\n req = objectStore.getAll();\n }).then(function () {\n return req.result;\n });\n};\n\nexport { IDBStorageWrapper, RECORDING_EVENTS_STORE_NAME, RECORDING_REGISTRY_STORE_NAME };\n","/**\n * GDPR utils\n *\n * The General Data Protection Regulation (GDPR) is a regulation in EU law on data protection\n * and privacy for all individuals within the European Union. It addresses the export of personal\n * data outside the EU. The GDPR aims primarily to give control back to citizens and residents\n * over their personal data and to simplify the regulatory environment for international business\n * by unifying the regulation within the EU.\n *\n * This set of utilities is intended to enable opt in/out functionality in the Mixpanel JS SDK.\n * These functions are used internally by the SDK and are not intended to be publicly exposed.\n */\n\nimport { _, console } from './utils';\nimport { window } from './window';\n\n/**\n * A function used to track a Mixpanel event (e.g. MixpanelLib.track)\n * @callback trackFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n */\n\n/** Public **/\n\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nexport function optIn(token, options) {\n _optInOut(true, token, options);\n}\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\nexport function optOut(token, options) {\n _optInOut(false, token, options);\n}\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\nexport function hasOptedIn(token, options) {\n return _getStorageValue(token, options) === '1';\n}\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the user has opted out of the given opt type\n */\nexport function hasOptedOut(token, options) {\n if (_hasDoNotTrackFlagOn(options)) {\n console.warn('This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\"');\n return true;\n }\n var optedOut = _getStorageValue(token, options) === '0';\n if (optedOut) {\n console.warn('You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data.');\n }\n return optedOut;\n}\n\n/**\n * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nexport function addOptOutCheckMixpanelLib(method) {\n return _addOptOutCheck(method, function(name) {\n return this.get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nexport function addOptOutCheckMixpanelPeople(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nexport function addOptOutCheckMixpanelGroup(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nexport function clearOptInOut(token, options) {\n options = options || {};\n _getStorage(options).remove(\n _getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain\n );\n}\n\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either _.cookie or _.localstorage\n */\nfunction _getStorage(options) {\n options = options || {};\n return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;\n}\n\n/**\n * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\nfunction _getStorageKey(token, options) {\n options = options || {};\n return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n\n/**\n * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\nfunction _getStorageValue(token, options) {\n return _getStorage(options).get(_getStorageKey(token, options));\n}\n\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the DNT setting is true\n */\nfunction _hasDoNotTrackFlagOn(options) {\n if (options && options.ignoreDnt) {\n return false;\n }\n var win = (options && options.window) || window;\n var nav = win['navigator'] || {};\n var hasDntOn = false;\n\n _.each([\n nav['doNotTrack'], // standard\n nav['msDoNotTrack'],\n win['doNotTrack']\n ], function(dntValue) {\n if (_.includes([true, 1, '1', 'yes'], dntValue)) {\n hasDntOn = true;\n }\n });\n\n return hasDntOn;\n}\n\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction _optInOut(optValue, token, options) {\n if (!_.isString(token) || !token.length) {\n console.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n return;\n }\n\n options = options || {};\n\n _getStorage(options).set(\n _getStorageKey(token, options),\n optValue ? 1 : 0,\n _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null,\n !!options.crossSubdomainCookie,\n !!options.secureCookie,\n !!options.crossSiteCookie,\n options.cookieDomain\n );\n\n if (options.track && optValue) { // only track event if opting in (optValue=true)\n options.track(options.trackEventName || '$opt_in', options.trackProperties, {\n 'send_immediately': true\n });\n }\n}\n\n/**\n * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction _addOptOutCheck(method, getConfigValue) {\n return function() {\n var optedOut = false;\n\n try {\n var token = getConfigValue.call(this, 'token');\n var ignoreDnt = getConfigValue.call(this, 'ignore_dnt');\n var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');\n var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');\n var win = getConfigValue.call(this, 'window'); // used to override window during browser tests\n\n if (token) { // if there was an issue getting the token, continue method execution as normal\n optedOut = hasOptedOut(token, {\n ignoreDnt: ignoreDnt,\n persistenceType: persistenceType,\n persistencePrefix: persistencePrefix,\n window: win\n });\n }\n } catch(err) {\n console.error('Unexpected error when checking tracking opt-out status: ' + err);\n }\n\n if (!optedOut) {\n return method.apply(this, arguments);\n }\n\n var callback = arguments[arguments.length - 1];\n if (typeof(callback) === 'function') {\n callback(0);\n }\n\n return;\n };\n}\n","import { Promise } from './promise-polyfill';\nimport { console_with_prefix, localStorageSupported, _ } from './utils'; // eslint-disable-line camelcase\nimport { window } from './window';\n\nvar logger = console_with_prefix('lock');\n\n/**\n * SharedLock: a mutex built on HTML5 localStorage, to ensure that only one browser\n * window/tab at a time will be able to access shared resources.\n *\n * Based on the Alur and Taubenfeld fast lock\n * (http://www.cs.rochester.edu/research/synchronization/pseudocode/fastlock.html)\n * with an added timeout to ensure there will be eventual progress in the event\n * that a window is closed in the middle of the callback.\n *\n * Implementation based on the original version by David Wolever (https://github.com/wolever)\n * at https://gist.github.com/wolever/5fd7573d1ef6166e8f8c4af286a69432.\n *\n * @example\n * const myLock = new SharedLock('some-key');\n * myLock.withLock(function() {\n * console.log('I hold the mutex!');\n * });\n *\n * @constructor\n */\nvar SharedLock = function(key, options) {\n options = options || {};\n\n this.storageKey = key;\n this.storage = options.storage || window.localStorage;\n this.pollIntervalMS = options.pollIntervalMS || 100;\n this.timeoutMS = options.timeoutMS || 2000;\n\n // dependency-inject promise implementation for testing purposes\n this.promiseImpl = options.promiseImpl || Promise;\n};\n\n// pass in a specific pid to test contention scenarios; otherwise\n// it is chosen randomly for each acquisition attempt\nSharedLock.prototype.withLock = function(lockedCB, pid) {\n var Promise = this.promiseImpl;\n return new Promise(_.bind(function (resolve, reject) {\n var i = pid || (new Date().getTime() + '|' + Math.random());\n var startTime = new Date().getTime();\n var key = this.storageKey;\n var pollIntervalMS = this.pollIntervalMS;\n var timeoutMS = this.timeoutMS;\n var storage = this.storage;\n\n var keyX = key + ':X';\n var keyY = key + ':Y';\n var keyZ = key + ':Z';\n\n var delay = function(cb) {\n if (new Date().getTime() - startTime > timeoutMS) {\n logger.error('Timeout waiting for mutex on ' + key + '; clearing lock. [' + i + ']');\n storage.removeItem(keyZ);\n storage.removeItem(keyY);\n loop();\n return;\n }\n setTimeout(function() {\n try {\n cb();\n } catch(err) {\n reject(err);\n }\n }, pollIntervalMS * (Math.random() + 0.1));\n };\n\n var waitFor = function(predicate, cb) {\n if (predicate()) {\n cb();\n } else {\n delay(function() {\n waitFor(predicate, cb);\n });\n }\n };\n\n var getSetY = function() {\n var valY = storage.getItem(keyY);\n if (valY && valY !== i) { // if Y == i then this process already has the lock (useful for test cases)\n return false;\n } else {\n storage.setItem(keyY, i);\n if (storage.getItem(keyY) === i) {\n return true;\n } else {\n if (!localStorageSupported(storage, true)) {\n reject(new Error('localStorage support dropped while acquiring lock'));\n }\n return false;\n }\n }\n };\n\n var loop = function() {\n storage.setItem(keyX, i);\n\n waitFor(getSetY, function() {\n if (storage.getItem(keyX) === i) {\n criticalSection();\n return;\n }\n\n delay(function() {\n if (storage.getItem(keyY) !== i) {\n loop();\n return;\n }\n waitFor(function() {\n return !storage.getItem(keyZ);\n }, criticalSection);\n });\n });\n };\n\n var criticalSection = function() {\n storage.setItem(keyZ, '1');\n var removeLock = function () {\n storage.removeItem(keyZ);\n if (storage.getItem(keyY) === i) {\n storage.removeItem(keyY);\n }\n if (storage.getItem(keyX) === i) {\n storage.removeItem(keyX);\n }\n };\n\n lockedCB()\n .then(function (ret) {\n removeLock();\n resolve(ret);\n })\n .catch(function (err) {\n removeLock();\n reject(err);\n });\n };\n\n try {\n if (localStorageSupported(storage, true)) {\n loop();\n } else {\n throw new Error('localStorage support check failed');\n }\n } catch(err) {\n reject(err);\n }\n }, this));\n};\n\nexport { SharedLock };\n","import { Promise } from '../promise-polyfill';\nimport { _, JSONParse, JSONStringify } from '../utils'; // eslint-disable-line camelcase\nimport { window } from '../window';\n\n/**\n * @type {import('./wrapper').StorageWrapper}\n */\nvar LocalStorageWrapper = function (storageOverride) {\n this.storage = storageOverride || window.localStorage;\n};\n\nLocalStorageWrapper.prototype.init = function () {\n return Promise.resolve();\n};\n\nLocalStorageWrapper.prototype.setItem = function (key, value) {\n return new Promise(_.bind(function (resolve, reject) {\n try {\n this.storage.setItem(key, JSONStringify(value));\n } catch (e) {\n reject(e);\n }\n resolve();\n }, this));\n};\n\nLocalStorageWrapper.prototype.getItem = function (key) {\n return new Promise(_.bind(function (resolve, reject) {\n var item;\n try {\n item = JSONParse(this.storage.getItem(key));\n } catch (e) {\n reject(e);\n }\n resolve(item);\n }, this));\n};\n\nLocalStorageWrapper.prototype.removeItem = function (key) {\n return new Promise(_.bind(function (resolve, reject) {\n try {\n this.storage.removeItem(key);\n } catch (e) {\n reject(e);\n }\n resolve();\n }, this));\n};\n\nexport { LocalStorageWrapper };\n","import { SharedLock } from './shared-lock';\nimport { batchedThrottle, cheap_guid, console_with_prefix, localStorageSupported, _ } from './utils'; // eslint-disable-line camelcase\nimport { window } from './window';\nimport { LocalStorageWrapper } from './storage/local-storage';\nimport { Promise } from './promise-polyfill';\n\nvar logger = console_with_prefix('batch');\n\n/**\n * RequestQueue: queue for batching API requests with localStorage backup for retries.\n * Maintains an in-memory queue which represents the source of truth for the current\n * page, but also writes all items out to a copy in the browser's localStorage, which\n * can be read on subsequent pageloads and retried. For batchability, all the request\n * items in the queue should be of the same type (events, people updates, group updates)\n * so they can be sent in a single request to the same API endpoint.\n *\n * LocalStorage keying and locking: In order for reloads and subsequent pageloads of\n * the same site to access the same persisted data, they must share the same localStorage\n * key (for instance based on project token and queue type). Therefore access to the\n * localStorage entry is guarded by an asynchronous mutex (SharedLock) to prevent\n * simultaneously open windows/tabs from overwriting each other's data (which would lead\n * to data loss in some situations).\n * @constructor\n */\nvar RequestQueue = function (storageKey, options) {\n options = options || {};\n this.storageKey = storageKey;\n this.usePersistence = options.usePersistence;\n if (this.usePersistence) {\n this.queueStorage = options.queueStorage || new LocalStorageWrapper();\n this.lock = new SharedLock(storageKey, {\n storage: options.sharedLockStorage || window.localStorage,\n timeoutMS: options.sharedLockTimeoutMS,\n });\n }\n this.reportError = options.errorReporter || _.bind(logger.error, logger);\n\n this.pid = options.pid || null; // pass pid to test out storage lock contention scenarios\n\n this.memQueue = [];\n this.initialized = false;\n\n if (options.enqueueThrottleMs) {\n this.enqueuePersisted = batchedThrottle(_.bind(this._enqueuePersisted, this), options.enqueueThrottleMs);\n } else {\n this.enqueuePersisted = _.bind(function (queueEntry) {\n return this._enqueuePersisted([queueEntry]);\n }, this);\n }\n};\n\nRequestQueue.prototype.ensureInit = function () {\n if (this.initialized) {\n return Promise.resolve();\n }\n\n return this.queueStorage\n .init()\n .then(_.bind(function () {\n this.initialized = true;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error initializing queue persistence. Disabling persistence', err);\n this.initialized = true;\n this.usePersistence = false;\n }, this));\n};\n\n/**\n * Add one item to queues (memory and localStorage). The queued entry includes\n * the given item along with an auto-generated ID and a \"flush-after\" timestamp.\n * It is expected that the item will be sent over the network and dequeued\n * before the flush-after time; if this doesn't happen it is considered orphaned\n * (e.g., the original tab where it was enqueued got closed before it could be\n * sent) and the item can be sent by any tab that finds it in localStorage.\n *\n * The final callback param is called with a param indicating success or\n * failure of the enqueue operation; it is asynchronous because the localStorage\n * lock is asynchronous.\n */\nRequestQueue.prototype.enqueue = function (item, flushInterval) {\n var queueEntry = {\n 'id': cheap_guid(),\n 'flushAfter': new Date().getTime() + flushInterval * 2,\n 'payload': item\n };\n\n if (!this.usePersistence) {\n this.memQueue.push(queueEntry);\n return Promise.resolve(true);\n } else {\n return this.enqueuePersisted(queueEntry);\n }\n};\n\nRequestQueue.prototype._enqueuePersisted = function (queueEntries) {\n var enqueueItem = _.bind(function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n return this.saveToStorage(storedQueue.concat(queueEntries));\n }, this))\n .then(_.bind(function (succeeded) {\n // only add to in-memory queue when storage succeeds\n if (succeeded) {\n this.memQueue = this.memQueue.concat(queueEntries);\n }\n\n return succeeded;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error enqueueing items', err, queueEntries);\n return false;\n }, this));\n }, this);\n\n return this.lock\n .withLock(enqueueItem, this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n return false;\n }, this));\n};\n\n/**\n * Read out the given number of queue entries. If this.memQueue\n * has fewer than batchSize items, then look for \"orphaned\" items\n * in the persisted queue (items where the 'flushAfter' time has\n * already passed).\n */\nRequestQueue.prototype.fillBatch = function (batchSize) {\n var batch = this.memQueue.slice(0, batchSize);\n if (this.usePersistence && batch.length < batchSize) {\n // don't need lock just to read events; localStorage is thread-safe\n // and the worst that could happen is a duplicate send of some\n // orphaned events, which will be deduplicated on the server side\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n if (storedQueue.length) {\n // item IDs already in batch; don't duplicate out of storage\n var idsInBatch = {}; // poor man's Set\n _.each(batch, function (item) {\n idsInBatch[item['id']] = true;\n });\n\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (new Date().getTime() > item['flushAfter'] && !idsInBatch[item['id']]) {\n item.orphaned = true;\n batch.push(item);\n if (batch.length >= batchSize) {\n break;\n }\n }\n }\n }\n\n return batch;\n }, this));\n } else {\n return Promise.resolve(batch);\n }\n};\n\n/**\n * Remove items with matching 'id' from array (immutably)\n * also remove any item without a valid id (e.g., malformed\n * storage entries).\n */\nvar filterOutIDsAndInvalid = function (items, idSet) {\n var filteredItems = [];\n _.each(items, function (item) {\n if (item['id'] && !idSet[item['id']]) {\n filteredItems.push(item);\n }\n });\n return filteredItems;\n};\n\n/**\n * Remove items with matching IDs from both in-memory queue\n * and persisted queue\n */\nRequestQueue.prototype.removeItemsByID = function (ids) {\n var idSet = {}; // poor man's Set\n _.each(ids, function (id) {\n idSet[id] = true;\n });\n\n this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet);\n if (!this.usePersistence) {\n return Promise.resolve(true);\n } else {\n var removeFromStorage = _.bind(function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue = filterOutIDsAndInvalid(storedQueue, idSet);\n return this.saveToStorage(storedQueue);\n }, this))\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n // an extra check: did storage report success but somehow\n // the items are still there?\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (item['id'] && !!idSet[item['id']]) {\n throw new Error('Item not removed from storage');\n }\n }\n return true;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error removing items', err, ids);\n return false;\n }, this));\n }, this);\n\n return this.lock\n .withLock(removeFromStorage, this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n if (!localStorageSupported(this.lock.storage, true)) {\n // Looks like localStorage writes have stopped working sometime after\n // initialization (probably full), and so nobody can acquire locks\n // anymore. Consider it temporarily safe to remove items without the\n // lock, since nobody's writing successfully anyway.\n return removeFromStorage()\n .then(_.bind(function (success) {\n if (!success) {\n // OK, we couldn't even write out the smaller queue. Try clearing it\n // entirely.\n return this.queueStorage.removeItem(this.storageKey).then(function () {\n return success;\n });\n }\n return success;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error clearing queue', err);\n return false;\n }, this));\n } else {\n return false;\n }\n }, this));\n }\n};\n\n// internal helper for RequestQueue.updatePayloads\nvar updatePayloads = function (existingItems, itemsToUpdate) {\n var newItems = [];\n _.each(existingItems, function (item) {\n var id = item['id'];\n if (id in itemsToUpdate) {\n var newPayload = itemsToUpdate[id];\n if (newPayload !== null) {\n item['payload'] = newPayload;\n newItems.push(item);\n }\n } else {\n // no update\n newItems.push(item);\n }\n });\n return newItems;\n};\n\n/**\n * Update payloads of given items in both in-memory queue and\n * persisted queue. Items set to null are removed from queues.\n */\nRequestQueue.prototype.updatePayloads = function (itemsToUpdate) {\n this.memQueue = updatePayloads(this.memQueue, itemsToUpdate);\n if (!this.usePersistence) {\n return Promise.resolve(true);\n } else {\n return this.lock\n .withLock(_.bind(function lockAcquired() {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue = updatePayloads(storedQueue, itemsToUpdate);\n return this.saveToStorage(storedQueue);\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error updating items', itemsToUpdate, err);\n return false;\n }, this));\n }, this), this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n return false;\n }, this));\n }\n};\n\n/**\n * Read and parse items array from localStorage entry, handling\n * malformed/missing data if necessary.\n */\nRequestQueue.prototype.readFromStorage = function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.getItem(this.storageKey);\n }, this))\n .then(_.bind(function (storageEntry) {\n if (storageEntry) {\n if (!_.isArray(storageEntry)) {\n this.reportError('Invalid storage entry:', storageEntry);\n storageEntry = null;\n }\n }\n return storageEntry || [];\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error retrieving queue', err);\n return [];\n }, this));\n};\n\n/**\n * Serialize the given items array to localStorage.\n */\nRequestQueue.prototype.saveToStorage = function (queue) {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.setItem(this.storageKey, queue);\n }, this))\n .then(function () {\n return true;\n })\n .catch(_.bind(function (err) {\n this.reportError('Error saving queue', err);\n return false;\n }, this));\n};\n\n/**\n * Clear out queues (memory and localStorage).\n */\nRequestQueue.prototype.clear = function () {\n this.memQueue = [];\n\n if (this.usePersistence) {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.removeItem(this.storageKey);\n }, this));\n } else {\n return Promise.resolve();\n }\n};\n\nexport { RequestQueue };\n","import Config from './config';\nimport { Promise } from './promise-polyfill';\nimport { RequestQueue } from './request-queue';\nimport { console_with_prefix, isOnline, _ } from './utils'; // eslint-disable-line camelcase\n\n// maximum interval between request retries after exponential backoff\nvar MAX_RETRY_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes\n\nvar logger = console_with_prefix('batch');\n\n/**\n * RequestBatcher: manages the queueing, flushing, retry etc of requests of one\n * type (events, people, groups).\n * Uses RequestQueue to manage the backing store.\n * @constructor\n */\nvar RequestBatcher = function(storageKey, options) {\n this.errorReporter = options.errorReporter;\n this.queue = new RequestQueue(storageKey, {\n errorReporter: _.bind(this.reportError, this),\n queueStorage: options.queueStorage,\n sharedLockStorage: options.sharedLockStorage,\n sharedLockTimeoutMS: options.sharedLockTimeoutMS,\n usePersistence: options.usePersistence,\n enqueueThrottleMs: options.enqueueThrottleMs\n });\n\n this.libConfig = options.libConfig;\n this.sendRequest = options.sendRequestFunc;\n this.beforeSendHook = options.beforeSendHook;\n this.stopAllBatching = options.stopAllBatchingFunc;\n\n // seed variable batch size + flush interval with configured values\n this.batchSize = this.libConfig['batch_size'];\n this.flushInterval = this.libConfig['batch_flush_interval_ms'];\n\n this.stopped = !this.libConfig['batch_autostart'];\n this.consecutiveRemovalFailures = 0;\n\n // extra client-side dedupe\n this.itemIdsSentSuccessfully = {};\n\n // Make the flush occur at the interval specified by flushIntervalMs, default behavior will attempt consecutive flushes\n // as long as the queue is not empty. This is useful for high-frequency events like Session Replay where we might end up\n // in a request loop and get ratelimited by the server.\n this.flushOnlyOnInterval = options.flushOnlyOnInterval || false;\n\n this._flushPromise = null;\n};\n\n/**\n * Add one item to queue.\n */\nRequestBatcher.prototype.enqueue = function(item) {\n return this.queue.enqueue(item, this.flushInterval);\n};\n\n/**\n * Start flushing batches at the configured time interval. Must call\n * this method upon SDK init in order to send anything over the network.\n */\nRequestBatcher.prototype.start = function() {\n this.stopped = false;\n this.consecutiveRemovalFailures = 0;\n return this.flush();\n};\n\n/**\n * Stop flushing batches. Can be restarted by calling start().\n */\nRequestBatcher.prototype.stop = function() {\n this.stopped = true;\n if (this.timeoutID) {\n clearTimeout(this.timeoutID);\n this.timeoutID = null;\n }\n};\n\n/**\n * Clear out queue.\n */\nRequestBatcher.prototype.clear = function() {\n return this.queue.clear();\n};\n\n/**\n * Restore batch size configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetBatchSize = function() {\n this.batchSize = this.libConfig['batch_size'];\n};\n\n/**\n * Restore flush interval time configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetFlush = function() {\n this.scheduleFlush(this.libConfig['batch_flush_interval_ms']);\n};\n\n/**\n * Schedule the next flush in the given number of milliseconds.\n */\nRequestBatcher.prototype.scheduleFlush = function(flushMS) {\n this.flushInterval = flushMS;\n if (!this.stopped) { // don't schedule anymore if batching has been stopped\n this.timeoutID = setTimeout(_.bind(function() {\n if (!this.stopped) {\n this._flushPromise = this.flush();\n }\n }, this), this.flushInterval);\n }\n};\n\n/**\n * Send a request using the sendRequest callback, but promisified.\n * TODO: sendRequest should be promisified in the first place.\n */\nRequestBatcher.prototype.sendRequestPromise = function(data, options) {\n return new Promise(_.bind(function(resolve) {\n this.sendRequest(data, options, resolve);\n }, this));\n};\n\n\n/**\n * Flush one batch to network. Depending on success/failure modes, it will either\n * remove the batch from the queue or leave it in for retry, and schedule the next\n * flush. In cases of most network or API failures, it will back off exponentially\n * when retrying.\n * @param {Object} [options]\n * @param {boolean} [options.sendBeacon] - whether to send batch with\n * navigator.sendBeacon (only useful for sending batches before page unloads, as\n * sendBeacon offers no callbacks or status indications)\n */\nRequestBatcher.prototype.flush = function(options) {\n if (this.requestInProgress) {\n logger.log('Flush: Request already in progress');\n return Promise.resolve();\n }\n\n this.requestInProgress = true;\n\n options = options || {};\n var timeoutMS = this.libConfig['batch_request_timeout_ms'];\n var startTime = new Date().getTime();\n var currentBatchSize = this.batchSize;\n\n return this.queue.fillBatch(currentBatchSize)\n .then(_.bind(function(batch) {\n\n // if there's more items in the queue than the batch size, attempt\n // to flush again after the current batch is done.\n var attemptSecondaryFlush = batch.length === currentBatchSize;\n var dataForRequest = [];\n var transformedItems = {};\n _.each(batch, function(item) {\n var payload = item['payload'];\n if (this.beforeSendHook && !item.orphaned) {\n payload = this.beforeSendHook(payload);\n }\n if (payload) {\n // mp_sent_by_lib_version prop captures which lib version actually\n // sends each event (regardless of which version originally queued\n // it for sending)\n if (payload['event'] && payload['properties']) {\n payload['properties'] = _.extend(\n {},\n payload['properties'],\n {'mp_sent_by_lib_version': Config.LIB_VERSION}\n );\n }\n var addPayload = true;\n var itemId = item['id'];\n if (itemId) {\n if ((this.itemIdsSentSuccessfully[itemId] || 0) > 5) {\n this.reportError('[dupe] item ID sent too many times, not sending', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n addPayload = false;\n }\n } else {\n this.reportError('[dupe] found item with no ID', {item: item});\n }\n\n if (addPayload) {\n dataForRequest.push(payload);\n }\n }\n transformedItems[item['id']] = payload;\n }, this);\n\n if (dataForRequest.length < 1) {\n this.requestInProgress = false;\n this.resetFlush();\n return Promise.resolve(); // nothing to do\n }\n\n var removeItemsFromQueue = _.bind(function () {\n return this.queue\n .removeItemsByID(\n _.map(batch, function (item) {\n return item['id'];\n })\n )\n .then(_.bind(function (succeeded) {\n // client-side dedupe\n _.each(batch, _.bind(function(item) {\n var itemId = item['id'];\n if (itemId) {\n this.itemIdsSentSuccessfully[itemId] = this.itemIdsSentSuccessfully[itemId] || 0;\n this.itemIdsSentSuccessfully[itemId]++;\n if (this.itemIdsSentSuccessfully[itemId] > 5) {\n this.reportError('[dupe] item ID sent too many times', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n }\n } else {\n this.reportError('[dupe] found item with no ID while removing', {item: item});\n }\n }, this));\n\n if (succeeded) {\n this.consecutiveRemovalFailures = 0;\n if (this.flushOnlyOnInterval && !attemptSecondaryFlush) {\n this.resetFlush(); // schedule next batch with a delay\n return Promise.resolve();\n } else {\n return this.flush(); // handle next batch if the queue isn't empty\n }\n } else {\n if (++this.consecutiveRemovalFailures > 5) {\n this.reportError('Too many queue failures; disabling batching system.');\n this.stopAllBatching();\n } else {\n this.resetFlush();\n }\n return Promise.resolve();\n }\n }, this));\n }, this);\n\n var batchSendCallback = _.bind(function(res) {\n this.requestInProgress = false;\n\n try {\n\n // handle API response in a try-catch to make sure we can reset the\n // flush operation if something goes wrong\n\n if (options.unloading) {\n // update persisted data to include hook transformations\n return this.queue.updatePayloads(transformedItems);\n } else if (\n _.isObject(res) &&\n res.error === 'timeout' &&\n new Date().getTime() - startTime >= timeoutMS\n ) {\n this.reportError('Network timeout; retrying');\n return this.flush();\n } else if (\n _.isObject(res) &&\n (\n res.httpStatusCode >= 500\n || res.httpStatusCode === 429\n || (res.httpStatusCode <= 0 && !isOnline())\n || res.error === 'timeout'\n )\n ) {\n // network or API error, or 429 Too Many Requests, retry\n var retryMS = this.flushInterval * 2;\n if (res.retryAfter) {\n retryMS = (parseInt(res.retryAfter, 10) * 1000) || retryMS;\n }\n retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS);\n this.reportError('Error; retry in ' + retryMS + ' ms');\n this.scheduleFlush(retryMS);\n return Promise.resolve();\n } else if (_.isObject(res) && res.httpStatusCode === 413) {\n // 413 Payload Too Large\n if (batch.length > 1) {\n var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2));\n this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1);\n this.reportError('413 response; reducing batch size to ' + this.batchSize);\n this.resetFlush();\n return Promise.resolve();\n } else {\n this.reportError('Single-event request too large; dropping', batch);\n this.resetBatchSize();\n return removeItemsFromQueue();\n }\n } else {\n // successful network request+response; remove each item in batch from queue\n // (even if it was e.g. a 400, in which case retrying won't help)\n return removeItemsFromQueue();\n }\n } catch(err) {\n this.reportError('Error handling API response', err);\n this.resetFlush();\n }\n }, this);\n var requestOptions = {\n method: 'POST',\n verbose: true,\n ignore_json_errors: true, // eslint-disable-line camelcase\n timeout_ms: timeoutMS // eslint-disable-line camelcase\n };\n if (options.unloading) {\n requestOptions.transport = 'sendBeacon';\n }\n logger.log('MIXPANEL REQUEST:', dataForRequest);\n return this.sendRequestPromise(dataForRequest, requestOptions).then(batchSendCallback);\n }, this))\n .catch(_.bind(function(err) {\n this.reportError('Error flushing request queue', err);\n this.resetFlush();\n }, this));\n};\n\n/**\n * Log error to global logger and optional user-defined logger.\n */\nRequestBatcher.prototype.reportError = function(msg, err) {\n logger.error.apply(logger.error, arguments);\n if (this.errorReporter) {\n try {\n if (!(err instanceof Error)) {\n err = new Error(msg);\n }\n this.errorReporter(msg, err);\n } catch(err) {\n logger.error(err);\n }\n }\n};\n\nexport { RequestBatcher };\n","/**\n * @param {import('./session-recording').SerializedRecording} serializedRecording\n * @returns {boolean}\n */\nvar isRecordingExpired = function(serializedRecording) {\n var now = Date.now();\n return !serializedRecording || now > serializedRecording['maxExpires'] || now > serializedRecording['idleExpires'];\n};\n\nvar RECORD_ENQUEUE_THROTTLE_MS = 250;\n\nexport { isRecordingExpired, RECORD_ENQUEUE_THROTTLE_MS};\n","import { window } from '../window';\nimport { IncrementalSource, EventType } from 'rrweb';\nimport { MAX_RECORDING_MS, MAX_VALUE_FOR_MIN_RECORDING_MS, console_with_prefix, NOOP_FUNC, _, localStorageSupported} from '../utils'; // eslint-disable-line camelcase\nimport { IDBStorageWrapper, RECORDING_EVENTS_STORE_NAME } from '../storage/indexed-db';\nimport { addOptOutCheckMixpanelLib } from '../gdpr-utils';\nimport { RequestBatcher } from '../request-batcher';\nimport Config from '../config';\nimport { RECORD_ENQUEUE_THROTTLE_MS } from './utils';\n\nvar logger = console_with_prefix('recorder');\nvar CompressionStream = window['CompressionStream'];\n\nvar RECORDER_BATCHER_LIB_CONFIG = {\n 'batch_size': 1000,\n 'batch_flush_interval_ms': 10 * 1000,\n 'batch_request_timeout_ms': 90 * 1000,\n 'batch_autostart': true\n};\n\nvar ACTIVE_SOURCES = new Set([\n IncrementalSource.MouseMove,\n IncrementalSource.MouseInteraction,\n IncrementalSource.Scroll,\n IncrementalSource.ViewportResize,\n IncrementalSource.Input,\n IncrementalSource.TouchMove,\n IncrementalSource.MediaInteraction,\n IncrementalSource.Drag,\n IncrementalSource.Selection,\n]);\n\nfunction isUserEvent(ev) {\n return ev.type === EventType.IncrementalSnapshot && ACTIVE_SOURCES.has(ev.data.source);\n}\n\n/**\n * @typedef {Object} SerializedRecording\n * @property {number} idleExpires\n * @property {number} maxExpires\n * @property {number} replayStartTime\n * @property {number} seqNo\n * @property {string} batchStartUrl\n * @property {string} replayId\n * @property {string} tabId\n * @property {string} replayStartUrl\n */\n\n/**\n * @typedef {Object} SessionRecordingOptions\n * @property {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n * @property {String} [options.replayId] - unique uuid for a single replay\n * @property {Function} [options.onIdleTimeout] - callback when a recording reaches idle timeout\n * @property {Function} [options.onMaxLengthReached] - callback when a recording reaches its maximum length\n * @property {Function} [options.rrwebRecord] - rrweb's `record` function\n * @property {Function} [options.onBatchSent] - callback when a batch of events is sent to the server\n * @property {Storage} [options.sharedLockStorage] - optional storage for shared lock, used for test dependency injection\n * optional properties for deserialization:\n * @property {number} idleExpires\n * @property {number} maxExpires\n * @property {number} replayStartTime\n * @property {number} seqNo\n * @property {string} batchStartUrl\n * @property {string} replayStartUrl\n */\n\n\n/**\n * This class encapsulates a single session recording and its lifecycle.\n * @param {SessionRecordingOptions} options\n */\nvar SessionRecording = function(options) {\n this._mixpanel = options.mixpanelInstance;\n this._onIdleTimeout = options.onIdleTimeout || NOOP_FUNC;\n this._onMaxLengthReached = options.onMaxLengthReached || NOOP_FUNC;\n this._onBatchSent = options.onBatchSent || NOOP_FUNC;\n this._rrwebRecord = options.rrwebRecord || null;\n\n // internal rrweb stopRecording function\n this._stopRecording = null;\n this.replayId = options.replayId;\n\n this.batchStartUrl = options.batchStartUrl || null;\n this.replayStartUrl = options.replayStartUrl || null;\n this.idleExpires = options.idleExpires || null;\n this.maxExpires = options.maxExpires || null;\n this.replayStartTime = options.replayStartTime || null;\n this.seqNo = options.seqNo || 0;\n\n this.idleTimeoutId = null;\n this.maxTimeoutId = null;\n\n this.recordMaxMs = MAX_RECORDING_MS;\n this.recordMinMs = 0;\n\n // disable persistence if localStorage is not supported\n // request-queue will automatically disable persistence if indexedDB fails to initialize\n var usePersistence = localStorageSupported(options.sharedLockStorage, true);\n\n // each replay has its own batcher key to avoid conflicts between rrweb events of different recordings\n // this will be important when persistence is introduced\n this.batcherKey = '__mprec_' + this.getConfig('name') + '_' + this.getConfig('token') + '_' + this.replayId;\n this.queueStorage = new IDBStorageWrapper(RECORDING_EVENTS_STORE_NAME);\n this.batcher = new RequestBatcher(this.batcherKey, {\n errorReporter: this.reportError.bind(this),\n flushOnlyOnInterval: true,\n libConfig: RECORDER_BATCHER_LIB_CONFIG,\n sendRequestFunc: this.flushEventsWithOptOut.bind(this),\n queueStorage: this.queueStorage,\n sharedLockStorage: options.sharedLockStorage,\n usePersistence: usePersistence,\n stopAllBatchingFunc: this.stopRecording.bind(this),\n\n // increased throttle and shared lock timeout because recording events are very high frequency.\n // this will minimize the amount of lock contention between enqueued events.\n // for session recordings there is a lock for each tab anyway, so there's no risk of deadlock between tabs.\n enqueueThrottleMs: RECORD_ENQUEUE_THROTTLE_MS,\n sharedLockTimeoutMS: 10 * 1000,\n });\n};\n\nSessionRecording.prototype.unloadPersistedData = function () {\n this.batcher.stop();\n return this.batcher.flush()\n .then(function () {\n return this.queueStorage.removeItem(this.batcherKey);\n }.bind(this));\n};\n\nSessionRecording.prototype.getConfig = function(configVar) {\n return this._mixpanel.get_config(configVar);\n};\n\n// Alias for getConfig, used by the common addOptOutCheckMixpanelLib function which\n// reaches into this class instance and expects the snake case version of the function.\n// eslint-disable-next-line camelcase\nSessionRecording.prototype.get_config = function(configVar) {\n return this.getConfig(configVar);\n};\n\nSessionRecording.prototype.startRecording = function (shouldStopBatcher) {\n if (this._rrwebRecord === null) {\n this.reportError('rrweb record function not provided. ');\n return;\n }\n\n if (this._stopRecording !== null) {\n logger.log('Recording already in progress, skipping startRecording.');\n return;\n }\n\n this.recordMaxMs = this.getConfig('record_max_ms');\n if (this.recordMaxMs > MAX_RECORDING_MS) {\n this.recordMaxMs = MAX_RECORDING_MS;\n logger.critical('record_max_ms cannot be greater than ' + MAX_RECORDING_MS + 'ms. Capping value.');\n }\n\n if (!this.maxExpires) {\n this.maxExpires = new Date().getTime() + this.recordMaxMs;\n }\n\n this.recordMinMs = this.getConfig('record_min_ms');\n if (this.recordMinMs > MAX_VALUE_FOR_MIN_RECORDING_MS) {\n this.recordMinMs = MAX_VALUE_FOR_MIN_RECORDING_MS;\n logger.critical('record_min_ms cannot be greater than ' + MAX_VALUE_FOR_MIN_RECORDING_MS + 'ms. Capping value.');\n }\n\n if (!this.replayStartTime) {\n this.replayStartTime = new Date().getTime();\n this.batchStartUrl = _.info.currentUrl();\n this.replayStartUrl = _.info.currentUrl();\n }\n\n if (shouldStopBatcher || this.recordMinMs > 0) {\n // the primary case for shouldStopBatcher is when we're starting recording after a reset\n // and don't want to send anything over the network until there's\n // actual user activity\n // this also applies if the minimum recording length has not been hit yet\n // so that we don't send data until we know the recording will be long enough\n this.batcher.stop();\n } else {\n this.batcher.start();\n }\n\n var resetIdleTimeout = function () {\n clearTimeout(this.idleTimeoutId);\n var idleTimeoutMs = this.getConfig('record_idle_timeout_ms');\n this.idleTimeoutId = setTimeout(this._onIdleTimeout, idleTimeoutMs);\n this.idleExpires = new Date().getTime() + idleTimeoutMs;\n }.bind(this);\n resetIdleTimeout();\n\n var blockSelector = this.getConfig('record_block_selector');\n if (blockSelector === '' || blockSelector === null) {\n blockSelector = undefined;\n }\n\n try {\n this._stopRecording = this._rrwebRecord({\n 'emit': function (ev) {\n if (this.idleExpires && this.idleExpires < ev.timestamp) {\n this._onIdleTimeout();\n return;\n }\n if (isUserEvent(ev)) {\n if (this.batcher.stopped && new Date().getTime() - this.replayStartTime >= this.recordMinMs) {\n // start flushing again after user activity\n this.batcher.start();\n }\n resetIdleTimeout();\n }\n // promise only used to await during tests\n this.__enqueuePromise = this.batcher.enqueue(ev);\n }.bind(this),\n 'blockClass': this.getConfig('record_block_class'),\n 'blockSelector': blockSelector,\n 'collectFonts': this.getConfig('record_collect_fonts'),\n 'dataURLOptions': { // canvas image options (https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL)\n 'type': 'image/webp',\n 'quality': 0.6\n },\n 'maskAllInputs': true,\n 'maskTextClass': this.getConfig('record_mask_text_class'),\n 'maskTextSelector': this.getConfig('record_mask_text_selector'),\n 'recordCanvas': this.getConfig('record_canvas'),\n 'sampling': {\n 'canvas': 15\n }\n });\n } catch (err) {\n this.reportError('Unexpected error when starting rrweb recording.', err);\n }\n\n if (typeof this._stopRecording !== 'function') {\n this.reportError('rrweb failed to start, skipping this recording.');\n this._stopRecording = null;\n this.stopRecording(); // stop batcher looping and any timeouts\n return;\n }\n\n var maxTimeoutMs = this.maxExpires - new Date().getTime();\n this.maxTimeoutId = setTimeout(this._onMaxLengthReached.bind(this), maxTimeoutMs);\n};\n\nSessionRecording.prototype.stopRecording = function (skipFlush) {\n if (!this.isRrwebStopped()) {\n try {\n this._stopRecording();\n } catch (err) {\n this.reportError('Error with rrweb stopRecording', err);\n }\n this._stopRecording = null;\n }\n\n var flushPromise;\n if (this.batcher.stopped) {\n // never got user activity to flush after reset, so just clear the batcher\n flushPromise = this.batcher.clear();\n } else if (!skipFlush) {\n // flush any remaining events from running batcher\n flushPromise = this.batcher.flush();\n }\n this.batcher.stop();\n\n clearTimeout(this.idleTimeoutId);\n clearTimeout(this.maxTimeoutId);\n return flushPromise;\n};\n\nSessionRecording.prototype.isRrwebStopped = function () {\n return this._stopRecording === null;\n};\n\n\n/**\n * Flushes the current batch of events to the server, but passes an opt-out callback to make sure\n * we stop recording and dump any queued events if the user has opted out.\n */\nSessionRecording.prototype.flushEventsWithOptOut = function (data, options, cb) {\n var onOptOut = function (code) {\n // addOptOutCheckMixpanelLib invokes this function with code=0 when the user has opted out\n if (code === 0) {\n this.stopRecording();\n cb({error: 'Tracking has been opted out, stopping recording.'});\n }\n }.bind(this);\n\n this._flushEvents(data, options, cb, onOptOut);\n};\n\n/**\n * @returns {SerializedRecording}\n */\nSessionRecording.prototype.serialize = function () {\n // don't break if mixpanel instance was destroyed at some point\n var tabId;\n try {\n tabId = this._mixpanel.get_tab_id();\n } catch (e) {\n this.reportError('Error getting tab ID for serialization ', e);\n tabId = null;\n }\n\n return {\n 'replayId': this.replayId,\n 'seqNo': this.seqNo,\n 'replayStartTime': this.replayStartTime,\n 'batchStartUrl': this.batchStartUrl,\n 'replayStartUrl': this.replayStartUrl,\n 'idleExpires': this.idleExpires,\n 'maxExpires': this.maxExpires,\n 'tabId': tabId,\n };\n};\n\n\n/**\n * @static\n * @param {SerializedRecording} serializedRecording\n * @param {SessionRecordingOptions} options\n * @returns {SessionRecording}\n */\nSessionRecording.deserialize = function (serializedRecording, options) {\n var recording = new SessionRecording(_.extend({}, options, {\n replayId: serializedRecording['replayId'],\n batchStartUrl: serializedRecording['batchStartUrl'],\n replayStartUrl: serializedRecording['replayStartUrl'],\n idleExpires: serializedRecording['idleExpires'],\n maxExpires: serializedRecording['maxExpires'],\n replayStartTime: serializedRecording['replayStartTime'],\n seqNo: serializedRecording['seqNo'],\n sharedLockStorage: options.sharedLockStorage,\n }));\n\n return recording;\n};\n\nSessionRecording.prototype._sendRequest = function(currentReplayId, reqParams, reqBody, callback) {\n var onSuccess = function (response, responseBody) {\n // Update batch specific props only if the request was successful to guarantee ordering.\n // RequestBatcher will always flush the next batch after the previous one succeeds.\n // extra check to see if the replay ID has changed so that we don't increment the seqNo on the wrong replay\n if (response.status === 200 && this.replayId === currentReplayId) {\n this.seqNo++;\n this.batchStartUrl = _.info.currentUrl();\n }\n\n this._onBatchSent();\n callback({\n status: 0,\n httpStatusCode: response.status,\n responseBody: responseBody,\n retryAfter: response.headers.get('Retry-After')\n });\n }.bind(this);\n\n window['fetch'](this.getConfig('api_host') + '/' + this.getConfig('api_routes')['record'] + '?' + new URLSearchParams(reqParams), {\n 'method': 'POST',\n 'headers': {\n 'Authorization': 'Basic ' + btoa(this.getConfig('token') + ':'),\n 'Content-Type': 'application/octet-stream'\n },\n 'body': reqBody,\n }).then(function (response) {\n response.json().then(function (responseBody) {\n onSuccess(response, responseBody);\n }).catch(function (error) {\n callback({error: error});\n });\n }).catch(function (error) {\n callback({error: error, httpStatusCode: 0});\n });\n};\n\nSessionRecording.prototype._flushEvents = addOptOutCheckMixpanelLib(function (data, options, callback) {\n var numEvents = data.length;\n\n if (numEvents > 0) {\n var replayId = this.replayId;\n\n // each rrweb event has a timestamp - leverage those to get time properties\n var batchStartTime = Infinity;\n var batchEndTime = -Infinity;\n var hasFullSnapshot = false;\n for (var i = 0; i < numEvents; i++) {\n batchStartTime = Math.min(batchStartTime, data[i].timestamp);\n batchEndTime = Math.max(batchEndTime, data[i].timestamp);\n if (data[i].type === EventType.FullSnapshot) {\n hasFullSnapshot = true;\n }\n }\n\n if (this.seqNo === 0) {\n if (!hasFullSnapshot) {\n callback({error: 'First batch does not contain a full snapshot. Aborting recording.'});\n this.stopRecording(true);\n return;\n }\n this.replayStartTime = batchStartTime;\n } else if (!this.replayStartTime) {\n this.reportError('Replay start time not set but seqNo is not 0. Using current batch start time as a fallback.');\n this.replayStartTime = batchStartTime;\n }\n\n var replayLengthMs = batchEndTime - this.replayStartTime;\n\n var reqParams = {\n '$current_url': this.batchStartUrl,\n '$lib_version': Config.LIB_VERSION,\n 'batch_start_time': batchStartTime / 1000,\n 'distinct_id': String(this._mixpanel.get_distinct_id()),\n 'mp_lib': 'web',\n 'replay_id': replayId,\n 'replay_length_ms': replayLengthMs,\n 'replay_start_time': this.replayStartTime / 1000,\n 'replay_start_url': this.replayStartUrl,\n 'seq': this.seqNo\n };\n var eventsJson = JSON.stringify(data);\n\n // send ID management props if they exist\n var deviceId = this._mixpanel.get_property('$device_id');\n if (deviceId) {\n reqParams['$device_id'] = deviceId;\n }\n var userId = this._mixpanel.get_property('$user_id');\n if (userId) {\n reqParams['$user_id'] = userId;\n }\n\n if (CompressionStream) {\n var jsonStream = new Blob([eventsJson], {type: 'application/json'}).stream();\n var gzipStream = jsonStream.pipeThrough(new CompressionStream('gzip'));\n new Response(gzipStream)\n .blob()\n .then(function(compressedBlob) {\n reqParams['format'] = 'gzip';\n this._sendRequest(replayId, reqParams, compressedBlob, callback);\n }.bind(this));\n } else {\n reqParams['format'] = 'body';\n this._sendRequest(replayId, reqParams, eventsJson, callback);\n }\n }\n});\n\n\nSessionRecording.prototype.reportError = function(msg, err) {\n logger.error.apply(logger.error, arguments);\n try {\n if (!err && !(msg instanceof Error)) {\n msg = new Error(msg);\n }\n this.getConfig('error_reporter')(msg, err);\n } catch(err) {\n logger.error(err);\n }\n};\n\nexport { SessionRecording };\n","import { Promise } from '../promise-polyfill';\nimport { IDBStorageWrapper, RECORDING_REGISTRY_STORE_NAME } from '../storage/indexed-db';\nimport { SessionRecording } from './session-recording';\nimport { isRecordingExpired } from './utils';\n\n/**\n * Module for handling the storage and retrieval of recording metadata as well as any active recordings.\n * Makes sure that only one tab can be recording at a time.\n */\nvar RecordingRegistry = function (options) {\n this.idb = new IDBStorageWrapper(RECORDING_REGISTRY_STORE_NAME);\n this.errorReporter = options.errorReporter;\n this.mixpanelInstance = options.mixpanelInstance;\n this.sharedLockStorage = options.sharedLockStorage;\n};\n\nRecordingRegistry.prototype.handleError = function (err) {\n this.errorReporter('IndexedDB error: ', err);\n};\n\n/**\n * @param {import('./session-recording').SerializedRecording} serializedRecording\n */\nRecordingRegistry.prototype.setActiveRecording = function (serializedRecording) {\n var tabId = serializedRecording['tabId'];\n if (!tabId) {\n console.warn('No tab ID is set, cannot persist recording metadata.');\n return Promise.resolve();\n }\n\n return this.idb.init()\n .then(function () {\n return this.idb.setItem(tabId, serializedRecording);\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\n/**\n * @returns {Promise<import('./session-recording').SerializedRecording>}\n */\nRecordingRegistry.prototype.getActiveRecording = function () {\n return this.idb.init()\n .then(function () {\n return this.idb.getItem(this.mixpanelInstance.get_tab_id());\n }.bind(this))\n .then(function (serializedRecording) {\n return isRecordingExpired(serializedRecording) ? null : serializedRecording;\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nRecordingRegistry.prototype.clearActiveRecording = function () {\n // mark recording as expired instead of deleting it in case the page unloads mid-flush and doesn't make it to ingestion.\n // this will ensure the next pageload will flush the remaining events, but not try to continue the recording.\n return this.getActiveRecording()\n .then(function (serializedRecording) {\n if (serializedRecording) {\n serializedRecording['maxExpires'] = 0;\n return this.setActiveRecording(serializedRecording);\n }\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\n/**\n * Flush any inactive recordings from the registry to minimize data loss.\n * The main idea here is that we can flush remaining rrweb events on the next page load if a tab is closed mid-batch.\n */\nRecordingRegistry.prototype.flushInactiveRecordings = function () {\n return this.idb.init()\n .then(function() {\n return this.idb.getAll();\n }.bind(this))\n .then(function (serializedRecordings) {\n // clean up any expired recordings from the registry, non-expired ones may be active in other tabs\n var unloadPromises = serializedRecordings\n .filter(function (serializedRecording) {\n return isRecordingExpired(serializedRecording);\n })\n .map(function (serializedRecording) {\n var sessionRecording = SessionRecording.deserialize(serializedRecording, {\n mixpanelInstance: this.mixpanelInstance,\n sharedLockStorage: this.sharedLockStorage\n });\n return sessionRecording.unloadPersistedData()\n .then(function () {\n // expired recording was successfully flushed, we can clean it up from the registry\n return this.idb.removeItem(serializedRecording['tabId']);\n }.bind(this))\n .catch(this.handleError.bind(this));\n }.bind(this));\n\n return Promise.all(unloadPromises);\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nexport { RecordingRegistry };\n","import { record } from 'rrweb';\nimport { Promise } from '../promise-polyfill';\nimport { SessionRecording } from './session-recording';\nimport { RecordingRegistry } from './recording-registry';\n\nimport { console_with_prefix, _ } from '../utils'; // eslint-disable-line camelcase\n\nvar logger = console_with_prefix('recorder');\n\n/**\n * Recorder API: bundles rrweb and and exposes methods to start and stop recordings.\n * @param {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n*/\nvar MixpanelRecorder = function(mixpanelInstance, rrwebRecord, sharedLockStorage) {\n this.mixpanelInstance = mixpanelInstance;\n this.rrwebRecord = rrwebRecord || record;\n this.sharedLockStorage = sharedLockStorage;\n\n /**\n * @member {import('./registry').RecordingRegistry}\n */\n this.recordingRegistry = new RecordingRegistry({\n mixpanelInstance: this.mixpanelInstance,\n errorReporter: logger.error,\n sharedLockStorage: sharedLockStorage\n });\n this._flushInactivePromise = this.recordingRegistry.flushInactiveRecordings();\n\n this.activeRecording = null;\n};\n\nMixpanelRecorder.prototype.startRecording = function(options) {\n options = options || {};\n if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n logger.log('Recording already in progress, skipping startRecording.');\n return;\n }\n\n var onIdleTimeout = function () {\n logger.log('Idle timeout reached, restarting recording.');\n this.resetRecording();\n }.bind(this);\n\n var onMaxLengthReached = function () {\n logger.log('Max recording length reached, stopping recording.');\n this.resetRecording();\n }.bind(this);\n\n var onBatchSent = function () {\n this.recordingRegistry.setActiveRecording(this.activeRecording.serialize());\n this['__flushPromise'] = this.activeRecording.batcher._flushPromise;\n }.bind(this);\n\n /**\n * @type {import('./session-recording').SessionRecordingOptions}\n */\n var sessionRecordingOptions = {\n mixpanelInstance: this.mixpanelInstance,\n onBatchSent: onBatchSent,\n onIdleTimeout: onIdleTimeout,\n onMaxLengthReached: onMaxLengthReached,\n replayId: _.UUID(),\n rrwebRecord: this.rrwebRecord,\n sharedLockStorage: this.sharedLockStorage\n };\n\n if (options.activeSerializedRecording) {\n this.activeRecording = SessionRecording.deserialize(options.activeSerializedRecording, sessionRecordingOptions);\n } else {\n this.activeRecording = new SessionRecording(sessionRecordingOptions);\n }\n\n this.activeRecording.startRecording(options.shouldStopBatcher);\n return this.recordingRegistry.setActiveRecording(this.activeRecording.serialize());\n};\n\nMixpanelRecorder.prototype.stopRecording = function() {\n var stopPromise = this._stopCurrentRecording(false);\n this.recordingRegistry.clearActiveRecording();\n this.activeRecording = null;\n return stopPromise;\n};\n\nMixpanelRecorder.prototype.pauseRecording = function() {\n return this._stopCurrentRecording(false);\n};\n\nMixpanelRecorder.prototype._stopCurrentRecording = function(skipFlush) {\n if (this.activeRecording) {\n return this.activeRecording.stopRecording(skipFlush);\n }\n return Promise.resolve();\n};\n\nMixpanelRecorder.prototype.resumeRecording = function (startNewIfInactive) {\n if (this.activeRecording && this.activeRecording.isRrwebStopped()) {\n this.activeRecording.startRecording(false);\n return Promise.resolve(null);\n }\n\n return this.recordingRegistry.getActiveRecording()\n .then(function (activeSerializedRecording) {\n if (activeSerializedRecording) {\n return this.startRecording({activeSerializedRecording: activeSerializedRecording});\n } else if (startNewIfInactive) {\n return this.startRecording({shouldStopBatcher: false});\n } else {\n logger.log('No resumable recording found.');\n return null;\n }\n }.bind(this));\n};\n\n\nMixpanelRecorder.prototype.resetRecording = function () {\n this.stopRecording();\n this.startRecording({shouldStopBatcher: true});\n};\n\nMixpanelRecorder.prototype.getActiveReplayId = function () {\n if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n return this.activeRecording.replayId;\n } else {\n return null;\n }\n};\n\n// getter so that older mixpanel-core versions can still retrieve the replay ID\n// when pulling the latest recorder bundle from the CDN\nObject.defineProperty(MixpanelRecorder.prototype, 'replayId', {\n get: function () {\n return this.getActiveReplayId();\n }\n});\n\n\nexport { MixpanelRecorder };\n","import { window } from '../window';\nimport { MixpanelRecorder } from './recorder';\n\nwindow['__mp_recorder'] = MixpanelRecorder;\n"],"names":["win","loc","_array_like_to_array","arr","len","i","arr2","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","_async_to_generator","fn","self","args","err","_construct","Parent","Class","_is_native_reflect_construct","Constructor","instance","_set_prototype_of","_defineProperties","target","props","descriptor","_create_class","protoProps","staticProps","_extends","source","_get_prototype_of","o","_inherits","subClass","superClass","_instanceof","left","right","_is_native_function","_object_without_properties_loose","excluded","sourceKeys","p","_type_of","obj","_unsupported_iterable_to_array","minLen","n","_wrap_native_super","_cache","Wrapper","result","_","_create_for_of_iterator_helper_loose","allowArrayLike","it","_ts_generator","thisArg","body","f","y","t","g","verb","v","step","op","e","_ts_values","s","m","__defProp","__defNormalProp","__publicField","_a","__defProp$1","__defNormalProp$1","__publicField$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","methodNames","isUntaintedMethods","method","iframeEl","untaintedObject","untaintedAccessorCache$1","getUntaintedAccessor$1","cacheKey","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","childNodes$1","n2","parentNode$1","parentElement$1","textContent$1","contains$1","other","getRootNode$1","host$1","styleSheets$1","shadowRoot$1","querySelector$1","selectors","querySelectorAll$1","mutationObserverCtor$1","index$1","isElement","isShadowRoot","hostEl","isNativeShadowDom","shadowRoot2","fixBrowserCompatibilityIssuesInCSS","cssText","escapeImportStatement","rule2","statement","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","stringifyRule","isCSSImportRule","importStringified","absolutifyURLs","ruleStringified","isCSSStyleRule","fixSafariColons","cssStringified","regex","Mirror","_proto","id","_this","childNode","node2","meta","oldNode","createMirror$2","maskInputValue","param","element","maskInputOptions","tagName","type","maskInputFn","text","actualType","toLowerCase","str","ORIGINAL_ATTRIBUTE_NAME","is2DCanvasBlank","canvas","ctx","chunkSize","x2","getImageData","originalGetImageData","pixelBuffer","pixel","getInputType","extractFileExtension","path","baseURL","url","match","_ref","extractOrigin","origin","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","href","quote1","path1","quote2","path2","path3","filePath","maybeQuote","stack","parts","_iterator","_step","part","normalizeCssString","splitCssText","style","childNodes2","splits","cssTextNorm","i2","textContentNorm","j","bit","splitNorm","k","markCssSplits","_id","tagNameRegex","IGNORED_NODE","genId","getValidTagName$1","processedTagName","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","getAbsoluteSrcsetString","doc","attributeValue","pos","collectCharacters","regEx","chars2","output","absoluteToDoc","descriptorsStr","inParens","c2","cachedDocument","getHref","isSVGElement","el","customHref","a2","transformAttribute","name","ignoreAttribute","_value","_isBlockedElement","blockClass","blockSelector","eIndex","className","e2","classMatchesRegex","checkAncestors","needMaskingText","maskTextClass","maskTextSelector","onceIframeLoaded","listener","iframeLoadTimeout","fired","readyState","timer","blankUrl","onceStylesheetLoaded","link","styleSheetLoadTimeout","styleSheetLoaded","serializeNode","options","mirror2","needsMask","inlineStylesheet","_options_maskInputOptions","maskTextFn","_options_dataURLOptions","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","_options_newlyAddedElement","newlyAddedElement","_options_cssCaptured","cssCaptured","rootId","getRootId","serializeElementNode","serializeTextNode","docId","parent","parentTagName","textContent2","isStyle","isScript","needBlock","attributes","attr","stylesheet","cssText1","checked","canvasDataURL","blankCanvas","blankCanvasDataURL","image","imageSrc","priorCrossOrigin","recordInlineImage","mediaAttributes","_n2_getBoundingClientRect","width","height","isCustomElement","lowerIfExists","maybeAttr","slimDOMExcluded","sn","slimDOMOptions","serializeNodeWithId","_options_skipChild","skipChild","_options_inlineStylesheet","_options_inlineImages","_options_recordCanvas","onSerialize","onIframeLoad","_options_iframeLoadTimeout","onStylesheetLoad","_options_stylesheetLoadTimeout","stylesheetLoadTimeout","_options_keepIframeSrcFn","_options_preserveWhiteSpace","preserveWhiteSpace","_serializedNode","serializedNode","recordChild","shadowRootEl","bypassOptions","childN","serializedChildNode","shadowRootEl1","_iterator1","_step1","childN1","serializedChildNode1","iframeDoc","serializedIframeNode","serializedLinkNode","snapshot","tmp","_ref_blockClass","_ref_blockSelector","_ref_maskTextClass","_ref_maskTextSelector","_ref_inlineStylesheet","_ref_inlineImages","_ref_recordCanvas","_ref_maskAllInputs","maskAllInputs","_ref_slimDOM","slimDOM","_ref_keepIframeSrcFn","getDefaultExportFromCjs$1","getAugmentedNamespace$1","f2","a22","d","picocolors_browser$1","x$1","create$1","picocolors_browserExports$1","__viteBrowserExternal$2","__viteBrowserExternal$1$1","require$$2$1","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","Error1","CssSyntaxError","message","line","column","file","plugin22","color","css","lines","start","end","maxWidth","mark","aside","_pico$1_createColors","bold","gray","red","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","DEFAULT_RAW$1","capitalize$1","Stringifier$2$1","Stringifier","builder","semicolon","params","detect","buf","depth","indent","between","after","last","child","before","string","own","root2","prop","raw","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","Node2","defaults","add","overrides","keepBetween","opts","_this_rangeBy","next","stringRepresentation","defaultType","_len","nodes","_key","bookmark","foundSelf","result2","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","stringifier2","data","node$1","Node$3$1","Declaration$4$1","Declaration","declaration$1","urlAlphabet$1","nanoid$1$1","size","nonSecure$1","SourceMapConsumer$2$1","SourceMapGenerator$2$1","existsSync$1","readFileSync$1","dirname$1$1","join$1","fromBase64$1","PreviousMap$2$1","PreviousMap","prev","baseCharsetUri","baseUri","charsetUri","uri","encoding","sourceMapString","map","comments","prevPath","map1","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath$1","pathToFileURL$1$1","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","Input","endLine","endColumn","pos1","pos2","offset","lastLine","lineToIndex","prevIndex","l2","min","max","mid","consumer","from","to","fromUrl","json","_i","_iter","input$1","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative$1","resolve$2","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","MapGenerator$2$1","MapGenerator","stringify2","cssString","content","eol","noSource","mapping","childless","annotation","cached","already","fileURL","mapGenerator$1","Node$2$1","Comment$4$1","Comment","comment$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","callback","iterator","condition","_node2","cb","exist","existIndex","sample","i21","processed","pattern","decl","selector","dependant","container$1","Container$6$1","LazyResult$4$1","Processor$3$1","Document$3$1","Document2","lazy","document$1$1","printed$1","warnOnce$2$1","Warning$2$1","Warning","range","opt","warning$1","Warning$1$1","Result$3$1","Result","processor2","warning2","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","tokenize$1","ignore","quote","escape","escaped","escapePos","currentToken","length","buffer","returned","position","unclosed","what","endOfFile","nextToken","ignoreUnclosed","controlChar","back","token","Container$5$1","AtRule$3$1","AtRule","_Container$5$1_prototype_append","_Container$5$1_prototype_prepend","atRule$1","Container$4$1","LazyResult$3$1","Processor$2$1","Root$5$1","Root","root$1","list$2$1","spaces","separators","array","current","split","func","inQuote","prevQuote","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","Rule","values","sep2","rule$1","Declaration$2$1","tokenizer2$1","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","findLastWithPosition$1","tokens","Parser$1$1","Parser","shift","open","brackets","colon","founded","_step_value","customProperty","firstSpaces","cache","type1","hasWord","bracket","clean","all","lastTokenType","parser$1","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","warnOnce$1$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","events","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","onRejected","onFinally","pluginName","pluginVer","runtimeVer","b","event","filter","promise","promise1","_loop","_state","visitor","roots","subRoot","onFulfilled","visitors","visit2","_visitors_visit2_visitorIndex","lazyResult$1","MapGenerator2$1","stringify$1$1","warnOnce2$1","parse$1$1","Result$1$1","NoWorkResult$1$1","NoWorkResult","_map_generate","generatedCSS","generatedMap","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","Processor","plugins","normalized","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","_defaults_source","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","transformer","processOpts","pluginOpts","postcss_1$1","postcss$1$1","__defProp2","__defNormalProp2","__publicField2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","x","create","picocolors_browserExports","__viteBrowserExternal","__viteBrowserExternal$1","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","_pico_createColors","cssSyntaxError","symbols","DEFAULT_RAW","capitalize","Stringifier$2","Stringifier2","stringifier","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","cloneNode","Node$4","Node3","node","Node$3","Declaration$4","Declaration2","declaration","urlAlphabet","nanoid$1","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","existsSync","readFileSync","dirname$1","join","fromBase64","PreviousMap$2","PreviousMap2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","fileURLToPath","pathToFileURL$1","isAbsolute","resolve$1","nanoid","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input2","input","SourceMapConsumer","SourceMapGenerator","dirname","relative","sep","pathToFileURL","Input$3","sourceMapAvailable","pathAvailable","MapGenerator$2","MapGenerator2","mapGenerator","Node$2","Comment$4","Comment2","comment","isClean$1","my$1","Declaration$3","Comment$3","Node$1","parse$4","Rule$4","AtRule$4","Root$6","cleanSource","markDirtyUp","Container$7","Container2","container","Container$6","LazyResult$4","Processor$3","Document$3","Document23","document$1","printed","warnOnce$2","Warning$2","Warning2","warning","Warning$1","Result$3","Result2","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","tokenize","Container$5","AtRule$3","AtRule2","_Container$5_prototype_append","_Container$5_prototype_prepend","atRule","Container$4","LazyResult$3","Processor$2","Root$5","Root2","root","list$2","list_1","Container$3","list$1","Rule$3","Rule2","rule","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Parser$1","Parser2","parser","Container$2","Parser22","Input$2","parse$3","parse_1","isClean","my","MapGenerator$1","stringify$2","Container$1","Document$2","warnOnce$1","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","warnOnce22","parse$1","Result$1","NoWorkResult$1","NoWorkResult2","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Processor2","processor","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","stringify","fromJSON","Document222","Warning22","Comment22","AtRule22","Result22","Input22","parse","list","Rule22","Root22","Node22","postcss","postcss_1","postcss$1","BaseRRNode","_args","_newChild","_refChild","_node","childIterator","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","childNodes","parentNode","parentElement","textContent","contains","getRootNode","host","styleSheets","shadowRoot","querySelector","querySelectorAll","mutationObserverCtor","index","on","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","receiver","throttle","wait","timeout","previous","now","remaining","context","hookSetter","isRevoked","original","patch","replacement","wrapped","nowTimestamp","getWindowScroll","_c","_d","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isSerialized","isIgnored","isAncestorRemoved","legacy_isTouchEvent","polyfill$1","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","_this_styleIDMap_get","newId","getShadowHost","shadowHost","getRootShadowHost","rootShadowHost","shadowHostInDom","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","current1","moveKey","parentId","MutationBuffer","mutations","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","parentTag","currentN","iframe","childSn","isParentRemoved","n21","isAncestorInSet","candidate","tailNode","parentId1","nextId1","unhandledNode","parentId2","payload","attribute","diffAsStr","unchangedAsStr","textarea","item","cn","attributeName","value1","old","pname","newValue","newPriority","pname1","nodeId","deepDelete","processRemoves","targetId","addsSet","queue","n22","removes","_isParentRemoved","_mirror2","set","_isAncestorInSet","errorHandler","registerErrorHandler","handler","unregisterErrorHandler","callbackWrapper","rrwebWrapped","rest","mutationBuffers","getEventTarget","initMutationObserver","rootEl","mutationBuffer","observer","initMoveObserver","mousemoveCb","sampling","threshold","callbackThreshold","positions","timeBaseline","wrappedCb","totalOffset","updatePosition","evt","clientX","clientY","handlers","initMouseInteractionObserver","mouseInteractionCb","disableMap","currentPointerType","getHandler","eventKey","pointerType","thisEventKey","eventName","h","initScrollObserver","scrollCb","scrollLeftTop","initViewportResizeObserver","param1","viewportResizeCb","lastH","lastW","updateDimension","INPUT_TAGS","lastInputValueMap","initInputObserver","inputCb","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isChecked","cbWithDedup","text2","v2","lastInputValue","currentWindow","propertyDescriptor","hookProperties","_handlers","getNestedCSSRulePositions","recurse","childRule","hasNestedCSSRule","rules21","index21","getIdAndStyleId","sheet","styleMirror","styleId","initStyleSheetObserver","styleSheetRuleCb","stylesheetManager","insertRule","argumentsList","_getIdAndStyleId","styleBlock","deleteRule","replace","replaceSync","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","initStyleDeclarationObserver","styleDeclarationCb","ignoreCSSAttributes","setProperty","property","priority","removeProperty","initMediaInteractionObserver","mediaInteractionCb","currentTime","volume","muted","playbackRate","loop","initFontObserver","fontCb","fontMap","originalFontFace","family","descriptors","fontFace","restoreHandler","initSelectionObserver","selectionCb","collapsed","updateSelection","selection","ranges","count","startContainer","startOffset","endContainer","endOffset","blocked","initCustomElementObserver","customElementCb","constructor","mergeHooks","o2","hooks","mutationCb","canvasMutationCb","_hooks","initObservers","mutationObserver","mousemoveHandler","mouseInteractionHandler","scrollHandler","viewportResizeHandler","inputHandler","mediaInteractionHandler","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","selectionObserver","customElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","remoteIdToIdMap","ids","IframeManager","crossOriginMessageEvent","iframeSourceWindow","transformedEvent","iframeMirror","keys","ShadowDomManager","iframeElement","manager","option","sRoot","chars","lookup","i$1","encode","arraybuffer","bytes","base64","canvasVarMap","variableListFor$1","ctor","contextMap","saveWebGLVar","isInstanceOfWebGLObject","list2","serializeArg","name1","name2","name3","src","name4","src1","name5","name6","serializeArgs","webGLConstructorNames","supportedWebGLConstructorNames","initCanvas2DMutationObserver","recordArgs","hookHandler","props2D","getNormalizedContextName","contextType","initCanvasContextObserver","setPreserveDrawingBufferToTrue","ctxName","contextAttributes","patchGLPrototype","prototype","mutation","initCanvasWebGLMutationObserver","_handlers1","encodedJs","decodeBase64","blob","WorkerWrapper","objURL","worker","CanvasManager","newFrame","_options_sampling","fps","canvasContextReset","snapshotInProgressMap","_e2_data","timeBetweenSnapshots","lastSnapshotTime","rafId","getCanvas","matchedCanvas","takeCanvasSnapshots","timestamp","_this1","bitmap","canvas2DReset","canvasWebGL1and2Reset","setLatestRAFTimestamp","_values","valuesWithType","StylesheetManager","linkEl","styles","r2","adoptedStyleSheetData","_linkEl","ProcessedNodeManager","thisBuffer","buffers","wrappedEmit","takeFullSnapshot$1","canvasManager","recording","cleanFrame","mirror","record","emit","checkoutEveryNms","checkoutEveryNth","_options_blockClass","_options_blockSelector","_options_ignoreClass","_options_ignoreSelector","_options_maskTextClass","_options_maskTextSelector","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","_options_recordDOM","recordDOM","_options_recordCrossOriginIframes","recordCrossOriginIframes","_options_recordAfter","recordAfter","_options_userTriggeredOnInput","_options_collectFonts","collectFonts","_options_ignoreCSSAttributes","errorHandler2","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","incrementalSnapshotCount","eventProcessor","isCheckout","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","wrappedAdoptedStyleSheetEmit","iframeManager","processedNodeManager","shadowDomManager","observe","init","tag","t2","setImmediate","window","builtInProp","cycle","schedulingQueue","ToString","val","config","first","Item","schedule","isThenable","_then","oType","notify","notifyIsolated","chain","ret","msg","defWrapper","MakeDefWrapper","iteratePromises","resolver","rejecter","idx","MakeDef","NpoPromise","executor","def","success","failure","PromisePrototype","msgs","PromisePolyfill","Config","MAX_RECORDING_MS","MAX_VALUE_FOR_MIN_RECORDING_MS","ArrayProto","FuncProto","ObjProto","slice","toString","hasOwnProperty","windowConsole","navigator","document","windowOpera","screen","userAgent","nativeBind","nativeForEach","nativeIndexOf","nativeMap","nativeIsArray","breaker","console","log_func_with_prefix","prefix","console_with_prefix","bound","l","iterable","results","found","needle","subclass","superclass","pad","mixed_val","escapable","c","holder","gap","mind","partial","at","ch","escapee","hex","uffff","white","word","object","b64","o1","o3","h1","h2","h3","h4","bits","ac","enc","tmp_arr","utftext","stringl","c1","uuid","BLOCKED_UA_STRS","ua","formdata","arg_separator","use_val","use_key","regexS","nameEQ","ca","cookie","seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","expires","secure","domain","extract_domain","date","days","new_cookie_val","_testStorageSupported","storage","supported","cheap_guid","_localStorageSupported","localStorageSupported","forceCheck","_sessionStorageSupported","sessionStorageSupported","_storageWrapper","is_supported_fn","log_error","register_event","oldSchool","useCapture","ontype","old_handler","makeHandler","new_handler","old_handlers","fixEvent","old_result","new_result","TOKEN_MATCH_REGEX","getAllChildren","bad_whitespace","hasClass","elem","getElementsBySelector","foundCount","elements","currentContextIndex","currentContext","token_match","attrName","attrOperator","attrValue","checkFunction","query","CAMPAIGN_KEYWORDS","CLICK_IDS","default_value","kw","kwkey","idkey","referrer","search","keyword","user_agent","vendor","opera","browser","versionRegexs","matches","a","extra_props","batchedThrottle","waitMs","timeoutPromise","throttledItems","Promise","returnValue","maxlen","guid","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","hostname","domain_regex","tld","isOnline","onLine","NOOP_FUNC","JSONStringify","JSONParse","MIXPANEL_DB_NAME","RECORDING_EVENTS_STORE_NAME","RECORDING_REGISTRY_STORE_NAME","DB_VERSION","OBJECT_STORES","IDBStorageWrapper","storeName","openRequest","ev","db","dbOrError","mode","storeCb","doTransaction","transaction","objectStore","req","GDPR_DEFAULT_PERSISTENCE_PREFIX","hasOptedOut","_hasDoNotTrackFlagOn","optedOut","_getStorageValue","addOptOutCheckMixpanelLib","_addOptOutCheck","_getStorage","_getStorageKey","nav","hasDntOn","dntValue","getConfigValue","ignoreDnt","persistenceType","persistencePrefix","logger","SharedLock","lockedCB","pid","startTime","pollIntervalMS","timeoutMS","keyX","keyY","keyZ","delay","waitFor","predicate","getSetY","valY","criticalSection","removeLock","LocalStorageWrapper","storageOverride","RequestQueue","storageKey","queueEntry","flushInterval","queueEntries","enqueueItem","storedQueue","succeeded","batchSize","batch","idsInBatch","filterOutIDsAndInvalid","items","idSet","filteredItems","removeFromStorage","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","storageEntry","MAX_RETRY_INTERVAL_MS","RequestBatcher","flushMS","currentBatchSize","attemptSecondaryFlush","dataForRequest","transformedItems","addPayload","itemId","removeItemsFromQueue","batchSendCallback","res","retryMS","halvedBatchSize","requestOptions","isRecordingExpired","serializedRecording","RECORD_ENQUEUE_THROTTLE_MS","CompressionStream","RECORDER_BATCHER_LIB_CONFIG","ACTIVE_SOURCES","isUserEvent","SessionRecording","usePersistence","configVar","shouldStopBatcher","resetIdleTimeout","idleTimeoutMs","maxTimeoutMs","skipFlush","flushPromise","onOptOut","tabId","currentReplayId","reqParams","reqBody","onSuccess","response","responseBody","numEvents","replayId","batchStartTime","batchEndTime","hasFullSnapshot","replayLengthMs","eventsJson","deviceId","userId","jsonStream","gzipStream","compressedBlob","RecordingRegistry","serializedRecordings","unloadPromises","sessionRecording","MixpanelRecorder","mixpanelInstance","rrwebRecord","sharedLockStorage","onIdleTimeout","onMaxLengthReached","onBatchSent","sessionRecordingOptions","stopPromise","startNewIfInactive","activeSerializedRecording"],"mappings":"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"}