{"version":3,"file":"index-1d308f9f.js","sources":["../../../../../../app/node_modules/escape-html/index.js","../../../../../../app/node_modules/interweave/esm/index.js"],"sourcesContent":["/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n// Generated with Packemon: https://packemon.dev\n// Platform: browser, Support: stable, Format: esm\nimport React from 'react';\nimport escapeHtml from 'escape-html';\n\nfunction Element(_ref) {\n var _ref$attributes = _ref.attributes,\n attributes = _ref$attributes === void 0 ? {} : _ref$attributes,\n _ref$children = _ref.children,\n children = _ref$children === void 0 ? null : _ref$children,\n _ref$selfClose = _ref.selfClose,\n selfClose = _ref$selfClose === void 0 ? false : _ref$selfClose,\n Tag = _ref.tagName;\n // @ts-expect-error BUG: https://github.com/Microsoft/TypeScript/issues/28806\n return selfClose ? /*#__PURE__*/React.createElement(Tag, attributes) : /*#__PURE__*/React.createElement(Tag, attributes, children);\n}\n\nvar Filter = /*#__PURE__*/function () {\n function Filter() {}\n\n var _proto = Filter.prototype;\n\n /**\n * Filter and clean an HTML attribute value.\n */\n _proto.attribute = function attribute(name, value) {\n return value;\n }\n /**\n * Filter and clean an HTML node.\n */\n ;\n\n _proto.node = function node(name, _node) {\n return _node;\n };\n\n return Filter;\n}();\n/* eslint-disable no-bitwise, no-magic-numbers, sort-keys */\n// https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories\n\n\nvar TYPE_FLOW = 1;\nvar TYPE_SECTION = 1 << 1;\nvar TYPE_HEADING = 1 << 2;\nvar TYPE_PHRASING = 1 << 3;\nvar TYPE_EMBEDDED = 1 << 4;\nvar TYPE_INTERACTIVE = 1 << 5;\nvar TYPE_PALPABLE = 1 << 6; // https://developer.mozilla.org/en-US/docs/Web/HTML/Element\n\nvar tagConfigs = {\n a: {\n content: TYPE_FLOW | TYPE_PHRASING,\n self: false,\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_INTERACTIVE | TYPE_PALPABLE\n },\n address: {\n invalid: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'address', 'article', 'aside', 'section', 'div', 'header', 'footer'],\n self: false\n },\n audio: {\n children: ['track', 'source']\n },\n br: {\n type: TYPE_FLOW | TYPE_PHRASING,\n void: true\n },\n body: {\n content: TYPE_FLOW | TYPE_SECTION | TYPE_HEADING | TYPE_PHRASING | TYPE_EMBEDDED | TYPE_INTERACTIVE | TYPE_PALPABLE\n },\n button: {\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_INTERACTIVE | TYPE_PALPABLE\n },\n caption: {\n content: TYPE_FLOW,\n parent: ['table']\n },\n col: {\n parent: ['colgroup'],\n void: true\n },\n colgroup: {\n children: ['col'],\n parent: ['table']\n },\n details: {\n children: ['summary'],\n type: TYPE_FLOW | TYPE_INTERACTIVE | TYPE_PALPABLE\n },\n dd: {\n content: TYPE_FLOW,\n parent: ['dl']\n },\n dl: {\n children: ['dt', 'dd'],\n type: TYPE_FLOW\n },\n dt: {\n content: TYPE_FLOW,\n invalid: ['footer', 'header'],\n parent: ['dl']\n },\n figcaption: {\n content: TYPE_FLOW,\n parent: ['figure']\n },\n footer: {\n invalid: ['footer', 'header']\n },\n header: {\n invalid: ['footer', 'header']\n },\n hr: {\n type: TYPE_FLOW,\n void: true\n },\n img: {\n void: true\n },\n li: {\n content: TYPE_FLOW,\n parent: ['ul', 'ol', 'menu']\n },\n main: {\n self: false\n },\n ol: {\n children: ['li'],\n type: TYPE_FLOW\n },\n picture: {\n children: ['source', 'img'],\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_EMBEDDED\n },\n rb: {\n parent: ['ruby', 'rtc']\n },\n rp: {\n parent: ['ruby', 'rtc']\n },\n rt: {\n content: TYPE_PHRASING,\n parent: ['ruby', 'rtc']\n },\n rtc: {\n content: TYPE_PHRASING,\n parent: ['ruby']\n },\n ruby: {\n children: ['rb', 'rp', 'rt', 'rtc']\n },\n source: {\n parent: ['audio', 'video', 'picture'],\n void: true\n },\n summary: {\n content: TYPE_PHRASING,\n parent: ['details']\n },\n table: {\n children: ['caption', 'colgroup', 'thead', 'tbody', 'tfoot', 'tr'],\n type: TYPE_FLOW\n },\n tbody: {\n parent: ['table'],\n children: ['tr']\n },\n td: {\n content: TYPE_FLOW,\n parent: ['tr']\n },\n tfoot: {\n parent: ['table'],\n children: ['tr']\n },\n th: {\n content: TYPE_FLOW,\n parent: ['tr']\n },\n thead: {\n parent: ['table'],\n children: ['tr']\n },\n tr: {\n parent: ['table', 'tbody', 'thead', 'tfoot'],\n children: ['th', 'td']\n },\n track: {\n parent: ['audio', 'video'],\n void: true\n },\n ul: {\n children: ['li'],\n type: TYPE_FLOW\n },\n video: {\n children: ['track', 'source']\n },\n wbr: {\n type: TYPE_FLOW | TYPE_PHRASING,\n void: true\n }\n};\n\nfunction createConfigBuilder(config) {\n return function (tagName) {\n tagConfigs[tagName] = _extends({}, config, tagConfigs[tagName]);\n };\n}\n\n['address', 'main', 'div', 'figure', 'p', 'pre'].forEach(createConfigBuilder({\n content: TYPE_FLOW,\n type: TYPE_FLOW | TYPE_PALPABLE\n}));\n['abbr', 'b', 'bdi', 'bdo', 'cite', 'code', 'data', 'dfn', 'em', 'i', 'kbd', 'mark', 'q', 'ruby', 'samp', 'strong', 'sub', 'sup', 'time', 'u', 'var'].forEach(createConfigBuilder({\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_PALPABLE\n}));\n['p', 'pre'].forEach(createConfigBuilder({\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_PALPABLE\n}));\n['s', 'small', 'span', 'del', 'ins'].forEach(createConfigBuilder({\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_PHRASING\n}));\n['article', 'aside', 'footer', 'header', 'nav', 'section', 'blockquote'].forEach(createConfigBuilder({\n content: TYPE_FLOW,\n type: TYPE_FLOW | TYPE_SECTION | TYPE_PALPABLE\n}));\n['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].forEach(createConfigBuilder({\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_HEADING | TYPE_PALPABLE\n}));\n['audio', 'canvas', 'iframe', 'img', 'video'].forEach(createConfigBuilder({\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_EMBEDDED | TYPE_PALPABLE\n})); // Disable this map from being modified\n\nvar TAGS = Object.freeze(tagConfigs); // Tags that should never be allowed, even if the allow list is disabled\n\nvar BANNED_TAG_LIST = ['applet', 'base', 'body', 'command', 'embed', 'frame', 'frameset', 'head', 'html', 'link', 'meta', 'noscript', 'object', 'script', 'style', 'title'];\nvar ALLOWED_TAG_LIST = Object.keys(TAGS).filter(function (tag) {\n return tag !== 'canvas' && tag !== 'iframe';\n}); // Filters apply to HTML attributes\n\nvar FILTER_ALLOW = 1;\nvar FILTER_DENY = 2;\nvar FILTER_CAST_NUMBER = 3;\nvar FILTER_CAST_BOOL = 4;\nvar FILTER_NO_CAST = 5; // Attributes not listed here will be denied\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\n\nvar ATTRIBUTES = Object.freeze({\n alt: FILTER_ALLOW,\n cite: FILTER_ALLOW,\n class: FILTER_ALLOW,\n colspan: FILTER_CAST_NUMBER,\n controls: FILTER_CAST_BOOL,\n datetime: FILTER_ALLOW,\n default: FILTER_CAST_BOOL,\n disabled: FILTER_CAST_BOOL,\n dir: FILTER_ALLOW,\n height: FILTER_ALLOW,\n href: FILTER_ALLOW,\n id: FILTER_ALLOW,\n kind: FILTER_ALLOW,\n label: FILTER_ALLOW,\n lang: FILTER_ALLOW,\n loading: FILTER_ALLOW,\n loop: FILTER_CAST_BOOL,\n media: FILTER_ALLOW,\n muted: FILTER_CAST_BOOL,\n poster: FILTER_ALLOW,\n role: FILTER_ALLOW,\n rowspan: FILTER_CAST_NUMBER,\n scope: FILTER_ALLOW,\n sizes: FILTER_ALLOW,\n span: FILTER_CAST_NUMBER,\n start: FILTER_CAST_NUMBER,\n style: FILTER_NO_CAST,\n src: FILTER_ALLOW,\n srclang: FILTER_ALLOW,\n srcset: FILTER_ALLOW,\n target: FILTER_ALLOW,\n title: FILTER_ALLOW,\n type: FILTER_ALLOW,\n width: FILTER_ALLOW\n}); // Attributes to camel case for React props\n\nvar ATTRIBUTES_TO_PROPS = Object.freeze({\n class: 'className',\n colspan: 'colSpan',\n datetime: 'dateTime',\n rowspan: 'rowSpan',\n srclang: 'srcLang',\n srcset: 'srcSet'\n});\nvar INVALID_STYLES = /(url|image|image-set)\\(/i;\n\nvar StyleFilter = /*#__PURE__*/function (_Filter) {\n _inheritsLoose(StyleFilter, _Filter);\n\n function StyleFilter() {\n return _Filter.apply(this, arguments) || this;\n }\n\n var _proto2 = StyleFilter.prototype;\n\n _proto2.attribute = function attribute(name, value) {\n if (name === 'style') {\n Object.keys(value).forEach(function (key) {\n if (String(value[key]).match(INVALID_STYLES)) {\n // eslint-disable-next-line no-param-reassign\n delete value[key];\n }\n });\n }\n\n return value;\n };\n\n return StyleFilter;\n}(Filter);\n/* eslint-disable no-bitwise, no-cond-assign, complexity */\n\n\nvar ELEMENT_NODE = 1;\nvar TEXT_NODE = 3;\nvar INVALID_ROOTS = /^<(!doctype|(html|head|body)(\\s|>))/i;\nvar ALLOWED_ATTRS = /^(aria\\x2D|data\\x2D|[0-9A-Z_a-z\\u017F\\u212A]+:)/i;\nvar OPEN_TOKEN = /{{{(\\w+)\\/?}}}/;\n\nfunction createDocument() {\n // Maybe SSR? Just do nothing instead of crashing!\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return undefined;\n }\n\n return document.implementation.createHTMLDocument('Interweave');\n}\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(markup, props, matchers, filters) {\n if (props === void 0) {\n props = {};\n }\n\n if (matchers === void 0) {\n matchers = [];\n }\n\n if (filters === void 0) {\n filters = [];\n }\n\n this.allowed = void 0;\n this.banned = void 0;\n this.blocked = void 0;\n this.container = void 0;\n this.content = [];\n this.props = void 0;\n this.matchers = void 0;\n this.filters = void 0;\n this.keyIndex = void 0;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (markup && typeof markup !== 'string') {\n throw new TypeError('Interweave parser requires a valid string.');\n }\n }\n\n this.props = props;\n this.matchers = matchers;\n this.filters = [].concat(filters, [new StyleFilter()]);\n this.keyIndex = -1;\n this.container = this.createContainer(markup || '');\n this.allowed = new Set(props.allowList || ALLOWED_TAG_LIST);\n this.banned = new Set(BANNED_TAG_LIST);\n this.blocked = new Set(props.blockList);\n }\n /**\n * Loop through and apply all registered attribute filters.\n */\n\n\n var _proto3 = Parser.prototype;\n\n _proto3.applyAttributeFilters = function applyAttributeFilters(name, value) {\n return this.filters.reduce(function (nextValue, filter) {\n return nextValue !== null && typeof filter.attribute === 'function' ? filter.attribute(name, nextValue) : nextValue;\n }, value);\n }\n /**\n * Loop through and apply all registered node filters.\n */\n ;\n\n _proto3.applyNodeFilters = function applyNodeFilters(name, node) {\n // Allow null to be returned\n return this.filters.reduce(function (nextNode, filter) {\n return nextNode !== null && typeof filter.node === 'function' ? filter.node(name, nextNode) : nextNode;\n }, node);\n }\n /**\n * Loop through and apply all registered matchers to the string.\n * If a match is found, create a React element, and build a new array.\n * This array allows React to interpolate and render accordingly.\n */\n ;\n\n _proto3.applyMatchers = function applyMatchers(string, parentConfig) {\n var _this = this;\n\n var elements = {};\n var props = this.props;\n var matchedString = string;\n var elementIndex = 0;\n var parts = null;\n this.matchers.forEach(function (matcher) {\n var tagName = matcher.asTag().toLowerCase();\n\n var config = _this.getTagConfig(tagName); // Skip matchers that have been disabled from props or are not supported\n\n\n if (props[matcher.inverseName] || !_this.isTagAllowed(tagName)) {\n return;\n } // Skip matchers in which the child cannot be rendered\n\n\n if (!_this.canRenderChild(parentConfig, config)) {\n return;\n } // Continuously trigger the matcher until no matches are found\n\n\n var tokenizedString = '';\n\n while (matchedString && (parts = matcher.match(matchedString))) {\n var _parts = parts,\n index = _parts.index,\n length = _parts.length,\n _match = _parts.match,\n valid = _parts.valid,\n isVoid = _parts.void,\n partProps = _objectWithoutPropertiesLoose(_parts, [\"index\", \"length\", \"match\", \"valid\", \"void\"]);\n\n var tokenName = matcher.propName + elementIndex; // Piece together a new string with interpolated tokens\n\n if (index > 0) {\n tokenizedString += matchedString.slice(0, index);\n }\n\n if (valid) {\n tokenizedString += isVoid ? \"{{{\" + tokenName + \"/}}}\" : \"{{{\" + tokenName + \"}}}\" + _match + \"{{{/\" + tokenName + \"}}}\";\n _this.keyIndex += 1;\n elementIndex += 1;\n elements[tokenName] = {\n children: _match,\n matcher: matcher,\n props: _extends({}, props, partProps, {\n key: _this.keyIndex\n })\n };\n } else {\n tokenizedString += _match;\n } // Reduce the string being matched against,\n // otherwise we end up in an infinite loop!\n\n\n if (matcher.greedy) {\n matchedString = tokenizedString + matchedString.slice(index + length);\n tokenizedString = '';\n } else {\n // eslint-disable-next-line unicorn/explicit-length-check\n matchedString = matchedString.slice(index + (length || _match.length));\n }\n } // Update the matched string with the tokenized string,\n // so that the next matcher can apply to it.\n\n\n if (!matcher.greedy) {\n matchedString = tokenizedString + matchedString;\n }\n });\n\n if (elementIndex === 0) {\n return string;\n }\n\n return this.replaceTokens(matchedString, elements);\n }\n /**\n * Determine whether the child can be rendered within the parent.\n */\n ;\n\n _proto3.canRenderChild = function canRenderChild(parentConfig, childConfig) {\n if (!parentConfig.tagName || !childConfig.tagName) {\n return false;\n } // No children\n\n\n if (parentConfig.void) {\n return false;\n } // Valid children\n\n\n if (parentConfig.children.length > 0) {\n return parentConfig.children.includes(childConfig.tagName);\n }\n\n if (parentConfig.invalid.length > 0 && parentConfig.invalid.includes(childConfig.tagName)) {\n return false;\n } // Valid parent\n\n\n if (childConfig.parent.length > 0) {\n return childConfig.parent.includes(parentConfig.tagName);\n } // Self nesting\n\n\n if (!parentConfig.self && parentConfig.tagName === childConfig.tagName) {\n return false;\n } // Content category type\n\n\n return Boolean(parentConfig && parentConfig.content & childConfig.type);\n }\n /**\n * Convert line breaks in a string to HTML `
` tags.\n * If the string contains HTML, we should not convert anything,\n * as line breaks should be handled by `
`s in the markup itself.\n */\n ;\n\n _proto3.convertLineBreaks = function convertLineBreaks(markup) {\n var _this$props = this.props,\n noHtml = _this$props.noHtml,\n disableLineBreaks = _this$props.disableLineBreaks;\n\n if (noHtml || disableLineBreaks || markup.match(/<((?:\\/[ a-z]+)|(?:[ a-z]+\\/))>/gi)) {\n return markup;\n } // Replace carriage returns\n\n\n var nextMarkup = markup.replace(/\\r\\n/g, '\\n'); // Replace long line feeds\n\n nextMarkup = nextMarkup.replace(/\\n{3,}/g, '\\n\\n\\n'); // Replace line feeds with `
`s\n\n nextMarkup = nextMarkup.replace(/\\n/g, '
');\n return nextMarkup;\n }\n /**\n * Create a detached HTML document that allows for easy HTML\n * parsing while not triggering scripts or loading external\n * resources.\n */\n ;\n\n _proto3.createContainer = function createContainer(markup) {\n var factory = typeof global !== 'undefined' && global.INTERWEAVE_SSR_POLYFILL || createDocument;\n var doc = factory();\n\n if (!doc) {\n return undefined;\n }\n\n var tag = this.props.containerTagName || 'body';\n var el = tag === 'body' || tag === 'fragment' ? doc.body : doc.createElement(tag);\n\n if (markup.match(INVALID_ROOTS)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error('HTML documents as Interweave content are not supported.');\n }\n } else {\n el.innerHTML = this.convertLineBreaks(this.props.escapeHtml ? escapeHtml(markup) : markup);\n }\n\n return el;\n }\n /**\n * Convert an elements attribute map to an object map.\n * Returns null if no attributes are defined.\n */\n ;\n\n _proto3.extractAttributes = function extractAttributes(node) {\n var _this2 = this;\n\n var allowAttributes = this.props.allowAttributes;\n var attributes = {};\n var count = 0;\n\n if (node.nodeType !== ELEMENT_NODE || !node.attributes) {\n return null;\n }\n\n Array.from(node.attributes).forEach(function (attr) {\n var name = attr.name,\n value = attr.value;\n var newName = name.toLowerCase();\n var filter = ATTRIBUTES[newName] || ATTRIBUTES[name]; // Verify the node is safe from attacks\n\n if (!_this2.isSafe(node)) {\n return;\n } // Do not allow denied attributes, excluding ARIA attributes\n // Do not allow events or XSS injections\n\n\n if (!newName.match(ALLOWED_ATTRS)) {\n if (!allowAttributes && (!filter || filter === FILTER_DENY) || newName.startsWith('on') || value.replace(/(\\s|\\0|([9AD]);)/, '').match(/(javascript|vbscript|livescript|xss):/i)) {\n return;\n }\n } // Apply attribute filters\n\n\n var newValue = newName === 'style' ? _this2.extractStyleAttribute(node) : value; // Cast to boolean\n\n if (filter === FILTER_CAST_BOOL) {\n newValue = true; // Cast to number\n } else if (filter === FILTER_CAST_NUMBER) {\n newValue = Number.parseFloat(String(newValue)); // Cast to string\n } else if (filter !== FILTER_NO_CAST) {\n newValue = String(newValue);\n }\n\n attributes[ATTRIBUTES_TO_PROPS[newName] || newName] = _this2.applyAttributeFilters(newName, newValue);\n count += 1;\n });\n\n if (count === 0) {\n return null;\n }\n\n return attributes;\n }\n /**\n * Extract the style attribute as an object and remove values that allow for attack vectors.\n */\n ;\n\n _proto3.extractStyleAttribute = function extractStyleAttribute(node) {\n var styles = {};\n Array.from(node.style).forEach(function (key) {\n var value = node.style[key];\n\n if (typeof value === 'string' || typeof value === 'number') {\n styles[key.replace(/-([a-z])/g, function (match, letter) {\n return letter.toUpperCase();\n })] = value;\n }\n });\n return styles;\n }\n /**\n * Return configuration for a specific tag.\n */\n ;\n\n _proto3.getTagConfig = function getTagConfig(tagName) {\n var common = {\n children: [],\n content: 0,\n invalid: [],\n parent: [],\n self: true,\n tagName: '',\n type: 0,\n void: false\n }; // Only spread when a tag config exists,\n // otherwise we use the empty `tagName`\n // for parent config inheritance.\n\n if (TAGS[tagName]) {\n return _extends({}, common, TAGS[tagName], {\n tagName: tagName\n });\n }\n\n return common;\n }\n /**\n * Verify that a node is safe from XSS and injection attacks.\n */\n ;\n\n _proto3.isSafe = function isSafe(node) {\n // URLs should only support HTTP, email and phone numbers\n if (typeof HTMLAnchorElement !== 'undefined' && node instanceof HTMLAnchorElement) {\n var href = node.getAttribute('href'); // Fragment protocols start with about:\n // So let's just allow them\n\n if (href && href.charAt(0) === '#') {\n return true;\n }\n\n var protocol = node.protocol.toLowerCase();\n return protocol === ':' || protocol === 'http:' || protocol === 'https:' || protocol === 'mailto:' || protocol === 'tel:';\n }\n\n return true;\n }\n /**\n * Verify that an HTML tag is allowed to render.\n */\n ;\n\n _proto3.isTagAllowed = function isTagAllowed(tagName) {\n if (this.banned.has(tagName) || this.blocked.has(tagName)) {\n return false;\n }\n\n return this.props.allowElements || this.allowed.has(tagName);\n }\n /**\n * Parse the markup by injecting it into a detached document,\n * while looping over all child nodes and generating an\n * array to interpolate into JSX.\n */\n ;\n\n _proto3.parse = function parse() {\n if (!this.container) {\n return [];\n }\n\n return this.parseNode(this.container, this.getTagConfig(this.container.nodeName.toLowerCase()));\n }\n /**\n * Loop over the nodes children and generate a\n * list of text nodes and React elements.\n */\n ;\n\n _proto3.parseNode = function parseNode(parentNode, parentConfig) {\n var _this3 = this;\n\n var _this$props2 = this.props,\n noHtml = _this$props2.noHtml,\n noHtmlExceptMatchers = _this$props2.noHtmlExceptMatchers,\n allowElements = _this$props2.allowElements,\n transform = _this$props2.transform;\n var content = [];\n var mergedText = '';\n Array.from(parentNode.childNodes).forEach(function (node) {\n // Create React elements from HTML elements\n if (node.nodeType === ELEMENT_NODE) {\n var tagName = node.nodeName.toLowerCase();\n\n var config = _this3.getTagConfig(tagName); // Persist any previous text\n\n\n if (mergedText) {\n content.push(mergedText);\n mergedText = '';\n } // Apply node filters first\n\n\n var nextNode = _this3.applyNodeFilters(tagName, node);\n\n if (!nextNode) {\n return;\n } // Apply transformation second\n\n\n var children;\n\n if (transform) {\n _this3.keyIndex += 1;\n var key = _this3.keyIndex; // Must occur after key is set\n\n children = _this3.parseNode(nextNode, config);\n var transformed = transform(nextNode, children, config);\n\n if (transformed === null) {\n return;\n } else if (typeof transformed !== 'undefined') {\n content.push( /*#__PURE__*/React.cloneElement(transformed, {\n key: key\n }));\n return;\n } // Reset as we're not using the transformation\n\n\n _this3.keyIndex = key - 1;\n } // Never allow these tags (except via a transformer)\n\n\n if (_this3.banned.has(tagName)) {\n return;\n } // Only render when the following criteria is met:\n // - HTML has not been disabled\n // - Tag is allowed\n // - Child is valid within the parent\n\n\n if (!(noHtml || noHtmlExceptMatchers && tagName !== 'br') && _this3.isTagAllowed(tagName) && (allowElements || _this3.canRenderChild(parentConfig, config))) {\n _this3.keyIndex += 1; // Build the props as it makes it easier to test\n\n var attributes = _this3.extractAttributes(nextNode);\n\n var elementProps = {\n tagName: tagName\n };\n\n if (attributes) {\n elementProps.attributes = attributes;\n }\n\n if (config.void) {\n elementProps.selfClose = config.void;\n }\n\n content.push( /*#__PURE__*/React.createElement(Element, _extends({}, elementProps, {\n key: _this3.keyIndex\n }), children || _this3.parseNode(nextNode, config))); // Render the children of the current element only.\n // Important: If the current element is not allowed,\n // use the parent element for the next scope.\n } else {\n content = content.concat(_this3.parseNode(nextNode, config.tagName ? config : parentConfig));\n } // Apply matchers if a text node\n\n } else if (node.nodeType === TEXT_NODE) {\n var text = noHtml && !noHtmlExceptMatchers ? node.textContent : _this3.applyMatchers(node.textContent || '', parentConfig);\n\n if (Array.isArray(text)) {\n content = content.concat(text);\n } else {\n mergedText += text;\n }\n }\n });\n\n if (mergedText) {\n content.push(mergedText);\n }\n\n return content;\n }\n /**\n * Deconstruct the string into an array, by replacing custom tokens with React elements,\n * so that React can render it correctly.\n */\n ;\n\n _proto3.replaceTokens = function replaceTokens(tokenizedString, elements) {\n if (!tokenizedString.includes('{{{')) {\n return tokenizedString;\n }\n\n var nodes = [];\n var text = tokenizedString;\n var open = null; // Find an open token tag\n\n while (open = text.match(OPEN_TOKEN)) {\n var _open = open,\n _match2 = _open[0],\n tokenName = _open[1];\n var startIndex = open.index;\n\n var isVoid = _match2.includes('/');\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!elements[tokenName]) {\n throw new Error(\"Token \\\"\" + tokenName + \"\\\" found but no matching element to replace with.\");\n }\n } // Extract the previous non-token text\n\n\n if (startIndex > 0) {\n nodes.push(text.slice(0, startIndex)); // Reduce text so that the closing tag will be found after the opening\n\n text = text.slice(startIndex);\n }\n\n var _elements$tokenName = elements[tokenName],\n children = _elements$tokenName.children,\n matcher = _elements$tokenName.matcher,\n elementProps = _elements$tokenName.props;\n var endIndex = void 0; // Use tag as-is if void\n\n if (isVoid) {\n endIndex = _match2.length;\n nodes.push(matcher.createElement(children, elementProps)); // Find the closing tag if not void\n } else {\n var close = text.match(new RegExp(\"{{{/\" + tokenName + \"}}}\"));\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!close) {\n throw new Error(\"Closing token missing for interpolated element \\\"\" + tokenName + \"\\\".\");\n }\n }\n\n endIndex = close.index + close[0].length;\n nodes.push(matcher.createElement(this.replaceTokens(text.slice(_match2.length, close.index), elements), elementProps));\n } // Reduce text for the next interation\n\n\n text = text.slice(endIndex);\n } // Extra the remaining text\n\n\n if (text.length > 0) {\n nodes.push(text);\n } // Reduce to a string if possible\n\n\n if (nodes.length === 0) {\n return '';\n } else if (nodes.length === 1 && typeof nodes[0] === 'string') {\n return nodes[0];\n }\n\n return nodes;\n };\n\n return Parser;\n}();\n/* eslint-disable react/jsx-fragments */\n\n\nfunction Markup(props) {\n var attributes = props.attributes,\n containerTagName = props.containerTagName,\n content = props.content,\n emptyContent = props.emptyContent,\n parsedContent = props.parsedContent,\n tagName = props.tagName;\n var tag = containerTagName || tagName || 'div';\n var noWrap = tag === 'fragment' ? true : props.noWrap;\n var mainContent;\n\n if (parsedContent) {\n mainContent = parsedContent;\n } else {\n var markup = new Parser(content || '', props).parse();\n\n if (markup.length > 0) {\n mainContent = markup;\n }\n }\n\n if (!mainContent) {\n mainContent = emptyContent;\n }\n\n if (noWrap) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/React.createElement(React.Fragment, null, mainContent);\n }\n\n return /*#__PURE__*/React.createElement(Element, {\n attributes: attributes,\n tagName: tag\n }, mainContent);\n}\n\nfunction Interweave(props) {\n var attributes = props.attributes,\n _props$content = props.content,\n content = _props$content === void 0 ? '' : _props$content,\n _props$disableFilters = props.disableFilters,\n disableFilters = _props$disableFilters === void 0 ? false : _props$disableFilters,\n _props$disableMatcher = props.disableMatchers,\n disableMatchers = _props$disableMatcher === void 0 ? false : _props$disableMatcher,\n _props$emptyContent = props.emptyContent,\n emptyContent = _props$emptyContent === void 0 ? null : _props$emptyContent,\n _props$filters = props.filters,\n filters = _props$filters === void 0 ? [] : _props$filters,\n _props$matchers = props.matchers,\n matchers = _props$matchers === void 0 ? [] : _props$matchers,\n _props$onAfterParse = props.onAfterParse,\n onAfterParse = _props$onAfterParse === void 0 ? null : _props$onAfterParse,\n _props$onBeforeParse = props.onBeforeParse,\n onBeforeParse = _props$onBeforeParse === void 0 ? null : _props$onBeforeParse,\n _props$tagName = props.tagName,\n tagName = _props$tagName === void 0 ? 'span' : _props$tagName,\n _props$noWrap = props.noWrap,\n noWrap = _props$noWrap === void 0 ? false : _props$noWrap,\n parserProps = _objectWithoutPropertiesLoose(props, [\"attributes\", \"content\", \"disableFilters\", \"disableMatchers\", \"emptyContent\", \"filters\", \"matchers\", \"onAfterParse\", \"onBeforeParse\", \"tagName\", \"noWrap\"]);\n\n var allMatchers = disableMatchers ? [] : matchers;\n var allFilters = disableFilters ? [] : filters;\n var beforeCallbacks = onBeforeParse ? [onBeforeParse] : [];\n var afterCallbacks = onAfterParse ? [onAfterParse] : []; // Inherit callbacks from matchers\n\n allMatchers.forEach(function (matcher) {\n if (matcher.onBeforeParse) {\n beforeCallbacks.push(matcher.onBeforeParse.bind(matcher));\n }\n\n if (matcher.onAfterParse) {\n afterCallbacks.push(matcher.onAfterParse.bind(matcher));\n }\n }); // Trigger before callbacks\n\n var markup = beforeCallbacks.reduce(function (string, callback) {\n var nextString = callback(string, props);\n\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof nextString !== 'string') {\n throw new TypeError('Interweave `onBeforeParse` must return a valid HTML string.');\n }\n }\n\n return nextString;\n }, content || ''); // Parse the markup\n\n var parser = new Parser(markup, parserProps, allMatchers, allFilters); // Trigger after callbacks\n\n var nodes = afterCallbacks.reduce(function (parserNodes, callback) {\n var nextNodes = callback(parserNodes, props);\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!Array.isArray(nextNodes)) {\n throw new TypeError('Interweave `onAfterParse` must return an array of strings and React elements.');\n }\n }\n\n return nextNodes;\n }, parser.parse());\n return /*#__PURE__*/React.createElement(Markup, {\n attributes: attributes,\n containerTagName: props.containerTagName,\n emptyContent: emptyContent,\n tagName: tagName,\n noWrap: noWrap,\n parsedContent: nodes.length === 0 ? undefined : nodes\n });\n}\n/**\n * Trigger the actual pattern match and package the matched\n * response through a callback.\n */\n\n\nfunction match(string, pattern, callback, isVoid) {\n if (isVoid === void 0) {\n isVoid = false;\n }\n\n var matches = string.match(pattern instanceof RegExp ? pattern : new RegExp(pattern, 'i'));\n\n if (!matches) {\n return null;\n }\n\n return _extends({\n match: matches[0],\n void: isVoid\n }, callback(matches), {\n index: matches.index,\n length: matches[0].length,\n valid: true\n });\n}\n\nvar Matcher = /*#__PURE__*/function () {\n function Matcher(name, options, factory) {\n this.greedy = false;\n this.options = void 0;\n this.propName = void 0;\n this.inverseName = void 0;\n this.factory = void 0;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!name || name.toLowerCase() === 'html') {\n throw new Error(\"The matcher name \\\"\" + name + \"\\\" is not allowed.\");\n }\n } // @ts-expect-error\n\n\n this.options = _extends({}, options);\n this.propName = name;\n this.inverseName = \"no\" + (name.charAt(0).toUpperCase() + name.slice(1));\n this.factory = factory || null;\n }\n /**\n * Attempts to create a React element using a custom user provided factory,\n * or the default matcher factory.\n */\n\n\n var _proto4 = Matcher.prototype;\n\n _proto4.createElement = function createElement(children, props) {\n var element = this.factory ? /*#__PURE__*/React.createElement(this.factory, props, children) : this.replaceWith(children, props);\n\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof element !== 'string' && ! /*#__PURE__*/React.isValidElement(element)) {\n throw new Error(\"Invalid React element created from \" + this.constructor.name + \".\");\n }\n }\n\n return element;\n }\n /**\n * Trigger the actual pattern match and package the matched\n * response through a callback.\n */\n ;\n\n _proto4.doMatch = function doMatch(string, pattern, callback, isVoid) {\n if (isVoid === void 0) {\n isVoid = false;\n }\n\n return match(string, pattern, callback, isVoid);\n }\n /**\n * Callback triggered before parsing.\n */\n ;\n\n _proto4.onBeforeParse = function onBeforeParse(content, props) {\n return content;\n }\n /**\n * Callback triggered after parsing.\n */\n ;\n\n _proto4.onAfterParse = function onAfterParse(content, props) {\n return content;\n }\n /**\n * Replace the match with a React element based on the matched token and optional props.\n */\n ;\n\n return Matcher;\n}();\n/**\n * @copyright 2016-2019, Miles Johnson\n * @license https://opensource.org/licenses/MIT\n */\n\n\nexport default Interweave;\nexport { ALLOWED_TAG_LIST, ATTRIBUTES, ATTRIBUTES_TO_PROPS, BANNED_TAG_LIST, Element, FILTER_ALLOW, FILTER_CAST_BOOL, FILTER_CAST_NUMBER, FILTER_DENY, FILTER_NO_CAST, Filter, Markup, Matcher, Parser, TAGS, TYPE_EMBEDDED, TYPE_FLOW, TYPE_HEADING, TYPE_INTERACTIVE, TYPE_PALPABLE, TYPE_PHRASING, TYPE_SECTION, match };\n//# sourceMappingURL=index.js.map\n"],"names":["matchHtmlRegExp","escapeHtml_1","escapeHtml","string","str","match","escape","html","index","lastIndex","_objectWithoutPropertiesLoose","source","excluded","target","sourceKeys","key","i","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","_extends","Element","_ref","_ref$attributes","attributes","_ref$children","children","_ref$selfClose","selfClose","Tag","React","Filter","_proto","name","value","_node","TYPE_FLOW","TYPE_SECTION","TYPE_HEADING","TYPE_PHRASING","TYPE_EMBEDDED","TYPE_INTERACTIVE","TYPE_PALPABLE","tagConfigs","createConfigBuilder","config","tagName","TAGS","BANNED_TAG_LIST","ALLOWED_TAG_LIST","tag","FILTER_ALLOW","FILTER_DENY","FILTER_CAST_NUMBER","FILTER_CAST_BOOL","FILTER_NO_CAST","ATTRIBUTES","ATTRIBUTES_TO_PROPS","INVALID_STYLES","StyleFilter","_Filter","_proto2","ELEMENT_NODE","TEXT_NODE","INVALID_ROOTS","ALLOWED_ATTRS","OPEN_TOKEN","createDocument","Parser","markup","props","matchers","filters","_proto3","nextValue","filter","node","nextNode","parentConfig","_this","elements","matchedString","elementIndex","parts","matcher","tokenizedString","_parts","length","_match","valid","isVoid","partProps","tokenName","childConfig","_this$props","noHtml","disableLineBreaks","nextMarkup","factory","doc","el","_this2","allowAttributes","count","attr","newName","newValue","styles","letter","common","href","protocol","parentNode","_this3","_this$props2","noHtmlExceptMatchers","allowElements","transform","content","mergedText","transformed","elementProps","text","nodes","open","_open","_match2","startIndex","_elements$tokenName","endIndex","close","Markup","containerTagName","emptyContent","parsedContent","noWrap","mainContent","Interweave","_props$content","_props$disableFilters","disableFilters","_props$disableMatcher","disableMatchers","_props$emptyContent","_props$filters","_props$matchers","_props$onAfterParse","onAfterParse","_props$onBeforeParse","onBeforeParse","_props$tagName","_props$noWrap","parserProps","allMatchers","allFilters","beforeCallbacks","afterCallbacks","callback","nextString","parser","parserNodes","nextNodes","pattern","matches","Matcher","options","_proto4","element"],"mappings":";;;;;;GAeA,IAAIA,GAAkB,UAOtBC,GAAiBC,GAUjB,SAASA,GAAWC,EAAQ,CAC1B,IAAIC,EAAM,GAAKD,EACXE,EAAQL,GAAgB,KAAKI,CAAG,EAEpC,GAAI,CAACC,EACH,OAAOD,EAGT,IAAIE,EACAC,EAAO,GACPC,EAAQ,EACRC,EAAY,EAEhB,IAAKD,EAAQH,EAAM,MAAOG,EAAQJ,EAAI,OAAQI,IAAS,CACrD,OAAQJ,EAAI,WAAWI,CAAK,EAAC,CAC3B,IAAK,IACHF,EAAS,SACT,MACF,IAAK,IACHA,EAAS,QACT,MACF,IAAK,IACHA,EAAS,QACT,MACF,IAAK,IACHA,EAAS,OACT,MACF,IAAK,IACHA,EAAS,OACT,MACF,QACE,QACH,CAEGG,IAAcD,IAChBD,GAAQH,EAAI,UAAUK,EAAWD,CAAK,GAGxCC,EAAYD,EAAQ,EACpBD,GAAQD,CACT,CAED,OAAOG,IAAcD,EACjBD,EAAOH,EAAI,UAAUK,EAAWD,CAAK,EACrCD,CACN,iBC7EA,SAASG,EAA8BC,EAAQC,EAAU,CAAE,GAAID,GAAU,KAAM,MAAO,CAAE,EAAE,IAAIE,EAAS,CAAE,EAAMC,EAAa,OAAO,KAAKH,CAAM,EAAOI,EAAKC,EAAG,IAAKA,EAAI,EAAGA,EAAIF,EAAW,OAAQE,IAAOD,EAAMD,EAAWE,CAAC,EAAO,EAAAJ,EAAS,QAAQG,CAAG,GAAK,KAAaF,EAAOE,CAAG,EAAIJ,EAAOI,CAAG,GAAK,OAAOF,CAAS,CAEnT,SAASI,GAAeC,EAAUC,EAAY,CAAED,EAAS,UAAY,OAAO,OAAOC,EAAW,SAAS,EAAGD,EAAS,UAAU,YAAcA,EAAUE,EAAgBF,EAAUC,CAAU,CAAI,CAE7L,SAASC,EAAgBC,EAAGC,EAAG,CAAE,OAAAF,EAAkB,OAAO,gBAAkB,SAAyBC,EAAGC,EAAG,CAAE,OAAAD,EAAE,UAAYC,EAAUD,CAAE,EAAWD,EAAgBC,EAAGC,CAAC,CAAI,CAE1K,SAASC,GAAW,CAAE,OAAAA,EAAW,OAAO,QAAU,SAAUV,EAAQ,CAAE,QAASG,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIL,EAAS,UAAUK,CAAC,EAAG,QAASD,KAAOJ,EAAc,OAAO,UAAU,eAAe,KAAKA,EAAQI,CAAG,IAAKF,EAAOE,CAAG,EAAIJ,EAAOI,CAAG,EAAQ,CAAC,OAAOF,GAAkBU,EAAS,MAAM,KAAM,SAAS,CAAI,CAO7T,SAASC,EAAQC,EAAM,CACrB,IAAIC,EAAkBD,EAAK,WACvBE,EAAaD,IAAoB,OAAS,CAAE,EAAGA,EAC/CE,EAAgBH,EAAK,SACrBI,EAAWD,IAAkB,OAAS,KAAOA,EAC7CE,EAAiBL,EAAK,UACtBM,EAAYD,IAAmB,OAAS,GAAQA,EAChDE,EAAMP,EAAK,QAEf,OAAOM,EAAyBE,EAAM,cAAcD,EAAKL,CAAU,EAAiBM,EAAM,cAAcD,EAAKL,EAAYE,CAAQ,CACnI,CAEA,IAAIK,GAAsB,UAAY,CACpC,SAASA,GAAS,CAAE,CAEpB,IAAIC,EAASD,EAAO,UAKpB,OAAAC,EAAO,UAAY,SAAmBC,EAAMC,EAAO,CACjD,OAAOA,CACR,EAMDF,EAAO,KAAO,SAAcC,EAAME,EAAO,CACvC,OAAOA,CACX,EAESJ,CACT,IAKIK,EAAY,EACZC,EAAe,EACfC,EAAe,EACfC,EAAgB,EAChBC,EAAgB,GAChBC,EAAmB,GACnBC,EAAgB,GAEhBC,EAAa,CACf,EAAG,CACD,QAASP,EAAYG,EACrB,KAAM,GACN,KAAMH,EAAYG,EAAgBE,EAAmBC,CACtD,EACD,QAAS,CACP,QAAS,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,UAAW,UAAW,QAAS,UAAW,MAAO,SAAU,QAAQ,EACjH,KAAM,EACP,EACD,MAAO,CACL,SAAU,CAAC,QAAS,QAAQ,CAC7B,EACD,GAAI,CACF,KAAMN,EAAYG,EAClB,KAAM,EACP,EACD,KAAM,CACJ,QAASH,EAAYC,EAAeC,EAAeC,EAAgBC,EAAgBC,EAAmBC,CACvG,EACD,OAAQ,CACN,QAASH,EACT,KAAMH,EAAYG,EAAgBE,EAAmBC,CACtD,EACD,QAAS,CACP,QAASN,EACT,OAAQ,CAAC,OAAO,CACjB,EACD,IAAK,CACH,OAAQ,CAAC,UAAU,EACnB,KAAM,EACP,EACD,SAAU,CACR,SAAU,CAAC,KAAK,EAChB,OAAQ,CAAC,OAAO,CACjB,EACD,QAAS,CACP,SAAU,CAAC,SAAS,EACpB,KAAMA,EAAYK,EAAmBC,CACtC,EACD,GAAI,CACF,QAASN,EACT,OAAQ,CAAC,IAAI,CACd,EACD,GAAI,CACF,SAAU,CAAC,KAAM,IAAI,EACrB,KAAMA,CACP,EACD,GAAI,CACF,QAASA,EACT,QAAS,CAAC,SAAU,QAAQ,EAC5B,OAAQ,CAAC,IAAI,CACd,EACD,WAAY,CACV,QAASA,EACT,OAAQ,CAAC,QAAQ,CAClB,EACD,OAAQ,CACN,QAAS,CAAC,SAAU,QAAQ,CAC7B,EACD,OAAQ,CACN,QAAS,CAAC,SAAU,QAAQ,CAC7B,EACD,GAAI,CACF,KAAMA,EACN,KAAM,EACP,EACD,IAAK,CACH,KAAM,EACP,EACD,GAAI,CACF,QAASA,EACT,OAAQ,CAAC,KAAM,KAAM,MAAM,CAC5B,EACD,KAAM,CACJ,KAAM,EACP,EACD,GAAI,CACF,SAAU,CAAC,IAAI,EACf,KAAMA,CACP,EACD,QAAS,CACP,SAAU,CAAC,SAAU,KAAK,EAC1B,KAAMA,EAAYG,EAAgBC,CACnC,EACD,GAAI,CACF,OAAQ,CAAC,OAAQ,KAAK,CACvB,EACD,GAAI,CACF,OAAQ,CAAC,OAAQ,KAAK,CACvB,EACD,GAAI,CACF,QAASD,EACT,OAAQ,CAAC,OAAQ,KAAK,CACvB,EACD,IAAK,CACH,QAASA,EACT,OAAQ,CAAC,MAAM,CAChB,EACD,KAAM,CACJ,SAAU,CAAC,KAAM,KAAM,KAAM,KAAK,CACnC,EACD,OAAQ,CACN,OAAQ,CAAC,QAAS,QAAS,SAAS,EACpC,KAAM,EACP,EACD,QAAS,CACP,QAASA,EACT,OAAQ,CAAC,SAAS,CACnB,EACD,MAAO,CACL,SAAU,CAAC,UAAW,WAAY,QAAS,QAAS,QAAS,IAAI,EACjE,KAAMH,CACP,EACD,MAAO,CACL,OAAQ,CAAC,OAAO,EAChB,SAAU,CAAC,IAAI,CAChB,EACD,GAAI,CACF,QAASA,EACT,OAAQ,CAAC,IAAI,CACd,EACD,MAAO,CACL,OAAQ,CAAC,OAAO,EAChB,SAAU,CAAC,IAAI,CAChB,EACD,GAAI,CACF,QAASA,EACT,OAAQ,CAAC,IAAI,CACd,EACD,MAAO,CACL,OAAQ,CAAC,OAAO,EAChB,SAAU,CAAC,IAAI,CAChB,EACD,GAAI,CACF,OAAQ,CAAC,QAAS,QAAS,QAAS,OAAO,EAC3C,SAAU,CAAC,KAAM,IAAI,CACtB,EACD,MAAO,CACL,OAAQ,CAAC,QAAS,OAAO,EACzB,KAAM,EACP,EACD,GAAI,CACF,SAAU,CAAC,IAAI,EACf,KAAMA,CACP,EACD,MAAO,CACL,SAAU,CAAC,QAAS,QAAQ,CAC7B,EACD,IAAK,CACH,KAAMA,EAAYG,EAClB,KAAM,EACP,CACH,EAEA,SAASK,EAAoBC,EAAQ,CACnC,OAAO,SAAUC,EAAS,CACxBH,EAAWG,CAAO,EAAI1B,EAAS,CAAA,EAAIyB,EAAQF,EAAWG,CAAO,CAAC,CAClE,CACA,CAEA,CAAC,UAAW,OAAQ,MAAO,SAAU,IAAK,KAAK,EAAE,QAAQF,EAAoB,CAC3E,QAASR,EACT,KAAMA,EAAYM,CACpB,CAAC,CAAC,EACF,CAAC,OAAQ,IAAK,MAAO,MAAO,OAAQ,OAAQ,OAAQ,MAAO,KAAM,IAAK,MAAO,OAAQ,IAAK,OAAQ,OAAQ,SAAU,MAAO,MAAO,OAAQ,IAAK,KAAK,EAAE,QAAQE,EAAoB,CAChL,QAASL,EACT,KAAMH,EAAYG,EAAgBG,CACpC,CAAC,CAAC,EACF,CAAC,IAAK,KAAK,EAAE,QAAQE,EAAoB,CACvC,QAASL,EACT,KAAMH,EAAYM,CACpB,CAAC,CAAC,EACF,CAAC,IAAK,QAAS,OAAQ,MAAO,KAAK,EAAE,QAAQE,EAAoB,CAC/D,QAASL,EACT,KAAMH,EAAYG,CACpB,CAAC,CAAC,EACF,CAAC,UAAW,QAAS,SAAU,SAAU,MAAO,UAAW,YAAY,EAAE,QAAQK,EAAoB,CACnG,QAASR,EACT,KAAMA,EAAYC,EAAeK,CACnC,CAAC,CAAC,EACF,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EAAE,QAAQE,EAAoB,CAC/D,QAASL,EACT,KAAMH,EAAYE,EAAeI,CACnC,CAAC,CAAC,EACF,CAAC,QAAS,SAAU,SAAU,MAAO,OAAO,EAAE,QAAQE,EAAoB,CACxE,KAAMR,EAAYG,EAAgBC,EAAgBE,CACpD,CAAC,CAAC,EAEF,IAAIK,EAAO,OAAO,OAAOJ,CAAU,EAE/BK,GAAkB,CAAC,SAAU,OAAQ,OAAQ,UAAW,QAAS,QAAS,WAAY,OAAQ,OAAQ,OAAQ,OAAQ,WAAY,SAAU,SAAU,QAAS,OAAO,EACtKC,GAAmB,OAAO,KAAKF,CAAI,EAAE,OAAO,SAAUG,EAAK,CAC7D,OAAOA,IAAQ,UAAYA,IAAQ,QACrC,CAAC,EAEGC,EAAe,EACfC,GAAc,EACdC,EAAqB,EACrBC,EAAmB,EACnBC,EAAiB,EAGjBC,EAAa,OAAO,OAAO,CAC7B,IAAKL,EACL,KAAMA,EACN,MAAOA,EACP,QAASE,EACT,SAAUC,EACV,SAAUH,EACV,QAASG,EACT,SAAUA,EACV,IAAKH,EACL,OAAQA,EACR,KAAMA,EACN,GAAIA,EACJ,KAAMA,EACN,MAAOA,EACP,KAAMA,EACN,QAASA,EACT,KAAMG,EACN,MAAOH,EACP,MAAOG,EACP,OAAQH,EACR,KAAMA,EACN,QAASE,EACT,MAAOF,EACP,MAAOA,EACP,KAAME,EACN,MAAOA,EACP,MAAOE,EACP,IAAKJ,EACL,QAASA,EACT,OAAQA,EACR,OAAQA,EACR,MAAOA,EACP,KAAMA,EACN,MAAOA,CACT,CAAC,EAEGM,GAAsB,OAAO,OAAO,CACtC,MAAO,YACP,QAAS,UACT,SAAU,WACV,QAAS,UACT,QAAS,UACT,OAAQ,QACV,CAAC,EACGC,GAAiB,2BAEjBC,GAA2B,SAAUC,EAAS,CAChD9C,GAAe6C,EAAaC,CAAO,EAEnC,SAASD,GAAc,CACrB,OAAOC,EAAQ,MAAM,KAAM,SAAS,GAAK,IAC1C,CAED,IAAIC,EAAUF,EAAY,UAE1B,OAAAE,EAAQ,UAAY,SAAmB5B,EAAMC,EAAO,CAClD,OAAID,IAAS,SACX,OAAO,KAAKC,CAAK,EAAE,QAAQ,SAAUtB,EAAK,CACpC,OAAOsB,EAAMtB,CAAG,CAAC,EAAE,MAAM8C,EAAc,GAEzC,OAAOxB,EAAMtB,CAAG,CAE1B,CAAO,EAGIsB,CACX,EAESyB,CACT,EAAE5B,EAAM,EAIJ+B,EAAe,EACfC,GAAY,EACZC,GAAgB,uCAChBC,GAAgB,mDAChBC,GAAa,iBAEjB,SAASC,IAAiB,CAExB,GAAI,SAAO,OAAW,KAAe,OAAO,SAAa,KAIzD,OAAO,SAAS,eAAe,mBAAmB,YAAY,CAChE,CAEA,IAAIC,EAAsB,UAAY,CACpC,SAASA,EAAOC,EAAQC,EAAOC,EAAUC,EAAS,CAC5CF,IAAU,SACZA,EAAQ,CAAA,GAGNC,IAAa,SACfA,EAAW,CAAA,GAGTC,IAAY,SACdA,EAAU,CAAA,GAGZ,KAAK,QAAU,OACf,KAAK,OAAS,OACd,KAAK,QAAU,OACf,KAAK,UAAY,OACjB,KAAK,QAAU,GACf,KAAK,MAAQ,OACb,KAAK,SAAW,OAChB,KAAK,QAAU,OACf,KAAK,SAAW,OAQhB,KAAK,MAAQF,EACb,KAAK,SAAWC,EAChB,KAAK,QAAU,CAAA,EAAG,OAAOC,EAAS,CAAC,IAAIb,EAAa,CAAC,EACrD,KAAK,SAAW,GAChB,KAAK,UAAY,KAAK,gBAAgBU,GAAU,EAAE,EAClD,KAAK,QAAU,IAAI,IAAIC,EAAM,WAAarB,EAAgB,EAC1D,KAAK,OAAS,IAAI,IAAID,EAAe,EACrC,KAAK,QAAU,IAAI,IAAIsB,EAAM,SAAS,CACvC,CAMD,IAAIG,EAAUL,EAAO,UAErB,OAAAK,EAAQ,sBAAwB,SAA+BxC,EAAMC,EAAO,CAC1E,OAAO,KAAK,QAAQ,OAAO,SAAUwC,EAAWC,EAAQ,CACtD,OAAOD,IAAc,MAAQ,OAAOC,EAAO,WAAc,WAAaA,EAAO,UAAU1C,EAAMyC,CAAS,EAAIA,CAC3G,EAAExC,CAAK,CACT,EAMDuC,EAAQ,iBAAmB,SAA0BxC,EAAM2C,EAAM,CAE/D,OAAO,KAAK,QAAQ,OAAO,SAAUC,EAAUF,EAAQ,CACrD,OAAOE,IAAa,MAAQ,OAAOF,EAAO,MAAS,WAAaA,EAAO,KAAK1C,EAAM4C,CAAQ,EAAIA,CAC/F,EAAED,CAAI,CACR,EAQDH,EAAQ,cAAgB,SAAuBzE,EAAQ8E,EAAc,CACnE,IAAIC,EAAQ,KAERC,EAAW,CAAA,EACXV,EAAQ,KAAK,MACbW,EAAgBjF,EAChBkF,EAAe,EACfC,EAAQ,KAmEZ,OAlEA,KAAK,SAAS,QAAQ,SAAUC,EAAS,CACvC,IAAItC,EAAUsC,EAAQ,MAAO,EAAC,YAAW,EAErCvC,EAASkC,EAAM,aAAajC,CAAO,EAGvC,GAAI,EAAAwB,EAAMc,EAAQ,WAAW,GAAK,CAACL,EAAM,aAAajC,CAAO,IAKxDiC,EAAM,eAAeD,EAAcjC,CAAM,EAO9C,SAFIwC,EAAkB,GAEfJ,IAAkBE,EAAQC,EAAQ,MAAMH,CAAa,IAAI,CAC9D,IAAIK,EAASH,EACT9E,EAAQiF,EAAO,MACfC,EAASD,EAAO,OAChBE,EAASF,EAAO,MAChBG,EAAQH,EAAO,MACfI,EAASJ,EAAO,KAChBK,EAAYpF,EAA8B+E,EAAQ,CAAC,QAAS,SAAU,QAAS,QAAS,MAAM,CAAC,EAE/FM,EAAYR,EAAQ,SAAWF,EAE/B7E,EAAQ,IACVgF,GAAmBJ,EAAc,MAAM,EAAG5E,CAAK,GAG7CoF,GACFJ,GAAmBK,EAAS,MAAQE,EAAY,OAAS,MAAQA,EAAY,MAAQJ,EAAS,OAASI,EAAY,MACnHb,EAAM,UAAY,EAClBG,GAAgB,EAChBF,EAASY,CAAS,EAAI,CACpB,SAAUJ,EACV,QAASJ,EACT,MAAOhE,EAAS,GAAIkD,EAAOqB,EAAW,CACpC,IAAKZ,EAAM,QACzB,CAAa,CACb,GAEUM,GAAmBG,EAKjBJ,EAAQ,QACVH,EAAgBI,EAAkBJ,EAAc,MAAM5E,EAAQkF,CAAM,EACpEF,EAAkB,IAGlBJ,EAAgBA,EAAc,MAAM5E,GAASkF,GAAUC,EAAO,OAAO,CAExE,CAIIJ,EAAQ,SACXH,EAAgBI,EAAkBJ,GAE1C,CAAK,EAEGC,IAAiB,EACZlF,EAGF,KAAK,cAAciF,EAAeD,CAAQ,CAClD,EAMDP,EAAQ,eAAiB,SAAwBK,EAAce,EAAa,CAM1E,MALI,CAACf,EAAa,SAAW,CAACe,EAAY,SAKtCf,EAAa,KACR,GAILA,EAAa,SAAS,OAAS,EAC1BA,EAAa,SAAS,SAASe,EAAY,OAAO,EAGvDf,EAAa,QAAQ,OAAS,GAAKA,EAAa,QAAQ,SAASe,EAAY,OAAO,EAC/E,GAILA,EAAY,OAAO,OAAS,EACvBA,EAAY,OAAO,SAASf,EAAa,OAAO,EAIrD,CAACA,EAAa,MAAQA,EAAa,UAAYe,EAAY,QACtD,GAIF,GAAQf,GAAgBA,EAAa,QAAUe,EAAY,KACnE,EAQDpB,EAAQ,kBAAoB,SAA2BJ,EAAQ,CAC7D,IAAIyB,EAAc,KAAK,MACnBC,EAASD,EAAY,OACrBE,EAAoBF,EAAY,kBAEpC,GAAIC,GAAUC,GAAqB3B,EAAO,MAAM,mCAAmC,EACjF,OAAOA,EAIT,IAAI4B,EAAa5B,EAAO,QAAQ,QAAS;AAAA,CAAI,EAE7C,OAAA4B,EAAaA,EAAW,QAAQ,UAAW;AAAA;AAAA;AAAA,CAAQ,EAEnDA,EAAaA,EAAW,QAAQ,MAAO,OAAO,EACvCA,CACR,EAQDxB,EAAQ,gBAAkB,SAAyBJ,EAAQ,CACzD,IAAI6B,EAAU,OAAO,OAAW,KAAe,OAAO,yBAA2B/B,GAC7EgC,EAAMD,IAEV,GAAKC,EAIL,KAAIjD,EAAM,KAAK,MAAM,kBAAoB,OACrCkD,EAAKlD,IAAQ,QAAUA,IAAQ,WAAaiD,EAAI,KAAOA,EAAI,cAAcjD,CAAG,EAEhF,OAAImB,EAAO,MAAML,EAAa,IAK5BoC,EAAG,UAAY,KAAK,kBAAkB,KAAK,MAAM,WAAarG,GAAWsE,CAAM,EAAIA,CAAM,GAGpF+B,EACR,EAOD3B,EAAQ,kBAAoB,SAA2BG,EAAM,CAC3D,IAAIyB,EAAS,KAETC,EAAkB,KAAK,MAAM,gBAC7B9E,EAAa,CAAA,EACb+E,EAAQ,EAuCZ,OArCI3B,EAAK,WAAad,GAAgB,CAACc,EAAK,aAI5C,MAAM,KAAKA,EAAK,UAAU,EAAE,QAAQ,SAAU4B,EAAM,CAClD,IAAIvE,EAAOuE,EAAK,KACZtE,EAAQsE,EAAK,MACbC,EAAUxE,EAAK,cACf0C,EAASnB,EAAWiD,CAAO,GAAKjD,EAAWvB,CAAI,EAEnD,GAAKoE,EAAO,OAAOzB,CAAI,GAMnB,GAAC6B,EAAQ,MAAMxC,EAAa,IAC1B,CAACqC,IAAoB,CAAC3B,GAAUA,IAAWvB,KAAgBqD,EAAQ,WAAW,IAAI,GAAKvE,EAAM,QAAQ,uBAAwB,EAAE,EAAE,MAAM,wCAAwC,IAMrL,KAAIwE,EAAWD,IAAY,QAAUJ,EAAO,sBAAsBzB,CAAI,EAAI1C,EAEtEyC,IAAWrB,EACboD,EAAW,GACF/B,IAAWtB,EACpBqD,EAAW,OAAO,WAAW,OAAOA,CAAQ,CAAC,EACpC/B,IAAWpB,IACpBmD,EAAW,OAAOA,CAAQ,GAG5BlF,EAAWiC,GAAoBgD,CAAO,GAAKA,CAAO,EAAIJ,EAAO,sBAAsBI,EAASC,CAAQ,EACpGH,GAAS,EACf,CAAK,EAEGA,IAAU,GACL,KAGF/E,CACR,EAMDiD,EAAQ,sBAAwB,SAA+BG,EAAM,CACnE,IAAI+B,EAAS,CAAA,EACb,aAAM,KAAK/B,EAAK,KAAK,EAAE,QAAQ,SAAUhE,EAAK,CAC5C,IAAIsB,EAAQ0C,EAAK,MAAMhE,CAAG,GAEtB,OAAOsB,GAAU,UAAY,OAAOA,GAAU,YAChDyE,EAAO/F,EAAI,QAAQ,YAAa,SAAUV,EAAO0G,EAAQ,CACvD,OAAOA,EAAO,aACxB,CAAS,CAAC,EAAI1E,EAEd,CAAK,EACMyE,CACR,EAMDlC,EAAQ,aAAe,SAAsB3B,EAAS,CACpD,IAAI+D,EAAS,CACX,SAAU,CAAE,EACZ,QAAS,EACT,QAAS,CAAE,EACX,OAAQ,CAAE,EACV,KAAM,GACN,QAAS,GACT,KAAM,EACN,KAAM,EACZ,EAII,OAAI9D,EAAKD,CAAO,EACP1B,EAAS,CAAE,EAAEyF,EAAQ9D,EAAKD,CAAO,EAAG,CACzC,QAASA,CACjB,CAAO,EAGI+D,CACR,EAMDpC,EAAQ,OAAS,SAAgBG,EAAM,CAErC,GAAI,OAAO,kBAAsB,KAAeA,aAAgB,kBAAmB,CACjF,IAAIkC,EAAOlC,EAAK,aAAa,MAAM,EAGnC,GAAIkC,GAAQA,EAAK,OAAO,CAAC,IAAM,IAC7B,MAAO,GAGT,IAAIC,EAAWnC,EAAK,SAAS,YAAW,EACxC,OAAOmC,IAAa,KAAOA,IAAa,SAAWA,IAAa,UAAYA,IAAa,WAAaA,IAAa,MACpH,CAED,MAAO,EACR,EAMDtC,EAAQ,aAAe,SAAsB3B,EAAS,CACpD,OAAI,KAAK,OAAO,IAAIA,CAAO,GAAK,KAAK,QAAQ,IAAIA,CAAO,EAC/C,GAGF,KAAK,MAAM,eAAiB,KAAK,QAAQ,IAAIA,CAAO,CAC5D,EAQD2B,EAAQ,MAAQ,UAAiB,CAC/B,OAAK,KAAK,UAIH,KAAK,UAAU,KAAK,UAAW,KAAK,aAAa,KAAK,UAAU,SAAS,YAAW,CAAE,CAAC,EAHrF,EAIV,EAODA,EAAQ,UAAY,SAAmBuC,EAAYlC,EAAc,CAC/D,IAAImC,EAAS,KAETC,EAAe,KAAK,MACpBnB,EAASmB,EAAa,OACtBC,EAAuBD,EAAa,qBACpCE,EAAgBF,EAAa,cAC7BG,EAAYH,EAAa,UACzBI,EAAU,CAAA,EACVC,EAAa,GACjB,aAAM,KAAKP,EAAW,UAAU,EAAE,QAAQ,SAAUpC,EAAM,CAExD,GAAIA,EAAK,WAAad,EAAc,CAClC,IAAIhB,EAAU8B,EAAK,SAAS,YAAW,EAEnC/B,EAASoE,EAAO,aAAanE,CAAO,EAGpCyE,IACFD,EAAQ,KAAKC,CAAU,EACvBA,EAAa,IAIf,IAAI1C,EAAWoC,EAAO,iBAAiBnE,EAAS8B,CAAI,EAEpD,GAAI,CAACC,EACH,OAIF,IAAInD,EAEJ,GAAI2F,EAAW,CACbJ,EAAO,UAAY,EACnB,IAAIrG,EAAMqG,EAAO,SAEjBvF,EAAWuF,EAAO,UAAUpC,EAAUhC,CAAM,EAC5C,IAAI2E,EAAcH,EAAUxC,EAAUnD,EAAUmB,CAAM,EAEtD,GAAI2E,IAAgB,KAClB,OACK,GAAI,OAAOA,EAAgB,IAAa,CAC7CF,EAAQ,KAAmBxF,EAAM,aAAa0F,EAAa,CACzD,IAAK5G,CACN,CAAA,CAAC,EACF,MACD,CAGDqG,EAAO,SAAWrG,EAAM,CACzB,CAGD,GAAIqG,EAAO,OAAO,IAAInE,CAAO,EAC3B,OAOF,GAAI,EAAEiD,GAAUoB,GAAwBrE,IAAY,OAASmE,EAAO,aAAanE,CAAO,IAAMsE,GAAiBH,EAAO,eAAenC,EAAcjC,CAAM,GAAI,CAC3JoE,EAAO,UAAY,EAEnB,IAAIzF,EAAayF,EAAO,kBAAkBpC,CAAQ,EAE9C4C,EAAe,CACjB,QAAS3E,CACrB,EAEctB,IACFiG,EAAa,WAAajG,GAGxBqB,EAAO,OACT4E,EAAa,UAAY5E,EAAO,MAGlCyE,EAAQ,KAAmBxF,EAAM,cAAcT,EAASD,EAAS,CAAE,EAAEqG,EAAc,CACjF,IAAKR,EAAO,QACxB,CAAW,EAAGvF,GAAYuF,EAAO,UAAUpC,EAAUhC,CAAM,CAAC,CAAC,CAG7D,MACUyE,EAAUA,EAAQ,OAAOL,EAAO,UAAUpC,EAAUhC,EAAO,QAAUA,EAASiC,CAAY,CAAC,CAGrG,SAAiBF,EAAK,WAAab,GAAW,CACtC,IAAI2D,EAAO3B,GAAU,CAACoB,EAAuBvC,EAAK,YAAcqC,EAAO,cAAcrC,EAAK,aAAe,GAAIE,CAAY,EAErH,MAAM,QAAQ4C,CAAI,EACpBJ,EAAUA,EAAQ,OAAOI,CAAI,EAE7BH,GAAcG,CAEjB,CACP,CAAK,EAEGH,GACFD,EAAQ,KAAKC,CAAU,EAGlBD,CACR,EAOD7C,EAAQ,cAAgB,SAAuBY,EAAiBL,EAAU,CACxE,GAAI,CAACK,EAAgB,SAAS,KAAK,EACjC,OAAOA,EAOT,QAJIsC,EAAQ,CAAA,EACRD,EAAOrC,EACPuC,EAAO,KAEJA,EAAOF,EAAK,MAAMxD,EAAU,GAAG,CACpC,IAAI2D,EAAQD,EACRE,EAAUD,EAAM,CAAC,EACjBjC,EAAYiC,EAAM,CAAC,EACnBE,EAAaH,EAAK,MAElBlC,EAASoC,EAAQ,SAAS,GAAG,EAS7BC,EAAa,IACfJ,EAAM,KAAKD,EAAK,MAAM,EAAGK,CAAU,CAAC,EAEpCL,EAAOA,EAAK,MAAMK,CAAU,GAG9B,IAAIC,EAAsBhD,EAASY,CAAS,EACxClE,EAAWsG,EAAoB,SAC/B5C,EAAU4C,EAAoB,QAC9BP,EAAeO,EAAoB,MACnCC,EAAW,OAEf,GAAIvC,EACFuC,EAAWH,EAAQ,OACnBH,EAAM,KAAKvC,EAAQ,cAAc1D,EAAU+F,CAAY,CAAC,MACnD,CACL,IAAIS,EAAQR,EAAK,MAAM,IAAI,OAAO,OAAS9B,EAAY,KAAK,CAAC,EAQ7DqC,EAAWC,EAAM,MAAQA,EAAM,CAAC,EAAE,OAClCP,EAAM,KAAKvC,EAAQ,cAAc,KAAK,cAAcsC,EAAK,MAAMI,EAAQ,OAAQI,EAAM,KAAK,EAAGlD,CAAQ,EAAGyC,CAAY,CAAC,CACtH,CAGDC,EAAOA,EAAK,MAAMO,CAAQ,CAC3B,CAQD,OALIP,EAAK,OAAS,GAChBC,EAAM,KAAKD,CAAI,EAIbC,EAAM,SAAW,EACZ,GACEA,EAAM,SAAW,GAAK,OAAOA,EAAM,CAAC,GAAM,SAC5CA,EAAM,CAAC,EAGTA,CACX,EAESvD,CACT,IAIA,SAAS+D,GAAO7D,EAAO,CACrB,IAAI9C,EAAa8C,EAAM,WACnB8D,EAAmB9D,EAAM,iBACzBgD,EAAUhD,EAAM,QAChB+D,EAAe/D,EAAM,aACrBgE,EAAgBhE,EAAM,cACtBxB,EAAUwB,EAAM,QAChBpB,EAAMkF,GAAoBtF,GAAW,MACrCyF,EAASrF,IAAQ,WAAa,GAAOoB,EAAM,OAC3CkE,EAEJ,GAAIF,EACFE,EAAcF,MACT,CACL,IAAIjE,EAAS,IAAID,EAAOkD,GAAW,GAAIhD,CAAK,EAAE,QAE1CD,EAAO,OAAS,IAClBmE,EAAcnE,EAEjB,CAMD,OAJKmE,IACHA,EAAcH,GAGZE,EAEkBzG,EAAM,cAAcA,EAAM,SAAU,KAAM0G,CAAW,EAGvD1G,EAAM,cAAcT,EAAS,CAC/C,WAAYG,EACZ,QAAS0B,CACV,EAAEsF,CAAW,CAChB,CAEA,SAASC,GAAWnE,EAAO,CACzB,IAAI9C,EAAa8C,EAAM,WACnBoE,EAAiBpE,EAAM,QACvBgD,EAAUoB,IAAmB,OAAS,GAAKA,EAC3CC,EAAwBrE,EAAM,eAC9BsE,EAAiBD,IAA0B,OAAS,GAAQA,EAC5DE,EAAwBvE,EAAM,gBAC9BwE,EAAkBD,IAA0B,OAAS,GAAQA,EAC7DE,EAAsBzE,EAAM,aAC5B+D,EAAeU,IAAwB,OAAS,KAAOA,EACvDC,EAAiB1E,EAAM,QACvBE,EAAUwE,IAAmB,OAAS,CAAE,EAAGA,EAC3CC,EAAkB3E,EAAM,SACxBC,EAAW0E,IAAoB,OAAS,CAAE,EAAGA,EAC7CC,EAAsB5E,EAAM,aAC5B6E,EAAeD,IAAwB,OAAS,KAAOA,EACvDE,EAAuB9E,EAAM,cAC7B+E,EAAgBD,IAAyB,OAAS,KAAOA,EACzDE,EAAiBhF,EAAM,QACvBxB,EAAUwG,IAAmB,OAAS,OAASA,EAC/CC,EAAgBjF,EAAM,OACtBiE,EAASgB,IAAkB,OAAS,GAAQA,EAC5CC,EAAcjJ,EAA8B+D,EAAO,CAAC,aAAc,UAAW,iBAAkB,kBAAmB,eAAgB,UAAW,WAAY,eAAgB,gBAAiB,UAAW,QAAQ,CAAC,EAE9MmF,EAAcX,EAAkB,CAAE,EAAGvE,EACrCmF,EAAad,EAAiB,CAAE,EAAGpE,EACnCmF,EAAkBN,EAAgB,CAACA,CAAa,EAAI,CAAA,EACpDO,EAAiBT,EAAe,CAACA,CAAY,EAAI,CAAA,EAErDM,EAAY,QAAQ,SAAUrE,EAAS,CACjCA,EAAQ,eACVuE,EAAgB,KAAKvE,EAAQ,cAAc,KAAKA,CAAO,CAAC,EAGtDA,EAAQ,cACVwE,EAAe,KAAKxE,EAAQ,aAAa,KAAKA,CAAO,CAAC,CAE5D,CAAG,EAED,IAAIf,EAASsF,EAAgB,OAAO,SAAU3J,EAAQ6J,EAAU,CAC9D,IAAIC,EAAaD,EAAS7J,EAAQsE,CAAK,EAQvC,OAAOwF,CACX,EAAKxC,GAAW,EAAE,EAEZyC,GAAS,IAAI3F,EAAOC,EAAQmF,EAAaC,EAAaC,CAAU,EAEhE/B,EAAQiC,EAAe,OAAO,SAAUI,EAAaH,EAAU,CACjE,IAAII,EAAYJ,EAASG,EAAa1F,CAAK,EAQ3C,OAAO2F,CACX,EAAKF,GAAO,MAAK,CAAE,EACjB,OAAoBjI,EAAM,cAAcqG,GAAQ,CAC9C,WAAY3G,EACZ,iBAAkB8C,EAAM,iBACxB,aAAc+D,EACd,QAASvF,EACT,OAAQyF,EACR,cAAeZ,EAAM,SAAW,EAAI,OAAYA,CACpD,CAAG,CACH,CAOA,SAASzH,GAAMF,EAAQkK,EAASL,EAAUnE,EAAQ,CAC5CA,IAAW,SACbA,EAAS,IAGX,IAAIyE,EAAUnK,EAAO,MAAMkK,aAAmB,OAASA,EAAU,IAAI,OAAOA,EAAS,GAAG,CAAC,EAEzF,OAAKC,EAIE/I,EAAS,CACd,MAAO+I,EAAQ,CAAC,EAChB,KAAMzE,CACV,EAAKmE,EAASM,CAAO,EAAG,CACpB,MAAOA,EAAQ,MACf,OAAQA,EAAQ,CAAC,EAAE,OACnB,MAAO,EACX,CAAG,EAVQ,IAWX,CAEG,IAACC,GAAuB,UAAY,CACrC,SAASA,EAAQnI,EAAMoI,EAASnE,EAAS,CACvC,KAAK,OAAS,GACd,KAAK,QAAU,OACf,KAAK,SAAW,OAChB,KAAK,YAAc,OACnB,KAAK,QAAU,OASf,KAAK,QAAU9E,EAAS,CAAE,EAAEiJ,CAAO,EACnC,KAAK,SAAWpI,EAChB,KAAK,YAAc,MAAQA,EAAK,OAAO,CAAC,EAAE,YAAa,EAAGA,EAAK,MAAM,CAAC,GACtE,KAAK,QAAUiE,GAAW,IAC3B,CAOD,IAAIoE,EAAUF,EAAQ,UAEtB,OAAAE,EAAQ,cAAgB,SAAuB5I,EAAU4C,EAAO,CAC9D,IAAIiG,EAAU,KAAK,QAAuBzI,EAAM,cAAc,KAAK,QAASwC,EAAO5C,CAAQ,EAAI,KAAK,YAAYA,EAAU4C,CAAK,EAQ/H,OAAOiG,CACR,EAODD,EAAQ,QAAU,SAAiBtK,EAAQkK,EAASL,EAAUnE,EAAQ,CACpE,OAAIA,IAAW,SACbA,EAAS,IAGJxF,GAAMF,EAAQkK,EAASL,EAAUnE,CAAM,CAC/C,EAMD4E,EAAQ,cAAgB,SAAuBhD,EAAShD,EAAO,CAC7D,OAAOgD,CACR,EAMDgD,EAAQ,aAAe,SAAsBhD,EAAShD,EAAO,CAC3D,OAAOgD,CACR,EAMM8C,CACT,EAAC","x_google_ignoreList":[0,1]}