posthog-js 1.84.2 → 1.84.4

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.
Files changed (77) hide show
  1. package/dist/array.full.js +1 -10
  2. package/dist/array.full.js.map +1 -1
  3. package/dist/array.js +1 -10
  4. package/dist/array.js.map +1 -1
  5. package/dist/es.js +1 -10
  6. package/dist/es.js.map +1 -1
  7. package/dist/module.d.ts +32 -148
  8. package/dist/module.js +1 -10
  9. package/dist/module.js.map +1 -1
  10. package/dist/recorder-v2.js +2 -2
  11. package/dist/recorder-v2.js.map +1 -1
  12. package/dist/recorder.js +1 -1
  13. package/dist/recorder.js.map +1 -1
  14. package/dist/surveys.js +1 -1
  15. package/dist/surveys.js.map +1 -1
  16. package/lib/package.json +9 -4
  17. package/lib/src/autocapture-utils.js +6 -6
  18. package/lib/src/autocapture-utils.js.map +1 -1
  19. package/lib/src/autocapture.js +5 -5
  20. package/lib/src/autocapture.js.map +1 -1
  21. package/lib/src/constants.d.ts +1 -0
  22. package/lib/src/constants.js +1 -0
  23. package/lib/src/constants.js.map +1 -1
  24. package/lib/src/extensions/exceptions/error-conversion.js +3 -2
  25. package/lib/src/extensions/exceptions/error-conversion.js.map +1 -1
  26. package/lib/src/extensions/exceptions/exception-autocapture.js +4 -7
  27. package/lib/src/extensions/exceptions/exception-autocapture.js.map +1 -1
  28. package/lib/src/extensions/exceptions/stack-trace.js +3 -2
  29. package/lib/src/extensions/exceptions/stack-trace.js.map +1 -1
  30. package/lib/src/extensions/exceptions/type-checking.js +3 -2
  31. package/lib/src/extensions/exceptions/type-checking.js.map +1 -1
  32. package/lib/src/extensions/{sessionrecording-utils.js → replay/sessionrecording-utils.js} +3 -2
  33. package/lib/src/extensions/replay/sessionrecording-utils.js.map +1 -0
  34. package/lib/src/extensions/{sessionrecording.d.ts → replay/sessionrecording.d.ts} +27 -19
  35. package/lib/src/extensions/{sessionrecording.js → replay/sessionrecording.js} +217 -92
  36. package/lib/src/extensions/replay/sessionrecording.js.map +1 -0
  37. package/lib/src/extensions/{web-performance.d.ts → replay/web-performance.d.ts} +2 -2
  38. package/lib/src/extensions/{web-performance.js → replay/web-performance.js} +3 -3
  39. package/lib/src/extensions/replay/web-performance.js.map +1 -0
  40. package/lib/src/extensions/surveys.js +3 -2
  41. package/lib/src/extensions/surveys.js.map +1 -1
  42. package/lib/src/loader-recorder-v2.js +2 -3
  43. package/lib/src/loader-recorder-v2.js.map +1 -1
  44. package/lib/src/loader-recorder.js +2 -1
  45. package/lib/src/loader-recorder.js.map +1 -1
  46. package/lib/src/loader-surveys.js +2 -1
  47. package/lib/src/loader-surveys.js.map +1 -1
  48. package/lib/src/posthog-core.d.ts +2 -2
  49. package/lib/src/posthog-core.js +14 -14
  50. package/lib/src/posthog-core.js.map +1 -1
  51. package/lib/src/posthog-featureflags.js +4 -4
  52. package/lib/src/posthog-featureflags.js.map +1 -1
  53. package/lib/src/posthog-persistence.js +4 -4
  54. package/lib/src/posthog-persistence.js.map +1 -1
  55. package/lib/src/request-queue.js +2 -2
  56. package/lib/src/request-queue.js.map +1 -1
  57. package/lib/src/retry-queue.js +7 -3
  58. package/lib/src/retry-queue.js.map +1 -1
  59. package/lib/src/send-request.js +3 -3
  60. package/lib/src/send-request.js.map +1 -1
  61. package/lib/src/sessionid.d.ts +6 -4
  62. package/lib/src/sessionid.js +17 -15
  63. package/lib/src/sessionid.js.map +1 -1
  64. package/lib/src/storage.js +7 -7
  65. package/lib/src/storage.js.map +1 -1
  66. package/lib/src/types.d.ts +3 -0
  67. package/lib/src/types.js.map +1 -1
  68. package/lib/src/utils.d.ts +8 -10
  69. package/lib/src/utils.js +42 -31
  70. package/lib/src/utils.js.map +1 -1
  71. package/lib/src/uuidv7.js +6 -4
  72. package/lib/src/uuidv7.js.map +1 -1
  73. package/package.json +9 -4
  74. package/lib/src/extensions/sessionrecording-utils.js.map +0 -1
  75. package/lib/src/extensions/sessionrecording.js.map +0 -1
  76. package/lib/src/extensions/web-performance.js.map +0 -1
  77. /package/lib/src/extensions/{sessionrecording-utils.d.ts → replay/sessionrecording-utils.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"recorder.js","sources":["../node_modules/rrweb-v1/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/ext/tslib/tslib.es6.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/types.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/utils.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/mutation.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observer.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../node_modules/rrweb-v1/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/index.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record/index.js","../src/loader-recorder.ts"],"sourcesContent":["var NodeType;\n(function (NodeType) {\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\n return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n var _a;\n var host = (_a = n) === null || _a === void 0 ? void 0 : _a.host;\n return Boolean(host && host.shadowRoot && host.shadowRoot === n);\n}\nfunction maskInputValue(_a) {\n var maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\n var text = value || '';\n if (maskInputOptions[tagName.toLowerCase()] ||\n maskInputOptions[type]) {\n if (maskInputFn) {\n text = maskInputFn(text);\n }\n else {\n text = '*'.repeat(text.length);\n }\n }\n return text;\n}\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\nfunction is2DCanvasBlank(canvas) {\n var ctx = canvas.getContext('2d');\n if (!ctx)\n return true;\n var chunkSize = 50;\n for (var x = 0; x < canvas.width; x += chunkSize) {\n for (var y = 0; y < canvas.height; y += chunkSize) {\n var getImageData = ctx.getImageData;\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\n : getImageData;\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\n return false;\n }\n }\n return true;\n}\n\nvar _id = 1;\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\nvar IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName(element) {\n if (element instanceof HTMLFormElement) {\n return 'form';\n }\n var processedTagName = element.tagName.toLowerCase().trim();\n if (tagNameRegex.test(processedTagName)) {\n return 'div';\n }\n return processedTagName;\n}\nfunction getCssRulesString(s) {\n try {\n var rules = s.rules || s.cssRules;\n return rules ? Array.from(rules).map(getCssRuleString).join('') : null;\n }\n catch (error) {\n return null;\n }\n}\nfunction getCssRuleString(rule) {\n var cssStringified = rule.cssText;\n if (isCSSImportRule(rule)) {\n try {\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\n }\n catch (_a) {\n }\n }\n return cssStringified;\n}\nfunction isCSSImportRule(rule) {\n return 'styleSheet' in rule;\n}\nfunction stringifyStyleSheet(sheet) {\n return sheet.cssRules\n ? Array.from(sheet.cssRules)\n .map(function (rule) { return rule.cssText || ''; })\n .join('')\n : '';\n}\nfunction extractOrigin(url) {\n var origin = '';\n if (url.indexOf('//') > -1) {\n origin = url.split('/').slice(0, 3).join('/');\n }\n else {\n origin = url.split('/')[0];\n }\n origin = origin.split('?')[0];\n return origin;\n}\nvar canvasService;\nvar canvasCtx;\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nvar RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absoluteToStylesheet(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 (!RELATIVE_PATH.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 _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\n var part = parts_1[_i];\n if (part === '.') {\n continue;\n }\n else if (part === '..') {\n stack.pop();\n }\n else {\n stack.push(part);\n }\n }\n return \"url(\" + maybeQuote + stack.join('/') + maybeQuote + \")\";\n });\n}\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 chars;\n var match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars = match[0];\n pos += chars.length;\n return chars;\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 }\n else {\n var descriptorsStr = '';\n url = absoluteToDoc(doc, url);\n var inParens = false;\n while (true) {\n var c = attributeValue.charAt(pos);\n if (c === '') {\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (!inParens) {\n if (c === ',') {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (c === '(') {\n inParens = true;\n }\n }\n else {\n if (c === ')') {\n inParens = false;\n }\n }\n descriptorsStr += c;\n pos += 1;\n }\n }\n }\n return output.join(', ');\n}\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === '') {\n return attributeValue;\n }\n var a = doc.createElement('a');\n a.href = attributeValue;\n return a.href;\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\n}\nfunction getHref() {\n var a = document.createElement('a');\n a.href = '';\n return a.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (name === 'src' || (name === 'href' && value)) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'xlink:href' && value && value[0] !== '#') {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'background' &&\n value &&\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'srcset' && value) {\n return getAbsoluteSrcsetString(doc, value);\n }\n else if (name === 'style' && value) {\n return absoluteToStylesheet(value, getHref());\n }\n else if (tagName === 'object' && name === 'data' && value) {\n return absoluteToDoc(doc, value);\n }\n else {\n return value;\n }\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n if (typeof blockClass === 'string') {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n }\n else {\n for (var eIndex = 0; 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 return false;\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\n if (!node) {\n return false;\n }\n if (node.nodeType === node.ELEMENT_NODE) {\n if (typeof maskTextClass === 'string') {\n if (node.classList.contains(maskTextClass)) {\n return true;\n }\n }\n else {\n for (var eIndex = 0; eIndex < node.classList.length; eIndex++) {\n var className = node.classList[eIndex];\n if (maskTextClass.test(className)) {\n return true;\n }\n }\n }\n if (maskTextSelector) {\n if (node.matches(maskTextSelector)) {\n return true;\n }\n }\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector);\n }\n if (node.nodeType === node.TEXT_NODE) {\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector);\n }\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector);\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 }\n catch (error) {\n return;\n }\n if (readyState !== 'complete') {\n var timer_1 = setTimeout(function () {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener('load', function () {\n clearTimeout(timer_1);\n fired = true;\n listener();\n });\n return;\n }\n var blankUrl = 'about:blank';\n if (win.location.href !== blankUrl ||\n iframeEl.src === blankUrl ||\n iframeEl.src === '') {\n setTimeout(listener, 0);\n return;\n }\n iframeEl.addEventListener('load', listener);\n}\nfunction serializeNode(n, options) {\n var _a;\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _b = options.maskInputOptions, maskInputOptions = _b === void 0 ? {} : _b, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _c = options.dataURLOptions, dataURLOptions = _c === void 0 ? {} : _c, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn;\n var rootId;\n if (doc.__sn) {\n var docId = doc.__sn.id;\n rootId = docId === 1 ? undefined : docId;\n }\n switch (n.nodeType) {\n case n.DOCUMENT_NODE:\n if (n.compatMode !== 'CSS1Compat') {\n return {\n type: NodeType.Document,\n childNodes: [],\n compatMode: n.compatMode,\n rootId: rootId\n };\n }\n else {\n return {\n type: NodeType.Document,\n childNodes: [],\n rootId: rootId\n };\n }\n case n.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType.DocumentType,\n name: n.name,\n publicId: n.publicId,\n systemId: n.systemId,\n rootId: rootId\n };\n case n.ELEMENT_NODE:\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\n var tagName = getValidTagName(n);\n var attributes_1 = {};\n for (var _i = 0, _d = Array.from(n.attributes); _i < _d.length; _i++) {\n var _e = _d[_i], name_1 = _e.name, value = _e.value;\n attributes_1[name_1] = transformAttribute(doc, tagName, name_1, value);\n }\n if (tagName === 'link' && inlineStylesheet) {\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\n return s.href === n.href;\n });\n var cssText = null;\n if (stylesheet) {\n cssText = getCssRulesString(stylesheet);\n }\n if (cssText) {\n delete attributes_1.rel;\n delete attributes_1.href;\n attributes_1._cssText = absoluteToStylesheet(cssText, stylesheet.href);\n }\n }\n if (tagName === 'style' &&\n n.sheet &&\n !(n.innerText ||\n n.textContent ||\n '').trim().length) {\n var cssText = getCssRulesString(n.sheet);\n if (cssText) {\n attributes_1._cssText = absoluteToStylesheet(cssText, getHref());\n }\n }\n if (tagName === 'input' ||\n tagName === 'textarea' ||\n tagName === 'select') {\n var value = n.value;\n if (attributes_1.type !== 'radio' &&\n attributes_1.type !== 'checkbox' &&\n attributes_1.type !== 'submit' &&\n attributes_1.type !== 'button' &&\n value) {\n attributes_1.value = maskInputValue({\n type: attributes_1.type,\n tagName: tagName,\n value: value,\n maskInputOptions: maskInputOptions,\n maskInputFn: maskInputFn\n });\n }\n else if (n.checked) {\n attributes_1.checked = n.checked;\n }\n }\n if (tagName === 'option') {\n if (n.selected && !maskInputOptions['select']) {\n attributes_1.selected = true;\n }\n else {\n delete attributes_1.selected;\n }\n }\n if (tagName === 'canvas' && recordCanvas) {\n if (n.__context === '2d') {\n if (!is2DCanvasBlank(n)) {\n attributes_1.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n }\n else if (!('__context' in n)) {\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n var blankCanvas = document.createElement('canvas');\n blankCanvas.width = n.width;\n blankCanvas.height = n.height;\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes_1.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_1 = n;\n var oldValue_1 = image_1.crossOrigin;\n image_1.crossOrigin = 'anonymous';\n var recordInlineImage = function () {\n try {\n canvasService.width = image_1.naturalWidth;\n canvasService.height = image_1.naturalHeight;\n canvasCtx.drawImage(image_1, 0, 0);\n attributes_1.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n catch (err) {\n console.warn(\"Cannot inline img src=\" + image_1.currentSrc + \"! Error: \" + err);\n }\n oldValue_1\n ? (attributes_1.crossOrigin = oldValue_1)\n : delete attributes_1.crossOrigin;\n };\n if (image_1.complete && image_1.naturalWidth !== 0)\n recordInlineImage();\n else\n image_1.onload = recordInlineImage;\n }\n if (tagName === 'audio' || tagName === 'video') {\n attributes_1.rr_mediaState = n.paused\n ? 'paused'\n : 'played';\n attributes_1.rr_mediaCurrentTime = n.currentTime;\n }\n if (n.scrollLeft) {\n attributes_1.rr_scrollLeft = n.scrollLeft;\n }\n if (n.scrollTop) {\n attributes_1.rr_scrollTop = n.scrollTop;\n }\n if (needBlock) {\n var _f = n.getBoundingClientRect(), width = _f.width, height = _f.height;\n attributes_1 = {\n \"class\": attributes_1[\"class\"],\n rr_width: width + \"px\",\n rr_height: height + \"px\"\n };\n }\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes_1.src)) {\n if (!n.contentDocument) {\n attributes_1.rr_src = attributes_1.src;\n }\n delete attributes_1.src;\n }\n return {\n type: NodeType.Element,\n tagName: tagName,\n attributes: attributes_1,\n childNodes: [],\n isSVG: isSVGElement(n) || undefined,\n needBlock: needBlock,\n rootId: rootId\n };\n case n.TEXT_NODE:\n var parentTagName = n.parentNode && n.parentNode.tagName;\n var textContent = n.textContent;\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\n if (isStyle && textContent) {\n try {\n if (n.nextSibling || n.previousSibling) {\n }\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\n textContent = stringifyStyleSheet(n.parentNode.sheet);\n }\n }\n catch (err) {\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \" + err, n);\n }\n textContent = absoluteToStylesheet(textContent, getHref());\n }\n if (isScript) {\n textContent = 'SCRIPT_PLACEHOLDER';\n }\n if (!isStyle &&\n !isScript &&\n needMaskingText(n, maskTextClass, maskTextSelector) &&\n textContent) {\n textContent = maskTextFn\n ? maskTextFn(textContent)\n : textContent.replace(/[\\S]/g, '*');\n }\n return {\n type: NodeType.Text,\n textContent: textContent || '',\n isStyle: isStyle,\n rootId: rootId\n };\n case n.CDATA_SECTION_NODE:\n return {\n type: NodeType.CDATA,\n textContent: '',\n rootId: rootId\n };\n case n.COMMENT_NODE:\n return {\n type: NodeType.Comment,\n textContent: n.textContent || '',\n rootId: rootId\n };\n default:\n return false;\n }\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === undefined) {\n return '';\n }\n else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\n return true;\n }\n else if (sn.type === NodeType.Element) {\n if (slimDOMOptions.script &&\n (sn.tagName === 'script' ||\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'preload' &&\n sn.attributes.as === 'script') ||\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'prefetch' &&\n typeof sn.attributes.href === 'string' &&\n sn.attributes.href.endsWith('.js')))) {\n return true;\n }\n else if (slimDOMOptions.headFavicon &&\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\n (sn.tagName === 'meta' &&\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\n lowerIfExists(sn.attributes.name) === 'application-name' ||\n lowerIfExists(sn.attributes.rel) === 'icon' ||\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\n return true;\n }\n else if (sn.tagName === 'meta') {\n if (slimDOMOptions.headMetaDescKeywords &&\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n }\n else if (slimDOMOptions.headMetaSocial &&\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\n return true;\n }\n else if (slimDOMOptions.headMetaRobots &&\n (lowerIfExists(sn.attributes.name) === 'robots' ||\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\n return true;\n }\n else if (slimDOMOptions.headMetaHttpEquiv &&\n sn.attributes['http-equiv'] !== undefined) {\n return true;\n }\n else if (slimDOMOptions.headMetaAuthorship &&\n (lowerIfExists(sn.attributes.name) === 'author' ||\n lowerIfExists(sn.attributes.name) === 'generator' ||\n lowerIfExists(sn.attributes.name) === 'framework' ||\n lowerIfExists(sn.attributes.name) === 'publisher' ||\n lowerIfExists(sn.attributes.name) === 'progid' ||\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n }\n else if (slimDOMOptions.headMetaVerification &&\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\n lowerIfExists(sn.attributes.name) === 'verification' ||\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n, options) {\n var doc = options.doc, map = options.map, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.inlineStylesheet, inlineStylesheet = _b === void 0 ? true : _b, _c = options.maskInputOptions, maskInputOptions = _c === void 0 ? {} : _c, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _d = options.dataURLOptions, dataURLOptions = _d === void 0 ? {} : _d, _e = options.inlineImages, inlineImages = _e === void 0 ? false : _e, _f = options.recordCanvas, recordCanvas = _f === void 0 ? false : _f, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _g = options.iframeLoadTimeout, iframeLoadTimeout = _g === void 0 ? 5000 : _g, _h = options.keepIframeSrcFn, keepIframeSrcFn = _h === void 0 ? function () { return false; } : _h;\n var _j = options.preserveWhiteSpace, preserveWhiteSpace = _j === void 0 ? true : _j;\n var _serializedNode = serializeNode(n, {\n doc: doc,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\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 });\n if (!_serializedNode) {\n console.warn(n, 'not serialized');\n return null;\n }\n var id;\n if ('__sn' in n) {\n id = n.__sn.id;\n }\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\n (!preserveWhiteSpace &&\n _serializedNode.type === NodeType.Text &&\n !_serializedNode.isStyle &&\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\n id = IGNORED_NODE;\n }\n else {\n id = genId();\n }\n var serializedNode = Object.assign(_serializedNode, { id: id });\n n.__sn = serializedNode;\n if (id === IGNORED_NODE) {\n return null;\n }\n map[id] = n;\n if (onSerialize) {\n onSerialize(n);\n }\n var recordChild = !skipChild;\n if (serializedNode.type === NodeType.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n if (n.shadowRoot)\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType.Document ||\n serializedNode.type === NodeType.Element) &&\n recordChild) {\n if (slimDOMOptions.headWhitespace &&\n _serializedNode.type === NodeType.Element &&\n _serializedNode.tagName === 'head') {\n preserveWhiteSpace = false;\n }\n var bypassOptions = {\n doc: doc,\n map: map,\n blockClass: blockClass,\n blockSelector: blockSelector,\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 keepIframeSrcFn: keepIframeSrcFn\n };\n for (var _i = 0, _k = Array.from(n.childNodes); _i < _k.length; _i++) {\n var childN = _k[_i];\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n if (isElement(n) && n.shadowRoot) {\n for (var _l = 0, _m = Array.from(n.shadowRoot.childNodes); _l < _m.length; _l++) {\n var childN = _m[_l];\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedChildNode.isShadow = true;\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n if (n.parentNode && isShadowRoot(n.parentNode)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType.Element &&\n serializedNode.tagName === 'iframe') {\n onceIframeLoaded(n, function () {\n var iframeDoc = n.contentDocument;\n if (iframeDoc && onIframeLoad) {\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n map: map,\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 keepIframeSrcFn: keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(n, serializedIframeNode);\n }\n }\n }, iframeLoadTimeout);\n }\n return serializedNode;\n}\nfunction snapshot(n, options) {\n var _a = options || {}, _b = _a.blockClass, blockClass = _b === void 0 ? 'rr-block' : _b, _c = _a.blockSelector, blockSelector = _c === void 0 ? null : _c, _d = _a.maskTextClass, maskTextClass = _d === void 0 ? 'rr-mask' : _d, _e = _a.maskTextSelector, maskTextSelector = _e === void 0 ? null : _e, _f = _a.inlineStylesheet, inlineStylesheet = _f === void 0 ? true : _f, _g = _a.inlineImages, inlineImages = _g === void 0 ? false : _g, _h = _a.recordCanvas, recordCanvas = _h === void 0 ? false : _h, _j = _a.maskAllInputs, maskAllInputs = _j === void 0 ? false : _j, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _k = _a.slimDOM, slimDOM = _k === void 0 ? false : _k, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, _l = _a.keepIframeSrcFn, keepIframeSrcFn = _l === void 0 ? function () { return false; } : _l;\n var idNodeMap = {};\n var maskInputOptions = maskAllInputs === true\n ? {\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 }\n : maskAllInputs === false\n ? {\n password: true\n }\n : maskAllInputs;\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\n ?\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === 'all',\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n : slimDOM === false\n ? {}\n : slimDOM;\n return [\n serializeNodeWithId(n, {\n doc: n,\n map: idNodeMap,\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 keepIframeSrcFn: keepIframeSrcFn\n }),\n idNodeMap,\n ];\n}\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\nfunction parse(css, options) {\n if (options === void 0) { options = {}; }\n var lineno = 1;\n var column = 1;\n function updatePosition(str) {\n var lines = str.match(/\\n/g);\n if (lines) {\n lineno += lines.length;\n }\n var i = str.lastIndexOf('\\n');\n column = i === -1 ? column + str.length : str.length - i;\n }\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n var Position = (function () {\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n return Position;\n }());\n Position.prototype.content = css;\n var errorsList = [];\n function error(msg) {\n var err = new Error(options.source + ':' + lineno + ':' + column + ': ' + msg);\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = css;\n if (options.silent) {\n errorsList.push(err);\n }\n else {\n throw err;\n }\n }\n function stylesheet() {\n var rulesList = rules();\n return {\n type: 'stylesheet',\n stylesheet: {\n source: options.source,\n rules: rulesList,\n parsingErrors: errorsList\n }\n };\n }\n function open() {\n return match(/^{\\s*/);\n }\n function close() {\n return match(/^}/);\n }\n function rules() {\n var node;\n var rules = [];\n whitespace();\n comments(rules);\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\n if (node !== false) {\n rules.push(node);\n comments(rules);\n }\n }\n return rules;\n }\n function match(re) {\n var m = re.exec(css);\n if (!m) {\n return;\n }\n var str = m[0];\n updatePosition(str);\n css = css.slice(str.length);\n return m;\n }\n function whitespace() {\n match(/^\\s*/);\n }\n function comments(rules) {\n if (rules === void 0) { rules = []; }\n var c;\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n c = comment();\n }\n return rules;\n }\n function comment() {\n var pos = position();\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\n return;\n }\n var i = 2;\n while ('' !== css.charAt(i) &&\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\n ++i;\n }\n i += 2;\n if ('' === css.charAt(i - 1)) {\n return error('End of comment missing');\n }\n var str = css.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n css = css.slice(i);\n column += 2;\n return pos({\n type: 'comment',\n comment: str\n });\n }\n function selector() {\n var m = match(/^([^{]+)/);\n if (!m) {\n return;\n }\n return trim(m[0])\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\n return m.replace(/,/g, '\\u200C');\n })\n .split(/\\s*(?![^(]*\\)),\\s*/)\n .map(function (s) {\n return s.replace(/\\u200C/g, ',');\n });\n }\n function declaration() {\n var pos = position();\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n if (!propMatch) {\n return;\n }\n var prop = trim(propMatch[0]);\n if (!match(/^:\\s*/)) {\n return error(\"property missing ':'\");\n }\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\n var ret = pos({\n type: 'declaration',\n property: prop.replace(commentre, ''),\n value: val ? trim(val[0]).replace(commentre, '') : ''\n });\n match(/^[;\\s]*/);\n return ret;\n }\n function declarations() {\n var decls = [];\n if (!open()) {\n return error(\"missing '{'\");\n }\n comments(decls);\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n decl = declaration();\n }\n if (!close()) {\n return error(\"missing '}'\");\n }\n return decls;\n }\n function keyframe() {\n var m;\n var vals = [];\n var pos = position();\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\n vals.push(m[1]);\n match(/^,\\s*/);\n }\n if (!vals.length) {\n return;\n }\n return pos({\n type: 'keyframe',\n values: vals,\n declarations: declarations()\n });\n }\n function atkeyframes() {\n var pos = position();\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\n if (!m) {\n return;\n }\n var vendor = m[1];\n m = match(/^([-\\w]+)\\s*/);\n if (!m) {\n return error('@keyframes missing name');\n }\n var name = m[1];\n if (!open()) {\n return error(\"@keyframes missing '{'\");\n }\n var frame;\n var frames = comments();\n while ((frame = keyframe())) {\n frames.push(frame);\n frames = frames.concat(comments());\n }\n if (!close()) {\n return error(\"@keyframes missing '}'\");\n }\n return pos({\n type: 'keyframes',\n name: name,\n vendor: vendor,\n keyframes: frames\n });\n }\n function atsupports() {\n var pos = position();\n var m = match(/^@supports *([^{]+)/);\n if (!m) {\n return;\n }\n var supports = trim(m[1]);\n if (!open()) {\n return error(\"@supports missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@supports missing '}'\");\n }\n return pos({\n type: 'supports',\n supports: supports,\n rules: style\n });\n }\n function athost() {\n var pos = position();\n var m = match(/^@host\\s*/);\n if (!m) {\n return;\n }\n if (!open()) {\n return error(\"@host missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@host missing '}'\");\n }\n return pos({\n type: 'host',\n rules: style\n });\n }\n function atmedia() {\n var pos = position();\n var m = match(/^@media *([^{]+)/);\n if (!m) {\n return;\n }\n var media = trim(m[1]);\n if (!open()) {\n return error(\"@media missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@media missing '}'\");\n }\n return pos({\n type: 'media',\n media: media,\n rules: style\n });\n }\n function atcustommedia() {\n var pos = position();\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\n if (!m) {\n return;\n }\n return pos({\n type: 'custom-media',\n name: trim(m[1]),\n media: trim(m[2])\n });\n }\n function atpage() {\n var pos = position();\n var m = match(/^@page */);\n if (!m) {\n return;\n }\n var sel = selector() || [];\n if (!open()) {\n return error(\"@page missing '{'\");\n }\n var decls = comments();\n var decl;\n while ((decl = declaration())) {\n decls.push(decl);\n decls = decls.concat(comments());\n }\n if (!close()) {\n return error(\"@page missing '}'\");\n }\n return pos({\n type: 'page',\n selectors: sel,\n declarations: decls\n });\n }\n function atdocument() {\n var pos = position();\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\n if (!m) {\n return;\n }\n var vendor = trim(m[1]);\n var doc = trim(m[2]);\n if (!open()) {\n return error(\"@document missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@document missing '}'\");\n }\n return pos({\n type: 'document',\n document: doc,\n vendor: vendor,\n rules: style\n });\n }\n function atfontface() {\n var pos = position();\n var m = match(/^@font-face\\s*/);\n if (!m) {\n return;\n }\n if (!open()) {\n return error(\"@font-face missing '{'\");\n }\n var decls = comments();\n var decl;\n while ((decl = declaration())) {\n decls.push(decl);\n decls = decls.concat(comments());\n }\n if (!close()) {\n return error(\"@font-face missing '}'\");\n }\n return pos({\n type: 'font-face',\n declarations: decls\n });\n }\n var atimport = _compileAtrule('import');\n var atcharset = _compileAtrule('charset');\n var atnamespace = _compileAtrule('namespace');\n function _compileAtrule(name) {\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\n return function () {\n var pos = position();\n var m = match(re);\n if (!m) {\n return;\n }\n var ret = { type: name };\n ret[name] = m[1].trim();\n return pos(ret);\n };\n }\n function atrule() {\n if (css[0] !== '@') {\n return;\n }\n return (atkeyframes() ||\n atmedia() ||\n atcustommedia() ||\n atsupports() ||\n atimport() ||\n atcharset() ||\n atnamespace() ||\n atdocument() ||\n atpage() ||\n athost() ||\n atfontface());\n }\n function rule() {\n var pos = position();\n var sel = selector();\n if (!sel) {\n return error('selector missing');\n }\n comments();\n return pos({\n type: 'rule',\n selectors: sel,\n declarations: declarations()\n });\n }\n return addParent(stylesheet());\n}\nfunction trim(str) {\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\n}\nfunction addParent(obj, parent) {\n var isNode = obj && typeof obj.type === 'string';\n var childParent = isNode ? obj : parent;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var k = _a[_i];\n var value = obj[k];\n if (Array.isArray(value)) {\n value.forEach(function (v) {\n addParent(v, childParent);\n });\n }\n else if (value && typeof value === 'object') {\n addParent(value, childParent);\n }\n }\n if (isNode) {\n Object.defineProperty(obj, 'parent', {\n configurable: true,\n writable: true,\n enumerable: false,\n value: parent || null\n });\n }\n return obj;\n}\n\nvar tagMap = {\n script: 'noscript',\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(n) {\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\n if (tagName === 'link' && n.attributes._cssText) {\n tagName = 'style';\n }\n return tagName;\n}\nfunction escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\nfunction addHoverClass(cssText, cache) {\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\n if (cachedStyle)\n return cachedStyle;\n var ast = parse(cssText, {\n silent: true\n });\n if (!ast.stylesheet) {\n return cssText;\n }\n var selectors = [];\n ast.stylesheet.rules.forEach(function (rule) {\n if ('selectors' in rule) {\n (rule.selectors || []).forEach(function (selector) {\n if (HOVER_SELECTOR.test(selector)) {\n selectors.push(selector);\n }\n });\n }\n });\n if (selectors.length === 0) {\n return cssText;\n }\n var selectorMatcher = new RegExp(selectors\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\n .sort(function (a, b) { return b.length - a.length; })\n .map(function (selector) {\n return escapeRegExp(selector);\n })\n .join('|'), 'g');\n var result = cssText.replace(selectorMatcher, function (selector) {\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\n return selector + \", \" + newSelector;\n });\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\n return result;\n}\nfunction createCache() {\n var stylesWithHoverClass = new Map();\n return {\n stylesWithHoverClass: stylesWithHoverClass\n };\n}\nfunction buildNode(n, options) {\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\n switch (n.type) {\n case NodeType.Document:\n return doc.implementation.createDocument(null, '', null);\n case NodeType.DocumentType:\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\n case NodeType.Element:\n var tagName = getTagName(n);\n var node_1;\n if (n.isSVG) {\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\n }\n else {\n node_1 = doc.createElement(tagName);\n }\n var _loop_1 = function (name_1) {\n if (!n.attributes.hasOwnProperty(name_1)) {\n return \"continue\";\n }\n var value = n.attributes[name_1];\n if (tagName === 'option' && name_1 === 'selected' && value === false) {\n return \"continue\";\n }\n value =\n typeof value === 'boolean' || typeof value === 'number' ? '' : value;\n if (!name_1.startsWith('rr_')) {\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\n if (isRemoteOrDynamicCss && hackCss) {\n value = addHoverClass(value, cache);\n }\n if (isTextarea || isRemoteOrDynamicCss) {\n var child = doc.createTextNode(value);\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.nodeType === node_1.TEXT_NODE) {\n node_1.removeChild(c);\n }\n }\n node_1.appendChild(child);\n return \"continue\";\n }\n try {\n if (n.isSVG && name_1 === 'xlink:href') {\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value);\n }\n else if (name_1 === 'onload' ||\n name_1 === 'onclick' ||\n name_1.substring(0, 7) === 'onmouse') {\n node_1.setAttribute('_' + name_1, value);\n }\n else if (tagName === 'meta' &&\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\n name_1 === 'content') {\n node_1.setAttribute('csp-content', value);\n return \"continue\";\n }\n else if (tagName === 'link' &&\n n.attributes.rel === 'preload' &&\n n.attributes.as === 'script') {\n }\n else if (tagName === 'link' &&\n n.attributes.rel === 'prefetch' &&\n typeof n.attributes.href === 'string' &&\n n.attributes.href.endsWith('.js')) {\n }\n else if (tagName === 'img' &&\n n.attributes.srcset &&\n n.attributes.rr_dataURL) {\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\n }\n else {\n node_1.setAttribute(name_1, value);\n }\n }\n catch (error) {\n }\n }\n else {\n if (tagName === 'canvas' && name_1 === 'rr_dataURL') {\n var image_1 = document.createElement('img');\n image_1.src = value;\n image_1.onload = function () {\n var ctx = node_1.getContext('2d');\n if (ctx) {\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\n }\n };\n }\n else if (tagName === 'img' && name_1 === 'rr_dataURL') {\n var image = node_1;\n if (!image.currentSrc.startsWith('data:')) {\n image.setAttribute('rrweb-original-src', n.attributes.src);\n image.src = value;\n }\n }\n if (name_1 === 'rr_width') {\n node_1.style.width = value;\n }\n else if (name_1 === 'rr_height') {\n node_1.style.height = value;\n }\n else if (name_1 === 'rr_mediaCurrentTime') {\n node_1.currentTime = n.attributes\n .rr_mediaCurrentTime;\n }\n else if (name_1 === 'rr_mediaState') {\n switch (value) {\n case 'played':\n node_1\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\n break;\n case 'paused':\n node_1.pause();\n break;\n }\n }\n }\n };\n for (var name_1 in n.attributes) {\n _loop_1(name_1);\n }\n if (n.isShadowHost) {\n if (!node_1.shadowRoot) {\n node_1.attachShadow({ mode: 'open' });\n }\n else {\n while (node_1.shadowRoot.firstChild) {\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\n }\n }\n }\n return node_1;\n case NodeType.Text:\n return doc.createTextNode(n.isStyle && hackCss\n ? addHoverClass(n.textContent, cache)\n : n.textContent);\n case NodeType.CDATA:\n return doc.createCDATASection(n.textContent);\n case NodeType.Comment:\n return doc.createComment(n.textContent);\n default:\n return null;\n }\n}\nfunction buildNodeWithSN(n, options) {\n var doc = options.doc, map = options.map, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\n if (!node) {\n return null;\n }\n if (n.rootId) {\n console.assert(map[n.rootId] === doc, 'Target document should has the same root id.');\n }\n if (n.type === NodeType.Document) {\n doc.close();\n doc.open();\n if (n.compatMode === 'BackCompat' &&\n n.childNodes &&\n n.childNodes[0].type !== NodeType.DocumentType) {\n if (n.childNodes[0].type === NodeType.Element &&\n 'xmlns' in n.childNodes[0].attributes &&\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\n }\n else {\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\n }\n }\n node = doc;\n }\n node.__sn = n;\n map[n.id] = node;\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\n !skipChild) {\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\n var childN = _c[_i];\n var childNode = buildNodeWithSN(childN, {\n doc: doc,\n map: map,\n skipChild: false,\n hackCss: hackCss,\n afterAppend: afterAppend,\n cache: cache\n });\n if (!childNode) {\n console.warn('Failed to rebuild', childN);\n continue;\n }\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\n node.shadowRoot.appendChild(childNode);\n }\n else {\n node.appendChild(childNode);\n }\n if (afterAppend) {\n afterAppend(childNode);\n }\n }\n }\n return node;\n}\nfunction visit(idNodeMap, onVisit) {\n function walk(node) {\n onVisit(node);\n }\n for (var key in idNodeMap) {\n if (idNodeMap[key]) {\n walk(idNodeMap[key]);\n }\n }\n}\nfunction handleScroll(node) {\n var n = node.__sn;\n if (n.type !== NodeType.Element) {\n return;\n }\n var el = node;\n for (var name_2 in n.attributes) {\n if (!(n.attributes.hasOwnProperty(name_2) && name_2.startsWith('rr_'))) {\n continue;\n }\n var value = n.attributes[name_2];\n if (name_2 === 'rr_scrollLeft') {\n el.scrollLeft = value;\n }\n if (name_2 === 'rr_scrollTop') {\n el.scrollTop = value;\n }\n }\n}\nfunction rebuild(n, options) {\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache;\n var idNodeMap = {};\n var node = buildNodeWithSN(n, {\n doc: doc,\n map: idNodeMap,\n skipChild: false,\n hackCss: hackCss,\n afterAppend: afterAppend,\n cache: cache\n });\n visit(idNodeMap, function (visitedNode) {\n if (onVisit) {\n onVisit(visitedNode);\n }\n handleScroll(visitedNode);\n });\n return [node, idNodeMap];\n}\n\nexport { IGNORED_NODE, NodeType, addHoverClass, buildNodeWithSN, createCache, is2DCanvasBlank, isElement, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\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\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\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 __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nexport { __assign, __read, __rest, __spreadArray, __values };\n","var EventType;\n(function (EventType) {\n EventType[EventType[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType[EventType[\"Load\"] = 1] = \"Load\";\n EventType[EventType[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType[EventType[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType[EventType[\"Meta\"] = 4] = \"Meta\";\n EventType[EventType[\"Custom\"] = 5] = \"Custom\";\n EventType[EventType[\"Plugin\"] = 6] = \"Plugin\";\n})(EventType || (EventType = {}));\nvar IncrementalSource;\n(function (IncrementalSource) {\n IncrementalSource[IncrementalSource[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource[IncrementalSource[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource[IncrementalSource[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource[IncrementalSource[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource[IncrementalSource[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource[IncrementalSource[\"Input\"] = 5] = \"Input\";\n IncrementalSource[IncrementalSource[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource[IncrementalSource[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource[IncrementalSource[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource[IncrementalSource[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource[IncrementalSource[\"Font\"] = 10] = \"Font\";\n IncrementalSource[IncrementalSource[\"Log\"] = 11] = \"Log\";\n IncrementalSource[IncrementalSource[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource[IncrementalSource[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n})(IncrementalSource || (IncrementalSource = {}));\nvar MouseInteractions;\n(function (MouseInteractions) {\n MouseInteractions[MouseInteractions[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions[MouseInteractions[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions[MouseInteractions[\"Click\"] = 2] = \"Click\";\n MouseInteractions[MouseInteractions[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions[MouseInteractions[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions[MouseInteractions[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions[MouseInteractions[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions[MouseInteractions[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions[MouseInteractions[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions[MouseInteractions[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions[MouseInteractions[\"TouchCancel\"] = 10] = \"TouchCancel\";\n})(MouseInteractions || (MouseInteractions = {}));\nvar CanvasContext;\n(function (CanvasContext) {\n CanvasContext[CanvasContext[\"2D\"] = 0] = \"2D\";\n CanvasContext[CanvasContext[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext[CanvasContext[\"WebGL2\"] = 2] = \"WebGL2\";\n})(CanvasContext || (CanvasContext = {}));\nvar MediaInteractions;\n(function (MediaInteractions) {\n MediaInteractions[MediaInteractions[\"Play\"] = 0] = \"Play\";\n MediaInteractions[MediaInteractions[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions[MediaInteractions[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions[MediaInteractions[\"VolumeChange\"] = 3] = \"VolumeChange\";\n})(MediaInteractions || (MediaInteractions = {}));\nvar ReplayerEvents;\n(function (ReplayerEvents) {\n ReplayerEvents[\"Start\"] = \"start\";\n ReplayerEvents[\"Pause\"] = \"pause\";\n ReplayerEvents[\"Resume\"] = \"resume\";\n ReplayerEvents[\"Resize\"] = \"resize\";\n ReplayerEvents[\"Finish\"] = \"finish\";\n ReplayerEvents[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents[\"EventCast\"] = \"event-cast\";\n ReplayerEvents[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents[\"Flush\"] = \"flush\";\n ReplayerEvents[\"StateChange\"] = \"state-change\";\n ReplayerEvents[\"PlayBack\"] = \"play-back\";\n})(ReplayerEvents || (ReplayerEvents = {}));\n\nexport { CanvasContext, EventType, IncrementalSource, MediaInteractions, MouseInteractions, ReplayerEvents };\n","import { __values } from '../ext/tslib/tslib.es6.js';\nimport { IncrementalSource } from './types.js';\nimport { IGNORED_NODE, isShadowRoot, NodeType } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target) {\n if (target === void 0) { target = document; }\n var options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return function () { return target.removeEventListener(type, fn, options); };\n}\nfunction createMirror() {\n return {\n map: {},\n getId: function (n) {\n if (!n || !n.__sn) {\n return -1;\n }\n return n.__sn.id;\n },\n getNode: function (id) {\n return this.map[id] || null;\n },\n removeNodeFromMap: function (n) {\n var _this = this;\n var id = n.__sn && n.__sn.id;\n delete this.map[id];\n if (n.childNodes) {\n n.childNodes.forEach(function (child) {\n return _this.removeNodeFromMap(child);\n });\n }\n },\n has: function (id) {\n return this.map.hasOwnProperty(id);\n },\n reset: function () {\n this.map = {};\n },\n };\n}\nvar DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\n '\\r\\n' +\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n '\\r\\n' +\n 'or you can use record.mirror to access the mirror instance during recording.';\nvar _mirror = {\n map: {},\n getId: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset: function () {\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 (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 (arg) {\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 var args = arguments;\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 }\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\n ? d\n : {\n set: function (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 () { return hookSetter(target, key, original || {}, true); };\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function () { };\n }\n var original_1 = source[name];\n var wrapped = replacement(original_1);\n if (typeof wrapped === 'function') {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original_1,\n },\n });\n }\n source[name] = wrapped;\n return function () {\n source[name] = original_1;\n };\n }\n catch (_a) {\n return function () { };\n }\n}\nfunction getWindowHeight() {\n return (window.innerHeight ||\n (document.documentElement && document.documentElement.clientHeight) ||\n (document.body && document.body.clientHeight));\n}\nfunction getWindowWidth() {\n return (window.innerWidth ||\n (document.documentElement && document.documentElement.clientWidth) ||\n (document.body && document.body.clientWidth));\n}\nfunction isBlocked(node, blockClass) {\n if (!node) {\n return false;\n }\n if (node.nodeType === node.ELEMENT_NODE) {\n var needBlock_1 = false;\n if (typeof blockClass === 'string') {\n if (node.closest !== undefined) {\n return node.closest('.' + blockClass) !== null;\n }\n else {\n needBlock_1 = node.classList.contains(blockClass);\n }\n }\n else {\n node.classList.forEach(function (className) {\n if (blockClass.test(className)) {\n needBlock_1 = true;\n }\n });\n }\n return needBlock_1 || isBlocked(node.parentNode, blockClass);\n }\n if (node.nodeType === node.TEXT_NODE) {\n return isBlocked(node.parentNode, blockClass);\n }\n return isBlocked(node.parentNode, blockClass);\n}\nfunction isIgnored(n) {\n if ('__sn' in n) {\n return n.__sn.id === IGNORED_NODE;\n }\n return false;\n}\nfunction isAncestorRemoved(target, mirror) {\n if (isShadowRoot(target)) {\n return false;\n }\n var id = mirror.getId(target);\n if (!mirror.has(id)) {\n return true;\n }\n if (target.parentNode &&\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!target.parentNode) {\n return true;\n }\n return isAncestorRemoved(target.parentNode, mirror);\n}\nfunction isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill(win) {\n if (win === void 0) { win = window; }\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype\n .forEach;\n }\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype\n .forEach;\n }\n if (!Node.prototype.contains) {\n Node.prototype.contains = function contains(node) {\n if (!(0 in arguments)) {\n throw new TypeError('1 argument is required');\n }\n do {\n if (this === node) {\n return true;\n }\n } while ((node = node && node.parentNode));\n return false;\n };\n }\n}\nvar TreeIndex = (function () {\n function TreeIndex() {\n this.reset();\n }\n TreeIndex.prototype.add = function (mutation) {\n var parentTreeNode = this.indexes.get(mutation.parentId);\n var treeNode = {\n id: mutation.node.id,\n mutation: mutation,\n children: [],\n texts: [],\n attributes: [],\n };\n if (!parentTreeNode) {\n this.tree[treeNode.id] = treeNode;\n }\n else {\n treeNode.parent = parentTreeNode;\n parentTreeNode.children[treeNode.id] = treeNode;\n }\n this.indexes.set(treeNode.id, treeNode);\n };\n TreeIndex.prototype.remove = function (mutation, mirror) {\n var _this = this;\n var parentTreeNode = this.indexes.get(mutation.parentId);\n var treeNode = this.indexes.get(mutation.id);\n var deepRemoveFromMirror = function (id) {\n _this.removeIdSet.add(id);\n var node = mirror.getNode(id);\n node === null || node === void 0 ? void 0 : node.childNodes.forEach(function (childNode) {\n if ('__sn' in childNode) {\n deepRemoveFromMirror(childNode.__sn.id);\n }\n });\n };\n var deepRemoveFromTreeIndex = function (node) {\n _this.removeIdSet.add(node.id);\n Object.values(node.children).forEach(function (n) { return deepRemoveFromTreeIndex(n); });\n var _treeNode = _this.indexes.get(node.id);\n if (_treeNode) {\n var _parentTreeNode = _treeNode.parent;\n if (_parentTreeNode) {\n delete _treeNode.parent;\n delete _parentTreeNode.children[_treeNode.id];\n _this.indexes.delete(mutation.id);\n }\n }\n };\n if (!treeNode) {\n this.removeNodeMutations.push(mutation);\n deepRemoveFromMirror(mutation.id);\n }\n else if (!parentTreeNode) {\n delete this.tree[treeNode.id];\n this.indexes.delete(treeNode.id);\n deepRemoveFromTreeIndex(treeNode);\n }\n else {\n delete treeNode.parent;\n delete parentTreeNode.children[treeNode.id];\n this.indexes.delete(mutation.id);\n deepRemoveFromTreeIndex(treeNode);\n }\n };\n TreeIndex.prototype.text = function (mutation) {\n var treeNode = this.indexes.get(mutation.id);\n if (treeNode) {\n treeNode.texts.push(mutation);\n }\n else {\n this.textMutations.push(mutation);\n }\n };\n TreeIndex.prototype.attribute = function (mutation) {\n var treeNode = this.indexes.get(mutation.id);\n if (treeNode) {\n treeNode.attributes.push(mutation);\n }\n else {\n this.attributeMutations.push(mutation);\n }\n };\n TreeIndex.prototype.scroll = function (d) {\n this.scrollMap.set(d.id, d);\n };\n TreeIndex.prototype.input = function (d) {\n this.inputMap.set(d.id, d);\n };\n TreeIndex.prototype.flush = function () {\n var e_1, _a, e_2, _b;\n var _this = this;\n var _c = this, tree = _c.tree, removeNodeMutations = _c.removeNodeMutations, textMutations = _c.textMutations, attributeMutations = _c.attributeMutations;\n var batchMutationData = {\n source: IncrementalSource.Mutation,\n removes: removeNodeMutations,\n texts: textMutations,\n attributes: attributeMutations,\n adds: [],\n };\n var walk = function (treeNode, removed) {\n if (removed) {\n _this.removeIdSet.add(treeNode.id);\n }\n batchMutationData.texts = batchMutationData.texts\n .concat(removed ? [] : treeNode.texts)\n .filter(function (m) { return !_this.removeIdSet.has(m.id); });\n batchMutationData.attributes = batchMutationData.attributes\n .concat(removed ? [] : treeNode.attributes)\n .filter(function (m) { return !_this.removeIdSet.has(m.id); });\n if (!_this.removeIdSet.has(treeNode.id) &&\n !_this.removeIdSet.has(treeNode.mutation.parentId) &&\n !removed) {\n batchMutationData.adds.push(treeNode.mutation);\n if (treeNode.children) {\n Object.values(treeNode.children).forEach(function (n) { return walk(n, false); });\n }\n }\n else {\n Object.values(treeNode.children).forEach(function (n) { return walk(n, true); });\n }\n };\n Object.values(tree).forEach(function (n) { return walk(n, false); });\n try {\n for (var _d = __values(this.scrollMap.keys()), _e = _d.next(); !_e.done; _e = _d.next()) {\n var id = _e.value;\n if (this.removeIdSet.has(id)) {\n this.scrollMap.delete(id);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _f = __values(this.inputMap.keys()), _g = _f.next(); !_g.done; _g = _f.next()) {\n var id = _g.value;\n if (this.removeIdSet.has(id)) {\n this.inputMap.delete(id);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var scrollMap = new Map(this.scrollMap);\n var inputMap = new Map(this.inputMap);\n this.reset();\n return {\n mutationData: batchMutationData,\n scrollMap: scrollMap,\n inputMap: inputMap,\n };\n };\n TreeIndex.prototype.reset = function () {\n this.tree = [];\n this.indexes = new Map();\n this.removeNodeMutations = [];\n this.textMutations = [];\n this.attributeMutations = [];\n this.removeIdSet = new Set();\n this.scrollMap = new Map();\n this.inputMap = new Map();\n };\n TreeIndex.prototype.idRemoved = function (id) {\n return this.removeIdSet.has(id);\n };\n return TreeIndex;\n}());\nfunction queueToResolveTrees(queue) {\n var e_3, _a;\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 try {\n for (var queue_1 = __values(queue), queue_1_1 = queue_1.next(); !queue_1_1.done; queue_1_1 = queue_1.next()) {\n var mutation = queue_1_1.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 }\n else {\n var idx = queueNodeTrees.indexOf(nextInTree);\n queueNodeTrees.splice(idx, 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 }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (queue_1_1 && !queue_1_1.done && (_a = queue_1.return)) _a.call(queue_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return queueNodeTrees;\n}\nfunction iterateResolveTree(tree, cb) {\n cb(tree.value);\n for (var i = tree.children.length - 1; i >= 0; i--) {\n iterateResolveTree(tree.children[i], cb);\n }\n}\nfunction isIframeINode(node) {\n if ('__sn' in node) {\n return (node.__sn.type === NodeType.Element && node.__sn.tagName === 'iframe');\n }\n return false;\n}\nfunction getBaseDimension(node, rootIframe) {\n var _a, _b;\n var frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? 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 +\n frameBaseDimension.x,\n y: frameDimension.y * frameBaseDimension.relativeScale +\n frameBaseDimension.y,\n relativeScale: relativeScale,\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\n };\n}\nfunction hasShadowRoot(n) {\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\n}\n\nexport { TreeIndex, _mirror, createMirror, getBaseDimension, getWindowHeight, getWindowWidth, hasShadowRoot, hookSetter, isAncestorRemoved, isBlocked, isIframeINode, isIgnored, isTouchEvent, iterateResolveTree, on, patch, polyfill, queueToResolveTrees, throttle };\n","import { __values } from '../../ext/tslib/tslib.es6.js';\nimport { isShadowRoot, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isAncestorRemoved, isIframeINode, hasShadowRoot } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\n return '__ln' in n;\n}\nvar DoubleLinkedList = (function () {\n function DoubleLinkedList() {\n this.length = 0;\n this.head = null;\n }\n DoubleLinkedList.prototype.get = function (position) {\n if (position >= this.length) {\n throw new Error('Position outside of list range');\n }\n var current = this.head;\n for (var index = 0; index < position; index++) {\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\n }\n return current;\n };\n DoubleLinkedList.prototype.addNode = function (n) {\n var node = {\n value: n,\n previous: null,\n next: null,\n };\n n.__ln = node;\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n var current = n.previousSibling.__ln.next;\n node.next = current;\n node.previous = n.previousSibling.__ln;\n n.previousSibling.__ln.next = node;\n if (current) {\n current.previous = node;\n }\n }\n else if (n.nextSibling &&\n isNodeInLinkedList(n.nextSibling) &&\n n.nextSibling.__ln.previous) {\n var current = n.nextSibling.__ln.previous;\n node.previous = current;\n node.next = n.nextSibling.__ln;\n n.nextSibling.__ln.previous = node;\n if (current) {\n current.next = node;\n }\n }\n else {\n if (this.head) {\n this.head.previous = node;\n }\n node.next = this.head;\n this.head = node;\n }\n this.length++;\n };\n DoubleLinkedList.prototype.removeNode = function (n) {\n var current = n.__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 }\n }\n else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n }\n }\n if (n.__ln) {\n delete n.__ln;\n }\n this.length--;\n };\n return DoubleLinkedList;\n}());\nvar moveKey = function (id, parentId) { return \"\".concat(id, \"@\").concat(parentId); };\nfunction isINode(n) {\n return '__sn' in n;\n}\nvar MutationBuffer = (function () {\n function MutationBuffer() {\n var _this = this;\n this.frozen = false;\n this.locked = false;\n this.texts = [];\n this.attributes = [];\n this.removes = [];\n this.mapRemoves = [];\n this.movedMap = {};\n this.addedSet = new Set();\n this.movedSet = new Set();\n this.droppedSet = new Set();\n this.processMutations = function (mutations) {\n mutations.forEach(_this.processMutation);\n _this.emit();\n };\n this.emit = function () {\n var e_1, _a, e_2, _b;\n if (_this.frozen || _this.locked) {\n return;\n }\n var adds = [];\n var addList = new DoubleLinkedList();\n var getNextId = function (n) {\n var ns = n;\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 (n) {\n var _a, _b, _c, _d, _e;\n var shadowHost = n.getRootNode\n ? (_a = n.getRootNode()) === null || _a === void 0 ? void 0 : _a.host\n : null;\n var rootShadowHost = shadowHost;\n while ((_c = (_b = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _b === void 0 ? void 0 : _b.call(rootShadowHost)) === null || _c === void 0 ? void 0 : _c.host)\n rootShadowHost =\n ((_e = (_d = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _d === void 0 ? void 0 : _d.call(rootShadowHost)) === null || _e === void 0 ? void 0 : _e.host) ||\n null;\n var notInDoc = !_this.doc.contains(n) &&\n (rootShadowHost === null || !_this.doc.contains(rootShadowHost));\n if (!n.parentNode || notInDoc) {\n return;\n }\n var parentId = isShadowRoot(n.parentNode)\n ? _this.mirror.getId(shadowHost)\n : _this.mirror.getId(n.parentNode);\n var nextId = getNextId(n);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n);\n }\n var sn = serializeNodeWithId(n, {\n doc: _this.doc,\n map: _this.mirror.map,\n blockClass: _this.blockClass,\n blockSelector: _this.blockSelector,\n maskTextClass: _this.maskTextClass,\n maskTextSelector: _this.maskTextSelector,\n skipChild: true,\n inlineStylesheet: _this.inlineStylesheet,\n maskInputOptions: _this.maskInputOptions,\n maskTextFn: _this.maskTextFn,\n maskInputFn: _this.maskInputFn,\n slimDOMOptions: _this.slimDOMOptions,\n recordCanvas: _this.recordCanvas,\n inlineImages: _this.inlineImages,\n onSerialize: function (currentN) {\n if (isIframeINode(currentN)) {\n _this.iframeManager.addIframe(currentN);\n }\n if (hasShadowRoot(n)) {\n _this.shadowDomManager.addShadowRoot(n.shadowRoot, document);\n }\n },\n onIframeLoad: function (iframe, childSn) {\n _this.iframeManager.attachIframe(iframe, childSn);\n _this.shadowDomManager.observeAttachShadow(iframe);\n },\n });\n if (sn) {\n adds.push({\n parentId: parentId,\n nextId: nextId,\n node: sn,\n });\n }\n };\n while (_this.mapRemoves.length) {\n _this.mirror.removeNodeFromMap(_this.mapRemoves.shift());\n }\n try {\n for (var _c = __values(_this.movedSet), _d = _c.next(); !_d.done; _d = _c.next()) {\n var n = _d.value;\n if (isParentRemoved(_this.removes, n, _this.mirror) &&\n !_this.movedSet.has(n.parentNode)) {\n continue;\n }\n pushAdd(n);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _e = __values(_this.addedSet), _f = _e.next(); !_f.done; _f = _e.next()) {\n var n = _f.value;\n if (!isAncestorInSet(_this.droppedSet, n) &&\n !isParentRemoved(_this.removes, n, _this.mirror)) {\n pushAdd(n);\n }\n else if (isAncestorInSet(_this.movedSet, n)) {\n pushAdd(n);\n }\n else {\n _this.droppedSet.add(n);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var candidate = null;\n while (addList.length) {\n var node = null;\n if (candidate) {\n var parentId = _this.mirror.getId(candidate.value.parentNode);\n var nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node = candidate;\n }\n }\n if (!node) {\n for (var index = addList.length - 1; index >= 0; index--) {\n var _node = addList.get(index);\n if (_node) {\n var parentId = _this.mirror.getId(_node.value.parentNode);\n var nextId = getNextId(_node.value);\n if (parentId !== -1 && nextId !== -1) {\n node = _node;\n break;\n }\n }\n }\n }\n if (!node) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node.previous;\n addList.removeNode(node.value);\n pushAdd(node.value);\n }\n var payload = {\n texts: _this.texts\n .map(function (text) { return ({\n id: _this.mirror.getId(text.node),\n value: text.value,\n }); })\n .filter(function (text) { return _this.mirror.has(text.id); }),\n attributes: _this.attributes\n .map(function (attribute) { return ({\n id: _this.mirror.getId(attribute.node),\n attributes: attribute.attributes,\n }); })\n .filter(function (attribute) { return _this.mirror.has(attribute.id); }),\n removes: _this.removes,\n adds: adds,\n };\n if (!payload.texts.length &&\n !payload.attributes.length &&\n !payload.removes.length &&\n !payload.adds.length) {\n return;\n }\n _this.texts = [];\n _this.attributes = [];\n _this.removes = [];\n _this.addedSet = new Set();\n _this.movedSet = new Set();\n _this.droppedSet = new Set();\n _this.movedMap = {};\n _this.mutationCb(payload);\n };\n this.processMutation = function (m) {\n var e_3, _a, e_4, _b;\n if (isIgnored(m.target)) {\n return;\n }\n switch (m.type) {\n case 'characterData': {\n var value = m.target.textContent;\n if (!isBlocked(m.target, _this.blockClass) && value !== m.oldValue) {\n _this.texts.push({\n value: needMaskingText(m.target, _this.maskTextClass, _this.maskTextSelector) && value\n ? _this.maskTextFn\n ? _this.maskTextFn(value)\n : value.replace(/[\\S]/g, '*')\n : value,\n node: m.target,\n });\n }\n break;\n }\n case 'attributes': {\n var target = m.target;\n var value = m.target.getAttribute(m.attributeName);\n if (m.attributeName === 'value') {\n value = maskInputValue({\n maskInputOptions: _this.maskInputOptions,\n tagName: m.target.tagName,\n type: m.target.getAttribute('type'),\n value: value,\n maskInputFn: _this.maskInputFn,\n });\n }\n if (isBlocked(m.target, _this.blockClass) || value === m.oldValue) {\n return;\n }\n var item = _this.attributes.find(function (a) { return a.node === m.target; });\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n };\n _this.attributes.push(item);\n }\n if (m.attributeName === 'style') {\n var old = _this.doc.createElement('span');\n if (m.oldValue) {\n old.setAttribute('style', m.oldValue);\n }\n if (item.attributes.style === undefined ||\n item.attributes.style === null) {\n item.attributes.style = {};\n }\n var styleObj = item.attributes.style;\n try {\n for (var _c = __values(Array.from(target.style)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var pname = _d.value;\n var newValue = target.style.getPropertyValue(pname);\n var newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) ||\n newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === '') {\n styleObj[pname] = newValue;\n }\n else {\n styleObj[pname] = [newValue, newPriority];\n }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_3) throw e_3.error; }\n }\n try {\n for (var _e = __values(Array.from(old.style)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var pname = _f.value;\n if (target.style.getPropertyValue(pname) === '') {\n styleObj[pname] = false;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n else {\n item.attributes[m.attributeName] = transformAttribute(_this.doc, m.target.tagName, m.attributeName, value);\n }\n break;\n }\n case 'childList': {\n m.addedNodes.forEach(function (n) { return _this.genAdds(n, m.target); });\n m.removedNodes.forEach(function (n) {\n var nodeId = _this.mirror.getId(n);\n var parentId = isShadowRoot(m.target)\n ? _this.mirror.getId(m.target.host)\n : _this.mirror.getId(m.target);\n if (isBlocked(m.target, _this.blockClass) || isIgnored(n)) {\n return;\n }\n if (_this.addedSet.has(n)) {\n deepDelete(_this.addedSet, n);\n _this.droppedSet.add(n);\n }\n else if (_this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, _this.mirror)) ;\n else if (_this.movedSet.has(n) &&\n _this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(_this.movedSet, n);\n }\n else {\n _this.removes.push({\n parentId: parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) ? true : undefined,\n });\n }\n _this.mapRemoves.push(n);\n });\n break;\n }\n }\n };\n this.genAdds = function (n, target) {\n if (target && isBlocked(target, _this.blockClass)) {\n return;\n }\n if (isINode(n)) {\n if (isIgnored(n)) {\n return;\n }\n _this.movedSet.add(n);\n var targetId = null;\n if (target && isINode(target)) {\n targetId = target.__sn.id;\n }\n if (targetId) {\n _this.movedMap[moveKey(n.__sn.id, targetId)] = true;\n }\n }\n else {\n _this.addedSet.add(n);\n _this.droppedSet.delete(n);\n }\n if (!isBlocked(n, _this.blockClass))\n n.childNodes.forEach(function (childN) { return _this.genAdds(childN); });\n };\n }\n MutationBuffer.prototype.init = function (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 'recordCanvas',\n 'inlineImages',\n 'slimDOMOptions',\n 'doc',\n 'mirror',\n 'iframeManager',\n 'shadowDomManager',\n 'canvasManager',\n ].forEach(function (key) {\n _this[key] = options[key];\n });\n };\n MutationBuffer.prototype.freeze = function () {\n this.frozen = true;\n this.canvasManager.freeze();\n };\n MutationBuffer.prototype.unfreeze = function () {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n };\n MutationBuffer.prototype.isFrozen = function () {\n return this.frozen;\n };\n MutationBuffer.prototype.lock = function () {\n this.locked = true;\n this.canvasManager.lock();\n };\n MutationBuffer.prototype.unlock = function () {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n };\n MutationBuffer.prototype.reset = function () {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n };\n return MutationBuffer;\n}());\nfunction deepDelete(addsSet, n) {\n addsSet.delete(n);\n n.childNodes.forEach(function (childN) { return deepDelete(addsSet, childN); });\n}\nfunction isParentRemoved(removes, n, mirror) {\n var parentNode = n.parentNode;\n if (!parentNode) {\n return false;\n }\n var parentId = mirror.getId(parentNode);\n if (removes.some(function (r) { return r.id === parentId; })) {\n return true;\n }\n return isParentRemoved(removes, parentNode, mirror);\n}\nfunction isAncestorInSet(set, n) {\n var parentNode = n.parentNode;\n if (!parentNode) {\n return false;\n }\n if (set.has(parentNode)) {\n return true;\n }\n return isAncestorInSet(set, parentNode);\n}\n\nexport default MutationBuffer;\n","import { __read, __values, __spreadArray, __assign } from '../../ext/tslib/tslib.es6.js';\nimport { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isTouchEvent, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch } from '../utils.js';\nimport { IncrementalSource, MouseInteractions } from '../types.js';\nimport MutationBuffer from './mutation.js';\n\nvar mutationBuffers = [];\nvar isCSSGroupingRuleSupported = typeof CSSGroupingRule !== 'undefined';\nvar isCSSMediaRuleSupported = typeof CSSMediaRule !== 'undefined';\nvar isCSSSupportsRuleSupported = typeof CSSSupportsRule !== 'undefined';\nvar isCSSConditionRuleSupported = typeof CSSConditionRule !== 'undefined';\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 }\n else if ('path' in event && event.path.length) {\n return event.path[0];\n }\n return event.target;\n }\n catch (_a) {\n return event.target;\n }\n}\nfunction initMutationObserver(options, rootEl) {\n var _a, _b;\n var mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n var mutationObserverCtor = window.MutationObserver ||\n window.__rrMutationObserver;\n var 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');\n if (angularZoneSymbol &&\n window[angularZoneSymbol]) {\n mutationObserverCtor = window[angularZoneSymbol];\n }\n var observer = new mutationObserverCtor(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(_a) {\n var mousemoveCb = _a.mousemoveCb, sampling = _a.sampling, doc = _a.doc, mirror = _a.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'\n ? sampling.mousemoveCallback\n : 500;\n var positions = [];\n var timeBaseline;\n var wrappedCb = throttle(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 = throttle(function (evt) {\n var target = getEventTarget(evt);\n var _a = isTouchEvent(evt)\n ? evt.changedTouches[0]\n : evt, clientX = _a.clientX, clientY = _a.clientY;\n if (!timeBaseline) {\n timeBaseline = Date.now();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror.getId(target),\n timeOffset: Date.now() - timeBaseline,\n });\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\n ? IncrementalSource.Drag\n : evt instanceof MouseEvent\n ? IncrementalSource.MouseMove\n : 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 function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction initMouseInteractionObserver(_a) {\n var mouseInteractionCb = _a.mouseInteractionCb, doc = _a.doc, mirror = _a.mirror, blockClass = _a.blockClass, sampling = _a.sampling;\n if (sampling.mouseInteraction === false) {\n return function () { };\n }\n var disableMap = sampling.mouseInteraction === true ||\n sampling.mouseInteraction === undefined\n ? {}\n : sampling.mouseInteraction;\n var handlers = [];\n var getHandler = function (eventKey) {\n return function (event) {\n var target = getEventTarget(event);\n if (isBlocked(target, blockClass)) {\n return;\n }\n var e = isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e) {\n return;\n }\n var id = mirror.getId(target);\n var clientX = e.clientX, clientY = e.clientY;\n mouseInteractionCb({\n type: MouseInteractions[eventKey],\n id: id,\n x: clientX,\n y: clientY,\n });\n };\n };\n Object.keys(MouseInteractions)\n .filter(function (key) {\n return Number.isNaN(Number(key)) &&\n !key.endsWith('_Departed') &&\n disableMap[key] !== false;\n })\n .forEach(function (eventKey) {\n var eventName = eventKey.toLowerCase();\n var handler = getHandler(eventKey);\n handlers.push(on(eventName, handler, doc));\n });\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction initScrollObserver(_a) {\n var scrollCb = _a.scrollCb, doc = _a.doc, mirror = _a.mirror, blockClass = _a.blockClass, sampling = _a.sampling;\n var updatePosition = throttle(function (evt) {\n var target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass)) {\n return;\n }\n var id = mirror.getId(target);\n if (target === doc) {\n var scrollEl = (doc.scrollingElement || doc.documentElement);\n scrollCb({\n id: id,\n x: scrollEl.scrollLeft,\n y: scrollEl.scrollTop,\n });\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(_a) {\n var viewportResizeCb = _a.viewportResizeCb;\n var lastH = -1;\n var lastW = -1;\n var updateDimension = throttle(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, window);\n}\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\n var value = __assign({}, v);\n if (!enable)\n delete value.userTriggered;\n return value;\n}\nvar INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\nvar lastInputValueMap = new WeakMap();\nfunction initInputObserver(_a) {\n var inputCb = _a.inputCb, doc = _a.doc, mirror = _a.mirror, blockClass = _a.blockClass, ignoreClass = _a.ignoreClass, maskInputOptions = _a.maskInputOptions, maskInputFn = _a.maskInputFn, sampling = _a.sampling, userTriggeredOnInput = _a.userTriggeredOnInput;\n function eventHandler(event) {\n var target = getEventTarget(event);\n var userTriggered = event.isTrusted;\n if (target && target.tagName === 'OPTION')\n target = target.parentElement;\n if (!target ||\n !target.tagName ||\n INPUT_TAGS.indexOf(target.tagName) < 0 ||\n isBlocked(target, blockClass)) {\n return;\n }\n var type = target.type;\n if (target.classList.contains(ignoreClass)) {\n return;\n }\n var text = target.value;\n var isChecked = false;\n if (type === 'radio' || type === 'checkbox') {\n isChecked = target.checked;\n }\n else if (maskInputOptions[target.tagName.toLowerCase()] ||\n maskInputOptions[type]) {\n text = maskInputValue({\n maskInputOptions: maskInputOptions,\n tagName: target.tagName,\n type: type,\n value: text,\n maskInputFn: maskInputFn,\n });\n }\n cbWithDedup(target, wrapEventWithUserTriggeredFlag({ text: text, isChecked: isChecked, userTriggered: userTriggered }, userTriggeredOnInput));\n var name = target.name;\n if (type === 'radio' && name && isChecked) {\n doc\n .querySelectorAll(\"input[type=\\\"radio\\\"][name=\\\"\".concat(name, \"\\\"]\"))\n .forEach(function (el) {\n if (el !== target) {\n cbWithDedup(el, wrapEventWithUserTriggeredFlag({\n text: el.value,\n isChecked: !isChecked,\n userTriggered: false,\n }, userTriggeredOnInput));\n }\n });\n }\n }\n function cbWithDedup(target, v) {\n var lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue ||\n lastInputValue.text !== v.text ||\n lastInputValue.isChecked !== v.isChecked) {\n lastInputValueMap.set(target, v);\n var id = mirror.getId(target);\n inputCb(__assign(__assign({}, v), { id: id }));\n }\n }\n var events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\n var handlers = events.map(function (eventName) { return on(eventName, eventHandler, doc); });\n var propertyDescriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value');\n var hookProperties = [\n [HTMLInputElement.prototype, 'value'],\n [HTMLInputElement.prototype, 'checked'],\n [HTMLSelectElement.prototype, 'value'],\n [HTMLTextAreaElement.prototype, 'value'],\n [HTMLSelectElement.prototype, 'selectedIndex'],\n [HTMLOptionElement.prototype, 'selected'],\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push.apply(handlers, __spreadArray([], __read(hookProperties.map(function (p) {\n return hookSetter(p[0], p[1], {\n set: function () {\n eventHandler({ target: this });\n },\n });\n })), false));\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction getNestedCSSRulePositions(rule) {\n var positions = [];\n function recurse(childRule, pos) {\n if ((isCSSGroupingRuleSupported &&\n childRule.parentRule instanceof CSSGroupingRule) ||\n (isCSSMediaRuleSupported &&\n childRule.parentRule instanceof CSSMediaRule) ||\n (isCSSSupportsRuleSupported &&\n childRule.parentRule instanceof CSSSupportsRule) ||\n (isCSSConditionRuleSupported &&\n childRule.parentRule instanceof CSSConditionRule)) {\n var rules = Array.from(childRule.parentRule.cssRules);\n var index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n else {\n var rules = Array.from(childRule.parentStyleSheet.cssRules);\n var index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n return pos;\n }\n return recurse(rule, positions);\n}\nfunction initStyleSheetObserver(_a, _b) {\n var styleSheetRuleCb = _a.styleSheetRuleCb, mirror = _a.mirror;\n var win = _b.win;\n var insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = function (rule, index) {\n var id = mirror.getId(this.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n adds: [{ rule: rule, index: index }],\n });\n }\n return insertRule.apply(this, arguments);\n };\n var deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = function (index) {\n var id = mirror.getId(this.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n removes: [{ index: index }],\n });\n }\n return deleteRule.apply(this, arguments);\n };\n var supportedNestedCSSRuleTypes = {};\n if (isCSSGroupingRuleSupported) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n }\n else {\n if (isCSSMediaRuleSupported) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (isCSSConditionRuleSupported) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (isCSSSupportsRuleSupported) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n var unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(function (_a) {\n var _b = __read(_a, 2), typeKey = _b[0], type = _b[1];\n unmodifiedFunctions[typeKey] = {\n insertRule: type.prototype.insertRule,\n deleteRule: type.prototype.deleteRule,\n };\n type.prototype.insertRule = function (rule, index) {\n var id = mirror.getId(this.parentStyleSheet.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n adds: [\n {\n rule: rule,\n index: __spreadArray(__spreadArray([], __read(getNestedCSSRulePositions(this)), false), [\n index || 0,\n ], false),\n },\n ],\n });\n }\n return unmodifiedFunctions[typeKey].insertRule.apply(this, arguments);\n };\n type.prototype.deleteRule = function (index) {\n var id = mirror.getId(this.parentStyleSheet.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n removes: [{ index: __spreadArray(__spreadArray([], __read(getNestedCSSRulePositions(this)), false), [index], false) }],\n });\n }\n return unmodifiedFunctions[typeKey].deleteRule.apply(this, arguments);\n };\n });\n return function () {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n Object.entries(supportedNestedCSSRuleTypes).forEach(function (_a) {\n var _b = __read(_a, 2), typeKey = _b[0], type = _b[1];\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n };\n}\nfunction initStyleDeclarationObserver(_a, _b) {\n var styleDeclarationCb = _a.styleDeclarationCb, mirror = _a.mirror;\n var win = _b.win;\n var setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = function (property, value, priority) {\n var _a, _b;\n var id = mirror.getId((_b = (_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet) === null || _b === void 0 ? void 0 : _b.ownerNode);\n if (id !== -1) {\n styleDeclarationCb({\n id: id,\n set: {\n property: property,\n value: value,\n priority: priority,\n },\n index: getNestedCSSRulePositions(this.parentRule),\n });\n }\n return setProperty.apply(this, arguments);\n };\n var removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = function (property) {\n var _a, _b;\n var id = mirror.getId((_b = (_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet) === null || _b === void 0 ? void 0 : _b.ownerNode);\n if (id !== -1) {\n styleDeclarationCb({\n id: id,\n remove: {\n property: property,\n },\n index: getNestedCSSRulePositions(this.parentRule),\n });\n }\n return removeProperty.apply(this, arguments);\n };\n return function () {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n };\n}\nfunction initMediaInteractionObserver(_a) {\n var mediaInteractionCb = _a.mediaInteractionCb, blockClass = _a.blockClass, mirror = _a.mirror, sampling = _a.sampling;\n var handler = function (type) {\n return throttle(function (event) {\n var target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass)) {\n return;\n }\n var _a = target, currentTime = _a.currentTime, volume = _a.volume, muted = _a.muted;\n mediaInteractionCb({\n type: type,\n id: mirror.getId(target),\n currentTime: currentTime,\n volume: volume,\n muted: muted,\n });\n }, sampling.media || 500);\n };\n var handlers = [\n on('play', handler(0)),\n on('pause', handler(1)),\n on('seeked', handler(2)),\n on('volumechange', handler(3)),\n ];\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction initFontObserver(_a) {\n var fontCb = _a.fontCb, doc = _a.doc;\n var win = doc.defaultView;\n if (!win) {\n return function () { };\n }\n var handlers = [];\n var fontMap = new WeakMap();\n var originalFontFace = win.FontFace;\n win.FontFace = function FontFace(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'\n ? source\n :\n 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(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, [fontFace]);\n };\n });\n handlers.push(function () {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction mergeHooks(o, hooks) {\n var mutationCb = o.mutationCb, mousemoveCb = o.mousemoveCb, mouseInteractionCb = o.mouseInteractionCb, scrollCb = o.scrollCb, viewportResizeCb = o.viewportResizeCb, inputCb = o.inputCb, mediaInteractionCb = o.mediaInteractionCb, styleSheetRuleCb = o.styleSheetRuleCb, styleDeclarationCb = o.styleDeclarationCb, canvasMutationCb = o.canvasMutationCb, fontCb = o.fontCb;\n o.mutationCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mutation) {\n hooks.mutation.apply(hooks, __spreadArray([], __read(p), false));\n }\n mutationCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.mousemoveCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mousemove) {\n hooks.mousemove.apply(hooks, __spreadArray([], __read(p), false));\n }\n mousemoveCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.mouseInteractionCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction.apply(hooks, __spreadArray([], __read(p), false));\n }\n mouseInteractionCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.scrollCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.scroll) {\n hooks.scroll.apply(hooks, __spreadArray([], __read(p), false));\n }\n scrollCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.viewportResizeCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.viewportResize) {\n hooks.viewportResize.apply(hooks, __spreadArray([], __read(p), false));\n }\n viewportResizeCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.inputCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.input) {\n hooks.input.apply(hooks, __spreadArray([], __read(p), false));\n }\n inputCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.mediaInteractionCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction.apply(hooks, __spreadArray([], __read(p), false));\n }\n mediaInteractionCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.styleSheetRuleCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule.apply(hooks, __spreadArray([], __read(p), false));\n }\n styleSheetRuleCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.styleDeclarationCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration.apply(hooks, __spreadArray([], __read(p), false));\n }\n styleDeclarationCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.canvasMutationCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.canvasMutation) {\n hooks.canvasMutation.apply(hooks, __spreadArray([], __read(p), false));\n }\n canvasMutationCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.fontCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.font) {\n hooks.font.apply(hooks, __spreadArray([], __read(p), false));\n }\n fontCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n}\nfunction initObservers(o, hooks) {\n var e_1, _a;\n if (hooks === void 0) { hooks = {}; }\n var currentWindow = o.doc.defaultView;\n if (!currentWindow) {\n return function () { };\n }\n mergeHooks(o, hooks);\n var mutationObserver = initMutationObserver(o, o.doc);\n var mousemoveHandler = initMoveObserver(o);\n var mouseInteractionHandler = initMouseInteractionObserver(o);\n var scrollHandler = initScrollObserver(o);\n var viewportResizeHandler = initViewportResizeObserver(o);\n var inputHandler = initInputObserver(o);\n var mediaInteractionHandler = initMediaInteractionObserver(o);\n var styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n var styleDeclarationObserver = initStyleDeclarationObserver(o, {\n win: currentWindow,\n });\n var fontObserver = o.collectFonts ? initFontObserver(o) : function () { };\n var pluginHandlers = [];\n try {\n for (var _b = __values(o.plugins), _c = _b.next(); !_c.done; _c = _b.next()) {\n var plugin = _c.value;\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return function () {\n mutationBuffers.forEach(function (b) { return b.reset(); });\n mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n pluginHandlers.forEach(function (h) { return h(); });\n };\n}\n\nexport { INPUT_TAGS, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","var IframeManager = (function () {\n function IframeManager(options) {\n this.iframes = new WeakMap();\n this.mutationCb = options.mutationCb;\n }\n IframeManager.prototype.addIframe = function (iframeEl) {\n this.iframes.set(iframeEl, true);\n };\n IframeManager.prototype.addLoadListener = function (cb) {\n this.loadListener = cb;\n };\n IframeManager.prototype.attachIframe = function (iframeEl, childSn) {\n var _a;\n this.mutationCb({\n adds: [\n {\n parentId: iframeEl.__sn.id,\n nextId: null,\n node: childSn,\n },\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true,\n });\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\n };\n return IframeManager;\n}());\n\nexport { IframeManager };\n","import { __assign } from '../../ext/tslib/tslib.es6.js';\nimport { initMutationObserver, initScrollObserver } from './observer.js';\nimport { patch } from '../utils.js';\n\nvar ShadowDomManager = (function () {\n function ShadowDomManager(options) {\n this.restorePatches = [];\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n var manager = this;\n this.restorePatches.push(patch(HTMLElement.prototype, 'attachShadow', function (original) {\n return function () {\n var shadowRoot = original.apply(this, arguments);\n if (this.shadowRoot)\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\n return shadowRoot;\n };\n }));\n }\n ShadowDomManager.prototype.addShadowRoot = function (shadowRoot, doc) {\n initMutationObserver(__assign(__assign({}, this.bypassOptions), { doc: doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\n initScrollObserver(__assign(__assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\n };\n ShadowDomManager.prototype.observeAttachShadow = function (iframeElement) {\n if (iframeElement.contentWindow) {\n var manager_1 = this;\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\n return function () {\n var shadowRoot = original.apply(this, arguments);\n if (this.shadowRoot)\n manager_1.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\n return shadowRoot;\n };\n }));\n }\n };\n ShadowDomManager.prototype.reset = function () {\n this.restorePatches.forEach(function (restorePatch) { return restorePatch(); });\n };\n return ShadowDomManager;\n}());\n\nexport { ShadowDomManager };\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 { __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { encode } from '../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nvar webGLVarMap = new Map();\nfunction variableListFor(ctx, ctor) {\n var contextMap = webGLVarMap.get(ctx);\n if (!contextMap) {\n contextMap = new Map();\n webGLVarMap.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 ||\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\n return;\n var name = value.constructor.name;\n var list = variableListFor(ctx, name);\n var index = list.indexOf(value);\n if (index === -1) {\n index = list.length;\n list.push(value);\n }\n return index;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map(function (arg) { return serializeArg(arg, win, ctx); });\n }\n else if (value === null) {\n return value;\n }\n else if (value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Uint8Array ||\n value instanceof Uint16Array ||\n value instanceof Int16Array ||\n value instanceof Int8Array ||\n value instanceof Uint8ClampedArray) {\n var name_1 = value.constructor.name;\n return {\n rr_type: name_1,\n args: [Object.values(value)],\n };\n }\n else if (value instanceof ArrayBuffer) {\n var name_2 = value.constructor.name;\n var base64 = encode(value);\n return {\n rr_type: name_2,\n base64: base64,\n };\n }\n else if (value instanceof DataView) {\n var name_3 = value.constructor.name;\n return {\n rr_type: name_3,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength,\n ],\n };\n }\n else if (value instanceof HTMLImageElement) {\n var name_4 = value.constructor.name;\n var src = value.src;\n return {\n rr_type: name_4,\n src: src,\n };\n }\n else if (value instanceof ImageData) {\n var name_5 = value.constructor.name;\n return {\n rr_type: name_5,\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\n };\n }\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\n var name_6 = value.constructor.name;\n var index = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name_6,\n index: index,\n };\n }\n return value;\n}\nvar serializeArgs = function (args, win, ctx) {\n return __spreadArray([], __read(args), false).map(function (arg) { return serializeArg(arg, win, ctx); });\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 'WebGLVertexArrayObjectOES',\n ];\n var supportedWebGLConstructorNames = webGLConstructorNames.filter(function (name) { return typeof win[name] === 'function'; });\n return Boolean(supportedWebGLConstructorNames.find(function (name) { return value instanceof win[name]; }));\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { __spreadArray, __read, __values } from '../../../../ext/tslib/tslib.es6.js';\nimport { CanvasContext } from '../../../types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, mirror, win) {\n var e_1, _a;\n var handlers = [];\n var props = Object.getOwnPropertyNames(prototype);\n var _loop_1 = function (prop) {\n try {\n if (typeof prototype[prop] !== 'function') {\n return \"continue\";\n }\n var restoreHandler = patch(prototype, prop, function (original) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = original.apply(this, args);\n saveWebGLVar(result, win, prototype);\n if (!isBlocked(this.canvas, blockClass)) {\n var id = mirror.getId(this.canvas);\n var recordArgs = serializeArgs(__spreadArray([], __read(args), false), win, prototype);\n var mutation = {\n type: type,\n property: prop,\n args: recordArgs,\n };\n cb(this.canvas, mutation);\n }\n return result;\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_b) {\n var hookHandler = hookSetter(prototype, prop, {\n set: function (v) {\n cb(this.canvas, {\n type: type,\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n };\n try {\n for (var props_1 = __values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var prop = props_1_1.value;\n _loop_1(prop);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, mirror) {\n var handlers = [];\n handlers.push.apply(handlers, __spreadArray([], __read(patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, mirror, win)), false));\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\n handlers.push.apply(handlers, __spreadArray([], __read(patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, mirror, win)), false));\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\n\nexport default initCanvasWebGLMutationObserver;\n","import { __rest } from '../../../../ext/tslib/tslib.es6.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\n\nvar CanvasManager = (function () {\n function CanvasManager(options) {\n this.pendingCanvasMutations = new Map();\n this.rafStamps = { latestId: 0, invokeId: null };\n this.frozen = false;\n this.locked = false;\n this.processMutation = function (target, mutation) {\n var newFrame = this.rafStamps.invokeId &&\n this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n };\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (options.recordCanvas === true)\n this.initCanvasMutationObserver(options.win, options.blockClass);\n }\n CanvasManager.prototype.reset = function () {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n };\n CanvasManager.prototype.freeze = function () {\n this.frozen = true;\n };\n CanvasManager.prototype.unfreeze = function () {\n this.frozen = false;\n };\n CanvasManager.prototype.lock = function () {\n this.locked = true;\n };\n CanvasManager.prototype.unlock = function () {\n this.locked = false;\n };\n CanvasManager.prototype.initCanvasMutationObserver = function (win, blockClass) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n var canvasContextReset = initCanvasContextObserver(win, blockClass);\n var canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, this.mirror);\n var canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, this.mirror);\n this.resetObservers = function () {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n };\n CanvasManager.prototype.startPendingCanvasMutationFlusher = function () {\n var _this = this;\n requestAnimationFrame(function () { return _this.flushPendingCanvasMutations(); });\n };\n CanvasManager.prototype.startRAFTimestamping = function () {\n var _this = this;\n var setLatestRAFTimestamp = function (timestamp) {\n _this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n CanvasManager.prototype.flushPendingCanvasMutations = function () {\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 () { return _this.flushPendingCanvasMutations(); });\n };\n CanvasManager.prototype.flushPendingCanvasMutationFor = function (canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n var valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1)\n return;\n var values = valuesWithType.map(function (value) {\n value.type; var rest = __rest(value, [\"type\"]);\n return rest;\n });\n var type = valuesWithType[0].type;\n this.mutationCb({ id: id, type: type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n };\n return CanvasManager;\n}());\n\nexport { CanvasManager };\n","import { __assign, __read, __values } from '../../ext/tslib/tslib.es6.js';\nimport { snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, createMirror, getWindowWidth, getWindowHeight, isIframeINode, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\n\nfunction wrapEvent(e) {\n return __assign(__assign({}, e), { timestamp: Date.now() });\n}\nvar wrappedEmit;\nvar takeFullSnapshot;\nvar mirror = createMirror();\nfunction record(options) {\n if (options === void 0) { options = {}; }\n var emit = options.emit, checkoutEveryNms = options.checkoutEveryNms, checkoutEveryNth = options.checkoutEveryNth, _a = options.blockClass, blockClass = _a === void 0 ? 'rr-block' : _a, _b = options.blockSelector, blockSelector = _b === void 0 ? null : _b, _c = options.ignoreClass, ignoreClass = _c === void 0 ? 'rr-ignore' : _c, _d = options.maskTextClass, maskTextClass = _d === void 0 ? 'rr-mask' : _d, _e = options.maskTextSelector, maskTextSelector = _e === void 0 ? null : _e, _f = options.inlineStylesheet, inlineStylesheet = _f === void 0 ? true : _f, maskAllInputs = options.maskAllInputs, _maskInputOptions = options.maskInputOptions, _slimDOMOptions = options.slimDOMOptions, maskInputFn = options.maskInputFn, maskTextFn = options.maskTextFn, hooks = options.hooks, packFn = options.packFn, _g = options.sampling, sampling = _g === void 0 ? {} : _g, mousemoveWait = options.mousemoveWait, _h = options.recordCanvas, recordCanvas = _h === void 0 ? false : _h, _j = options.userTriggeredOnInput, userTriggeredOnInput = _j === void 0 ? false : _j, _k = options.collectFonts, collectFonts = _k === void 0 ? false : _k, _l = options.inlineImages, inlineImages = _l === void 0 ? false : _l, plugins = options.plugins, _m = options.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\n if (!emit) {\n throw new Error('emit function is required');\n }\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n sampling.mousemove = mousemoveWait;\n }\n var maskInputOptions = maskAllInputs === true\n ? {\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 }\n : _maskInputOptions !== undefined\n ? _maskInputOptions\n : { password: true };\n var slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\n ? {\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 headMetaAuthorship: _slimDOMOptions === 'all',\n headMetaDescKeywords: _slimDOMOptions === 'all',\n }\n : _slimDOMOptions\n ? _slimDOMOptions\n : {};\n polyfill();\n var lastFullSnapshotEvent;\n var incrementalSnapshotCount = 0;\n var eventProcessor = function (e) {\n var e_1, _a;\n try {\n for (var _b = __values(plugins || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var plugin = _c.value;\n if (plugin.eventProcessor) {\n e = plugin.eventProcessor(e);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (packFn) {\n e = packFn(e);\n }\n return e;\n };\n wrappedEmit = function (e, isCheckout) {\n var _a;\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\n e.type !== EventType.FullSnapshot &&\n !(e.type === EventType.IncrementalSnapshot &&\n e.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach(function (buf) { return buf.unfreeze(); });\n }\n emit(eventProcessor(e), isCheckout);\n if (e.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e;\n incrementalSnapshotCount = 0;\n }\n else if (e.type === EventType.IncrementalSnapshot) {\n if (e.data.source === IncrementalSource.Mutation &&\n e.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n var exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n var exceedTime = checkoutEveryNms &&\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot(true);\n }\n }\n };\n var wrappedMutationEmit = function (m) {\n wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Mutation }, m),\n }));\n };\n var wrappedScrollEmit = function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Scroll }, p),\n }));\n };\n var wrappedCanvasMutationEmit = function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.CanvasMutation }, p),\n }));\n };\n var iframeManager = new IframeManager({\n mutationCb: wrappedMutationEmit,\n });\n var canvasManager = new CanvasManager({\n recordCanvas: recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass: blockClass,\n mirror: mirror,\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 maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n sampling: sampling,\n slimDOMOptions: slimDOMOptions,\n iframeManager: iframeManager,\n canvasManager: canvasManager,\n },\n mirror: mirror,\n });\n takeFullSnapshot = function (isCheckout) {\n var _a, _b, _c, _d;\n if (isCheckout === void 0) { isCheckout = false; }\n wrappedEmit(wrapEvent({\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight(),\n },\n }), isCheckout);\n mutationBuffers.forEach(function (buf) { return buf.lock(); });\n var _e = __read(snapshot(document, {\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn: maskTextFn,\n slimDOM: slimDOMOptions,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n onSerialize: function (n) {\n if (isIframeINode(n)) {\n iframeManager.addIframe(n);\n }\n if (hasShadowRoot(n)) {\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\n }\n },\n onIframeLoad: function (iframe, childSn) {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n keepIframeSrcFn: keepIframeSrcFn,\n }), 2), node = _e[0], idNodeMap = _e[1];\n if (!node) {\n return console.warn('Failed to snapshot the document');\n }\n mirror.map = idNodeMap;\n wrappedEmit(wrapEvent({\n type: EventType.FullSnapshot,\n data: {\n node: node,\n initialOffset: {\n left: window.pageXOffset !== undefined\n ? window.pageXOffset\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\n ((_b = (_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\n (document === null || document === void 0 ? void 0 : document.body.scrollLeft) ||\n 0,\n top: window.pageYOffset !== undefined\n ? window.pageYOffset\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\n ((_d = (_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.parentElement) === null || _d === void 0 ? void 0 : _d.scrollTop) ||\n (document === null || document === void 0 ? void 0 : document.body.scrollTop) ||\n 0,\n },\n },\n }));\n mutationBuffers.forEach(function (buf) { return buf.unlock(); });\n };\n try {\n var handlers_1 = [];\n handlers_1.push(on('DOMContentLoaded', function () {\n wrappedEmit(wrapEvent({\n type: EventType.DomContentLoaded,\n data: {},\n }));\n }));\n var observe_1 = function (doc) {\n var _a;\n return initObservers({\n mutationCb: wrappedMutationEmit,\n mousemoveCb: function (positions, source) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: source,\n positions: positions,\n },\n }));\n },\n mouseInteractionCb: function (d) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.MouseInteraction }, d),\n }));\n },\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: function (d) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.ViewportResize }, d),\n }));\n },\n inputCb: function (v) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Input }, v),\n }));\n },\n mediaInteractionCb: function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.MediaInteraction }, p),\n }));\n },\n styleSheetRuleCb: function (r) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.StyleSheetRule }, r),\n }));\n },\n styleDeclarationCb: function (r) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.StyleDeclaration }, r),\n }));\n },\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Font }, p),\n }));\n },\n blockClass: blockClass,\n ignoreClass: ignoreClass,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n maskInputOptions: maskInputOptions,\n inlineStylesheet: inlineStylesheet,\n sampling: sampling,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n userTriggeredOnInput: userTriggeredOnInput,\n collectFonts: collectFonts,\n doc: doc,\n maskInputFn: maskInputFn,\n maskTextFn: maskTextFn,\n blockSelector: blockSelector,\n slimDOMOptions: slimDOMOptions,\n mirror: mirror,\n iframeManager: iframeManager,\n shadowDomManager: shadowDomManager,\n canvasManager: canvasManager,\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter(function (p) { return p.observer; })) === null || _a === void 0 ? void 0 : _a.map(function (p) { return ({\n observer: p.observer,\n options: p.options,\n callback: function (payload) {\n return wrappedEmit(wrapEvent({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload: payload,\n },\n }));\n },\n }); })) || [],\n }, hooks);\n };\n iframeManager.addLoadListener(function (iframeEl) {\n handlers_1.push(observe_1(iframeEl.contentDocument));\n });\n var init_1 = function () {\n takeFullSnapshot();\n handlers_1.push(observe_1(document));\n };\n if (document.readyState === 'interactive' ||\n document.readyState === 'complete') {\n init_1();\n }\n else {\n handlers_1.push(on('load', function () {\n wrappedEmit(wrapEvent({\n type: EventType.Load,\n data: {},\n }));\n init_1();\n }, window));\n }\n return function () {\n handlers_1.forEach(function (h) { return h(); });\n };\n }\n catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = function (tag, payload) {\n if (!wrappedEmit) {\n throw new Error('please add custom event after start recording');\n }\n wrappedEmit(wrapEvent({\n type: EventType.Custom,\n data: {\n tag: tag,\n payload: payload,\n },\n }));\n};\nrecord.freezePage = function () {\n mutationBuffers.forEach(function (buf) { return buf.freeze(); });\n};\nrecord.takeFullSnapshot = function (isCheckout) {\n if (!takeFullSnapshot) {\n throw new Error('please take full snapshot after start recording');\n }\n takeFullSnapshot(isCheckout);\n};\nrecord.mirror = mirror;\n\nexport default record;\n","import { __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass) {\n var handlers = [];\n try {\n var restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\n return function (contextType) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!isBlocked(this, blockClass)) {\n if (!('__context' in this))\n this.__context = contextType;\n }\n return original.apply(this, __spreadArray([contextType], __read(args), false));\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_a) {\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\n\nexport default initCanvasContextObserver;\n","import { __values, __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { CanvasContext } from '../../../types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, mirror) {\n var e_1, _a;\n var handlers = [];\n var props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n var _loop_1 = function (prop) {\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 var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!isBlocked(this.canvas, blockClass)) {\n setTimeout(function () {\n var recordArgs = __spreadArray([], __read(args), false);\n if (prop === 'drawImage') {\n if (recordArgs[0] &&\n recordArgs[0] instanceof HTMLCanvasElement) {\n var canvas = recordArgs[0];\n var ctx = canvas.getContext('2d');\n var imgd = ctx === null || ctx === void 0 ? void 0 : ctx.getImageData(0, 0, canvas.width, canvas.height);\n var pix = imgd === null || imgd === void 0 ? void 0 : imgd.data;\n recordArgs[0] = JSON.stringify(pix);\n }\n }\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 }\n catch (_b) {\n var hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n set: function (v) {\n cb(this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n };\n try {\n for (var props2D_1 = __values(props2D), props2D_1_1 = props2D_1.next(); !props2D_1_1.done; props2D_1_1 = props2D_1.next()) {\n var prop = props2D_1_1.value;\n _loop_1(prop);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (props2D_1_1 && !props2D_1_1.done && (_a = props2D_1.return)) _a.call(props2D_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\n\nexport default initCanvas2DMutationObserver;\n","var StackFrame = (function () {\n function StackFrame(obj) {\n this.fileName = obj.fileName || '';\n this.functionName = obj.functionName || '';\n this.lineNumber = obj.lineNumber;\n this.columnNumber = obj.columnNumber;\n }\n StackFrame.prototype.toString = function () {\n var lineNumber = this.lineNumber || '';\n var columnNumber = this.columnNumber || '';\n if (this.functionName) {\n return (this.functionName +\n ' (' +\n this.fileName +\n ':' +\n lineNumber +\n ':' +\n columnNumber +\n ')');\n }\n return this.fileName + ':' + lineNumber + ':' + columnNumber;\n };\n return StackFrame;\n}());\nvar FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nvar CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nvar SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\nvar ErrorStackParser = {\n parse: function (error) {\n if (!error) {\n return [];\n }\n if (typeof error.stacktrace !== 'undefined' ||\n typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n }\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n }\n else if (error.stack) {\n return this.parseFFOrSafari(error);\n }\n else {\n throw new Error('Cannot parse given Error object');\n }\n },\n extractLocation: function (urlLike) {\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n if (!parts)\n throw new Error(\"Cannot parse given url: \".concat(urlLike));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function (error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n line = line\n .replace(/eval code/g, 'eval')\n .replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n sanitizedLine = location\n ? sanitizedLine.replace(location[0], '')\n : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1\n ? undefined\n : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n });\n }, this);\n },\n parseFFOrSafari: function (error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n return new StackFrame({\n functionName: line,\n });\n }\n else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n });\n }\n }, this);\n },\n parseOpera: function (e) {\n if (!e.stacktrace ||\n (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n }\n else if (!e.stack) {\n return this.parseOpera10(e);\n }\n else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function (e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: parseFloat(match[1]),\n }));\n }\n }\n return result;\n },\n parseOpera10: function (e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: parseFloat(match[1]),\n }));\n }\n }\n return result;\n },\n parseOpera11: function (error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return (!!line.match(FIREFOX_SAFARI_STACK_REGEXP) &&\n !line.match(/^Error created at/));\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n });\n }, this);\n },\n};\n\nexport { ErrorStackParser, StackFrame };\n","import { __values } from '../../../../ext/tslib/tslib.es6.js';\n\nfunction pathToSelector(node) {\n if (!node || !node.outerHTML) {\n return '';\n }\n var path = '';\n while (node.parentElement) {\n var name_1 = node.localName;\n if (!name_1) {\n break;\n }\n name_1 = name_1.toLowerCase();\n var parent_1 = node.parentElement;\n var domSiblings = [];\n if (parent_1.children && parent_1.children.length > 0) {\n for (var i = 0; i < parent_1.children.length; i++) {\n var sibling = parent_1.children[i];\n if (sibling.localName && sibling.localName.toLowerCase) {\n if (sibling.localName.toLowerCase() === name_1) {\n domSiblings.push(sibling);\n }\n }\n }\n }\n if (domSiblings.length > 1) {\n name_1 += ':eq(' + domSiblings.indexOf(node) + ')';\n }\n path = name_1 + (path ? '>' + path : '');\n node = parent_1;\n }\n return path;\n}\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\nfunction isObjTooDeep(obj, limit) {\n var e_1, _a;\n if (limit === 0) {\n return true;\n }\n var keys = Object.keys(obj);\n try {\n for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {\n var key = keys_1_1.value;\n if (isObject(obj[key]) && isObjTooDeep(obj[key], limit - 1)) {\n return true;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return false;\n}\nfunction stringify(obj, stringifyOptions) {\n var options = {\n numOfKeysLimit: 50,\n depthOfLimit: 4,\n };\n Object.assign(options, stringifyOptions);\n var stack = [];\n var keys = [];\n return JSON.stringify(obj, function (key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value)) {\n if (stack[0] === value) {\n value = '[Circular ~]';\n }\n else {\n value =\n '[Circular ~.' +\n keys.slice(0, stack.indexOf(value)).join('.') +\n ']';\n }\n }\n }\n else {\n stack.push(value);\n }\n if (value === null || value === undefined) {\n return value;\n }\n if (shouldIgnore(value)) {\n return toString(value);\n }\n if (value instanceof Event) {\n var eventResult = {};\n for (var eventKey in value) {\n var eventValue = value[eventKey];\n if (Array.isArray(eventValue)) {\n eventResult[eventKey] = pathToSelector(eventValue.length ? eventValue[0] : null);\n }\n else {\n eventResult[eventKey] = eventValue;\n }\n }\n return eventResult;\n }\n else if (value instanceof Node) {\n if (value instanceof HTMLElement) {\n return value ? value.outerHTML : '';\n }\n return value.nodeName;\n }\n else if (value instanceof Error) {\n return value.stack\n ? value.stack + '\\nEnd of stack for Error object'\n : value.name + ': ' + value.message;\n }\n return value;\n });\n function shouldIgnore(_obj) {\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\n return true;\n }\n if (typeof _obj === 'function') {\n return true;\n }\n if (isObject(_obj) && isObjTooDeep(_obj, options.depthOfLimit)) {\n return true;\n }\n return false;\n }\n function toString(_obj) {\n var str = _obj.toString();\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\n str = \"\".concat(str.slice(0, options.stringLengthLimit), \"...\");\n }\n return str;\n }\n}\n\nexport { stringify };\n","import { __values, __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { patch } from '../../../utils.js';\nimport { ErrorStackParser } from './error-stack-parser.js';\nimport { stringify } from './stringify.js';\n\nvar defaultLogOptions = {\n level: [\n 'assert',\n 'clear',\n 'count',\n 'countReset',\n 'debug',\n 'dir',\n 'dirxml',\n 'error',\n 'group',\n 'groupCollapsed',\n 'groupEnd',\n 'info',\n 'log',\n 'table',\n 'time',\n 'timeEnd',\n 'timeLog',\n 'trace',\n 'warn',\n ],\n lengthThreshold: 1000,\n logger: 'console',\n};\nfunction initLogObserver(cb, win, logOptions) {\n var e_1, _a;\n var loggerType = logOptions.logger;\n if (!loggerType) {\n return function () { };\n }\n var logger;\n if (typeof loggerType === 'string') {\n logger = win[loggerType];\n }\n else {\n logger = loggerType;\n }\n var logCount = 0;\n var cancelHandlers = [];\n if (logOptions.level.includes('error')) {\n if (window) {\n var errorHandler_1 = function (event) {\n var message = event.message, error = event.error;\n var trace = ErrorStackParser.parse(error).map(function (stackFrame) { return stackFrame.toString(); });\n var payload = [stringify(message, logOptions.stringifyOptions)];\n cb({\n level: 'error',\n trace: trace,\n payload: payload,\n });\n };\n window.addEventListener('error', errorHandler_1);\n cancelHandlers.push(function () {\n if (window)\n window.removeEventListener('error', errorHandler_1);\n });\n }\n }\n try {\n for (var _b = __values(logOptions.level), _c = _b.next(); !_c.done; _c = _b.next()) {\n var levelType = _c.value;\n cancelHandlers.push(replace(logger, levelType));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return function () {\n cancelHandlers.forEach(function (h) { return h(); });\n };\n function replace(_logger, level) {\n var _this = this;\n if (!_logger[level]) {\n return function () { };\n }\n return patch(_logger, level, function (original) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n original.apply(_this, args);\n try {\n var trace = ErrorStackParser.parse(new Error())\n .map(function (stackFrame) { return stackFrame.toString(); })\n .splice(1);\n var payload = args.map(function (s) {\n return stringify(s, logOptions.stringifyOptions);\n });\n logCount++;\n if (logCount < logOptions.lengthThreshold) {\n cb({\n level: level,\n trace: trace,\n payload: payload,\n });\n }\n else if (logCount === logOptions.lengthThreshold) {\n cb({\n level: 'warn',\n trace: [],\n payload: [\n stringify('The number of log records reached the threshold.'),\n ],\n });\n }\n }\n catch (error) {\n original.apply(void 0, __spreadArray(['rrweb logger error:', error], __read(args), false));\n }\n };\n });\n }\n}\nvar PLUGIN_NAME = 'rrweb/console@1';\nvar getRecordConsolePlugin = function (options) { return ({\n name: PLUGIN_NAME,\n observer: initLogObserver,\n options: options\n ? Object.assign({}, defaultLogOptions, options)\n : defaultLogOptions,\n}); };\n\nexport { PLUGIN_NAME, getRecordConsolePlugin };\n","import { version } from 'rrweb-v1/package.json'\n\n// Same as loader-globals.ts except includes rrweb scripts.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport rrwebRecord from 'rrweb-v1/es/rrweb/packages/rrweb/src/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { getRecordConsolePlugin } from 'rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\n\nconst win: Window & typeof globalThis = typeof window !== 'undefined' ? window : ({} as typeof window)\n\n;(win as any).rrweb = { record: rrwebRecord, version: 'v1', rrwebVersion: version }\n;(win as any).rrwebConsoleRecord = { getRecordConsolePlugin }\n\nexport default rrwebRecord\n"],"names":["NodeType","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__values","o","Symbol","iterator","m","next","value","done","TypeError","__read","r","e","ar","push","error","__spreadArray","to","from","pack","l","Array","slice","concat","isShadowRoot","_a","host","Boolean","shadowRoot","maskInputValue","maskInputOptions","tagName","type","maskInputFn","text","toLowerCase","repeat","ORIGINAL_ATTRIBUTE_NAME","canvasService","canvasCtx","_id","tagNameRegex","RegExp","IGNORED_NODE","getCssRulesString","rules","cssRules","map","getCssRuleString","join","rule","cssStringified","cssText","isCSSImportRule","styleSheet","URL_IN_CSS_REF","RELATIVE_PATH","DATA_URI","absoluteToStylesheet","href","replace","origin","quote1","path1","quote2","path2","path3","url","filePath","maybeQuote","test","indexOf","split","stack","parts","pop","_i","parts_1","part","EventType","IncrementalSource","MouseInteractions","CanvasContext","MediaInteractions","ReplayerEvents","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","doc","attributeValue","trim","a","createElement","getHref","document","transformAttribute","name","pos","collectCharacters","regEx","chars","match","exec","substring","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","needMaskingText","node","maskTextClass","maskTextSelector","nodeType","ELEMENT_NODE","classList","contains","eIndex","className","matches","parentNode","TEXT_NODE","serializeNode","options","rootId","sheet","el","blockClass","blockSelector","inlineStylesheet","_b","maskTextFn","_c","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","__sn","docId","id","undefined","DOCUMENT_NODE","compatMode","Document","childNodes","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","element","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes_1","_d","attributes","_e","name_1","stylesheet","styleSheets","find","rel","_cssText","innerText","textContent","checked","selected","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","Math","min","data","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image_1","oldValue_1","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","drawImage","err","console","warn","currentSrc","complete","onload","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_f","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","Element","isSVG","ownerSVGElement","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","_g","iframeLoadTimeout","_h","_j","preserveWhiteSpace","_serializedNode","sn","comment","script","as","endsWith","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","isShadowHost","headWhitespace","bypassOptions","_k","serializedChildNode","isElement","_l","_m","isShadow","iframeEl","listener","win","contentWindow","readyState","fired","blankUrl","location","addEventListener","setTimeout","timer_1","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","on","fn","target","capture","passive","removeEventListener","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","getId","getNode","removeNodeFromMap","has","reset","throttle","func","wait","timeout","previous","arg","now","Date","leading","remaining","context","args","trailing","hookSetter","key","d","isRevoked","window","original","getOwnPropertyDescriptor","defineProperty","set","_this","patch","source","replacement","original_1","wrapped","defineProperties","__rrweb_original__","enumerable","getWindowHeight","innerHeight","documentElement","clientHeight","body","getWindowWidth","innerWidth","clientWidth","isBlocked","needBlock_1","closest","forEach","isIgnored","isAncestorRemoved","mirror","isTouchEvent","event","changedTouches","isIframeINode","hasShadowRoot","isNodeInLinkedList","Proxy","Reflect","get","prop","receiver","DoubleLinkedList","head","position","Error","current","index","addNode","__ln","removeNode","moveKey","parentId","isINode","deepDelete","addsSet","delete","childN","isParentRemoved","removes","isAncestorInSet","MutationBuffer$1","MutationBuffer","frozen","locked","texts","mapRemoves","movedMap","addedSet","Set","movedSet","droppedSet","processMutations","mutations","processMutation","emit","e_1","e_2","adds","addList","getNextId","ns","nextId","pushAdd","shadowHost","getRootNode","rootShadowHost","notInDoc","currentN","iframeManager","addIframe","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","shift","e_1_1","return","add","e_2_1","candidate","_node","payload","filter","attribute","mutationCb","e_3","e_4","oldValue","getAttribute","attributeName","item","old","setAttribute","style","styleObj","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","e_3_1","e_4_1","addedNodes","genAdds","removedNodes","nodeId","targetId","init","freeze","canvasManager","unfreeze","isFrozen","lock","unlock","mutationBuffers","isCSSGroupingRuleSupported","CSSGroupingRule","isCSSMediaRuleSupported","CSSMediaRule","isCSSSupportsRuleSupported","CSSSupportsRule","isCSSConditionRuleSupported","CSSConditionRule","getEventTarget","path","composedPath","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","MutationObserver","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","observer","bind","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","keys","Number","isNaN","eventKey","eventName","handler","clientX","clientY","getHandler","h","initScrollObserver","scrollCb","evt","scrollEl","scrollingElement","scroll","wrapEventWithUserTriggeredFlag","v","enable","userTriggered","INPUT_TAGS","lastInputValueMap","WeakMap","getNestedCSSRulePositions","childRule","parentRule","unshift","parentStyleSheet","recurse","initObservers","hooks","currentWindow","defaultView","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","mutation","mousemove","viewportResize","input","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","mergeHooks","mutationObserver","mousemoveHandler","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","userTriggeredOnInput","eventHandler","isTrusted","parentElement","isChecked","cbWithDedup","querySelectorAll","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","volume","muted","media","initMediaInteractionObserver","styleSheetObserver","insertRule","CSSStyleSheet","ownerNode","deleteRule","supportedNestedCSSRuleTypes","unmodifiedFunctions","entries","typeKey","initStyleSheetObserver","styleDeclarationObserver","setProperty","CSSStyleDeclaration","priority","removeProperty","remove","initStyleDeclarationObserver","fontObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","JSON","stringify","Uint8Array","restoreHandler","fonts","initFontObserver","pluginHandlers","plugins","plugin","callback","b","disconnect","IframeManager","iframes","addLoadListener","cb","loadListener","isAttachIframe","ShadowDomManager","restorePatches","manager","HTMLElement","ownerDocument","iframeElement","manager_1","restorePatch","lookup","charCodeAt","encode","arraybuffer","bytes","len","base64","webGLVarMap","Map","saveWebGLVar","isInstanceOfWebGLObject","_typeof","list","ctor","contextMap","variableListFor","constructor","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","values","ArrayBuffer","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","patchGLPrototype","props","getOwnPropertyNames","_loop_1","result","recordArgs","hookHandler","setter","props_1","props_1_1","wrappedEmit","takeFullSnapshot","CanvasManager","pendingCanvasMutations","rafStamps","latestId","invokeId","initCanvasMutationObserver","clear","resetObservers","startRAFTimestamping","startPendingCanvasMutationFlusher","canvasContextReset","HTMLCanvasElement","contextType","initCanvasContextObserver","canvas2DReset","props2D","CanvasRenderingContext2D","imgd","pix","props2D_1","props2D_1_1","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","requestAnimationFrame","flushPendingCanvasMutations","setLatestRAFTimestamp","timestamp","flushPendingCanvasMutationFor","valuesWithType","rest","getOwnPropertySymbols","propertyIsEnumerable","__rest","commands","wrapEvent","child","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","lastFullSnapshotEvent","color","date","email","month","number","range","search","tel","time","week","textarea","select","password","NodeList","DOMTokenList","Node","polyfill","incrementalSnapshotCount","isCheckout","FullSnapshot","IncrementalSnapshot","Mutation","buf","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","Scroll","wrappedCanvasMutationEmit","CanvasMutation","Meta","slimDOM","idNodeMap","snapshot","initialOffset","left","pageXOffset","top","pageYOffset","handlers_1","DomContentLoaded","observe_1","MouseInteraction","ViewportResize","Input","MediaInteraction","StyleSheetRule","StyleDeclaration","Font","Plugin","init_1","Load","addCustomEvent","tag","Custom","freezePage","StackFrame","obj","fileName","functionName","lineNumber","columnNumber","toString","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","ErrorStackParser","parse","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","line","sanitizedLine","tokens","locationParts","functionNameRegex","message","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","parseFloat","pathToSelector","outerHTML","localName","parent_1","domSiblings","children","sibling","isObject","isObjTooDeep","limit","keys_1","keys_1_1","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","splice","Infinity","_obj","shouldIgnore","str","stringLengthLimit","Event","eventResult","eventValue","isArray","nodeName","defaultLogOptions","level","lengthThreshold","logger","initLogObserver","logOptions","loggerType","logCount","cancelHandlers","includes","errorHandler_1","trace","stackFrame","levelType","_logger","rrweb","rrwebRecord","version","rrwebVersion","rrwebConsoleRecord","getRecordConsolePlugin"],"mappings":"6BAAIA,ECeAC,EAAW,WAQX,OAPAA,EAAWC,OAAOC,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACOJ,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,GAEJH,EAASa,MAAMC,KAAMP,UAC/B;;;;;;;;;;;;;;kFAcD,SAASQ,EAASC,GACd,IAAIZ,EAAsB,mBAAXa,QAAyBA,OAAOC,SAAUC,EAAIf,GAAKY,EAAEZ,GAAIC,EAAI,EAC5E,GAAIc,EAAG,OAAOA,EAAEP,KAAKI,GACrB,GAAIA,GAAyB,iBAAbA,EAAER,OAAqB,MAAO,CAC1CY,KAAM,WAEF,OADIJ,GAAKX,GAAKW,EAAER,SAAQQ,OAAI,GACrB,CAAEK,MAAOL,GAAKA,EAAEX,KAAMiB,MAAON,EACvC,GAEL,MAAM,IAAIO,UAAUnB,EAAI,0BAA4B,kCACvD,CAED,SAASoB,EAAOR,EAAGV,GACf,IAAIa,EAAsB,mBAAXF,QAAyBD,EAAEC,OAAOC,UACjD,IAAKC,EAAG,OAAOH,EACf,IAAmBS,EAAYC,EAA3BrB,EAAIc,EAAEP,KAAKI,GAAOW,EAAK,GAC3B,IACI,WAAc,IAANrB,GAAgBA,KAAM,MAAQmB,EAAIpB,EAAEe,QAAQE,MAAMK,EAAGC,KAAKH,EAAEJ,MADxE,CAGA,MAAOQ,GAASH,EAAI,CAAEG,MAAOA,EAAU,CAC/B,QACJ,IACQJ,IAAMA,EAAEH,OAASH,EAAId,EAAC,SAAac,EAAEP,KAAKP,EACjD,CACO,QAAE,GAAIqB,EAAG,MAAMA,EAAEG,KAAQ,CACpC,CACD,OAAOF,CACV,CAED,SAASG,EAAcC,EAAIC,EAAMC,GAC7B,GAAIA,GAA6B,IAArB1B,UAAUC,OAAc,IAAK,IAA4BmB,EAAxBtB,EAAI,EAAG6B,EAAIF,EAAKxB,OAAYH,EAAI6B,EAAG7B,KACxEsB,GAAQtB,KAAK2B,IACRL,IAAIA,EAAKQ,MAAMzB,UAAU0B,MAAMxB,KAAKoB,EAAM,EAAG3B,IAClDsB,EAAGtB,GAAK2B,EAAK3B,IAGrB,OAAO0B,EAAGM,OAAOV,GAAMQ,MAAMzB,UAAU0B,MAAMxB,KAAKoB,GACrD,uOD9DD,SAASM,EAAahC,GAClB,IAAIiC,EACAC,EAAoB,QAAZD,EAAKjC,SAAsB,IAAPiC,OAAgB,EAASA,EAAGC,KAC5D,OAAOC,QAAQD,GAAQA,EAAKE,YAAcF,EAAKE,aAAepC,EACjE,CACD,SAASqC,EAAeJ,GACpB,IAAIK,EAAmBL,EAAGK,iBAAkBC,EAAUN,EAAGM,QAASC,EAAOP,EAAGO,KAAMzB,EAAQkB,EAAGlB,MAAO0B,EAAcR,EAAGQ,YACjHC,EAAO3B,GAAS,GAUpB,OATIuB,EAAiBC,EAAQI,gBACzBL,EAAiBE,MAEbE,EADAD,EACOA,EAAYC,GAGZ,IAAIE,OAAOF,EAAKxC,SAGxBwC,CACV,EA9BD,SAAWjD,GACPA,EAASA,EAAQ,SAAe,GAAK,WACrCA,EAASA,EAAQ,aAAmB,GAAK,eACzCA,EAASA,EAAQ,QAAc,GAAK,UACpCA,EAASA,EAAQ,KAAW,GAAK,OACjCA,EAASA,EAAQ,MAAY,GAAK,QAClCA,EAASA,EAAQ,QAAc,GAAK,SANxC,CAAA,CAOGA,IAAaA,EAAW,CAAhB,IAwBX,IAAIoD,EAA0B,qBAoB9B,IAyDIC,EACAC,EA1DAC,EAAM,EACNC,EAAe,IAAIC,OAAO,gBAC1BC,GAAgB,EAcpB,SAASC,EAAkBtD,GACvB,IACI,IAAIuD,EAAQvD,EAAEuD,OAASvD,EAAEwD,SACzB,OAAOD,EAAQxB,MAAMH,KAAK2B,GAAOE,IAAIC,GAAkBC,KAAK,IAAM,IAFtE,CAIA,MAAOlC,GACH,OAAO,IACV,CACJ,CACD,SAASiC,EAAiBE,GACtB,IAAIC,EAAiBD,EAAKE,QAC1B,GASJ,SAAyBF,GACrB,MAAO,eAAgBA,CAC1B,CAXOG,CAAgBH,GAChB,IACIC,EAAiBP,EAAkBM,EAAKI,aAAeH,CAC1D,CACD,MAAO1B,GACN,CAEL,OAAO0B,CACV,CAwBD,IAAII,EAAiB,6CACjBC,EAAgB,sDAChBC,EAAW,wBACf,SAASC,EAAqBN,EAASO,GACnC,OAAQP,GAAW,IAAIQ,QAAQL,GAAgB,SAAUM,EAAQC,EAAQC,EAAOC,EAAQC,EAAOC,GAC3F,IAlBeC,EAkBXC,EAAWL,GAASE,GAASC,EAC7BG,EAAaP,GAAUE,GAAU,GACrC,IAAKI,EACD,OAAOP,EAEX,IAAKL,EAAcc,KAAKF,GACpB,MAAO,OAASC,EAAaD,EAAWC,EAAa,IAEzD,GAAIZ,EAASa,KAAKF,GACd,MAAO,OAASC,EAAaD,EAAWC,EAAa,IAEzD,GAAoB,MAAhBD,EAAS,GACT,MAAO,OAASC,KA9BLF,EA8BiCR,GA5B5CY,QAAQ,OAAS,EACZJ,EAAIK,MAAM,KAAKlD,MAAM,EAAG,GAAG2B,KAAK,KAGhCkB,EAAIK,MAAM,KAAK,IAEZA,MAAM,KAAK,GAsBiCJ,GAAYC,EAAa,IAEjF,IAAII,EAAQd,EAAKa,MAAM,KACnBE,EAAQN,EAASI,MAAM,KAC3BC,EAAME,MACN,IAAK,IAAIC,EAAK,EAAGC,EAAUH,EAAOE,EAAKC,EAAQnF,OAAQkF,IAAM,CACzD,IAAIE,EAAOD,EAAQD,GACN,MAATE,IAGc,OAATA,EACLL,EAAME,MAGNF,EAAM3D,KAAKgE,GAElB,CACD,MAAO,OAAST,EAAaI,EAAMxB,KAAK,KAAOoB,EAAa,GAC/D,GACJ,CACD,IEpJIU,EAUAC,EAiBAC,EAcAC,EAMAC,EAOAC,EF8FAC,EAAoB,qBACpBC,EAA0B,qBA2D9B,SAASC,EAAcC,EAAKC,GACxB,IAAKA,GAA4C,KAA1BA,EAAeC,OAClC,OAAOD,EAEX,IAAIE,EAAIH,EAAII,cAAc,KAE1B,OADAD,EAAEhC,KAAO8B,EACFE,EAAEhC,IACZ,CAID,SAASkC,IACL,IAAIF,EAAIG,SAASF,cAAc,KAE/B,OADAD,EAAEhC,KAAO,GACFgC,EAAEhC,IACZ,CACD,SAASoC,EAAmBP,EAAKzD,EAASiE,EAAMzF,GAC5C,MAAa,QAATyF,GAA4B,SAATA,GAAmBzF,GAGxB,eAATyF,GAAyBzF,GAAsB,MAAbA,EAAM,GAFtCgF,EAAcC,EAAKjF,GAKZ,eAATyF,IACLzF,GACa,UAAZwB,GAAmC,OAAZA,GAAgC,OAAZA,EAG9B,WAATiE,GAAqBzF,EAtFlC,SAAiCiF,EAAKC,GAClC,GAA8B,KAA1BA,EAAeC,OACf,OAAOD,EAEX,IAAIQ,EAAM,EACV,SAASC,EAAkBC,GACvB,IAAIC,EACAC,EAAQF,EAAMG,KAAKb,EAAec,UAAUN,IAChD,OAAII,GACAD,EAAQC,EAAM,GACdJ,GAAOG,EAAM1G,OACN0G,GAEJ,EACV,CAED,IADA,IAAII,EAAS,GAETN,EAAkBZ,KACdW,GAAOR,EAAe/F,SAFjB,CAKT,IAAIyE,EAAM+B,EAAkBb,GAC5B,GAAsB,MAAlBlB,EAAI7C,OAAO,GACX6C,EAAMoB,EAAcC,EAAKrB,EAAIoC,UAAU,EAAGpC,EAAIzE,OAAS,IACvD8G,EAAO1F,KAAKqD,OAEX,CACD,IAAIsC,EAAiB,GACrBtC,EAAMoB,EAAcC,EAAKrB,GAEzB,IADA,IAAIuC,GAAW,IACF,CACT,IAAIC,EAAIlB,EAAemB,OAAOX,GAC9B,GAAU,KAANU,EAAU,CACVH,EAAO1F,MAAMqD,EAAMsC,GAAgBf,QACnC,KACH,CACI,GAAKgB,EAWI,MAANC,IACAD,GAAW,OAZC,CAChB,GAAU,MAANC,EAAW,CACXV,GAAO,EACPO,EAAO1F,MAAMqD,EAAMsC,GAAgBf,QACnC,KACH,CACc,MAANiB,IACLD,GAAW,EAElB,CAMDD,GAAkBE,EAClBV,GAAO,CACV,CACJ,CACJ,CACD,OAAOO,EAAOvD,KAAK,KACtB,CA8Bc4D,CAAwBrB,EAAKjF,GAEtB,UAATyF,GAAoBzF,EAClBmD,EAAqBnD,EAAOsF,KAElB,WAAZ9D,GAAiC,SAATiE,GAAmBzF,EACzCgF,EAAcC,EAAKjF,GAGnBA,EAZAgF,EAAcC,EAAKjF,EAcjC,CAoBD,SAASuG,EAAgBC,EAAMC,EAAeC,GAC1C,IAAKF,EACD,OAAO,EAEX,GAAIA,EAAKG,WAAaH,EAAKI,aAAc,CACrC,GAA6B,iBAAlBH,GACP,GAAID,EAAKK,UAAUC,SAASL,GACxB,OAAO,OAIX,IAAK,IAAIM,EAAS,EAAGA,EAASP,EAAKK,UAAU1H,OAAQ4H,IAAU,CAC3D,IAAIC,EAAYR,EAAKK,UAAUE,GAC/B,GAAIN,EAAc1C,KAAKiD,GACnB,OAAO,CAEd,CAEL,SAAIN,IACIF,EAAKS,QAAQP,KAIdH,EAAgBC,EAAKU,WAAYT,EAAeC,EAC1D,CACD,OAAIF,EAAKG,SAAaH,EAAKW,UAChBZ,EAAgBC,EAAKU,WAAYT,EAAeC,EAG9D,CAqCD,SAASU,EAAcnI,EAAGoI,GACtB,IAAInG,EAEAoG,EAtPqBC,EA6HPC,EAwHdvC,EAAMoC,EAAQpC,IAAKwC,EAAaJ,EAAQI,WAAYC,EAAgBL,EAAQK,cAAejB,EAAgBY,EAAQZ,cAAeC,EAAmBW,EAAQX,iBAAkBiB,EAAmBN,EAAQM,iBAAkBC,EAAKP,EAAQ9F,iBAAkBA,OAA0B,IAAPqG,EAAgB,CAAhB,EAAqBA,EAAIC,EAAaR,EAAQQ,WAAYnG,EAAc2F,EAAQ3F,YAAaoG,EAAKT,EAAQU,eAAgBA,OAAwB,IAAPD,EAAgB,CAAhB,EAAqBA,EAAIE,EAAeX,EAAQW,aAAcC,EAAeZ,EAAQY,aAAcC,EAAkBb,EAAQa,gBAE1hB,GAAIjD,EAAIkD,KAAM,CACV,IAAIC,EAAQnD,EAAIkD,KAAKE,GACrBf,EAAmB,IAAVc,OAAcE,EAAYF,CACtC,CACD,OAAQnJ,EAAE0H,UACN,KAAK1H,EAAEsJ,cACH,MAAqB,eAAjBtJ,EAAEuJ,WACK,CACH/G,KAAM/C,EAAS+J,SACfC,WAAY,GACZF,WAAYvJ,EAAEuJ,WACdlB,OAAQA,GAIL,CACH7F,KAAM/C,EAAS+J,SACfC,WAAY,GACZpB,OAAQA,GAGpB,KAAKrI,EAAE0J,mBACH,MAAO,CACHlH,KAAM/C,EAASkK,aACfnD,KAAMxG,EAAEwG,KACRoD,SAAU5J,EAAE4J,SACZC,SAAU7J,EAAE6J,SACZxB,OAAQA,GAEhB,KAAKrI,EAAE2H,aAIH,IAHA,IAAImC,EAvHhB,SAA2BC,EAASvB,EAAYC,GAC5C,GAA0B,iBAAfD,GACP,GAAIuB,EAAQnC,UAAUC,SAASW,GAC3B,OAAO,OAIX,IAAK,IAAIV,EAAS,EAAGA,EAASiC,EAAQnC,UAAU1H,OAAQ4H,IAAU,CAC9D,IAAIC,EAAYgC,EAAQnC,UAAUE,GAClC,GAAIU,EAAW1D,KAAKiD,GAChB,OAAO,CAEd,CAEL,QAAIU,GACOsB,EAAQ/B,QAAQS,EAG9B,CAqG2BuB,CAAkBhK,EAAGwI,EAAYC,GAC7ClG,EAvThB,SAAyBwH,GACrB,GAAIA,aAAmBE,gBACnB,MAAO,OAEX,IAAIC,EAAmBH,EAAQxH,QAAQI,cAAcuD,OACrD,OAAIjD,EAAa6B,KAAKoF,GACX,MAEJA,CACV,CA8SyBC,CAAgBnK,GAC1BoK,EAAe,CAAA,EACVhF,EAAK,EAAGiF,EAAKxI,MAAMH,KAAK1B,EAAEsK,YAAalF,EAAKiF,EAAGnK,OAAQkF,IAAM,CAClE,IAAImF,EAAKF,EAAGjF,GAAKoF,EAASD,EAAG/D,KAAMzF,EAAQwJ,EAAGxJ,MAC9CqJ,EAAaI,GAAUjE,EAAmBP,EAAKzD,EAASiI,EAAQzJ,EACnE,CACD,GAAgB,SAAZwB,GAAsBmG,EAAkB,CACxC,IAAI+B,EAAa5I,MAAMH,KAAKsE,EAAI0E,aAAaC,MAAK,SAAU7K,GACxD,OAAOA,EAAEqE,OAASnE,EAAEmE,IACvB,IACGP,EAAU,KACV6G,IACA7G,EAAUR,EAAkBqH,IAE5B7G,WACOwG,EAAaQ,WACbR,EAAajG,KACpBiG,EAAaS,SAAW3G,EAAqBN,EAAS6G,EAAWtG,MAExE,CACD,GAAgB,UAAZ5B,GACAvC,EAAEsI,SACAtI,EAAE8K,WACA9K,EAAE+K,aACF,IAAI7E,OAAOhG,QACX0D,EAAUR,EAAkBpD,EAAEsI,UAE9B8B,EAAaS,SAAW3G,EAAqBN,EAASyC,MAG9D,GAAgB,UAAZ9D,GACY,aAAZA,GACY,WAAZA,EAAsB,CAClBxB,EAAQf,EAAEe,MACY,UAAtBqJ,EAAa5H,MACS,aAAtB4H,EAAa5H,MACS,WAAtB4H,EAAa5H,MACS,WAAtB4H,EAAa5H,MACbzB,EACAqJ,EAAarJ,MAAQsB,EAAe,CAChCG,KAAM4H,EAAa5H,KACnBD,QAASA,EACTxB,MAAOA,EACPuB,iBAAkBA,EAClBG,YAAaA,IAGZzC,EAAEgL,UACPZ,EAAaY,QAAUhL,EAAEgL,QAEhC,CASD,GARgB,WAAZzI,IACIvC,EAAEiL,WAAa3I,EAAgB,OAC/B8H,EAAaa,UAAW,SAGjBb,EAAaa,UAGZ,WAAZ1I,GAAwByG,EACxB,GAAoB,OAAhBhJ,EAAEkL,WA5YtB,SAAyBC,GACrB,IAAIC,EAAMD,EAAOE,WAAW,MAC5B,IAAKD,EACD,OAAO,EAEX,IADA,IACSE,EAAI,EAAGA,EAAIH,EAAOI,MAAOD,GADlB,GAEZ,IAAK,IAAIE,EAAI,EAAGA,EAAIL,EAAOM,OAAQD,GAFvB,GAEuC,CAC/C,IAAIE,EAAeN,EAAIM,aACnBC,EAAuB9I,KAA2B6I,EAChDA,EAAa7I,GACb6I,EAEN,GADkB,IAAIE,YAAYD,EAAqBrL,KAAK8K,EAAKE,EAAGE,EAAGK,KAAKC,IAPpE,GAOmFX,EAAOI,MAAQD,GAAIO,KAAKC,IAP3G,GAO0HX,EAAOM,OAASD,IAAIO,KAAKC,QAC3IC,MAAK,SAAUC,GAAS,OAAiB,IAAVA,KAC3C,OAAO,CACd,CAEL,OAAO,CACV,EA4XwBC,CAAgBnM,KACjBoK,EAAagC,WAAapM,EAAEqM,UAAUvD,EAAetG,KAAMsG,EAAewD,eAG7E,KAAM,cAAetM,GAAI,CAC1B,IAAIuM,EAAgBvM,EAAEqM,UAAUvD,EAAetG,KAAMsG,EAAewD,SAChEE,EAAclG,SAASF,cAAc,UACzCoG,EAAYjB,MAAQvL,EAAEuL,MACtBiB,EAAYf,OAASzL,EAAEyL,OAEnBc,IADqBC,EAAYH,UAAUvD,EAAetG,KAAMsG,EAAewD,WAE/ElC,EAAagC,WAAaG,EAEjC,CAEL,GAAgB,QAAZhK,GAAqBwG,EAAc,CAC9BjG,IACDA,EAAgBkD,EAAII,cAAc,UAClCrD,EAAYD,EAAcuI,WAAW,OAEzC,IAAIoB,EAAUzM,EACV0M,EAAaD,EAAQE,YACzBF,EAAQE,YAAc,YACtB,IAAIC,EAAoB,WACpB,IACI9J,EAAcyI,MAAQkB,EAAQI,aAC9B/J,EAAc2I,OAASgB,EAAQK,cAC/B/J,EAAUgK,UAAUN,EAAS,EAAG,GAChCrC,EAAagC,WAAatJ,EAAcuJ,UAAUvD,EAAetG,KAAMsG,EAAewD,QAJ1F,CAMA,MAAOU,GACHC,QAAQC,KAAK,yBAA2BT,EAAQU,WAAa,YAAcH,EAC9E,CACDN,EACOtC,EAAauC,YAAcD,SACrBtC,EAAauC,aAE1BF,EAAQW,UAAqC,IAAzBX,EAAQI,aAC5BD,IAEAH,EAAQY,OAAST,CACxB,CAaD,GAZgB,UAAZrK,GAAmC,UAAZA,IACvB6H,EAAakD,cAAgBtN,EAAEuN,OACzB,SACA,SACNnD,EAAaoD,oBAAsBxN,EAAEyN,aAErCzN,EAAE0N,aACFtD,EAAauD,cAAgB3N,EAAE0N,YAE/B1N,EAAE4N,YACFxD,EAAayD,aAAe7N,EAAE4N,WAE9B9D,EAAW,CACX,IAAIgE,EAAK9N,EAAE+N,wBAAyBxC,EAAQuC,EAAGvC,MAAOE,EAASqC,EAAGrC,OAClErB,EAAe,CACX4D,MAAS5D,EAAY,MACrB6D,SAAU1C,EAAQ,KAClB2C,UAAWzC,EAAS,KAE3B,CAOD,MANgB,WAAZlJ,GAAyB0G,EAAgBmB,EAAa+D,OACjDnO,EAAEoO,kBACHhE,EAAaiE,OAASjE,EAAa+D,YAEhC/D,EAAa+D,KAEjB,CACH3L,KAAM/C,EAAS6O,QACf/L,QAASA,EACT+H,WAAYF,EACZX,WAAY,GACZ8E,OA/RMhG,EA+RcvI,EA9RzBmC,QAAuB,QAAfoG,EAAGhG,SAAqBgG,EAAGiG,uBA8RJnF,GAC1BS,UAAWA,EACXzB,OAAQA,GAEhB,KAAKrI,EAAEkI,UACH,IAAIuG,EAAgBzO,EAAEiI,YAAcjI,EAAEiI,WAAW1F,QAC7CwI,EAAc/K,EAAE+K,YAChB2D,EAA4B,UAAlBD,QAAmCpF,EAC7CsF,GAA6B,WAAlBF,QAAoCpF,EACnD,GAAIqF,GAAW3D,EAAa,CACxB,IACQ/K,EAAE4O,aAAe5O,EAAE6O,kBAEgB,QAA7B5M,EAAKjC,EAAEiI,WAAWK,aAA0B,IAAPrG,OAAgB,EAASA,EAAGqB,YACvEyH,GA1aKzC,EA0a6BtI,EAAEiI,WAAWK,OAzatDhF,SACPzB,MAAMH,KAAK4G,EAAMhF,UACdC,KAAI,SAAUG,GAAQ,OAAOA,EAAKE,SAAW,EADhD,IAEGH,KAAK,IACR,GAiaM,CAOA,MAAOuJ,GACHC,QAAQC,KAAK,wDAA0DF,EAAKhN,EAC/E,CACD+K,EAAc7G,EAAqB6G,EAAa1E,IACnD,CAYD,OAXIsI,KACA5D,EAAc,uBAEb2D,IACAC,IACDrH,EAAgBtH,EAAGwH,EAAeC,IAClCsD,IACAA,EAAcnC,EACRA,EAAWmC,GACXA,EAAY3G,QAAQ,QAAS,MAEhC,CACH5B,KAAM/C,EAASqP,KACf/D,YAAaA,GAAe,GAC5B2D,QAASA,EACTrG,OAAQA,GAEhB,KAAKrI,EAAE+O,mBACH,MAAO,CACHvM,KAAM/C,EAASuP,MACfjE,YAAa,GACb1C,OAAQA,GAEhB,KAAKrI,EAAEiP,aACH,MAAO,CACHzM,KAAM/C,EAASyP,QACfnE,YAAa/K,EAAE+K,aAAe,GAC9B1C,OAAQA,GAEhB,QACI,OAAO,EAElB,CACD,SAAS8G,EAAcC,GACnB,YAAkB/F,IAAd+F,EACO,GAGAA,EAAUzM,aAExB,CAwED,SAAS0M,EAAoBrP,EAAGoI,GAC5B,IAqBIgB,EArBApD,EAAMoC,EAAQpC,IAAKzC,EAAM6E,EAAQ7E,IAAKiF,EAAaJ,EAAQI,WAAYC,EAAgBL,EAAQK,cAAejB,EAAgBY,EAAQZ,cAAeC,EAAmBW,EAAQX,iBAAkBxF,EAAKmG,EAAQkH,UAAWA,OAAmB,IAAPrN,GAAwBA,EAAI0G,EAAKP,EAAQM,iBAAkBA,OAA0B,IAAPC,GAAuBA,EAAIE,EAAKT,EAAQ9F,iBAAkBA,OAA0B,IAAPuG,EAAgB,CAAhB,EAAqBA,EAAID,EAAaR,EAAQQ,WAAYnG,EAAc2F,EAAQ3F,YAAa8M,EAAiBnH,EAAQmH,eAAgBlF,EAAKjC,EAAQU,eAAgBA,OAAwB,IAAPuB,EAAgB,CAAhB,EAAqBA,EAAIE,EAAKnC,EAAQW,aAAcA,OAAsB,IAAPwB,GAAwBA,EAAIuD,EAAK1F,EAAQY,aAAcA,OAAsB,IAAP8E,GAAwBA,EAAI0B,EAAcpH,EAAQoH,YAAaC,EAAerH,EAAQqH,aAAcC,EAAKtH,EAAQuH,kBAAmBA,OAA2B,IAAPD,EAAgB,IAAOA,EAAIE,EAAKxH,EAAQa,gBAAiBA,OAAyB,IAAP2G,EAAgB,WAAc,OAAO,CAArC,EAAgDA,EACj9BC,EAAKzH,EAAQ0H,mBAAoBA,OAA4B,IAAPD,GAAuBA,EAC7EE,EAAkB5H,EAAcnI,EAAG,CACnCgG,IAAKA,EACLwC,WAAYA,EACZC,cAAeA,EACfjB,cAAeA,EACfC,iBAAkBA,EAClBiB,iBAAkBA,EAClBpG,iBAAkBA,EAClBsG,WAAYA,EACZnG,YAAaA,EACbqG,eAAgBA,EAChBC,aAAcA,EACdC,aAAcA,EACdC,gBAAiBA,IAErB,IAAK8G,EAED,OADA9C,QAAQC,KAAKlN,EAAG,kBACT,KAIPoJ,EADA,SAAUpJ,EACLA,EAAEkJ,KAAKE,IA/FpB,SAAyB4G,EAAIT,GACzB,GAAIA,EAAeU,SAAWD,EAAGxN,OAAS/C,EAASyP,QAC/C,OAAO,EAEN,GAAIc,EAAGxN,OAAS/C,EAAS6O,QAAS,CACnC,GAAIiB,EAAeW,SACC,WAAfF,EAAGzN,SACgB,SAAfyN,EAAGzN,SACsB,YAAtByN,EAAG1F,WAAWM,KACO,WAArBoF,EAAG1F,WAAW6F,IACF,SAAfH,EAAGzN,SACsB,aAAtByN,EAAG1F,WAAWM,KACgB,iBAAvBoF,EAAG1F,WAAWnG,MACrB6L,EAAG1F,WAAWnG,KAAKiM,SAAS,QACpC,OAAO,EAEN,GAAIb,EAAec,cACH,SAAfL,EAAGzN,SAA4C,kBAAtByN,EAAG1F,WAAWM,KACrB,SAAfoF,EAAGzN,UACC4M,EAAca,EAAG1F,WAAW9D,MAAMK,MAAM,sCACC,qBAAtCsI,EAAca,EAAG1F,WAAW9D,OACS,SAArC2I,EAAca,EAAG1F,WAAWM,MACS,qBAArCuE,EAAca,EAAG1F,WAAWM,MACS,kBAArCuE,EAAca,EAAG1F,WAAWM,OACxC,OAAO,EAEN,GAAmB,SAAfoF,EAAGzN,QAAoB,CAC5B,GAAIgN,EAAee,sBACfnB,EAAca,EAAG1F,WAAW9D,MAAMK,MAAM,0BACxC,OAAO,EAEN,GAAI0I,EAAegB,iBACnBpB,EAAca,EAAG1F,WAAWkG,UAAU3J,MAAM,sBACzCsI,EAAca,EAAG1F,WAAW9D,MAAMK,MAAM,mBACF,cAAtCsI,EAAca,EAAG1F,WAAW9D,OAChC,OAAO,EAEN,GAAI+I,EAAekB,iBACmB,WAAtCtB,EAAca,EAAG1F,WAAW9D,OACa,cAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,YAAtC2I,EAAca,EAAG1F,WAAW9D,OAChC,OAAO,EAEN,GAAI+I,EAAemB,wBACYrH,IAAhC2G,EAAG1F,WAAW,cACd,OAAO,EAEN,GAAIiF,EAAeoB,qBACmB,WAAtCxB,EAAca,EAAG1F,WAAW9D,OACa,cAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,cAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,cAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,WAAtC2I,EAAca,EAAG1F,WAAW9D,OAC5B2I,EAAca,EAAG1F,WAAWkG,UAAU3J,MAAM,cAC5CsI,EAAca,EAAG1F,WAAWkG,UAAU3J,MAAM,cAChD,OAAO,EAEN,GAAI0I,EAAeqB,uBACmB,6BAAtCzB,EAAca,EAAG1F,WAAW9D,OACa,wBAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,eAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,oBAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,cAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,iBAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,+BAAtC2I,EAAca,EAAG1F,WAAW9D,OAChC,OAAO,CAEd,CACJ,CACD,OAAO,CACV,CA2BYqK,CAAgBd,EAAiBR,KACpCO,GACEC,EAAgBvN,OAAS/C,EAASqP,MACjCiB,EAAgBrB,SAChBqB,EAAgBhF,YAAY3G,QAAQ,cAAe,IAAIlE,QAnmBzD8C,IAomBEG,EAKT,IAAI2N,EAAiBnR,OAAOC,OAAOmQ,EAAiB,CAAE3G,GAAIA,IAE1D,GADApJ,EAAEkJ,KAAO4H,EACL1H,IAAOjG,EACP,OAAO,KAEXI,EAAI6F,GAAMpJ,EACNwP,GACAA,EAAYxP,GAEhB,IAAI+Q,GAAezB,EAOnB,GANIwB,EAAetO,OAAS/C,EAAS6O,UACjCyC,EAAcA,IAAgBD,EAAehH,iBACtCgH,EAAehH,UAClB9J,EAAEoC,aACF0O,EAAeE,cAAe,KAEjCF,EAAetO,OAAS/C,EAAS+J,UAClCsH,EAAetO,OAAS/C,EAAS6O,UACjCyC,EAAa,CACTxB,EAAe0B,gBACflB,EAAgBvN,OAAS/C,EAAS6O,SACN,SAA5ByB,EAAgBxN,UAChBuN,GAAqB,GAwBzB,IAtBA,IAAIoB,EAAgB,CAChBlL,IAAKA,EACLzC,IAAKA,EACLiF,WAAYA,EACZC,cAAeA,EACfjB,cAAeA,EACfC,iBAAkBA,EAClB6H,UAAWA,EACX5G,iBAAkBA,EAClBpG,iBAAkBA,EAClBsG,WAAYA,EACZnG,YAAaA,EACb8M,eAAgBA,EAChBzG,eAAgBA,EAChBC,aAAcA,EACdC,aAAcA,EACd8G,mBAAoBA,EACpBN,YAAaA,EACbC,aAAcA,EACdE,kBAAmBA,EACnB1G,gBAAiBA,GAEZ7D,EAAK,EAAG+L,EAAKtP,MAAMH,KAAK1B,EAAEyJ,YAAarE,EAAK+L,EAAGjR,OAAQkF,IAAM,EAE9DgM,EAAsB/B,EADb8B,EAAG/L,GACsC8L,KAElDJ,EAAerH,WAAWnI,KAAK8P,EAEtC,CACD,GA5sBR,SAAmBpR,GACf,OAAOA,EAAE0H,WAAa1H,EAAE2H,YAC3B,CA0sBW0J,CAAUrR,IAAMA,EAAEoC,WAClB,IAAK,IAAIkP,EAAK,EAAGC,EAAK1P,MAAMH,KAAK1B,EAAEoC,WAAWqH,YAAa6H,EAAKC,EAAGrR,OAAQoR,IAAM,CAC7E,IACIF,KAAsB/B,EADbkC,EAAGD,GACsCJ,MAElDE,EAAoBI,UAAW,EAC/BV,EAAerH,WAAWnI,KAAK8P,GAEtC,CAER,CAqCD,OApCIpR,EAAEiI,YAAcjG,EAAahC,EAAEiI,cAC/B6I,EAAeU,UAAW,GAE1BV,EAAetO,OAAS/C,EAAS6O,SACN,WAA3BwC,EAAevO,SA3bvB,SAA0BkP,EAAUC,EAAU/B,GAC1C,IAAIgC,EAAMF,EAASG,cACnB,GAAKD,EAAL,CAGA,IACIE,EADAC,GAAQ,EAEZ,IACID,EAAaF,EAAIrL,SAASuL,UAD9B,CAGA,MAAOtQ,GACH,MACH,CACD,GAAmB,aAAfsQ,EAAJ,CAcA,IAAIE,EAAW,cACXJ,EAAIK,SAAS7N,OAAS4N,GACtBN,EAAStD,MAAQ4D,GACA,KAAjBN,EAAStD,IAIbsD,EAASQ,iBAAiB,OAAQP,GAH9BQ,WAAWR,EAAU,EALxB,KAbD,CACI,IAAIS,EAAUD,YAAW,WAChBJ,IACDJ,IACAI,GAAQ,EAHQ,GAKrBnC,GACH8B,EAASQ,iBAAiB,QAAQ,WAC9BG,aAAaD,GACbL,GAAQ,EACRJ,MAGP,CAtBA,CA+BJ,CAyZOW,CAAiBrS,GAAG,WAChB,IAAIsS,EAAYtS,EAAEoO,gBAClB,GAAIkE,GAAa7C,EAAc,CAC3B,IAAI8C,EAAuBlD,EAAoBiD,EAAW,CACtDtM,IAAKsM,EACL/O,IAAKA,EACLiF,WAAYA,EACZC,cAAeA,EACfjB,cAAeA,EACfC,iBAAkBA,EAClB6H,WAAW,EACX5G,iBAAkBA,EAClBpG,iBAAkBA,EAClBsG,WAAYA,EACZnG,YAAaA,EACb8M,eAAgBA,EAChBzG,eAAgBA,EAChBC,aAAcA,EACdC,aAAcA,EACd8G,mBAAoBA,EACpBN,YAAaA,EACbC,aAAcA,EACdE,kBAAmBA,EACnB1G,gBAAiBA,IAEjBsJ,GACA9C,EAAazP,EAAGuS,EAEvB,CA5BW,GA6Bb5C,GAEAmB,CACV,CGlwBD,SAAS0B,EAAGhQ,EAAMiQ,EAAIC,QACH,IAAXA,IAAqBA,EAASpM,UAClC,IAAI8B,EAAU,CAAEuK,SAAS,EAAMC,SAAS,GAExC,OADAF,EAAOT,iBAAiBzP,EAAMiQ,EAAIrK,GAC3B,WAAc,OAAOsK,EAAOG,oBAAoBrQ,EAAMiQ,EAAIrK,GACpE,EDRD,SAAW7C,GACPA,EAAUA,EAAS,iBAAuB,GAAK,mBAC/CA,EAAUA,EAAS,KAAW,GAAK,OACnCA,EAAUA,EAAS,aAAmB,GAAK,eAC3CA,EAAUA,EAAS,oBAA0B,GAAK,sBAClDA,EAAUA,EAAS,KAAW,GAAK,OACnCA,EAAUA,EAAS,OAAa,GAAK,SACrCA,EAAUA,EAAS,OAAa,GAAK,QAPzC,CAAA,CAQGA,IAAcA,EAAY,CAAjB,IAEZ,SAAWC,GACPA,EAAkBA,EAAiB,SAAe,GAAK,WACvDA,EAAkBA,EAAiB,UAAgB,GAAK,YACxDA,EAAkBA,EAAiB,iBAAuB,GAAK,mBAC/DA,EAAkBA,EAAiB,OAAa,GAAK,SACrDA,EAAkBA,EAAiB,eAAqB,GAAK,iBAC7DA,EAAkBA,EAAiB,MAAY,GAAK,QACpDA,EAAkBA,EAAiB,UAAgB,GAAK,YACxDA,EAAkBA,EAAiB,iBAAuB,GAAK,mBAC/DA,EAAkBA,EAAiB,eAAqB,GAAK,iBAC7DA,EAAkBA,EAAiB,eAAqB,GAAK,iBAC7DA,EAAkBA,EAAiB,KAAW,IAAM,OACpDA,EAAkBA,EAAiB,IAAU,IAAM,MACnDA,EAAkBA,EAAiB,KAAW,IAAM,OACpDA,EAAkBA,EAAiB,iBAAuB,IAAM,kBAdpE,CAAA,CAeGA,IAAsBA,EAAoB,CAAzB,IAEpB,SAAWC,GACPA,EAAkBA,EAAiB,QAAc,GAAK,UACtDA,EAAkBA,EAAiB,UAAgB,GAAK,YACxDA,EAAkBA,EAAiB,MAAY,GAAK,QACpDA,EAAkBA,EAAiB,YAAkB,GAAK,cAC1DA,EAAkBA,EAAiB,SAAe,GAAK,WACvDA,EAAkBA,EAAiB,MAAY,GAAK,QACpDA,EAAkBA,EAAiB,KAAW,GAAK,OACnDA,EAAkBA,EAAiB,WAAiB,GAAK,aACzDA,EAAkBA,EAAiB,mBAAyB,GAAK,qBACjEA,EAAkBA,EAAiB,SAAe,GAAK,WACvDA,EAAkBA,EAAiB,YAAkB,IAAM,aAX/D,CAAA,CAYGA,IAAsBA,EAAoB,CAAzB,IAEpB,SAAWC,GACPA,EAAcA,EAAc,MAAQ,GAAK,KACzCA,EAAcA,EAAa,MAAY,GAAK,QAC5CA,EAAcA,EAAa,OAAa,GAAK,QAHjD,CAAA,CAIGA,IAAkBA,EAAgB,CAArB,IAEhB,SAAWC,GACPA,EAAkBA,EAAiB,KAAW,GAAK,OACnDA,EAAkBA,EAAiB,MAAY,GAAK,QACpDA,EAAkBA,EAAiB,OAAa,GAAK,SACrDA,EAAkBA,EAAiB,aAAmB,GAAK,cAJ/D,CAAA,CAKGA,IAAsBA,EAAoB,CAAzB,IAEpB,SAAWC,GACPA,EAAc,MAAY,QAC1BA,EAAc,MAAY,QAC1BA,EAAc,OAAa,SAC3BA,EAAc,OAAa,SAC3BA,EAAc,OAAa,SAC3BA,EAAc,sBAA4B,yBAC1CA,EAAc,oBAA0B,wBACxCA,EAAc,kBAAwB,sBACtCA,EAAc,UAAgB,aAC9BA,EAAc,QAAc,WAC5BA,EAAc,iBAAuB,oBACrCA,EAAc,UAAgB,aAC9BA,EAAc,YAAkB,eAChCA,EAAc,MAAY,QAC1BA,EAAc,YAAkB,eAChCA,EAAc,SAAe,WAhBjC,CAAA,CAiBGA,IAAmBA,EAAiB,CAAA,IChCvC,IAAIkN,EAAiC,4NAKjCC,EAAU,CACVxP,IAAK,CADK,EAEVyP,MAAO,WAEH,OADA/F,QAAQ1L,MAAMuR,IACN,CAJF,EAMVG,QAAS,WAEL,OADAhG,QAAQ1L,MAAMuR,GACP,IARD,EAUVI,kBAAmB,WACfjG,QAAQ1L,MAAMuR,EAXR,EAaVK,IAAK,WAED,OADAlG,QAAQ1L,MAAMuR,IACP,CAfD,EAiBVM,MAAO,WACHnG,QAAQ1L,MAAMuR,EACjB,GAYL,SAASO,EAASC,EAAMC,EAAMnL,QACV,IAAZA,IAAsBA,EAAU,CAAA,GACpC,IAAIoL,EAAU,KACVC,EAAW,EACf,OAAO,SAAUC,GACb,IAAIC,EAAMC,KAAKD,MACVF,IAAgC,IAApBrL,EAAQyL,UACrBJ,EAAWE,GAEf,IAAIG,EAAYP,GAAQI,EAAMF,GAC1BM,EAAUvT,KACVwT,EAAO/T,UACP6T,GAAa,GAAKA,EAAYP,GAC1BC,IACApB,aAAaoB,GACbA,EAAU,MAEdC,EAAWE,EACXL,EAAK/S,MAAMwT,EAASC,IAEdR,IAAgC,IAArBpL,EAAQ6L,WACzBT,EAAUtB,YAAW,WACjBuB,GAA+B,IAApBrL,EAAQyL,QAAoB,EAAID,KAAKD,MAChDH,EAAU,KACVF,EAAK/S,MAAMwT,EAASC,EAHJ,GAIjBF,IAGd,CACD,SAASI,EAAWxB,EAAQyB,EAAKC,EAAGC,EAAW1C,QAC/B,IAARA,IAAkBA,EAAM2C,QAC5B,IAAIC,EAAW5C,EAAIhS,OAAO6U,yBAAyB9B,EAAQyB,GAc3D,OAbAxC,EAAIhS,OAAO8U,eAAe/B,EAAQyB,EAAKE,EACjCD,EACA,CACEM,IAAK,SAAU3T,GACX,IAAI4T,EAAQnU,KACZ0R,YAAW,WACPkC,EAAEM,IAAIpU,KAAKqU,EAAO5T,EADZ,GAEP,GACCwT,GAAYA,EAASG,KACrBH,EAASG,IAAIpU,KAAKE,KAAMO,EAE/B,IAEF,WAAc,OAAOmT,EAAWxB,EAAQyB,EAAKI,GAAY,CAAA,GAAI,GACvE,CACD,SAASK,EAAMC,EAAQrO,EAAMsO,GACzB,IACI,KAAMtO,KAAQqO,GACV,OAAO,WAAY,EAEvB,IAAIE,EAAaF,EAAOrO,GACpBwO,EAAUF,EAAYC,GAW1B,MAVuB,mBAAZC,IACPA,EAAQ5U,UAAY4U,EAAQ5U,WAAa,CAAA,EACzCT,OAAOsV,iBAAiBD,EAAS,CAC7BE,mBAAoB,CAChBC,YAAY,EACZpU,MAAOgU,MAInBF,EAAOrO,GAAQwO,EACR,WACHH,EAAOrO,GAAQuO,EAjBvB,CAoBA,MAAO9S,GACH,OAAO,WAAY,CACtB,CACJ,CACD,SAASmT,IACL,OAAQd,OAAOe,aACV/O,SAASgP,iBAAmBhP,SAASgP,gBAAgBC,cACrDjP,SAASkP,MAAQlP,SAASkP,KAAKD,YACvC,CACD,SAASE,IACL,OAAQnB,OAAOoB,YACVpP,SAASgP,iBAAmBhP,SAASgP,gBAAgBK,aACrDrP,SAASkP,MAAQlP,SAASkP,KAAKG,WACvC,CACD,SAASC,EAAUrO,EAAMiB,GACrB,IAAKjB,EACD,OAAO,EAEX,GAAIA,EAAKG,WAAaH,EAAKI,aAAc,CACrC,IAAIkO,GAAc,EAClB,GAA0B,iBAAfrN,EAAyB,CAChC,QAAqBa,IAAjB9B,EAAKuO,QACL,OAA0C,OAAnCvO,EAAKuO,QAAQ,IAAMtN,GAG1BqN,EAActO,EAAKK,UAAUC,SAASW,EAE7C,MAEGjB,EAAKK,UAAUmO,SAAQ,SAAUhO,GACzBS,EAAW1D,KAAKiD,KAChB8N,GAAc,MAI1B,OAAOA,GAAeD,EAAUrO,EAAKU,WAAYO,EACpD,CACD,OAAIjB,EAAKG,SAAaH,EAAKW,UAChB0N,EAAUrO,EAAKU,WAAYO,EAGzC,CACD,SAASwN,EAAUhW,GACf,MAAI,SAAUA,GACHA,EAAEkJ,KAAKE,KAAOjG,CAG5B,CACD,SAAS8S,EAAkBvD,EAAQwD,GAC/B,GAAIlU,EAAa0Q,GACb,OAAO,EAEX,IAAItJ,EAAK8M,EAAOlD,MAAMN,GACtB,OAAKwD,EAAO/C,IAAI/J,MAGZsJ,EAAOzK,YACPyK,EAAOzK,WAAWP,WAAagL,EAAOpJ,kBAGrCoJ,EAAOzK,YAGLgO,EAAkBvD,EAAOzK,WAAYiO,GAC/C,CACD,SAASC,EAAaC,GAClB,OAAOjU,QAAQiU,EAAMC,eACxB,CA6PD,SAASC,EAAc/O,GACnB,MAAI,SAAUA,IACFA,EAAK2B,KAAK1G,OAAS/C,EAAS6O,SAAiC,WAAtB/G,EAAK2B,KAAK3G,QAGhE,CAwBD,SAASgU,EAAcvW,GACnB,OAAOmC,QAAQnC,aAA6B,EAASA,EAAEoC,WAC1D,CC3eD,SAASoU,EAAmBxW,GACxB,MAAO,SAAUA,CACpB,CD4DqB,oBAAXsU,QAA0BA,OAAOmC,OAASnC,OAAOoC,UACxD3D,EAAU,IAAI0D,MAAM1D,EAAS,CACzB4D,IAAK,SAAUjE,EAAQkE,EAAMC,GAIzB,MAHa,QAATD,GACA3J,QAAQ1L,MAAMuR,GAEX4D,QAAQC,IAAIjE,EAAQkE,EAAMC,EACpC,KClET,IAAIC,EAAoB,WACpB,SAASA,IACLtW,KAAKN,OAAS,EACdM,KAAKuW,KAAO,IACf,CAqED,OApEAD,EAAiB1W,UAAUuW,IAAM,SAAUK,GACvC,GAAIA,GAAYxW,KAAKN,OACjB,MAAM,IAAI+W,MAAM,kCAGpB,IADA,IAAIC,EAAU1W,KAAKuW,KACVI,EAAQ,EAAGA,EAAQH,EAAUG,IAClCD,GAAWA,aAAyC,EAASA,EAAQpW,OAAS,KAElF,OAAOoW,GAEXJ,EAAiB1W,UAAUgX,QAAU,SAAUpX,GAC3C,IAAIuH,EAAO,CACPxG,MAAOf,EACPyT,SAAU,KACV3S,KAAM,MAGV,GADAd,EAAEqX,KAAO9P,EACLvH,EAAE6O,iBAAmB2H,EAAmBxW,EAAE6O,iBAAkB,CAC5D,IAAIqI,EAAUlX,EAAE6O,gBAAgBwI,KAAKvW,KACrCyG,EAAKzG,KAAOoW,EACZ3P,EAAKkM,SAAWzT,EAAE6O,gBAAgBwI,KAClCrX,EAAE6O,gBAAgBwI,KAAKvW,KAAOyG,EAC1B2P,IACAA,EAAQzD,SAAWlM,EAN3B,MASK,GAAIvH,EAAE4O,aACP4H,EAAmBxW,EAAE4O,cACrB5O,EAAE4O,YAAYyI,KAAK5D,SAAU,CACzByD,EAAUlX,EAAE4O,YAAYyI,KAAK5D,SACjClM,EAAKkM,SAAWyD,EAChB3P,EAAKzG,KAAOd,EAAE4O,YAAYyI,KAC1BrX,EAAE4O,YAAYyI,KAAK5D,SAAWlM,EAC1B2P,IACAA,EAAQpW,KAAOyG,EAEtB,MAEO/G,KAAKuW,OACLvW,KAAKuW,KAAKtD,SAAWlM,GAEzBA,EAAKzG,KAAON,KAAKuW,KACjBvW,KAAKuW,KAAOxP,EAEhB/G,KAAKN,UAET4W,EAAiB1W,UAAUkX,WAAa,SAAUtX,GAC9C,IAAIkX,EAAUlX,EAAEqX,KACX7W,KAAKuW,OAGLG,EAAQzD,UAOTyD,EAAQzD,SAAS3S,KAAOoW,EAAQpW,KAC5BoW,EAAQpW,OACRoW,EAAQpW,KAAK2S,SAAWyD,EAAQzD,YARpCjT,KAAKuW,KAAOG,EAAQpW,KAChBN,KAAKuW,OACLvW,KAAKuW,KAAKtD,SAAW,OASzBzT,EAAEqX,aACKrX,EAAEqX,KAEb7W,KAAKN,WAEF4W,CACV,CA1EuB,GA2EpBS,EAAU,SAAUnO,EAAIoO,GAAY,MAAO,GAAGzV,OAAOqH,EAAI,KAAKrH,OAAOyV,EAAY,EACrF,SAASC,EAAQzX,GACb,MAAO,SAAUA,CACpB,CAoZD,SAAS0X,EAAWC,EAAS3X,GACzB2X,EAAQC,OAAO5X,GACfA,EAAEyJ,WAAWsM,SAAQ,SAAU8B,GAAU,OAAOH,EAAWC,EAASE,KACvE,CACD,SAASC,GAAgBC,EAAS/X,EAAGkW,GACjC,IAAIjO,EAAajI,EAAEiI,WACnB,IAAKA,EACD,OAAO,EAEX,IAAIuP,EAAWtB,EAAOlD,MAAM/K,GAC5B,QAAI8P,EAAQ9L,MAAK,SAAU9K,GAAK,OAAOA,EAAEiI,KAAOoO,CAAW,KAGpDM,GAAgBC,EAAS9P,EAAYiO,EAC/C,CACD,SAAS8B,GAAgBtD,EAAK1U,GAC1B,IAAIiI,EAAajI,EAAEiI,WACnB,QAAKA,MAGDyM,EAAIvB,IAAIlL,IAGL+P,GAAgBtD,EAAKzM,GAC/B,CAED,IAAAgQ,GA7asB,WAClB,SAASC,IACL,IAAIvD,EAAQnU,KACZA,KAAK2X,QAAS,EACd3X,KAAK4X,QAAS,EACd5X,KAAK6X,MAAQ,GACb7X,KAAK8J,WAAa,GAClB9J,KAAKuX,QAAU,GACfvX,KAAK8X,WAAa,GAClB9X,KAAK+X,SAAW,GAChB/X,KAAKgY,SAAW,IAAIC,IACpBjY,KAAKkY,SAAW,IAAID,IACpBjY,KAAKmY,WAAa,IAAIF,IACtBjY,KAAKoY,iBAAmB,SAAUC,GAC9BA,EAAU9C,QAAQpB,EAAMmE,iBACxBnE,EAAMoE,QAEVvY,KAAKuY,KAAO,WACR,IAAIC,EAAK/W,EAAIgX,EAAKtQ,EAClB,IAAIgM,EAAMwD,SAAUxD,EAAMyD,OAA1B,CAwEA,IArEA,IAAIc,EAAO,GACPC,EAAU,IAAIrC,EACdsC,EAAY,SAAUpZ,GAGtB,IAFA,IAAIqZ,EAAKrZ,EACLsZ,EAASnW,EACNmW,IAAWnW,GAEdmW,GADAD,EAAKA,GAAMA,EAAGzK,cACC+F,EAAMuB,OAAOlD,MAAMqG,GAEtC,OAAOC,GAEPC,EAAU,SAAUvZ,GAMpB,IALA,IAAIiC,EAAI0G,EAAIE,EAAIwB,EAAIE,EAChBiP,EAAaxZ,EAAEyZ,YACc,QAA1BxX,EAAKjC,EAAEyZ,qBAAkC,IAAPxX,OAAgB,EAASA,EAAGC,KAC/D,KACFwX,EAAiBF,EAC4J,QAAzK3Q,EAA2G,QAArGF,EAAK+Q,aAAuD,EAASA,EAAeD,mBAAgC,IAAP9Q,OAAgB,EAASA,EAAGrI,KAAKoZ,UAAoC,IAAP7Q,OAAgB,EAASA,EAAG3G,MACjNwX,GAC+K,QAAzKnP,EAA2G,QAArGF,EAAKqP,aAAuD,EAASA,EAAeD,mBAAgC,IAAPpP,OAAgB,EAASA,EAAG/J,KAAKoZ,UAAoC,IAAPnP,OAAgB,EAASA,EAAGrI,OAC3M,KACZ,IAAIyX,IAAYhF,EAAM3O,IAAI6B,SAAS7H,IACX,OAAnB0Z,GAA4B/E,EAAM3O,IAAI6B,SAAS6R,IACpD,GAAK1Z,EAAEiI,aAAc0R,EAArB,CAGA,IAAInC,EAAWxV,EAAahC,EAAEiI,YACxB0M,EAAMuB,OAAOlD,MAAMwG,GACnB7E,EAAMuB,OAAOlD,MAAMhT,EAAEiI,YACvBqR,EAASF,EAAUpZ,GACvB,IAAkB,IAAdwX,IAA+B,IAAZ8B,EACnB,OAAOH,EAAQ/B,QAAQpX,GAE3B,IAAIgQ,EAAKX,EAAoBrP,EAAG,CAC5BgG,IAAK2O,EAAM3O,IACXzC,IAAKoR,EAAMuB,OAAO3S,IAClBiF,WAAYmM,EAAMnM,WAClBC,cAAekM,EAAMlM,cACrBjB,cAAemN,EAAMnN,cACrBC,iBAAkBkN,EAAMlN,iBACxB6H,WAAW,EACX5G,iBAAkBiM,EAAMjM,iBACxBpG,iBAAkBqS,EAAMrS,iBACxBsG,WAAY+L,EAAM/L,WAClBnG,YAAakS,EAAMlS,YACnB8M,eAAgBoF,EAAMpF,eACtBvG,aAAc2L,EAAM3L,aACpBD,aAAc4L,EAAM5L,aACpByG,YAAa,SAAUoK,GACftD,EAAcsD,IACdjF,EAAMkF,cAAcC,UAAUF,GAE9BrD,EAAcvW,IACd2U,EAAMoF,iBAAiBC,cAAcha,EAAEoC,WAAYkE,SApB/B,EAuB5BmJ,aAAc,SAAUwK,EAAQC,GAC5BvF,EAAMkF,cAAcM,aAAaF,EAAQC,GACzCvF,EAAMoF,iBAAiBK,oBAAoBH,EAC9C,IAEDjK,GACAkJ,EAAK5X,KAAK,CACNkW,SAAUA,EACV8B,OAAQA,EACR/R,KAAMyI,GAxCb,GA4CE2E,EAAM2D,WAAWpY,QACpByU,EAAMuB,OAAOhD,kBAAkByB,EAAM2D,WAAW+B,SAEpD,IACI,IAAK,IAAIxR,EAAKpI,EAASkU,EAAM+D,UAAWrO,EAAKxB,EAAG/H,QAASuJ,EAAGrJ,KAAMqJ,EAAKxB,EAAG/H,OAAQ,CAC9E,IAAId,EAAIqK,EAAGtJ,MACP+W,GAAgBnD,EAAMoD,QAAS/X,EAAG2U,EAAMuB,UACvCvB,EAAM+D,SAASvF,IAAInT,EAAEiI,aAG1BsR,EAAQvZ,EACX,CARL,CAUA,MAAOsa,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQjQ,IAAOA,EAAGrJ,OAASiB,EAAK4G,EAAG0R,SAAStY,EAAG3B,KAAKuI,EACnD,CACO,QAAE,GAAImQ,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CACD,IACI,IAAK,IAAIgJ,EAAK9J,EAASkU,EAAM6D,UAAW1K,EAAKvD,EAAGzJ,QAASgN,EAAG9M,KAAM8M,EAAKvD,EAAGzJ,OAAQ,CAC1Ed,EAAI8N,EAAG/M,MACNiX,GAAgBrD,EAAMgE,WAAY3Y,IAClC8X,GAAgBnD,EAAMoD,QAAS/X,EAAG2U,EAAMuB,QAGpC8B,GAAgBrD,EAAM+D,SAAU1Y,GACrCuZ,EAAQvZ,GAGR2U,EAAMgE,WAAW6B,IAAIxa,GANrBuZ,EAAQvZ,EAQf,CAbL,CAeA,MAAOya,GAASxB,EAAM,CAAE1X,MAAOkZ,EAAU,CACjC,QACJ,IACQ3M,IAAOA,EAAG9M,OAAS2H,EAAK4B,EAAGgQ,SAAS5R,EAAGrI,KAAKiK,EACnD,CACO,QAAE,GAAI0O,EAAK,MAAMA,EAAI1X,KAAQ,CACxC,CAED,IADA,IAAImZ,EAAY,KACTvB,EAAQjZ,QAAQ,CACnB,IAAIqH,EAAO,KACX,GAAImT,EAAW,CACX,IAAIlD,EAAW7C,EAAMuB,OAAOlD,MAAM0H,EAAU3Z,MAAMkH,YAC9CqR,EAASF,EAAUsB,EAAU3Z,QACf,IAAdyW,IAA+B,IAAZ8B,IACnB/R,EAAOmT,EAEd,CACD,IAAKnT,EACD,IAAK,IAAI4P,EAAQgC,EAAQjZ,OAAS,EAAGiX,GAAS,EAAGA,IAAS,CACtD,IAAIwD,EAAQxB,EAAQxC,IAAIQ,GACxB,GAAIwD,EAAO,CACHnD,EAAW7C,EAAMuB,OAAOlD,MAAM2H,EAAM5Z,MAAMkH,YAC1CqR,EAASF,EAAUuB,EAAM5Z,OAC7B,IAAkB,IAAdyW,IAA+B,IAAZ8B,EAAe,CAClC/R,EAAOoT,EACP,KACH,CACJ,CACJ,CAEL,IAAKpT,EAAM,CACP,KAAO4R,EAAQpC,MACXoC,EAAQ7B,WAAW6B,EAAQpC,KAAKhW,OAEpC,KACH,CACD2Z,EAAYnT,EAAKkM,SACjB0F,EAAQ7B,WAAW/P,EAAKxG,OACxBwY,EAAQhS,EAAKxG,MAChB,CACD,IAAI6Z,EAAU,CACVvC,MAAO1D,EAAM0D,MACR9U,KAAI,SAAUb,GAAQ,MAAQ,CAC/B0G,GAAIuL,EAAMuB,OAAOlD,MAAMtQ,EAAK6E,MAC5BxG,MAAO2B,EAAK3B,MACX,IACA8Z,QAAO,SAAUnY,GAAQ,OAAOiS,EAAMuB,OAAO/C,IAAIzQ,EAAK0G,GAAM,IACjEkB,WAAYqK,EAAMrK,WACb/G,KAAI,SAAUuX,GAAa,MAAQ,CACpC1R,GAAIuL,EAAMuB,OAAOlD,MAAM8H,EAAUvT,MACjC+C,WAAYwQ,EAAUxQ,WACrB,IACAuQ,QAAO,SAAUC,GAAa,OAAOnG,EAAMuB,OAAO/C,IAAI2H,EAAU1R,GAAM,IAC3E2O,QAASpD,EAAMoD,QACfmB,KAAMA,IAEL0B,EAAQvC,MAAMnY,QACd0a,EAAQtQ,WAAWpK,QACnB0a,EAAQ7C,QAAQ7X,QAChB0a,EAAQ1B,KAAKhZ,UAGlByU,EAAM0D,MAAQ,GACd1D,EAAMrK,WAAa,GACnBqK,EAAMoD,QAAU,GAChBpD,EAAM6D,SAAW,IAAIC,IACrB9D,EAAM+D,SAAW,IAAID,IACrB9D,EAAMgE,WAAa,IAAIF,IACvB9D,EAAM4D,SAAW,GACjB5D,EAAMoG,WAAWH,GA9KhB,GAgLLpa,KAAKsY,gBAAkB,SAAUjY,GAC7B,IAAIma,EAAK/Y,EAAIgZ,EAAKtS,EAClB,IAAIqN,EAAUnV,EAAE6R,QAGhB,OAAQ7R,EAAE2B,MACN,IAAK,gBACD,IAAIzB,EAAQF,EAAE6R,OAAO3H,YAChB6K,EAAU/U,EAAE6R,OAAQiC,EAAMnM,aAAezH,IAAUF,EAAEqa,UACtDvG,EAAM0D,MAAM/W,KAAK,CACbP,MAAOuG,EAAgBzG,EAAE6R,OAAQiC,EAAMnN,cAAemN,EAAMlN,mBAAqB1G,EAC3E4T,EAAM/L,WACF+L,EAAM/L,WAAW7H,GACjBA,EAAMqD,QAAQ,QAAS,KAC3BrD,EACNwG,KAAM1G,EAAE6R,SAGhB,MAEJ,IAAK,aACD,IAAIA,EAAS7R,EAAE6R,OACX3R,EAAQF,EAAE6R,OAAOyI,aAAata,EAAEua,eAUpC,GATwB,UAApBva,EAAEua,gBACFra,EAAQsB,EAAe,CACnBC,iBAAkBqS,EAAMrS,iBACxBC,QAAS1B,EAAE6R,OAAOnQ,QAClBC,KAAM3B,EAAE6R,OAAOyI,aAAa,QAC5Bpa,MAAOA,EACP0B,YAAakS,EAAMlS,eAGvBmT,EAAU/U,EAAE6R,OAAQiC,EAAMnM,aAAezH,IAAUF,EAAEqa,SACrD,OAEJ,IAAIG,EAAO1G,EAAMrK,WAAWK,MAAK,SAAUxE,GAAK,OAAOA,EAAEoB,OAAS1G,EAAE6R,MAAS,IAQ7E,GAPK2I,IACDA,EAAO,CACH9T,KAAM1G,EAAE6R,OACRpI,WAAY,CAAA,GAEhBqK,EAAMrK,WAAWhJ,KAAK+Z,IAEF,UAApBxa,EAAEua,cAA2B,CAC7B,IAAIE,EAAM3G,EAAM3O,IAAII,cAAc,QAC9BvF,EAAEqa,UACFI,EAAIC,aAAa,QAAS1a,EAAEqa,eAEF7R,IAA1BgS,EAAK/Q,WAAWkR,OACU,OAA1BH,EAAK/Q,WAAWkR,QAChBH,EAAK/Q,WAAWkR,MAAQ,IAE5B,IAAIC,EAAWJ,EAAK/Q,WAAWkR,MAC/B,IACI,IAAK,IAAI3S,EAAKpI,EAASoB,MAAMH,KAAKgR,EAAO8I,QAASnR,EAAKxB,EAAG/H,QAASuJ,EAAGrJ,KAAMqJ,EAAKxB,EAAG/H,OAAQ,CACxF,IAAI4a,EAAQrR,EAAGtJ,MACX4a,EAAWjJ,EAAO8I,MAAMI,iBAAiBF,GACzCG,EAAcnJ,EAAO8I,MAAMM,oBAAoBJ,GAC/CC,IAAaL,EAAIE,MAAMI,iBAAiBF,IACxCG,IAAgBP,EAAIE,MAAMM,oBAAoBJ,KAE1CD,EAASC,GADO,KAAhBG,EACkBF,EAGA,CAACA,EAAUE,GAGxC,CAdL,CAgBA,MAAOE,GAASf,EAAM,CAAEzZ,MAAOwa,EAAU,CACjC,QACJ,IACQ1R,IAAOA,EAAGrJ,OAASiB,EAAK4G,EAAG0R,SAAStY,EAAG3B,KAAKuI,EACnD,CACO,QAAE,GAAImS,EAAK,MAAMA,EAAIzZ,KAAQ,CACxC,CACD,IACI,IAAK,IAAIgJ,EAAK9J,EAASoB,MAAMH,KAAK4Z,EAAIE,QAAS1N,EAAKvD,EAAGzJ,QAASgN,EAAG9M,KAAM8M,EAAKvD,EAAGzJ,OAAQ,CACjF4a,EAAQ5N,EAAG/M,MAC8B,KAAzC2R,EAAO8I,MAAMI,iBAAiBF,KAC9BD,EAASC,IAAS,EAEzB,CANL,CAQA,MAAOM,GAASf,EAAM,CAAE1Z,MAAOya,EAAU,CACjC,QACJ,IACQlO,IAAOA,EAAG9M,OAAS2H,EAAK4B,EAAGgQ,SAAS5R,EAAGrI,KAAKiK,EACnD,CACO,QAAE,GAAI0Q,EAAK,MAAMA,EAAI1Z,KAAQ,CACxC,CACJ,MAEG8Z,EAAK/Q,WAAWzJ,EAAEua,eAAiB7U,EAAmBoO,EAAM3O,IAAKnF,EAAE6R,OAAOnQ,QAAS1B,EAAEua,cAAera,GAExG,MAEJ,IAAK,YACDF,EAAEob,WAAWlG,SAAQ,SAAU/V,GAAK,OAAO2U,EAAMuH,QAAQlc,EAAGa,EAAE6R,WAC9D7R,EAAEsb,aAAapG,SAAQ,SAAU/V,GAC7B,IAAIoc,EAASzH,EAAMuB,OAAOlD,MAAMhT,GAC5BwX,EAAWxV,EAAanB,EAAE6R,QACxBiC,EAAMuB,OAAOlD,MAAMnS,EAAE6R,OAAOxQ,MAC5ByS,EAAMuB,OAAOlD,MAAMnS,EAAE6R,QACvBkD,EAAU/U,EAAE6R,OAAQiC,EAAMnM,aAAewN,EAAUhW,KAGnD2U,EAAM6D,SAASrF,IAAInT,IACnB0X,EAAW/C,EAAM6D,SAAUxY,GAC3B2U,EAAMgE,WAAW6B,IAAIxa,IAEhB2U,EAAM6D,SAASrF,IAAItS,EAAE6R,UAAuB,IAAZ0J,GAChCnG,EAAkBpV,EAAE6R,OAAQiC,EAAMuB,UAClCvB,EAAM+D,SAASvF,IAAInT,IACxB2U,EAAM4D,SAAShB,EAAQ6E,EAAQ5E,IAC/BE,EAAW/C,EAAM+D,SAAU1Y,GAG3B2U,EAAMoD,QAAQzW,KAAK,CACfkW,SAAUA,EACVpO,GAAIgT,EACJ5K,WAAUxP,EAAanB,EAAE6R,cAAiBrJ,KAGlDsL,EAAM2D,WAAWhX,KAAKtB,SAMtCQ,KAAK0b,QAAU,SAAUlc,EAAG0S,GACxB,IAAIA,IAAUkD,EAAUlD,EAAQiC,EAAMnM,YAAtC,CAGA,GAAIiP,EAAQzX,GAAI,CACZ,GAAIgW,EAAUhW,GACV,OAEJ2U,EAAM+D,SAAS8B,IAAIxa,GACnB,IAAIqc,EAAW,KACX3J,GAAU+E,EAAQ/E,KAClB2J,EAAW3J,EAAOxJ,KAAKE,IAEvBiT,IACA1H,EAAM4D,SAAShB,EAAQvX,EAAEkJ,KAAKE,GAAIiT,KAAa,EAEtD,MAEG1H,EAAM6D,SAASgC,IAAIxa,GACnB2U,EAAMgE,WAAWf,OAAO5X,GAEvB4V,EAAU5V,EAAG2U,EAAMnM,aACpBxI,EAAEyJ,WAAWsM,SAAQ,SAAU8B,GAAU,OAAOlD,EAAMuH,QAAQrE,KAnBjE,EAqBR,CAkDD,OAjDAK,EAAe9X,UAAUkc,KAAO,SAAUlU,GACtC,IAAIuM,EAAQnU,KACZ,CACI,aACA,aACA,gBACA,gBACA,mBACA,mBACA,mBACA,aACA,cACA,eACA,eACA,iBACA,MACA,SACA,gBACA,mBACA,iBACFuV,SAAQ,SAAU5B,GAChBQ,EAAMR,GAAO/L,EAAQ+L,OAG7B+D,EAAe9X,UAAUmc,OAAS,WAC9B/b,KAAK2X,QAAS,EACd3X,KAAKgc,cAAcD,UAEvBrE,EAAe9X,UAAUqc,SAAW,WAChCjc,KAAK2X,QAAS,EACd3X,KAAKgc,cAAcC,WACnBjc,KAAKuY,QAETb,EAAe9X,UAAUsc,SAAW,WAChC,OAAOlc,KAAK2X,QAEhBD,EAAe9X,UAAUuc,KAAO,WAC5Bnc,KAAK4X,QAAS,EACd5X,KAAKgc,cAAcG,QAEvBzE,EAAe9X,UAAUwc,OAAS,WAC9Bpc,KAAK4X,QAAS,EACd5X,KAAKgc,cAAcI,SACnBpc,KAAKuY,QAETb,EAAe9X,UAAUgT,MAAQ,WAC7B5S,KAAKuZ,iBAAiB3G,QACtB5S,KAAKgc,cAAcpJ,SAEhB8E,CACV,CAlZqB,GChFlB2E,GAAkB,GAClBC,GAAwD,oBAApBC,gBACpCC,GAAkD,oBAAjBC,aACjCC,GAAwD,oBAApBC,gBACpCC,GAA0D,oBAArBC,iBACzC,SAASC,GAAelH,GACpB,IACI,GAAI,iBAAkBA,EAAO,CACzB,IAAImH,EAAOnH,EAAMoH,eACjB,GAAID,EAAKrd,OACL,OAAOqd,EAAK,EAHpB,MAMK,GAAI,SAAUnH,GAASA,EAAMmH,KAAKrd,OACnC,OAAOkW,EAAMmH,KAAK,GAEtB,OAAOnH,EAAM1D,MAVjB,CAYA,MAAOzQ,GACH,OAAOmU,EAAM1D,MAChB,CACJ,CACD,SAAS+K,GAAqBrV,EAASsV,GACnC,IAAIzb,EAAI0G,EACJgV,EAAiB,IAAIzF,GACzB2E,GAAgBvb,KAAKqc,GACrBA,EAAerB,KAAKlU,GACpB,IAAIwV,EAAuBtJ,OAAOuJ,kBAC9BvJ,OAAOwJ,qBACPC,EAAqJ,QAAhIpV,EAA4E,QAAtE1G,EAAgB,OAAXqS,aAA8B,IAAXA,YAAoB,EAASA,OAAO0J,YAAyB,IAAP/b,OAAgB,EAASA,EAAGgc,kBAA+B,IAAPtV,OAAgB,EAASA,EAAGrI,KAAK2B,EAAI,oBAClM8b,GACAzJ,OAAOyJ,KACPH,EAAuBtJ,OAAOyJ,IAElC,IAAIG,EAAW,IAAIN,EAAqBD,EAAe/E,iBAAiBuF,KAAKR,IAS7E,OARAO,EAASE,QAAQV,EAAQ,CACrBpT,YAAY,EACZ+T,mBAAmB,EACnBC,eAAe,EACfC,uBAAuB,EACvBC,WAAW,EACXC,SAAS,IAENP,CACV,CAoDD,SAASQ,GAA6Bzc,GAClC,IAAI0c,EAAqB1c,EAAG0c,mBAAoB3Y,EAAM/D,EAAG+D,IAAKkQ,EAASjU,EAAGiU,OAAQ1N,EAAavG,EAAGuG,WAAYoW,EAAW3c,EAAG2c,SAC5H,IAAkC,IAA9BA,EAASC,iBACT,OAAO,WAAY,EAEvB,IAAIC,GAA2C,IAA9BF,EAASC,uBACQxV,IAA9BuV,EAASC,iBACP,CAAA,EACAD,EAASC,iBACXE,EAAW,GAgCf,OAXApf,OAAOqf,KAAKvZ,GACPoV,QAAO,SAAU1G,GAClB,OAAO8K,OAAOC,MAAMD,OAAO9K,MACtBA,EAAI/D,SAAS,eACM,IAApB0O,EAAW3K,EAClB,IACI4B,SAAQ,SAAUoJ,GACnB,IAAIC,EAAYD,EAASxc,cACrB0c,EA5BS,SAAUF,GACvB,OAAO,SAAU/I,GACb,IAAI1D,EAAS4K,GAAelH,GAC5B,IAAIR,EAAUlD,EAAQlK,GAAtB,CAGA,IAAIpH,EAAI+U,EAAaC,GAASA,EAAMC,eAAe,GAAKD,EACxD,GAAKhV,EAAL,CAGA,IAAIgI,EAAK8M,EAAOlD,MAAMN,GAClB4M,EAAUle,EAAEke,QAASC,EAAUne,EAAEme,QACrCZ,EAAmB,CACfnc,KAAMiD,EAAkB0Z,GACxB/V,GAAIA,EACJkC,EAAGgU,EACH9T,EAAG+T,GAPN,CAJA,GAuBSC,CAAWL,GACzBJ,EAASzd,KAAKkR,EAAG4M,EAAWC,EAASrZ,OAElC,WACH+Y,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CACD,SAASC,GAAmBzd,GACxB,IAAI0d,EAAW1d,EAAG0d,SAAU3Z,EAAM/D,EAAG+D,IAAKkQ,EAASjU,EAAGiU,OAAQ1N,EAAavG,EAAGuG,WAuB9E,OAAOgK,EAAG,SAtBWa,GAAS,SAAUuM,GACpC,IAAIlN,EAAS4K,GAAesC,GAC5B,GAAKlN,IAAUkD,EAAUlD,EAAQlK,GAAjC,CAGA,IAAIY,EAAK8M,EAAOlD,MAAMN,GACtB,GAAIA,IAAW1M,EAAK,CAChB,IAAI6Z,EAAY7Z,EAAI8Z,kBAAoB9Z,EAAIsP,gBAC5CqK,EAAS,CACLvW,GAAIA,EACJkC,EAAGuU,EAASnS,WACZlC,EAAGqU,EAASjS,WAEnB,MAEG+R,EAAS,CACLvW,GAAIA,EACJkC,EAAGoH,EAAOhF,WACVlC,EAAGkH,EAAO9E,WAdjB,CAiBJ,GAtBoG3L,EAAG2c,SAsB5FmB,QAAU,KACc/Z,EACvC,CAmBD,SAASga,GAA+BC,EAAGC,GACvC,IAAInf,EAAQrB,EAAS,CAAD,EAAKugB,GAGzB,OAFKC,UACMnf,EAAMof,cACVpf,CACV,CACD,IAAIqf,GAAa,CAAC,QAAS,WAAY,UACnCC,GAAoB,IAAIC,QAmF5B,SAASC,GAA0B7c,GAsB/B,OApBA,SAAiB8c,EAAW/Z,GACxB,GAAKqW,IACD0D,EAAUC,sBAAsB1D,iBAC/BC,IACGwD,EAAUC,sBAAsBxD,cACnCC,IACGsD,EAAUC,sBAAsBtD,iBACnCC,IACGoD,EAAUC,sBAAsBpD,iBAAmB,CACvD,IACIlG,EADQtV,MAAMH,KAAK8e,EAAUC,WAAWnd,UAC1ByB,QAAQyb,GAC1B/Z,EAAIia,QAAQvJ,EACf,KACI,CAEGA,EADQtV,MAAMH,KAAK8e,EAAUG,iBAAiBrd,UAChCyB,QAAQyb,GAC1B/Z,EAAIia,QAAQvJ,EACf,CACD,OAAO1Q,CACV,CACMma,CAAQld,EArBC,GAsBnB,CAqTD,SAASmd,GAAcngB,EAAGogB,GACtB,IAAI9H,EAAK/W,OACK,IAAV6e,IAAoBA,EAAQ,CAAA,GAChC,IAAIC,EAAgBrgB,EAAEsF,IAAIgb,YAC1B,IAAKD,EACD,OAAO,WAAY,GAtH3B,SAAoBrgB,EAAGogB,GACnB,IAAI/F,EAAara,EAAEqa,WAAYkG,EAAcvgB,EAAEugB,YAAatC,EAAqBje,EAAEie,mBAAoBgB,EAAWjf,EAAEif,SAAUuB,EAAmBxgB,EAAEwgB,iBAAkBC,EAAUzgB,EAAEygB,QAASC,EAAqB1gB,EAAE0gB,mBAAoBC,EAAmB3gB,EAAE2gB,iBAAkBC,EAAqB5gB,EAAE4gB,mBAAoBC,EAAmB7gB,EAAE6gB,iBAAkBC,EAAS9gB,EAAE8gB,OACzW9gB,EAAEqa,WAAa,WAEX,IADA,IAAI5a,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMW,UACNX,EAAMW,SAASlhB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAE7D4a,EAAWxa,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAE1DO,EAAEugB,YAAc,WAEZ,IADA,IAAI9gB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMY,WACNZ,EAAMY,UAAUnhB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAE9D8gB,EAAY1gB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAE3DO,EAAEie,mBAAqB,WAEnB,IADA,IAAIxe,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMjC,kBACNiC,EAAMjC,iBAAiBte,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAErEwe,EAAmBpe,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAElEO,EAAEif,SAAW,WAET,IADA,IAAIxf,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMf,QACNe,EAAMf,OAAOxf,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAE3Dwf,EAASpf,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAExDO,EAAEwgB,iBAAmB,WAEjB,IADA,IAAI/gB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMa,gBACNb,EAAMa,eAAephB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAEnE+gB,EAAiB3gB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAEhEO,EAAEygB,QAAU,WAER,IADA,IAAIhhB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMc,OACNd,EAAMc,MAAMrhB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAE1DghB,EAAQ5gB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAEvDO,EAAE0gB,mBAAqB,WAEnB,IADA,IAAIjhB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMe,iBACNf,EAAMe,gBAAgBthB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAEpEihB,EAAmB7gB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAElEO,EAAE2gB,iBAAmB,WAEjB,IADA,IAAIlhB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMgB,gBACNhB,EAAMgB,eAAevhB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAEnEkhB,EAAiB9gB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAEhEO,EAAE4gB,mBAAqB,WAEnB,IADA,IAAInhB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMiB,kBACNjB,EAAMiB,iBAAiBxhB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAErEmhB,EAAmB/gB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAElEO,EAAE6gB,iBAAmB,WAEjB,IADA,IAAIphB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMkB,gBACNlB,EAAMkB,eAAezhB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAEnEohB,EAAiBhhB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAEhEO,EAAE8gB,OAAS,WAEP,IADA,IAAIrhB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMmB,MACNnB,EAAMmB,KAAK1hB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAEzDqhB,EAAOjhB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,IAEzD,CAQG+hB,CAAWxhB,EAAGogB,GACd,IAAIqB,EAAmB1E,GAAqB/c,EAAGA,EAAEsF,KAC7Coc,EA3jBR,SAA0BngB,GACtB,IAAIgf,EAAchf,EAAGgf,YAAarC,EAAW3c,EAAG2c,SAAU5Y,EAAM/D,EAAG+D,IAAKkQ,EAASjU,EAAGiU,OACpF,IAA2B,IAAvB0I,EAAS8C,UACT,OAAO,WAAY,EAEvB,IAKIW,EALAC,EAA0C,iBAAvB1D,EAAS8C,UAAyB9C,EAAS8C,UAAY,GAC1Ea,EAA0D,iBAA/B3D,EAAS4D,kBAClC5D,EAAS4D,kBACT,IACFC,EAAY,GAEZC,EAAYrP,GAAS,SAAUwB,GAC/B,IAAI8N,EAAc/O,KAAKD,MAAQ0O,EAC/BpB,EAAYwB,EAAUlf,KAAI,SAAUpD,GAEhC,OADAA,EAAEyiB,YAAcD,EACTxiB,KACP0U,GACJ4N,EAAY,GACZJ,EAAe,IAPK,GAQrBE,GACCM,EAAiBxP,GAAS,SAAUuM,GACpC,IAAIlN,EAAS4K,GAAesC,GACxB3d,EAAKkU,EAAayJ,GAChBA,EAAIvJ,eAAe,GACnBuJ,EAAKN,EAAUrd,EAAGqd,QAASC,EAAUtd,EAAGsd,QACzC8C,IACDA,EAAezO,KAAKD,OAExB8O,EAAUnhB,KAAK,CACXgK,EAAGgU,EACH9T,EAAG+T,EACHnW,GAAI8M,EAAOlD,MAAMN,GACjBkQ,WAAYhP,KAAKD,MAAQ0O,IAE7BK,EAA+B,oBAAdI,WAA6BlD,aAAekD,UACvDtd,EAAkBud,KAClBnD,aAAeoD,WACXxd,EAAkByd,UAClBzd,EAAkB0d,UAlBH,GAmB1BZ,EAAW,CACVrO,UAAU,IAEV8K,EAAW,CACXvM,EAAG,YAAaqQ,EAAgB7c,GAChCwM,EAAG,YAAaqQ,EAAgB7c,GAChCwM,EAAG,OAAQqQ,EAAgB7c,IAE/B,OAAO,WACH+Y,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CAygB0B0D,CAAiBziB,GACpC0iB,EAA0B1E,GAA6Bhe,GACvD2iB,EAAgB3D,GAAmBhf,GACnC4iB,EApcR,SAAoCrhB,GAChC,IAAIif,EAAmBjf,EAAGif,iBACtBqC,GAAS,EACTC,GAAS,EAab,OAAOhR,EAAG,SAZYa,GAAS,WAC3B,IAAI5H,EAAS2J,IACT7J,EAAQkK,IACR8N,IAAU9X,GAAU+X,IAAUjY,IAC9B2V,EAAiB,CACb3V,MAAO0T,OAAO1T,GACdE,OAAQwT,OAAOxT,KAEnB8X,EAAQ9X,EACR+X,EAAQjY,EATc,GAW3B,KACkC+I,OACxC,CAmb+BmP,CAA2B/iB,GACnDgjB,EA3aR,SAA2BzhB,GACvB,IAAIkf,EAAUlf,EAAGkf,QAASnb,EAAM/D,EAAG+D,IAAKkQ,EAASjU,EAAGiU,OAAQ1N,EAAavG,EAAGuG,WAAYmb,EAAc1hB,EAAG0hB,YAAarhB,EAAmBL,EAAGK,iBAAkBG,EAAcR,EAAGQ,YAAamc,EAAW3c,EAAG2c,SAAUgF,EAAuB3hB,EAAG2hB,qBAC9O,SAASC,EAAazN,GAClB,IAAI1D,EAAS4K,GAAelH,GACxB+J,EAAgB/J,EAAM0N,UAG1B,GAFIpR,GAA6B,WAAnBA,EAAOnQ,UACjBmQ,EAASA,EAAOqR,eACfrR,GACAA,EAAOnQ,WACR6d,GAAWrb,QAAQ2N,EAAOnQ,SAAW,KACrCqT,EAAUlD,EAAQlK,GAHtB,CAMA,IAAIhG,EAAOkQ,EAAOlQ,KAClB,IAAIkQ,EAAO9K,UAAUC,SAAS8b,GAA9B,CAGA,IAAIjhB,EAAOgQ,EAAO3R,MACdijB,GAAY,EACH,UAATxhB,GAA6B,aAATA,EACpBwhB,EAAYtR,EAAO1H,SAEd1I,EAAiBoQ,EAAOnQ,QAAQI,gBACrCL,EAAiBE,MACjBE,EAAOL,EAAe,CAClBC,iBAAkBA,EAClBC,QAASmQ,EAAOnQ,QAChBC,KAAMA,EACNzB,MAAO2B,EACPD,YAAaA,KAGrBwhB,EAAYvR,EAAQsN,GAA+B,CAAEtd,KAAMA,EAAMshB,UAAWA,EAAW7D,cAAeA,GAAiByD,IACvH,IAAIpd,EAAOkM,EAAOlM,KACL,UAAThE,GAAoBgE,GAAQwd,GAC5Bhe,EACKke,iBAAiB,6BAAgCniB,OAAOyE,EAAM,OAC9DuP,SAAQ,SAAUxN,GACfA,IAAOmK,GACPuR,EAAY1b,EAAIyX,GAA+B,CAC3Ctd,KAAM6F,EAAGxH,MACTijB,WAAYA,EACZ7D,eAAe,GAChByD,MA3Bd,CAJA,CAmCJ,CACD,SAASK,EAAYvR,EAAQuN,GACzB,IAAIkE,EAAiB9D,GAAkB1J,IAAIjE,GAC3C,IAAKyR,GACDA,EAAezhB,OAASud,EAAEvd,MAC1ByhB,EAAeH,YAAc/D,EAAE+D,UAAW,CAC1C3D,GAAkB3L,IAAIhC,EAAQuN,GAC9B,IAAI7W,EAAK8M,EAAOlD,MAAMN,GACtByO,EAAQzhB,EAASA,EAAS,CAAD,EAAKugB,GAAI,CAAE7W,GAAIA,IAC3C,CACJ,CACD,IACI2V,GAD4B,SAAnBH,EAASgD,MAAmB,CAAC,UAAY,CAAC,QAAS,WAC1Cre,KAAI,SAAU6b,GAAa,OAAO5M,EAAG4M,EAAWyE,EAAc7d,EAAO,IACvFoe,EAAqBzkB,OAAO6U,yBAAyB6P,iBAAiBjkB,UAAW,SACjFkkB,EAAiB,CACjB,CAACD,iBAAiBjkB,UAAW,SAC7B,CAACikB,iBAAiBjkB,UAAW,WAC7B,CAACmkB,kBAAkBnkB,UAAW,SAC9B,CAACokB,oBAAoBpkB,UAAW,SAChC,CAACmkB,kBAAkBnkB,UAAW,iBAC9B,CAACqkB,kBAAkBrkB,UAAW,aAWlC,OATIgkB,GAAsBA,EAAmB1P,KACzCqK,EAASzd,KAAKf,MAAMwe,EAAUvd,EAAc,GAAIN,EAAOojB,EAAe/gB,KAAI,SAAUpD,GAChF,OAAO+T,EAAW/T,EAAE,GAAIA,EAAE,GAAI,CAC1BuU,IAAK,WACDmP,EAAa,CAAEnR,OAAQlS,MAC1B,GAER,MAAI,IAEF,WACHue,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CA0VsBiF,CAAkBhkB,GACjCikB,EArMR,SAAsC1iB,GAClC,IAAImf,EAAqBnf,EAAGmf,mBAAoB5Y,EAAavG,EAAGuG,WAAY0N,EAASjU,EAAGiU,OAAQ0I,EAAW3c,EAAG2c,SAC1GS,EAAU,SAAU7c,GACpB,OAAO6Q,GAAS,SAAU+C,GACtB,IAAI1D,EAAS4K,GAAelH,GAC5B,GAAK1D,IAAUkD,EAAUlD,EAAQlK,GAAjC,CAGA,IAAIvG,EAAKyQ,EAAQjF,EAAcxL,EAAGwL,YAAamX,EAAS3iB,EAAG2iB,OAAQC,EAAQ5iB,EAAG4iB,MAC9EzD,EAAmB,CACf5e,KAAMA,EACN4G,GAAI8M,EAAOlD,MAAMN,GACjBjF,YAAaA,EACbmX,OAAQA,EACRC,MAAOA,GAPV,CASJ,GAAEjG,EAASkG,OAAS,MAErB/F,EAAW,CACXvM,EAAG,OAAQ6M,EAAQ,IACnB7M,EAAG,QAAS6M,EAAQ,IACpB7M,EAAG,SAAU6M,EAAQ,IACrB7M,EAAG,eAAgB6M,EAAQ,KAE/B,OAAO,WACHN,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CA0KiCsF,CAA6BrkB,GACvDskB,EAnUR,SAAgC/iB,EAAI0G,GAChC,IAAI0Y,EAAmBpf,EAAGof,iBAAkBnL,EAASjU,EAAGiU,OACpDvE,EAAMhJ,EAAGgJ,IACTsT,EAAatT,EAAIuT,cAAc9kB,UAAU6kB,WAC7CtT,EAAIuT,cAAc9kB,UAAU6kB,WAAa,SAAUvhB,EAAMyT,GACrD,IAAI/N,EAAK8M,EAAOlD,MAAMxS,KAAK2kB,WAO3B,OANY,IAAR/b,GACAiY,EAAiB,CACbjY,GAAIA,EACJ8P,KAAM,CAAC,CAAExV,KAAMA,EAAMyT,MAAOA,MAG7B8N,EAAW1kB,MAAMC,KAAMP,YAElC,IAAImlB,EAAazT,EAAIuT,cAAc9kB,UAAUglB,WAC7CzT,EAAIuT,cAAc9kB,UAAUglB,WAAa,SAAUjO,GAC/C,IAAI/N,EAAK8M,EAAOlD,MAAMxS,KAAK2kB,WAO3B,OANY,IAAR/b,GACAiY,EAAiB,CACbjY,GAAIA,EACJ2O,QAAS,CAAC,CAAEZ,MAAOA,MAGpBiO,EAAW7kB,MAAMC,KAAMP,YAElC,IAAIolB,EAA8B,CAAA,EAC9BvI,GACAuI,EAA4BtI,gBAAkBpL,EAAIoL,iBAG9CC,KACAqI,EAA4BpI,aAAetL,EAAIsL,cAE/CG,KACAiI,EAA4BhI,iBAAmB1L,EAAI0L,kBAEnDH,KACAmI,EAA4BlI,gBAAkBxL,EAAIwL,kBAG1D,IAAImI,EAAsB,CAAA,EAmC1B,OAlCA3lB,OAAO4lB,QAAQF,GAA6BtP,SAAQ,SAAU9T,GAC1D,IAAI0G,EAAKzH,EAAOe,EAAI,GAAIujB,EAAU7c,EAAG,GAAInG,EAAOmG,EAAG,GACnD2c,EAAoBE,GAAW,CAC3BP,WAAYziB,EAAKpC,UAAU6kB,WAC3BG,WAAY5iB,EAAKpC,UAAUglB,YAE/B5iB,EAAKpC,UAAU6kB,WAAa,SAAUvhB,EAAMyT,GACxC,IAAI/N,EAAK8M,EAAOlD,MAAMxS,KAAKmgB,iBAAiBwE,WAc5C,OAbY,IAAR/b,GACAiY,EAAiB,CACbjY,GAAIA,EACJ8P,KAAM,CACF,CACIxV,KAAMA,EACNyT,MAAO3V,EAAcA,EAAc,GAAIN,EAAOqf,GAA0B/f,QAAQ,GAAQ,CACpF2W,GAAS,IACV,OAKZmO,EAAoBE,GAASP,WAAW1kB,MAAMC,KAAMP,YAE/DuC,EAAKpC,UAAUglB,WAAa,SAAUjO,GAClC,IAAI/N,EAAK8M,EAAOlD,MAAMxS,KAAKmgB,iBAAiBwE,WAO5C,OANY,IAAR/b,GACAiY,EAAiB,CACbjY,GAAIA,EACJ2O,QAAS,CAAC,CAAEZ,MAAO3V,EAAcA,EAAc,GAAIN,EAAOqf,GAA0B/f,QAAQ,GAAQ,CAAC2W,IAAQ,OAG9GmO,EAAoBE,GAASJ,WAAW7kB,MAAMC,KAAMP,eAG5D,WACH0R,EAAIuT,cAAc9kB,UAAU6kB,WAAaA,EACzCtT,EAAIuT,cAAc9kB,UAAUglB,WAAaA,EACzCzlB,OAAO4lB,QAAQF,GAA6BtP,SAAQ,SAAU9T,GAC1D,IAAI0G,EAAKzH,EAAOe,EAAI,GAAIujB,EAAU7c,EAAG,GAAInG,EAAOmG,EAAG,GACnDnG,EAAKpC,UAAU6kB,WAAaK,EAAoBE,GAASP,WACzDziB,EAAKpC,UAAUglB,WAAaE,EAAoBE,GAASJ,cAGpE,CA+O4BK,CAAuB/kB,EAAG,CAAEiR,IAAKoP,IACtD2E,EA/OR,SAAsCzjB,EAAI0G,GACtC,IAAI2Y,EAAqBrf,EAAGqf,mBAAoBpL,EAASjU,EAAGiU,OACxDvE,EAAMhJ,EAAGgJ,IACTgU,EAAchU,EAAIiU,oBAAoBxlB,UAAUulB,YACpDhU,EAAIiU,oBAAoBxlB,UAAUulB,YAAc,SAAUnV,EAAUzP,EAAO8kB,GACvE,IAAI5jB,EAAI0G,EACJS,EAAK8M,EAAOlD,MAAiG,QAA1FrK,EAAgC,QAA1B1G,EAAKzB,KAAKigB,kBAA+B,IAAPxe,OAAgB,EAASA,EAAG0e,wBAAqC,IAAPhY,OAAgB,EAASA,EAAGwc,WAYrJ,OAXY,IAAR/b,GACAkY,EAAmB,CACflY,GAAIA,EACJsL,IAAK,CACDlE,SAAUA,EACVzP,MAAOA,EACP8kB,SAAUA,GAEd1O,MAAOoJ,GAA0B/f,KAAKigB,cAGvCkF,EAAYplB,MAAMC,KAAMP,YAEnC,IAAI6lB,EAAiBnU,EAAIiU,oBAAoBxlB,UAAU0lB,eAevD,OAdAnU,EAAIiU,oBAAoBxlB,UAAU0lB,eAAiB,SAAUtV,GACzD,IAAIvO,EAAI0G,EACJS,EAAK8M,EAAOlD,MAAiG,QAA1FrK,EAAgC,QAA1B1G,EAAKzB,KAAKigB,kBAA+B,IAAPxe,OAAgB,EAASA,EAAG0e,wBAAqC,IAAPhY,OAAgB,EAASA,EAAGwc,WAUrJ,OATY,IAAR/b,GACAkY,EAAmB,CACflY,GAAIA,EACJ2c,OAAQ,CACJvV,SAAUA,GAEd2G,MAAOoJ,GAA0B/f,KAAKigB,cAGvCqF,EAAevlB,MAAMC,KAAMP,YAE/B,WACH0R,EAAIiU,oBAAoBxlB,UAAUulB,YAAcA,EAChDhU,EAAIiU,oBAAoBxlB,UAAU0lB,eAAiBA,EAE1D,CAwMkCE,CAA6BtlB,EAAG,CAC3DiR,IAAKoP,IAELkF,EAAevlB,EAAEwlB,aA9KzB,SAA0BjkB,GACtB,IAAIuf,EAASvf,EAAGuf,OAAQxb,EAAM/D,EAAG+D,IAC7B2L,EAAM3L,EAAIgb,YACd,IAAKrP,EACD,OAAO,WAAY,EAEvB,IAAIoN,EAAW,GACXoH,EAAU,IAAI7F,QACd8F,EAAmBzU,EAAI0U,SAC3B1U,EAAI0U,SAAW,SAAkBC,EAAQzR,EAAQ0R,GAC7C,IAAIC,EAAW,IAAIJ,EAAiBE,EAAQzR,EAAQ0R,GAUpD,OATAJ,EAAQzR,IAAI8R,EAAU,CAClBF,OAAQA,EACRta,OAA0B,iBAAX6I,EACf0R,YAAaA,EACbE,WAA8B,iBAAX5R,EACbA,EAEE6R,KAAKC,UAAU9kB,MAAMH,KAAK,IAAIklB,WAAW/R,OAE9C2R,GAEX,IAAIK,EAAiBjS,EAAM5O,EAAI8gB,MAAO,OAAO,SAAUvS,GACnD,OAAO,SAAUiS,GAQb,OAPAtU,YAAW,WACP,IAAI/R,EAAIgmB,EAAQxP,IAAI6P,GAChBrmB,IACAqhB,EAAOrhB,GACPgmB,EAAQvO,OAAO4O,GAJb,GAMP,GACIjS,EAAShU,MAAMC,KAAM,CAACgmB,IAEpC,IAKD,OAJAzH,EAASzd,MAAK,WACVqQ,EAAI0U,SAAWD,KAEnBrH,EAASzd,KAAKulB,GACP,WACH9H,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CAqIuCsH,CAAiBrmB,GAAK,aACtDsmB,EAAiB,GACrB,IACI,IAAK,IAAIre,EAAKlI,EAASC,EAAEumB,SAAUpe,EAAKF,EAAG7H,QAAS+H,EAAG7H,KAAM6H,EAAKF,EAAG7H,OAAQ,CACzE,IAAIomB,EAASre,EAAG9H,MAChBimB,EAAe1lB,KAAK4lB,EAAOhJ,SAASgJ,EAAOC,SAAUpG,EAAemG,EAAO9e,SAC9E,CAJL,CAMA,MAAOkS,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQzR,IAAOA,EAAG7H,OAASiB,EAAK0G,EAAG4R,SAAStY,EAAG3B,KAAKqI,EACnD,CACO,QAAE,GAAIqQ,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CACD,OAAO,WACHsb,GAAgB9G,SAAQ,SAAUqR,GAAK,OAAOA,EAAEhU,WAChD+O,EAAiBkF,aACjBjF,IACAgB,IACAC,IACAC,IACAI,IACAiB,IACAK,IACAU,IACAO,IACAe,EAAejR,SAAQ,SAAU0J,GAAK,OAAOA,OAEpD,CCrpBD,IAAI6H,GAAiB,WACjB,SAASA,EAAclf,GACnB5H,KAAK+mB,QAAU,IAAIjH,QACnB9f,KAAKua,WAAa3S,EAAQ2S,UAC7B,CAwBD,OAvBAuM,EAAclnB,UAAU0Z,UAAY,SAAUrI,GAC1CjR,KAAK+mB,QAAQ7S,IAAIjD,GAAU,IAE/B6V,EAAclnB,UAAUonB,gBAAkB,SAAUC,GAChDjnB,KAAKknB,aAAeD,GAExBH,EAAclnB,UAAU+Z,aAAe,SAAU1I,EAAUyI,GACvD,IAAIjY,EACJzB,KAAKua,WAAW,CACZ7B,KAAM,CACF,CACI1B,SAAU/F,EAASvI,KAAKE,GACxBkQ,OAAQ,KACR/R,KAAM2S,IAGdnC,QAAS,GACTM,MAAO,GACP/N,WAAY,GACZqd,gBAAgB,IAES,QAA5B1lB,EAAKzB,KAAKknB,oBAAiC,IAAPzlB,GAAyBA,EAAG3B,KAAKE,KAAMiR,IAEzE6V,CACV,CA7BoB,GCIjBM,GAAoB,WACpB,SAASA,EAAiBxf,GACtB5H,KAAKqnB,eAAiB,GACtBrnB,KAAKua,WAAa3S,EAAQ2S,WAC1Bva,KAAKmf,SAAWvX,EAAQuX,SACxBnf,KAAK0Q,cAAgB9I,EAAQ8I,cAC7B1Q,KAAK0V,OAAS9N,EAAQ8N,OACtB,IAAI4R,EAAUtnB,KACdA,KAAKqnB,eAAevmB,KAAKsT,EAAMmT,YAAY3nB,UAAW,gBAAgB,SAAUmU,GAC5E,OAAO,WACH,IAAInS,EAAamS,EAAShU,MAAMC,KAAMP,WAGtC,OAFIO,KAAK4B,YACL0lB,EAAQ9N,cAAcxZ,KAAK4B,WAAY5B,KAAKwnB,eACzC5lB,EALe,IAQjC,CAqBD,OApBAwlB,EAAiBxnB,UAAU4Z,cAAgB,SAAU5X,EAAY4D,GAC7DyX,GAAqB/d,EAASA,EAAS,CAAD,EAAKc,KAAK0Q,eAAgB,CAAElL,IAAKA,EAAK+U,WAAYva,KAAKua,WAAY7E,OAAQ1V,KAAK0V,OAAQ6D,iBAAkBvZ,OAAS4B,GACzJsd,GAAmBhgB,EAASA,EAAS,CAAD,EAAKc,KAAK0Q,eAAgB,CAAEyO,SAAUnf,KAAKmf,SAAU3Z,IAAK5D,EAAY8T,OAAQ1V,KAAK0V,WAE3H0R,EAAiBxnB,UAAUga,oBAAsB,SAAU6N,GACvD,GAAIA,EAAcrW,cAAe,CAC7B,IAAIsW,EAAY1nB,KAChBA,KAAKqnB,eAAevmB,KAAKsT,EAAMqT,EAAcrW,cAAcmW,YAAY3nB,UAAW,gBAAgB,SAAUmU,GACxG,OAAO,WACH,IAAInS,EAAamS,EAAShU,MAAMC,KAAMP,WAGtC,OAFIO,KAAK4B,YACL8lB,EAAUlO,cAAcxZ,KAAK4B,WAAY6lB,EAAc7Z,iBACpDhM,EALe,IAQjC,GAELwlB,EAAiBxnB,UAAUgT,MAAQ,WAC/B5S,KAAKqnB,eAAe9R,SAAQ,SAAUoS,GAAgB,OAAOA,QAE1DP,CACV,CAtCuB,GCIxB,IAHA,IAAIhhB,GAAQ,mEAERwhB,GAA+B,oBAAfxB,WAA6B,GAAK,IAAIA,WAAW,KAC5D7mB,GAAI,EAAGA,GAAI6G,GAAM1G,OAAQH,KAC9BqoB,GAAOxhB,GAAMyhB,WAAWtoB,KAAMA,GAElC,IAAIuoB,GAAS,SAAUC,GACnB,IAAyCxoB,EAArCyoB,EAAQ,IAAI5B,WAAW2B,GAAiBE,EAAMD,EAAMtoB,OAAQwoB,EAAS,GACzE,IAAK3oB,EAAI,EAAGA,EAAI0oB,EAAK1oB,GAAK,EACtB2oB,GAAU9hB,GAAM4hB,EAAMzoB,IAAM,GAC5B2oB,GAAU9hB,IAAmB,EAAX4hB,EAAMzoB,KAAW,EAAMyoB,EAAMzoB,EAAI,IAAM,GACzD2oB,GAAU9hB,IAAuB,GAAf4hB,EAAMzoB,EAAI,KAAY,EAAMyoB,EAAMzoB,EAAI,IAAM,GAC9D2oB,GAAU9hB,GAAqB,GAAf4hB,EAAMzoB,EAAI,IAQ9B,OANI0oB,EAAM,GAAM,EACZC,EAASA,EAAO3hB,UAAU,EAAG2hB,EAAOxoB,OAAS,GAAK,IAE7CuoB,EAAM,GAAM,IACjBC,EAASA,EAAO3hB,UAAU,EAAG2hB,EAAOxoB,OAAS,GAAK,MAE/CwoB,CACV,ECvBGC,GAAc,IAAIC,IAYtB,IAAIC,GAAe,SAAU9nB,EAAO4Q,EAAKvG,GACrC,GAAKrK,IACC+nB,GAAwB/nB,EAAO4Q,IAAyB,WAAjBoX,EAAOhoB,IADpD,CAGA,IACIioB,EAhBR,SAAyB5d,EAAK6d,GAC1B,IAAIC,EAAaP,GAAYhS,IAAIvL,GAQjC,OAPK8d,IACDA,EAAa,IAAIN,IACjBD,GAAYjU,IAAItJ,EAAK8d,IAEpBA,EAAW/V,IAAI8V,IAChBC,EAAWxU,IAAIuU,EAAM,IAElBC,EAAWvS,IAAIsS,EACzB,CAMcE,CAAgB/d,EADhBrK,EAAMqoB,YAAY5iB,MAEzB2Q,EAAQ6R,EAAKjkB,QAAQhE,GAKzB,OAJe,IAAXoW,IACAA,EAAQ6R,EAAK9oB,OACb8oB,EAAK1nB,KAAKP,IAEPoW,CARH,CASP,EACD,SAASkS,GAAatoB,EAAO4Q,EAAKvG,GAC9B,OAAIrK,aAAiBc,MACVd,EAAMwC,KAAI,SAAUmQ,GAAO,OAAO2V,GAAa3V,EAAK/B,EAAKvG,EAAO,IAExD,OAAVrK,EACEA,EAEFA,aAAiBuoB,cACtBvoB,aAAiBwoB,cACjBxoB,aAAiByoB,YACjBzoB,aAAiB6K,aACjB7K,aAAiB6lB,YACjB7lB,aAAiB0oB,aACjB1oB,aAAiB2oB,YACjB3oB,aAAiB4oB,WACjB5oB,aAAiB6oB,kBAEV,CACHC,QAFS9oB,EAAMqoB,YAAY5iB,KAG3BwN,KAAM,CAACrU,OAAOmqB,OAAO/oB,KAGpBA,aAAiBgpB,YAGf,CACHF,QAHS9oB,EAAMqoB,YAAY5iB,KAI3BkiB,OAHSJ,GAAOvnB,IAMfA,aAAiBipB,SAEf,CACHH,QAFS9oB,EAAMqoB,YAAY5iB,KAG3BwN,KAAM,CACFqV,GAAatoB,EAAMiL,OAAQ2F,EAAKvG,GAChCrK,EAAMkpB,WACNlpB,EAAMmpB,aAITnpB,aAAiBopB,iBAGf,CACHN,QAHS9oB,EAAMqoB,YAAY5iB,KAI3B2H,IAHMpN,EAAMoN,KAMXpN,aAAiBqpB,UAEf,CACHP,QAFS9oB,EAAMqoB,YAAY5iB,KAG3BwN,KAAM,CAACqV,GAAatoB,EAAMgL,KAAM4F,EAAKvG,GAAMrK,EAAMwK,MAAOxK,EAAM0K,SAG7Dqd,GAAwB/nB,EAAO4Q,IAAyB,WAAjBoX,EAAOhoB,GAG5C,CACH8oB,QAHS9oB,EAAMqoB,YAAY5iB,KAI3B2Q,MAHQ0R,GAAa9nB,EAAO4Q,EAAKvG,IAMlCrK,CACV,CACD,IAAIspB,GAAgB,SAAUrW,EAAMrC,EAAKvG,GACrC,OAAO5J,EAAc,GAAIN,EAAO8S,IAAO,GAAOzQ,KAAI,SAAUmQ,GAAO,OAAO2V,GAAa3V,EAAK/B,EAAKvG,EAAO,GAC3G,EACG0d,GAA0B,SAAU/nB,EAAO4Q,GAC3C,IAaI2Y,EAbwB,CACxB,kBACA,cACA,mBACA,eACA,oBACA,cACA,6BACA,eACA,uBACA,yBACA,6BAEuDzP,QAAO,SAAUrU,GAAQ,MAA4B,mBAAdmL,EAAInL,EAAuB,IAC7H,OAAOrE,QAAQmoB,EAA+B3f,MAAK,SAAUnE,GAAQ,OAAOzF,aAAiB4Q,EAAInL,EAAlF,IAClB,EC5GD,SAAS+jB,GAAiBnqB,EAAWoC,EAAMilB,EAAIjf,EAAY0N,EAAQvE,GAC/D,IAAIqH,EAAK/W,EACL8c,EAAW,GACXyL,EAAQ7qB,OAAO8qB,oBAAoBrqB,GACnCsqB,EAAU,SAAU9T,GACpB,IACI,GAA+B,mBAApBxW,EAAUwW,GACjB,MAAO,WAEX,IAAIiQ,EAAiBjS,EAAMxU,EAAWwW,GAAM,SAAUrC,GAClD,OAAO,WAEH,IADA,IAAIP,EAAO,GACF5O,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpC4O,EAAK5O,GAAMnF,UAAUmF,GAEzB,IAAIulB,EAASpW,EAAShU,MAAMC,KAAMwT,GAElC,GADA6U,GAAa8B,EAAQhZ,EAAKvR,IACrBwV,EAAUpV,KAAK2K,OAAQ3C,GAAa,CAC5B0N,EAAOlD,MAAMxS,KAAK2K,QAA3B,IACIyf,EAAaP,GAAc7oB,EAAc,GAAIN,EAAO8S,IAAO,GAAQrC,EAAKvR,GACxEqhB,EAAW,CACXjf,KAAMA,EACNgO,SAAUoG,EACV5C,KAAM4W,GAEVnD,EAAGjnB,KAAK2K,OAAQsW,EACnB,CACD,OAAOkJ,EAEd,IACD5L,EAASzd,KAAKulB,EAzBlB,CA2BA,MAAOle,GACH,IAAIkiB,EAAc3W,EAAW9T,EAAWwW,EAAM,CAC1ClC,IAAK,SAAUuL,GACXwH,EAAGjnB,KAAK2K,OAAQ,CACZ3I,KAAMA,EACNgO,SAAUoG,EACV5C,KAAM,CAACiM,GACP6K,QAAQ,GAEf,IAEL/L,EAASzd,KAAKupB,EACjB,GAEL,IACI,IAAK,IAAIE,EAAUtqB,EAAS+pB,GAAQQ,EAAYD,EAAQjqB,QAASkqB,EAAUhqB,KAAMgqB,EAAYD,EAAQjqB,OAAQ,CAEzG4pB,EADWM,EAAUjqB,MAExB,CAJL,CAMA,MAAOuZ,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQ0Q,IAAcA,EAAUhqB,OAASiB,EAAK8oB,EAAQxQ,SAAStY,EAAG3B,KAAKyqB,EACtE,CACO,QAAE,GAAI/R,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CACD,OAAOwd,CACV,CC5DD,ICOIkM,GACAC,GDRAC,GAAiB,WACjB,SAASA,EAAc/iB,GACnB5H,KAAK4qB,uBAAyB,IAAIxC,IAClCpoB,KAAK6qB,UAAY,CAAEC,SAAU,EAAGC,SAAU,MAC1C/qB,KAAK2X,QAAS,EACd3X,KAAK4X,QAAS,EACd5X,KAAKsY,gBAAkB,SAAUpG,EAAQ+O,KACtBjhB,KAAK6qB,UAAUE,UAC1B/qB,KAAK6qB,UAAUC,WAAa9qB,KAAK6qB,UAAUE,WAC9B/qB,KAAK6qB,UAAUE,WAC5B/qB,KAAK6qB,UAAUE,SAAW/qB,KAAK6qB,UAAUC,UACxC9qB,KAAK4qB,uBAAuBjY,IAAIT,IACjClS,KAAK4qB,uBAAuB1W,IAAIhC,EAAQ,IAE5ClS,KAAK4qB,uBAAuBzU,IAAIjE,GAAQpR,KAAKmgB,IAEjDjhB,KAAKua,WAAa3S,EAAQ2S,WAC1Bva,KAAK0V,OAAS9N,EAAQ8N,QACO,IAAzB9N,EAAQY,cACRxI,KAAKgrB,2BAA2BpjB,EAAQuJ,IAAKvJ,EAAQI,WAC5D,CAgED,OA/DA2iB,EAAc/qB,UAAUgT,MAAQ,WAC5B5S,KAAK4qB,uBAAuBK,QAC5BjrB,KAAKkrB,gBAAkBlrB,KAAKkrB,kBAEhCP,EAAc/qB,UAAUmc,OAAS,WAC7B/b,KAAK2X,QAAS,GAElBgT,EAAc/qB,UAAUqc,SAAW,WAC/Bjc,KAAK2X,QAAS,GAElBgT,EAAc/qB,UAAUuc,KAAO,WAC3Bnc,KAAK4X,QAAS,GAElB+S,EAAc/qB,UAAUwc,OAAS,WAC7Bpc,KAAK4X,QAAS,GAElB+S,EAAc/qB,UAAUorB,2BAA6B,SAAU7Z,EAAKnJ,GAChEhI,KAAKmrB,uBACLnrB,KAAKorB,oCACL,IAAIC,EE1CZ,SAAmCla,EAAKnJ,GACpC,IAAIuW,EAAW,GACf,IACI,IAAI8H,EAAiBjS,EAAMjD,EAAIma,kBAAkB1rB,UAAW,cAAc,SAAUmU,GAChF,OAAO,SAAUwX,GAEb,IADA,IAAI/X,EAAO,GACF5O,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpC4O,EAAK5O,EAAK,GAAKnF,UAAUmF,GAM7B,OAJKwQ,EAAUpV,KAAMgI,IACX,cAAehI,OACjBA,KAAK0K,UAAY6gB,GAElBxX,EAAShU,MAAMC,KAAMgB,EAAc,CAACuqB,GAAc7qB,EAAO8S,IAAO,IAE9E,IACD+K,EAASzd,KAAKulB,EAdlB,CAgBA,MAAO5kB,GACHgL,QAAQ1L,MAAM,yDACjB,CACD,OAAO,WACHwd,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CFkBgCuM,CAA0Bra,EAAKnJ,GACpDyjB,EG1CZ,SAAsCxE,EAAI9V,EAAKnJ,EAAY0N,GACvD,IAAI8C,EAAK/W,EACL8c,EAAW,GACXmN,EAAUvsB,OAAO8qB,oBAAoB9Y,EAAIwa,yBAAyB/rB,WAClEsqB,EAAU,SAAU9T,GACpB,IACI,GAA4D,mBAAjDjF,EAAIwa,yBAAyB/rB,UAAUwW,GAC9C,MAAO,WAEX,IAAIiQ,EAAiBjS,EAAMjD,EAAIwa,yBAAyB/rB,UAAWwW,GAAM,SAAUrC,GAC/E,OAAO,WAGH,IAFA,IAAII,EAAQnU,KACRwT,EAAO,GACF5O,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpC4O,EAAK5O,GAAMnF,UAAUmF,GAsBzB,OApBKwQ,EAAUpV,KAAK2K,OAAQ3C,IACxB0J,YAAW,WACP,IAAI0Y,EAAappB,EAAc,GAAIN,EAAO8S,IAAO,GACjD,GAAa,cAAT4C,GACIgU,EAAW,IACXA,EAAW,aAAckB,kBAAmB,CAC5C,IAAI3gB,EAASyf,EAAW,GACpBxf,EAAMD,EAAOE,WAAW,MACxB+gB,EAAOhhB,aAAiC,EAASA,EAAIM,aAAa,EAAG,EAAGP,EAAOI,MAAOJ,EAAOM,QAC7F4gB,EAAMD,aAAmC,EAASA,EAAKrgB,KAC3D6e,EAAW,GAAKlE,KAAKC,UAAU0F,EAClC,CAEL5E,EAAG9S,EAAMxJ,OAAQ,CACb3I,KAAMkD,EAAc,MACpB8K,SAAUoG,EACV5C,KAAM4W,GAfJ,GAiBP,GAEArW,EAAShU,MAAMC,KAAMwT,GAEnC,IACD+K,EAASzd,KAAKulB,EAlClB,CAoCA,MAAOle,GACH,IAAIkiB,EAAc3W,EAAWvC,EAAIwa,yBAAyB/rB,UAAWwW,EAAM,CACvElC,IAAK,SAAUuL,GACXwH,EAAGjnB,KAAK2K,OAAQ,CACZ3I,KAAMkD,EAAc,MACpB8K,SAAUoG,EACV5C,KAAM,CAACiM,GACP6K,QAAQ,GAEf,IAEL/L,EAASzd,KAAKupB,EACjB,GAEL,IACI,IAAK,IAAIyB,EAAY7rB,EAASyrB,GAAUK,EAAcD,EAAUxrB,QAASyrB,EAAYvrB,KAAMurB,EAAcD,EAAUxrB,OAE/G4pB,EADW6B,EAAYxrB,MAF/B,CAMA,MAAOuZ,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQiS,IAAgBA,EAAYvrB,OAASiB,EAAKqqB,EAAU/R,SAAStY,EAAG3B,KAAKgsB,EAC5E,CACO,QAAE,GAAItT,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CACD,OAAO,WACHwd,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CH7B2B+M,CAA6BhsB,KAAKsY,gBAAgBqF,KAAK3d,MAAOmR,EAAKnJ,EAAYhI,KAAK0V,QACpGuW,EDmBZ,SAAyChF,EAAI9V,EAAKnJ,EAAY0N,GAC1D,IAAI6I,EAAW,GAKf,OAJAA,EAASzd,KAAKf,MAAMwe,EAAUvd,EAAc,GAAIN,EAAOqpB,GAAiB5Y,EAAI+a,sBAAsBtsB,UAAWsF,EAAcinB,MAAOlF,EAAIjf,EAAY0N,EAAQvE,KAAO,SACvH,IAA/BA,EAAIib,wBACX7N,EAASzd,KAAKf,MAAMwe,EAAUvd,EAAc,GAAIN,EAAOqpB,GAAiB5Y,EAAIib,uBAAuBxsB,UAAWsF,EAAcmnB,OAAQpF,EAAIjf,EAAY0N,EAAQvE,KAAO,IAEhK,WACHoN,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CC5BmCqN,CAAgCtsB,KAAKsY,gBAAgBqF,KAAK3d,MAAOmR,EAAKnJ,EAAYhI,KAAK0V,QACnH1V,KAAKkrB,eAAiB,WAClBG,IACAI,IACAQ,MAGRtB,EAAc/qB,UAAUwrB,kCAAoC,WACxD,IAAIjX,EAAQnU,KACZusB,uBAAsB,WAAc,OAAOpY,EAAMqY,6BAAgC,KAErF7B,EAAc/qB,UAAUurB,qBAAuB,WAC3C,IAAIhX,EAAQnU,KAKZusB,uBAJ4B,SAAxBE,EAAkCC,GAClCvY,EAAM0W,UAAUC,SAAW4B,EAC3BH,sBAAsBE,OAI9B9B,EAAc/qB,UAAU4sB,4BAA8B,WAClD,IAAIrY,EAAQnU,KACZA,KAAK4qB,uBAAuBrV,SAAQ,SAAU+T,EAAQ3e,GAClD,IAAI/B,EAAKuL,EAAMuB,OAAOlD,MAAM7H,GAC5BwJ,EAAMwY,8BAA8BhiB,EAAQ/B,MAEhD2jB,uBAAsB,WAAc,OAAOpY,EAAMqY,6BAAgC,KAErF7B,EAAc/qB,UAAU+sB,8BAAgC,SAAUhiB,EAAQ/B,GACtE,IAAI5I,KAAK2X,SAAU3X,KAAK4X,OAAxB,CAGA,IAAIgV,EAAiB5sB,KAAK4qB,uBAAuBzU,IAAIxL,GACrD,GAAKiiB,IAA0B,IAARhkB,EAAvB,CAEA,IAAI0gB,EAASsD,EAAe7pB,KAAI,SAAUxC,GACtCA,EAAMyB,KAAM,IAAI6qB,EVxD5B,SAAgBvtB,EAAGsB,GACf,IAAIvB,EAAI,CAAA,EACR,IAAK,IAAIM,KAAKL,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,IAAMiB,EAAE2D,QAAQ5E,GAAK,IAC9EN,EAAEM,GAAKL,EAAEK,IACb,GAAS,MAALL,GAAqD,mBAAjCH,OAAO2tB,sBACtB,KAAIvtB,EAAI,EAAb,IAAgBI,EAAIR,OAAO2tB,sBAAsBxtB,GAAIC,EAAII,EAAED,OAAQH,IAC3DqB,EAAE2D,QAAQ5E,EAAEJ,IAAM,GAAKJ,OAAOS,UAAUmtB,qBAAqBjtB,KAAKR,EAAGK,EAAEJ,MACvEF,EAAEM,EAAEJ,IAAMD,EAAEK,EAAEJ,IAFF,CAIxB,OAAOF,CACV,CU8CkC2tB,CAAOzsB,EAAO,CAAC,SACtC,OAAOssB,CACV,IACG7qB,EAAO4qB,EAAe,GAAG5qB,KAC7BhC,KAAKua,WAAW,CAAE3R,GAAIA,EAAI5G,KAAMA,EAAMirB,SAAU3D,IAChDtpB,KAAK4qB,uBAAuBxT,OAAOzM,EAP/B,CAHH,GAYEggB,CACV,CArFoB,GCIrB,SAASuC,GAAUtsB,GACf,OAAO1B,EAASA,EAAS,CAAD,EAAK0B,GAAI,CAAE8rB,UAAWtZ,KAAKD,OACtD,CAGD,IAAIuC,GTHO,CACH3S,IAAK,CADF,EAEHyP,MAAO,SAAUhT,GACb,OAAKA,GAAMA,EAAEkJ,KAGNlJ,EAAEkJ,KAAKE,IAFF,CAJb,EAQH6J,QAAS,SAAU7J,GACf,OAAO5I,KAAK+C,IAAI6F,IAAO,IATxB,EAWH8J,kBAAmB,SAAUlT,GACzB,IAAI2U,EAAQnU,KACR4I,EAAKpJ,EAAEkJ,MAAQlJ,EAAEkJ,KAAKE,UACnB5I,KAAK+C,IAAI6F,GACZpJ,EAAEyJ,YACFzJ,EAAEyJ,WAAWsM,SAAQ,SAAU4X,GAC3B,OAAOhZ,EAAMzB,kBAAkBya,KAjBxC,EAqBHxa,IAAK,SAAU/J,GACX,OAAO5I,KAAK+C,IAAIlD,eAAe+I,EAtBhC,EAwBHgK,MAAO,WACH5S,KAAK+C,IAAM,EACd,GStBT,SAASqqB,GAAOxlB,QACI,IAAZA,IAAsBA,EAAU,CAAA,GACpC,IAAI2Q,EAAO3Q,EAAQ2Q,KAAM8U,EAAmBzlB,EAAQylB,iBAAkBC,EAAmB1lB,EAAQ0lB,iBAAkB7rB,EAAKmG,EAAQI,WAAYA,OAAoB,IAAPvG,EAAgB,WAAaA,EAAI0G,EAAKP,EAAQK,cAAeA,OAAuB,IAAPE,EAAgB,KAAOA,EAAIE,EAAKT,EAAQub,YAAaA,OAAqB,IAAP9a,EAAgB,YAAcA,EAAIwB,EAAKjC,EAAQZ,cAAeA,OAAuB,IAAP6C,EAAgB,UAAYA,EAAIE,EAAKnC,EAAQX,iBAAkBA,OAA0B,IAAP8C,EAAgB,KAAOA,EAAIuD,EAAK1F,EAAQM,iBAAkBA,OAA0B,IAAPoF,GAAuBA,EAAIigB,EAAgB3lB,EAAQ2lB,cAAeC,EAAoB5lB,EAAQ9F,iBAAkB2rB,EAAkB7lB,EAAQmH,eAAgB9M,EAAc2F,EAAQ3F,YAAamG,EAAaR,EAAQQ,WAAYkY,EAAQ1Y,EAAQ0Y,MAAOoN,EAAS9lB,EAAQ8lB,OAAQxe,EAAKtH,EAAQwW,SAAUA,OAAkB,IAAPlP,EAAgB,CAAhB,EAAqBA,EAAIye,EAAgB/lB,EAAQ+lB,cAAeve,EAAKxH,EAAQY,aAAcA,OAAsB,IAAP4G,GAAwBA,EAAIC,EAAKzH,EAAQwb,qBAAsBA,OAA8B,IAAP/T,GAAwBA,EAAIsB,EAAK/I,EAAQ8d,aAAcA,OAAsB,IAAP/U,GAAwBA,EAAIG,EAAKlJ,EAAQW,aAAcA,OAAsB,IAAPuI,GAAwBA,EAAI2V,EAAU7e,EAAQ6e,QAAS1V,EAAKnJ,EAAQa,gBAAiBA,OAAyB,IAAPsI,EAAgB,WAAc,OAAO,CAArC,EAAgDA,EACzyC,IAAKwH,EACD,MAAM,IAAI9B,MAAM,kCAEE5N,IAAlB8kB,QAAsD9kB,IAAvBuV,EAAS8C,YACxC9C,EAAS8C,UAAYyM,GAEzB,IAuCIC,EAvCA9rB,GAAqC,IAAlByrB,EACjB,CACEM,OAAO,EACPC,MAAM,EACN,kBAAkB,EAClBC,OAAO,EACPC,OAAO,EACPC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,KAAK,EACLlsB,MAAM,EACNmsB,MAAM,EACNlqB,KAAK,EACLmqB,MAAM,EACNC,UAAU,EACVC,QAAQ,EACRC,UAAU,QAEU5lB,IAAtB2kB,EACIA,EACA,CAAEiB,UAAU,GAClB1f,GAAqC,IAApB0e,GAAgD,QAApBA,EAC3C,CACE/d,QAAQ,EACRD,SAAS,EACTI,aAAa,EACbY,gBAAgB,EAChBV,gBAAgB,EAChBE,gBAAgB,EAChBC,mBAAmB,EACnBE,sBAAsB,EACtBD,mBAAwC,QAApBsd,EACpB3d,qBAA0C,QAApB2d,GAExBA,GAEI,ITuJd,SAAkBtc,QACF,IAARA,IAAkBA,EAAM2C,QACxB,aAAc3C,IAAQA,EAAIud,SAAS9uB,UAAU2V,UAC7CpE,EAAIud,SAAS9uB,UAAU2V,QAAUlU,MAAMzB,UAClC2V,SAEL,iBAAkBpE,IAAQA,EAAIwd,aAAa/uB,UAAU2V,UACrDpE,EAAIwd,aAAa/uB,UAAU2V,QAAUlU,MAAMzB,UACtC2V,SAEJqZ,KAAKhvB,UAAUyH,WAChBunB,KAAKhvB,UAAUyH,SAAW,SAAkBN,GACxC,KAAM,KAAKtH,WACP,MAAM,IAAIgB,UAAU,0BAExB,GACI,GAAIT,OAAS+G,EACT,OAAO,QAELA,EAAOA,GAAQA,EAAKU,YAC9B,OAAO,GAGlB,CS7KGonB,GAEA,IAAIC,EAA2B,EAuB/BrE,GAAc,SAAU7pB,EAAGmuB,GACvB,IAAIttB,EAQJ,KAPmC,QAA7BA,EAAK4a,GAAgB,UAAuB,IAAP5a,OAAgB,EAASA,EAAGya,aACnEtb,EAAEoB,OAAS+C,EAAUiqB,cACnBpuB,EAAEoB,OAAS+C,EAAUkqB,qBACnBruB,EAAE2K,KAAK8I,SAAWrP,EAAkBkqB,UACxC7S,GAAgB9G,SAAQ,SAAU4Z,GAAO,OAAOA,EAAIlT,cAExD1D,EA9BiB,SAAU3X,GAC3B,IAAI4X,EAAK/W,EACT,IACI,IAAK,IAAI0G,EAAKlI,EAASwmB,GAAW,IAAKpe,EAAKF,EAAG7H,QAAS+H,EAAG7H,KAAM6H,EAAKF,EAAG7H,OAAQ,CAC7E,IAAIomB,EAASre,EAAG9H,MACZmmB,EAAO0I,iBACPxuB,EAAI8lB,EAAO0I,eAAexuB,GAEjC,CANL,CAQA,MAAOkZ,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQzR,IAAOA,EAAG7H,OAASiB,EAAK0G,EAAG4R,SAAStY,EAAG3B,KAAKqI,EACnD,CACO,QAAE,GAAIqQ,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CAID,OAHI2sB,IACA9sB,EAAI8sB,EAAO9sB,IAERA,EAUFwuB,CAAexuB,GAAImuB,GACpBnuB,EAAEoB,OAAS+C,EAAUiqB,aACrBpB,EAAwBhtB,EACxBkuB,EAA2B,OAE1B,GAAIluB,EAAEoB,OAAS+C,EAAUkqB,oBAAqB,CAC/C,GAAIruB,EAAE2K,KAAK8I,SAAWrP,EAAkBkqB,UACpCtuB,EAAE2K,KAAK4b,eACP,OAEJ2H,IACA,IAAIO,EAAc/B,GAAoBwB,GAA4BxB,EAC9DgC,EAAajC,GACbzsB,EAAE8rB,UAAYkB,EAAsBlB,UAAYW,GAChDgC,GAAeC,IACf5E,IAAiB,EAExB,GAEL,IAAI6E,EAAsB,SAAUlvB,GAChCoqB,GAAYyC,GAAU,CAClBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkBkqB,UAAY7uB,OAG3DmvB,EAAoB,SAAU7vB,GAC9B,OAAO8qB,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkByqB,QAAU9vB,OAGzD+vB,GAA4B,SAAU/vB,GACtC,OAAO8qB,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkB2qB,gBAAkBhwB,OAGjE0Z,GAAgB,IAAIyN,GAAc,CAClCvM,WAAYgV,IAEZvT,GAAgB,IAAI2O,GAAc,CAClCniB,aAAcA,EACd+R,WAAYmV,GACZve,IAAK2C,OACL9L,WAAYA,EACZ0N,OAAQA,KAER6D,GAAmB,IAAI6N,GAAiB,CACxC7M,WAAYgV,EACZpQ,SAAUqQ,EACV9e,cAAe,CACX1I,WAAYA,EACZC,cAAeA,EACfjB,cAAeA,EACfC,iBAAkBA,EAClBiB,iBAAkBA,EAClBpG,iBAAkBA,EAClBsG,WAAYA,EACZnG,YAAaA,EACbuG,aAAcA,EACdD,aAAcA,EACd6V,SAAUA,EACVrP,eAAgBA,EAChBsK,cAAeA,GACf2C,cAAeA,IAEnBtG,OAAQA,KAEZgV,GAAmB,SAAUqE,GACzB,IAAIttB,EAAI0G,EAAIE,EAAIwB,OACG,IAAfklB,IAAyBA,GAAa,GAC1CtE,GAAYyC,GAAU,CAClBlrB,KAAM+C,EAAU6qB,KAChBrkB,KAAM,CACF5H,KAAMmQ,OAAOtC,SAAS7N,KACtBoH,MAAOkK,IACPhK,OAAQ2J,OAEZma,GACJ1S,GAAgB9G,SAAQ,SAAU4Z,GAAO,OAAOA,EAAIhT,UACpD,IAAIpS,EAAKrJ,EZwlBjB,SAAkBlB,EAAGoI,GACjB,IAAInG,EAAKmG,GAAW,CAApB,EAAwBO,EAAK1G,EAAGuG,WAAYA,OAAoB,IAAPG,EAAgB,WAAaA,EAAIE,EAAK5G,EAAGwG,cAAeA,OAAuB,IAAPI,EAAgB,KAAOA,EAAIwB,EAAKpI,EAAGuF,cAAeA,OAAuB,IAAP6C,EAAgB,UAAYA,EAAIE,EAAKtI,EAAGwF,iBAAkBA,OAA0B,IAAP8C,EAAgB,KAAOA,EAAIuD,EAAK7L,EAAGyG,iBAAkBA,OAA0B,IAAPoF,GAAuBA,EAAI4B,EAAKzN,EAAG8G,aAAcA,OAAsB,IAAP2G,GAAwBA,EAAIE,EAAK3N,EAAG+G,aAAcA,OAAsB,IAAP4G,GAAwBA,EAAIC,EAAK5N,EAAG8rB,cAAeA,OAAuB,IAAPle,GAAwBA,EAAIjH,EAAa3G,EAAG2G,WAAYnG,EAAcR,EAAGQ,YAAa0O,EAAKlP,EAAGouB,QAASA,OAAiB,IAAPlf,GAAwBA,EAAIrI,EAAiB7G,EAAG6G,eAAgBgH,EAAqB7N,EAAG6N,mBAAoBN,EAAcvN,EAAGuN,YAAaC,EAAexN,EAAGwN,aAAcE,EAAoB1N,EAAG0N,kBAAmB2B,EAAKrP,EAAGgH,gBACr2BqnB,EAAY,CAAA,EA0ChB,MAAO,CACHjhB,EAAoBrP,EAAG,CACnBgG,IAAKhG,EACLuD,IAAK+sB,EACL9nB,WAAYA,EACZC,cAAeA,EACfjB,cAAeA,EACfC,iBAAkBA,EAClB6H,WAAW,EACX5G,iBAAkBA,EAClBpG,kBAnDiC,IAAlByrB,EACjB,CACEM,OAAO,EACPC,MAAM,EACN,kBAAkB,EAClBC,OAAO,EACPC,OAAO,EACPC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,KAAK,EACLlsB,MAAM,EACNmsB,MAAM,EACNlqB,KAAK,EACLmqB,MAAM,EACNC,UAAU,EACVC,QAAQ,EACRC,UAAU,IAEM,IAAlBlB,EACI,CACEkB,UAAU,GAEZlB,EA6BFnlB,WAAYA,EACZnG,YAAaA,EACb8M,gBA9ByB,IAAZ8gB,GAAgC,QAAZA,EAEjC,CACIngB,QAAQ,EACRD,SAAS,EACTI,aAAa,EACbY,gBAAgB,EAChBX,qBAAkC,QAAZ+f,EACtB9f,gBAAgB,EAChBE,gBAAgB,EAChBC,mBAAmB,EACnBC,oBAAoB,EACpBC,sBAAsB,IAEhB,IAAZyf,EACI,CADJ,EAEIA,EAeFvnB,eAAgBA,EAChBC,aAAcA,EACdC,aAAcA,EACd8G,mBAAoBA,EACpBN,YAAaA,EACbC,aAAcA,EACdE,kBAAmBA,EACnB1G,qBAhE24B,IAAPqI,EAAgB,WAAc,OAAO,CAArC,EAAgDA,IAkEx7Bgf,EAEP,CY7pBuBC,CAASjqB,SAAU,CAC/BkC,WAAYA,EACZC,cAAeA,EACfjB,cAAeA,EACfC,iBAAkBA,EAClBiB,iBAAkBA,EAClBqlB,cAAezrB,EACfsG,WAAYA,EACZynB,QAAS9gB,EACTvG,aAAcA,EACdD,aAAcA,EACdyG,YAAa,SAAUxP,GACfsW,EAActW,IACd6Z,GAAcC,UAAU9Z,GAExBuW,EAAcvW,IACd+Z,GAAiBC,cAAcha,EAAEoC,WAAYkE,SAhBtB,EAmB/BmJ,aAAc,SAAUwK,EAAQC,GAC5BL,GAAcM,aAAaF,EAAQC,GACnCH,GAAiBK,oBAAoBH,EArBV,EAuB/BhR,gBAAiBA,IACjB,GAAI1B,EAAOgD,EAAG,GAAI+lB,EAAY/lB,EAAG,GACrC,IAAKhD,EACD,OAAO0F,QAAQC,KAAK,mCAExBgJ,GAAO3S,IAAM+sB,EACbrF,GAAYyC,GAAU,CAClBlrB,KAAM+C,EAAUiqB,aAChBzjB,KAAM,CACFxE,KAAMA,EACNipB,cAAe,CACXC,UAA6BpnB,IAAvBiL,OAAOoc,YACPpc,OAAOoc,aACO,OAAbpqB,eAAkC,IAAbA,cAAsB,EAASA,SAASgP,gBAAgB5H,cAC+D,QAAzI/E,EAAkF,QAA5E1G,EAAkB,OAAbqE,eAAkC,IAAbA,cAAsB,EAASA,SAASkP,YAAyB,IAAPvT,OAAgB,EAASA,EAAG8hB,qBAAkC,IAAPpb,OAAgB,EAASA,EAAG+E,cACjK,OAAbpH,eAAkC,IAAbA,cAAsB,EAASA,SAASkP,KAAK9H,aACnE,EACRijB,SAA4BtnB,IAAvBiL,OAAOsc,YACNtc,OAAOsc,aACO,OAAbtqB,eAAkC,IAAbA,cAAsB,EAASA,SAASgP,gBAAgB1H,aAC+D,QAAzIvD,EAAkF,QAA5ExB,EAAkB,OAAbvC,eAAkC,IAAbA,cAAsB,EAASA,SAASkP,YAAyB,IAAP3M,OAAgB,EAASA,EAAGkb,qBAAkC,IAAP1Z,OAAgB,EAASA,EAAGuD,aACjK,OAAbtH,eAAkC,IAAbA,cAAsB,EAASA,SAASkP,KAAK5H,YACnE,OAIpBiP,GAAgB9G,SAAQ,SAAU4Z,GAAO,OAAOA,EAAI/S,aAExD,IACI,IAAIiU,GAAa,GACjBA,GAAWvvB,KAAKkR,EAAG,oBAAoB,WACnCyY,GAAYyC,GAAU,CAClBlrB,KAAM+C,EAAUurB,iBAChB/kB,KAAM,CAAA,IAHI,KAMlB,IAAIglB,GAAY,SAAU/qB,GACtB,IAAI/D,EACJ,OAAO4e,GAAc,CACjB9F,WAAYgV,EACZ9O,YAAa,SAAUwB,EAAW5N,GAC9B,OAAOoW,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAM,CACF8I,OAAQA,EACR4N,UAAWA,KAPN,EAWjB9D,mBAAoB,SAAUvK,GAC1B,OAAO6W,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkBwrB,kBAAoB5c,KAdtD,EAiBjBuL,SAAUqQ,EACV9O,iBAAkB,SAAU9M,GACxB,OAAO6W,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkByrB,gBAAkB7c,KArBpD,EAwBjB+M,QAAS,SAAUlB,GACf,OAAOgL,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkB0rB,OAASjR,KA3B3C,EA8BjBmB,mBAAoB,SAAUjhB,GAC1B,OAAO8qB,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkB2rB,kBAAoBhxB,KAjCtD,EAoCjBkhB,iBAAkB,SAAUlgB,GACxB,OAAO8pB,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkB4rB,gBAAkBjwB,KAvCpD,EA0CjBmgB,mBAAoB,SAAUngB,GAC1B,OAAO8pB,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkB6rB,kBAAoBlwB,KA7CtD,EAgDjBogB,iBAAkB2O,GAClB1O,OAAQ,SAAUrhB,GACd,OAAO8qB,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkB8rB,MAAQnxB,KApD1C,EAuDjBqI,WAAYA,EACZmb,YAAaA,EACbnc,cAAeA,EACfC,iBAAkBA,EAClBnF,iBAAkBA,EAClBoG,iBAAkBA,EAClBkW,SAAUA,EACV5V,aAAcA,EACdD,aAAcA,EACd6a,qBAAsBA,EACtBsC,aAAcA,EACdlgB,IAAKA,EACLvD,YAAaA,EACbmG,WAAYA,EACZH,cAAeA,EACf8G,eAAgBA,EAChB2G,OAAQA,GACR2D,cAAeA,GACfE,iBAAkBA,GAClByC,cAAeA,GACfyK,SAA2H,QAAhHhlB,EAAKglB,aAAyC,EAASA,EAAQpM,QAAO,SAAU1a,GAAK,OAAOA,EAAE+d,QAAW,WAAsB,IAAPjc,OAAgB,EAASA,EAAGsB,KAAI,SAAUpD,GAAK,MAAQ,CACtL+d,SAAU/d,EAAE+d,SACZ9V,QAASjI,EAAEiI,QACX+e,SAAU,SAAUvM,GAChB,OAAOqQ,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUgsB,OAChBxlB,KAAM,CACFmb,OAAQ/mB,EAAEqG,KACVoU,QAASA,KAGpB,EAXuJ,MAYjJ,IACZkG,IAEPjH,GAAc2N,iBAAgB,SAAU/V,GACpCof,GAAWvvB,KAAKyvB,GAAUtf,EAASrD,qBAEvC,IAAIojB,GAAS,WACTtG,KACA2F,GAAWvvB,KAAKyvB,GAAUzqB,YAe9B,MAb4B,gBAAxBA,SAASuL,YACe,aAAxBvL,SAASuL,WACT2f,KAGAX,GAAWvvB,KAAKkR,EAAG,QAAQ,WACvByY,GAAYyC,GAAU,CAClBlrB,KAAM+C,EAAUksB,KAChB1lB,KAAM,CAAA,KAEVylB,OACDld,SAEA,WACHuc,GAAW9a,SAAQ,SAAU0J,GAAK,OAAOA,OAzHjD,CA4HA,MAAOle,GACH0L,QAAQC,KAAK3L,EAChB,CACJ,CACDqsB,GAAO8D,eAAiB,SAAUC,EAAK/W,GACnC,IAAKqQ,GACD,MAAM,IAAIhU,MAAM,iDAEpBgU,GAAYyC,GAAU,CAClBlrB,KAAM+C,EAAUqsB,OAChB7lB,KAAM,CACF4lB,IAAKA,EACL/W,QAASA,KAGpB,EACDgT,GAAOiE,WAAa,WAChBhV,GAAgB9G,SAAQ,SAAU4Z,GAAO,OAAOA,EAAIpT,WACvD,EACDqR,GAAO1C,iBAAmB,SAAUqE,GAChC,IAAKrE,GACD,MAAM,IAAIjU,MAAM,mDAEpBiU,GAAiBqE,EACpB,EACD3B,GAAO1X,OAASA,GGvXhB,IAAI4b,GAAc,WACd,SAASA,EAAWC,GAChBvxB,KAAKwxB,SAAWD,EAAIC,UAAY,GAChCxxB,KAAKyxB,aAAeF,EAAIE,cAAgB,GACxCzxB,KAAK0xB,WAAaH,EAAIG,WACtB1xB,KAAK2xB,aAAeJ,EAAII,YAC3B,CAgBD,OAfAL,EAAW1xB,UAAUgyB,SAAW,WAC5B,IAAIF,EAAa1xB,KAAK0xB,YAAc,GAChCC,EAAe3xB,KAAK2xB,cAAgB,GACxC,OAAI3xB,KAAKyxB,aACGzxB,KAAKyxB,aACT,KACAzxB,KAAKwxB,SACL,IACAE,EACA,IACAC,EACA,IAED3xB,KAAKwxB,SAAW,IAAME,EAAa,IAAMC,GAE7CL,CACV,CAvBiB,GAwBdO,GAA8B,eAC9BC,GAAyB,iCACzBC,GAA4B,8BAC5BC,GAAmB,CACnBC,MAAO,SAAUlxB,GACb,IAAKA,EACD,MAAO,GAEX,QAAgC,IAArBA,EAAMmxB,iBACuB,IAA7BnxB,EAAM,mBACb,OAAOf,KAAKmyB,WAAWpxB,GAEtB,GAAIA,EAAM0D,OAAS1D,EAAM0D,MAAM4B,MAAMyrB,IACtC,OAAO9xB,KAAKoyB,YAAYrxB,GAEvB,GAAIA,EAAM0D,MACX,OAAOzE,KAAKqyB,gBAAgBtxB,GAG5B,MAAM,IAAI0V,MAAM,kCAhBL,EAmBnB6b,gBAAiB,SAAUC,GACvB,IAA8B,IAA1BA,EAAQhuB,QAAQ,KAChB,MAAO,CAACguB,GAEZ,IACI7tB,EADS,+BACM4B,KAAKisB,EAAQ3uB,QAAQ,QAAS,KACjD,IAAKc,EACD,MAAM,IAAI+R,MAAM,2BAA2BlV,OAAOgxB,IACtD,MAAO,CAAC7tB,EAAM,GAAIA,EAAM,SAAMmE,EAAWnE,EAAM,SAAMmE,EA3BtC,EA6BnBupB,YAAa,SAAUrxB,GAInB,OAHeA,EAAM0D,MAAMD,MAAM,MAAM6V,QAAO,SAAUmY,GACpD,QAASA,EAAKnsB,MAAMyrB,GADT,GAEZ9xB,MACa+C,KAAI,SAAUyvB,GACtBA,EAAKjuB,QAAQ,WAAa,IAC1BiuB,EAAOA,EACF5uB,QAAQ,aAAc,QACtBA,QAAQ,+BAAgC,KAEjD,IAAI6uB,EAAgBD,EAAK5uB,QAAQ,OAAQ,IAAIA,QAAQ,eAAgB,KACjE4N,EAAWihB,EAAcpsB,MAAM,4BAI/BqsB,GAHJD,EAAgBjhB,EACVihB,EAAc7uB,QAAQ4N,EAAS,GAAI,IACnCihB,GACqBjuB,MAAM,OAAOlD,MAAM,GAC1CqxB,EAAgB3yB,KAAKsyB,gBAAgB9gB,EAAWA,EAAS,GAAKkhB,EAAO/tB,OACrE8sB,EAAeiB,EAAOzvB,KAAK,WAAQ4F,EACnC2oB,EAAW,CAAC,OAAQ,eAAejtB,QAAQouB,EAAc,KAAO,OAC9D9pB,EACA8pB,EAAc,GACpB,OAAO,IAAIrB,GAAW,CAClBG,aAAcA,EACdD,SAAUA,EACVE,WAAYiB,EAAc,GAC1BhB,aAAcgB,EAAc,IArB7B,GAuBJ3yB,KAxDY,EA0DnBqyB,gBAAiB,SAAUtxB,GAIvB,OAHeA,EAAM0D,MAAMD,MAAM,MAAM6V,QAAO,SAAUmY,GACpD,OAAQA,EAAKnsB,MAAM0rB,GADR,GAEZ/xB,MACa+C,KAAI,SAAUyvB,GAI1B,GAHIA,EAAKjuB,QAAQ,YAAc,IAC3BiuB,EAAOA,EAAK5uB,QAAQ,mDAAoD,SAEjD,IAAvB4uB,EAAKjuB,QAAQ,OAAsC,IAAvBiuB,EAAKjuB,QAAQ,KACzC,OAAO,IAAI+sB,GAAW,CAClBG,aAAce,IAIlB,IAAII,EAAoB,6BACpBprB,EAAUgrB,EAAKnsB,MAAMusB,GACrBnB,EAAejqB,GAAWA,EAAQ,GAAKA,EAAQ,QAAKqB,EACpD8pB,EAAgB3yB,KAAKsyB,gBAAgBE,EAAK5uB,QAAQgvB,EAAmB,KACzE,OAAO,IAAItB,GAAW,CAClBG,aAAcA,EACdD,SAAUmB,EAAc,GACxBjB,WAAYiB,EAAc,GAC1BhB,aAAcgB,EAAc,IAlBjC,GAqBJ3yB,KAnFY,EAqFnBmyB,WAAY,SAAUvxB,GAClB,OAAKA,EAAEsxB,YACFtxB,EAAEiyB,QAAQtuB,QAAQ,OAAS,GACxB3D,EAAEiyB,QAAQruB,MAAM,MAAM9E,OAASkB,EAAEsxB,WAAW1tB,MAAM,MAAM9E,OACrDM,KAAK8yB,YAAYlyB,GAElBA,EAAE6D,MAIDzE,KAAK+yB,aAAanyB,GAHlBZ,KAAKgzB,aAAapyB,EA5Fd,EAkGnBkyB,YAAa,SAAUlyB,GAInB,IAHA,IAAIqyB,EAAS,oCACTC,EAAQtyB,EAAEiyB,QAAQruB,MAAM,MACxB2lB,EAAS,GACJ5qB,EAAI,EAAG0oB,EAAMiL,EAAMxzB,OAAQH,EAAI0oB,EAAK1oB,GAAK,EAAG,CACjD,IAAI8G,EAAQ4sB,EAAO3sB,KAAK4sB,EAAM3zB,IAC1B8G,GACA8jB,EAAOrpB,KAAK,IAAIwwB,GAAW,CACvBE,SAAUnrB,EAAM,GAChBqrB,WAAYyB,WAAW9sB,EAAM,MAGxC,CACD,OAAO8jB,CA/GQ,EAiHnB6I,aAAc,SAAUpyB,GAIpB,IAHA,IAAIqyB,EAAS,6DACTC,EAAQtyB,EAAEsxB,WAAW1tB,MAAM,MAC3B2lB,EAAS,GACJ5qB,EAAI,EAAG0oB,EAAMiL,EAAMxzB,OAAQH,EAAI0oB,EAAK1oB,GAAK,EAAG,CACjD,IAAI8G,EAAQ4sB,EAAO3sB,KAAK4sB,EAAM3zB,IAC1B8G,GACA8jB,EAAOrpB,KAAK,IAAIwwB,GAAW,CACvBG,aAAcprB,EAAM,SAAMwC,EAC1B2oB,SAAUnrB,EAAM,GAChBqrB,WAAYyB,WAAW9sB,EAAM,MAGxC,CACD,OAAO8jB,CA/HQ,EAiInB4I,aAAc,SAAUhyB,GAKpB,OAJeA,EAAM0D,MAAMD,MAAM,MAAM6V,QAAO,SAAUmY,GACpD,QAAUA,EAAKnsB,MAAMwrB,MAChBW,EAAKnsB,MAAM,oBAFL,GAGZrG,MACa+C,KAAI,SAAUyvB,GAC1B,IAAIE,EAASF,EAAKhuB,MAAM,KACpBmuB,EAAgB3yB,KAAKsyB,gBAAgBI,EAAO/tB,OAE5C8sB,GADeiB,EAAO7Y,SAAW,IAEhCjW,QAAQ,iCAAkC,MAC1CA,QAAQ,aAAc,UAAOiF,EAClC,OAAO,IAAIyoB,GAAW,CAClBG,aAAcA,EACdD,SAAUmB,EAAc,GACxBjB,WAAYiB,EAAc,GAC1BhB,aAAcgB,EAAc,IAX7B,GAaJ3yB,KACN,GC7KL,SAASozB,GAAersB,GACpB,IAAKA,IAASA,EAAKssB,UACf,MAAO,GAGX,IADA,IAAItW,EAAO,GACJhW,EAAKwc,eAAe,CACvB,IAAIvZ,EAASjD,EAAKusB,UAClB,IAAKtpB,EACD,MAEJA,EAASA,EAAO7H,cAChB,IAAIoxB,EAAWxsB,EAAKwc,cAChBiQ,EAAc,GAClB,GAAID,EAASE,UAAYF,EAASE,SAAS/zB,OAAS,EAChD,IAAK,IAAIH,EAAI,EAAGA,EAAIg0B,EAASE,SAAS/zB,OAAQH,IAAK,CAC/C,IAAIm0B,EAAUH,EAASE,SAASl0B,GAC5Bm0B,EAAQJ,WAAaI,EAAQJ,UAAUnxB,aACnCuxB,EAAQJ,UAAUnxB,gBAAkB6H,GACpCwpB,EAAY1yB,KAAK4yB,EAG5B,CAEDF,EAAY9zB,OAAS,IACrBsK,GAAU,OAASwpB,EAAYjvB,QAAQwC,GAAQ,KAEnDgW,EAAO/S,GAAU+S,EAAO,IAAMA,EAAO,IACrChW,EAAOwsB,CACV,CACD,OAAOxW,CACV,CACD,SAAS4W,GAASpC,GACd,MAA+C,oBAAxCpyB,OAAOS,UAAUgyB,SAAS9xB,KAAKyxB,EACzC,CACD,SAASqC,GAAarC,EAAKsC,GACvB,IAAIrb,EAAK/W,EACT,GAAc,IAAVoyB,EACA,OAAO,EAEX,IAAIrV,EAAOrf,OAAOqf,KAAK+S,GACvB,IACI,IAAK,IAAIuC,EAAS7zB,EAASue,GAAOuV,EAAWD,EAAOxzB,QAASyzB,EAASvzB,KAAMuzB,EAAWD,EAAOxzB,OAAQ,CAClG,IAAIqT,EAAMogB,EAASxzB,MACnB,GAAIozB,GAASpC,EAAI5d,KAASigB,GAAarC,EAAI5d,GAAMkgB,EAAQ,GACrD,OAAO,CAEd,CANL,CAQA,MAAO/Z,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQia,IAAaA,EAASvzB,OAASiB,EAAKqyB,EAAO/Z,SAAStY,EAAG3B,KAAKg0B,EACnE,CACO,QAAE,GAAItb,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CACD,OAAO,CACV,CACD,SAASolB,GAAUoL,EAAKyC,GACpB,IAAIpsB,EAAU,CACVqsB,eAAgB,GAChBC,aAAc,GAElB/0B,OAAOC,OAAOwI,EAASosB,GACvB,IAAIvvB,EAAQ,GACR+Z,EAAO,GACX,OAAO0H,KAAKC,UAAUoL,GAAK,SAAU5d,EAAKpT,GACtC,GAAIkE,EAAM/E,OAAS,EAAG,CAClB,IAAIy0B,EAAU1vB,EAAMF,QAAQvE,OAC3Bm0B,EAAU1vB,EAAM2vB,OAAOD,EAAU,GAAK1vB,EAAM3D,KAAKd,OACjDm0B,EAAU3V,EAAK4V,OAAOD,EAASE,IAAU1gB,GAAO6K,EAAK1d,KAAK6S,IACtDlP,EAAMF,QAAQhE,KAEXA,EADAkE,EAAM,KAAOlE,EACL,eAIJ,eACIie,EAAKld,MAAM,EAAGmD,EAAMF,QAAQhE,IAAQ0C,KAAK,KACzC,IAGnB,MAEGwB,EAAM3D,KAAKP,GAEf,GAAIA,QACA,OAAOA,EAEX,GA6BJ,SAAsB+zB,GAClB,GAAIX,GAASW,IAASn1B,OAAOqf,KAAK8V,GAAM50B,OAASkI,EAAQqsB,eACrD,OAAO,EAEX,GAAoB,mBAATK,EACP,OAAO,EAEX,GAAIX,GAASW,IAASV,GAAaU,EAAM1sB,EAAQssB,cAC7C,OAAO,EAEX,OAAO,CACV,CAxCOK,CAAah0B,GACb,OAwCR,SAAkB+zB,GACd,IAAIE,EAAMF,EAAK1C,WACXhqB,EAAQ6sB,mBAAqBD,EAAI90B,OAASkI,EAAQ6sB,oBAClDD,EAAM,GAAGjzB,OAAOizB,EAAIlzB,MAAM,EAAGsG,EAAQ6sB,mBAAoB,QAE7D,OAAOD,CACV,CA9Cc5C,CAASrxB,GAEpB,GAAIA,aAAiBm0B,MAAO,CACxB,IAAIC,EAAc,CAAA,EAClB,IAAK,IAAIhW,KAAYpe,EAAO,CACxB,IAAIq0B,EAAar0B,EAAMoe,GACnBtd,MAAMwzB,QAAQD,GACdD,EAAYhW,GAAYyU,GAAewB,EAAWl1B,OAASk1B,EAAW,GAAK,MAG3ED,EAAYhW,GAAYiW,CAE/B,CACD,OAAOD,CACV,CACI,OAAIp0B,aAAiBquB,KAClBruB,aAAiBgnB,YACVhnB,EAAQA,EAAM8yB,UAAY,GAE9B9yB,EAAMu0B,SAERv0B,aAAiBkW,MACflW,EAAMkE,MACPlE,EAAMkE,MAAQ,kCACdlE,EAAMyF,KAAO,KAAOzF,EAAMsyB,QAE7BtyB,CACV,GAoBJ,CCrID,IAAIw0B,GAAoB,CACpBC,MAAO,CACH,SACA,QACA,QACA,aACA,QACA,MACA,SACA,QACA,QACA,iBACA,WACA,OACA,MACA,QACA,OACA,UACA,UACA,QACA,QAEJC,gBAAiB,IACjBC,OAAQ,WAEZ,SAASC,GAAgBlO,EAAI9V,EAAKikB,GAC9B,IAAI5c,EAAK/W,EAKLyzB,EAJAG,EAAaD,EAAWF,OAC5B,IAAKG,EACD,OAAO,WAAY,EAInBH,EADsB,iBAAfG,EACElkB,EAAIkkB,GAGJA,EAEb,IAAIC,EAAW,EACXC,EAAiB,GACrB,GAAIH,EAAWJ,MAAMQ,SAAS,UACtB1hB,OAAQ,CACR,IAAI2hB,EAAiB,SAAU7f,GAC3B,IAAIid,EAAUjd,EAAMid,QAAS9xB,EAAQ6U,EAAM7U,MACvC20B,EAAQ1D,GAAiBC,MAAMlxB,GAAOgC,KAAI,SAAU4yB,GAAc,OAAOA,EAAW/D,UAAa,IACjGxX,EAAU,CAAC+L,GAAU0M,EAASuC,EAAWpB,mBAC7C/M,EAAG,CACC+N,MAAO,QACPU,MAAOA,EACPtb,QAASA,KAGjBtG,OAAOrC,iBAAiB,QAASgkB,GACjCF,EAAez0B,MAAK,WACZgT,QACAA,OAAOzB,oBAAoB,QAASojB,KAE/C,CAEL,IACI,IAAK,IAAIttB,EAAKlI,EAASm1B,EAAWJ,OAAQ3sB,EAAKF,EAAG7H,QAAS+H,EAAG7H,KAAM6H,EAAKF,EAAG7H,OAAQ,CAChF,IAAIs1B,EAAYvtB,EAAG9H,MACnBg1B,EAAez0B,KAAK8C,EAAQsxB,EAAQU,GACvC,CAJL,CAMA,MAAO9b,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQzR,IAAOA,EAAG7H,OAASiB,EAAK0G,EAAG4R,SAAStY,EAAG3B,KAAKqI,EACnD,CACO,QAAE,GAAIqQ,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CACD,OAAO,WACHw0B,EAAehgB,SAAQ,SAAU0J,GAAK,OAAOA,QAEjD,SAASrb,EAAQiyB,EAASb,GACtB,IAAI7gB,EAAQnU,KACZ,OAAK61B,EAAQb,GAGN5gB,EAAMyhB,EAASb,GAAO,SAAUjhB,GACnC,OAAO,WAEH,IADA,IAAIP,EAAO,GACF5O,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpC4O,EAAK5O,GAAMnF,UAAUmF,GAEzBmP,EAAShU,MAAMoU,EAAOX,GACtB,IACI,IAAIkiB,EAAQ1D,GAAiBC,MAAM,IAAIxb,OAClC1T,KAAI,SAAU4yB,GAAc,OAAOA,EAAW/D,UAAa,IAC3DwC,OAAO,GACRha,EAAU5G,EAAKzQ,KAAI,SAAUzD,GAC7B,OAAO6mB,GAAU7mB,EAAG81B,EAAWpB,iBAClC,MACDsB,EACeF,EAAWH,gBACtBhO,EAAG,CACC+N,MAAOA,EACPU,MAAOA,EACPtb,QAASA,IAGRkb,IAAaF,EAAWH,iBAC7BhO,EAAG,CACC+N,MAAO,OACPU,MAAO,GACPtb,QAAS,CACL+L,GAAU,sDApB1B,CAyBA,MAAOplB,GACHgT,EAAShU,WAAM,EAAQiB,EAAc,CAAC,sBAAuBD,GAAQL,EAAO8S,IAAO,GACtF,EAER,IAtCU,WAAY,CAuC1B,CACJ,CACD,IChHMrC,GAAoD,oBAAX2C,OAAyBA,OAAU,CAAA,EAEhF3C,GAAY2kB,MAAQ,CAAE1I,OAAQ2I,GAAaC,QAAS,KAAMC,sBAC1D9kB,GAAY+kB,mBAAqB,CAAEC,uBD8GR,SAAUvuB,GAAW,MAAQ,CACtD5B,KAFc,kBAGd0X,SAAUyX,GACVvtB,QAASA,EACHzI,OAAOC,OAAO,CAAA,EAAI21B,GAAmBntB,GACrCmtB,GACL"}
1
+ {"version":3,"file":"recorder.js","sources":["../node_modules/rrweb-v1/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/ext/tslib/tslib.es6.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/types.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/utils.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/mutation.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observer.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../node_modules/rrweb-v1/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/index.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record/index.js","../src/utils.ts","../src/loader-recorder.ts"],"sourcesContent":["var NodeType;\n(function (NodeType) {\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\n return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n var _a;\n var host = (_a = n) === null || _a === void 0 ? void 0 : _a.host;\n return Boolean(host && host.shadowRoot && host.shadowRoot === n);\n}\nfunction maskInputValue(_a) {\n var maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\n var text = value || '';\n if (maskInputOptions[tagName.toLowerCase()] ||\n maskInputOptions[type]) {\n if (maskInputFn) {\n text = maskInputFn(text);\n }\n else {\n text = '*'.repeat(text.length);\n }\n }\n return text;\n}\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\nfunction is2DCanvasBlank(canvas) {\n var ctx = canvas.getContext('2d');\n if (!ctx)\n return true;\n var chunkSize = 50;\n for (var x = 0; x < canvas.width; x += chunkSize) {\n for (var y = 0; y < canvas.height; y += chunkSize) {\n var getImageData = ctx.getImageData;\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\n : getImageData;\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\n return false;\n }\n }\n return true;\n}\n\nvar _id = 1;\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\nvar IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName(element) {\n if (element instanceof HTMLFormElement) {\n return 'form';\n }\n var processedTagName = element.tagName.toLowerCase().trim();\n if (tagNameRegex.test(processedTagName)) {\n return 'div';\n }\n return processedTagName;\n}\nfunction getCssRulesString(s) {\n try {\n var rules = s.rules || s.cssRules;\n return rules ? Array.from(rules).map(getCssRuleString).join('') : null;\n }\n catch (error) {\n return null;\n }\n}\nfunction getCssRuleString(rule) {\n var cssStringified = rule.cssText;\n if (isCSSImportRule(rule)) {\n try {\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\n }\n catch (_a) {\n }\n }\n return cssStringified;\n}\nfunction isCSSImportRule(rule) {\n return 'styleSheet' in rule;\n}\nfunction stringifyStyleSheet(sheet) {\n return sheet.cssRules\n ? Array.from(sheet.cssRules)\n .map(function (rule) { return rule.cssText || ''; })\n .join('')\n : '';\n}\nfunction extractOrigin(url) {\n var origin = '';\n if (url.indexOf('//') > -1) {\n origin = url.split('/').slice(0, 3).join('/');\n }\n else {\n origin = url.split('/')[0];\n }\n origin = origin.split('?')[0];\n return origin;\n}\nvar canvasService;\nvar canvasCtx;\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nvar RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absoluteToStylesheet(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 (!RELATIVE_PATH.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 _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\n var part = parts_1[_i];\n if (part === '.') {\n continue;\n }\n else if (part === '..') {\n stack.pop();\n }\n else {\n stack.push(part);\n }\n }\n return \"url(\" + maybeQuote + stack.join('/') + maybeQuote + \")\";\n });\n}\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 chars;\n var match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars = match[0];\n pos += chars.length;\n return chars;\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 }\n else {\n var descriptorsStr = '';\n url = absoluteToDoc(doc, url);\n var inParens = false;\n while (true) {\n var c = attributeValue.charAt(pos);\n if (c === '') {\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (!inParens) {\n if (c === ',') {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (c === '(') {\n inParens = true;\n }\n }\n else {\n if (c === ')') {\n inParens = false;\n }\n }\n descriptorsStr += c;\n pos += 1;\n }\n }\n }\n return output.join(', ');\n}\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === '') {\n return attributeValue;\n }\n var a = doc.createElement('a');\n a.href = attributeValue;\n return a.href;\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\n}\nfunction getHref() {\n var a = document.createElement('a');\n a.href = '';\n return a.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (name === 'src' || (name === 'href' && value)) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'xlink:href' && value && value[0] !== '#') {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'background' &&\n value &&\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'srcset' && value) {\n return getAbsoluteSrcsetString(doc, value);\n }\n else if (name === 'style' && value) {\n return absoluteToStylesheet(value, getHref());\n }\n else if (tagName === 'object' && name === 'data' && value) {\n return absoluteToDoc(doc, value);\n }\n else {\n return value;\n }\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n if (typeof blockClass === 'string') {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n }\n else {\n for (var eIndex = 0; 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 return false;\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\n if (!node) {\n return false;\n }\n if (node.nodeType === node.ELEMENT_NODE) {\n if (typeof maskTextClass === 'string') {\n if (node.classList.contains(maskTextClass)) {\n return true;\n }\n }\n else {\n for (var eIndex = 0; eIndex < node.classList.length; eIndex++) {\n var className = node.classList[eIndex];\n if (maskTextClass.test(className)) {\n return true;\n }\n }\n }\n if (maskTextSelector) {\n if (node.matches(maskTextSelector)) {\n return true;\n }\n }\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector);\n }\n if (node.nodeType === node.TEXT_NODE) {\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector);\n }\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector);\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 }\n catch (error) {\n return;\n }\n if (readyState !== 'complete') {\n var timer_1 = setTimeout(function () {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener('load', function () {\n clearTimeout(timer_1);\n fired = true;\n listener();\n });\n return;\n }\n var blankUrl = 'about:blank';\n if (win.location.href !== blankUrl ||\n iframeEl.src === blankUrl ||\n iframeEl.src === '') {\n setTimeout(listener, 0);\n return;\n }\n iframeEl.addEventListener('load', listener);\n}\nfunction serializeNode(n, options) {\n var _a;\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _b = options.maskInputOptions, maskInputOptions = _b === void 0 ? {} : _b, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _c = options.dataURLOptions, dataURLOptions = _c === void 0 ? {} : _c, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn;\n var rootId;\n if (doc.__sn) {\n var docId = doc.__sn.id;\n rootId = docId === 1 ? undefined : docId;\n }\n switch (n.nodeType) {\n case n.DOCUMENT_NODE:\n if (n.compatMode !== 'CSS1Compat') {\n return {\n type: NodeType.Document,\n childNodes: [],\n compatMode: n.compatMode,\n rootId: rootId\n };\n }\n else {\n return {\n type: NodeType.Document,\n childNodes: [],\n rootId: rootId\n };\n }\n case n.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType.DocumentType,\n name: n.name,\n publicId: n.publicId,\n systemId: n.systemId,\n rootId: rootId\n };\n case n.ELEMENT_NODE:\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\n var tagName = getValidTagName(n);\n var attributes_1 = {};\n for (var _i = 0, _d = Array.from(n.attributes); _i < _d.length; _i++) {\n var _e = _d[_i], name_1 = _e.name, value = _e.value;\n attributes_1[name_1] = transformAttribute(doc, tagName, name_1, value);\n }\n if (tagName === 'link' && inlineStylesheet) {\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\n return s.href === n.href;\n });\n var cssText = null;\n if (stylesheet) {\n cssText = getCssRulesString(stylesheet);\n }\n if (cssText) {\n delete attributes_1.rel;\n delete attributes_1.href;\n attributes_1._cssText = absoluteToStylesheet(cssText, stylesheet.href);\n }\n }\n if (tagName === 'style' &&\n n.sheet &&\n !(n.innerText ||\n n.textContent ||\n '').trim().length) {\n var cssText = getCssRulesString(n.sheet);\n if (cssText) {\n attributes_1._cssText = absoluteToStylesheet(cssText, getHref());\n }\n }\n if (tagName === 'input' ||\n tagName === 'textarea' ||\n tagName === 'select') {\n var value = n.value;\n if (attributes_1.type !== 'radio' &&\n attributes_1.type !== 'checkbox' &&\n attributes_1.type !== 'submit' &&\n attributes_1.type !== 'button' &&\n value) {\n attributes_1.value = maskInputValue({\n type: attributes_1.type,\n tagName: tagName,\n value: value,\n maskInputOptions: maskInputOptions,\n maskInputFn: maskInputFn\n });\n }\n else if (n.checked) {\n attributes_1.checked = n.checked;\n }\n }\n if (tagName === 'option') {\n if (n.selected && !maskInputOptions['select']) {\n attributes_1.selected = true;\n }\n else {\n delete attributes_1.selected;\n }\n }\n if (tagName === 'canvas' && recordCanvas) {\n if (n.__context === '2d') {\n if (!is2DCanvasBlank(n)) {\n attributes_1.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n }\n else if (!('__context' in n)) {\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n var blankCanvas = document.createElement('canvas');\n blankCanvas.width = n.width;\n blankCanvas.height = n.height;\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes_1.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_1 = n;\n var oldValue_1 = image_1.crossOrigin;\n image_1.crossOrigin = 'anonymous';\n var recordInlineImage = function () {\n try {\n canvasService.width = image_1.naturalWidth;\n canvasService.height = image_1.naturalHeight;\n canvasCtx.drawImage(image_1, 0, 0);\n attributes_1.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n catch (err) {\n console.warn(\"Cannot inline img src=\" + image_1.currentSrc + \"! Error: \" + err);\n }\n oldValue_1\n ? (attributes_1.crossOrigin = oldValue_1)\n : delete attributes_1.crossOrigin;\n };\n if (image_1.complete && image_1.naturalWidth !== 0)\n recordInlineImage();\n else\n image_1.onload = recordInlineImage;\n }\n if (tagName === 'audio' || tagName === 'video') {\n attributes_1.rr_mediaState = n.paused\n ? 'paused'\n : 'played';\n attributes_1.rr_mediaCurrentTime = n.currentTime;\n }\n if (n.scrollLeft) {\n attributes_1.rr_scrollLeft = n.scrollLeft;\n }\n if (n.scrollTop) {\n attributes_1.rr_scrollTop = n.scrollTop;\n }\n if (needBlock) {\n var _f = n.getBoundingClientRect(), width = _f.width, height = _f.height;\n attributes_1 = {\n \"class\": attributes_1[\"class\"],\n rr_width: width + \"px\",\n rr_height: height + \"px\"\n };\n }\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes_1.src)) {\n if (!n.contentDocument) {\n attributes_1.rr_src = attributes_1.src;\n }\n delete attributes_1.src;\n }\n return {\n type: NodeType.Element,\n tagName: tagName,\n attributes: attributes_1,\n childNodes: [],\n isSVG: isSVGElement(n) || undefined,\n needBlock: needBlock,\n rootId: rootId\n };\n case n.TEXT_NODE:\n var parentTagName = n.parentNode && n.parentNode.tagName;\n var textContent = n.textContent;\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\n if (isStyle && textContent) {\n try {\n if (n.nextSibling || n.previousSibling) {\n }\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\n textContent = stringifyStyleSheet(n.parentNode.sheet);\n }\n }\n catch (err) {\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \" + err, n);\n }\n textContent = absoluteToStylesheet(textContent, getHref());\n }\n if (isScript) {\n textContent = 'SCRIPT_PLACEHOLDER';\n }\n if (!isStyle &&\n !isScript &&\n needMaskingText(n, maskTextClass, maskTextSelector) &&\n textContent) {\n textContent = maskTextFn\n ? maskTextFn(textContent)\n : textContent.replace(/[\\S]/g, '*');\n }\n return {\n type: NodeType.Text,\n textContent: textContent || '',\n isStyle: isStyle,\n rootId: rootId\n };\n case n.CDATA_SECTION_NODE:\n return {\n type: NodeType.CDATA,\n textContent: '',\n rootId: rootId\n };\n case n.COMMENT_NODE:\n return {\n type: NodeType.Comment,\n textContent: n.textContent || '',\n rootId: rootId\n };\n default:\n return false;\n }\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === undefined) {\n return '';\n }\n else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\n return true;\n }\n else if (sn.type === NodeType.Element) {\n if (slimDOMOptions.script &&\n (sn.tagName === 'script' ||\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'preload' &&\n sn.attributes.as === 'script') ||\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'prefetch' &&\n typeof sn.attributes.href === 'string' &&\n sn.attributes.href.endsWith('.js')))) {\n return true;\n }\n else if (slimDOMOptions.headFavicon &&\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\n (sn.tagName === 'meta' &&\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\n lowerIfExists(sn.attributes.name) === 'application-name' ||\n lowerIfExists(sn.attributes.rel) === 'icon' ||\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\n return true;\n }\n else if (sn.tagName === 'meta') {\n if (slimDOMOptions.headMetaDescKeywords &&\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n }\n else if (slimDOMOptions.headMetaSocial &&\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\n return true;\n }\n else if (slimDOMOptions.headMetaRobots &&\n (lowerIfExists(sn.attributes.name) === 'robots' ||\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\n return true;\n }\n else if (slimDOMOptions.headMetaHttpEquiv &&\n sn.attributes['http-equiv'] !== undefined) {\n return true;\n }\n else if (slimDOMOptions.headMetaAuthorship &&\n (lowerIfExists(sn.attributes.name) === 'author' ||\n lowerIfExists(sn.attributes.name) === 'generator' ||\n lowerIfExists(sn.attributes.name) === 'framework' ||\n lowerIfExists(sn.attributes.name) === 'publisher' ||\n lowerIfExists(sn.attributes.name) === 'progid' ||\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n }\n else if (slimDOMOptions.headMetaVerification &&\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\n lowerIfExists(sn.attributes.name) === 'verification' ||\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n, options) {\n var doc = options.doc, map = options.map, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.inlineStylesheet, inlineStylesheet = _b === void 0 ? true : _b, _c = options.maskInputOptions, maskInputOptions = _c === void 0 ? {} : _c, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _d = options.dataURLOptions, dataURLOptions = _d === void 0 ? {} : _d, _e = options.inlineImages, inlineImages = _e === void 0 ? false : _e, _f = options.recordCanvas, recordCanvas = _f === void 0 ? false : _f, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _g = options.iframeLoadTimeout, iframeLoadTimeout = _g === void 0 ? 5000 : _g, _h = options.keepIframeSrcFn, keepIframeSrcFn = _h === void 0 ? function () { return false; } : _h;\n var _j = options.preserveWhiteSpace, preserveWhiteSpace = _j === void 0 ? true : _j;\n var _serializedNode = serializeNode(n, {\n doc: doc,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\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 });\n if (!_serializedNode) {\n console.warn(n, 'not serialized');\n return null;\n }\n var id;\n if ('__sn' in n) {\n id = n.__sn.id;\n }\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\n (!preserveWhiteSpace &&\n _serializedNode.type === NodeType.Text &&\n !_serializedNode.isStyle &&\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\n id = IGNORED_NODE;\n }\n else {\n id = genId();\n }\n var serializedNode = Object.assign(_serializedNode, { id: id });\n n.__sn = serializedNode;\n if (id === IGNORED_NODE) {\n return null;\n }\n map[id] = n;\n if (onSerialize) {\n onSerialize(n);\n }\n var recordChild = !skipChild;\n if (serializedNode.type === NodeType.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n if (n.shadowRoot)\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType.Document ||\n serializedNode.type === NodeType.Element) &&\n recordChild) {\n if (slimDOMOptions.headWhitespace &&\n _serializedNode.type === NodeType.Element &&\n _serializedNode.tagName === 'head') {\n preserveWhiteSpace = false;\n }\n var bypassOptions = {\n doc: doc,\n map: map,\n blockClass: blockClass,\n blockSelector: blockSelector,\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 keepIframeSrcFn: keepIframeSrcFn\n };\n for (var _i = 0, _k = Array.from(n.childNodes); _i < _k.length; _i++) {\n var childN = _k[_i];\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n if (isElement(n) && n.shadowRoot) {\n for (var _l = 0, _m = Array.from(n.shadowRoot.childNodes); _l < _m.length; _l++) {\n var childN = _m[_l];\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedChildNode.isShadow = true;\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n if (n.parentNode && isShadowRoot(n.parentNode)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType.Element &&\n serializedNode.tagName === 'iframe') {\n onceIframeLoaded(n, function () {\n var iframeDoc = n.contentDocument;\n if (iframeDoc && onIframeLoad) {\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n map: map,\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 keepIframeSrcFn: keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(n, serializedIframeNode);\n }\n }\n }, iframeLoadTimeout);\n }\n return serializedNode;\n}\nfunction snapshot(n, options) {\n var _a = options || {}, _b = _a.blockClass, blockClass = _b === void 0 ? 'rr-block' : _b, _c = _a.blockSelector, blockSelector = _c === void 0 ? null : _c, _d = _a.maskTextClass, maskTextClass = _d === void 0 ? 'rr-mask' : _d, _e = _a.maskTextSelector, maskTextSelector = _e === void 0 ? null : _e, _f = _a.inlineStylesheet, inlineStylesheet = _f === void 0 ? true : _f, _g = _a.inlineImages, inlineImages = _g === void 0 ? false : _g, _h = _a.recordCanvas, recordCanvas = _h === void 0 ? false : _h, _j = _a.maskAllInputs, maskAllInputs = _j === void 0 ? false : _j, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _k = _a.slimDOM, slimDOM = _k === void 0 ? false : _k, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, _l = _a.keepIframeSrcFn, keepIframeSrcFn = _l === void 0 ? function () { return false; } : _l;\n var idNodeMap = {};\n var maskInputOptions = maskAllInputs === true\n ? {\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 }\n : maskAllInputs === false\n ? {\n password: true\n }\n : maskAllInputs;\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\n ?\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === 'all',\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n : slimDOM === false\n ? {}\n : slimDOM;\n return [\n serializeNodeWithId(n, {\n doc: n,\n map: idNodeMap,\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 keepIframeSrcFn: keepIframeSrcFn\n }),\n idNodeMap,\n ];\n}\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\nfunction parse(css, options) {\n if (options === void 0) { options = {}; }\n var lineno = 1;\n var column = 1;\n function updatePosition(str) {\n var lines = str.match(/\\n/g);\n if (lines) {\n lineno += lines.length;\n }\n var i = str.lastIndexOf('\\n');\n column = i === -1 ? column + str.length : str.length - i;\n }\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n var Position = (function () {\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n return Position;\n }());\n Position.prototype.content = css;\n var errorsList = [];\n function error(msg) {\n var err = new Error(options.source + ':' + lineno + ':' + column + ': ' + msg);\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = css;\n if (options.silent) {\n errorsList.push(err);\n }\n else {\n throw err;\n }\n }\n function stylesheet() {\n var rulesList = rules();\n return {\n type: 'stylesheet',\n stylesheet: {\n source: options.source,\n rules: rulesList,\n parsingErrors: errorsList\n }\n };\n }\n function open() {\n return match(/^{\\s*/);\n }\n function close() {\n return match(/^}/);\n }\n function rules() {\n var node;\n var rules = [];\n whitespace();\n comments(rules);\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\n if (node !== false) {\n rules.push(node);\n comments(rules);\n }\n }\n return rules;\n }\n function match(re) {\n var m = re.exec(css);\n if (!m) {\n return;\n }\n var str = m[0];\n updatePosition(str);\n css = css.slice(str.length);\n return m;\n }\n function whitespace() {\n match(/^\\s*/);\n }\n function comments(rules) {\n if (rules === void 0) { rules = []; }\n var c;\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n c = comment();\n }\n return rules;\n }\n function comment() {\n var pos = position();\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\n return;\n }\n var i = 2;\n while ('' !== css.charAt(i) &&\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\n ++i;\n }\n i += 2;\n if ('' === css.charAt(i - 1)) {\n return error('End of comment missing');\n }\n var str = css.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n css = css.slice(i);\n column += 2;\n return pos({\n type: 'comment',\n comment: str\n });\n }\n function selector() {\n var m = match(/^([^{]+)/);\n if (!m) {\n return;\n }\n return trim(m[0])\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\n return m.replace(/,/g, '\\u200C');\n })\n .split(/\\s*(?![^(]*\\)),\\s*/)\n .map(function (s) {\n return s.replace(/\\u200C/g, ',');\n });\n }\n function declaration() {\n var pos = position();\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n if (!propMatch) {\n return;\n }\n var prop = trim(propMatch[0]);\n if (!match(/^:\\s*/)) {\n return error(\"property missing ':'\");\n }\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\n var ret = pos({\n type: 'declaration',\n property: prop.replace(commentre, ''),\n value: val ? trim(val[0]).replace(commentre, '') : ''\n });\n match(/^[;\\s]*/);\n return ret;\n }\n function declarations() {\n var decls = [];\n if (!open()) {\n return error(\"missing '{'\");\n }\n comments(decls);\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n decl = declaration();\n }\n if (!close()) {\n return error(\"missing '}'\");\n }\n return decls;\n }\n function keyframe() {\n var m;\n var vals = [];\n var pos = position();\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\n vals.push(m[1]);\n match(/^,\\s*/);\n }\n if (!vals.length) {\n return;\n }\n return pos({\n type: 'keyframe',\n values: vals,\n declarations: declarations()\n });\n }\n function atkeyframes() {\n var pos = position();\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\n if (!m) {\n return;\n }\n var vendor = m[1];\n m = match(/^([-\\w]+)\\s*/);\n if (!m) {\n return error('@keyframes missing name');\n }\n var name = m[1];\n if (!open()) {\n return error(\"@keyframes missing '{'\");\n }\n var frame;\n var frames = comments();\n while ((frame = keyframe())) {\n frames.push(frame);\n frames = frames.concat(comments());\n }\n if (!close()) {\n return error(\"@keyframes missing '}'\");\n }\n return pos({\n type: 'keyframes',\n name: name,\n vendor: vendor,\n keyframes: frames\n });\n }\n function atsupports() {\n var pos = position();\n var m = match(/^@supports *([^{]+)/);\n if (!m) {\n return;\n }\n var supports = trim(m[1]);\n if (!open()) {\n return error(\"@supports missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@supports missing '}'\");\n }\n return pos({\n type: 'supports',\n supports: supports,\n rules: style\n });\n }\n function athost() {\n var pos = position();\n var m = match(/^@host\\s*/);\n if (!m) {\n return;\n }\n if (!open()) {\n return error(\"@host missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@host missing '}'\");\n }\n return pos({\n type: 'host',\n rules: style\n });\n }\n function atmedia() {\n var pos = position();\n var m = match(/^@media *([^{]+)/);\n if (!m) {\n return;\n }\n var media = trim(m[1]);\n if (!open()) {\n return error(\"@media missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@media missing '}'\");\n }\n return pos({\n type: 'media',\n media: media,\n rules: style\n });\n }\n function atcustommedia() {\n var pos = position();\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\n if (!m) {\n return;\n }\n return pos({\n type: 'custom-media',\n name: trim(m[1]),\n media: trim(m[2])\n });\n }\n function atpage() {\n var pos = position();\n var m = match(/^@page */);\n if (!m) {\n return;\n }\n var sel = selector() || [];\n if (!open()) {\n return error(\"@page missing '{'\");\n }\n var decls = comments();\n var decl;\n while ((decl = declaration())) {\n decls.push(decl);\n decls = decls.concat(comments());\n }\n if (!close()) {\n return error(\"@page missing '}'\");\n }\n return pos({\n type: 'page',\n selectors: sel,\n declarations: decls\n });\n }\n function atdocument() {\n var pos = position();\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\n if (!m) {\n return;\n }\n var vendor = trim(m[1]);\n var doc = trim(m[2]);\n if (!open()) {\n return error(\"@document missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@document missing '}'\");\n }\n return pos({\n type: 'document',\n document: doc,\n vendor: vendor,\n rules: style\n });\n }\n function atfontface() {\n var pos = position();\n var m = match(/^@font-face\\s*/);\n if (!m) {\n return;\n }\n if (!open()) {\n return error(\"@font-face missing '{'\");\n }\n var decls = comments();\n var decl;\n while ((decl = declaration())) {\n decls.push(decl);\n decls = decls.concat(comments());\n }\n if (!close()) {\n return error(\"@font-face missing '}'\");\n }\n return pos({\n type: 'font-face',\n declarations: decls\n });\n }\n var atimport = _compileAtrule('import');\n var atcharset = _compileAtrule('charset');\n var atnamespace = _compileAtrule('namespace');\n function _compileAtrule(name) {\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\n return function () {\n var pos = position();\n var m = match(re);\n if (!m) {\n return;\n }\n var ret = { type: name };\n ret[name] = m[1].trim();\n return pos(ret);\n };\n }\n function atrule() {\n if (css[0] !== '@') {\n return;\n }\n return (atkeyframes() ||\n atmedia() ||\n atcustommedia() ||\n atsupports() ||\n atimport() ||\n atcharset() ||\n atnamespace() ||\n atdocument() ||\n atpage() ||\n athost() ||\n atfontface());\n }\n function rule() {\n var pos = position();\n var sel = selector();\n if (!sel) {\n return error('selector missing');\n }\n comments();\n return pos({\n type: 'rule',\n selectors: sel,\n declarations: declarations()\n });\n }\n return addParent(stylesheet());\n}\nfunction trim(str) {\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\n}\nfunction addParent(obj, parent) {\n var isNode = obj && typeof obj.type === 'string';\n var childParent = isNode ? obj : parent;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var k = _a[_i];\n var value = obj[k];\n if (Array.isArray(value)) {\n value.forEach(function (v) {\n addParent(v, childParent);\n });\n }\n else if (value && typeof value === 'object') {\n addParent(value, childParent);\n }\n }\n if (isNode) {\n Object.defineProperty(obj, 'parent', {\n configurable: true,\n writable: true,\n enumerable: false,\n value: parent || null\n });\n }\n return obj;\n}\n\nvar tagMap = {\n script: 'noscript',\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(n) {\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\n if (tagName === 'link' && n.attributes._cssText) {\n tagName = 'style';\n }\n return tagName;\n}\nfunction escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\nfunction addHoverClass(cssText, cache) {\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\n if (cachedStyle)\n return cachedStyle;\n var ast = parse(cssText, {\n silent: true\n });\n if (!ast.stylesheet) {\n return cssText;\n }\n var selectors = [];\n ast.stylesheet.rules.forEach(function (rule) {\n if ('selectors' in rule) {\n (rule.selectors || []).forEach(function (selector) {\n if (HOVER_SELECTOR.test(selector)) {\n selectors.push(selector);\n }\n });\n }\n });\n if (selectors.length === 0) {\n return cssText;\n }\n var selectorMatcher = new RegExp(selectors\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\n .sort(function (a, b) { return b.length - a.length; })\n .map(function (selector) {\n return escapeRegExp(selector);\n })\n .join('|'), 'g');\n var result = cssText.replace(selectorMatcher, function (selector) {\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\n return selector + \", \" + newSelector;\n });\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\n return result;\n}\nfunction createCache() {\n var stylesWithHoverClass = new Map();\n return {\n stylesWithHoverClass: stylesWithHoverClass\n };\n}\nfunction buildNode(n, options) {\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\n switch (n.type) {\n case NodeType.Document:\n return doc.implementation.createDocument(null, '', null);\n case NodeType.DocumentType:\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\n case NodeType.Element:\n var tagName = getTagName(n);\n var node_1;\n if (n.isSVG) {\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\n }\n else {\n node_1 = doc.createElement(tagName);\n }\n var _loop_1 = function (name_1) {\n if (!n.attributes.hasOwnProperty(name_1)) {\n return \"continue\";\n }\n var value = n.attributes[name_1];\n if (tagName === 'option' && name_1 === 'selected' && value === false) {\n return \"continue\";\n }\n value =\n typeof value === 'boolean' || typeof value === 'number' ? '' : value;\n if (!name_1.startsWith('rr_')) {\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\n if (isRemoteOrDynamicCss && hackCss) {\n value = addHoverClass(value, cache);\n }\n if (isTextarea || isRemoteOrDynamicCss) {\n var child = doc.createTextNode(value);\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.nodeType === node_1.TEXT_NODE) {\n node_1.removeChild(c);\n }\n }\n node_1.appendChild(child);\n return \"continue\";\n }\n try {\n if (n.isSVG && name_1 === 'xlink:href') {\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value);\n }\n else if (name_1 === 'onload' ||\n name_1 === 'onclick' ||\n name_1.substring(0, 7) === 'onmouse') {\n node_1.setAttribute('_' + name_1, value);\n }\n else if (tagName === 'meta' &&\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\n name_1 === 'content') {\n node_1.setAttribute('csp-content', value);\n return \"continue\";\n }\n else if (tagName === 'link' &&\n n.attributes.rel === 'preload' &&\n n.attributes.as === 'script') {\n }\n else if (tagName === 'link' &&\n n.attributes.rel === 'prefetch' &&\n typeof n.attributes.href === 'string' &&\n n.attributes.href.endsWith('.js')) {\n }\n else if (tagName === 'img' &&\n n.attributes.srcset &&\n n.attributes.rr_dataURL) {\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\n }\n else {\n node_1.setAttribute(name_1, value);\n }\n }\n catch (error) {\n }\n }\n else {\n if (tagName === 'canvas' && name_1 === 'rr_dataURL') {\n var image_1 = document.createElement('img');\n image_1.src = value;\n image_1.onload = function () {\n var ctx = node_1.getContext('2d');\n if (ctx) {\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\n }\n };\n }\n else if (tagName === 'img' && name_1 === 'rr_dataURL') {\n var image = node_1;\n if (!image.currentSrc.startsWith('data:')) {\n image.setAttribute('rrweb-original-src', n.attributes.src);\n image.src = value;\n }\n }\n if (name_1 === 'rr_width') {\n node_1.style.width = value;\n }\n else if (name_1 === 'rr_height') {\n node_1.style.height = value;\n }\n else if (name_1 === 'rr_mediaCurrentTime') {\n node_1.currentTime = n.attributes\n .rr_mediaCurrentTime;\n }\n else if (name_1 === 'rr_mediaState') {\n switch (value) {\n case 'played':\n node_1\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\n break;\n case 'paused':\n node_1.pause();\n break;\n }\n }\n }\n };\n for (var name_1 in n.attributes) {\n _loop_1(name_1);\n }\n if (n.isShadowHost) {\n if (!node_1.shadowRoot) {\n node_1.attachShadow({ mode: 'open' });\n }\n else {\n while (node_1.shadowRoot.firstChild) {\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\n }\n }\n }\n return node_1;\n case NodeType.Text:\n return doc.createTextNode(n.isStyle && hackCss\n ? addHoverClass(n.textContent, cache)\n : n.textContent);\n case NodeType.CDATA:\n return doc.createCDATASection(n.textContent);\n case NodeType.Comment:\n return doc.createComment(n.textContent);\n default:\n return null;\n }\n}\nfunction buildNodeWithSN(n, options) {\n var doc = options.doc, map = options.map, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\n if (!node) {\n return null;\n }\n if (n.rootId) {\n console.assert(map[n.rootId] === doc, 'Target document should has the same root id.');\n }\n if (n.type === NodeType.Document) {\n doc.close();\n doc.open();\n if (n.compatMode === 'BackCompat' &&\n n.childNodes &&\n n.childNodes[0].type !== NodeType.DocumentType) {\n if (n.childNodes[0].type === NodeType.Element &&\n 'xmlns' in n.childNodes[0].attributes &&\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\n }\n else {\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\n }\n }\n node = doc;\n }\n node.__sn = n;\n map[n.id] = node;\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\n !skipChild) {\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\n var childN = _c[_i];\n var childNode = buildNodeWithSN(childN, {\n doc: doc,\n map: map,\n skipChild: false,\n hackCss: hackCss,\n afterAppend: afterAppend,\n cache: cache\n });\n if (!childNode) {\n console.warn('Failed to rebuild', childN);\n continue;\n }\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\n node.shadowRoot.appendChild(childNode);\n }\n else {\n node.appendChild(childNode);\n }\n if (afterAppend) {\n afterAppend(childNode);\n }\n }\n }\n return node;\n}\nfunction visit(idNodeMap, onVisit) {\n function walk(node) {\n onVisit(node);\n }\n for (var key in idNodeMap) {\n if (idNodeMap[key]) {\n walk(idNodeMap[key]);\n }\n }\n}\nfunction handleScroll(node) {\n var n = node.__sn;\n if (n.type !== NodeType.Element) {\n return;\n }\n var el = node;\n for (var name_2 in n.attributes) {\n if (!(n.attributes.hasOwnProperty(name_2) && name_2.startsWith('rr_'))) {\n continue;\n }\n var value = n.attributes[name_2];\n if (name_2 === 'rr_scrollLeft') {\n el.scrollLeft = value;\n }\n if (name_2 === 'rr_scrollTop') {\n el.scrollTop = value;\n }\n }\n}\nfunction rebuild(n, options) {\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache;\n var idNodeMap = {};\n var node = buildNodeWithSN(n, {\n doc: doc,\n map: idNodeMap,\n skipChild: false,\n hackCss: hackCss,\n afterAppend: afterAppend,\n cache: cache\n });\n visit(idNodeMap, function (visitedNode) {\n if (onVisit) {\n onVisit(visitedNode);\n }\n handleScroll(visitedNode);\n });\n return [node, idNodeMap];\n}\n\nexport { IGNORED_NODE, NodeType, addHoverClass, buildNodeWithSN, createCache, is2DCanvasBlank, isElement, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\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\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\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 __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nexport { __assign, __read, __rest, __spreadArray, __values };\n","var EventType;\n(function (EventType) {\n EventType[EventType[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType[EventType[\"Load\"] = 1] = \"Load\";\n EventType[EventType[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType[EventType[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType[EventType[\"Meta\"] = 4] = \"Meta\";\n EventType[EventType[\"Custom\"] = 5] = \"Custom\";\n EventType[EventType[\"Plugin\"] = 6] = \"Plugin\";\n})(EventType || (EventType = {}));\nvar IncrementalSource;\n(function (IncrementalSource) {\n IncrementalSource[IncrementalSource[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource[IncrementalSource[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource[IncrementalSource[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource[IncrementalSource[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource[IncrementalSource[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource[IncrementalSource[\"Input\"] = 5] = \"Input\";\n IncrementalSource[IncrementalSource[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource[IncrementalSource[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource[IncrementalSource[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource[IncrementalSource[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource[IncrementalSource[\"Font\"] = 10] = \"Font\";\n IncrementalSource[IncrementalSource[\"Log\"] = 11] = \"Log\";\n IncrementalSource[IncrementalSource[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource[IncrementalSource[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n})(IncrementalSource || (IncrementalSource = {}));\nvar MouseInteractions;\n(function (MouseInteractions) {\n MouseInteractions[MouseInteractions[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions[MouseInteractions[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions[MouseInteractions[\"Click\"] = 2] = \"Click\";\n MouseInteractions[MouseInteractions[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions[MouseInteractions[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions[MouseInteractions[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions[MouseInteractions[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions[MouseInteractions[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions[MouseInteractions[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions[MouseInteractions[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions[MouseInteractions[\"TouchCancel\"] = 10] = \"TouchCancel\";\n})(MouseInteractions || (MouseInteractions = {}));\nvar CanvasContext;\n(function (CanvasContext) {\n CanvasContext[CanvasContext[\"2D\"] = 0] = \"2D\";\n CanvasContext[CanvasContext[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext[CanvasContext[\"WebGL2\"] = 2] = \"WebGL2\";\n})(CanvasContext || (CanvasContext = {}));\nvar MediaInteractions;\n(function (MediaInteractions) {\n MediaInteractions[MediaInteractions[\"Play\"] = 0] = \"Play\";\n MediaInteractions[MediaInteractions[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions[MediaInteractions[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions[MediaInteractions[\"VolumeChange\"] = 3] = \"VolumeChange\";\n})(MediaInteractions || (MediaInteractions = {}));\nvar ReplayerEvents;\n(function (ReplayerEvents) {\n ReplayerEvents[\"Start\"] = \"start\";\n ReplayerEvents[\"Pause\"] = \"pause\";\n ReplayerEvents[\"Resume\"] = \"resume\";\n ReplayerEvents[\"Resize\"] = \"resize\";\n ReplayerEvents[\"Finish\"] = \"finish\";\n ReplayerEvents[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents[\"EventCast\"] = \"event-cast\";\n ReplayerEvents[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents[\"Flush\"] = \"flush\";\n ReplayerEvents[\"StateChange\"] = \"state-change\";\n ReplayerEvents[\"PlayBack\"] = \"play-back\";\n})(ReplayerEvents || (ReplayerEvents = {}));\n\nexport { CanvasContext, EventType, IncrementalSource, MediaInteractions, MouseInteractions, ReplayerEvents };\n","import { __values } from '../ext/tslib/tslib.es6.js';\nimport { IncrementalSource } from './types.js';\nimport { IGNORED_NODE, isShadowRoot, NodeType } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target) {\n if (target === void 0) { target = document; }\n var options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return function () { return target.removeEventListener(type, fn, options); };\n}\nfunction createMirror() {\n return {\n map: {},\n getId: function (n) {\n if (!n || !n.__sn) {\n return -1;\n }\n return n.__sn.id;\n },\n getNode: function (id) {\n return this.map[id] || null;\n },\n removeNodeFromMap: function (n) {\n var _this = this;\n var id = n.__sn && n.__sn.id;\n delete this.map[id];\n if (n.childNodes) {\n n.childNodes.forEach(function (child) {\n return _this.removeNodeFromMap(child);\n });\n }\n },\n has: function (id) {\n return this.map.hasOwnProperty(id);\n },\n reset: function () {\n this.map = {};\n },\n };\n}\nvar DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\n '\\r\\n' +\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n '\\r\\n' +\n 'or you can use record.mirror to access the mirror instance during recording.';\nvar _mirror = {\n map: {},\n getId: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset: function () {\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 (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 (arg) {\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 var args = arguments;\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 }\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\n ? d\n : {\n set: function (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 () { return hookSetter(target, key, original || {}, true); };\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function () { };\n }\n var original_1 = source[name];\n var wrapped = replacement(original_1);\n if (typeof wrapped === 'function') {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original_1,\n },\n });\n }\n source[name] = wrapped;\n return function () {\n source[name] = original_1;\n };\n }\n catch (_a) {\n return function () { };\n }\n}\nfunction getWindowHeight() {\n return (window.innerHeight ||\n (document.documentElement && document.documentElement.clientHeight) ||\n (document.body && document.body.clientHeight));\n}\nfunction getWindowWidth() {\n return (window.innerWidth ||\n (document.documentElement && document.documentElement.clientWidth) ||\n (document.body && document.body.clientWidth));\n}\nfunction isBlocked(node, blockClass) {\n if (!node) {\n return false;\n }\n if (node.nodeType === node.ELEMENT_NODE) {\n var needBlock_1 = false;\n if (typeof blockClass === 'string') {\n if (node.closest !== undefined) {\n return node.closest('.' + blockClass) !== null;\n }\n else {\n needBlock_1 = node.classList.contains(blockClass);\n }\n }\n else {\n node.classList.forEach(function (className) {\n if (blockClass.test(className)) {\n needBlock_1 = true;\n }\n });\n }\n return needBlock_1 || isBlocked(node.parentNode, blockClass);\n }\n if (node.nodeType === node.TEXT_NODE) {\n return isBlocked(node.parentNode, blockClass);\n }\n return isBlocked(node.parentNode, blockClass);\n}\nfunction isIgnored(n) {\n if ('__sn' in n) {\n return n.__sn.id === IGNORED_NODE;\n }\n return false;\n}\nfunction isAncestorRemoved(target, mirror) {\n if (isShadowRoot(target)) {\n return false;\n }\n var id = mirror.getId(target);\n if (!mirror.has(id)) {\n return true;\n }\n if (target.parentNode &&\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!target.parentNode) {\n return true;\n }\n return isAncestorRemoved(target.parentNode, mirror);\n}\nfunction isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill(win) {\n if (win === void 0) { win = window; }\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype\n .forEach;\n }\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype\n .forEach;\n }\n if (!Node.prototype.contains) {\n Node.prototype.contains = function contains(node) {\n if (!(0 in arguments)) {\n throw new TypeError('1 argument is required');\n }\n do {\n if (this === node) {\n return true;\n }\n } while ((node = node && node.parentNode));\n return false;\n };\n }\n}\nvar TreeIndex = (function () {\n function TreeIndex() {\n this.reset();\n }\n TreeIndex.prototype.add = function (mutation) {\n var parentTreeNode = this.indexes.get(mutation.parentId);\n var treeNode = {\n id: mutation.node.id,\n mutation: mutation,\n children: [],\n texts: [],\n attributes: [],\n };\n if (!parentTreeNode) {\n this.tree[treeNode.id] = treeNode;\n }\n else {\n treeNode.parent = parentTreeNode;\n parentTreeNode.children[treeNode.id] = treeNode;\n }\n this.indexes.set(treeNode.id, treeNode);\n };\n TreeIndex.prototype.remove = function (mutation, mirror) {\n var _this = this;\n var parentTreeNode = this.indexes.get(mutation.parentId);\n var treeNode = this.indexes.get(mutation.id);\n var deepRemoveFromMirror = function (id) {\n _this.removeIdSet.add(id);\n var node = mirror.getNode(id);\n node === null || node === void 0 ? void 0 : node.childNodes.forEach(function (childNode) {\n if ('__sn' in childNode) {\n deepRemoveFromMirror(childNode.__sn.id);\n }\n });\n };\n var deepRemoveFromTreeIndex = function (node) {\n _this.removeIdSet.add(node.id);\n Object.values(node.children).forEach(function (n) { return deepRemoveFromTreeIndex(n); });\n var _treeNode = _this.indexes.get(node.id);\n if (_treeNode) {\n var _parentTreeNode = _treeNode.parent;\n if (_parentTreeNode) {\n delete _treeNode.parent;\n delete _parentTreeNode.children[_treeNode.id];\n _this.indexes.delete(mutation.id);\n }\n }\n };\n if (!treeNode) {\n this.removeNodeMutations.push(mutation);\n deepRemoveFromMirror(mutation.id);\n }\n else if (!parentTreeNode) {\n delete this.tree[treeNode.id];\n this.indexes.delete(treeNode.id);\n deepRemoveFromTreeIndex(treeNode);\n }\n else {\n delete treeNode.parent;\n delete parentTreeNode.children[treeNode.id];\n this.indexes.delete(mutation.id);\n deepRemoveFromTreeIndex(treeNode);\n }\n };\n TreeIndex.prototype.text = function (mutation) {\n var treeNode = this.indexes.get(mutation.id);\n if (treeNode) {\n treeNode.texts.push(mutation);\n }\n else {\n this.textMutations.push(mutation);\n }\n };\n TreeIndex.prototype.attribute = function (mutation) {\n var treeNode = this.indexes.get(mutation.id);\n if (treeNode) {\n treeNode.attributes.push(mutation);\n }\n else {\n this.attributeMutations.push(mutation);\n }\n };\n TreeIndex.prototype.scroll = function (d) {\n this.scrollMap.set(d.id, d);\n };\n TreeIndex.prototype.input = function (d) {\n this.inputMap.set(d.id, d);\n };\n TreeIndex.prototype.flush = function () {\n var e_1, _a, e_2, _b;\n var _this = this;\n var _c = this, tree = _c.tree, removeNodeMutations = _c.removeNodeMutations, textMutations = _c.textMutations, attributeMutations = _c.attributeMutations;\n var batchMutationData = {\n source: IncrementalSource.Mutation,\n removes: removeNodeMutations,\n texts: textMutations,\n attributes: attributeMutations,\n adds: [],\n };\n var walk = function (treeNode, removed) {\n if (removed) {\n _this.removeIdSet.add(treeNode.id);\n }\n batchMutationData.texts = batchMutationData.texts\n .concat(removed ? [] : treeNode.texts)\n .filter(function (m) { return !_this.removeIdSet.has(m.id); });\n batchMutationData.attributes = batchMutationData.attributes\n .concat(removed ? [] : treeNode.attributes)\n .filter(function (m) { return !_this.removeIdSet.has(m.id); });\n if (!_this.removeIdSet.has(treeNode.id) &&\n !_this.removeIdSet.has(treeNode.mutation.parentId) &&\n !removed) {\n batchMutationData.adds.push(treeNode.mutation);\n if (treeNode.children) {\n Object.values(treeNode.children).forEach(function (n) { return walk(n, false); });\n }\n }\n else {\n Object.values(treeNode.children).forEach(function (n) { return walk(n, true); });\n }\n };\n Object.values(tree).forEach(function (n) { return walk(n, false); });\n try {\n for (var _d = __values(this.scrollMap.keys()), _e = _d.next(); !_e.done; _e = _d.next()) {\n var id = _e.value;\n if (this.removeIdSet.has(id)) {\n this.scrollMap.delete(id);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _f = __values(this.inputMap.keys()), _g = _f.next(); !_g.done; _g = _f.next()) {\n var id = _g.value;\n if (this.removeIdSet.has(id)) {\n this.inputMap.delete(id);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var scrollMap = new Map(this.scrollMap);\n var inputMap = new Map(this.inputMap);\n this.reset();\n return {\n mutationData: batchMutationData,\n scrollMap: scrollMap,\n inputMap: inputMap,\n };\n };\n TreeIndex.prototype.reset = function () {\n this.tree = [];\n this.indexes = new Map();\n this.removeNodeMutations = [];\n this.textMutations = [];\n this.attributeMutations = [];\n this.removeIdSet = new Set();\n this.scrollMap = new Map();\n this.inputMap = new Map();\n };\n TreeIndex.prototype.idRemoved = function (id) {\n return this.removeIdSet.has(id);\n };\n return TreeIndex;\n}());\nfunction queueToResolveTrees(queue) {\n var e_3, _a;\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 try {\n for (var queue_1 = __values(queue), queue_1_1 = queue_1.next(); !queue_1_1.done; queue_1_1 = queue_1.next()) {\n var mutation = queue_1_1.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 }\n else {\n var idx = queueNodeTrees.indexOf(nextInTree);\n queueNodeTrees.splice(idx, 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 }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (queue_1_1 && !queue_1_1.done && (_a = queue_1.return)) _a.call(queue_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return queueNodeTrees;\n}\nfunction iterateResolveTree(tree, cb) {\n cb(tree.value);\n for (var i = tree.children.length - 1; i >= 0; i--) {\n iterateResolveTree(tree.children[i], cb);\n }\n}\nfunction isIframeINode(node) {\n if ('__sn' in node) {\n return (node.__sn.type === NodeType.Element && node.__sn.tagName === 'iframe');\n }\n return false;\n}\nfunction getBaseDimension(node, rootIframe) {\n var _a, _b;\n var frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? 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 +\n frameBaseDimension.x,\n y: frameDimension.y * frameBaseDimension.relativeScale +\n frameBaseDimension.y,\n relativeScale: relativeScale,\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\n };\n}\nfunction hasShadowRoot(n) {\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\n}\n\nexport { TreeIndex, _mirror, createMirror, getBaseDimension, getWindowHeight, getWindowWidth, hasShadowRoot, hookSetter, isAncestorRemoved, isBlocked, isIframeINode, isIgnored, isTouchEvent, iterateResolveTree, on, patch, polyfill, queueToResolveTrees, throttle };\n","import { __values } from '../../ext/tslib/tslib.es6.js';\nimport { isShadowRoot, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isAncestorRemoved, isIframeINode, hasShadowRoot } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\n return '__ln' in n;\n}\nvar DoubleLinkedList = (function () {\n function DoubleLinkedList() {\n this.length = 0;\n this.head = null;\n }\n DoubleLinkedList.prototype.get = function (position) {\n if (position >= this.length) {\n throw new Error('Position outside of list range');\n }\n var current = this.head;\n for (var index = 0; index < position; index++) {\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\n }\n return current;\n };\n DoubleLinkedList.prototype.addNode = function (n) {\n var node = {\n value: n,\n previous: null,\n next: null,\n };\n n.__ln = node;\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n var current = n.previousSibling.__ln.next;\n node.next = current;\n node.previous = n.previousSibling.__ln;\n n.previousSibling.__ln.next = node;\n if (current) {\n current.previous = node;\n }\n }\n else if (n.nextSibling &&\n isNodeInLinkedList(n.nextSibling) &&\n n.nextSibling.__ln.previous) {\n var current = n.nextSibling.__ln.previous;\n node.previous = current;\n node.next = n.nextSibling.__ln;\n n.nextSibling.__ln.previous = node;\n if (current) {\n current.next = node;\n }\n }\n else {\n if (this.head) {\n this.head.previous = node;\n }\n node.next = this.head;\n this.head = node;\n }\n this.length++;\n };\n DoubleLinkedList.prototype.removeNode = function (n) {\n var current = n.__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 }\n }\n else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n }\n }\n if (n.__ln) {\n delete n.__ln;\n }\n this.length--;\n };\n return DoubleLinkedList;\n}());\nvar moveKey = function (id, parentId) { return \"\".concat(id, \"@\").concat(parentId); };\nfunction isINode(n) {\n return '__sn' in n;\n}\nvar MutationBuffer = (function () {\n function MutationBuffer() {\n var _this = this;\n this.frozen = false;\n this.locked = false;\n this.texts = [];\n this.attributes = [];\n this.removes = [];\n this.mapRemoves = [];\n this.movedMap = {};\n this.addedSet = new Set();\n this.movedSet = new Set();\n this.droppedSet = new Set();\n this.processMutations = function (mutations) {\n mutations.forEach(_this.processMutation);\n _this.emit();\n };\n this.emit = function () {\n var e_1, _a, e_2, _b;\n if (_this.frozen || _this.locked) {\n return;\n }\n var adds = [];\n var addList = new DoubleLinkedList();\n var getNextId = function (n) {\n var ns = n;\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 (n) {\n var _a, _b, _c, _d, _e;\n var shadowHost = n.getRootNode\n ? (_a = n.getRootNode()) === null || _a === void 0 ? void 0 : _a.host\n : null;\n var rootShadowHost = shadowHost;\n while ((_c = (_b = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _b === void 0 ? void 0 : _b.call(rootShadowHost)) === null || _c === void 0 ? void 0 : _c.host)\n rootShadowHost =\n ((_e = (_d = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _d === void 0 ? void 0 : _d.call(rootShadowHost)) === null || _e === void 0 ? void 0 : _e.host) ||\n null;\n var notInDoc = !_this.doc.contains(n) &&\n (rootShadowHost === null || !_this.doc.contains(rootShadowHost));\n if (!n.parentNode || notInDoc) {\n return;\n }\n var parentId = isShadowRoot(n.parentNode)\n ? _this.mirror.getId(shadowHost)\n : _this.mirror.getId(n.parentNode);\n var nextId = getNextId(n);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n);\n }\n var sn = serializeNodeWithId(n, {\n doc: _this.doc,\n map: _this.mirror.map,\n blockClass: _this.blockClass,\n blockSelector: _this.blockSelector,\n maskTextClass: _this.maskTextClass,\n maskTextSelector: _this.maskTextSelector,\n skipChild: true,\n inlineStylesheet: _this.inlineStylesheet,\n maskInputOptions: _this.maskInputOptions,\n maskTextFn: _this.maskTextFn,\n maskInputFn: _this.maskInputFn,\n slimDOMOptions: _this.slimDOMOptions,\n recordCanvas: _this.recordCanvas,\n inlineImages: _this.inlineImages,\n onSerialize: function (currentN) {\n if (isIframeINode(currentN)) {\n _this.iframeManager.addIframe(currentN);\n }\n if (hasShadowRoot(n)) {\n _this.shadowDomManager.addShadowRoot(n.shadowRoot, document);\n }\n },\n onIframeLoad: function (iframe, childSn) {\n _this.iframeManager.attachIframe(iframe, childSn);\n _this.shadowDomManager.observeAttachShadow(iframe);\n },\n });\n if (sn) {\n adds.push({\n parentId: parentId,\n nextId: nextId,\n node: sn,\n });\n }\n };\n while (_this.mapRemoves.length) {\n _this.mirror.removeNodeFromMap(_this.mapRemoves.shift());\n }\n try {\n for (var _c = __values(_this.movedSet), _d = _c.next(); !_d.done; _d = _c.next()) {\n var n = _d.value;\n if (isParentRemoved(_this.removes, n, _this.mirror) &&\n !_this.movedSet.has(n.parentNode)) {\n continue;\n }\n pushAdd(n);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _e = __values(_this.addedSet), _f = _e.next(); !_f.done; _f = _e.next()) {\n var n = _f.value;\n if (!isAncestorInSet(_this.droppedSet, n) &&\n !isParentRemoved(_this.removes, n, _this.mirror)) {\n pushAdd(n);\n }\n else if (isAncestorInSet(_this.movedSet, n)) {\n pushAdd(n);\n }\n else {\n _this.droppedSet.add(n);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var candidate = null;\n while (addList.length) {\n var node = null;\n if (candidate) {\n var parentId = _this.mirror.getId(candidate.value.parentNode);\n var nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node = candidate;\n }\n }\n if (!node) {\n for (var index = addList.length - 1; index >= 0; index--) {\n var _node = addList.get(index);\n if (_node) {\n var parentId = _this.mirror.getId(_node.value.parentNode);\n var nextId = getNextId(_node.value);\n if (parentId !== -1 && nextId !== -1) {\n node = _node;\n break;\n }\n }\n }\n }\n if (!node) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node.previous;\n addList.removeNode(node.value);\n pushAdd(node.value);\n }\n var payload = {\n texts: _this.texts\n .map(function (text) { return ({\n id: _this.mirror.getId(text.node),\n value: text.value,\n }); })\n .filter(function (text) { return _this.mirror.has(text.id); }),\n attributes: _this.attributes\n .map(function (attribute) { return ({\n id: _this.mirror.getId(attribute.node),\n attributes: attribute.attributes,\n }); })\n .filter(function (attribute) { return _this.mirror.has(attribute.id); }),\n removes: _this.removes,\n adds: adds,\n };\n if (!payload.texts.length &&\n !payload.attributes.length &&\n !payload.removes.length &&\n !payload.adds.length) {\n return;\n }\n _this.texts = [];\n _this.attributes = [];\n _this.removes = [];\n _this.addedSet = new Set();\n _this.movedSet = new Set();\n _this.droppedSet = new Set();\n _this.movedMap = {};\n _this.mutationCb(payload);\n };\n this.processMutation = function (m) {\n var e_3, _a, e_4, _b;\n if (isIgnored(m.target)) {\n return;\n }\n switch (m.type) {\n case 'characterData': {\n var value = m.target.textContent;\n if (!isBlocked(m.target, _this.blockClass) && value !== m.oldValue) {\n _this.texts.push({\n value: needMaskingText(m.target, _this.maskTextClass, _this.maskTextSelector) && value\n ? _this.maskTextFn\n ? _this.maskTextFn(value)\n : value.replace(/[\\S]/g, '*')\n : value,\n node: m.target,\n });\n }\n break;\n }\n case 'attributes': {\n var target = m.target;\n var value = m.target.getAttribute(m.attributeName);\n if (m.attributeName === 'value') {\n value = maskInputValue({\n maskInputOptions: _this.maskInputOptions,\n tagName: m.target.tagName,\n type: m.target.getAttribute('type'),\n value: value,\n maskInputFn: _this.maskInputFn,\n });\n }\n if (isBlocked(m.target, _this.blockClass) || value === m.oldValue) {\n return;\n }\n var item = _this.attributes.find(function (a) { return a.node === m.target; });\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n };\n _this.attributes.push(item);\n }\n if (m.attributeName === 'style') {\n var old = _this.doc.createElement('span');\n if (m.oldValue) {\n old.setAttribute('style', m.oldValue);\n }\n if (item.attributes.style === undefined ||\n item.attributes.style === null) {\n item.attributes.style = {};\n }\n var styleObj = item.attributes.style;\n try {\n for (var _c = __values(Array.from(target.style)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var pname = _d.value;\n var newValue = target.style.getPropertyValue(pname);\n var newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) ||\n newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === '') {\n styleObj[pname] = newValue;\n }\n else {\n styleObj[pname] = [newValue, newPriority];\n }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_3) throw e_3.error; }\n }\n try {\n for (var _e = __values(Array.from(old.style)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var pname = _f.value;\n if (target.style.getPropertyValue(pname) === '') {\n styleObj[pname] = false;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n else {\n item.attributes[m.attributeName] = transformAttribute(_this.doc, m.target.tagName, m.attributeName, value);\n }\n break;\n }\n case 'childList': {\n m.addedNodes.forEach(function (n) { return _this.genAdds(n, m.target); });\n m.removedNodes.forEach(function (n) {\n var nodeId = _this.mirror.getId(n);\n var parentId = isShadowRoot(m.target)\n ? _this.mirror.getId(m.target.host)\n : _this.mirror.getId(m.target);\n if (isBlocked(m.target, _this.blockClass) || isIgnored(n)) {\n return;\n }\n if (_this.addedSet.has(n)) {\n deepDelete(_this.addedSet, n);\n _this.droppedSet.add(n);\n }\n else if (_this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, _this.mirror)) ;\n else if (_this.movedSet.has(n) &&\n _this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(_this.movedSet, n);\n }\n else {\n _this.removes.push({\n parentId: parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) ? true : undefined,\n });\n }\n _this.mapRemoves.push(n);\n });\n break;\n }\n }\n };\n this.genAdds = function (n, target) {\n if (target && isBlocked(target, _this.blockClass)) {\n return;\n }\n if (isINode(n)) {\n if (isIgnored(n)) {\n return;\n }\n _this.movedSet.add(n);\n var targetId = null;\n if (target && isINode(target)) {\n targetId = target.__sn.id;\n }\n if (targetId) {\n _this.movedMap[moveKey(n.__sn.id, targetId)] = true;\n }\n }\n else {\n _this.addedSet.add(n);\n _this.droppedSet.delete(n);\n }\n if (!isBlocked(n, _this.blockClass))\n n.childNodes.forEach(function (childN) { return _this.genAdds(childN); });\n };\n }\n MutationBuffer.prototype.init = function (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 'recordCanvas',\n 'inlineImages',\n 'slimDOMOptions',\n 'doc',\n 'mirror',\n 'iframeManager',\n 'shadowDomManager',\n 'canvasManager',\n ].forEach(function (key) {\n _this[key] = options[key];\n });\n };\n MutationBuffer.prototype.freeze = function () {\n this.frozen = true;\n this.canvasManager.freeze();\n };\n MutationBuffer.prototype.unfreeze = function () {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n };\n MutationBuffer.prototype.isFrozen = function () {\n return this.frozen;\n };\n MutationBuffer.prototype.lock = function () {\n this.locked = true;\n this.canvasManager.lock();\n };\n MutationBuffer.prototype.unlock = function () {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n };\n MutationBuffer.prototype.reset = function () {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n };\n return MutationBuffer;\n}());\nfunction deepDelete(addsSet, n) {\n addsSet.delete(n);\n n.childNodes.forEach(function (childN) { return deepDelete(addsSet, childN); });\n}\nfunction isParentRemoved(removes, n, mirror) {\n var parentNode = n.parentNode;\n if (!parentNode) {\n return false;\n }\n var parentId = mirror.getId(parentNode);\n if (removes.some(function (r) { return r.id === parentId; })) {\n return true;\n }\n return isParentRemoved(removes, parentNode, mirror);\n}\nfunction isAncestorInSet(set, n) {\n var parentNode = n.parentNode;\n if (!parentNode) {\n return false;\n }\n if (set.has(parentNode)) {\n return true;\n }\n return isAncestorInSet(set, parentNode);\n}\n\nexport default MutationBuffer;\n","import { __read, __values, __spreadArray, __assign } from '../../ext/tslib/tslib.es6.js';\nimport { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isTouchEvent, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch } from '../utils.js';\nimport { IncrementalSource, MouseInteractions } from '../types.js';\nimport MutationBuffer from './mutation.js';\n\nvar mutationBuffers = [];\nvar isCSSGroupingRuleSupported = typeof CSSGroupingRule !== 'undefined';\nvar isCSSMediaRuleSupported = typeof CSSMediaRule !== 'undefined';\nvar isCSSSupportsRuleSupported = typeof CSSSupportsRule !== 'undefined';\nvar isCSSConditionRuleSupported = typeof CSSConditionRule !== 'undefined';\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 }\n else if ('path' in event && event.path.length) {\n return event.path[0];\n }\n return event.target;\n }\n catch (_a) {\n return event.target;\n }\n}\nfunction initMutationObserver(options, rootEl) {\n var _a, _b;\n var mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n var mutationObserverCtor = window.MutationObserver ||\n window.__rrMutationObserver;\n var 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');\n if (angularZoneSymbol &&\n window[angularZoneSymbol]) {\n mutationObserverCtor = window[angularZoneSymbol];\n }\n var observer = new mutationObserverCtor(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(_a) {\n var mousemoveCb = _a.mousemoveCb, sampling = _a.sampling, doc = _a.doc, mirror = _a.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'\n ? sampling.mousemoveCallback\n : 500;\n var positions = [];\n var timeBaseline;\n var wrappedCb = throttle(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 = throttle(function (evt) {\n var target = getEventTarget(evt);\n var _a = isTouchEvent(evt)\n ? evt.changedTouches[0]\n : evt, clientX = _a.clientX, clientY = _a.clientY;\n if (!timeBaseline) {\n timeBaseline = Date.now();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror.getId(target),\n timeOffset: Date.now() - timeBaseline,\n });\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\n ? IncrementalSource.Drag\n : evt instanceof MouseEvent\n ? IncrementalSource.MouseMove\n : 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 function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction initMouseInteractionObserver(_a) {\n var mouseInteractionCb = _a.mouseInteractionCb, doc = _a.doc, mirror = _a.mirror, blockClass = _a.blockClass, sampling = _a.sampling;\n if (sampling.mouseInteraction === false) {\n return function () { };\n }\n var disableMap = sampling.mouseInteraction === true ||\n sampling.mouseInteraction === undefined\n ? {}\n : sampling.mouseInteraction;\n var handlers = [];\n var getHandler = function (eventKey) {\n return function (event) {\n var target = getEventTarget(event);\n if (isBlocked(target, blockClass)) {\n return;\n }\n var e = isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e) {\n return;\n }\n var id = mirror.getId(target);\n var clientX = e.clientX, clientY = e.clientY;\n mouseInteractionCb({\n type: MouseInteractions[eventKey],\n id: id,\n x: clientX,\n y: clientY,\n });\n };\n };\n Object.keys(MouseInteractions)\n .filter(function (key) {\n return Number.isNaN(Number(key)) &&\n !key.endsWith('_Departed') &&\n disableMap[key] !== false;\n })\n .forEach(function (eventKey) {\n var eventName = eventKey.toLowerCase();\n var handler = getHandler(eventKey);\n handlers.push(on(eventName, handler, doc));\n });\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction initScrollObserver(_a) {\n var scrollCb = _a.scrollCb, doc = _a.doc, mirror = _a.mirror, blockClass = _a.blockClass, sampling = _a.sampling;\n var updatePosition = throttle(function (evt) {\n var target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass)) {\n return;\n }\n var id = mirror.getId(target);\n if (target === doc) {\n var scrollEl = (doc.scrollingElement || doc.documentElement);\n scrollCb({\n id: id,\n x: scrollEl.scrollLeft,\n y: scrollEl.scrollTop,\n });\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(_a) {\n var viewportResizeCb = _a.viewportResizeCb;\n var lastH = -1;\n var lastW = -1;\n var updateDimension = throttle(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, window);\n}\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\n var value = __assign({}, v);\n if (!enable)\n delete value.userTriggered;\n return value;\n}\nvar INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\nvar lastInputValueMap = new WeakMap();\nfunction initInputObserver(_a) {\n var inputCb = _a.inputCb, doc = _a.doc, mirror = _a.mirror, blockClass = _a.blockClass, ignoreClass = _a.ignoreClass, maskInputOptions = _a.maskInputOptions, maskInputFn = _a.maskInputFn, sampling = _a.sampling, userTriggeredOnInput = _a.userTriggeredOnInput;\n function eventHandler(event) {\n var target = getEventTarget(event);\n var userTriggered = event.isTrusted;\n if (target && target.tagName === 'OPTION')\n target = target.parentElement;\n if (!target ||\n !target.tagName ||\n INPUT_TAGS.indexOf(target.tagName) < 0 ||\n isBlocked(target, blockClass)) {\n return;\n }\n var type = target.type;\n if (target.classList.contains(ignoreClass)) {\n return;\n }\n var text = target.value;\n var isChecked = false;\n if (type === 'radio' || type === 'checkbox') {\n isChecked = target.checked;\n }\n else if (maskInputOptions[target.tagName.toLowerCase()] ||\n maskInputOptions[type]) {\n text = maskInputValue({\n maskInputOptions: maskInputOptions,\n tagName: target.tagName,\n type: type,\n value: text,\n maskInputFn: maskInputFn,\n });\n }\n cbWithDedup(target, wrapEventWithUserTriggeredFlag({ text: text, isChecked: isChecked, userTriggered: userTriggered }, userTriggeredOnInput));\n var name = target.name;\n if (type === 'radio' && name && isChecked) {\n doc\n .querySelectorAll(\"input[type=\\\"radio\\\"][name=\\\"\".concat(name, \"\\\"]\"))\n .forEach(function (el) {\n if (el !== target) {\n cbWithDedup(el, wrapEventWithUserTriggeredFlag({\n text: el.value,\n isChecked: !isChecked,\n userTriggered: false,\n }, userTriggeredOnInput));\n }\n });\n }\n }\n function cbWithDedup(target, v) {\n var lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue ||\n lastInputValue.text !== v.text ||\n lastInputValue.isChecked !== v.isChecked) {\n lastInputValueMap.set(target, v);\n var id = mirror.getId(target);\n inputCb(__assign(__assign({}, v), { id: id }));\n }\n }\n var events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\n var handlers = events.map(function (eventName) { return on(eventName, eventHandler, doc); });\n var propertyDescriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value');\n var hookProperties = [\n [HTMLInputElement.prototype, 'value'],\n [HTMLInputElement.prototype, 'checked'],\n [HTMLSelectElement.prototype, 'value'],\n [HTMLTextAreaElement.prototype, 'value'],\n [HTMLSelectElement.prototype, 'selectedIndex'],\n [HTMLOptionElement.prototype, 'selected'],\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push.apply(handlers, __spreadArray([], __read(hookProperties.map(function (p) {\n return hookSetter(p[0], p[1], {\n set: function () {\n eventHandler({ target: this });\n },\n });\n })), false));\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction getNestedCSSRulePositions(rule) {\n var positions = [];\n function recurse(childRule, pos) {\n if ((isCSSGroupingRuleSupported &&\n childRule.parentRule instanceof CSSGroupingRule) ||\n (isCSSMediaRuleSupported &&\n childRule.parentRule instanceof CSSMediaRule) ||\n (isCSSSupportsRuleSupported &&\n childRule.parentRule instanceof CSSSupportsRule) ||\n (isCSSConditionRuleSupported &&\n childRule.parentRule instanceof CSSConditionRule)) {\n var rules = Array.from(childRule.parentRule.cssRules);\n var index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n else {\n var rules = Array.from(childRule.parentStyleSheet.cssRules);\n var index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n return pos;\n }\n return recurse(rule, positions);\n}\nfunction initStyleSheetObserver(_a, _b) {\n var styleSheetRuleCb = _a.styleSheetRuleCb, mirror = _a.mirror;\n var win = _b.win;\n var insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = function (rule, index) {\n var id = mirror.getId(this.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n adds: [{ rule: rule, index: index }],\n });\n }\n return insertRule.apply(this, arguments);\n };\n var deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = function (index) {\n var id = mirror.getId(this.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n removes: [{ index: index }],\n });\n }\n return deleteRule.apply(this, arguments);\n };\n var supportedNestedCSSRuleTypes = {};\n if (isCSSGroupingRuleSupported) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n }\n else {\n if (isCSSMediaRuleSupported) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (isCSSConditionRuleSupported) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (isCSSSupportsRuleSupported) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n var unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(function (_a) {\n var _b = __read(_a, 2), typeKey = _b[0], type = _b[1];\n unmodifiedFunctions[typeKey] = {\n insertRule: type.prototype.insertRule,\n deleteRule: type.prototype.deleteRule,\n };\n type.prototype.insertRule = function (rule, index) {\n var id = mirror.getId(this.parentStyleSheet.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n adds: [\n {\n rule: rule,\n index: __spreadArray(__spreadArray([], __read(getNestedCSSRulePositions(this)), false), [\n index || 0,\n ], false),\n },\n ],\n });\n }\n return unmodifiedFunctions[typeKey].insertRule.apply(this, arguments);\n };\n type.prototype.deleteRule = function (index) {\n var id = mirror.getId(this.parentStyleSheet.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n removes: [{ index: __spreadArray(__spreadArray([], __read(getNestedCSSRulePositions(this)), false), [index], false) }],\n });\n }\n return unmodifiedFunctions[typeKey].deleteRule.apply(this, arguments);\n };\n });\n return function () {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n Object.entries(supportedNestedCSSRuleTypes).forEach(function (_a) {\n var _b = __read(_a, 2), typeKey = _b[0], type = _b[1];\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n };\n}\nfunction initStyleDeclarationObserver(_a, _b) {\n var styleDeclarationCb = _a.styleDeclarationCb, mirror = _a.mirror;\n var win = _b.win;\n var setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = function (property, value, priority) {\n var _a, _b;\n var id = mirror.getId((_b = (_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet) === null || _b === void 0 ? void 0 : _b.ownerNode);\n if (id !== -1) {\n styleDeclarationCb({\n id: id,\n set: {\n property: property,\n value: value,\n priority: priority,\n },\n index: getNestedCSSRulePositions(this.parentRule),\n });\n }\n return setProperty.apply(this, arguments);\n };\n var removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = function (property) {\n var _a, _b;\n var id = mirror.getId((_b = (_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet) === null || _b === void 0 ? void 0 : _b.ownerNode);\n if (id !== -1) {\n styleDeclarationCb({\n id: id,\n remove: {\n property: property,\n },\n index: getNestedCSSRulePositions(this.parentRule),\n });\n }\n return removeProperty.apply(this, arguments);\n };\n return function () {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n };\n}\nfunction initMediaInteractionObserver(_a) {\n var mediaInteractionCb = _a.mediaInteractionCb, blockClass = _a.blockClass, mirror = _a.mirror, sampling = _a.sampling;\n var handler = function (type) {\n return throttle(function (event) {\n var target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass)) {\n return;\n }\n var _a = target, currentTime = _a.currentTime, volume = _a.volume, muted = _a.muted;\n mediaInteractionCb({\n type: type,\n id: mirror.getId(target),\n currentTime: currentTime,\n volume: volume,\n muted: muted,\n });\n }, sampling.media || 500);\n };\n var handlers = [\n on('play', handler(0)),\n on('pause', handler(1)),\n on('seeked', handler(2)),\n on('volumechange', handler(3)),\n ];\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction initFontObserver(_a) {\n var fontCb = _a.fontCb, doc = _a.doc;\n var win = doc.defaultView;\n if (!win) {\n return function () { };\n }\n var handlers = [];\n var fontMap = new WeakMap();\n var originalFontFace = win.FontFace;\n win.FontFace = function FontFace(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'\n ? source\n :\n 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(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, [fontFace]);\n };\n });\n handlers.push(function () {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction mergeHooks(o, hooks) {\n var mutationCb = o.mutationCb, mousemoveCb = o.mousemoveCb, mouseInteractionCb = o.mouseInteractionCb, scrollCb = o.scrollCb, viewportResizeCb = o.viewportResizeCb, inputCb = o.inputCb, mediaInteractionCb = o.mediaInteractionCb, styleSheetRuleCb = o.styleSheetRuleCb, styleDeclarationCb = o.styleDeclarationCb, canvasMutationCb = o.canvasMutationCb, fontCb = o.fontCb;\n o.mutationCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mutation) {\n hooks.mutation.apply(hooks, __spreadArray([], __read(p), false));\n }\n mutationCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.mousemoveCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mousemove) {\n hooks.mousemove.apply(hooks, __spreadArray([], __read(p), false));\n }\n mousemoveCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.mouseInteractionCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction.apply(hooks, __spreadArray([], __read(p), false));\n }\n mouseInteractionCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.scrollCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.scroll) {\n hooks.scroll.apply(hooks, __spreadArray([], __read(p), false));\n }\n scrollCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.viewportResizeCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.viewportResize) {\n hooks.viewportResize.apply(hooks, __spreadArray([], __read(p), false));\n }\n viewportResizeCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.inputCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.input) {\n hooks.input.apply(hooks, __spreadArray([], __read(p), false));\n }\n inputCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.mediaInteractionCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction.apply(hooks, __spreadArray([], __read(p), false));\n }\n mediaInteractionCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.styleSheetRuleCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule.apply(hooks, __spreadArray([], __read(p), false));\n }\n styleSheetRuleCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.styleDeclarationCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration.apply(hooks, __spreadArray([], __read(p), false));\n }\n styleDeclarationCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.canvasMutationCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.canvasMutation) {\n hooks.canvasMutation.apply(hooks, __spreadArray([], __read(p), false));\n }\n canvasMutationCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.fontCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.font) {\n hooks.font.apply(hooks, __spreadArray([], __read(p), false));\n }\n fontCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n}\nfunction initObservers(o, hooks) {\n var e_1, _a;\n if (hooks === void 0) { hooks = {}; }\n var currentWindow = o.doc.defaultView;\n if (!currentWindow) {\n return function () { };\n }\n mergeHooks(o, hooks);\n var mutationObserver = initMutationObserver(o, o.doc);\n var mousemoveHandler = initMoveObserver(o);\n var mouseInteractionHandler = initMouseInteractionObserver(o);\n var scrollHandler = initScrollObserver(o);\n var viewportResizeHandler = initViewportResizeObserver(o);\n var inputHandler = initInputObserver(o);\n var mediaInteractionHandler = initMediaInteractionObserver(o);\n var styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n var styleDeclarationObserver = initStyleDeclarationObserver(o, {\n win: currentWindow,\n });\n var fontObserver = o.collectFonts ? initFontObserver(o) : function () { };\n var pluginHandlers = [];\n try {\n for (var _b = __values(o.plugins), _c = _b.next(); !_c.done; _c = _b.next()) {\n var plugin = _c.value;\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return function () {\n mutationBuffers.forEach(function (b) { return b.reset(); });\n mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n pluginHandlers.forEach(function (h) { return h(); });\n };\n}\n\nexport { INPUT_TAGS, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","var IframeManager = (function () {\n function IframeManager(options) {\n this.iframes = new WeakMap();\n this.mutationCb = options.mutationCb;\n }\n IframeManager.prototype.addIframe = function (iframeEl) {\n this.iframes.set(iframeEl, true);\n };\n IframeManager.prototype.addLoadListener = function (cb) {\n this.loadListener = cb;\n };\n IframeManager.prototype.attachIframe = function (iframeEl, childSn) {\n var _a;\n this.mutationCb({\n adds: [\n {\n parentId: iframeEl.__sn.id,\n nextId: null,\n node: childSn,\n },\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true,\n });\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\n };\n return IframeManager;\n}());\n\nexport { IframeManager };\n","import { __assign } from '../../ext/tslib/tslib.es6.js';\nimport { initMutationObserver, initScrollObserver } from './observer.js';\nimport { patch } from '../utils.js';\n\nvar ShadowDomManager = (function () {\n function ShadowDomManager(options) {\n this.restorePatches = [];\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n var manager = this;\n this.restorePatches.push(patch(HTMLElement.prototype, 'attachShadow', function (original) {\n return function () {\n var shadowRoot = original.apply(this, arguments);\n if (this.shadowRoot)\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\n return shadowRoot;\n };\n }));\n }\n ShadowDomManager.prototype.addShadowRoot = function (shadowRoot, doc) {\n initMutationObserver(__assign(__assign({}, this.bypassOptions), { doc: doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\n initScrollObserver(__assign(__assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\n };\n ShadowDomManager.prototype.observeAttachShadow = function (iframeElement) {\n if (iframeElement.contentWindow) {\n var manager_1 = this;\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\n return function () {\n var shadowRoot = original.apply(this, arguments);\n if (this.shadowRoot)\n manager_1.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\n return shadowRoot;\n };\n }));\n }\n };\n ShadowDomManager.prototype.reset = function () {\n this.restorePatches.forEach(function (restorePatch) { return restorePatch(); });\n };\n return ShadowDomManager;\n}());\n\nexport { ShadowDomManager };\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 { __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { encode } from '../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nvar webGLVarMap = new Map();\nfunction variableListFor(ctx, ctor) {\n var contextMap = webGLVarMap.get(ctx);\n if (!contextMap) {\n contextMap = new Map();\n webGLVarMap.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 ||\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\n return;\n var name = value.constructor.name;\n var list = variableListFor(ctx, name);\n var index = list.indexOf(value);\n if (index === -1) {\n index = list.length;\n list.push(value);\n }\n return index;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map(function (arg) { return serializeArg(arg, win, ctx); });\n }\n else if (value === null) {\n return value;\n }\n else if (value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Uint8Array ||\n value instanceof Uint16Array ||\n value instanceof Int16Array ||\n value instanceof Int8Array ||\n value instanceof Uint8ClampedArray) {\n var name_1 = value.constructor.name;\n return {\n rr_type: name_1,\n args: [Object.values(value)],\n };\n }\n else if (value instanceof ArrayBuffer) {\n var name_2 = value.constructor.name;\n var base64 = encode(value);\n return {\n rr_type: name_2,\n base64: base64,\n };\n }\n else if (value instanceof DataView) {\n var name_3 = value.constructor.name;\n return {\n rr_type: name_3,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength,\n ],\n };\n }\n else if (value instanceof HTMLImageElement) {\n var name_4 = value.constructor.name;\n var src = value.src;\n return {\n rr_type: name_4,\n src: src,\n };\n }\n else if (value instanceof ImageData) {\n var name_5 = value.constructor.name;\n return {\n rr_type: name_5,\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\n };\n }\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\n var name_6 = value.constructor.name;\n var index = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name_6,\n index: index,\n };\n }\n return value;\n}\nvar serializeArgs = function (args, win, ctx) {\n return __spreadArray([], __read(args), false).map(function (arg) { return serializeArg(arg, win, ctx); });\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 'WebGLVertexArrayObjectOES',\n ];\n var supportedWebGLConstructorNames = webGLConstructorNames.filter(function (name) { return typeof win[name] === 'function'; });\n return Boolean(supportedWebGLConstructorNames.find(function (name) { return value instanceof win[name]; }));\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { __spreadArray, __read, __values } from '../../../../ext/tslib/tslib.es6.js';\nimport { CanvasContext } from '../../../types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, mirror, win) {\n var e_1, _a;\n var handlers = [];\n var props = Object.getOwnPropertyNames(prototype);\n var _loop_1 = function (prop) {\n try {\n if (typeof prototype[prop] !== 'function') {\n return \"continue\";\n }\n var restoreHandler = patch(prototype, prop, function (original) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = original.apply(this, args);\n saveWebGLVar(result, win, prototype);\n if (!isBlocked(this.canvas, blockClass)) {\n var id = mirror.getId(this.canvas);\n var recordArgs = serializeArgs(__spreadArray([], __read(args), false), win, prototype);\n var mutation = {\n type: type,\n property: prop,\n args: recordArgs,\n };\n cb(this.canvas, mutation);\n }\n return result;\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_b) {\n var hookHandler = hookSetter(prototype, prop, {\n set: function (v) {\n cb(this.canvas, {\n type: type,\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n };\n try {\n for (var props_1 = __values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var prop = props_1_1.value;\n _loop_1(prop);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, mirror) {\n var handlers = [];\n handlers.push.apply(handlers, __spreadArray([], __read(patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, mirror, win)), false));\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\n handlers.push.apply(handlers, __spreadArray([], __read(patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, mirror, win)), false));\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\n\nexport default initCanvasWebGLMutationObserver;\n","import { __rest } from '../../../../ext/tslib/tslib.es6.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\n\nvar CanvasManager = (function () {\n function CanvasManager(options) {\n this.pendingCanvasMutations = new Map();\n this.rafStamps = { latestId: 0, invokeId: null };\n this.frozen = false;\n this.locked = false;\n this.processMutation = function (target, mutation) {\n var newFrame = this.rafStamps.invokeId &&\n this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n };\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (options.recordCanvas === true)\n this.initCanvasMutationObserver(options.win, options.blockClass);\n }\n CanvasManager.prototype.reset = function () {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n };\n CanvasManager.prototype.freeze = function () {\n this.frozen = true;\n };\n CanvasManager.prototype.unfreeze = function () {\n this.frozen = false;\n };\n CanvasManager.prototype.lock = function () {\n this.locked = true;\n };\n CanvasManager.prototype.unlock = function () {\n this.locked = false;\n };\n CanvasManager.prototype.initCanvasMutationObserver = function (win, blockClass) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n var canvasContextReset = initCanvasContextObserver(win, blockClass);\n var canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, this.mirror);\n var canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, this.mirror);\n this.resetObservers = function () {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n };\n CanvasManager.prototype.startPendingCanvasMutationFlusher = function () {\n var _this = this;\n requestAnimationFrame(function () { return _this.flushPendingCanvasMutations(); });\n };\n CanvasManager.prototype.startRAFTimestamping = function () {\n var _this = this;\n var setLatestRAFTimestamp = function (timestamp) {\n _this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n CanvasManager.prototype.flushPendingCanvasMutations = function () {\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 () { return _this.flushPendingCanvasMutations(); });\n };\n CanvasManager.prototype.flushPendingCanvasMutationFor = function (canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n var valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1)\n return;\n var values = valuesWithType.map(function (value) {\n value.type; var rest = __rest(value, [\"type\"]);\n return rest;\n });\n var type = valuesWithType[0].type;\n this.mutationCb({ id: id, type: type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n };\n return CanvasManager;\n}());\n\nexport { CanvasManager };\n","import { __assign, __read, __values } from '../../ext/tslib/tslib.es6.js';\nimport { snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, createMirror, getWindowWidth, getWindowHeight, isIframeINode, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\n\nfunction wrapEvent(e) {\n return __assign(__assign({}, e), { timestamp: Date.now() });\n}\nvar wrappedEmit;\nvar takeFullSnapshot;\nvar mirror = createMirror();\nfunction record(options) {\n if (options === void 0) { options = {}; }\n var emit = options.emit, checkoutEveryNms = options.checkoutEveryNms, checkoutEveryNth = options.checkoutEveryNth, _a = options.blockClass, blockClass = _a === void 0 ? 'rr-block' : _a, _b = options.blockSelector, blockSelector = _b === void 0 ? null : _b, _c = options.ignoreClass, ignoreClass = _c === void 0 ? 'rr-ignore' : _c, _d = options.maskTextClass, maskTextClass = _d === void 0 ? 'rr-mask' : _d, _e = options.maskTextSelector, maskTextSelector = _e === void 0 ? null : _e, _f = options.inlineStylesheet, inlineStylesheet = _f === void 0 ? true : _f, maskAllInputs = options.maskAllInputs, _maskInputOptions = options.maskInputOptions, _slimDOMOptions = options.slimDOMOptions, maskInputFn = options.maskInputFn, maskTextFn = options.maskTextFn, hooks = options.hooks, packFn = options.packFn, _g = options.sampling, sampling = _g === void 0 ? {} : _g, mousemoveWait = options.mousemoveWait, _h = options.recordCanvas, recordCanvas = _h === void 0 ? false : _h, _j = options.userTriggeredOnInput, userTriggeredOnInput = _j === void 0 ? false : _j, _k = options.collectFonts, collectFonts = _k === void 0 ? false : _k, _l = options.inlineImages, inlineImages = _l === void 0 ? false : _l, plugins = options.plugins, _m = options.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\n if (!emit) {\n throw new Error('emit function is required');\n }\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n sampling.mousemove = mousemoveWait;\n }\n var maskInputOptions = maskAllInputs === true\n ? {\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 }\n : _maskInputOptions !== undefined\n ? _maskInputOptions\n : { password: true };\n var slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\n ? {\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 headMetaAuthorship: _slimDOMOptions === 'all',\n headMetaDescKeywords: _slimDOMOptions === 'all',\n }\n : _slimDOMOptions\n ? _slimDOMOptions\n : {};\n polyfill();\n var lastFullSnapshotEvent;\n var incrementalSnapshotCount = 0;\n var eventProcessor = function (e) {\n var e_1, _a;\n try {\n for (var _b = __values(plugins || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var plugin = _c.value;\n if (plugin.eventProcessor) {\n e = plugin.eventProcessor(e);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (packFn) {\n e = packFn(e);\n }\n return e;\n };\n wrappedEmit = function (e, isCheckout) {\n var _a;\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\n e.type !== EventType.FullSnapshot &&\n !(e.type === EventType.IncrementalSnapshot &&\n e.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach(function (buf) { return buf.unfreeze(); });\n }\n emit(eventProcessor(e), isCheckout);\n if (e.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e;\n incrementalSnapshotCount = 0;\n }\n else if (e.type === EventType.IncrementalSnapshot) {\n if (e.data.source === IncrementalSource.Mutation &&\n e.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n var exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n var exceedTime = checkoutEveryNms &&\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot(true);\n }\n }\n };\n var wrappedMutationEmit = function (m) {\n wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Mutation }, m),\n }));\n };\n var wrappedScrollEmit = function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Scroll }, p),\n }));\n };\n var wrappedCanvasMutationEmit = function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.CanvasMutation }, p),\n }));\n };\n var iframeManager = new IframeManager({\n mutationCb: wrappedMutationEmit,\n });\n var canvasManager = new CanvasManager({\n recordCanvas: recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass: blockClass,\n mirror: mirror,\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 maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n sampling: sampling,\n slimDOMOptions: slimDOMOptions,\n iframeManager: iframeManager,\n canvasManager: canvasManager,\n },\n mirror: mirror,\n });\n takeFullSnapshot = function (isCheckout) {\n var _a, _b, _c, _d;\n if (isCheckout === void 0) { isCheckout = false; }\n wrappedEmit(wrapEvent({\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight(),\n },\n }), isCheckout);\n mutationBuffers.forEach(function (buf) { return buf.lock(); });\n var _e = __read(snapshot(document, {\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn: maskTextFn,\n slimDOM: slimDOMOptions,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n onSerialize: function (n) {\n if (isIframeINode(n)) {\n iframeManager.addIframe(n);\n }\n if (hasShadowRoot(n)) {\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\n }\n },\n onIframeLoad: function (iframe, childSn) {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n keepIframeSrcFn: keepIframeSrcFn,\n }), 2), node = _e[0], idNodeMap = _e[1];\n if (!node) {\n return console.warn('Failed to snapshot the document');\n }\n mirror.map = idNodeMap;\n wrappedEmit(wrapEvent({\n type: EventType.FullSnapshot,\n data: {\n node: node,\n initialOffset: {\n left: window.pageXOffset !== undefined\n ? window.pageXOffset\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\n ((_b = (_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\n (document === null || document === void 0 ? void 0 : document.body.scrollLeft) ||\n 0,\n top: window.pageYOffset !== undefined\n ? window.pageYOffset\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\n ((_d = (_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.parentElement) === null || _d === void 0 ? void 0 : _d.scrollTop) ||\n (document === null || document === void 0 ? void 0 : document.body.scrollTop) ||\n 0,\n },\n },\n }));\n mutationBuffers.forEach(function (buf) { return buf.unlock(); });\n };\n try {\n var handlers_1 = [];\n handlers_1.push(on('DOMContentLoaded', function () {\n wrappedEmit(wrapEvent({\n type: EventType.DomContentLoaded,\n data: {},\n }));\n }));\n var observe_1 = function (doc) {\n var _a;\n return initObservers({\n mutationCb: wrappedMutationEmit,\n mousemoveCb: function (positions, source) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: source,\n positions: positions,\n },\n }));\n },\n mouseInteractionCb: function (d) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.MouseInteraction }, d),\n }));\n },\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: function (d) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.ViewportResize }, d),\n }));\n },\n inputCb: function (v) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Input }, v),\n }));\n },\n mediaInteractionCb: function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.MediaInteraction }, p),\n }));\n },\n styleSheetRuleCb: function (r) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.StyleSheetRule }, r),\n }));\n },\n styleDeclarationCb: function (r) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.StyleDeclaration }, r),\n }));\n },\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Font }, p),\n }));\n },\n blockClass: blockClass,\n ignoreClass: ignoreClass,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n maskInputOptions: maskInputOptions,\n inlineStylesheet: inlineStylesheet,\n sampling: sampling,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n userTriggeredOnInput: userTriggeredOnInput,\n collectFonts: collectFonts,\n doc: doc,\n maskInputFn: maskInputFn,\n maskTextFn: maskTextFn,\n blockSelector: blockSelector,\n slimDOMOptions: slimDOMOptions,\n mirror: mirror,\n iframeManager: iframeManager,\n shadowDomManager: shadowDomManager,\n canvasManager: canvasManager,\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter(function (p) { return p.observer; })) === null || _a === void 0 ? void 0 : _a.map(function (p) { return ({\n observer: p.observer,\n options: p.options,\n callback: function (payload) {\n return wrappedEmit(wrapEvent({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload: payload,\n },\n }));\n },\n }); })) || [],\n }, hooks);\n };\n iframeManager.addLoadListener(function (iframeEl) {\n handlers_1.push(observe_1(iframeEl.contentDocument));\n });\n var init_1 = function () {\n takeFullSnapshot();\n handlers_1.push(observe_1(document));\n };\n if (document.readyState === 'interactive' ||\n document.readyState === 'complete') {\n init_1();\n }\n else {\n handlers_1.push(on('load', function () {\n wrappedEmit(wrapEvent({\n type: EventType.Load,\n data: {},\n }));\n init_1();\n }, window));\n }\n return function () {\n handlers_1.forEach(function (h) { return h(); });\n };\n }\n catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = function (tag, payload) {\n if (!wrappedEmit) {\n throw new Error('please add custom event after start recording');\n }\n wrappedEmit(wrapEvent({\n type: EventType.Custom,\n data: {\n tag: tag,\n payload: payload,\n },\n }));\n};\nrecord.freezePage = function () {\n mutationBuffers.forEach(function (buf) { return buf.freeze(); });\n};\nrecord.takeFullSnapshot = function (isCheckout) {\n if (!takeFullSnapshot) {\n throw new Error('please take full snapshot after start recording');\n }\n takeFullSnapshot(isCheckout);\n};\nrecord.mirror = mirror;\n\nexport default record;\n","import { __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass) {\n var handlers = [];\n try {\n var restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\n return function (contextType) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!isBlocked(this, blockClass)) {\n if (!('__context' in this))\n this.__context = contextType;\n }\n return original.apply(this, __spreadArray([contextType], __read(args), false));\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_a) {\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\n\nexport default initCanvasContextObserver;\n","import { __values, __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { CanvasContext } from '../../../types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, mirror) {\n var e_1, _a;\n var handlers = [];\n var props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n var _loop_1 = function (prop) {\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 var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!isBlocked(this.canvas, blockClass)) {\n setTimeout(function () {\n var recordArgs = __spreadArray([], __read(args), false);\n if (prop === 'drawImage') {\n if (recordArgs[0] &&\n recordArgs[0] instanceof HTMLCanvasElement) {\n var canvas = recordArgs[0];\n var ctx = canvas.getContext('2d');\n var imgd = ctx === null || ctx === void 0 ? void 0 : ctx.getImageData(0, 0, canvas.width, canvas.height);\n var pix = imgd === null || imgd === void 0 ? void 0 : imgd.data;\n recordArgs[0] = JSON.stringify(pix);\n }\n }\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 }\n catch (_b) {\n var hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n set: function (v) {\n cb(this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n };\n try {\n for (var props2D_1 = __values(props2D), props2D_1_1 = props2D_1.next(); !props2D_1_1.done; props2D_1_1 = props2D_1.next()) {\n var prop = props2D_1_1.value;\n _loop_1(prop);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (props2D_1_1 && !props2D_1_1.done && (_a = props2D_1.return)) _a.call(props2D_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\n\nexport default initCanvas2DMutationObserver;\n","var StackFrame = (function () {\n function StackFrame(obj) {\n this.fileName = obj.fileName || '';\n this.functionName = obj.functionName || '';\n this.lineNumber = obj.lineNumber;\n this.columnNumber = obj.columnNumber;\n }\n StackFrame.prototype.toString = function () {\n var lineNumber = this.lineNumber || '';\n var columnNumber = this.columnNumber || '';\n if (this.functionName) {\n return (this.functionName +\n ' (' +\n this.fileName +\n ':' +\n lineNumber +\n ':' +\n columnNumber +\n ')');\n }\n return this.fileName + ':' + lineNumber + ':' + columnNumber;\n };\n return StackFrame;\n}());\nvar FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nvar CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nvar SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\nvar ErrorStackParser = {\n parse: function (error) {\n if (!error) {\n return [];\n }\n if (typeof error.stacktrace !== 'undefined' ||\n typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n }\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n }\n else if (error.stack) {\n return this.parseFFOrSafari(error);\n }\n else {\n throw new Error('Cannot parse given Error object');\n }\n },\n extractLocation: function (urlLike) {\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n if (!parts)\n throw new Error(\"Cannot parse given url: \".concat(urlLike));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function (error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n line = line\n .replace(/eval code/g, 'eval')\n .replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n sanitizedLine = location\n ? sanitizedLine.replace(location[0], '')\n : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1\n ? undefined\n : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n });\n }, this);\n },\n parseFFOrSafari: function (error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n return new StackFrame({\n functionName: line,\n });\n }\n else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n });\n }\n }, this);\n },\n parseOpera: function (e) {\n if (!e.stacktrace ||\n (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n }\n else if (!e.stack) {\n return this.parseOpera10(e);\n }\n else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function (e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: parseFloat(match[1]),\n }));\n }\n }\n return result;\n },\n parseOpera10: function (e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: parseFloat(match[1]),\n }));\n }\n }\n return result;\n },\n parseOpera11: function (error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return (!!line.match(FIREFOX_SAFARI_STACK_REGEXP) &&\n !line.match(/^Error created at/));\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n });\n }, this);\n },\n};\n\nexport { ErrorStackParser, StackFrame };\n","import { __values } from '../../../../ext/tslib/tslib.es6.js';\n\nfunction pathToSelector(node) {\n if (!node || !node.outerHTML) {\n return '';\n }\n var path = '';\n while (node.parentElement) {\n var name_1 = node.localName;\n if (!name_1) {\n break;\n }\n name_1 = name_1.toLowerCase();\n var parent_1 = node.parentElement;\n var domSiblings = [];\n if (parent_1.children && parent_1.children.length > 0) {\n for (var i = 0; i < parent_1.children.length; i++) {\n var sibling = parent_1.children[i];\n if (sibling.localName && sibling.localName.toLowerCase) {\n if (sibling.localName.toLowerCase() === name_1) {\n domSiblings.push(sibling);\n }\n }\n }\n }\n if (domSiblings.length > 1) {\n name_1 += ':eq(' + domSiblings.indexOf(node) + ')';\n }\n path = name_1 + (path ? '>' + path : '');\n node = parent_1;\n }\n return path;\n}\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\nfunction isObjTooDeep(obj, limit) {\n var e_1, _a;\n if (limit === 0) {\n return true;\n }\n var keys = Object.keys(obj);\n try {\n for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {\n var key = keys_1_1.value;\n if (isObject(obj[key]) && isObjTooDeep(obj[key], limit - 1)) {\n return true;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return false;\n}\nfunction stringify(obj, stringifyOptions) {\n var options = {\n numOfKeysLimit: 50,\n depthOfLimit: 4,\n };\n Object.assign(options, stringifyOptions);\n var stack = [];\n var keys = [];\n return JSON.stringify(obj, function (key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value)) {\n if (stack[0] === value) {\n value = '[Circular ~]';\n }\n else {\n value =\n '[Circular ~.' +\n keys.slice(0, stack.indexOf(value)).join('.') +\n ']';\n }\n }\n }\n else {\n stack.push(value);\n }\n if (value === null || value === undefined) {\n return value;\n }\n if (shouldIgnore(value)) {\n return toString(value);\n }\n if (value instanceof Event) {\n var eventResult = {};\n for (var eventKey in value) {\n var eventValue = value[eventKey];\n if (Array.isArray(eventValue)) {\n eventResult[eventKey] = pathToSelector(eventValue.length ? eventValue[0] : null);\n }\n else {\n eventResult[eventKey] = eventValue;\n }\n }\n return eventResult;\n }\n else if (value instanceof Node) {\n if (value instanceof HTMLElement) {\n return value ? value.outerHTML : '';\n }\n return value.nodeName;\n }\n else if (value instanceof Error) {\n return value.stack\n ? value.stack + '\\nEnd of stack for Error object'\n : value.name + ': ' + value.message;\n }\n return value;\n });\n function shouldIgnore(_obj) {\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\n return true;\n }\n if (typeof _obj === 'function') {\n return true;\n }\n if (isObject(_obj) && isObjTooDeep(_obj, options.depthOfLimit)) {\n return true;\n }\n return false;\n }\n function toString(_obj) {\n var str = _obj.toString();\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\n str = \"\".concat(str.slice(0, options.stringLengthLimit), \"...\");\n }\n return str;\n }\n}\n\nexport { stringify };\n","import { __values, __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { patch } from '../../../utils.js';\nimport { ErrorStackParser } from './error-stack-parser.js';\nimport { stringify } from './stringify.js';\n\nvar defaultLogOptions = {\n level: [\n 'assert',\n 'clear',\n 'count',\n 'countReset',\n 'debug',\n 'dir',\n 'dirxml',\n 'error',\n 'group',\n 'groupCollapsed',\n 'groupEnd',\n 'info',\n 'log',\n 'table',\n 'time',\n 'timeEnd',\n 'timeLog',\n 'trace',\n 'warn',\n ],\n lengthThreshold: 1000,\n logger: 'console',\n};\nfunction initLogObserver(cb, win, logOptions) {\n var e_1, _a;\n var loggerType = logOptions.logger;\n if (!loggerType) {\n return function () { };\n }\n var logger;\n if (typeof loggerType === 'string') {\n logger = win[loggerType];\n }\n else {\n logger = loggerType;\n }\n var logCount = 0;\n var cancelHandlers = [];\n if (logOptions.level.includes('error')) {\n if (window) {\n var errorHandler_1 = function (event) {\n var message = event.message, error = event.error;\n var trace = ErrorStackParser.parse(error).map(function (stackFrame) { return stackFrame.toString(); });\n var payload = [stringify(message, logOptions.stringifyOptions)];\n cb({\n level: 'error',\n trace: trace,\n payload: payload,\n });\n };\n window.addEventListener('error', errorHandler_1);\n cancelHandlers.push(function () {\n if (window)\n window.removeEventListener('error', errorHandler_1);\n });\n }\n }\n try {\n for (var _b = __values(logOptions.level), _c = _b.next(); !_c.done; _c = _b.next()) {\n var levelType = _c.value;\n cancelHandlers.push(replace(logger, levelType));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return function () {\n cancelHandlers.forEach(function (h) { return h(); });\n };\n function replace(_logger, level) {\n var _this = this;\n if (!_logger[level]) {\n return function () { };\n }\n return patch(_logger, level, function (original) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n original.apply(_this, args);\n try {\n var trace = ErrorStackParser.parse(new Error())\n .map(function (stackFrame) { return stackFrame.toString(); })\n .splice(1);\n var payload = args.map(function (s) {\n return stringify(s, logOptions.stringifyOptions);\n });\n logCount++;\n if (logCount < logOptions.lengthThreshold) {\n cb({\n level: level,\n trace: trace,\n payload: payload,\n });\n }\n else if (logCount === logOptions.lengthThreshold) {\n cb({\n level: 'warn',\n trace: [],\n payload: [\n stringify('The number of log records reached the threshold.'),\n ],\n });\n }\n }\n catch (error) {\n original.apply(void 0, __spreadArray(['rrweb logger error:', error], __read(args), false));\n }\n };\n });\n }\n}\nvar PLUGIN_NAME = 'rrweb/console@1';\nvar getRecordConsolePlugin = function (options) { return ({\n name: PLUGIN_NAME,\n observer: initLogObserver,\n options: options\n ? Object.assign({}, defaultLogOptions, options)\n : defaultLogOptions,\n}); };\n\nexport { PLUGIN_NAME, getRecordConsolePlugin };\n","import Config from './config'\nimport { Breaker, EventHandler, Properties } from './types'\n\n/*\n * Saved references to long variable names, so that closure compiler can\n * minimize file size.\n */\n\nconst ArrayProto = Array.prototype\nconst ObjProto = Object.prototype\nconst toString = ObjProto.toString\nconst hasOwnProperty = ObjProto.hasOwnProperty\nconst win: Window & typeof globalThis = typeof window !== 'undefined' ? window : ({} as typeof window)\nconst navigator = win.navigator || { userAgent: '' }\nconst document = win.document || {}\nconst userAgent = navigator.userAgent\nconst localDomains = ['localhost', '127.0.0.1']\n\nconst nativeForEach = ArrayProto.forEach,\n nativeIndexOf = ArrayProto.indexOf,\n // eslint-disable-next-line posthog-js/no-direct-array-check\n nativeIsArray = Array.isArray,\n breaker: Breaker = {}\n\nconst LOGGER_PREFIX = '[PostHog.js]'\n\nexport const logger = {\n _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => {\n if ((Config.DEBUG || (window as any).POSTHOG_DEBUG) && !_isUndefined(window.console) && window.console) {\n const consoleLog =\n '__rrweb_original__' in window.console[level]\n ? (window.console[level] as any)['__rrweb_original__']\n : window.console[level]\n\n // eslint-disable-next-line no-console\n consoleLog(LOGGER_PREFIX, ...args)\n }\n },\n\n info: (...args: any[]) => {\n logger._log('log', ...args)\n },\n\n warn: (...args: any[]) => {\n logger._log('warn', ...args)\n },\n\n error: (...args: any[]) => {\n logger._log('error', ...args)\n },\n\n critical: (...args: any[]) => {\n // Critical errors are always logged to the console\n // eslint-disable-next-line no-console\n console.error(LOGGER_PREFIX, ...args)\n },\n\n unintializedWarning: (methodName: string) => {\n logger.error(`You must initialize PostHog before calling ${methodName}`)\n },\n}\n\n// UNDERSCORE\n// Embed part of the Underscore Library\nexport const _trim = function (str: string): string {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n}\n\nexport const _bind_instance_methods = function (obj: Record<string, any>): void {\n for (const func in obj) {\n if (_isFunction(obj[func])) {\n obj[func] = obj[func].bind(obj)\n }\n }\n}\n\nexport function _eachArray<E = any>(\n obj: E[] | null | undefined,\n iterator: (value: E, key: number) => void | Breaker,\n thisArg?: any\n): void {\n if (_isArray(obj)) {\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, thisArg)\n } else if ('length' in obj && obj.length === +obj.length) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(thisArg, obj[i], i) === breaker) {\n return\n }\n }\n }\n }\n}\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} thisArg\n */\nexport function _each(obj: any, iterator: (value: any, key: any) => void | Breaker, thisArg?: any): void {\n if (_isNull(obj) || _isUndefined(obj)) {\n return\n }\n if (_isArray(obj)) {\n return _eachArray(obj, iterator, thisArg)\n }\n for (const key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(thisArg, obj[key], key) === breaker) {\n return\n }\n }\n }\n}\n\nexport const _extend = function (obj: Record<string, any>, ...args: Record<string, any>[]): Record<string, any> {\n _eachArray(args, function (source) {\n for (const prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop]\n }\n }\n })\n return obj\n}\n\nexport const _isArray =\n nativeIsArray ||\n function (obj: any): obj is any[] {\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// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\nexport const _isFunction = function (f: any): f is (...args: any[]) => any {\n try {\n // eslint-disable-next-line posthog-js/no-direct-function-check\n return /^\\s*\\bfunction\\b/.test(f)\n } catch (x) {\n return false\n }\n}\n\nexport const _include = function (\n obj: null | string | Array<any> | Record<string, any>,\n target: any\n): boolean | Breaker {\n let found = false\n if (_isNull(obj)) {\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 return\n })\n return found\n}\n\nexport function _includes<T = any>(str: T[] | string, needle: T): boolean {\n return (str as any).indexOf(needle) !== -1\n}\n\n/**\n * Object.entries() polyfill\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n */\nexport function _entries<T = any>(obj: Record<string, T>): [string, T][] {\n const ownProps = Object.keys(obj)\n let i = ownProps.length\n const resArray = new Array(i) // preallocate the Array\n\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]]\n }\n return resArray\n}\n\n// Underscore Addons\nexport const _isObject = function (x: unknown): x is Record<string, any> {\n // eslint-disable-next-line posthog-js/no-direct-object-check\n return x === Object(x) && !_isArray(x)\n}\n\nexport const _isEmptyObject = function (x: unknown): x is Record<string, any> {\n if (_isObject(x)) {\n for (const key in x) {\n if (hasOwnProperty.call(x, key)) {\n return false\n }\n }\n return true\n }\n return false\n}\n\nexport const _isUndefined = function (x: unknown): x is undefined {\n return x === void 0\n}\n\nexport const _isString = function (x: unknown): x is string {\n // eslint-disable-next-line posthog-js/no-direct-string-check\n return toString.call(x) == '[object String]'\n}\n\nexport const _isNull = function (x: unknown): x is null {\n // eslint-disable-next-line posthog-js/no-direct-null-check\n return x === null\n}\n\nexport const _isDate = function (x: unknown): x is Date {\n // eslint-disable-next-line posthog-js/no-direct-date-check\n return toString.call(x) == '[object Date]'\n}\nexport const _isNumber = function (x: unknown): x is number {\n // eslint-disable-next-line posthog-js/no-direct-number-check\n return toString.call(x) == '[object Number]'\n}\n\nexport const _isBoolean = function (x: unknown): x is boolean {\n // eslint-disable-next-line posthog-js/no-direct-boolean-check\n return toString.call(x) === '[object Boolean]'\n}\n\nexport const _isValidRegex = function (str: string): boolean {\n try {\n new RegExp(str)\n } catch (error) {\n return false\n }\n return true\n}\n\nexport const _isUrlMatchingRegex = function (url: string, pattern: string): boolean {\n if (!_isValidRegex(pattern)) return false\n return new RegExp(pattern).test(url)\n}\n\nexport const _encodeDates = function (obj: Properties): Properties {\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\nexport const _timestamp = function (): number {\n Date.now =\n Date.now ||\n function () {\n return +new Date()\n }\n return Date.now()\n}\n\nexport const _formatDate = function (d: Date): string {\n // YYYY-MM-DDTHH:MM:SS in UTC\n function pad(n: number) {\n return n < 10 ? '0' + n : n\n }\n return (\n d.getUTCFullYear() +\n '-' +\n pad(d.getUTCMonth() + 1) +\n '-' +\n pad(d.getUTCDate()) +\n 'T' +\n pad(d.getUTCHours()) +\n ':' +\n pad(d.getUTCMinutes()) +\n ':' +\n pad(d.getUTCSeconds())\n )\n}\n\nexport const _safewrap = function <F extends (...args: any[]) => any = (...args: any[]) => any>(f: F): F {\n return function (...args) {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return f.apply(this, args)\n } catch (e) {\n logger.critical('Implementation error. Please turn on debug and contact support@posthog.com.')\n logger.critical(e)\n }\n } as F\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const _safewrap_class = function (klass: Function, functions: string[]): void {\n for (let i = 0; i < functions.length; i++) {\n klass.prototype[functions[i]] = _safewrap(klass.prototype[functions[i]])\n }\n}\n\nexport const _safewrap_instance_methods = function (obj: Record<string, any>): void {\n for (const func in obj) {\n if (_isFunction(obj[func])) {\n obj[func] = _safewrap(obj[func])\n }\n }\n}\n\nexport const _strip_empty_properties = function (p: Properties): Properties {\n const ret: Properties = {}\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 * Deep copies an object.\n * It handles cycles by replacing all references to them with `undefined`\n * Also supports customizing native values\n *\n * @param value\n * @param customizer\n * @returns {{}|undefined|*}\n */\nfunction deepCircularCopy<T extends Record<string, any> = Record<string, any>>(\n value: T,\n customizer?: <K extends keyof T = keyof T>(value: T[K], key?: K) => T[K]\n): T | undefined {\n const COPY_IN_PROGRESS_SET = new Set()\n\n function internalDeepCircularCopy(value: T, key?: string): T | undefined {\n if (value !== Object(value)) return customizer ? customizer(value as any, key) : value // primitive value\n\n if (COPY_IN_PROGRESS_SET.has(value)) return undefined\n COPY_IN_PROGRESS_SET.add(value)\n let result: T\n\n if (_isArray(value)) {\n result = [] as any as T\n _eachArray(value, (it) => {\n result.push(internalDeepCircularCopy(it))\n })\n } else {\n result = {} as T\n _each(value, (val, key) => {\n if (!COPY_IN_PROGRESS_SET.has(val)) {\n ;(result as any)[key] = internalDeepCircularCopy(val, key)\n }\n })\n }\n return result\n }\n return internalDeepCircularCopy(value)\n}\n\nconst LONG_STRINGS_ALLOW_LIST = ['$performance_raw']\n\nexport function _copyAndTruncateStrings<T extends Record<string, any> = Record<string, any>>(\n object: T,\n maxStringLength: number | null\n): T {\n return deepCircularCopy(object, (value: any, key) => {\n if (key && LONG_STRINGS_ALLOW_LIST.indexOf(key as string) > -1) {\n return value\n }\n if (_isString(value) && !_isNull(maxStringLength)) {\n return (value as string).slice(0, maxStringLength)\n }\n return value\n }) as T\n}\n\nexport function _base64Encode(data: null): null\nexport function _base64Encode(data: undefined): undefined\nexport function _base64Encode(data: string): string\nexport function _base64Encode(data: string | null | undefined): string | null | undefined {\n const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n let o1,\n o2,\n o3,\n h1,\n h2,\n h3,\n h4,\n bits,\n i = 0,\n ac = 0,\n enc = ''\n const tmp_arr: string[] = []\n\n if (!data) {\n return data\n }\n\n data = _utf8Encode(data)\n\n do {\n // 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\nexport const _utf8Encode = function (string: string): string {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n')\n\n let utftext = '',\n start,\n end\n let stringl = 0,\n n\n\n start = end = 0\n stringl = string.length\n\n for (n = 0; n < stringl; n++) {\n const c1 = string.charCodeAt(n)\n let 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 (!_isNull(enc)) {\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\nexport const DEFAULT_BLOCKED_UA_STRS = [\n 'ahrefsbot',\n 'applebot',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'bot.htm',\n 'bot.php',\n 'crawler',\n 'duckduckbot',\n 'facebookexternal',\n 'facebookcatalog',\n 'gptbot',\n 'hubspot',\n 'linkedinbot',\n 'mj12bot',\n 'petalbot',\n 'pinterest',\n 'prerender',\n 'rogerbot',\n 'screaming frog',\n 'semrushbot',\n 'sitebulb',\n 'twitterbot',\n 'yahoo! slurp',\n 'yandexbot',\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\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false capturing data\nexport const _isBlockedUA = function (ua: string, customBlockedUserAgents: string[]): boolean {\n if (!ua) {\n return false\n }\n const uaLower = ua.toLowerCase()\n return DEFAULT_BLOCKED_UA_STRS.concat(customBlockedUserAgents || []).some((blockedUA) => {\n const blockedUaLower = blockedUA.toLowerCase()\n if (uaLower.includes) {\n return uaLower.includes(blockedUaLower)\n } else {\n // IE 11 :/\n return uaLower.indexOf(blockedUaLower) !== -1\n }\n })\n}\n\nexport const _HTTPBuildQuery = function (formdata: Record<string, any>, arg_separator = '&'): string {\n let use_val: string\n let use_key: string\n const tph_arr: string[] = []\n\n _each(formdata, function (val, key) {\n use_val = encodeURIComponent(val.toString())\n use_key = encodeURIComponent(key)\n tph_arr[tph_arr.length] = use_key + '=' + use_val\n })\n\n return tph_arr.join(arg_separator)\n}\n\nexport const _getQueryParam = function (url: string, param: string): string {\n // Expects a raw URL\n\n const cleanParam = param.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]')\n const regexS = '[\\\\?&]' + cleanParam + '=([^&#]*)'\n const regex = new RegExp(regexS)\n const results = regex.exec(url)\n if (_isNull(results) || (results && !_isString(results[1]) && (results[1] as any).length)) {\n return ''\n } else {\n let result = results[1]\n try {\n result = decodeURIComponent(result)\n } catch (err) {\n logger.error('Skipping decoding for malformed query param: ' + result)\n }\n return result.replace(/\\+/g, ' ')\n }\n}\n\nexport const _getHashParam = function (hash: string, param: string): string | null {\n const matches = hash.match(new RegExp(param + '=([^&]*)'))\n return matches ? matches[1] : null\n}\n\nexport const _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 PostHog\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 const register_event = function (\n element: Element | Window | Document | Node,\n type: string,\n handler: EventHandler,\n oldSchool?: boolean,\n useCapture?: boolean\n ) {\n if (!element) {\n logger.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 const ontype = 'on' + type\n const old_handler = (element as any)[ontype] // can be undefined\n ;(element as any)[ontype] = makeHandler(element, handler, old_handler)\n }\n }\n\n function makeHandler(\n element: Element | Window | Document | Node,\n new_handler: EventHandler,\n old_handlers: EventHandler\n ) {\n return function (event: Event): boolean | void {\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 let ret = true\n let old_result: any\n\n if (_isFunction(old_handlers)) {\n old_result = old_handlers(event)\n }\n const 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\n function fixEvent(event: Event | undefined): Event | undefined {\n if (event) {\n event.preventDefault = fixEvent.preventDefault\n event.stopPropagation = fixEvent.stopPropagation\n }\n return event\n }\n fixEvent.preventDefault = function () {\n ;(this as any as Event).returnValue = false\n }\n fixEvent.stopPropagation = function () {\n ;(this as any as Event).cancelBubble = true\n }\n\n return register_event\n})()\n\nexport const isLocalhost = (): boolean => {\n return localDomains.includes(location.hostname)\n}\n\nexport function loadScript(scriptUrlToLoad: string, callback: (error?: string | Event, event?: Event) => void): void {\n const addScript = () => {\n const scriptTag = document.createElement('script')\n scriptTag.type = 'text/javascript'\n scriptTag.src = scriptUrlToLoad\n scriptTag.onload = (event) => callback(undefined, event)\n scriptTag.onerror = (error) => callback(error)\n\n const scripts = document.querySelectorAll('body > script')\n if (scripts.length > 0) {\n scripts[0].parentNode?.insertBefore(scriptTag, scripts[0])\n } else {\n // In exceptional situations this call might load before the DOM is fully ready.\n document.body.appendChild(scriptTag)\n }\n }\n\n if (document.body) {\n addScript()\n } else {\n document.addEventListener('DOMContentLoaded', addScript)\n }\n}\n\nexport const _info = {\n campaignParams: function (customParams?: string[]): Record<string, any> {\n const campaign_keywords = [\n 'utm_source',\n 'utm_medium',\n 'utm_campaign',\n 'utm_content',\n 'utm_term',\n 'gclid',\n 'fbclid',\n 'msclkid',\n ].concat(customParams || [])\n\n const params: Record<string, any> = {}\n _each(campaign_keywords, function (kwkey) {\n const kw = _getQueryParam(document.URL, kwkey)\n if (kw.length) {\n params[kwkey] = kw\n }\n })\n\n return params\n },\n\n searchEngine: function (): string | null {\n const referrer = document.referrer\n if (!referrer) {\n return null\n } else 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 (): Record<string, any> {\n const search = _info.searchEngine(),\n param = search != 'yahoo' ? 'q' : 'p',\n ret: Record<string, any> = {}\n\n if (!_isNull(search)) {\n ret['$search_engine'] = search\n\n const keyword = _getQueryParam(document.referrer, param)\n if (keyword.length) {\n ret['ph_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: string, vendor: string, opera?: any): string {\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: string, vendor: string, opera: string): number | null {\n const browser = _info.browser(userAgent, vendor, opera)\n const 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 const regex: RegExp | undefined = versionRegexs[browser as keyof typeof versionRegexs]\n if (_isUndefined(regex)) {\n return null\n }\n const matches = userAgent.match(regex)\n if (!matches) {\n return null\n }\n return parseFloat(matches[matches.length - 2])\n },\n\n browserLanguage: function (): string {\n return (\n navigator.language || // Any modern browser\n (navigator as Record<string, any>).userLanguage // IE11\n )\n },\n\n os: function (user_agent: string): { os_name: string; os_version: string } {\n if (/Windows/i.test(user_agent)) {\n if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return { os_name: 'Windows Phone', os_version: '' }\n }\n const match = /Windows NT ([0-9.]+)/i.exec(user_agent)\n if (match && match[1]) {\n const version = match[1]\n return { os_name: 'Windows', os_version: version }\n }\n return { os_name: 'Windows', os_version: '' }\n } else if (/(iPhone|iPad|iPod)/.test(user_agent)) {\n const match = /OS (\\d+)_(\\d+)_?(\\d+)?/i.exec(user_agent)\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n return { os_name: 'iOS', os_version: versionParts.join('.') }\n }\n return { os_name: 'iOS', os_version: '' }\n } else if (/Android/.test(user_agent)) {\n const match = /Android (\\d+)\\.(\\d+)\\.?(\\d+)?/i.exec(user_agent)\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n return { os_name: 'Android', os_version: versionParts.join('.') }\n }\n return { os_name: 'Android', os_version: '' }\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return { os_name: 'BlackBerry', os_version: '' }\n } else if (/Mac/i.test(user_agent)) {\n const match = /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i.exec(user_agent)\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n return { os_name: 'Mac OS X', os_version: versionParts.join('.') }\n }\n return { os_name: 'Mac OS X', os_version: '' }\n } else if (/Linux/.test(user_agent)) {\n return { os_name: 'Linux', os_version: '' }\n } else if (/CrOS/.test(user_agent)) {\n return { os_name: 'Chrome OS', os_version: '' }\n } else {\n return { os_name: '', os_version: '' }\n }\n },\n\n device: function (user_agent: string): string {\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) && !/Mobile/.test(user_agent)) {\n return 'Android Tablet'\n } else if (/Android/.test(user_agent)) {\n return 'Android'\n } else {\n return ''\n }\n },\n\n deviceType: function (user_agent: string): string {\n const device = this.device(user_agent)\n if (device === 'iPad' || device === 'Android Tablet') {\n return 'Tablet'\n } else if (device) {\n return 'Mobile'\n } else {\n return 'Desktop'\n }\n },\n\n referrer: function (): string {\n return document.referrer || '$direct'\n },\n\n referringDomain: function (): string {\n if (!document.referrer) {\n return '$direct'\n }\n const parser = document.createElement('a') // Unfortunately we cannot use new URL due to IE11\n parser.href = document.referrer\n return parser.host\n },\n\n properties: function (): Properties {\n const { os_name, os_version } = _info.os(userAgent)\n return _extend(\n _strip_empty_properties({\n $os: os_name,\n $os_version: os_version,\n $browser: _info.browser(userAgent, navigator.vendor, (win as any).opera),\n $device: _info.device(userAgent),\n $device_type: _info.deviceType(userAgent),\n }),\n {\n $current_url: win?.location.href,\n $host: win?.location.host,\n $pathname: win?.location.pathname,\n $browser_version: _info.browserVersion(userAgent, navigator.vendor, (win as any).opera),\n $browser_language: _info.browserLanguage(),\n $screen_height: win?.screen.height,\n $screen_width: win?.screen.width,\n $viewport_height: win?.innerHeight,\n $viewport_width: win?.innerWidth,\n $lib: 'web',\n $lib_version: Config.LIB_VERSION,\n $insert_id: Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10),\n $time: _timestamp() / 1000, // epoch time in seconds\n }\n )\n },\n\n people_properties: function (): Properties {\n const { os_name, os_version } = _info.os(userAgent)\n return _extend(\n _strip_empty_properties({\n $os: os_name,\n $os_version: os_version,\n $browser: _info.browser(userAgent, navigator.vendor, (win as any).opera),\n }),\n {\n $browser_version: _info.browserVersion(userAgent, navigator.vendor, (win as any).opera),\n }\n )\n },\n}\n\nexport function isCrossDomainCookie(documentLocation: Location | undefined) {\n const hostname = documentLocation?.hostname\n\n if (!_isString(hostname)) {\n return false\n }\n // split and slice isn't a great way to match arbitrary domains,\n // but it's good enough for ensuring we only match herokuapp.com when it is the TLD\n // for the hostname\n return hostname.split('.').slice(-2).join('.') !== 'herokuapp.com'\n}\n\nexport { win as window, userAgent, document }\n","import { version } from 'rrweb-v1/package.json'\n\n// Same as loader-globals.ts except includes rrweb scripts.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport rrwebRecord from 'rrweb-v1/es/rrweb/packages/rrweb/src/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { getRecordConsolePlugin } from 'rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record'\nimport { _isUndefined } from './utils'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\n\nconst win: Window & typeof globalThis = _isUndefined(window) ? ({} as typeof window) : window\n\n;(win as any).rrweb = { record: rrwebRecord, version: 'v1', rrwebVersion: version }\n;(win as any).rrwebConsoleRecord = { getRecordConsolePlugin }\n\nexport default rrwebRecord\n"],"names":["NodeType","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__values","o","Symbol","iterator","m","next","value","done","TypeError","__read","r","e","ar","push","error","__spreadArray","to","from","pack","l","Array","slice","concat","isShadowRoot","_a","host","Boolean","shadowRoot","maskInputValue","maskInputOptions","tagName","type","maskInputFn","text","toLowerCase","repeat","ORIGINAL_ATTRIBUTE_NAME","canvasService","canvasCtx","_id","tagNameRegex","RegExp","IGNORED_NODE","getCssRulesString","rules","cssRules","map","getCssRuleString","join","rule","cssStringified","cssText","isCSSImportRule","styleSheet","URL_IN_CSS_REF","RELATIVE_PATH","DATA_URI","absoluteToStylesheet","href","replace","origin","quote1","path1","quote2","path2","path3","url","filePath","maybeQuote","test","indexOf","split","stack","parts","pop","_i","parts_1","part","EventType","IncrementalSource","MouseInteractions","CanvasContext","MediaInteractions","ReplayerEvents","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","doc","attributeValue","trim","a","createElement","getHref","document","transformAttribute","name","pos","collectCharacters","regEx","chars","match","exec","substring","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","needMaskingText","node","maskTextClass","maskTextSelector","nodeType","ELEMENT_NODE","classList","contains","eIndex","className","matches","parentNode","TEXT_NODE","serializeNode","options","rootId","sheet","el","blockClass","blockSelector","inlineStylesheet","_b","maskTextFn","_c","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","__sn","docId","id","undefined","DOCUMENT_NODE","compatMode","Document","childNodes","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","element","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes_1","_d","attributes","_e","name_1","stylesheet","styleSheets","find","rel","_cssText","innerText","textContent","checked","selected","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","Math","min","data","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image_1","oldValue_1","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","drawImage","err","console","warn","currentSrc","complete","onload","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_f","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","Element","isSVG","ownerSVGElement","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","_g","iframeLoadTimeout","_h","_j","preserveWhiteSpace","_serializedNode","sn","comment","script","as","endsWith","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","isShadowHost","headWhitespace","bypassOptions","_k","serializedChildNode","isElement","_l","_m","isShadow","iframeEl","listener","win","contentWindow","readyState","fired","blankUrl","location","addEventListener","setTimeout","timer_1","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","on","fn","target","capture","passive","removeEventListener","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","getId","getNode","removeNodeFromMap","has","reset","throttle","func","wait","timeout","previous","arg","now","Date","leading","remaining","context","args","trailing","hookSetter","key","d","isRevoked","window","original","getOwnPropertyDescriptor","defineProperty","set","_this","patch","source","replacement","original_1","wrapped","defineProperties","__rrweb_original__","enumerable","getWindowHeight","innerHeight","documentElement","clientHeight","body","getWindowWidth","innerWidth","clientWidth","isBlocked","needBlock_1","closest","forEach","isIgnored","isAncestorRemoved","mirror","isTouchEvent","event","changedTouches","isIframeINode","hasShadowRoot","isNodeInLinkedList","Proxy","Reflect","get","prop","receiver","DoubleLinkedList","head","position","Error","current","index","addNode","__ln","removeNode","moveKey","parentId","isINode","deepDelete","addsSet","delete","childN","isParentRemoved","removes","isAncestorInSet","MutationBuffer$1","MutationBuffer","frozen","locked","texts","mapRemoves","movedMap","addedSet","Set","movedSet","droppedSet","processMutations","mutations","processMutation","emit","e_1","e_2","adds","addList","getNextId","ns","nextId","pushAdd","shadowHost","getRootNode","rootShadowHost","notInDoc","currentN","iframeManager","addIframe","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","shift","e_1_1","return","add","e_2_1","candidate","_node","payload","filter","attribute","mutationCb","e_3","e_4","oldValue","getAttribute","attributeName","item","old","setAttribute","style","styleObj","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","e_3_1","e_4_1","addedNodes","genAdds","removedNodes","nodeId","targetId","init","freeze","canvasManager","unfreeze","isFrozen","lock","unlock","mutationBuffers","isCSSGroupingRuleSupported","CSSGroupingRule","isCSSMediaRuleSupported","CSSMediaRule","isCSSSupportsRuleSupported","CSSSupportsRule","isCSSConditionRuleSupported","CSSConditionRule","getEventTarget","path","composedPath","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","MutationObserver","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","observer","bind","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","keys","Number","isNaN","eventKey","eventName","handler","clientX","clientY","getHandler","h","initScrollObserver","scrollCb","evt","scrollEl","scrollingElement","scroll","wrapEventWithUserTriggeredFlag","v","enable","userTriggered","INPUT_TAGS","lastInputValueMap","WeakMap","getNestedCSSRulePositions","childRule","parentRule","unshift","parentStyleSheet","recurse","initObservers","hooks","currentWindow","defaultView","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","mutation","mousemove","viewportResize","input","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","mergeHooks","mutationObserver","mousemoveHandler","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","userTriggeredOnInput","eventHandler","isTrusted","parentElement","isChecked","cbWithDedup","querySelectorAll","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","volume","muted","media","initMediaInteractionObserver","styleSheetObserver","insertRule","CSSStyleSheet","ownerNode","deleteRule","supportedNestedCSSRuleTypes","unmodifiedFunctions","entries","typeKey","initStyleSheetObserver","styleDeclarationObserver","setProperty","CSSStyleDeclaration","priority","removeProperty","remove","initStyleDeclarationObserver","fontObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","JSON","stringify","Uint8Array","restoreHandler","fonts","initFontObserver","pluginHandlers","plugins","plugin","callback","b","disconnect","IframeManager","iframes","addLoadListener","cb","loadListener","isAttachIframe","ShadowDomManager","restorePatches","manager","HTMLElement","ownerDocument","iframeElement","manager_1","restorePatch","lookup","charCodeAt","encode","arraybuffer","bytes","len","base64","webGLVarMap","Map","saveWebGLVar","isInstanceOfWebGLObject","_typeof","list","ctor","contextMap","variableListFor","constructor","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","values","ArrayBuffer","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","patchGLPrototype","props","getOwnPropertyNames","_loop_1","result","recordArgs","hookHandler","setter","props_1","props_1_1","wrappedEmit","takeFullSnapshot","CanvasManager","pendingCanvasMutations","rafStamps","latestId","invokeId","initCanvasMutationObserver","clear","resetObservers","startRAFTimestamping","startPendingCanvasMutationFlusher","canvasContextReset","HTMLCanvasElement","contextType","initCanvasContextObserver","canvas2DReset","props2D","CanvasRenderingContext2D","imgd","pix","props2D_1","props2D_1_1","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","requestAnimationFrame","flushPendingCanvasMutations","setLatestRAFTimestamp","timestamp","flushPendingCanvasMutationFor","valuesWithType","rest","getOwnPropertySymbols","propertyIsEnumerable","__rest","commands","wrapEvent","child","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","lastFullSnapshotEvent","color","date","email","month","number","range","search","tel","time","week","textarea","select","password","NodeList","DOMTokenList","Node","polyfill","incrementalSnapshotCount","isCheckout","FullSnapshot","IncrementalSnapshot","Mutation","buf","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","Scroll","wrappedCanvasMutationEmit","CanvasMutation","Meta","slimDOM","idNodeMap","snapshot","initialOffset","left","pageXOffset","top","pageYOffset","handlers_1","DomContentLoaded","observe_1","MouseInteraction","ViewportResize","Input","MediaInteraction","StyleSheetRule","StyleDeclaration","Font","Plugin","init_1","Load","addCustomEvent","tag","Custom","freezePage","StackFrame","obj","fileName","functionName","lineNumber","columnNumber","toString","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","ErrorStackParser","parse","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","line","sanitizedLine","tokens","locationParts","functionNameRegex","message","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","parseFloat","pathToSelector","outerHTML","localName","parent_1","domSiblings","children","sibling","isObject","isObjTooDeep","limit","keys_1","keys_1_1","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","splice","Infinity","_obj","shouldIgnore","str","stringLengthLimit","Event","eventResult","eventValue","isArray","nodeName","defaultLogOptions","level","lengthThreshold","logger","initLogObserver","logOptions","loggerType","logCount","cancelHandlers","includes","errorHandler_1","trace","stackFrame","levelType","_logger","navigator","userAgent","win$1","rrweb","rrwebRecord","version","rrwebVersion","rrwebConsoleRecord","getRecordConsolePlugin"],"mappings":"6BAAIA,ECeAC,EAAW,WAQX,OAPAA,EAAWC,OAAOC,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACOJ,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,GAEJH,EAASa,MAAMC,KAAMP,UAC/B;;;;;;;;;;;;;;kFAcD,SAASQ,EAASC,GACd,IAAIZ,EAAsB,mBAAXa,QAAyBA,OAAOC,SAAUC,EAAIf,GAAKY,EAAEZ,GAAIC,EAAI,EAC5E,GAAIc,EAAG,OAAOA,EAAEP,KAAKI,GACrB,GAAIA,GAAyB,iBAAbA,EAAER,OAAqB,MAAO,CAC1CY,KAAM,WAEF,OADIJ,GAAKX,GAAKW,EAAER,SAAQQ,OAAI,GACrB,CAAEK,MAAOL,GAAKA,EAAEX,KAAMiB,MAAON,EACvC,GAEL,MAAM,IAAIO,UAAUnB,EAAI,0BAA4B,kCACvD,CAED,SAASoB,EAAOR,EAAGV,GACf,IAAIa,EAAsB,mBAAXF,QAAyBD,EAAEC,OAAOC,UACjD,IAAKC,EAAG,OAAOH,EACf,IAAmBS,EAAYC,EAA3BrB,EAAIc,EAAEP,KAAKI,GAAOW,EAAK,GAC3B,IACI,WAAc,IAANrB,GAAgBA,KAAM,MAAQmB,EAAIpB,EAAEe,QAAQE,MAAMK,EAAGC,KAAKH,EAAEJ,MADxE,CAGA,MAAOQ,GAASH,EAAI,CAAEG,MAAOA,EAAU,CAC/B,QACJ,IACQJ,IAAMA,EAAEH,OAASH,EAAId,EAAC,SAAac,EAAEP,KAAKP,EACjD,CACO,QAAE,GAAIqB,EAAG,MAAMA,EAAEG,KAAQ,CACpC,CACD,OAAOF,CACV,CAED,SAASG,EAAcC,EAAIC,EAAMC,GAC7B,GAAIA,GAA6B,IAArB1B,UAAUC,OAAc,IAAK,IAA4BmB,EAAxBtB,EAAI,EAAG6B,EAAIF,EAAKxB,OAAYH,EAAI6B,EAAG7B,KACxEsB,GAAQtB,KAAK2B,IACRL,IAAIA,EAAKQ,MAAMzB,UAAU0B,MAAMxB,KAAKoB,EAAM,EAAG3B,IAClDsB,EAAGtB,GAAK2B,EAAK3B,IAGrB,OAAO0B,EAAGM,OAAOV,GAAMQ,MAAMzB,UAAU0B,MAAMxB,KAAKoB,GACrD,uOD9DD,SAASM,EAAahC,GAClB,IAAIiC,EACAC,EAAoB,QAAZD,EAAKjC,SAAsB,IAAPiC,OAAgB,EAASA,EAAGC,KAC5D,OAAOC,QAAQD,GAAQA,EAAKE,YAAcF,EAAKE,aAAepC,EACjE,CACD,SAASqC,EAAeJ,GACpB,IAAIK,EAAmBL,EAAGK,iBAAkBC,EAAUN,EAAGM,QAASC,EAAOP,EAAGO,KAAMzB,EAAQkB,EAAGlB,MAAO0B,EAAcR,EAAGQ,YACjHC,EAAO3B,GAAS,GAUpB,OATIuB,EAAiBC,EAAQI,gBACzBL,EAAiBE,MAEbE,EADAD,EACOA,EAAYC,GAGZ,IAAIE,OAAOF,EAAKxC,SAGxBwC,CACV,EA9BD,SAAWjD,GACPA,EAASA,EAAQ,SAAe,GAAK,WACrCA,EAASA,EAAQ,aAAmB,GAAK,eACzCA,EAASA,EAAQ,QAAc,GAAK,UACpCA,EAASA,EAAQ,KAAW,GAAK,OACjCA,EAASA,EAAQ,MAAY,GAAK,QAClCA,EAASA,EAAQ,QAAc,GAAK,SANxC,CAAA,CAOGA,IAAaA,EAAW,CAAhB,IAwBX,IAAIoD,EAA0B,qBAoB9B,IAyDIC,EACAC,EA1DAC,EAAM,EACNC,EAAe,IAAIC,OAAO,gBAC1BC,GAAgB,EAcpB,SAASC,EAAkBtD,GACvB,IACI,IAAIuD,EAAQvD,EAAEuD,OAASvD,EAAEwD,SACzB,OAAOD,EAAQxB,MAAMH,KAAK2B,GAAOE,IAAIC,GAAkBC,KAAK,IAAM,IAFtE,CAIA,MAAOlC,GACH,OAAO,IACV,CACJ,CACD,SAASiC,EAAiBE,GACtB,IAAIC,EAAiBD,EAAKE,QAC1B,GASJ,SAAyBF,GACrB,MAAO,eAAgBA,CAC1B,CAXOG,CAAgBH,GAChB,IACIC,EAAiBP,EAAkBM,EAAKI,aAAeH,CAC1D,CACD,MAAO1B,GACN,CAEL,OAAO0B,CACV,CAwBD,IAAII,EAAiB,6CACjBC,EAAgB,sDAChBC,EAAW,wBACf,SAASC,EAAqBN,EAASO,GACnC,OAAQP,GAAW,IAAIQ,QAAQL,GAAgB,SAAUM,EAAQC,EAAQC,EAAOC,EAAQC,EAAOC,GAC3F,IAlBeC,EAkBXC,EAAWL,GAASE,GAASC,EAC7BG,EAAaP,GAAUE,GAAU,GACrC,IAAKI,EACD,OAAOP,EAEX,IAAKL,EAAcc,KAAKF,GACpB,MAAO,OAASC,EAAaD,EAAWC,EAAa,IAEzD,GAAIZ,EAASa,KAAKF,GACd,MAAO,OAASC,EAAaD,EAAWC,EAAa,IAEzD,GAAoB,MAAhBD,EAAS,GACT,MAAO,OAASC,KA9BLF,EA8BiCR,GA5B5CY,QAAQ,OAAS,EACZJ,EAAIK,MAAM,KAAKlD,MAAM,EAAG,GAAG2B,KAAK,KAGhCkB,EAAIK,MAAM,KAAK,IAEZA,MAAM,KAAK,GAsBiCJ,GAAYC,EAAa,IAEjF,IAAII,EAAQd,EAAKa,MAAM,KACnBE,EAAQN,EAASI,MAAM,KAC3BC,EAAME,MACN,IAAK,IAAIC,EAAK,EAAGC,EAAUH,EAAOE,EAAKC,EAAQnF,OAAQkF,IAAM,CACzD,IAAIE,EAAOD,EAAQD,GACN,MAATE,IAGc,OAATA,EACLL,EAAME,MAGNF,EAAM3D,KAAKgE,GAElB,CACD,MAAO,OAAST,EAAaI,EAAMxB,KAAK,KAAOoB,EAAa,GAC/D,GACJ,CACD,IEpJIU,EAUAC,EAiBAC,EAcAC,EAMAC,EAOAC,EF8FAC,EAAoB,qBACpBC,EAA0B,qBA2D9B,SAASC,EAAcC,EAAKC,GACxB,IAAKA,GAA4C,KAA1BA,EAAeC,OAClC,OAAOD,EAEX,IAAIE,EAAIH,EAAII,cAAc,KAE1B,OADAD,EAAEhC,KAAO8B,EACFE,EAAEhC,IACZ,CAID,SAASkC,IACL,IAAIF,EAAIG,SAASF,cAAc,KAE/B,OADAD,EAAEhC,KAAO,GACFgC,EAAEhC,IACZ,CACD,SAASoC,EAAmBP,EAAKzD,EAASiE,EAAMzF,GAC5C,MAAa,QAATyF,GAA4B,SAATA,GAAmBzF,GAGxB,eAATyF,GAAyBzF,GAAsB,MAAbA,EAAM,GAFtCgF,EAAcC,EAAKjF,GAKZ,eAATyF,IACLzF,GACa,UAAZwB,GAAmC,OAAZA,GAAgC,OAAZA,EAG9B,WAATiE,GAAqBzF,EAtFlC,SAAiCiF,EAAKC,GAClC,GAA8B,KAA1BA,EAAeC,OACf,OAAOD,EAEX,IAAIQ,EAAM,EACV,SAASC,EAAkBC,GACvB,IAAIC,EACAC,EAAQF,EAAMG,KAAKb,EAAec,UAAUN,IAChD,OAAII,GACAD,EAAQC,EAAM,GACdJ,GAAOG,EAAM1G,OACN0G,GAEJ,EACV,CAED,IADA,IAAII,EAAS,GAETN,EAAkBZ,KACdW,GAAOR,EAAe/F,SAFjB,CAKT,IAAIyE,EAAM+B,EAAkBb,GAC5B,GAAsB,MAAlBlB,EAAI7C,OAAO,GACX6C,EAAMoB,EAAcC,EAAKrB,EAAIoC,UAAU,EAAGpC,EAAIzE,OAAS,IACvD8G,EAAO1F,KAAKqD,OAEX,CACD,IAAIsC,EAAiB,GACrBtC,EAAMoB,EAAcC,EAAKrB,GAEzB,IADA,IAAIuC,GAAW,IACF,CACT,IAAIC,EAAIlB,EAAemB,OAAOX,GAC9B,GAAU,KAANU,EAAU,CACVH,EAAO1F,MAAMqD,EAAMsC,GAAgBf,QACnC,KACH,CACI,GAAKgB,EAWI,MAANC,IACAD,GAAW,OAZC,CAChB,GAAU,MAANC,EAAW,CACXV,GAAO,EACPO,EAAO1F,MAAMqD,EAAMsC,GAAgBf,QACnC,KACH,CACc,MAANiB,IACLD,GAAW,EAElB,CAMDD,GAAkBE,EAClBV,GAAO,CACV,CACJ,CACJ,CACD,OAAOO,EAAOvD,KAAK,KACtB,CA8Bc4D,CAAwBrB,EAAKjF,GAEtB,UAATyF,GAAoBzF,EAClBmD,EAAqBnD,EAAOsF,KAElB,WAAZ9D,GAAiC,SAATiE,GAAmBzF,EACzCgF,EAAcC,EAAKjF,GAGnBA,EAZAgF,EAAcC,EAAKjF,EAcjC,CAoBD,SAASuG,EAAgBC,EAAMC,EAAeC,GAC1C,IAAKF,EACD,OAAO,EAEX,GAAIA,EAAKG,WAAaH,EAAKI,aAAc,CACrC,GAA6B,iBAAlBH,GACP,GAAID,EAAKK,UAAUC,SAASL,GACxB,OAAO,OAIX,IAAK,IAAIM,EAAS,EAAGA,EAASP,EAAKK,UAAU1H,OAAQ4H,IAAU,CAC3D,IAAIC,EAAYR,EAAKK,UAAUE,GAC/B,GAAIN,EAAc1C,KAAKiD,GACnB,OAAO,CAEd,CAEL,SAAIN,IACIF,EAAKS,QAAQP,KAIdH,EAAgBC,EAAKU,WAAYT,EAAeC,EAC1D,CACD,OAAIF,EAAKG,SAAaH,EAAKW,UAChBZ,EAAgBC,EAAKU,WAAYT,EAAeC,EAG9D,CAqCD,SAASU,EAAcnI,EAAGoI,GACtB,IAAInG,EAEAoG,EAtPqBC,EA6HPC,EAwHdvC,EAAMoC,EAAQpC,IAAKwC,EAAaJ,EAAQI,WAAYC,EAAgBL,EAAQK,cAAejB,EAAgBY,EAAQZ,cAAeC,EAAmBW,EAAQX,iBAAkBiB,EAAmBN,EAAQM,iBAAkBC,EAAKP,EAAQ9F,iBAAkBA,OAA0B,IAAPqG,EAAgB,CAAhB,EAAqBA,EAAIC,EAAaR,EAAQQ,WAAYnG,EAAc2F,EAAQ3F,YAAaoG,EAAKT,EAAQU,eAAgBA,OAAwB,IAAPD,EAAgB,CAAhB,EAAqBA,EAAIE,EAAeX,EAAQW,aAAcC,EAAeZ,EAAQY,aAAcC,EAAkBb,EAAQa,gBAE1hB,GAAIjD,EAAIkD,KAAM,CACV,IAAIC,EAAQnD,EAAIkD,KAAKE,GACrBf,EAAmB,IAAVc,OAAcE,EAAYF,CACtC,CACD,OAAQnJ,EAAE0H,UACN,KAAK1H,EAAEsJ,cACH,MAAqB,eAAjBtJ,EAAEuJ,WACK,CACH/G,KAAM/C,EAAS+J,SACfC,WAAY,GACZF,WAAYvJ,EAAEuJ,WACdlB,OAAQA,GAIL,CACH7F,KAAM/C,EAAS+J,SACfC,WAAY,GACZpB,OAAQA,GAGpB,KAAKrI,EAAE0J,mBACH,MAAO,CACHlH,KAAM/C,EAASkK,aACfnD,KAAMxG,EAAEwG,KACRoD,SAAU5J,EAAE4J,SACZC,SAAU7J,EAAE6J,SACZxB,OAAQA,GAEhB,KAAKrI,EAAE2H,aAIH,IAHA,IAAImC,EAvHhB,SAA2BC,EAASvB,EAAYC,GAC5C,GAA0B,iBAAfD,GACP,GAAIuB,EAAQnC,UAAUC,SAASW,GAC3B,OAAO,OAIX,IAAK,IAAIV,EAAS,EAAGA,EAASiC,EAAQnC,UAAU1H,OAAQ4H,IAAU,CAC9D,IAAIC,EAAYgC,EAAQnC,UAAUE,GAClC,GAAIU,EAAW1D,KAAKiD,GAChB,OAAO,CAEd,CAEL,QAAIU,GACOsB,EAAQ/B,QAAQS,EAG9B,CAqG2BuB,CAAkBhK,EAAGwI,EAAYC,GAC7ClG,EAvThB,SAAyBwH,GACrB,GAAIA,aAAmBE,gBACnB,MAAO,OAEX,IAAIC,EAAmBH,EAAQxH,QAAQI,cAAcuD,OACrD,OAAIjD,EAAa6B,KAAKoF,GACX,MAEJA,CACV,CA8SyBC,CAAgBnK,GAC1BoK,EAAe,CAAA,EACVhF,EAAK,EAAGiF,EAAKxI,MAAMH,KAAK1B,EAAEsK,YAAalF,EAAKiF,EAAGnK,OAAQkF,IAAM,CAClE,IAAImF,EAAKF,EAAGjF,GAAKoF,EAASD,EAAG/D,KAAMzF,EAAQwJ,EAAGxJ,MAC9CqJ,EAAaI,GAAUjE,EAAmBP,EAAKzD,EAASiI,EAAQzJ,EACnE,CACD,GAAgB,SAAZwB,GAAsBmG,EAAkB,CACxC,IAAI+B,EAAa5I,MAAMH,KAAKsE,EAAI0E,aAAaC,MAAK,SAAU7K,GACxD,OAAOA,EAAEqE,OAASnE,EAAEmE,IACvB,IACGP,EAAU,KACV6G,IACA7G,EAAUR,EAAkBqH,IAE5B7G,WACOwG,EAAaQ,WACbR,EAAajG,KACpBiG,EAAaS,SAAW3G,EAAqBN,EAAS6G,EAAWtG,MAExE,CACD,GAAgB,UAAZ5B,GACAvC,EAAEsI,SACAtI,EAAE8K,WACA9K,EAAE+K,aACF,IAAI7E,OAAOhG,QACX0D,EAAUR,EAAkBpD,EAAEsI,UAE9B8B,EAAaS,SAAW3G,EAAqBN,EAASyC,MAG9D,GAAgB,UAAZ9D,GACY,aAAZA,GACY,WAAZA,EAAsB,CAClBxB,EAAQf,EAAEe,MACY,UAAtBqJ,EAAa5H,MACS,aAAtB4H,EAAa5H,MACS,WAAtB4H,EAAa5H,MACS,WAAtB4H,EAAa5H,MACbzB,EACAqJ,EAAarJ,MAAQsB,EAAe,CAChCG,KAAM4H,EAAa5H,KACnBD,QAASA,EACTxB,MAAOA,EACPuB,iBAAkBA,EAClBG,YAAaA,IAGZzC,EAAEgL,UACPZ,EAAaY,QAAUhL,EAAEgL,QAEhC,CASD,GARgB,WAAZzI,IACIvC,EAAEiL,WAAa3I,EAAgB,OAC/B8H,EAAaa,UAAW,SAGjBb,EAAaa,UAGZ,WAAZ1I,GAAwByG,EACxB,GAAoB,OAAhBhJ,EAAEkL,WA5YtB,SAAyBC,GACrB,IAAIC,EAAMD,EAAOE,WAAW,MAC5B,IAAKD,EACD,OAAO,EAEX,IADA,IACSE,EAAI,EAAGA,EAAIH,EAAOI,MAAOD,GADlB,GAEZ,IAAK,IAAIE,EAAI,EAAGA,EAAIL,EAAOM,OAAQD,GAFvB,GAEuC,CAC/C,IAAIE,EAAeN,EAAIM,aACnBC,EAAuB9I,KAA2B6I,EAChDA,EAAa7I,GACb6I,EAEN,GADkB,IAAIE,YAAYD,EAAqBrL,KAAK8K,EAAKE,EAAGE,EAAGK,KAAKC,IAPpE,GAOmFX,EAAOI,MAAQD,GAAIO,KAAKC,IAP3G,GAO0HX,EAAOM,OAASD,IAAIO,KAAKC,QAC3IC,MAAK,SAAUC,GAAS,OAAiB,IAAVA,KAC3C,OAAO,CACd,CAEL,OAAO,CACV,EA4XwBC,CAAgBnM,KACjBoK,EAAagC,WAAapM,EAAEqM,UAAUvD,EAAetG,KAAMsG,EAAewD,eAG7E,KAAM,cAAetM,GAAI,CAC1B,IAAIuM,EAAgBvM,EAAEqM,UAAUvD,EAAetG,KAAMsG,EAAewD,SAChEE,EAAclG,SAASF,cAAc,UACzCoG,EAAYjB,MAAQvL,EAAEuL,MACtBiB,EAAYf,OAASzL,EAAEyL,OAEnBc,IADqBC,EAAYH,UAAUvD,EAAetG,KAAMsG,EAAewD,WAE/ElC,EAAagC,WAAaG,EAEjC,CAEL,GAAgB,QAAZhK,GAAqBwG,EAAc,CAC9BjG,IACDA,EAAgBkD,EAAII,cAAc,UAClCrD,EAAYD,EAAcuI,WAAW,OAEzC,IAAIoB,EAAUzM,EACV0M,EAAaD,EAAQE,YACzBF,EAAQE,YAAc,YACtB,IAAIC,EAAoB,WACpB,IACI9J,EAAcyI,MAAQkB,EAAQI,aAC9B/J,EAAc2I,OAASgB,EAAQK,cAC/B/J,EAAUgK,UAAUN,EAAS,EAAG,GAChCrC,EAAagC,WAAatJ,EAAcuJ,UAAUvD,EAAetG,KAAMsG,EAAewD,QAJ1F,CAMA,MAAOU,GACHC,QAAQC,KAAK,yBAA2BT,EAAQU,WAAa,YAAcH,EAC9E,CACDN,EACOtC,EAAauC,YAAcD,SACrBtC,EAAauC,aAE1BF,EAAQW,UAAqC,IAAzBX,EAAQI,aAC5BD,IAEAH,EAAQY,OAAST,CACxB,CAaD,GAZgB,UAAZrK,GAAmC,UAAZA,IACvB6H,EAAakD,cAAgBtN,EAAEuN,OACzB,SACA,SACNnD,EAAaoD,oBAAsBxN,EAAEyN,aAErCzN,EAAE0N,aACFtD,EAAauD,cAAgB3N,EAAE0N,YAE/B1N,EAAE4N,YACFxD,EAAayD,aAAe7N,EAAE4N,WAE9B9D,EAAW,CACX,IAAIgE,EAAK9N,EAAE+N,wBAAyBxC,EAAQuC,EAAGvC,MAAOE,EAASqC,EAAGrC,OAClErB,EAAe,CACX4D,MAAS5D,EAAY,MACrB6D,SAAU1C,EAAQ,KAClB2C,UAAWzC,EAAS,KAE3B,CAOD,MANgB,WAAZlJ,GAAyB0G,EAAgBmB,EAAa+D,OACjDnO,EAAEoO,kBACHhE,EAAaiE,OAASjE,EAAa+D,YAEhC/D,EAAa+D,KAEjB,CACH3L,KAAM/C,EAAS6O,QACf/L,QAASA,EACT+H,WAAYF,EACZX,WAAY,GACZ8E,OA/RMhG,EA+RcvI,EA9RzBmC,QAAuB,QAAfoG,EAAGhG,SAAqBgG,EAAGiG,uBA8RJnF,GAC1BS,UAAWA,EACXzB,OAAQA,GAEhB,KAAKrI,EAAEkI,UACH,IAAIuG,EAAgBzO,EAAEiI,YAAcjI,EAAEiI,WAAW1F,QAC7CwI,EAAc/K,EAAE+K,YAChB2D,EAA4B,UAAlBD,QAAmCpF,EAC7CsF,GAA6B,WAAlBF,QAAoCpF,EACnD,GAAIqF,GAAW3D,EAAa,CACxB,IACQ/K,EAAE4O,aAAe5O,EAAE6O,kBAEgB,QAA7B5M,EAAKjC,EAAEiI,WAAWK,aAA0B,IAAPrG,OAAgB,EAASA,EAAGqB,YACvEyH,GA1aKzC,EA0a6BtI,EAAEiI,WAAWK,OAzatDhF,SACPzB,MAAMH,KAAK4G,EAAMhF,UACdC,KAAI,SAAUG,GAAQ,OAAOA,EAAKE,SAAW,EADhD,IAEGH,KAAK,IACR,GAiaM,CAOA,MAAOuJ,GACHC,QAAQC,KAAK,wDAA0DF,EAAKhN,EAC/E,CACD+K,EAAc7G,EAAqB6G,EAAa1E,IACnD,CAYD,OAXIsI,KACA5D,EAAc,uBAEb2D,IACAC,IACDrH,EAAgBtH,EAAGwH,EAAeC,IAClCsD,IACAA,EAAcnC,EACRA,EAAWmC,GACXA,EAAY3G,QAAQ,QAAS,MAEhC,CACH5B,KAAM/C,EAASqP,KACf/D,YAAaA,GAAe,GAC5B2D,QAASA,EACTrG,OAAQA,GAEhB,KAAKrI,EAAE+O,mBACH,MAAO,CACHvM,KAAM/C,EAASuP,MACfjE,YAAa,GACb1C,OAAQA,GAEhB,KAAKrI,EAAEiP,aACH,MAAO,CACHzM,KAAM/C,EAASyP,QACfnE,YAAa/K,EAAE+K,aAAe,GAC9B1C,OAAQA,GAEhB,QACI,OAAO,EAElB,CACD,SAAS8G,EAAcC,GACnB,YAAkB/F,IAAd+F,EACO,GAGAA,EAAUzM,aAExB,CAwED,SAAS0M,EAAoBrP,EAAGoI,GAC5B,IAqBIgB,EArBApD,EAAMoC,EAAQpC,IAAKzC,EAAM6E,EAAQ7E,IAAKiF,EAAaJ,EAAQI,WAAYC,EAAgBL,EAAQK,cAAejB,EAAgBY,EAAQZ,cAAeC,EAAmBW,EAAQX,iBAAkBxF,EAAKmG,EAAQkH,UAAWA,OAAmB,IAAPrN,GAAwBA,EAAI0G,EAAKP,EAAQM,iBAAkBA,OAA0B,IAAPC,GAAuBA,EAAIE,EAAKT,EAAQ9F,iBAAkBA,OAA0B,IAAPuG,EAAgB,CAAhB,EAAqBA,EAAID,EAAaR,EAAQQ,WAAYnG,EAAc2F,EAAQ3F,YAAa8M,EAAiBnH,EAAQmH,eAAgBlF,EAAKjC,EAAQU,eAAgBA,OAAwB,IAAPuB,EAAgB,CAAhB,EAAqBA,EAAIE,EAAKnC,EAAQW,aAAcA,OAAsB,IAAPwB,GAAwBA,EAAIuD,EAAK1F,EAAQY,aAAcA,OAAsB,IAAP8E,GAAwBA,EAAI0B,EAAcpH,EAAQoH,YAAaC,EAAerH,EAAQqH,aAAcC,EAAKtH,EAAQuH,kBAAmBA,OAA2B,IAAPD,EAAgB,IAAOA,EAAIE,EAAKxH,EAAQa,gBAAiBA,OAAyB,IAAP2G,EAAgB,WAAc,OAAO,CAArC,EAAgDA,EACj9BC,EAAKzH,EAAQ0H,mBAAoBA,OAA4B,IAAPD,GAAuBA,EAC7EE,EAAkB5H,EAAcnI,EAAG,CACnCgG,IAAKA,EACLwC,WAAYA,EACZC,cAAeA,EACfjB,cAAeA,EACfC,iBAAkBA,EAClBiB,iBAAkBA,EAClBpG,iBAAkBA,EAClBsG,WAAYA,EACZnG,YAAaA,EACbqG,eAAgBA,EAChBC,aAAcA,EACdC,aAAcA,EACdC,gBAAiBA,IAErB,IAAK8G,EAED,OADA9C,QAAQC,KAAKlN,EAAG,kBACT,KAIPoJ,EADA,SAAUpJ,EACLA,EAAEkJ,KAAKE,IA/FpB,SAAyB4G,EAAIT,GACzB,GAAIA,EAAeU,SAAWD,EAAGxN,OAAS/C,EAASyP,QAC/C,OAAO,EAEN,GAAIc,EAAGxN,OAAS/C,EAAS6O,QAAS,CACnC,GAAIiB,EAAeW,SACC,WAAfF,EAAGzN,SACgB,SAAfyN,EAAGzN,SACsB,YAAtByN,EAAG1F,WAAWM,KACO,WAArBoF,EAAG1F,WAAW6F,IACF,SAAfH,EAAGzN,SACsB,aAAtByN,EAAG1F,WAAWM,KACgB,iBAAvBoF,EAAG1F,WAAWnG,MACrB6L,EAAG1F,WAAWnG,KAAKiM,SAAS,QACpC,OAAO,EAEN,GAAIb,EAAec,cACH,SAAfL,EAAGzN,SAA4C,kBAAtByN,EAAG1F,WAAWM,KACrB,SAAfoF,EAAGzN,UACC4M,EAAca,EAAG1F,WAAW9D,MAAMK,MAAM,sCACC,qBAAtCsI,EAAca,EAAG1F,WAAW9D,OACS,SAArC2I,EAAca,EAAG1F,WAAWM,MACS,qBAArCuE,EAAca,EAAG1F,WAAWM,MACS,kBAArCuE,EAAca,EAAG1F,WAAWM,OACxC,OAAO,EAEN,GAAmB,SAAfoF,EAAGzN,QAAoB,CAC5B,GAAIgN,EAAee,sBACfnB,EAAca,EAAG1F,WAAW9D,MAAMK,MAAM,0BACxC,OAAO,EAEN,GAAI0I,EAAegB,iBACnBpB,EAAca,EAAG1F,WAAWkG,UAAU3J,MAAM,sBACzCsI,EAAca,EAAG1F,WAAW9D,MAAMK,MAAM,mBACF,cAAtCsI,EAAca,EAAG1F,WAAW9D,OAChC,OAAO,EAEN,GAAI+I,EAAekB,iBACmB,WAAtCtB,EAAca,EAAG1F,WAAW9D,OACa,cAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,YAAtC2I,EAAca,EAAG1F,WAAW9D,OAChC,OAAO,EAEN,GAAI+I,EAAemB,wBACYrH,IAAhC2G,EAAG1F,WAAW,cACd,OAAO,EAEN,GAAIiF,EAAeoB,qBACmB,WAAtCxB,EAAca,EAAG1F,WAAW9D,OACa,cAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,cAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,cAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,WAAtC2I,EAAca,EAAG1F,WAAW9D,OAC5B2I,EAAca,EAAG1F,WAAWkG,UAAU3J,MAAM,cAC5CsI,EAAca,EAAG1F,WAAWkG,UAAU3J,MAAM,cAChD,OAAO,EAEN,GAAI0I,EAAeqB,uBACmB,6BAAtCzB,EAAca,EAAG1F,WAAW9D,OACa,wBAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,eAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,oBAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,cAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,iBAAtC2I,EAAca,EAAG1F,WAAW9D,OACU,+BAAtC2I,EAAca,EAAG1F,WAAW9D,OAChC,OAAO,CAEd,CACJ,CACD,OAAO,CACV,CA2BYqK,CAAgBd,EAAiBR,KACpCO,GACEC,EAAgBvN,OAAS/C,EAASqP,MACjCiB,EAAgBrB,SAChBqB,EAAgBhF,YAAY3G,QAAQ,cAAe,IAAIlE,QAnmBzD8C,IAomBEG,EAKT,IAAI2N,EAAiBnR,OAAOC,OAAOmQ,EAAiB,CAAE3G,GAAIA,IAE1D,GADApJ,EAAEkJ,KAAO4H,EACL1H,IAAOjG,EACP,OAAO,KAEXI,EAAI6F,GAAMpJ,EACNwP,GACAA,EAAYxP,GAEhB,IAAI+Q,GAAezB,EAOnB,GANIwB,EAAetO,OAAS/C,EAAS6O,UACjCyC,EAAcA,IAAgBD,EAAehH,iBACtCgH,EAAehH,UAClB9J,EAAEoC,aACF0O,EAAeE,cAAe,KAEjCF,EAAetO,OAAS/C,EAAS+J,UAClCsH,EAAetO,OAAS/C,EAAS6O,UACjCyC,EAAa,CACTxB,EAAe0B,gBACflB,EAAgBvN,OAAS/C,EAAS6O,SACN,SAA5ByB,EAAgBxN,UAChBuN,GAAqB,GAwBzB,IAtBA,IAAIoB,EAAgB,CAChBlL,IAAKA,EACLzC,IAAKA,EACLiF,WAAYA,EACZC,cAAeA,EACfjB,cAAeA,EACfC,iBAAkBA,EAClB6H,UAAWA,EACX5G,iBAAkBA,EAClBpG,iBAAkBA,EAClBsG,WAAYA,EACZnG,YAAaA,EACb8M,eAAgBA,EAChBzG,eAAgBA,EAChBC,aAAcA,EACdC,aAAcA,EACd8G,mBAAoBA,EACpBN,YAAaA,EACbC,aAAcA,EACdE,kBAAmBA,EACnB1G,gBAAiBA,GAEZ7D,EAAK,EAAG+L,EAAKtP,MAAMH,KAAK1B,EAAEyJ,YAAarE,EAAK+L,EAAGjR,OAAQkF,IAAM,EAE9DgM,EAAsB/B,EADb8B,EAAG/L,GACsC8L,KAElDJ,EAAerH,WAAWnI,KAAK8P,EAEtC,CACD,GA5sBR,SAAmBpR,GACf,OAAOA,EAAE0H,WAAa1H,EAAE2H,YAC3B,CA0sBW0J,CAAUrR,IAAMA,EAAEoC,WAClB,IAAK,IAAIkP,EAAK,EAAGC,EAAK1P,MAAMH,KAAK1B,EAAEoC,WAAWqH,YAAa6H,EAAKC,EAAGrR,OAAQoR,IAAM,CAC7E,IACIF,KAAsB/B,EADbkC,EAAGD,GACsCJ,MAElDE,EAAoBI,UAAW,EAC/BV,EAAerH,WAAWnI,KAAK8P,GAEtC,CAER,CAqCD,OApCIpR,EAAEiI,YAAcjG,EAAahC,EAAEiI,cAC/B6I,EAAeU,UAAW,GAE1BV,EAAetO,OAAS/C,EAAS6O,SACN,WAA3BwC,EAAevO,SA3bvB,SAA0BkP,EAAUC,EAAU/B,GAC1C,IAAIgC,EAAMF,EAASG,cACnB,GAAKD,EAAL,CAGA,IACIE,EADAC,GAAQ,EAEZ,IACID,EAAaF,EAAIrL,SAASuL,UAD9B,CAGA,MAAOtQ,GACH,MACH,CACD,GAAmB,aAAfsQ,EAAJ,CAcA,IAAIE,EAAW,cACXJ,EAAIK,SAAS7N,OAAS4N,GACtBN,EAAStD,MAAQ4D,GACA,KAAjBN,EAAStD,IAIbsD,EAASQ,iBAAiB,OAAQP,GAH9BQ,WAAWR,EAAU,EALxB,KAbD,CACI,IAAIS,EAAUD,YAAW,WAChBJ,IACDJ,IACAI,GAAQ,EAHQ,GAKrBnC,GACH8B,EAASQ,iBAAiB,QAAQ,WAC9BG,aAAaD,GACbL,GAAQ,EACRJ,MAGP,CAtBA,CA+BJ,CAyZOW,CAAiBrS,GAAG,WAChB,IAAIsS,EAAYtS,EAAEoO,gBAClB,GAAIkE,GAAa7C,EAAc,CAC3B,IAAI8C,EAAuBlD,EAAoBiD,EAAW,CACtDtM,IAAKsM,EACL/O,IAAKA,EACLiF,WAAYA,EACZC,cAAeA,EACfjB,cAAeA,EACfC,iBAAkBA,EAClB6H,WAAW,EACX5G,iBAAkBA,EAClBpG,iBAAkBA,EAClBsG,WAAYA,EACZnG,YAAaA,EACb8M,eAAgBA,EAChBzG,eAAgBA,EAChBC,aAAcA,EACdC,aAAcA,EACd8G,mBAAoBA,EACpBN,YAAaA,EACbC,aAAcA,EACdE,kBAAmBA,EACnB1G,gBAAiBA,IAEjBsJ,GACA9C,EAAazP,EAAGuS,EAEvB,CA5BW,GA6Bb5C,GAEAmB,CACV,CGlwBD,SAAS0B,EAAGhQ,EAAMiQ,EAAIC,QACH,IAAXA,IAAqBA,EAASpM,UAClC,IAAI8B,EAAU,CAAEuK,SAAS,EAAMC,SAAS,GAExC,OADAF,EAAOT,iBAAiBzP,EAAMiQ,EAAIrK,GAC3B,WAAc,OAAOsK,EAAOG,oBAAoBrQ,EAAMiQ,EAAIrK,GACpE,EDRD,SAAW7C,GACPA,EAAUA,EAAS,iBAAuB,GAAK,mBAC/CA,EAAUA,EAAS,KAAW,GAAK,OACnCA,EAAUA,EAAS,aAAmB,GAAK,eAC3CA,EAAUA,EAAS,oBAA0B,GAAK,sBAClDA,EAAUA,EAAS,KAAW,GAAK,OACnCA,EAAUA,EAAS,OAAa,GAAK,SACrCA,EAAUA,EAAS,OAAa,GAAK,QAPzC,CAAA,CAQGA,IAAcA,EAAY,CAAjB,IAEZ,SAAWC,GACPA,EAAkBA,EAAiB,SAAe,GAAK,WACvDA,EAAkBA,EAAiB,UAAgB,GAAK,YACxDA,EAAkBA,EAAiB,iBAAuB,GAAK,mBAC/DA,EAAkBA,EAAiB,OAAa,GAAK,SACrDA,EAAkBA,EAAiB,eAAqB,GAAK,iBAC7DA,EAAkBA,EAAiB,MAAY,GAAK,QACpDA,EAAkBA,EAAiB,UAAgB,GAAK,YACxDA,EAAkBA,EAAiB,iBAAuB,GAAK,mBAC/DA,EAAkBA,EAAiB,eAAqB,GAAK,iBAC7DA,EAAkBA,EAAiB,eAAqB,GAAK,iBAC7DA,EAAkBA,EAAiB,KAAW,IAAM,OACpDA,EAAkBA,EAAiB,IAAU,IAAM,MACnDA,EAAkBA,EAAiB,KAAW,IAAM,OACpDA,EAAkBA,EAAiB,iBAAuB,IAAM,kBAdpE,CAAA,CAeGA,IAAsBA,EAAoB,CAAzB,IAEpB,SAAWC,GACPA,EAAkBA,EAAiB,QAAc,GAAK,UACtDA,EAAkBA,EAAiB,UAAgB,GAAK,YACxDA,EAAkBA,EAAiB,MAAY,GAAK,QACpDA,EAAkBA,EAAiB,YAAkB,GAAK,cAC1DA,EAAkBA,EAAiB,SAAe,GAAK,WACvDA,EAAkBA,EAAiB,MAAY,GAAK,QACpDA,EAAkBA,EAAiB,KAAW,GAAK,OACnDA,EAAkBA,EAAiB,WAAiB,GAAK,aACzDA,EAAkBA,EAAiB,mBAAyB,GAAK,qBACjEA,EAAkBA,EAAiB,SAAe,GAAK,WACvDA,EAAkBA,EAAiB,YAAkB,IAAM,aAX/D,CAAA,CAYGA,IAAsBA,EAAoB,CAAzB,IAEpB,SAAWC,GACPA,EAAcA,EAAc,MAAQ,GAAK,KACzCA,EAAcA,EAAa,MAAY,GAAK,QAC5CA,EAAcA,EAAa,OAAa,GAAK,QAHjD,CAAA,CAIGA,IAAkBA,EAAgB,CAArB,IAEhB,SAAWC,GACPA,EAAkBA,EAAiB,KAAW,GAAK,OACnDA,EAAkBA,EAAiB,MAAY,GAAK,QACpDA,EAAkBA,EAAiB,OAAa,GAAK,SACrDA,EAAkBA,EAAiB,aAAmB,GAAK,cAJ/D,CAAA,CAKGA,IAAsBA,EAAoB,CAAzB,IAEpB,SAAWC,GACPA,EAAc,MAAY,QAC1BA,EAAc,MAAY,QAC1BA,EAAc,OAAa,SAC3BA,EAAc,OAAa,SAC3BA,EAAc,OAAa,SAC3BA,EAAc,sBAA4B,yBAC1CA,EAAc,oBAA0B,wBACxCA,EAAc,kBAAwB,sBACtCA,EAAc,UAAgB,aAC9BA,EAAc,QAAc,WAC5BA,EAAc,iBAAuB,oBACrCA,EAAc,UAAgB,aAC9BA,EAAc,YAAkB,eAChCA,EAAc,MAAY,QAC1BA,EAAc,YAAkB,eAChCA,EAAc,SAAe,WAhBjC,CAAA,CAiBGA,IAAmBA,EAAiB,CAAA,IChCvC,IAAIkN,EAAiC,4NAKjCC,EAAU,CACVxP,IAAK,CADK,EAEVyP,MAAO,WAEH,OADA/F,QAAQ1L,MAAMuR,IACN,CAJF,EAMVG,QAAS,WAEL,OADAhG,QAAQ1L,MAAMuR,GACP,IARD,EAUVI,kBAAmB,WACfjG,QAAQ1L,MAAMuR,EAXR,EAaVK,IAAK,WAED,OADAlG,QAAQ1L,MAAMuR,IACP,CAfD,EAiBVM,MAAO,WACHnG,QAAQ1L,MAAMuR,EACjB,GAYL,SAASO,EAASC,EAAMC,EAAMnL,QACV,IAAZA,IAAsBA,EAAU,CAAA,GACpC,IAAIoL,EAAU,KACVC,EAAW,EACf,OAAO,SAAUC,GACb,IAAIC,EAAMC,KAAKD,MACVF,IAAgC,IAApBrL,EAAQyL,UACrBJ,EAAWE,GAEf,IAAIG,EAAYP,GAAQI,EAAMF,GAC1BM,EAAUvT,KACVwT,EAAO/T,UACP6T,GAAa,GAAKA,EAAYP,GAC1BC,IACApB,aAAaoB,GACbA,EAAU,MAEdC,EAAWE,EACXL,EAAK/S,MAAMwT,EAASC,IAEdR,IAAgC,IAArBpL,EAAQ6L,WACzBT,EAAUtB,YAAW,WACjBuB,GAA+B,IAApBrL,EAAQyL,QAAoB,EAAID,KAAKD,MAChDH,EAAU,KACVF,EAAK/S,MAAMwT,EAASC,EAHJ,GAIjBF,IAGd,CACD,SAASI,EAAWxB,EAAQyB,EAAKC,EAAGC,EAAW1C,QAC/B,IAARA,IAAkBA,EAAM2C,QAC5B,IAAIC,EAAW5C,EAAIhS,OAAO6U,yBAAyB9B,EAAQyB,GAc3D,OAbAxC,EAAIhS,OAAO8U,eAAe/B,EAAQyB,EAAKE,EACjCD,EACA,CACEM,IAAK,SAAU3T,GACX,IAAI4T,EAAQnU,KACZ0R,YAAW,WACPkC,EAAEM,IAAIpU,KAAKqU,EAAO5T,EADZ,GAEP,GACCwT,GAAYA,EAASG,KACrBH,EAASG,IAAIpU,KAAKE,KAAMO,EAE/B,IAEF,WAAc,OAAOmT,EAAWxB,EAAQyB,EAAKI,GAAY,CAAA,GAAI,GACvE,CACD,SAASK,EAAMC,EAAQrO,EAAMsO,GACzB,IACI,KAAMtO,KAAQqO,GACV,OAAO,WAAY,EAEvB,IAAIE,EAAaF,EAAOrO,GACpBwO,EAAUF,EAAYC,GAW1B,MAVuB,mBAAZC,IACPA,EAAQ5U,UAAY4U,EAAQ5U,WAAa,CAAA,EACzCT,OAAOsV,iBAAiBD,EAAS,CAC7BE,mBAAoB,CAChBC,YAAY,EACZpU,MAAOgU,MAInBF,EAAOrO,GAAQwO,EACR,WACHH,EAAOrO,GAAQuO,EAjBvB,CAoBA,MAAO9S,GACH,OAAO,WAAY,CACtB,CACJ,CACD,SAASmT,IACL,OAAQd,OAAOe,aACV/O,SAASgP,iBAAmBhP,SAASgP,gBAAgBC,cACrDjP,SAASkP,MAAQlP,SAASkP,KAAKD,YACvC,CACD,SAASE,IACL,OAAQnB,OAAOoB,YACVpP,SAASgP,iBAAmBhP,SAASgP,gBAAgBK,aACrDrP,SAASkP,MAAQlP,SAASkP,KAAKG,WACvC,CACD,SAASC,EAAUrO,EAAMiB,GACrB,IAAKjB,EACD,OAAO,EAEX,GAAIA,EAAKG,WAAaH,EAAKI,aAAc,CACrC,IAAIkO,GAAc,EAClB,GAA0B,iBAAfrN,EAAyB,CAChC,QAAqBa,IAAjB9B,EAAKuO,QACL,OAA0C,OAAnCvO,EAAKuO,QAAQ,IAAMtN,GAG1BqN,EAActO,EAAKK,UAAUC,SAASW,EAE7C,MAEGjB,EAAKK,UAAUmO,SAAQ,SAAUhO,GACzBS,EAAW1D,KAAKiD,KAChB8N,GAAc,MAI1B,OAAOA,GAAeD,EAAUrO,EAAKU,WAAYO,EACpD,CACD,OAAIjB,EAAKG,SAAaH,EAAKW,UAChB0N,EAAUrO,EAAKU,WAAYO,EAGzC,CACD,SAASwN,EAAUhW,GACf,MAAI,SAAUA,GACHA,EAAEkJ,KAAKE,KAAOjG,CAG5B,CACD,SAAS8S,EAAkBvD,EAAQwD,GAC/B,GAAIlU,EAAa0Q,GACb,OAAO,EAEX,IAAItJ,EAAK8M,EAAOlD,MAAMN,GACtB,OAAKwD,EAAO/C,IAAI/J,MAGZsJ,EAAOzK,YACPyK,EAAOzK,WAAWP,WAAagL,EAAOpJ,kBAGrCoJ,EAAOzK,YAGLgO,EAAkBvD,EAAOzK,WAAYiO,GAC/C,CACD,SAASC,EAAaC,GAClB,OAAOjU,QAAQiU,EAAMC,eACxB,CA6PD,SAASC,EAAc/O,GACnB,MAAI,SAAUA,IACFA,EAAK2B,KAAK1G,OAAS/C,EAAS6O,SAAiC,WAAtB/G,EAAK2B,KAAK3G,QAGhE,CAwBD,SAASgU,EAAcvW,GACnB,OAAOmC,QAAQnC,aAA6B,EAASA,EAAEoC,WAC1D,CC3eD,SAASoU,EAAmBxW,GACxB,MAAO,SAAUA,CACpB,CD4DqB,oBAAXsU,QAA0BA,OAAOmC,OAASnC,OAAOoC,UACxD3D,EAAU,IAAI0D,MAAM1D,EAAS,CACzB4D,IAAK,SAAUjE,EAAQkE,EAAMC,GAIzB,MAHa,QAATD,GACA3J,QAAQ1L,MAAMuR,GAEX4D,QAAQC,IAAIjE,EAAQkE,EAAMC,EACpC,KClET,IAAIC,EAAoB,WACpB,SAASA,IACLtW,KAAKN,OAAS,EACdM,KAAKuW,KAAO,IACf,CAqED,OApEAD,EAAiB1W,UAAUuW,IAAM,SAAUK,GACvC,GAAIA,GAAYxW,KAAKN,OACjB,MAAM,IAAI+W,MAAM,kCAGpB,IADA,IAAIC,EAAU1W,KAAKuW,KACVI,EAAQ,EAAGA,EAAQH,EAAUG,IAClCD,GAAWA,aAAyC,EAASA,EAAQpW,OAAS,KAElF,OAAOoW,GAEXJ,EAAiB1W,UAAUgX,QAAU,SAAUpX,GAC3C,IAAIuH,EAAO,CACPxG,MAAOf,EACPyT,SAAU,KACV3S,KAAM,MAGV,GADAd,EAAEqX,KAAO9P,EACLvH,EAAE6O,iBAAmB2H,EAAmBxW,EAAE6O,iBAAkB,CAC5D,IAAIqI,EAAUlX,EAAE6O,gBAAgBwI,KAAKvW,KACrCyG,EAAKzG,KAAOoW,EACZ3P,EAAKkM,SAAWzT,EAAE6O,gBAAgBwI,KAClCrX,EAAE6O,gBAAgBwI,KAAKvW,KAAOyG,EAC1B2P,IACAA,EAAQzD,SAAWlM,EAN3B,MASK,GAAIvH,EAAE4O,aACP4H,EAAmBxW,EAAE4O,cACrB5O,EAAE4O,YAAYyI,KAAK5D,SAAU,CACzByD,EAAUlX,EAAE4O,YAAYyI,KAAK5D,SACjClM,EAAKkM,SAAWyD,EAChB3P,EAAKzG,KAAOd,EAAE4O,YAAYyI,KAC1BrX,EAAE4O,YAAYyI,KAAK5D,SAAWlM,EAC1B2P,IACAA,EAAQpW,KAAOyG,EAEtB,MAEO/G,KAAKuW,OACLvW,KAAKuW,KAAKtD,SAAWlM,GAEzBA,EAAKzG,KAAON,KAAKuW,KACjBvW,KAAKuW,KAAOxP,EAEhB/G,KAAKN,UAET4W,EAAiB1W,UAAUkX,WAAa,SAAUtX,GAC9C,IAAIkX,EAAUlX,EAAEqX,KACX7W,KAAKuW,OAGLG,EAAQzD,UAOTyD,EAAQzD,SAAS3S,KAAOoW,EAAQpW,KAC5BoW,EAAQpW,OACRoW,EAAQpW,KAAK2S,SAAWyD,EAAQzD,YARpCjT,KAAKuW,KAAOG,EAAQpW,KAChBN,KAAKuW,OACLvW,KAAKuW,KAAKtD,SAAW,OASzBzT,EAAEqX,aACKrX,EAAEqX,KAEb7W,KAAKN,WAEF4W,CACV,CA1EuB,GA2EpBS,EAAU,SAAUnO,EAAIoO,GAAY,MAAO,GAAGzV,OAAOqH,EAAI,KAAKrH,OAAOyV,EAAY,EACrF,SAASC,EAAQzX,GACb,MAAO,SAAUA,CACpB,CAoZD,SAAS0X,EAAWC,EAAS3X,GACzB2X,EAAQC,OAAO5X,GACfA,EAAEyJ,WAAWsM,SAAQ,SAAU8B,GAAU,OAAOH,EAAWC,EAASE,KACvE,CACD,SAASC,GAAgBC,EAAS/X,EAAGkW,GACjC,IAAIjO,EAAajI,EAAEiI,WACnB,IAAKA,EACD,OAAO,EAEX,IAAIuP,EAAWtB,EAAOlD,MAAM/K,GAC5B,QAAI8P,EAAQ9L,MAAK,SAAU9K,GAAK,OAAOA,EAAEiI,KAAOoO,CAAW,KAGpDM,GAAgBC,EAAS9P,EAAYiO,EAC/C,CACD,SAAS8B,GAAgBtD,EAAK1U,GAC1B,IAAIiI,EAAajI,EAAEiI,WACnB,QAAKA,MAGDyM,EAAIvB,IAAIlL,IAGL+P,GAAgBtD,EAAKzM,GAC/B,CAED,IAAAgQ,GA7asB,WAClB,SAASC,IACL,IAAIvD,EAAQnU,KACZA,KAAK2X,QAAS,EACd3X,KAAK4X,QAAS,EACd5X,KAAK6X,MAAQ,GACb7X,KAAK8J,WAAa,GAClB9J,KAAKuX,QAAU,GACfvX,KAAK8X,WAAa,GAClB9X,KAAK+X,SAAW,GAChB/X,KAAKgY,SAAW,IAAIC,IACpBjY,KAAKkY,SAAW,IAAID,IACpBjY,KAAKmY,WAAa,IAAIF,IACtBjY,KAAKoY,iBAAmB,SAAUC,GAC9BA,EAAU9C,QAAQpB,EAAMmE,iBACxBnE,EAAMoE,QAEVvY,KAAKuY,KAAO,WACR,IAAIC,EAAK/W,EAAIgX,EAAKtQ,EAClB,IAAIgM,EAAMwD,SAAUxD,EAAMyD,OAA1B,CAwEA,IArEA,IAAIc,EAAO,GACPC,EAAU,IAAIrC,EACdsC,EAAY,SAAUpZ,GAGtB,IAFA,IAAIqZ,EAAKrZ,EACLsZ,EAASnW,EACNmW,IAAWnW,GAEdmW,GADAD,EAAKA,GAAMA,EAAGzK,cACC+F,EAAMuB,OAAOlD,MAAMqG,GAEtC,OAAOC,GAEPC,EAAU,SAAUvZ,GAMpB,IALA,IAAIiC,EAAI0G,EAAIE,EAAIwB,EAAIE,EAChBiP,EAAaxZ,EAAEyZ,YACc,QAA1BxX,EAAKjC,EAAEyZ,qBAAkC,IAAPxX,OAAgB,EAASA,EAAGC,KAC/D,KACFwX,EAAiBF,EAC4J,QAAzK3Q,EAA2G,QAArGF,EAAK+Q,aAAuD,EAASA,EAAeD,mBAAgC,IAAP9Q,OAAgB,EAASA,EAAGrI,KAAKoZ,UAAoC,IAAP7Q,OAAgB,EAASA,EAAG3G,MACjNwX,GAC+K,QAAzKnP,EAA2G,QAArGF,EAAKqP,aAAuD,EAASA,EAAeD,mBAAgC,IAAPpP,OAAgB,EAASA,EAAG/J,KAAKoZ,UAAoC,IAAPnP,OAAgB,EAASA,EAAGrI,OAC3M,KACZ,IAAIyX,IAAYhF,EAAM3O,IAAI6B,SAAS7H,IACX,OAAnB0Z,GAA4B/E,EAAM3O,IAAI6B,SAAS6R,IACpD,GAAK1Z,EAAEiI,aAAc0R,EAArB,CAGA,IAAInC,EAAWxV,EAAahC,EAAEiI,YACxB0M,EAAMuB,OAAOlD,MAAMwG,GACnB7E,EAAMuB,OAAOlD,MAAMhT,EAAEiI,YACvBqR,EAASF,EAAUpZ,GACvB,IAAkB,IAAdwX,IAA+B,IAAZ8B,EACnB,OAAOH,EAAQ/B,QAAQpX,GAE3B,IAAIgQ,EAAKX,EAAoBrP,EAAG,CAC5BgG,IAAK2O,EAAM3O,IACXzC,IAAKoR,EAAMuB,OAAO3S,IAClBiF,WAAYmM,EAAMnM,WAClBC,cAAekM,EAAMlM,cACrBjB,cAAemN,EAAMnN,cACrBC,iBAAkBkN,EAAMlN,iBACxB6H,WAAW,EACX5G,iBAAkBiM,EAAMjM,iBACxBpG,iBAAkBqS,EAAMrS,iBACxBsG,WAAY+L,EAAM/L,WAClBnG,YAAakS,EAAMlS,YACnB8M,eAAgBoF,EAAMpF,eACtBvG,aAAc2L,EAAM3L,aACpBD,aAAc4L,EAAM5L,aACpByG,YAAa,SAAUoK,GACftD,EAAcsD,IACdjF,EAAMkF,cAAcC,UAAUF,GAE9BrD,EAAcvW,IACd2U,EAAMoF,iBAAiBC,cAAcha,EAAEoC,WAAYkE,SApB/B,EAuB5BmJ,aAAc,SAAUwK,EAAQC,GAC5BvF,EAAMkF,cAAcM,aAAaF,EAAQC,GACzCvF,EAAMoF,iBAAiBK,oBAAoBH,EAC9C,IAEDjK,GACAkJ,EAAK5X,KAAK,CACNkW,SAAUA,EACV8B,OAAQA,EACR/R,KAAMyI,GAxCb,GA4CE2E,EAAM2D,WAAWpY,QACpByU,EAAMuB,OAAOhD,kBAAkByB,EAAM2D,WAAW+B,SAEpD,IACI,IAAK,IAAIxR,EAAKpI,EAASkU,EAAM+D,UAAWrO,EAAKxB,EAAG/H,QAASuJ,EAAGrJ,KAAMqJ,EAAKxB,EAAG/H,OAAQ,CAC9E,IAAId,EAAIqK,EAAGtJ,MACP+W,GAAgBnD,EAAMoD,QAAS/X,EAAG2U,EAAMuB,UACvCvB,EAAM+D,SAASvF,IAAInT,EAAEiI,aAG1BsR,EAAQvZ,EACX,CARL,CAUA,MAAOsa,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQjQ,IAAOA,EAAGrJ,OAASiB,EAAK4G,EAAG0R,SAAStY,EAAG3B,KAAKuI,EACnD,CACO,QAAE,GAAImQ,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CACD,IACI,IAAK,IAAIgJ,EAAK9J,EAASkU,EAAM6D,UAAW1K,EAAKvD,EAAGzJ,QAASgN,EAAG9M,KAAM8M,EAAKvD,EAAGzJ,OAAQ,CAC1Ed,EAAI8N,EAAG/M,MACNiX,GAAgBrD,EAAMgE,WAAY3Y,IAClC8X,GAAgBnD,EAAMoD,QAAS/X,EAAG2U,EAAMuB,QAGpC8B,GAAgBrD,EAAM+D,SAAU1Y,GACrCuZ,EAAQvZ,GAGR2U,EAAMgE,WAAW6B,IAAIxa,GANrBuZ,EAAQvZ,EAQf,CAbL,CAeA,MAAOya,GAASxB,EAAM,CAAE1X,MAAOkZ,EAAU,CACjC,QACJ,IACQ3M,IAAOA,EAAG9M,OAAS2H,EAAK4B,EAAGgQ,SAAS5R,EAAGrI,KAAKiK,EACnD,CACO,QAAE,GAAI0O,EAAK,MAAMA,EAAI1X,KAAQ,CACxC,CAED,IADA,IAAImZ,EAAY,KACTvB,EAAQjZ,QAAQ,CACnB,IAAIqH,EAAO,KACX,GAAImT,EAAW,CACX,IAAIlD,EAAW7C,EAAMuB,OAAOlD,MAAM0H,EAAU3Z,MAAMkH,YAC9CqR,EAASF,EAAUsB,EAAU3Z,QACf,IAAdyW,IAA+B,IAAZ8B,IACnB/R,EAAOmT,EAEd,CACD,IAAKnT,EACD,IAAK,IAAI4P,EAAQgC,EAAQjZ,OAAS,EAAGiX,GAAS,EAAGA,IAAS,CACtD,IAAIwD,EAAQxB,EAAQxC,IAAIQ,GACxB,GAAIwD,EAAO,CACHnD,EAAW7C,EAAMuB,OAAOlD,MAAM2H,EAAM5Z,MAAMkH,YAC1CqR,EAASF,EAAUuB,EAAM5Z,OAC7B,IAAkB,IAAdyW,IAA+B,IAAZ8B,EAAe,CAClC/R,EAAOoT,EACP,KACH,CACJ,CACJ,CAEL,IAAKpT,EAAM,CACP,KAAO4R,EAAQpC,MACXoC,EAAQ7B,WAAW6B,EAAQpC,KAAKhW,OAEpC,KACH,CACD2Z,EAAYnT,EAAKkM,SACjB0F,EAAQ7B,WAAW/P,EAAKxG,OACxBwY,EAAQhS,EAAKxG,MAChB,CACD,IAAI6Z,EAAU,CACVvC,MAAO1D,EAAM0D,MACR9U,KAAI,SAAUb,GAAQ,MAAQ,CAC/B0G,GAAIuL,EAAMuB,OAAOlD,MAAMtQ,EAAK6E,MAC5BxG,MAAO2B,EAAK3B,MACX,IACA8Z,QAAO,SAAUnY,GAAQ,OAAOiS,EAAMuB,OAAO/C,IAAIzQ,EAAK0G,GAAM,IACjEkB,WAAYqK,EAAMrK,WACb/G,KAAI,SAAUuX,GAAa,MAAQ,CACpC1R,GAAIuL,EAAMuB,OAAOlD,MAAM8H,EAAUvT,MACjC+C,WAAYwQ,EAAUxQ,WACrB,IACAuQ,QAAO,SAAUC,GAAa,OAAOnG,EAAMuB,OAAO/C,IAAI2H,EAAU1R,GAAM,IAC3E2O,QAASpD,EAAMoD,QACfmB,KAAMA,IAEL0B,EAAQvC,MAAMnY,QACd0a,EAAQtQ,WAAWpK,QACnB0a,EAAQ7C,QAAQ7X,QAChB0a,EAAQ1B,KAAKhZ,UAGlByU,EAAM0D,MAAQ,GACd1D,EAAMrK,WAAa,GACnBqK,EAAMoD,QAAU,GAChBpD,EAAM6D,SAAW,IAAIC,IACrB9D,EAAM+D,SAAW,IAAID,IACrB9D,EAAMgE,WAAa,IAAIF,IACvB9D,EAAM4D,SAAW,GACjB5D,EAAMoG,WAAWH,GA9KhB,GAgLLpa,KAAKsY,gBAAkB,SAAUjY,GAC7B,IAAIma,EAAK/Y,EAAIgZ,EAAKtS,EAClB,IAAIqN,EAAUnV,EAAE6R,QAGhB,OAAQ7R,EAAE2B,MACN,IAAK,gBACD,IAAIzB,EAAQF,EAAE6R,OAAO3H,YAChB6K,EAAU/U,EAAE6R,OAAQiC,EAAMnM,aAAezH,IAAUF,EAAEqa,UACtDvG,EAAM0D,MAAM/W,KAAK,CACbP,MAAOuG,EAAgBzG,EAAE6R,OAAQiC,EAAMnN,cAAemN,EAAMlN,mBAAqB1G,EAC3E4T,EAAM/L,WACF+L,EAAM/L,WAAW7H,GACjBA,EAAMqD,QAAQ,QAAS,KAC3BrD,EACNwG,KAAM1G,EAAE6R,SAGhB,MAEJ,IAAK,aACD,IAAIA,EAAS7R,EAAE6R,OACX3R,EAAQF,EAAE6R,OAAOyI,aAAata,EAAEua,eAUpC,GATwB,UAApBva,EAAEua,gBACFra,EAAQsB,EAAe,CACnBC,iBAAkBqS,EAAMrS,iBACxBC,QAAS1B,EAAE6R,OAAOnQ,QAClBC,KAAM3B,EAAE6R,OAAOyI,aAAa,QAC5Bpa,MAAOA,EACP0B,YAAakS,EAAMlS,eAGvBmT,EAAU/U,EAAE6R,OAAQiC,EAAMnM,aAAezH,IAAUF,EAAEqa,SACrD,OAEJ,IAAIG,EAAO1G,EAAMrK,WAAWK,MAAK,SAAUxE,GAAK,OAAOA,EAAEoB,OAAS1G,EAAE6R,MAAS,IAQ7E,GAPK2I,IACDA,EAAO,CACH9T,KAAM1G,EAAE6R,OACRpI,WAAY,CAAA,GAEhBqK,EAAMrK,WAAWhJ,KAAK+Z,IAEF,UAApBxa,EAAEua,cAA2B,CAC7B,IAAIE,EAAM3G,EAAM3O,IAAII,cAAc,QAC9BvF,EAAEqa,UACFI,EAAIC,aAAa,QAAS1a,EAAEqa,eAEF7R,IAA1BgS,EAAK/Q,WAAWkR,OACU,OAA1BH,EAAK/Q,WAAWkR,QAChBH,EAAK/Q,WAAWkR,MAAQ,IAE5B,IAAIC,EAAWJ,EAAK/Q,WAAWkR,MAC/B,IACI,IAAK,IAAI3S,EAAKpI,EAASoB,MAAMH,KAAKgR,EAAO8I,QAASnR,EAAKxB,EAAG/H,QAASuJ,EAAGrJ,KAAMqJ,EAAKxB,EAAG/H,OAAQ,CACxF,IAAI4a,EAAQrR,EAAGtJ,MACX4a,EAAWjJ,EAAO8I,MAAMI,iBAAiBF,GACzCG,EAAcnJ,EAAO8I,MAAMM,oBAAoBJ,GAC/CC,IAAaL,EAAIE,MAAMI,iBAAiBF,IACxCG,IAAgBP,EAAIE,MAAMM,oBAAoBJ,KAE1CD,EAASC,GADO,KAAhBG,EACkBF,EAGA,CAACA,EAAUE,GAGxC,CAdL,CAgBA,MAAOE,GAASf,EAAM,CAAEzZ,MAAOwa,EAAU,CACjC,QACJ,IACQ1R,IAAOA,EAAGrJ,OAASiB,EAAK4G,EAAG0R,SAAStY,EAAG3B,KAAKuI,EACnD,CACO,QAAE,GAAImS,EAAK,MAAMA,EAAIzZ,KAAQ,CACxC,CACD,IACI,IAAK,IAAIgJ,EAAK9J,EAASoB,MAAMH,KAAK4Z,EAAIE,QAAS1N,EAAKvD,EAAGzJ,QAASgN,EAAG9M,KAAM8M,EAAKvD,EAAGzJ,OAAQ,CACjF4a,EAAQ5N,EAAG/M,MAC8B,KAAzC2R,EAAO8I,MAAMI,iBAAiBF,KAC9BD,EAASC,IAAS,EAEzB,CANL,CAQA,MAAOM,GAASf,EAAM,CAAE1Z,MAAOya,EAAU,CACjC,QACJ,IACQlO,IAAOA,EAAG9M,OAAS2H,EAAK4B,EAAGgQ,SAAS5R,EAAGrI,KAAKiK,EACnD,CACO,QAAE,GAAI0Q,EAAK,MAAMA,EAAI1Z,KAAQ,CACxC,CACJ,MAEG8Z,EAAK/Q,WAAWzJ,EAAEua,eAAiB7U,EAAmBoO,EAAM3O,IAAKnF,EAAE6R,OAAOnQ,QAAS1B,EAAEua,cAAera,GAExG,MAEJ,IAAK,YACDF,EAAEob,WAAWlG,SAAQ,SAAU/V,GAAK,OAAO2U,EAAMuH,QAAQlc,EAAGa,EAAE6R,WAC9D7R,EAAEsb,aAAapG,SAAQ,SAAU/V,GAC7B,IAAIoc,EAASzH,EAAMuB,OAAOlD,MAAMhT,GAC5BwX,EAAWxV,EAAanB,EAAE6R,QACxBiC,EAAMuB,OAAOlD,MAAMnS,EAAE6R,OAAOxQ,MAC5ByS,EAAMuB,OAAOlD,MAAMnS,EAAE6R,QACvBkD,EAAU/U,EAAE6R,OAAQiC,EAAMnM,aAAewN,EAAUhW,KAGnD2U,EAAM6D,SAASrF,IAAInT,IACnB0X,EAAW/C,EAAM6D,SAAUxY,GAC3B2U,EAAMgE,WAAW6B,IAAIxa,IAEhB2U,EAAM6D,SAASrF,IAAItS,EAAE6R,UAAuB,IAAZ0J,GAChCnG,EAAkBpV,EAAE6R,OAAQiC,EAAMuB,UAClCvB,EAAM+D,SAASvF,IAAInT,IACxB2U,EAAM4D,SAAShB,EAAQ6E,EAAQ5E,IAC/BE,EAAW/C,EAAM+D,SAAU1Y,GAG3B2U,EAAMoD,QAAQzW,KAAK,CACfkW,SAAUA,EACVpO,GAAIgT,EACJ5K,WAAUxP,EAAanB,EAAE6R,cAAiBrJ,KAGlDsL,EAAM2D,WAAWhX,KAAKtB,SAMtCQ,KAAK0b,QAAU,SAAUlc,EAAG0S,GACxB,IAAIA,IAAUkD,EAAUlD,EAAQiC,EAAMnM,YAAtC,CAGA,GAAIiP,EAAQzX,GAAI,CACZ,GAAIgW,EAAUhW,GACV,OAEJ2U,EAAM+D,SAAS8B,IAAIxa,GACnB,IAAIqc,EAAW,KACX3J,GAAU+E,EAAQ/E,KAClB2J,EAAW3J,EAAOxJ,KAAKE,IAEvBiT,IACA1H,EAAM4D,SAAShB,EAAQvX,EAAEkJ,KAAKE,GAAIiT,KAAa,EAEtD,MAEG1H,EAAM6D,SAASgC,IAAIxa,GACnB2U,EAAMgE,WAAWf,OAAO5X,GAEvB4V,EAAU5V,EAAG2U,EAAMnM,aACpBxI,EAAEyJ,WAAWsM,SAAQ,SAAU8B,GAAU,OAAOlD,EAAMuH,QAAQrE,KAnBjE,EAqBR,CAkDD,OAjDAK,EAAe9X,UAAUkc,KAAO,SAAUlU,GACtC,IAAIuM,EAAQnU,KACZ,CACI,aACA,aACA,gBACA,gBACA,mBACA,mBACA,mBACA,aACA,cACA,eACA,eACA,iBACA,MACA,SACA,gBACA,mBACA,iBACFuV,SAAQ,SAAU5B,GAChBQ,EAAMR,GAAO/L,EAAQ+L,OAG7B+D,EAAe9X,UAAUmc,OAAS,WAC9B/b,KAAK2X,QAAS,EACd3X,KAAKgc,cAAcD,UAEvBrE,EAAe9X,UAAUqc,SAAW,WAChCjc,KAAK2X,QAAS,EACd3X,KAAKgc,cAAcC,WACnBjc,KAAKuY,QAETb,EAAe9X,UAAUsc,SAAW,WAChC,OAAOlc,KAAK2X,QAEhBD,EAAe9X,UAAUuc,KAAO,WAC5Bnc,KAAK4X,QAAS,EACd5X,KAAKgc,cAAcG,QAEvBzE,EAAe9X,UAAUwc,OAAS,WAC9Bpc,KAAK4X,QAAS,EACd5X,KAAKgc,cAAcI,SACnBpc,KAAKuY,QAETb,EAAe9X,UAAUgT,MAAQ,WAC7B5S,KAAKuZ,iBAAiB3G,QACtB5S,KAAKgc,cAAcpJ,SAEhB8E,CACV,CAlZqB,GChFlB2E,GAAkB,GAClBC,GAAwD,oBAApBC,gBACpCC,GAAkD,oBAAjBC,aACjCC,GAAwD,oBAApBC,gBACpCC,GAA0D,oBAArBC,iBACzC,SAASC,GAAelH,GACpB,IACI,GAAI,iBAAkBA,EAAO,CACzB,IAAImH,EAAOnH,EAAMoH,eACjB,GAAID,EAAKrd,OACL,OAAOqd,EAAK,EAHpB,MAMK,GAAI,SAAUnH,GAASA,EAAMmH,KAAKrd,OACnC,OAAOkW,EAAMmH,KAAK,GAEtB,OAAOnH,EAAM1D,MAVjB,CAYA,MAAOzQ,GACH,OAAOmU,EAAM1D,MAChB,CACJ,CACD,SAAS+K,GAAqBrV,EAASsV,GACnC,IAAIzb,EAAI0G,EACJgV,EAAiB,IAAIzF,GACzB2E,GAAgBvb,KAAKqc,GACrBA,EAAerB,KAAKlU,GACpB,IAAIwV,EAAuBtJ,OAAOuJ,kBAC9BvJ,OAAOwJ,qBACPC,EAAqJ,QAAhIpV,EAA4E,QAAtE1G,EAAgB,OAAXqS,aAA8B,IAAXA,YAAoB,EAASA,OAAO0J,YAAyB,IAAP/b,OAAgB,EAASA,EAAGgc,kBAA+B,IAAPtV,OAAgB,EAASA,EAAGrI,KAAK2B,EAAI,oBAClM8b,GACAzJ,OAAOyJ,KACPH,EAAuBtJ,OAAOyJ,IAElC,IAAIG,EAAW,IAAIN,EAAqBD,EAAe/E,iBAAiBuF,KAAKR,IAS7E,OARAO,EAASE,QAAQV,EAAQ,CACrBpT,YAAY,EACZ+T,mBAAmB,EACnBC,eAAe,EACfC,uBAAuB,EACvBC,WAAW,EACXC,SAAS,IAENP,CACV,CAoDD,SAASQ,GAA6Bzc,GAClC,IAAI0c,EAAqB1c,EAAG0c,mBAAoB3Y,EAAM/D,EAAG+D,IAAKkQ,EAASjU,EAAGiU,OAAQ1N,EAAavG,EAAGuG,WAAYoW,EAAW3c,EAAG2c,SAC5H,IAAkC,IAA9BA,EAASC,iBACT,OAAO,WAAY,EAEvB,IAAIC,GAA2C,IAA9BF,EAASC,uBACQxV,IAA9BuV,EAASC,iBACP,CAAA,EACAD,EAASC,iBACXE,EAAW,GAgCf,OAXApf,OAAOqf,KAAKvZ,GACPoV,QAAO,SAAU1G,GAClB,OAAO8K,OAAOC,MAAMD,OAAO9K,MACtBA,EAAI/D,SAAS,eACM,IAApB0O,EAAW3K,EAClB,IACI4B,SAAQ,SAAUoJ,GACnB,IAAIC,EAAYD,EAASxc,cACrB0c,EA5BS,SAAUF,GACvB,OAAO,SAAU/I,GACb,IAAI1D,EAAS4K,GAAelH,GAC5B,IAAIR,EAAUlD,EAAQlK,GAAtB,CAGA,IAAIpH,EAAI+U,EAAaC,GAASA,EAAMC,eAAe,GAAKD,EACxD,GAAKhV,EAAL,CAGA,IAAIgI,EAAK8M,EAAOlD,MAAMN,GAClB4M,EAAUle,EAAEke,QAASC,EAAUne,EAAEme,QACrCZ,EAAmB,CACfnc,KAAMiD,EAAkB0Z,GACxB/V,GAAIA,EACJkC,EAAGgU,EACH9T,EAAG+T,GAPN,CAJA,GAuBSC,CAAWL,GACzBJ,EAASzd,KAAKkR,EAAG4M,EAAWC,EAASrZ,OAElC,WACH+Y,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CACD,SAASC,GAAmBzd,GACxB,IAAI0d,EAAW1d,EAAG0d,SAAU3Z,EAAM/D,EAAG+D,IAAKkQ,EAASjU,EAAGiU,OAAQ1N,EAAavG,EAAGuG,WAuB9E,OAAOgK,EAAG,SAtBWa,GAAS,SAAUuM,GACpC,IAAIlN,EAAS4K,GAAesC,GAC5B,GAAKlN,IAAUkD,EAAUlD,EAAQlK,GAAjC,CAGA,IAAIY,EAAK8M,EAAOlD,MAAMN,GACtB,GAAIA,IAAW1M,EAAK,CAChB,IAAI6Z,EAAY7Z,EAAI8Z,kBAAoB9Z,EAAIsP,gBAC5CqK,EAAS,CACLvW,GAAIA,EACJkC,EAAGuU,EAASnS,WACZlC,EAAGqU,EAASjS,WAEnB,MAEG+R,EAAS,CACLvW,GAAIA,EACJkC,EAAGoH,EAAOhF,WACVlC,EAAGkH,EAAO9E,WAdjB,CAiBJ,GAtBoG3L,EAAG2c,SAsB5FmB,QAAU,KACc/Z,EACvC,CAmBD,SAASga,GAA+BC,EAAGC,GACvC,IAAInf,EAAQrB,EAAS,CAAD,EAAKugB,GAGzB,OAFKC,UACMnf,EAAMof,cACVpf,CACV,CACD,IAAIqf,GAAa,CAAC,QAAS,WAAY,UACnCC,GAAoB,IAAIC,QAmF5B,SAASC,GAA0B7c,GAsB/B,OApBA,SAAiB8c,EAAW/Z,GACxB,GAAKqW,IACD0D,EAAUC,sBAAsB1D,iBAC/BC,IACGwD,EAAUC,sBAAsBxD,cACnCC,IACGsD,EAAUC,sBAAsBtD,iBACnCC,IACGoD,EAAUC,sBAAsBpD,iBAAmB,CACvD,IACIlG,EADQtV,MAAMH,KAAK8e,EAAUC,WAAWnd,UAC1ByB,QAAQyb,GAC1B/Z,EAAIia,QAAQvJ,EACf,KACI,CAEGA,EADQtV,MAAMH,KAAK8e,EAAUG,iBAAiBrd,UAChCyB,QAAQyb,GAC1B/Z,EAAIia,QAAQvJ,EACf,CACD,OAAO1Q,CACV,CACMma,CAAQld,EArBC,GAsBnB,CAqTD,SAASmd,GAAcngB,EAAGogB,GACtB,IAAI9H,EAAK/W,OACK,IAAV6e,IAAoBA,EAAQ,CAAA,GAChC,IAAIC,EAAgBrgB,EAAEsF,IAAIgb,YAC1B,IAAKD,EACD,OAAO,WAAY,GAtH3B,SAAoBrgB,EAAGogB,GACnB,IAAI/F,EAAara,EAAEqa,WAAYkG,EAAcvgB,EAAEugB,YAAatC,EAAqBje,EAAEie,mBAAoBgB,EAAWjf,EAAEif,SAAUuB,EAAmBxgB,EAAEwgB,iBAAkBC,EAAUzgB,EAAEygB,QAASC,EAAqB1gB,EAAE0gB,mBAAoBC,EAAmB3gB,EAAE2gB,iBAAkBC,EAAqB5gB,EAAE4gB,mBAAoBC,EAAmB7gB,EAAE6gB,iBAAkBC,EAAS9gB,EAAE8gB,OACzW9gB,EAAEqa,WAAa,WAEX,IADA,IAAI5a,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMW,UACNX,EAAMW,SAASlhB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAE7D4a,EAAWxa,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAE1DO,EAAEugB,YAAc,WAEZ,IADA,IAAI9gB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMY,WACNZ,EAAMY,UAAUnhB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAE9D8gB,EAAY1gB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAE3DO,EAAEie,mBAAqB,WAEnB,IADA,IAAIxe,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMjC,kBACNiC,EAAMjC,iBAAiBte,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAErEwe,EAAmBpe,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAElEO,EAAEif,SAAW,WAET,IADA,IAAIxf,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMf,QACNe,EAAMf,OAAOxf,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAE3Dwf,EAASpf,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAExDO,EAAEwgB,iBAAmB,WAEjB,IADA,IAAI/gB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMa,gBACNb,EAAMa,eAAephB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAEnE+gB,EAAiB3gB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAEhEO,EAAEygB,QAAU,WAER,IADA,IAAIhhB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMc,OACNd,EAAMc,MAAMrhB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAE1DghB,EAAQ5gB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAEvDO,EAAE0gB,mBAAqB,WAEnB,IADA,IAAIjhB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMe,iBACNf,EAAMe,gBAAgBthB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAEpEihB,EAAmB7gB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAElEO,EAAE2gB,iBAAmB,WAEjB,IADA,IAAIlhB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMgB,gBACNhB,EAAMgB,eAAevhB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAEnEkhB,EAAiB9gB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAEhEO,EAAE4gB,mBAAqB,WAEnB,IADA,IAAInhB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMiB,kBACNjB,EAAMiB,iBAAiBxhB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAErEmhB,EAAmB/gB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAElEO,EAAE6gB,iBAAmB,WAEjB,IADA,IAAIphB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMkB,gBACNlB,EAAMkB,eAAezhB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAEnEohB,EAAiBhhB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,KAEhEO,EAAE8gB,OAAS,WAEP,IADA,IAAIrhB,EAAI,GACCiF,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpCjF,EAAEiF,GAAMnF,UAAUmF,GAElB0b,EAAMmB,MACNnB,EAAMmB,KAAK1hB,MAAMugB,EAAOtf,EAAc,GAAIN,EAAOf,IAAI,IAEzDqhB,EAAOjhB,WAAM,EAAQiB,EAAc,GAAIN,EAAOf,IAAI,IAEzD,CAQG+hB,CAAWxhB,EAAGogB,GACd,IAAIqB,EAAmB1E,GAAqB/c,EAAGA,EAAEsF,KAC7Coc,EA3jBR,SAA0BngB,GACtB,IAAIgf,EAAchf,EAAGgf,YAAarC,EAAW3c,EAAG2c,SAAU5Y,EAAM/D,EAAG+D,IAAKkQ,EAASjU,EAAGiU,OACpF,IAA2B,IAAvB0I,EAAS8C,UACT,OAAO,WAAY,EAEvB,IAKIW,EALAC,EAA0C,iBAAvB1D,EAAS8C,UAAyB9C,EAAS8C,UAAY,GAC1Ea,EAA0D,iBAA/B3D,EAAS4D,kBAClC5D,EAAS4D,kBACT,IACFC,EAAY,GAEZC,EAAYrP,GAAS,SAAUwB,GAC/B,IAAI8N,EAAc/O,KAAKD,MAAQ0O,EAC/BpB,EAAYwB,EAAUlf,KAAI,SAAUpD,GAEhC,OADAA,EAAEyiB,YAAcD,EACTxiB,KACP0U,GACJ4N,EAAY,GACZJ,EAAe,IAPK,GAQrBE,GACCM,EAAiBxP,GAAS,SAAUuM,GACpC,IAAIlN,EAAS4K,GAAesC,GACxB3d,EAAKkU,EAAayJ,GAChBA,EAAIvJ,eAAe,GACnBuJ,EAAKN,EAAUrd,EAAGqd,QAASC,EAAUtd,EAAGsd,QACzC8C,IACDA,EAAezO,KAAKD,OAExB8O,EAAUnhB,KAAK,CACXgK,EAAGgU,EACH9T,EAAG+T,EACHnW,GAAI8M,EAAOlD,MAAMN,GACjBkQ,WAAYhP,KAAKD,MAAQ0O,IAE7BK,EAA+B,oBAAdI,WAA6BlD,aAAekD,UACvDtd,EAAkBud,KAClBnD,aAAeoD,WACXxd,EAAkByd,UAClBzd,EAAkB0d,UAlBH,GAmB1BZ,EAAW,CACVrO,UAAU,IAEV8K,EAAW,CACXvM,EAAG,YAAaqQ,EAAgB7c,GAChCwM,EAAG,YAAaqQ,EAAgB7c,GAChCwM,EAAG,OAAQqQ,EAAgB7c,IAE/B,OAAO,WACH+Y,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CAygB0B0D,CAAiBziB,GACpC0iB,EAA0B1E,GAA6Bhe,GACvD2iB,EAAgB3D,GAAmBhf,GACnC4iB,EApcR,SAAoCrhB,GAChC,IAAIif,EAAmBjf,EAAGif,iBACtBqC,GAAS,EACTC,GAAS,EAab,OAAOhR,EAAG,SAZYa,GAAS,WAC3B,IAAI5H,EAAS2J,IACT7J,EAAQkK,IACR8N,IAAU9X,GAAU+X,IAAUjY,IAC9B2V,EAAiB,CACb3V,MAAO0T,OAAO1T,GACdE,OAAQwT,OAAOxT,KAEnB8X,EAAQ9X,EACR+X,EAAQjY,EATc,GAW3B,KACkC+I,OACxC,CAmb+BmP,CAA2B/iB,GACnDgjB,EA3aR,SAA2BzhB,GACvB,IAAIkf,EAAUlf,EAAGkf,QAASnb,EAAM/D,EAAG+D,IAAKkQ,EAASjU,EAAGiU,OAAQ1N,EAAavG,EAAGuG,WAAYmb,EAAc1hB,EAAG0hB,YAAarhB,EAAmBL,EAAGK,iBAAkBG,EAAcR,EAAGQ,YAAamc,EAAW3c,EAAG2c,SAAUgF,EAAuB3hB,EAAG2hB,qBAC9O,SAASC,EAAazN,GAClB,IAAI1D,EAAS4K,GAAelH,GACxB+J,EAAgB/J,EAAM0N,UAG1B,GAFIpR,GAA6B,WAAnBA,EAAOnQ,UACjBmQ,EAASA,EAAOqR,eACfrR,GACAA,EAAOnQ,WACR6d,GAAWrb,QAAQ2N,EAAOnQ,SAAW,KACrCqT,EAAUlD,EAAQlK,GAHtB,CAMA,IAAIhG,EAAOkQ,EAAOlQ,KAClB,IAAIkQ,EAAO9K,UAAUC,SAAS8b,GAA9B,CAGA,IAAIjhB,EAAOgQ,EAAO3R,MACdijB,GAAY,EACH,UAATxhB,GAA6B,aAATA,EACpBwhB,EAAYtR,EAAO1H,SAEd1I,EAAiBoQ,EAAOnQ,QAAQI,gBACrCL,EAAiBE,MACjBE,EAAOL,EAAe,CAClBC,iBAAkBA,EAClBC,QAASmQ,EAAOnQ,QAChBC,KAAMA,EACNzB,MAAO2B,EACPD,YAAaA,KAGrBwhB,EAAYvR,EAAQsN,GAA+B,CAAEtd,KAAMA,EAAMshB,UAAWA,EAAW7D,cAAeA,GAAiByD,IACvH,IAAIpd,EAAOkM,EAAOlM,KACL,UAAThE,GAAoBgE,GAAQwd,GAC5Bhe,EACKke,iBAAiB,6BAAgCniB,OAAOyE,EAAM,OAC9DuP,SAAQ,SAAUxN,GACfA,IAAOmK,GACPuR,EAAY1b,EAAIyX,GAA+B,CAC3Ctd,KAAM6F,EAAGxH,MACTijB,WAAYA,EACZ7D,eAAe,GAChByD,MA3Bd,CAJA,CAmCJ,CACD,SAASK,EAAYvR,EAAQuN,GACzB,IAAIkE,EAAiB9D,GAAkB1J,IAAIjE,GAC3C,IAAKyR,GACDA,EAAezhB,OAASud,EAAEvd,MAC1ByhB,EAAeH,YAAc/D,EAAE+D,UAAW,CAC1C3D,GAAkB3L,IAAIhC,EAAQuN,GAC9B,IAAI7W,EAAK8M,EAAOlD,MAAMN,GACtByO,EAAQzhB,EAASA,EAAS,CAAD,EAAKugB,GAAI,CAAE7W,GAAIA,IAC3C,CACJ,CACD,IACI2V,GAD4B,SAAnBH,EAASgD,MAAmB,CAAC,UAAY,CAAC,QAAS,WAC1Cre,KAAI,SAAU6b,GAAa,OAAO5M,EAAG4M,EAAWyE,EAAc7d,EAAO,IACvFoe,EAAqBzkB,OAAO6U,yBAAyB6P,iBAAiBjkB,UAAW,SACjFkkB,EAAiB,CACjB,CAACD,iBAAiBjkB,UAAW,SAC7B,CAACikB,iBAAiBjkB,UAAW,WAC7B,CAACmkB,kBAAkBnkB,UAAW,SAC9B,CAACokB,oBAAoBpkB,UAAW,SAChC,CAACmkB,kBAAkBnkB,UAAW,iBAC9B,CAACqkB,kBAAkBrkB,UAAW,aAWlC,OATIgkB,GAAsBA,EAAmB1P,KACzCqK,EAASzd,KAAKf,MAAMwe,EAAUvd,EAAc,GAAIN,EAAOojB,EAAe/gB,KAAI,SAAUpD,GAChF,OAAO+T,EAAW/T,EAAE,GAAIA,EAAE,GAAI,CAC1BuU,IAAK,WACDmP,EAAa,CAAEnR,OAAQlS,MAC1B,GAER,MAAI,IAEF,WACHue,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CA0VsBiF,CAAkBhkB,GACjCikB,EArMR,SAAsC1iB,GAClC,IAAImf,EAAqBnf,EAAGmf,mBAAoB5Y,EAAavG,EAAGuG,WAAY0N,EAASjU,EAAGiU,OAAQ0I,EAAW3c,EAAG2c,SAC1GS,EAAU,SAAU7c,GACpB,OAAO6Q,GAAS,SAAU+C,GACtB,IAAI1D,EAAS4K,GAAelH,GAC5B,GAAK1D,IAAUkD,EAAUlD,EAAQlK,GAAjC,CAGA,IAAIvG,EAAKyQ,EAAQjF,EAAcxL,EAAGwL,YAAamX,EAAS3iB,EAAG2iB,OAAQC,EAAQ5iB,EAAG4iB,MAC9EzD,EAAmB,CACf5e,KAAMA,EACN4G,GAAI8M,EAAOlD,MAAMN,GACjBjF,YAAaA,EACbmX,OAAQA,EACRC,MAAOA,GAPV,CASJ,GAAEjG,EAASkG,OAAS,MAErB/F,EAAW,CACXvM,EAAG,OAAQ6M,EAAQ,IACnB7M,EAAG,QAAS6M,EAAQ,IACpB7M,EAAG,SAAU6M,EAAQ,IACrB7M,EAAG,eAAgB6M,EAAQ,KAE/B,OAAO,WACHN,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CA0KiCsF,CAA6BrkB,GACvDskB,EAnUR,SAAgC/iB,EAAI0G,GAChC,IAAI0Y,EAAmBpf,EAAGof,iBAAkBnL,EAASjU,EAAGiU,OACpDvE,EAAMhJ,EAAGgJ,IACTsT,EAAatT,EAAIuT,cAAc9kB,UAAU6kB,WAC7CtT,EAAIuT,cAAc9kB,UAAU6kB,WAAa,SAAUvhB,EAAMyT,GACrD,IAAI/N,EAAK8M,EAAOlD,MAAMxS,KAAK2kB,WAO3B,OANY,IAAR/b,GACAiY,EAAiB,CACbjY,GAAIA,EACJ8P,KAAM,CAAC,CAAExV,KAAMA,EAAMyT,MAAOA,MAG7B8N,EAAW1kB,MAAMC,KAAMP,YAElC,IAAImlB,EAAazT,EAAIuT,cAAc9kB,UAAUglB,WAC7CzT,EAAIuT,cAAc9kB,UAAUglB,WAAa,SAAUjO,GAC/C,IAAI/N,EAAK8M,EAAOlD,MAAMxS,KAAK2kB,WAO3B,OANY,IAAR/b,GACAiY,EAAiB,CACbjY,GAAIA,EACJ2O,QAAS,CAAC,CAAEZ,MAAOA,MAGpBiO,EAAW7kB,MAAMC,KAAMP,YAElC,IAAIolB,EAA8B,CAAA,EAC9BvI,GACAuI,EAA4BtI,gBAAkBpL,EAAIoL,iBAG9CC,KACAqI,EAA4BpI,aAAetL,EAAIsL,cAE/CG,KACAiI,EAA4BhI,iBAAmB1L,EAAI0L,kBAEnDH,KACAmI,EAA4BlI,gBAAkBxL,EAAIwL,kBAG1D,IAAImI,EAAsB,CAAA,EAmC1B,OAlCA3lB,OAAO4lB,QAAQF,GAA6BtP,SAAQ,SAAU9T,GAC1D,IAAI0G,EAAKzH,EAAOe,EAAI,GAAIujB,EAAU7c,EAAG,GAAInG,EAAOmG,EAAG,GACnD2c,EAAoBE,GAAW,CAC3BP,WAAYziB,EAAKpC,UAAU6kB,WAC3BG,WAAY5iB,EAAKpC,UAAUglB,YAE/B5iB,EAAKpC,UAAU6kB,WAAa,SAAUvhB,EAAMyT,GACxC,IAAI/N,EAAK8M,EAAOlD,MAAMxS,KAAKmgB,iBAAiBwE,WAc5C,OAbY,IAAR/b,GACAiY,EAAiB,CACbjY,GAAIA,EACJ8P,KAAM,CACF,CACIxV,KAAMA,EACNyT,MAAO3V,EAAcA,EAAc,GAAIN,EAAOqf,GAA0B/f,QAAQ,GAAQ,CACpF2W,GAAS,IACV,OAKZmO,EAAoBE,GAASP,WAAW1kB,MAAMC,KAAMP,YAE/DuC,EAAKpC,UAAUglB,WAAa,SAAUjO,GAClC,IAAI/N,EAAK8M,EAAOlD,MAAMxS,KAAKmgB,iBAAiBwE,WAO5C,OANY,IAAR/b,GACAiY,EAAiB,CACbjY,GAAIA,EACJ2O,QAAS,CAAC,CAAEZ,MAAO3V,EAAcA,EAAc,GAAIN,EAAOqf,GAA0B/f,QAAQ,GAAQ,CAAC2W,IAAQ,OAG9GmO,EAAoBE,GAASJ,WAAW7kB,MAAMC,KAAMP,eAG5D,WACH0R,EAAIuT,cAAc9kB,UAAU6kB,WAAaA,EACzCtT,EAAIuT,cAAc9kB,UAAUglB,WAAaA,EACzCzlB,OAAO4lB,QAAQF,GAA6BtP,SAAQ,SAAU9T,GAC1D,IAAI0G,EAAKzH,EAAOe,EAAI,GAAIujB,EAAU7c,EAAG,GAAInG,EAAOmG,EAAG,GACnDnG,EAAKpC,UAAU6kB,WAAaK,EAAoBE,GAASP,WACzDziB,EAAKpC,UAAUglB,WAAaE,EAAoBE,GAASJ,cAGpE,CA+O4BK,CAAuB/kB,EAAG,CAAEiR,IAAKoP,IACtD2E,EA/OR,SAAsCzjB,EAAI0G,GACtC,IAAI2Y,EAAqBrf,EAAGqf,mBAAoBpL,EAASjU,EAAGiU,OACxDvE,EAAMhJ,EAAGgJ,IACTgU,EAAchU,EAAIiU,oBAAoBxlB,UAAUulB,YACpDhU,EAAIiU,oBAAoBxlB,UAAUulB,YAAc,SAAUnV,EAAUzP,EAAO8kB,GACvE,IAAI5jB,EAAI0G,EACJS,EAAK8M,EAAOlD,MAAiG,QAA1FrK,EAAgC,QAA1B1G,EAAKzB,KAAKigB,kBAA+B,IAAPxe,OAAgB,EAASA,EAAG0e,wBAAqC,IAAPhY,OAAgB,EAASA,EAAGwc,WAYrJ,OAXY,IAAR/b,GACAkY,EAAmB,CACflY,GAAIA,EACJsL,IAAK,CACDlE,SAAUA,EACVzP,MAAOA,EACP8kB,SAAUA,GAEd1O,MAAOoJ,GAA0B/f,KAAKigB,cAGvCkF,EAAYplB,MAAMC,KAAMP,YAEnC,IAAI6lB,EAAiBnU,EAAIiU,oBAAoBxlB,UAAU0lB,eAevD,OAdAnU,EAAIiU,oBAAoBxlB,UAAU0lB,eAAiB,SAAUtV,GACzD,IAAIvO,EAAI0G,EACJS,EAAK8M,EAAOlD,MAAiG,QAA1FrK,EAAgC,QAA1B1G,EAAKzB,KAAKigB,kBAA+B,IAAPxe,OAAgB,EAASA,EAAG0e,wBAAqC,IAAPhY,OAAgB,EAASA,EAAGwc,WAUrJ,OATY,IAAR/b,GACAkY,EAAmB,CACflY,GAAIA,EACJ2c,OAAQ,CACJvV,SAAUA,GAEd2G,MAAOoJ,GAA0B/f,KAAKigB,cAGvCqF,EAAevlB,MAAMC,KAAMP,YAE/B,WACH0R,EAAIiU,oBAAoBxlB,UAAUulB,YAAcA,EAChDhU,EAAIiU,oBAAoBxlB,UAAU0lB,eAAiBA,EAE1D,CAwMkCE,CAA6BtlB,EAAG,CAC3DiR,IAAKoP,IAELkF,EAAevlB,EAAEwlB,aA9KzB,SAA0BjkB,GACtB,IAAIuf,EAASvf,EAAGuf,OAAQxb,EAAM/D,EAAG+D,IAC7B2L,EAAM3L,EAAIgb,YACd,IAAKrP,EACD,OAAO,WAAY,EAEvB,IAAIoN,EAAW,GACXoH,EAAU,IAAI7F,QACd8F,EAAmBzU,EAAI0U,SAC3B1U,EAAI0U,SAAW,SAAkBC,EAAQzR,EAAQ0R,GAC7C,IAAIC,EAAW,IAAIJ,EAAiBE,EAAQzR,EAAQ0R,GAUpD,OATAJ,EAAQzR,IAAI8R,EAAU,CAClBF,OAAQA,EACRta,OAA0B,iBAAX6I,EACf0R,YAAaA,EACbE,WAA8B,iBAAX5R,EACbA,EAEE6R,KAAKC,UAAU9kB,MAAMH,KAAK,IAAIklB,WAAW/R,OAE9C2R,GAEX,IAAIK,EAAiBjS,EAAM5O,EAAI8gB,MAAO,OAAO,SAAUvS,GACnD,OAAO,SAAUiS,GAQb,OAPAtU,YAAW,WACP,IAAI/R,EAAIgmB,EAAQxP,IAAI6P,GAChBrmB,IACAqhB,EAAOrhB,GACPgmB,EAAQvO,OAAO4O,GAJb,GAMP,GACIjS,EAAShU,MAAMC,KAAM,CAACgmB,IAEpC,IAKD,OAJAzH,EAASzd,MAAK,WACVqQ,EAAI0U,SAAWD,KAEnBrH,EAASzd,KAAKulB,GACP,WACH9H,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CAqIuCsH,CAAiBrmB,GAAK,aACtDsmB,EAAiB,GACrB,IACI,IAAK,IAAIre,EAAKlI,EAASC,EAAEumB,SAAUpe,EAAKF,EAAG7H,QAAS+H,EAAG7H,KAAM6H,EAAKF,EAAG7H,OAAQ,CACzE,IAAIomB,EAASre,EAAG9H,MAChBimB,EAAe1lB,KAAK4lB,EAAOhJ,SAASgJ,EAAOC,SAAUpG,EAAemG,EAAO9e,SAC9E,CAJL,CAMA,MAAOkS,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQzR,IAAOA,EAAG7H,OAASiB,EAAK0G,EAAG4R,SAAStY,EAAG3B,KAAKqI,EACnD,CACO,QAAE,GAAIqQ,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CACD,OAAO,WACHsb,GAAgB9G,SAAQ,SAAUqR,GAAK,OAAOA,EAAEhU,WAChD+O,EAAiBkF,aACjBjF,IACAgB,IACAC,IACAC,IACAI,IACAiB,IACAK,IACAU,IACAO,IACAe,EAAejR,SAAQ,SAAU0J,GAAK,OAAOA,OAEpD,CCrpBD,IAAI6H,GAAiB,WACjB,SAASA,EAAclf,GACnB5H,KAAK+mB,QAAU,IAAIjH,QACnB9f,KAAKua,WAAa3S,EAAQ2S,UAC7B,CAwBD,OAvBAuM,EAAclnB,UAAU0Z,UAAY,SAAUrI,GAC1CjR,KAAK+mB,QAAQ7S,IAAIjD,GAAU,IAE/B6V,EAAclnB,UAAUonB,gBAAkB,SAAUC,GAChDjnB,KAAKknB,aAAeD,GAExBH,EAAclnB,UAAU+Z,aAAe,SAAU1I,EAAUyI,GACvD,IAAIjY,EACJzB,KAAKua,WAAW,CACZ7B,KAAM,CACF,CACI1B,SAAU/F,EAASvI,KAAKE,GACxBkQ,OAAQ,KACR/R,KAAM2S,IAGdnC,QAAS,GACTM,MAAO,GACP/N,WAAY,GACZqd,gBAAgB,IAES,QAA5B1lB,EAAKzB,KAAKknB,oBAAiC,IAAPzlB,GAAyBA,EAAG3B,KAAKE,KAAMiR,IAEzE6V,CACV,CA7BoB,GCIjBM,GAAoB,WACpB,SAASA,EAAiBxf,GACtB5H,KAAKqnB,eAAiB,GACtBrnB,KAAKua,WAAa3S,EAAQ2S,WAC1Bva,KAAKmf,SAAWvX,EAAQuX,SACxBnf,KAAK0Q,cAAgB9I,EAAQ8I,cAC7B1Q,KAAK0V,OAAS9N,EAAQ8N,OACtB,IAAI4R,EAAUtnB,KACdA,KAAKqnB,eAAevmB,KAAKsT,EAAMmT,YAAY3nB,UAAW,gBAAgB,SAAUmU,GAC5E,OAAO,WACH,IAAInS,EAAamS,EAAShU,MAAMC,KAAMP,WAGtC,OAFIO,KAAK4B,YACL0lB,EAAQ9N,cAAcxZ,KAAK4B,WAAY5B,KAAKwnB,eACzC5lB,EALe,IAQjC,CAqBD,OApBAwlB,EAAiBxnB,UAAU4Z,cAAgB,SAAU5X,EAAY4D,GAC7DyX,GAAqB/d,EAASA,EAAS,CAAD,EAAKc,KAAK0Q,eAAgB,CAAElL,IAAKA,EAAK+U,WAAYva,KAAKua,WAAY7E,OAAQ1V,KAAK0V,OAAQ6D,iBAAkBvZ,OAAS4B,GACzJsd,GAAmBhgB,EAASA,EAAS,CAAD,EAAKc,KAAK0Q,eAAgB,CAAEyO,SAAUnf,KAAKmf,SAAU3Z,IAAK5D,EAAY8T,OAAQ1V,KAAK0V,WAE3H0R,EAAiBxnB,UAAUga,oBAAsB,SAAU6N,GACvD,GAAIA,EAAcrW,cAAe,CAC7B,IAAIsW,EAAY1nB,KAChBA,KAAKqnB,eAAevmB,KAAKsT,EAAMqT,EAAcrW,cAAcmW,YAAY3nB,UAAW,gBAAgB,SAAUmU,GACxG,OAAO,WACH,IAAInS,EAAamS,EAAShU,MAAMC,KAAMP,WAGtC,OAFIO,KAAK4B,YACL8lB,EAAUlO,cAAcxZ,KAAK4B,WAAY6lB,EAAc7Z,iBACpDhM,EALe,IAQjC,GAELwlB,EAAiBxnB,UAAUgT,MAAQ,WAC/B5S,KAAKqnB,eAAe9R,SAAQ,SAAUoS,GAAgB,OAAOA,QAE1DP,CACV,CAtCuB,GCIxB,IAHA,IAAIhhB,GAAQ,mEAERwhB,GAA+B,oBAAfxB,WAA6B,GAAK,IAAIA,WAAW,KAC5D7mB,GAAI,EAAGA,GAAI6G,GAAM1G,OAAQH,KAC9BqoB,GAAOxhB,GAAMyhB,WAAWtoB,KAAMA,GAElC,IAAIuoB,GAAS,SAAUC,GACnB,IAAyCxoB,EAArCyoB,EAAQ,IAAI5B,WAAW2B,GAAiBE,EAAMD,EAAMtoB,OAAQwoB,EAAS,GACzE,IAAK3oB,EAAI,EAAGA,EAAI0oB,EAAK1oB,GAAK,EACtB2oB,GAAU9hB,GAAM4hB,EAAMzoB,IAAM,GAC5B2oB,GAAU9hB,IAAmB,EAAX4hB,EAAMzoB,KAAW,EAAMyoB,EAAMzoB,EAAI,IAAM,GACzD2oB,GAAU9hB,IAAuB,GAAf4hB,EAAMzoB,EAAI,KAAY,EAAMyoB,EAAMzoB,EAAI,IAAM,GAC9D2oB,GAAU9hB,GAAqB,GAAf4hB,EAAMzoB,EAAI,IAQ9B,OANI0oB,EAAM,GAAM,EACZC,EAASA,EAAO3hB,UAAU,EAAG2hB,EAAOxoB,OAAS,GAAK,IAE7CuoB,EAAM,GAAM,IACjBC,EAASA,EAAO3hB,UAAU,EAAG2hB,EAAOxoB,OAAS,GAAK,MAE/CwoB,CACV,ECvBGC,GAAc,IAAIC,IAYtB,IAAIC,GAAe,SAAU9nB,EAAO4Q,EAAKvG,GACrC,GAAKrK,IACC+nB,GAAwB/nB,EAAO4Q,IAAyB,WAAjBoX,EAAOhoB,IADpD,CAGA,IACIioB,EAhBR,SAAyB5d,EAAK6d,GAC1B,IAAIC,EAAaP,GAAYhS,IAAIvL,GAQjC,OAPK8d,IACDA,EAAa,IAAIN,IACjBD,GAAYjU,IAAItJ,EAAK8d,IAEpBA,EAAW/V,IAAI8V,IAChBC,EAAWxU,IAAIuU,EAAM,IAElBC,EAAWvS,IAAIsS,EACzB,CAMcE,CAAgB/d,EADhBrK,EAAMqoB,YAAY5iB,MAEzB2Q,EAAQ6R,EAAKjkB,QAAQhE,GAKzB,OAJe,IAAXoW,IACAA,EAAQ6R,EAAK9oB,OACb8oB,EAAK1nB,KAAKP,IAEPoW,CARH,CASP,EACD,SAASkS,GAAatoB,EAAO4Q,EAAKvG,GAC9B,OAAIrK,aAAiBc,MACVd,EAAMwC,KAAI,SAAUmQ,GAAO,OAAO2V,GAAa3V,EAAK/B,EAAKvG,EAAO,IAExD,OAAVrK,EACEA,EAEFA,aAAiBuoB,cACtBvoB,aAAiBwoB,cACjBxoB,aAAiByoB,YACjBzoB,aAAiB6K,aACjB7K,aAAiB6lB,YACjB7lB,aAAiB0oB,aACjB1oB,aAAiB2oB,YACjB3oB,aAAiB4oB,WACjB5oB,aAAiB6oB,kBAEV,CACHC,QAFS9oB,EAAMqoB,YAAY5iB,KAG3BwN,KAAM,CAACrU,OAAOmqB,OAAO/oB,KAGpBA,aAAiBgpB,YAGf,CACHF,QAHS9oB,EAAMqoB,YAAY5iB,KAI3BkiB,OAHSJ,GAAOvnB,IAMfA,aAAiBipB,SAEf,CACHH,QAFS9oB,EAAMqoB,YAAY5iB,KAG3BwN,KAAM,CACFqV,GAAatoB,EAAMiL,OAAQ2F,EAAKvG,GAChCrK,EAAMkpB,WACNlpB,EAAMmpB,aAITnpB,aAAiBopB,iBAGf,CACHN,QAHS9oB,EAAMqoB,YAAY5iB,KAI3B2H,IAHMpN,EAAMoN,KAMXpN,aAAiBqpB,UAEf,CACHP,QAFS9oB,EAAMqoB,YAAY5iB,KAG3BwN,KAAM,CAACqV,GAAatoB,EAAMgL,KAAM4F,EAAKvG,GAAMrK,EAAMwK,MAAOxK,EAAM0K,SAG7Dqd,GAAwB/nB,EAAO4Q,IAAyB,WAAjBoX,EAAOhoB,GAG5C,CACH8oB,QAHS9oB,EAAMqoB,YAAY5iB,KAI3B2Q,MAHQ0R,GAAa9nB,EAAO4Q,EAAKvG,IAMlCrK,CACV,CACD,IAAIspB,GAAgB,SAAUrW,EAAMrC,EAAKvG,GACrC,OAAO5J,EAAc,GAAIN,EAAO8S,IAAO,GAAOzQ,KAAI,SAAUmQ,GAAO,OAAO2V,GAAa3V,EAAK/B,EAAKvG,EAAO,GAC3G,EACG0d,GAA0B,SAAU/nB,EAAO4Q,GAC3C,IAaI2Y,EAbwB,CACxB,kBACA,cACA,mBACA,eACA,oBACA,cACA,6BACA,eACA,uBACA,yBACA,6BAEuDzP,QAAO,SAAUrU,GAAQ,MAA4B,mBAAdmL,EAAInL,EAAuB,IAC7H,OAAOrE,QAAQmoB,EAA+B3f,MAAK,SAAUnE,GAAQ,OAAOzF,aAAiB4Q,EAAInL,EAAlF,IAClB,EC5GD,SAAS+jB,GAAiBnqB,EAAWoC,EAAMilB,EAAIjf,EAAY0N,EAAQvE,GAC/D,IAAIqH,EAAK/W,EACL8c,EAAW,GACXyL,EAAQ7qB,OAAO8qB,oBAAoBrqB,GACnCsqB,EAAU,SAAU9T,GACpB,IACI,GAA+B,mBAApBxW,EAAUwW,GACjB,MAAO,WAEX,IAAIiQ,EAAiBjS,EAAMxU,EAAWwW,GAAM,SAAUrC,GAClD,OAAO,WAEH,IADA,IAAIP,EAAO,GACF5O,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpC4O,EAAK5O,GAAMnF,UAAUmF,GAEzB,IAAIulB,EAASpW,EAAShU,MAAMC,KAAMwT,GAElC,GADA6U,GAAa8B,EAAQhZ,EAAKvR,IACrBwV,EAAUpV,KAAK2K,OAAQ3C,GAAa,CAC5B0N,EAAOlD,MAAMxS,KAAK2K,QAA3B,IACIyf,EAAaP,GAAc7oB,EAAc,GAAIN,EAAO8S,IAAO,GAAQrC,EAAKvR,GACxEqhB,EAAW,CACXjf,KAAMA,EACNgO,SAAUoG,EACV5C,KAAM4W,GAEVnD,EAAGjnB,KAAK2K,OAAQsW,EACnB,CACD,OAAOkJ,EAEd,IACD5L,EAASzd,KAAKulB,EAzBlB,CA2BA,MAAOle,GACH,IAAIkiB,EAAc3W,EAAW9T,EAAWwW,EAAM,CAC1ClC,IAAK,SAAUuL,GACXwH,EAAGjnB,KAAK2K,OAAQ,CACZ3I,KAAMA,EACNgO,SAAUoG,EACV5C,KAAM,CAACiM,GACP6K,QAAQ,GAEf,IAEL/L,EAASzd,KAAKupB,EACjB,GAEL,IACI,IAAK,IAAIE,EAAUtqB,EAAS+pB,GAAQQ,EAAYD,EAAQjqB,QAASkqB,EAAUhqB,KAAMgqB,EAAYD,EAAQjqB,OAAQ,CAEzG4pB,EADWM,EAAUjqB,MAExB,CAJL,CAMA,MAAOuZ,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQ0Q,IAAcA,EAAUhqB,OAASiB,EAAK8oB,EAAQxQ,SAAStY,EAAG3B,KAAKyqB,EACtE,CACO,QAAE,GAAI/R,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CACD,OAAOwd,CACV,CC5DD,ICOIkM,GACAC,GDRAC,GAAiB,WACjB,SAASA,EAAc/iB,GACnB5H,KAAK4qB,uBAAyB,IAAIxC,IAClCpoB,KAAK6qB,UAAY,CAAEC,SAAU,EAAGC,SAAU,MAC1C/qB,KAAK2X,QAAS,EACd3X,KAAK4X,QAAS,EACd5X,KAAKsY,gBAAkB,SAAUpG,EAAQ+O,KACtBjhB,KAAK6qB,UAAUE,UAC1B/qB,KAAK6qB,UAAUC,WAAa9qB,KAAK6qB,UAAUE,WAC9B/qB,KAAK6qB,UAAUE,WAC5B/qB,KAAK6qB,UAAUE,SAAW/qB,KAAK6qB,UAAUC,UACxC9qB,KAAK4qB,uBAAuBjY,IAAIT,IACjClS,KAAK4qB,uBAAuB1W,IAAIhC,EAAQ,IAE5ClS,KAAK4qB,uBAAuBzU,IAAIjE,GAAQpR,KAAKmgB,IAEjDjhB,KAAKua,WAAa3S,EAAQ2S,WAC1Bva,KAAK0V,OAAS9N,EAAQ8N,QACO,IAAzB9N,EAAQY,cACRxI,KAAKgrB,2BAA2BpjB,EAAQuJ,IAAKvJ,EAAQI,WAC5D,CAgED,OA/DA2iB,EAAc/qB,UAAUgT,MAAQ,WAC5B5S,KAAK4qB,uBAAuBK,QAC5BjrB,KAAKkrB,gBAAkBlrB,KAAKkrB,kBAEhCP,EAAc/qB,UAAUmc,OAAS,WAC7B/b,KAAK2X,QAAS,GAElBgT,EAAc/qB,UAAUqc,SAAW,WAC/Bjc,KAAK2X,QAAS,GAElBgT,EAAc/qB,UAAUuc,KAAO,WAC3Bnc,KAAK4X,QAAS,GAElB+S,EAAc/qB,UAAUwc,OAAS,WAC7Bpc,KAAK4X,QAAS,GAElB+S,EAAc/qB,UAAUorB,2BAA6B,SAAU7Z,EAAKnJ,GAChEhI,KAAKmrB,uBACLnrB,KAAKorB,oCACL,IAAIC,EE1CZ,SAAmCla,EAAKnJ,GACpC,IAAIuW,EAAW,GACf,IACI,IAAI8H,EAAiBjS,EAAMjD,EAAIma,kBAAkB1rB,UAAW,cAAc,SAAUmU,GAChF,OAAO,SAAUwX,GAEb,IADA,IAAI/X,EAAO,GACF5O,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpC4O,EAAK5O,EAAK,GAAKnF,UAAUmF,GAM7B,OAJKwQ,EAAUpV,KAAMgI,IACX,cAAehI,OACjBA,KAAK0K,UAAY6gB,GAElBxX,EAAShU,MAAMC,KAAMgB,EAAc,CAACuqB,GAAc7qB,EAAO8S,IAAO,IAE9E,IACD+K,EAASzd,KAAKulB,EAdlB,CAgBA,MAAO5kB,GACHgL,QAAQ1L,MAAM,yDACjB,CACD,OAAO,WACHwd,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CFkBgCuM,CAA0Bra,EAAKnJ,GACpDyjB,EG1CZ,SAAsCxE,EAAI9V,EAAKnJ,EAAY0N,GACvD,IAAI8C,EAAK/W,EACL8c,EAAW,GACXmN,EAAUvsB,OAAO8qB,oBAAoB9Y,EAAIwa,yBAAyB/rB,WAClEsqB,EAAU,SAAU9T,GACpB,IACI,GAA4D,mBAAjDjF,EAAIwa,yBAAyB/rB,UAAUwW,GAC9C,MAAO,WAEX,IAAIiQ,EAAiBjS,EAAMjD,EAAIwa,yBAAyB/rB,UAAWwW,GAAM,SAAUrC,GAC/E,OAAO,WAGH,IAFA,IAAII,EAAQnU,KACRwT,EAAO,GACF5O,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpC4O,EAAK5O,GAAMnF,UAAUmF,GAsBzB,OApBKwQ,EAAUpV,KAAK2K,OAAQ3C,IACxB0J,YAAW,WACP,IAAI0Y,EAAappB,EAAc,GAAIN,EAAO8S,IAAO,GACjD,GAAa,cAAT4C,GACIgU,EAAW,IACXA,EAAW,aAAckB,kBAAmB,CAC5C,IAAI3gB,EAASyf,EAAW,GACpBxf,EAAMD,EAAOE,WAAW,MACxB+gB,EAAOhhB,aAAiC,EAASA,EAAIM,aAAa,EAAG,EAAGP,EAAOI,MAAOJ,EAAOM,QAC7F4gB,EAAMD,aAAmC,EAASA,EAAKrgB,KAC3D6e,EAAW,GAAKlE,KAAKC,UAAU0F,EAClC,CAEL5E,EAAG9S,EAAMxJ,OAAQ,CACb3I,KAAMkD,EAAc,MACpB8K,SAAUoG,EACV5C,KAAM4W,GAfJ,GAiBP,GAEArW,EAAShU,MAAMC,KAAMwT,GAEnC,IACD+K,EAASzd,KAAKulB,EAlClB,CAoCA,MAAOle,GACH,IAAIkiB,EAAc3W,EAAWvC,EAAIwa,yBAAyB/rB,UAAWwW,EAAM,CACvElC,IAAK,SAAUuL,GACXwH,EAAGjnB,KAAK2K,OAAQ,CACZ3I,KAAMkD,EAAc,MACpB8K,SAAUoG,EACV5C,KAAM,CAACiM,GACP6K,QAAQ,GAEf,IAEL/L,EAASzd,KAAKupB,EACjB,GAEL,IACI,IAAK,IAAIyB,EAAY7rB,EAASyrB,GAAUK,EAAcD,EAAUxrB,QAASyrB,EAAYvrB,KAAMurB,EAAcD,EAAUxrB,OAE/G4pB,EADW6B,EAAYxrB,MAF/B,CAMA,MAAOuZ,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQiS,IAAgBA,EAAYvrB,OAASiB,EAAKqqB,EAAU/R,SAAStY,EAAG3B,KAAKgsB,EAC5E,CACO,QAAE,GAAItT,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CACD,OAAO,WACHwd,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CH7B2B+M,CAA6BhsB,KAAKsY,gBAAgBqF,KAAK3d,MAAOmR,EAAKnJ,EAAYhI,KAAK0V,QACpGuW,EDmBZ,SAAyChF,EAAI9V,EAAKnJ,EAAY0N,GAC1D,IAAI6I,EAAW,GAKf,OAJAA,EAASzd,KAAKf,MAAMwe,EAAUvd,EAAc,GAAIN,EAAOqpB,GAAiB5Y,EAAI+a,sBAAsBtsB,UAAWsF,EAAcinB,MAAOlF,EAAIjf,EAAY0N,EAAQvE,KAAO,SACvH,IAA/BA,EAAIib,wBACX7N,EAASzd,KAAKf,MAAMwe,EAAUvd,EAAc,GAAIN,EAAOqpB,GAAiB5Y,EAAIib,uBAAuBxsB,UAAWsF,EAAcmnB,OAAQpF,EAAIjf,EAAY0N,EAAQvE,KAAO,IAEhK,WACHoN,EAAShJ,SAAQ,SAAU0J,GAAK,OAAOA,OAE9C,CC5BmCqN,CAAgCtsB,KAAKsY,gBAAgBqF,KAAK3d,MAAOmR,EAAKnJ,EAAYhI,KAAK0V,QACnH1V,KAAKkrB,eAAiB,WAClBG,IACAI,IACAQ,MAGRtB,EAAc/qB,UAAUwrB,kCAAoC,WACxD,IAAIjX,EAAQnU,KACZusB,uBAAsB,WAAc,OAAOpY,EAAMqY,6BAAgC,KAErF7B,EAAc/qB,UAAUurB,qBAAuB,WAC3C,IAAIhX,EAAQnU,KAKZusB,uBAJ4B,SAAxBE,EAAkCC,GAClCvY,EAAM0W,UAAUC,SAAW4B,EAC3BH,sBAAsBE,OAI9B9B,EAAc/qB,UAAU4sB,4BAA8B,WAClD,IAAIrY,EAAQnU,KACZA,KAAK4qB,uBAAuBrV,SAAQ,SAAU+T,EAAQ3e,GAClD,IAAI/B,EAAKuL,EAAMuB,OAAOlD,MAAM7H,GAC5BwJ,EAAMwY,8BAA8BhiB,EAAQ/B,MAEhD2jB,uBAAsB,WAAc,OAAOpY,EAAMqY,6BAAgC,KAErF7B,EAAc/qB,UAAU+sB,8BAAgC,SAAUhiB,EAAQ/B,GACtE,IAAI5I,KAAK2X,SAAU3X,KAAK4X,OAAxB,CAGA,IAAIgV,EAAiB5sB,KAAK4qB,uBAAuBzU,IAAIxL,GACrD,GAAKiiB,IAA0B,IAARhkB,EAAvB,CAEA,IAAI0gB,EAASsD,EAAe7pB,KAAI,SAAUxC,GACtCA,EAAMyB,KAAM,IAAI6qB,EVxD5B,SAAgBvtB,EAAGsB,GACf,IAAIvB,EAAI,CAAA,EACR,IAAK,IAAIM,KAAKL,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,IAAMiB,EAAE2D,QAAQ5E,GAAK,IAC9EN,EAAEM,GAAKL,EAAEK,IACb,GAAS,MAALL,GAAqD,mBAAjCH,OAAO2tB,sBACtB,KAAIvtB,EAAI,EAAb,IAAgBI,EAAIR,OAAO2tB,sBAAsBxtB,GAAIC,EAAII,EAAED,OAAQH,IAC3DqB,EAAE2D,QAAQ5E,EAAEJ,IAAM,GAAKJ,OAAOS,UAAUmtB,qBAAqBjtB,KAAKR,EAAGK,EAAEJ,MACvEF,EAAEM,EAAEJ,IAAMD,EAAEK,EAAEJ,IAFF,CAIxB,OAAOF,CACV,CU8CkC2tB,CAAOzsB,EAAO,CAAC,SACtC,OAAOssB,CACV,IACG7qB,EAAO4qB,EAAe,GAAG5qB,KAC7BhC,KAAKua,WAAW,CAAE3R,GAAIA,EAAI5G,KAAMA,EAAMirB,SAAU3D,IAChDtpB,KAAK4qB,uBAAuBxT,OAAOzM,EAP/B,CAHH,GAYEggB,CACV,CArFoB,GCIrB,SAASuC,GAAUtsB,GACf,OAAO1B,EAASA,EAAS,CAAD,EAAK0B,GAAI,CAAE8rB,UAAWtZ,KAAKD,OACtD,CAGD,IAAIuC,GTHO,CACH3S,IAAK,CADF,EAEHyP,MAAO,SAAUhT,GACb,OAAKA,GAAMA,EAAEkJ,KAGNlJ,EAAEkJ,KAAKE,IAFF,CAJb,EAQH6J,QAAS,SAAU7J,GACf,OAAO5I,KAAK+C,IAAI6F,IAAO,IATxB,EAWH8J,kBAAmB,SAAUlT,GACzB,IAAI2U,EAAQnU,KACR4I,EAAKpJ,EAAEkJ,MAAQlJ,EAAEkJ,KAAKE,UACnB5I,KAAK+C,IAAI6F,GACZpJ,EAAEyJ,YACFzJ,EAAEyJ,WAAWsM,SAAQ,SAAU4X,GAC3B,OAAOhZ,EAAMzB,kBAAkBya,KAjBxC,EAqBHxa,IAAK,SAAU/J,GACX,OAAO5I,KAAK+C,IAAIlD,eAAe+I,EAtBhC,EAwBHgK,MAAO,WACH5S,KAAK+C,IAAM,EACd,GStBT,SAASqqB,GAAOxlB,QACI,IAAZA,IAAsBA,EAAU,CAAA,GACpC,IAAI2Q,EAAO3Q,EAAQ2Q,KAAM8U,EAAmBzlB,EAAQylB,iBAAkBC,EAAmB1lB,EAAQ0lB,iBAAkB7rB,EAAKmG,EAAQI,WAAYA,OAAoB,IAAPvG,EAAgB,WAAaA,EAAI0G,EAAKP,EAAQK,cAAeA,OAAuB,IAAPE,EAAgB,KAAOA,EAAIE,EAAKT,EAAQub,YAAaA,OAAqB,IAAP9a,EAAgB,YAAcA,EAAIwB,EAAKjC,EAAQZ,cAAeA,OAAuB,IAAP6C,EAAgB,UAAYA,EAAIE,EAAKnC,EAAQX,iBAAkBA,OAA0B,IAAP8C,EAAgB,KAAOA,EAAIuD,EAAK1F,EAAQM,iBAAkBA,OAA0B,IAAPoF,GAAuBA,EAAIigB,EAAgB3lB,EAAQ2lB,cAAeC,EAAoB5lB,EAAQ9F,iBAAkB2rB,EAAkB7lB,EAAQmH,eAAgB9M,EAAc2F,EAAQ3F,YAAamG,EAAaR,EAAQQ,WAAYkY,EAAQ1Y,EAAQ0Y,MAAOoN,EAAS9lB,EAAQ8lB,OAAQxe,EAAKtH,EAAQwW,SAAUA,OAAkB,IAAPlP,EAAgB,CAAhB,EAAqBA,EAAIye,EAAgB/lB,EAAQ+lB,cAAeve,EAAKxH,EAAQY,aAAcA,OAAsB,IAAP4G,GAAwBA,EAAIC,EAAKzH,EAAQwb,qBAAsBA,OAA8B,IAAP/T,GAAwBA,EAAIsB,EAAK/I,EAAQ8d,aAAcA,OAAsB,IAAP/U,GAAwBA,EAAIG,EAAKlJ,EAAQW,aAAcA,OAAsB,IAAPuI,GAAwBA,EAAI2V,EAAU7e,EAAQ6e,QAAS1V,EAAKnJ,EAAQa,gBAAiBA,OAAyB,IAAPsI,EAAgB,WAAc,OAAO,CAArC,EAAgDA,EACzyC,IAAKwH,EACD,MAAM,IAAI9B,MAAM,kCAEE5N,IAAlB8kB,QAAsD9kB,IAAvBuV,EAAS8C,YACxC9C,EAAS8C,UAAYyM,GAEzB,IAuCIC,EAvCA9rB,GAAqC,IAAlByrB,EACjB,CACEM,OAAO,EACPC,MAAM,EACN,kBAAkB,EAClBC,OAAO,EACPC,OAAO,EACPC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,KAAK,EACLlsB,MAAM,EACNmsB,MAAM,EACNlqB,KAAK,EACLmqB,MAAM,EACNC,UAAU,EACVC,QAAQ,EACRC,UAAU,QAEU5lB,IAAtB2kB,EACIA,EACA,CAAEiB,UAAU,GAClB1f,GAAqC,IAApB0e,GAAgD,QAApBA,EAC3C,CACE/d,QAAQ,EACRD,SAAS,EACTI,aAAa,EACbY,gBAAgB,EAChBV,gBAAgB,EAChBE,gBAAgB,EAChBC,mBAAmB,EACnBE,sBAAsB,EACtBD,mBAAwC,QAApBsd,EACpB3d,qBAA0C,QAApB2d,GAExBA,GAEI,ITuJd,SAAkBtc,QACF,IAARA,IAAkBA,EAAM2C,QACxB,aAAc3C,IAAQA,EAAIud,SAAS9uB,UAAU2V,UAC7CpE,EAAIud,SAAS9uB,UAAU2V,QAAUlU,MAAMzB,UAClC2V,SAEL,iBAAkBpE,IAAQA,EAAIwd,aAAa/uB,UAAU2V,UACrDpE,EAAIwd,aAAa/uB,UAAU2V,QAAUlU,MAAMzB,UACtC2V,SAEJqZ,KAAKhvB,UAAUyH,WAChBunB,KAAKhvB,UAAUyH,SAAW,SAAkBN,GACxC,KAAM,KAAKtH,WACP,MAAM,IAAIgB,UAAU,0BAExB,GACI,GAAIT,OAAS+G,EACT,OAAO,QAELA,EAAOA,GAAQA,EAAKU,YAC9B,OAAO,GAGlB,CS7KGonB,GAEA,IAAIC,EAA2B,EAuB/BrE,GAAc,SAAU7pB,EAAGmuB,GACvB,IAAIttB,EAQJ,KAPmC,QAA7BA,EAAK4a,GAAgB,UAAuB,IAAP5a,OAAgB,EAASA,EAAGya,aACnEtb,EAAEoB,OAAS+C,EAAUiqB,cACnBpuB,EAAEoB,OAAS+C,EAAUkqB,qBACnBruB,EAAE2K,KAAK8I,SAAWrP,EAAkBkqB,UACxC7S,GAAgB9G,SAAQ,SAAU4Z,GAAO,OAAOA,EAAIlT,cAExD1D,EA9BiB,SAAU3X,GAC3B,IAAI4X,EAAK/W,EACT,IACI,IAAK,IAAI0G,EAAKlI,EAASwmB,GAAW,IAAKpe,EAAKF,EAAG7H,QAAS+H,EAAG7H,KAAM6H,EAAKF,EAAG7H,OAAQ,CAC7E,IAAIomB,EAASre,EAAG9H,MACZmmB,EAAO0I,iBACPxuB,EAAI8lB,EAAO0I,eAAexuB,GAEjC,CANL,CAQA,MAAOkZ,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQzR,IAAOA,EAAG7H,OAASiB,EAAK0G,EAAG4R,SAAStY,EAAG3B,KAAKqI,EACnD,CACO,QAAE,GAAIqQ,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CAID,OAHI2sB,IACA9sB,EAAI8sB,EAAO9sB,IAERA,EAUFwuB,CAAexuB,GAAImuB,GACpBnuB,EAAEoB,OAAS+C,EAAUiqB,aACrBpB,EAAwBhtB,EACxBkuB,EAA2B,OAE1B,GAAIluB,EAAEoB,OAAS+C,EAAUkqB,oBAAqB,CAC/C,GAAIruB,EAAE2K,KAAK8I,SAAWrP,EAAkBkqB,UACpCtuB,EAAE2K,KAAK4b,eACP,OAEJ2H,IACA,IAAIO,EAAc/B,GAAoBwB,GAA4BxB,EAC9DgC,EAAajC,GACbzsB,EAAE8rB,UAAYkB,EAAsBlB,UAAYW,GAChDgC,GAAeC,IACf5E,IAAiB,EAExB,GAEL,IAAI6E,EAAsB,SAAUlvB,GAChCoqB,GAAYyC,GAAU,CAClBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkBkqB,UAAY7uB,OAG3DmvB,EAAoB,SAAU7vB,GAC9B,OAAO8qB,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkByqB,QAAU9vB,OAGzD+vB,GAA4B,SAAU/vB,GACtC,OAAO8qB,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkB2qB,gBAAkBhwB,OAGjE0Z,GAAgB,IAAIyN,GAAc,CAClCvM,WAAYgV,IAEZvT,GAAgB,IAAI2O,GAAc,CAClCniB,aAAcA,EACd+R,WAAYmV,GACZve,IAAK2C,OACL9L,WAAYA,EACZ0N,OAAQA,KAER6D,GAAmB,IAAI6N,GAAiB,CACxC7M,WAAYgV,EACZpQ,SAAUqQ,EACV9e,cAAe,CACX1I,WAAYA,EACZC,cAAeA,EACfjB,cAAeA,EACfC,iBAAkBA,EAClBiB,iBAAkBA,EAClBpG,iBAAkBA,EAClBsG,WAAYA,EACZnG,YAAaA,EACbuG,aAAcA,EACdD,aAAcA,EACd6V,SAAUA,EACVrP,eAAgBA,EAChBsK,cAAeA,GACf2C,cAAeA,IAEnBtG,OAAQA,KAEZgV,GAAmB,SAAUqE,GACzB,IAAIttB,EAAI0G,EAAIE,EAAIwB,OACG,IAAfklB,IAAyBA,GAAa,GAC1CtE,GAAYyC,GAAU,CAClBlrB,KAAM+C,EAAU6qB,KAChBrkB,KAAM,CACF5H,KAAMmQ,OAAOtC,SAAS7N,KACtBoH,MAAOkK,IACPhK,OAAQ2J,OAEZma,GACJ1S,GAAgB9G,SAAQ,SAAU4Z,GAAO,OAAOA,EAAIhT,UACpD,IAAIpS,EAAKrJ,EZwlBjB,SAAkBlB,EAAGoI,GACjB,IAAInG,EAAKmG,GAAW,CAApB,EAAwBO,EAAK1G,EAAGuG,WAAYA,OAAoB,IAAPG,EAAgB,WAAaA,EAAIE,EAAK5G,EAAGwG,cAAeA,OAAuB,IAAPI,EAAgB,KAAOA,EAAIwB,EAAKpI,EAAGuF,cAAeA,OAAuB,IAAP6C,EAAgB,UAAYA,EAAIE,EAAKtI,EAAGwF,iBAAkBA,OAA0B,IAAP8C,EAAgB,KAAOA,EAAIuD,EAAK7L,EAAGyG,iBAAkBA,OAA0B,IAAPoF,GAAuBA,EAAI4B,EAAKzN,EAAG8G,aAAcA,OAAsB,IAAP2G,GAAwBA,EAAIE,EAAK3N,EAAG+G,aAAcA,OAAsB,IAAP4G,GAAwBA,EAAIC,EAAK5N,EAAG8rB,cAAeA,OAAuB,IAAPle,GAAwBA,EAAIjH,EAAa3G,EAAG2G,WAAYnG,EAAcR,EAAGQ,YAAa0O,EAAKlP,EAAGouB,QAASA,OAAiB,IAAPlf,GAAwBA,EAAIrI,EAAiB7G,EAAG6G,eAAgBgH,EAAqB7N,EAAG6N,mBAAoBN,EAAcvN,EAAGuN,YAAaC,EAAexN,EAAGwN,aAAcE,EAAoB1N,EAAG0N,kBAAmB2B,EAAKrP,EAAGgH,gBACr2BqnB,EAAY,CAAA,EA0ChB,MAAO,CACHjhB,EAAoBrP,EAAG,CACnBgG,IAAKhG,EACLuD,IAAK+sB,EACL9nB,WAAYA,EACZC,cAAeA,EACfjB,cAAeA,EACfC,iBAAkBA,EAClB6H,WAAW,EACX5G,iBAAkBA,EAClBpG,kBAnDiC,IAAlByrB,EACjB,CACEM,OAAO,EACPC,MAAM,EACN,kBAAkB,EAClBC,OAAO,EACPC,OAAO,EACPC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,KAAK,EACLlsB,MAAM,EACNmsB,MAAM,EACNlqB,KAAK,EACLmqB,MAAM,EACNC,UAAU,EACVC,QAAQ,EACRC,UAAU,IAEM,IAAlBlB,EACI,CACEkB,UAAU,GAEZlB,EA6BFnlB,WAAYA,EACZnG,YAAaA,EACb8M,gBA9ByB,IAAZ8gB,GAAgC,QAAZA,EAEjC,CACIngB,QAAQ,EACRD,SAAS,EACTI,aAAa,EACbY,gBAAgB,EAChBX,qBAAkC,QAAZ+f,EACtB9f,gBAAgB,EAChBE,gBAAgB,EAChBC,mBAAmB,EACnBC,oBAAoB,EACpBC,sBAAsB,IAEhB,IAAZyf,EACI,CADJ,EAEIA,EAeFvnB,eAAgBA,EAChBC,aAAcA,EACdC,aAAcA,EACd8G,mBAAoBA,EACpBN,YAAaA,EACbC,aAAcA,EACdE,kBAAmBA,EACnB1G,qBAhE24B,IAAPqI,EAAgB,WAAc,OAAO,CAArC,EAAgDA,IAkEx7Bgf,EAEP,CY7pBuBC,CAASjqB,SAAU,CAC/BkC,WAAYA,EACZC,cAAeA,EACfjB,cAAeA,EACfC,iBAAkBA,EAClBiB,iBAAkBA,EAClBqlB,cAAezrB,EACfsG,WAAYA,EACZynB,QAAS9gB,EACTvG,aAAcA,EACdD,aAAcA,EACdyG,YAAa,SAAUxP,GACfsW,EAActW,IACd6Z,GAAcC,UAAU9Z,GAExBuW,EAAcvW,IACd+Z,GAAiBC,cAAcha,EAAEoC,WAAYkE,SAhBtB,EAmB/BmJ,aAAc,SAAUwK,EAAQC,GAC5BL,GAAcM,aAAaF,EAAQC,GACnCH,GAAiBK,oBAAoBH,EArBV,EAuB/BhR,gBAAiBA,IACjB,GAAI1B,EAAOgD,EAAG,GAAI+lB,EAAY/lB,EAAG,GACrC,IAAKhD,EACD,OAAO0F,QAAQC,KAAK,mCAExBgJ,GAAO3S,IAAM+sB,EACbrF,GAAYyC,GAAU,CAClBlrB,KAAM+C,EAAUiqB,aAChBzjB,KAAM,CACFxE,KAAMA,EACNipB,cAAe,CACXC,UAA6BpnB,IAAvBiL,OAAOoc,YACPpc,OAAOoc,aACO,OAAbpqB,eAAkC,IAAbA,cAAsB,EAASA,SAASgP,gBAAgB5H,cAC+D,QAAzI/E,EAAkF,QAA5E1G,EAAkB,OAAbqE,eAAkC,IAAbA,cAAsB,EAASA,SAASkP,YAAyB,IAAPvT,OAAgB,EAASA,EAAG8hB,qBAAkC,IAAPpb,OAAgB,EAASA,EAAG+E,cACjK,OAAbpH,eAAkC,IAAbA,cAAsB,EAASA,SAASkP,KAAK9H,aACnE,EACRijB,SAA4BtnB,IAAvBiL,OAAOsc,YACNtc,OAAOsc,aACO,OAAbtqB,eAAkC,IAAbA,cAAsB,EAASA,SAASgP,gBAAgB1H,aAC+D,QAAzIvD,EAAkF,QAA5ExB,EAAkB,OAAbvC,eAAkC,IAAbA,cAAsB,EAASA,SAASkP,YAAyB,IAAP3M,OAAgB,EAASA,EAAGkb,qBAAkC,IAAP1Z,OAAgB,EAASA,EAAGuD,aACjK,OAAbtH,eAAkC,IAAbA,cAAsB,EAASA,SAASkP,KAAK5H,YACnE,OAIpBiP,GAAgB9G,SAAQ,SAAU4Z,GAAO,OAAOA,EAAI/S,aAExD,IACI,IAAIiU,GAAa,GACjBA,GAAWvvB,KAAKkR,EAAG,oBAAoB,WACnCyY,GAAYyC,GAAU,CAClBlrB,KAAM+C,EAAUurB,iBAChB/kB,KAAM,CAAA,IAHI,KAMlB,IAAIglB,GAAY,SAAU/qB,GACtB,IAAI/D,EACJ,OAAO4e,GAAc,CACjB9F,WAAYgV,EACZ9O,YAAa,SAAUwB,EAAW5N,GAC9B,OAAOoW,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAM,CACF8I,OAAQA,EACR4N,UAAWA,KAPN,EAWjB9D,mBAAoB,SAAUvK,GAC1B,OAAO6W,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkBwrB,kBAAoB5c,KAdtD,EAiBjBuL,SAAUqQ,EACV9O,iBAAkB,SAAU9M,GACxB,OAAO6W,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkByrB,gBAAkB7c,KArBpD,EAwBjB+M,QAAS,SAAUlB,GACf,OAAOgL,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkB0rB,OAASjR,KA3B3C,EA8BjBmB,mBAAoB,SAAUjhB,GAC1B,OAAO8qB,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkB2rB,kBAAoBhxB,KAjCtD,EAoCjBkhB,iBAAkB,SAAUlgB,GACxB,OAAO8pB,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkB4rB,gBAAkBjwB,KAvCpD,EA0CjBmgB,mBAAoB,SAAUngB,GAC1B,OAAO8pB,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkB6rB,kBAAoBlwB,KA7CtD,EAgDjBogB,iBAAkB2O,GAClB1O,OAAQ,SAAUrhB,GACd,OAAO8qB,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUkqB,oBAChB1jB,KAAMrM,EAAS,CAAEmV,OAAQrP,EAAkB8rB,MAAQnxB,KApD1C,EAuDjBqI,WAAYA,EACZmb,YAAaA,EACbnc,cAAeA,EACfC,iBAAkBA,EAClBnF,iBAAkBA,EAClBoG,iBAAkBA,EAClBkW,SAAUA,EACV5V,aAAcA,EACdD,aAAcA,EACd6a,qBAAsBA,EACtBsC,aAAcA,EACdlgB,IAAKA,EACLvD,YAAaA,EACbmG,WAAYA,EACZH,cAAeA,EACf8G,eAAgBA,EAChB2G,OAAQA,GACR2D,cAAeA,GACfE,iBAAkBA,GAClByC,cAAeA,GACfyK,SAA2H,QAAhHhlB,EAAKglB,aAAyC,EAASA,EAAQpM,QAAO,SAAU1a,GAAK,OAAOA,EAAE+d,QAAW,WAAsB,IAAPjc,OAAgB,EAASA,EAAGsB,KAAI,SAAUpD,GAAK,MAAQ,CACtL+d,SAAU/d,EAAE+d,SACZ9V,QAASjI,EAAEiI,QACX+e,SAAU,SAAUvM,GAChB,OAAOqQ,GAAYyC,GAAU,CACzBlrB,KAAM+C,EAAUgsB,OAChBxlB,KAAM,CACFmb,OAAQ/mB,EAAEqG,KACVoU,QAASA,KAGpB,EAXuJ,MAYjJ,IACZkG,IAEPjH,GAAc2N,iBAAgB,SAAU/V,GACpCof,GAAWvvB,KAAKyvB,GAAUtf,EAASrD,qBAEvC,IAAIojB,GAAS,WACTtG,KACA2F,GAAWvvB,KAAKyvB,GAAUzqB,YAe9B,MAb4B,gBAAxBA,SAASuL,YACe,aAAxBvL,SAASuL,WACT2f,KAGAX,GAAWvvB,KAAKkR,EAAG,QAAQ,WACvByY,GAAYyC,GAAU,CAClBlrB,KAAM+C,EAAUksB,KAChB1lB,KAAM,CAAA,KAEVylB,OACDld,SAEA,WACHuc,GAAW9a,SAAQ,SAAU0J,GAAK,OAAOA,OAzHjD,CA4HA,MAAOle,GACH0L,QAAQC,KAAK3L,EAChB,CACJ,CACDqsB,GAAO8D,eAAiB,SAAUC,EAAK/W,GACnC,IAAKqQ,GACD,MAAM,IAAIhU,MAAM,iDAEpBgU,GAAYyC,GAAU,CAClBlrB,KAAM+C,EAAUqsB,OAChB7lB,KAAM,CACF4lB,IAAKA,EACL/W,QAASA,KAGpB,EACDgT,GAAOiE,WAAa,WAChBhV,GAAgB9G,SAAQ,SAAU4Z,GAAO,OAAOA,EAAIpT,WACvD,EACDqR,GAAO1C,iBAAmB,SAAUqE,GAChC,IAAKrE,GACD,MAAM,IAAIjU,MAAM,mDAEpBiU,GAAiBqE,EACpB,EACD3B,GAAO1X,OAASA,GGvXhB,IAAI4b,GAAc,WACd,SAASA,EAAWC,GAChBvxB,KAAKwxB,SAAWD,EAAIC,UAAY,GAChCxxB,KAAKyxB,aAAeF,EAAIE,cAAgB,GACxCzxB,KAAK0xB,WAAaH,EAAIG,WACtB1xB,KAAK2xB,aAAeJ,EAAII,YAC3B,CAgBD,OAfAL,EAAW1xB,UAAUgyB,SAAW,WAC5B,IAAIF,EAAa1xB,KAAK0xB,YAAc,GAChCC,EAAe3xB,KAAK2xB,cAAgB,GACxC,OAAI3xB,KAAKyxB,aACGzxB,KAAKyxB,aACT,KACAzxB,KAAKwxB,SACL,IACAE,EACA,IACAC,EACA,IAED3xB,KAAKwxB,SAAW,IAAME,EAAa,IAAMC,GAE7CL,CACV,CAvBiB,GAwBdO,GAA8B,eAC9BC,GAAyB,iCACzBC,GAA4B,8BAC5BC,GAAmB,CACnBC,MAAO,SAAUlxB,GACb,IAAKA,EACD,MAAO,GAEX,QAAgC,IAArBA,EAAMmxB,iBACuB,IAA7BnxB,EAAM,mBACb,OAAOf,KAAKmyB,WAAWpxB,GAEtB,GAAIA,EAAM0D,OAAS1D,EAAM0D,MAAM4B,MAAMyrB,IACtC,OAAO9xB,KAAKoyB,YAAYrxB,GAEvB,GAAIA,EAAM0D,MACX,OAAOzE,KAAKqyB,gBAAgBtxB,GAG5B,MAAM,IAAI0V,MAAM,kCAhBL,EAmBnB6b,gBAAiB,SAAUC,GACvB,IAA8B,IAA1BA,EAAQhuB,QAAQ,KAChB,MAAO,CAACguB,GAEZ,IACI7tB,EADS,+BACM4B,KAAKisB,EAAQ3uB,QAAQ,QAAS,KACjD,IAAKc,EACD,MAAM,IAAI+R,MAAM,2BAA2BlV,OAAOgxB,IACtD,MAAO,CAAC7tB,EAAM,GAAIA,EAAM,SAAMmE,EAAWnE,EAAM,SAAMmE,EA3BtC,EA6BnBupB,YAAa,SAAUrxB,GAInB,OAHeA,EAAM0D,MAAMD,MAAM,MAAM6V,QAAO,SAAUmY,GACpD,QAASA,EAAKnsB,MAAMyrB,GADT,GAEZ9xB,MACa+C,KAAI,SAAUyvB,GACtBA,EAAKjuB,QAAQ,WAAa,IAC1BiuB,EAAOA,EACF5uB,QAAQ,aAAc,QACtBA,QAAQ,+BAAgC,KAEjD,IAAI6uB,EAAgBD,EAAK5uB,QAAQ,OAAQ,IAAIA,QAAQ,eAAgB,KACjE4N,EAAWihB,EAAcpsB,MAAM,4BAI/BqsB,GAHJD,EAAgBjhB,EACVihB,EAAc7uB,QAAQ4N,EAAS,GAAI,IACnCihB,GACqBjuB,MAAM,OAAOlD,MAAM,GAC1CqxB,EAAgB3yB,KAAKsyB,gBAAgB9gB,EAAWA,EAAS,GAAKkhB,EAAO/tB,OACrE8sB,EAAeiB,EAAOzvB,KAAK,WAAQ4F,EACnC2oB,EAAW,CAAC,OAAQ,eAAejtB,QAAQouB,EAAc,KAAO,OAC9D9pB,EACA8pB,EAAc,GACpB,OAAO,IAAIrB,GAAW,CAClBG,aAAcA,EACdD,SAAUA,EACVE,WAAYiB,EAAc,GAC1BhB,aAAcgB,EAAc,IArB7B,GAuBJ3yB,KAxDY,EA0DnBqyB,gBAAiB,SAAUtxB,GAIvB,OAHeA,EAAM0D,MAAMD,MAAM,MAAM6V,QAAO,SAAUmY,GACpD,OAAQA,EAAKnsB,MAAM0rB,GADR,GAEZ/xB,MACa+C,KAAI,SAAUyvB,GAI1B,GAHIA,EAAKjuB,QAAQ,YAAc,IAC3BiuB,EAAOA,EAAK5uB,QAAQ,mDAAoD,SAEjD,IAAvB4uB,EAAKjuB,QAAQ,OAAsC,IAAvBiuB,EAAKjuB,QAAQ,KACzC,OAAO,IAAI+sB,GAAW,CAClBG,aAAce,IAIlB,IAAII,EAAoB,6BACpBprB,EAAUgrB,EAAKnsB,MAAMusB,GACrBnB,EAAejqB,GAAWA,EAAQ,GAAKA,EAAQ,QAAKqB,EACpD8pB,EAAgB3yB,KAAKsyB,gBAAgBE,EAAK5uB,QAAQgvB,EAAmB,KACzE,OAAO,IAAItB,GAAW,CAClBG,aAAcA,EACdD,SAAUmB,EAAc,GACxBjB,WAAYiB,EAAc,GAC1BhB,aAAcgB,EAAc,IAlBjC,GAqBJ3yB,KAnFY,EAqFnBmyB,WAAY,SAAUvxB,GAClB,OAAKA,EAAEsxB,YACFtxB,EAAEiyB,QAAQtuB,QAAQ,OAAS,GACxB3D,EAAEiyB,QAAQruB,MAAM,MAAM9E,OAASkB,EAAEsxB,WAAW1tB,MAAM,MAAM9E,OACrDM,KAAK8yB,YAAYlyB,GAElBA,EAAE6D,MAIDzE,KAAK+yB,aAAanyB,GAHlBZ,KAAKgzB,aAAapyB,EA5Fd,EAkGnBkyB,YAAa,SAAUlyB,GAInB,IAHA,IAAIqyB,EAAS,oCACTC,EAAQtyB,EAAEiyB,QAAQruB,MAAM,MACxB2lB,EAAS,GACJ5qB,EAAI,EAAG0oB,EAAMiL,EAAMxzB,OAAQH,EAAI0oB,EAAK1oB,GAAK,EAAG,CACjD,IAAI8G,EAAQ4sB,EAAO3sB,KAAK4sB,EAAM3zB,IAC1B8G,GACA8jB,EAAOrpB,KAAK,IAAIwwB,GAAW,CACvBE,SAAUnrB,EAAM,GAChBqrB,WAAYyB,WAAW9sB,EAAM,MAGxC,CACD,OAAO8jB,CA/GQ,EAiHnB6I,aAAc,SAAUpyB,GAIpB,IAHA,IAAIqyB,EAAS,6DACTC,EAAQtyB,EAAEsxB,WAAW1tB,MAAM,MAC3B2lB,EAAS,GACJ5qB,EAAI,EAAG0oB,EAAMiL,EAAMxzB,OAAQH,EAAI0oB,EAAK1oB,GAAK,EAAG,CACjD,IAAI8G,EAAQ4sB,EAAO3sB,KAAK4sB,EAAM3zB,IAC1B8G,GACA8jB,EAAOrpB,KAAK,IAAIwwB,GAAW,CACvBG,aAAcprB,EAAM,SAAMwC,EAC1B2oB,SAAUnrB,EAAM,GAChBqrB,WAAYyB,WAAW9sB,EAAM,MAGxC,CACD,OAAO8jB,CA/HQ,EAiInB4I,aAAc,SAAUhyB,GAKpB,OAJeA,EAAM0D,MAAMD,MAAM,MAAM6V,QAAO,SAAUmY,GACpD,QAAUA,EAAKnsB,MAAMwrB,MAChBW,EAAKnsB,MAAM,oBAFL,GAGZrG,MACa+C,KAAI,SAAUyvB,GAC1B,IAAIE,EAASF,EAAKhuB,MAAM,KACpBmuB,EAAgB3yB,KAAKsyB,gBAAgBI,EAAO/tB,OAE5C8sB,GADeiB,EAAO7Y,SAAW,IAEhCjW,QAAQ,iCAAkC,MAC1CA,QAAQ,aAAc,UAAOiF,EAClC,OAAO,IAAIyoB,GAAW,CAClBG,aAAcA,EACdD,SAAUmB,EAAc,GACxBjB,WAAYiB,EAAc,GAC1BhB,aAAcgB,EAAc,IAX7B,GAaJ3yB,KACN,GC7KL,SAASozB,GAAersB,GACpB,IAAKA,IAASA,EAAKssB,UACf,MAAO,GAGX,IADA,IAAItW,EAAO,GACJhW,EAAKwc,eAAe,CACvB,IAAIvZ,EAASjD,EAAKusB,UAClB,IAAKtpB,EACD,MAEJA,EAASA,EAAO7H,cAChB,IAAIoxB,EAAWxsB,EAAKwc,cAChBiQ,EAAc,GAClB,GAAID,EAASE,UAAYF,EAASE,SAAS/zB,OAAS,EAChD,IAAK,IAAIH,EAAI,EAAGA,EAAIg0B,EAASE,SAAS/zB,OAAQH,IAAK,CAC/C,IAAIm0B,EAAUH,EAASE,SAASl0B,GAC5Bm0B,EAAQJ,WAAaI,EAAQJ,UAAUnxB,aACnCuxB,EAAQJ,UAAUnxB,gBAAkB6H,GACpCwpB,EAAY1yB,KAAK4yB,EAG5B,CAEDF,EAAY9zB,OAAS,IACrBsK,GAAU,OAASwpB,EAAYjvB,QAAQwC,GAAQ,KAEnDgW,EAAO/S,GAAU+S,EAAO,IAAMA,EAAO,IACrChW,EAAOwsB,CACV,CACD,OAAOxW,CACV,CACD,SAAS4W,GAASpC,GACd,MAA+C,oBAAxCpyB,OAAOS,UAAUgyB,SAAS9xB,KAAKyxB,EACzC,CACD,SAASqC,GAAarC,EAAKsC,GACvB,IAAIrb,EAAK/W,EACT,GAAc,IAAVoyB,EACA,OAAO,EAEX,IAAIrV,EAAOrf,OAAOqf,KAAK+S,GACvB,IACI,IAAK,IAAIuC,EAAS7zB,EAASue,GAAOuV,EAAWD,EAAOxzB,QAASyzB,EAASvzB,KAAMuzB,EAAWD,EAAOxzB,OAAQ,CAClG,IAAIqT,EAAMogB,EAASxzB,MACnB,GAAIozB,GAASpC,EAAI5d,KAASigB,GAAarC,EAAI5d,GAAMkgB,EAAQ,GACrD,OAAO,CAEd,CANL,CAQA,MAAO/Z,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQia,IAAaA,EAASvzB,OAASiB,EAAKqyB,EAAO/Z,SAAStY,EAAG3B,KAAKg0B,EACnE,CACO,QAAE,GAAItb,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CACD,OAAO,CACV,CACD,SAASolB,GAAUoL,EAAKyC,GACpB,IAAIpsB,EAAU,CACVqsB,eAAgB,GAChBC,aAAc,GAElB/0B,OAAOC,OAAOwI,EAASosB,GACvB,IAAIvvB,EAAQ,GACR+Z,EAAO,GACX,OAAO0H,KAAKC,UAAUoL,GAAK,SAAU5d,EAAKpT,GACtC,GAAIkE,EAAM/E,OAAS,EAAG,CAClB,IAAIy0B,EAAU1vB,EAAMF,QAAQvE,OAC3Bm0B,EAAU1vB,EAAM2vB,OAAOD,EAAU,GAAK1vB,EAAM3D,KAAKd,OACjDm0B,EAAU3V,EAAK4V,OAAOD,EAASE,IAAU1gB,GAAO6K,EAAK1d,KAAK6S,IACtDlP,EAAMF,QAAQhE,KAEXA,EADAkE,EAAM,KAAOlE,EACL,eAIJ,eACIie,EAAKld,MAAM,EAAGmD,EAAMF,QAAQhE,IAAQ0C,KAAK,KACzC,IAGnB,MAEGwB,EAAM3D,KAAKP,GAEf,GAAIA,QACA,OAAOA,EAEX,GA6BJ,SAAsB+zB,GAClB,GAAIX,GAASW,IAASn1B,OAAOqf,KAAK8V,GAAM50B,OAASkI,EAAQqsB,eACrD,OAAO,EAEX,GAAoB,mBAATK,EACP,OAAO,EAEX,GAAIX,GAASW,IAASV,GAAaU,EAAM1sB,EAAQssB,cAC7C,OAAO,EAEX,OAAO,CACV,CAxCOK,CAAah0B,GACb,OAwCR,SAAkB+zB,GACd,IAAIE,EAAMF,EAAK1C,WACXhqB,EAAQ6sB,mBAAqBD,EAAI90B,OAASkI,EAAQ6sB,oBAClDD,EAAM,GAAGjzB,OAAOizB,EAAIlzB,MAAM,EAAGsG,EAAQ6sB,mBAAoB,QAE7D,OAAOD,CACV,CA9Cc5C,CAASrxB,GAEpB,GAAIA,aAAiBm0B,MAAO,CACxB,IAAIC,EAAc,CAAA,EAClB,IAAK,IAAIhW,KAAYpe,EAAO,CACxB,IAAIq0B,EAAar0B,EAAMoe,GACnBtd,MAAMwzB,QAAQD,GACdD,EAAYhW,GAAYyU,GAAewB,EAAWl1B,OAASk1B,EAAW,GAAK,MAG3ED,EAAYhW,GAAYiW,CAE/B,CACD,OAAOD,CACV,CACI,OAAIp0B,aAAiBquB,KAClBruB,aAAiBgnB,YACVhnB,EAAQA,EAAM8yB,UAAY,GAE9B9yB,EAAMu0B,SAERv0B,aAAiBkW,MACflW,EAAMkE,MACPlE,EAAMkE,MAAQ,kCACdlE,EAAMyF,KAAO,KAAOzF,EAAMsyB,QAE7BtyB,CACV,GAoBJ,CCrID,IAAIw0B,GAAoB,CACpBC,MAAO,CACH,SACA,QACA,QACA,aACA,QACA,MACA,SACA,QACA,QACA,iBACA,WACA,OACA,MACA,QACA,OACA,UACA,UACA,QACA,QAEJC,gBAAiB,IACjBC,OAAQ,WAEZ,SAASC,GAAgBlO,EAAI9V,EAAKikB,GAC9B,IAAI5c,EAAK/W,EAKLyzB,EAJAG,EAAaD,EAAWF,OAC5B,IAAKG,EACD,OAAO,WAAY,EAInBH,EADsB,iBAAfG,EACElkB,EAAIkkB,GAGJA,EAEb,IAAIC,EAAW,EACXC,EAAiB,GACrB,GAAIH,EAAWJ,MAAMQ,SAAS,UACtB1hB,OAAQ,CACR,IAAI2hB,EAAiB,SAAU7f,GAC3B,IAAIid,EAAUjd,EAAMid,QAAS9xB,EAAQ6U,EAAM7U,MACvC20B,EAAQ1D,GAAiBC,MAAMlxB,GAAOgC,KAAI,SAAU4yB,GAAc,OAAOA,EAAW/D,UAAa,IACjGxX,EAAU,CAAC+L,GAAU0M,EAASuC,EAAWpB,mBAC7C/M,EAAG,CACC+N,MAAO,QACPU,MAAOA,EACPtb,QAASA,KAGjBtG,OAAOrC,iBAAiB,QAASgkB,GACjCF,EAAez0B,MAAK,WACZgT,QACAA,OAAOzB,oBAAoB,QAASojB,KAE/C,CAEL,IACI,IAAK,IAAIttB,EAAKlI,EAASm1B,EAAWJ,OAAQ3sB,EAAKF,EAAG7H,QAAS+H,EAAG7H,KAAM6H,EAAKF,EAAG7H,OAAQ,CAChF,IAAIs1B,EAAYvtB,EAAG9H,MACnBg1B,EAAez0B,KAAK8C,EAAQsxB,EAAQU,GACvC,CAJL,CAMA,MAAO9b,GAAStB,EAAM,CAAEzX,MAAO+Y,EAAU,CACjC,QACJ,IACQzR,IAAOA,EAAG7H,OAASiB,EAAK0G,EAAG4R,SAAStY,EAAG3B,KAAKqI,EACnD,CACO,QAAE,GAAIqQ,EAAK,MAAMA,EAAIzX,KAAQ,CACxC,CACD,OAAO,WACHw0B,EAAehgB,SAAQ,SAAU0J,GAAK,OAAOA,QAEjD,SAASrb,EAAQiyB,EAASb,GACtB,IAAI7gB,EAAQnU,KACZ,OAAK61B,EAAQb,GAGN5gB,EAAMyhB,EAASb,GAAO,SAAUjhB,GACnC,OAAO,WAEH,IADA,IAAIP,EAAO,GACF5O,EAAK,EAAGA,EAAKnF,UAAUC,OAAQkF,IACpC4O,EAAK5O,GAAMnF,UAAUmF,GAEzBmP,EAAShU,MAAMoU,EAAOX,GACtB,IACI,IAAIkiB,EAAQ1D,GAAiBC,MAAM,IAAIxb,OAClC1T,KAAI,SAAU4yB,GAAc,OAAOA,EAAW/D,UAAa,IAC3DwC,OAAO,GACRha,EAAU5G,EAAKzQ,KAAI,SAAUzD,GAC7B,OAAO6mB,GAAU7mB,EAAG81B,EAAWpB,iBAClC,MACDsB,EACeF,EAAWH,gBACtBhO,EAAG,CACC+N,MAAOA,EACPU,MAAOA,EACPtb,QAASA,IAGRkb,IAAaF,EAAWH,iBAC7BhO,EAAG,CACC+N,MAAO,OACPU,MAAO,GACPtb,QAAS,CACL+L,GAAU,sDApB1B,CAyBA,MAAOplB,GACHgT,EAAShU,WAAM,EAAQiB,EAAc,CAAC,sBAAuBD,GAAQL,EAAO8S,IAAO,GACtF,EAER,IAtCU,WAAY,CAuC1B,CACJ,CACD,IChHMrC,GAAoD,oBAAX2C,OAAyBA,OAAU,CAAA,EAC5EgiB,GAAY3kB,GAAI2kB,WAAa,CAAEC,UAAW,IAC5BC,GAAClwB,SACHgwB,GAAUC,UA0LrB,IC5LD5kB,QD6LW,IC7LoC2C,OAAW,CAAA,EAAuBA,OAErF3C,GAAY8kB,MAAQ,CAAE7I,OAAQ8I,GAAaC,QAAS,KAAMC,sBAC1DjlB,GAAYklB,mBAAqB,CAAEC,uBF6GR,SAAU1uB,GAAW,MAAQ,CACtD5B,KAFc,kBAGd0X,SAAUyX,GACVvtB,QAASA,EACHzI,OAAOC,OAAO,CAAA,EAAI21B,GAAmBntB,GACrCmtB,GACL"}