{"version":3,"file":"myassays-panes.iife.js","sources":["../../../src/myassays-global/Model.js","../../../src/myassays-global/PropTypes.js","../../../src/myassays-global/abstractClasses/MyassaysComponent.js","../../../node_modules/webidl-conversions/lib/index.js","../../../node_modules/jsdom/lib/jsdom/living/generated/utils.js","../../../node_modules/jsdom/lib/jsdom/living/helpers/namespaces.js","../../../node_modules/jsdom/lib/jsdom/living/nodes/HTMLCollection-impl.js","../../../node_modules/jsdom/lib/jsdom/living/generated/HTMLCollection.js","../__vite-browser-external","../../../node_modules/whatwg-url/lib/utils.js","../../../node_modules/punycode/punycode.es6.js","../../../node_modules/tr46/lib/regexes.js","../../../node_modules/tr46/lib/statusMapping.js","../../../node_modules/tr46/index.js","../../../node_modules/whatwg-url/lib/infra.js","../../../node_modules/whatwg-url/lib/encoding.js","../../../node_modules/whatwg-url/lib/percent-encoding.js","../../../node_modules/whatwg-url/lib/url-state-machine.js","../../../node_modules/whatwg-url/lib/urlencoded.js","../../../node_modules/whatwg-url/lib/Function.js","../../../node_modules/whatwg-url/lib/URLSearchParams-impl.js","../../../node_modules/whatwg-url/lib/URLSearchParams.js","../../../node_modules/whatwg-url/lib/URL-impl.js","../../../node_modules/whatwg-url/lib/URL.js","../../../node_modules/whatwg-url/webidl2js-wrapper.js","../../../node_modules/whatwg-url/index.js","../../../node_modules/symbol-tree/lib/SymbolTreeNode.js","../../../node_modules/symbol-tree/lib/TreePosition.js","../../../node_modules/symbol-tree/lib/TreeIterator.js","../../../node_modules/symbol-tree/lib/SymbolTree.js","../../../node_modules/jsdom/lib/jsdom/living/helpers/internal-constants.js","../__vite-optional-peer-dep:canvas:jsdom","../../../node_modules/jsdom/lib/jsdom/utils.js","../../../src/myassays-global/Utils.js","../src/constants.js","../src/LayoutElement.js","../src/ResizableElement.js","../src/Splitter.js","../src/Group.js","../src/Pane.js","../src/MinimisedPaneList.js","../src/Animator.js","../src/Layout.js","../index.js","../../../node_modules/construct-style-sheets-polyfill/dist/adoptedStyleSheets.js"],"sourcesContent":["\nfunction cloneValue(value) {\n if (value instanceof Model) {\n return value.attributes;\n } else if (value instanceof Array) {\n return value.map(cloneValue);\n } else if (value instanceof Object) {\n const returnValue = {};\n Object.keys(value).forEach(key => {\n returnValue[key] = cloneValue(value[key]);\n });\n return returnValue;\n } else {\n return value;\n }\n}\n\nexport default class Model extends EventTarget {\n constructor(initialAttributes = {}) {\n super();\n this._previousAttributes = {};\n this._attributes = {...this.constructor.defaults, ...initialAttributes};\n }\n\n set(newAttributes, noTrigger = false) {\n this._previousAttributes = {...this._attributes};\n const previousAttributes = {...this._attributes};\n Object.keys(newAttributes).forEach(key => {\n const newAttribute = newAttributes[key];\n if (this._attributes[key] instanceof Model) {\n if (newAttribute instanceof Model) {\n this._attributes[key] = newAttribute;\n } else {\n this._attributes[key].set(newAttribute);\n }\n } else {\n this._attributes[key] = newAttribute;\n }\n });\n\n if (!noTrigger) {\n const evt = new Event('change');\n const attributes = this._attributes;\n evt.data = {\n attributes,\n previousAttributes,\n hasChanged: (attributeName, handler) => {\n const prevValue = previousAttributes[attributeName];\n const newValue = attributes[attributeName];\n const changed = newValue !== prevValue;\n changed && handler && handler(newValue, prevValue);\n return changed;\n },\n }\n this.dispatchEvent(evt);\n }\n noTrigger || Object.keys(this._attributes).forEach(key => {\n const previousValue = previousAttributes[key];\n const newValue = this._attributes[key];\n if (previousValue !== newValue) {\n const evt = new Event(`change:${key}`);\n evt.data = {\n previousValue: cloneValue(previousValue),\n newValue: cloneValue(newValue),\n }\n this.dispatchEvent(evt);\n }\n });\n }\n\n getExact(attributeName) {\n return this._attributes[attributeName];\n }\n\n get(attributeName) {\n const value = this._attributes[attributeName];\n if (value instanceof Model) {\n return value;\n } else {\n return cloneValue(value);\n }\n }\n\n reset() {\n this._previousAttributes = {};\n this._attributes = {...this.constructor.defaults};\n }\n\n hasChanged(attributeName, handler) {\n const prevValue = this._previousAttributes[attributeName];\n const newValue = this._attributes[attributeName];\n const changed = newValue !== prevValue;\n changed && handler && handler(newValue, prevValue);\n return changed;\n }\n\n set attributes(value) {\n this._attributes = {...value};\n }\n\n get attributes() {\n return cloneValue(this._attributes);\n }\n\n get previousAttributes() {\n return cloneValue(this._previousAttributes);\n }\n\n static defaults = {};\n}\n","\nconst types = {\n NUMBER: 'number',\n STRING: 'string',\n JSON: 'json',\n BOOL: 'bool',\n DIMENSION: 'dimension',\n STYLE: 'style',\n};\n\nfunction attributesToObject(attributes) {\n if (attributes instanceof NamedNodeMap) {\n const result = {};\n for (let i = 0; i < attributes.length; i++) {\n const attr = attributes.item(i);\n result[attr.name.toLowerCase()] = {name: attr.name, value: attr.value};\n }\n return result;\n } else {\n return attributes;\n }\n}\n\nclass PropType {\n constructor(type) {\n this._type = type;\n this._required = false;\n this._observed = false;\n this._comment = '';\n this._defaultValue = undefined;\n this._attrName = '';\n\n if (type === types.STRING) {\n this._lookup = undefined;\n\n this.lookup = valueArrayOrObject => {\n this._lookup = Object.values(valueArrayOrObject);\n this._caseSensitive = false;\n Object.defineProperty(this, 'caseSensitive', {\n get() {\n this._caseSensitive = true;\n return this;\n }\n });\n return this;\n }\n this.regExp = regExp => {\n this._regExp = regExp;\n return this;\n }\n }\n\n if (type === types.NUMBER) {\n this._minValue = undefined;\n this._maxValue = undefined;\n\n this.min = value => {\n this._minValue = value;\n return this;\n }\n\n this.max = value => {\n this._maxValue = value;\n return this;\n }\n }\n }\n\n get required() {\n this._required = true;\n return this;\n }\n\n get observed() {\n this._observed = true;\n return this;\n }\n\n comment(value) {\n this._comment = value;\n return this;\n }\n\n default(value) {\n this._defaultValue = value;\n return this;\n }\n\n attrName(value) {\n this._attrName = value;\n return this;\n }\n\n _setAttrNameFromPropName(value, noHyphens) {\n if (! this._attrName) {\n this._attrName = (noHyphens ? value : value.replace(/([A-Z])/g, '-$1')).toLowerCase();\n }\n }\n}\n\nclass PropTypes {\n static ALLOW_HYPHENS_IN_ATTRIBUTE_NAMES = '_allowHyphensInAttributeNames';\n static get number() { return new PropType(types.NUMBER) };\n static get string() { return new PropType(types.STRING) };\n static get bool() { return new PropType(types.BOOL) };\n static get dimension() { return new PropType(types.DIMENSION) };\n static get style() { return new PropType(types.STYLE) };\n static get json() { return new PropType(types.JSON) };\n\n static getDefaults(propTypes) {\n const defaults = {};\n Object.keys(propTypes).map(key => {\n if (key !== this.ALLOW_HYPHENS_IN_ATTRIBUTE_NAMES) {\n const propType = propTypes[key];\n if (propType._defaultValue !== undefined) {\n defaults[key] = propType._defaultValue;\n }\n }\n });\n return defaults;\n }\n\n static getObserved(propTypes) {\n const observed = [];\n const noHyphens = propTypes._allowHyphensInAttributeNames === false;\n Object.keys(propTypes).map(key => {\n if (key !== this.ALLOW_HYPHENS_IN_ATTRIBUTE_NAMES) {\n const propType = propTypes[key];\n propType._setAttrNameFromPropName(key, noHyphens);\n if (propType._observed) {\n observed.push(propType._attrName);\n }\n }\n });\n return observed;\n }\n\n static propTypesToDoc(propTypes) {\n let docLines = [];\n\n let commentsExist = false;\n const noHyphens = propTypes._allowHyphensInAttributeNames === false;\n\n Object.keys(propTypes).forEach(key => {\n if (key !== this.ALLOW_HYPHENS_IN_ATTRIBUTE_NAMES) {\n const propType = propTypes[key];\n propType._setAttrNameFromPropName(key, noHyphens);\n if (propType._comment !== '') {\n commentsExist = true;\n }\n docLines.push(`| ${[\n `${propType._attrName}`,\n propType._type,\n (propType => {\n const parts = [];\n if (propType._type === types.NUMBER) {\n if (propType._minValue !== undefined) {\n parts.push(`min: ${propType._minValue}`);\n }\n if (propType._maxValue !== undefined) {\n parts.push(`max: ${propType._maxValue}`);\n }\n } else if (propType._type === types.STRING) {\n if (propType._lookup) {\n parts.push(`one of: ${propType._lookup.map(item => `\"${item}\"`).join(', ')}${propType._caseSensitive ? ' (case sensitive)' : ''}`);\n }\n if (propType._regExp) {\n parts.push(`conforms to regExp: \\`${propType._regExp.toString()}\\``);\n }\n } else if (propType._type === types.JSON) {\n parts.push('a valid JSON string');\n } else if (propType._type === types.STYLE) {\n parts.push('valid inline css styles');\n } else if (propType._type === types.DIMENSION) {\n parts.push('a number with optional \"px\" or \"%\" suffix, or \"content\"')\n }\n return parts.join(', ');\n })(propType),\n (propType => {\n if (propType._defaultValue === undefined) return '';\n if (propType._type === types.JSON) return `'${JSON.stringify(propType._defaultValue)}'`;\n if (propType._type === types.NUMBER || propType._type === types.BOOL) return propType._defaultValue;\n return `\"${propType._defaultValue}\"`;\n })(propType),\n propType._required ? 'yes' : '',\n propType._observed ? 'yes' : '',\n propType._comment.replace(/\\n/g, '
'),\n ].join(' | ')} |`);\n }\n });\n if (!commentsExist) {\n docLines = docLines.map(item => item.replace(/\\| +\\|$/, '|'))\n }\n docLines.unshift('| --- | --- | --- | --- | --- | --- |' + (commentsExist ? ' --- |' : ''));\n docLines.unshift('| Attribute | Type | Valid Values | Default | Reqrd | Obsvd |' + (commentsExist ? ' Comment |' : ''));\n return docLines.join('\\n').replace(/_/g, '\\\\_');\n }\n\n static attributesToProps(element, singleAttrName) {\n const attributes = element.attributes;\n const propTypes = element.constructor.propTypes;\n const hash = {};\n const required = [];\n const noHyphens = propTypes._allowHyphensInAttributeNames === false;\n Object.keys(propTypes).forEach(key => {\n if (key !== this.ALLOW_HYPHENS_IN_ATTRIBUTE_NAMES) {\n const propType = propTypes[key];\n propType._setAttrNameFromPropName(key, noHyphens);\n hash[propType._attrName] = {\n name: key,\n propType: propType,\n }\n if (propType._required) {\n required.push(key);\n }\n }\n });\n const props = {};\n const attrObject = attributesToObject(attributes);\n const elementId = `Location: ${element.id ? `id=${element.id}` : element.outerHTML}`;\n Object.keys(attrObject).filter(key => !singleAttrName || key === singleAttrName).map(key => {\n const { name, value } = attrObject[key];\n let convertedValue;\n const info = hash[key];\n if (info === undefined) {\n throw new Error(`Unknown attribute \"${name}\". ${elementId}`);\n } else {\n const propType = hash[key].propType;\n switch (propType._type) {\n case types.BOOL:\n if (typeof value === 'boolean') {\n convertedValue = value;\n } else {\n const lowerCaseValue = value.toLowerCase();\n if (lowerCaseValue !== 'true' && lowerCaseValue !== 'false') {\n throw new Error(`Attribute \"${name}\" must be either \"true\" or \"false\". ${elementId}`);\n } else {\n convertedValue = lowerCaseValue === 'true';\n }\n }\n break;\n case types.DIMENSION:\n if (! /^(-?\\d+(\\.\\d+)?(px|%)?|content)$/.test(value)) {\n throw new Error(`Attribute \"${name}\" must be a number with optional \"px\" or \"%\" suffix, or \"content\". ${elementId}`);\n } else {\n convertedValue = value.replace(/([-\\d.]+)(px|)$/, '$1px');\n }\n break;\n case types.STRING:\n convertedValue = value;\n if (propType._required && !convertedValue) {\n throw new Error(`Attribute \"${name}\" must be one of ${propType._lookup.join('|')}. ${elementId}`);\n }\n if (propType._lookup !== undefined) {\n let testValue, testLookup;\n if (propType._caseSensitive) {\n testValue = convertedValue;\n testLookup = propType._lookup;\n } else {\n testValue = convertedValue.toLowerCase();\n testLookup = propType._lookup.map(item => item.toLowerCase());\n }\n if (! testLookup.includes(testValue)) {\n throw new Error(`Attribute \"${name}\" must be one of ${propType._lookup.join('|')}. ${elementId}`);\n }\n convertedValue = testValue;\n }\n if (propType._regExp !== undefined) {\n if (! propType._regExp.test(convertedValue)) {\n throw new Error(`Attribute \"${name}\" must conform to reg. exp. \"${propType._regExp.toString()}\". ${elementId}`);\n }\n }\n break;\n case types.NUMBER:\n convertedValue = parseFloat(value);\n if (isNaN(convertedValue)) {\n throw new Error(`Attribute \"${name}\" must be a valid number. ${elementId}`);\n }\n if (propType._minValue !== undefined && convertedValue < propType._minValue) {\n throw new Error(`Attribute \"${name}\" must not be less than ${propType._minValue}. ${elementId}`);\n }\n if (propType._maxValue !== undefined && convertedValue > propType._maxValue) {\n throw new Error(`Attribute \"${name}\" must not be greater than ${propType._maxValue}. ${elementId}`);\n }\n break;\n case types.STYLE:\n convertedValue = value.replace(/^\\s*(.*?);?\\s*$/, '$1;');\n if (!/^([a-zA-Z\\-\\s]+:[a-zA-Z0-9\\-.\\s#%\\(\\)\\+,']*;)+$/.test(convertedValue)) {\n throw new Error(`Attribute \"${name}\" must be a valid inline style declaration. ${elementId}`);\n }\n break;\n case types.JSON:\n try {\n convertedValue = JSON.parse(value);\n } catch (error) {\n throw new Error(`Attribute \"${name}\" must be a valid JSON string. ${elementId}`);\n }\n break;\n }\n props[hash[key].name] = convertedValue;\n }\n });\n\n if (!singleAttrName) {\n required.forEach(name => {\n if (props[name] === undefined) {\n throw new Error(`Attribute \"${name.replace(/([A-Z])/g, '-$1').toLowerCase()}\" is required. ${elementId}`);\n }\n });\n }\n\n return {\n ...(singleAttrName ? {} : PropTypes.getDefaults(propTypes)),\n ...props,\n };\n }\n}\n\nexport default PropTypes;\n","import { PropTypes } from 'myassays-global';\n\nexport default class MyassaysComponent extends HTMLElement {\n static get documentationMarkdown() {\n const { propTypes } = this;\n if (propTypes) {\n return `\\\n${PropTypes.propTypesToDoc(propTypes)}`;\n } else {\n return 'No documentation available';\n }\n }\n}\n","\"use strict\";\n\nfunction makeException(ErrorType, message, options) {\n if (options.globals) {\n ErrorType = options.globals[ErrorType.name];\n }\n return new ErrorType(`${options.context ? options.context : \"Value\"} ${message}.`);\n}\n\nfunction toNumber(value, options) {\n if (typeof value === \"bigint\") {\n throw makeException(TypeError, \"is a BigInt which cannot be converted to a number\", options);\n }\n if (!options.globals) {\n return Number(value);\n }\n return options.globals.Number(value);\n}\n\n// Round x to the nearest integer, choosing the even integer if it lies halfway between two.\nfunction evenRound(x) {\n // There are four cases for numbers with fractional part being .5:\n //\n // case | x | floor(x) | round(x) | expected | x <> 0 | x % 1 | x & 1 | example\n // 1 | 2n + 0.5 | 2n | 2n + 1 | 2n | > | 0.5 | 0 | 0.5 -> 0\n // 2 | 2n + 1.5 | 2n + 1 | 2n + 2 | 2n + 2 | > | 0.5 | 1 | 1.5 -> 2\n // 3 | -2n - 0.5 | -2n - 1 | -2n | -2n | < | -0.5 | 0 | -0.5 -> 0\n // 4 | -2n - 1.5 | -2n - 2 | -2n - 1 | -2n - 2 | < | -0.5 | 1 | -1.5 -> -2\n // (where n is a non-negative integer)\n //\n // Branch here for cases 1 and 4\n if ((x > 0 && (x % 1) === +0.5 && (x & 1) === 0) ||\n (x < 0 && (x % 1) === -0.5 && (x & 1) === 1)) {\n return censorNegativeZero(Math.floor(x));\n }\n\n return censorNegativeZero(Math.round(x));\n}\n\nfunction integerPart(n) {\n return censorNegativeZero(Math.trunc(n));\n}\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction modulo(x, y) {\n // https://tc39.github.io/ecma262/#eqn-modulo\n // Note that http://stackoverflow.com/a/4467559/3191 does NOT work for large modulos\n const signMightNotMatch = x % y;\n if (sign(y) !== sign(signMightNotMatch)) {\n return signMightNotMatch + y;\n }\n return signMightNotMatch;\n}\n\nfunction censorNegativeZero(x) {\n return x === 0 ? 0 : x;\n}\n\nfunction createIntegerConversion(bitLength, { unsigned }) {\n let lowerBound, upperBound;\n if (unsigned) {\n lowerBound = 0;\n upperBound = 2 ** bitLength - 1;\n } else {\n lowerBound = -(2 ** (bitLength - 1));\n upperBound = 2 ** (bitLength - 1) - 1;\n }\n\n const twoToTheBitLength = 2 ** bitLength;\n const twoToOneLessThanTheBitLength = 2 ** (bitLength - 1);\n\n return (value, options = {}) => {\n let x = toNumber(value, options);\n x = censorNegativeZero(x);\n\n if (options.enforceRange) {\n if (!Number.isFinite(x)) {\n throw makeException(TypeError, \"is not a finite number\", options);\n }\n\n x = integerPart(x);\n\n if (x < lowerBound || x > upperBound) {\n throw makeException(\n TypeError,\n `is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`,\n options\n );\n }\n\n return x;\n }\n\n if (!Number.isNaN(x) && options.clamp) {\n x = Math.min(Math.max(x, lowerBound), upperBound);\n x = evenRound(x);\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n x = integerPart(x);\n\n // Math.pow(2, 64) is not accurately representable in JavaScript, so try to avoid these per-spec operations if\n // possible. Hopefully it's an optimization for the non-64-bitLength cases too.\n if (x >= lowerBound && x <= upperBound) {\n return x;\n }\n\n // These will not work great for bitLength of 64, but oh well. See the README for more details.\n x = modulo(x, twoToTheBitLength);\n if (!unsigned && x >= twoToOneLessThanTheBitLength) {\n return x - twoToTheBitLength;\n }\n return x;\n };\n}\n\nfunction createLongLongConversion(bitLength, { unsigned }) {\n const upperBound = Number.MAX_SAFE_INTEGER;\n const lowerBound = unsigned ? 0 : Number.MIN_SAFE_INTEGER;\n const asBigIntN = unsigned ? BigInt.asUintN : BigInt.asIntN;\n\n return (value, options = {}) => {\n let x = toNumber(value, options);\n x = censorNegativeZero(x);\n\n if (options.enforceRange) {\n if (!Number.isFinite(x)) {\n throw makeException(TypeError, \"is not a finite number\", options);\n }\n\n x = integerPart(x);\n\n if (x < lowerBound || x > upperBound) {\n throw makeException(\n TypeError,\n `is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`,\n options\n );\n }\n\n return x;\n }\n\n if (!Number.isNaN(x) && options.clamp) {\n x = Math.min(Math.max(x, lowerBound), upperBound);\n x = evenRound(x);\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n let xBigInt = BigInt(integerPart(x));\n xBigInt = asBigIntN(bitLength, xBigInt);\n return Number(xBigInt);\n };\n}\n\nexports.any = value => {\n return value;\n};\n\nexports.undefined = () => {\n return undefined;\n};\n\nexports.boolean = value => {\n return Boolean(value);\n};\n\nexports.byte = createIntegerConversion(8, { unsigned: false });\nexports.octet = createIntegerConversion(8, { unsigned: true });\n\nexports.short = createIntegerConversion(16, { unsigned: false });\nexports[\"unsigned short\"] = createIntegerConversion(16, { unsigned: true });\n\nexports.long = createIntegerConversion(32, { unsigned: false });\nexports[\"unsigned long\"] = createIntegerConversion(32, { unsigned: true });\n\nexports[\"long long\"] = createLongLongConversion(64, { unsigned: false });\nexports[\"unsigned long long\"] = createLongLongConversion(64, { unsigned: true });\n\nexports.double = (value, options = {}) => {\n const x = toNumber(value, options);\n\n if (!Number.isFinite(x)) {\n throw makeException(TypeError, \"is not a finite floating-point value\", options);\n }\n\n return x;\n};\n\nexports[\"unrestricted double\"] = (value, options = {}) => {\n const x = toNumber(value, options);\n\n return x;\n};\n\nexports.float = (value, options = {}) => {\n const x = toNumber(value, options);\n\n if (!Number.isFinite(x)) {\n throw makeException(TypeError, \"is not a finite floating-point value\", options);\n }\n\n if (Object.is(x, -0)) {\n return x;\n }\n\n const y = Math.fround(x);\n\n if (!Number.isFinite(y)) {\n throw makeException(TypeError, \"is outside the range of a single-precision floating-point value\", options);\n }\n\n return y;\n};\n\nexports[\"unrestricted float\"] = (value, options = {}) => {\n const x = toNumber(value, options);\n\n if (isNaN(x)) {\n return x;\n }\n\n if (Object.is(x, -0)) {\n return x;\n }\n\n return Math.fround(x);\n};\n\nexports.DOMString = (value, options = {}) => {\n if (options.treatNullAsEmptyString && value === null) {\n return \"\";\n }\n\n if (typeof value === \"symbol\") {\n throw makeException(TypeError, \"is a symbol, which cannot be converted to a string\", options);\n }\n\n const StringCtor = options.globals ? options.globals.String : String;\n return StringCtor(value);\n};\n\nexports.ByteString = (value, options = {}) => {\n const x = exports.DOMString(value, options);\n let c;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw makeException(TypeError, \"is not a valid ByteString\", options);\n }\n }\n\n return x;\n};\n\nexports.USVString = (value, options = {}) => {\n const S = exports.DOMString(value, options);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + ((2 << 9) * a) + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n\n return U.join(\"\");\n};\n\nexports.object = (value, options = {}) => {\n if (value === null || (typeof value !== \"object\" && typeof value !== \"function\")) {\n throw makeException(TypeError, \"is not an object\", options);\n }\n\n return value;\n};\n\nconst abByteLengthGetter =\n Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"byteLength\").get;\nconst sabByteLengthGetter =\n typeof SharedArrayBuffer === \"function\" ?\n Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, \"byteLength\").get :\n null;\n\nfunction isNonSharedArrayBuffer(value) {\n try {\n // This will throw on SharedArrayBuffers, but not detached ArrayBuffers.\n // (The spec says it should throw, but the spec conflicts with implementations: https://github.com/tc39/ecma262/issues/678)\n abByteLengthGetter.call(value);\n\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isSharedArrayBuffer(value) {\n try {\n sabByteLengthGetter.call(value);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isArrayBufferDetached(value) {\n try {\n // eslint-disable-next-line no-new\n new Uint8Array(value);\n return false;\n } catch {\n return true;\n }\n}\n\nexports.ArrayBuffer = (value, options = {}) => {\n if (!isNonSharedArrayBuffer(value)) {\n if (options.allowShared && !isSharedArrayBuffer(value)) {\n throw makeException(TypeError, \"is not an ArrayBuffer or SharedArrayBuffer\", options);\n }\n throw makeException(TypeError, \"is not an ArrayBuffer\", options);\n }\n if (isArrayBufferDetached(value)) {\n throw makeException(TypeError, \"is a detached ArrayBuffer\", options);\n }\n\n return value;\n};\n\nconst dvByteLengthGetter =\n Object.getOwnPropertyDescriptor(DataView.prototype, \"byteLength\").get;\nexports.DataView = (value, options = {}) => {\n try {\n dvByteLengthGetter.call(value);\n } catch (e) {\n throw makeException(TypeError, \"is not a DataView\", options);\n }\n\n if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {\n throw makeException(TypeError, \"is backed by a SharedArrayBuffer, which is not allowed\", options);\n }\n if (isArrayBufferDetached(value.buffer)) {\n throw makeException(TypeError, \"is backed by a detached ArrayBuffer\", options);\n }\n\n return value;\n};\n\n// Returns the unforgeable `TypedArray` constructor name or `undefined`,\n// if the `this` value isn't a valid `TypedArray` object.\n//\n// https://tc39.es/ecma262/#sec-get-%typedarray%.prototype-@@tostringtag\nconst typedArrayNameGetter = Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(Uint8Array).prototype,\n Symbol.toStringTag\n).get;\n[\n Int8Array,\n Int16Array,\n Int32Array,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Uint8ClampedArray,\n Float32Array,\n Float64Array\n].forEach(func => {\n const { name } = func;\n const article = /^[AEIOU]/u.test(name) ? \"an\" : \"a\";\n exports[name] = (value, options = {}) => {\n if (!ArrayBuffer.isView(value) || typedArrayNameGetter.call(value) !== name) {\n throw makeException(TypeError, `is not ${article} ${name} object`, options);\n }\n if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {\n throw makeException(TypeError, \"is a view on a SharedArrayBuffer, which is not allowed\", options);\n }\n if (isArrayBufferDetached(value.buffer)) {\n throw makeException(TypeError, \"is a view on a detached ArrayBuffer\", options);\n }\n\n return value;\n };\n});\n\n// Common definitions\n\nexports.ArrayBufferView = (value, options = {}) => {\n if (!ArrayBuffer.isView(value)) {\n throw makeException(TypeError, \"is not a view on an ArrayBuffer or SharedArrayBuffer\", options);\n }\n\n if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {\n throw makeException(TypeError, \"is a view on a SharedArrayBuffer, which is not allowed\", options);\n }\n\n if (isArrayBufferDetached(value.buffer)) {\n throw makeException(TypeError, \"is a view on a detached ArrayBuffer\", options);\n }\n return value;\n};\n\nexports.BufferSource = (value, options = {}) => {\n if (ArrayBuffer.isView(value)) {\n if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {\n throw makeException(TypeError, \"is a view on a SharedArrayBuffer, which is not allowed\", options);\n }\n\n if (isArrayBufferDetached(value.buffer)) {\n throw makeException(TypeError, \"is a view on a detached ArrayBuffer\", options);\n }\n return value;\n }\n\n if (!options.allowShared && !isNonSharedArrayBuffer(value)) {\n throw makeException(TypeError, \"is not an ArrayBuffer or a view on one\", options);\n }\n if (options.allowShared && !isSharedArrayBuffer(value) && !isNonSharedArrayBuffer(value)) {\n throw makeException(TypeError, \"is not an ArrayBuffer, SharedArrayBuffer, or a view on one\", options);\n }\n if (isArrayBufferDetached(value)) {\n throw makeException(TypeError, \"is a detached ArrayBuffer\", options);\n }\n\n return value;\n};\n\nexports.DOMTimeStamp = exports[\"unsigned long long\"];\n","\"use strict\";\n\n// Returns \"Type(value) is Object\" in ES terminology.\nfunction isObject(value) {\n return (typeof value === \"object\" && value !== null) || typeof value === \"function\";\n}\n\nconst hasOwn = Function.prototype.call.bind(Object.prototype.hasOwnProperty);\n\n// Like `Object.assign`, but using `[[GetOwnProperty]]` and `[[DefineOwnProperty]]`\n// instead of `[[Get]]` and `[[Set]]` and only allowing objects\nfunction define(target, source) {\n for (const key of Reflect.ownKeys(source)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(source, key);\n if (descriptor && !Reflect.defineProperty(target, key, descriptor)) {\n throw new TypeError(`Cannot redefine property: ${String(key)}`);\n }\n }\n}\n\nfunction newObjectInRealm(globalObject, object) {\n const ctorRegistry = initCtorRegistry(globalObject);\n return Object.defineProperties(\n Object.create(ctorRegistry[\"%Object.prototype%\"]),\n Object.getOwnPropertyDescriptors(object)\n );\n}\n\nconst wrapperSymbol = Symbol(\"wrapper\");\nconst implSymbol = Symbol(\"impl\");\nconst sameObjectCaches = Symbol(\"SameObject caches\");\nconst ctorRegistrySymbol = Symbol.for(\"[webidl2js] constructor registry\");\n\nconst AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () {}).prototype);\n\nfunction initCtorRegistry(globalObject) {\n if (hasOwn(globalObject, ctorRegistrySymbol)) {\n return globalObject[ctorRegistrySymbol];\n }\n\n const ctorRegistry = Object.create(null);\n\n // In addition to registering all the WebIDL2JS-generated types in the constructor registry,\n // we also register a few intrinsics that we make use of in generated code, since they are not\n // easy to grab from the globalObject variable.\n ctorRegistry[\"%Object.prototype%\"] = globalObject.Object.prototype;\n ctorRegistry[\"%IteratorPrototype%\"] = Object.getPrototypeOf(\n Object.getPrototypeOf(new globalObject.Array()[Symbol.iterator]())\n );\n\n try {\n ctorRegistry[\"%AsyncIteratorPrototype%\"] = Object.getPrototypeOf(\n Object.getPrototypeOf(\n globalObject.eval(\"(async function* () {})\").prototype\n )\n );\n } catch {\n ctorRegistry[\"%AsyncIteratorPrototype%\"] = AsyncIteratorPrototype;\n }\n\n globalObject[ctorRegistrySymbol] = ctorRegistry;\n return ctorRegistry;\n}\n\nfunction getSameObject(wrapper, prop, creator) {\n if (!wrapper[sameObjectCaches]) {\n wrapper[sameObjectCaches] = Object.create(null);\n }\n\n if (prop in wrapper[sameObjectCaches]) {\n return wrapper[sameObjectCaches][prop];\n }\n\n wrapper[sameObjectCaches][prop] = creator();\n return wrapper[sameObjectCaches][prop];\n}\n\nfunction wrapperForImpl(impl) {\n return impl ? impl[wrapperSymbol] : null;\n}\n\nfunction implForWrapper(wrapper) {\n return wrapper ? wrapper[implSymbol] : null;\n}\n\nfunction tryWrapperForImpl(impl) {\n const wrapper = wrapperForImpl(impl);\n return wrapper ? wrapper : impl;\n}\n\nfunction tryImplForWrapper(wrapper) {\n const impl = implForWrapper(wrapper);\n return impl ? impl : wrapper;\n}\n\nconst iterInternalSymbol = Symbol(\"internal\");\n\nfunction isArrayIndexPropName(P) {\n if (typeof P !== \"string\") {\n return false;\n }\n const i = P >>> 0;\n if (i === 2 ** 32 - 1) {\n return false;\n }\n const s = `${i}`;\n if (P !== s) {\n return false;\n }\n return true;\n}\n\nconst byteLengthGetter =\n Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"byteLength\").get;\nfunction isArrayBuffer(value) {\n try {\n byteLengthGetter.call(value);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction iteratorResult([key, value], kind) {\n let result;\n switch (kind) {\n case \"key\":\n result = key;\n break;\n case \"value\":\n result = value;\n break;\n case \"key+value\":\n result = [key, value];\n break;\n }\n return { value: result, done: false };\n}\n\nconst supportsPropertyIndex = Symbol(\"supports property index\");\nconst supportedPropertyIndices = Symbol(\"supported property indices\");\nconst supportsPropertyName = Symbol(\"supports property name\");\nconst supportedPropertyNames = Symbol(\"supported property names\");\nconst indexedGet = Symbol(\"indexed property get\");\nconst indexedSetNew = Symbol(\"indexed property set new\");\nconst indexedSetExisting = Symbol(\"indexed property set existing\");\nconst namedGet = Symbol(\"named property get\");\nconst namedSetNew = Symbol(\"named property set new\");\nconst namedSetExisting = Symbol(\"named property set existing\");\nconst namedDelete = Symbol(\"named property delete\");\n\nconst asyncIteratorNext = Symbol(\"async iterator get the next iteration result\");\nconst asyncIteratorReturn = Symbol(\"async iterator return steps\");\nconst asyncIteratorInit = Symbol(\"async iterator initialization steps\");\nconst asyncIteratorEOI = Symbol(\"async iterator end of iteration\");\n\nmodule.exports = exports = {\n isObject,\n hasOwn,\n define,\n newObjectInRealm,\n wrapperSymbol,\n implSymbol,\n getSameObject,\n ctorRegistrySymbol,\n initCtorRegistry,\n wrapperForImpl,\n implForWrapper,\n tryWrapperForImpl,\n tryImplForWrapper,\n iterInternalSymbol,\n isArrayBuffer,\n isArrayIndexPropName,\n supportsPropertyIndex,\n supportedPropertyIndices,\n supportsPropertyName,\n supportedPropertyNames,\n indexedGet,\n indexedSetNew,\n indexedSetExisting,\n namedGet,\n namedSetNew,\n namedSetExisting,\n namedDelete,\n asyncIteratorNext,\n asyncIteratorReturn,\n asyncIteratorInit,\n asyncIteratorEOI,\n iteratorResult\n};\n","\"use strict\";\n\n// https://infra.spec.whatwg.org/#namespaces\n\nexports.HTML_NS = \"http://www.w3.org/1999/xhtml\";\n\nexports.MATHML_NS = \"http://www.w3.org/1998/Math/MathML\";\n\nexports.SVG_NS = \"http://www.w3.org/2000/svg\";\n\nexports.XLINK_NS = \"http://www.w3.org/1999/xlink\";\n\nexports.XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n\nexports.XMLNS_NS = \"http://www.w3.org/2000/xmlns/\";\n","\"use strict\";\n\nconst idlUtils = require(\"../generated/utils.js\");\nconst { HTML_NS } = require(\"../helpers/namespaces\");\n\nexports.implementation = class HTMLCollectionImpl {\n constructor(globalObject, args, privateData) {\n this._list = [];\n this._version = -1;\n this._element = privateData.element;\n this._query = privateData.query;\n\n this._globalObject = globalObject;\n\n this._update();\n }\n get length() {\n this._update();\n return this._list.length;\n }\n item(index) {\n this._update();\n return this._list[index] || null;\n }\n namedItem(key) {\n if (key === \"\") {\n return null;\n }\n this._update();\n for (const element of this._list) {\n if (element.getAttributeNS(null, \"id\") === key) {\n return element;\n }\n if (element._namespaceURI === HTML_NS) {\n const name = element.getAttributeNS(null, \"name\");\n if (name === key) {\n return element;\n }\n }\n }\n return null;\n }\n _update() {\n if (this._version < this._element._version) {\n const snapshot = this._query();\n for (let i = 0; i < snapshot.length; i++) {\n this._list[i] = snapshot[i];\n }\n this._list.length = snapshot.length;\n this._version = this._element._version;\n }\n }\n get [idlUtils.supportedPropertyIndices]() {\n this._update();\n return this._list.keys();\n }\n get [idlUtils.supportedPropertyNames]() {\n this._update();\n const result = new Set();\n for (const element of this._list) {\n const id = element.getAttributeNS(null, \"id\");\n if (id) {\n result.add(id);\n }\n if (element._namespaceURI === HTML_NS) {\n const name = element.getAttributeNS(null, \"name\");\n if (name) {\n result.add(name);\n }\n }\n }\n return result;\n }\n\n // Inherit some useful functions from Array.\n [Symbol.iterator]() {\n this._update();\n return this._list[Symbol.iterator]();\n }\n entries() {\n this._update();\n return this._list.entries();\n }\n filter(...args) {\n this._update();\n return this._list.filter(...args);\n }\n map(...args) {\n this._update();\n return this._list.map(...args);\n }\n indexOf(...args) {\n this._update();\n return this._list.indexOf(...args);\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"HTMLCollection\";\n\nexports.is = value => {\n return utils.isObject(value) && utils.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n if (exports.is(value)) {\n return utils.implForWrapper(value);\n }\n throw new globalObject.TypeError(`${context} is not of type 'HTMLCollection'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n let proto;\n if (newTarget !== undefined) {\n proto = newTarget.prototype;\n }\n\n if (!utils.isObject(proto)) {\n proto = globalObject[ctorRegistrySymbol][\"HTMLCollection\"].prototype;\n }\n\n return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n let proxyHandler = proxyHandlerCache.get(globalObject);\n if (proxyHandler === undefined) {\n proxyHandler = new ProxyHandler(globalObject);\n proxyHandlerCache.set(globalObject, proxyHandler);\n }\n return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n const wrapper = makeWrapper(globalObject);\n return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n const wrapper = exports.create(globalObject, constructorArgs, privateData);\n return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n privateData.wrapper = wrapper;\n\n exports._internalSetup(wrapper, globalObject);\n Object.defineProperty(wrapper, implSymbol, {\n value: new Impl.implementation(globalObject, constructorArgs, privateData),\n configurable: true\n });\n\n wrapper = makeProxy(wrapper, globalObject);\n\n wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n if (Impl.init) {\n Impl.init(wrapper[implSymbol]);\n }\n return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n let wrapper = makeWrapper(globalObject, newTarget);\n\n exports._internalSetup(wrapper, globalObject);\n Object.defineProperty(wrapper, implSymbol, {\n value: Object.create(Impl.implementation.prototype),\n configurable: true\n });\n\n wrapper = makeProxy(wrapper, globalObject);\n\n wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n if (Impl.init) {\n Impl.init(wrapper[implSymbol]);\n }\n return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n if (!globalNames.some(globalName => exposed.has(globalName))) {\n return;\n }\n\n const ctorRegistry = utils.initCtorRegistry(globalObject);\n class HTMLCollection {\n constructor() {\n throw new globalObject.TypeError(\"Illegal constructor\");\n }\n\n item(index) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'item' called on an object that is not a valid instance of HTMLCollection.\");\n }\n\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to execute 'item' on 'HTMLCollection': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"unsigned long\"](curArg, {\n context: \"Failed to execute 'item' on 'HTMLCollection': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(esValue[implSymbol].item(...args));\n }\n\n namedItem(name) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\n \"'namedItem' called on an object that is not a valid instance of HTMLCollection.\"\n );\n }\n\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to execute 'namedItem' on 'HTMLCollection': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"DOMString\"](curArg, {\n context: \"Failed to execute 'namedItem' on 'HTMLCollection': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(esValue[implSymbol].namedItem(...args));\n }\n\n get length() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\n \"'get length' called on an object that is not a valid instance of HTMLCollection.\"\n );\n }\n\n return esValue[implSymbol][\"length\"];\n }\n }\n Object.defineProperties(HTMLCollection.prototype, {\n item: { enumerable: true },\n namedItem: { enumerable: true },\n length: { enumerable: true },\n [Symbol.toStringTag]: { value: \"HTMLCollection\", configurable: true },\n [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n });\n ctorRegistry[interfaceName] = HTMLCollection;\n\n Object.defineProperty(globalObject, interfaceName, {\n configurable: true,\n writable: true,\n value: HTMLCollection\n });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n constructor(globalObject) {\n this._globalObject = globalObject;\n }\n\n get(target, P, receiver) {\n if (typeof P === \"symbol\") {\n return Reflect.get(target, P, receiver);\n }\n const desc = this.getOwnPropertyDescriptor(target, P);\n if (desc === undefined) {\n const parent = Object.getPrototypeOf(target);\n if (parent === null) {\n return undefined;\n }\n return Reflect.get(target, P, receiver);\n }\n if (!desc.get && !desc.set) {\n return desc.value;\n }\n const getter = desc.get;\n if (getter === undefined) {\n return undefined;\n }\n return Reflect.apply(getter, receiver, []);\n }\n\n has(target, P) {\n if (typeof P === \"symbol\") {\n return Reflect.has(target, P);\n }\n const desc = this.getOwnPropertyDescriptor(target, P);\n if (desc !== undefined) {\n return true;\n }\n const parent = Object.getPrototypeOf(target);\n if (parent !== null) {\n return Reflect.has(parent, P);\n }\n return false;\n }\n\n ownKeys(target) {\n const keys = new Set();\n\n for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n keys.add(`${key}`);\n }\n\n for (const key of target[implSymbol][utils.supportedPropertyNames]) {\n if (!(key in target)) {\n keys.add(`${key}`);\n }\n }\n\n for (const key of Reflect.ownKeys(target)) {\n keys.add(key);\n }\n return [...keys];\n }\n\n getOwnPropertyDescriptor(target, P) {\n if (typeof P === \"symbol\") {\n return Reflect.getOwnPropertyDescriptor(target, P);\n }\n let ignoreNamedProps = false;\n\n if (utils.isArrayIndexPropName(P)) {\n const index = P >>> 0;\n const indexedValue = target[implSymbol].item(index);\n if (indexedValue !== null) {\n return {\n writable: false,\n enumerable: true,\n configurable: true,\n value: utils.tryWrapperForImpl(indexedValue)\n };\n }\n ignoreNamedProps = true;\n }\n\n const namedValue = target[implSymbol].namedItem(P);\n\n if (namedValue !== null && !(P in target) && !ignoreNamedProps) {\n return {\n writable: false,\n enumerable: false,\n configurable: true,\n value: utils.tryWrapperForImpl(namedValue)\n };\n }\n\n return Reflect.getOwnPropertyDescriptor(target, P);\n }\n\n set(target, P, V, receiver) {\n if (typeof P === \"symbol\") {\n return Reflect.set(target, P, V, receiver);\n }\n // The `receiver` argument refers to the Proxy exotic object or an object\n // that inherits from it, whereas `target` refers to the Proxy target:\n if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n const globalObject = this._globalObject;\n }\n let ownDesc;\n\n if (utils.isArrayIndexPropName(P)) {\n const index = P >>> 0;\n const indexedValue = target[implSymbol].item(index);\n if (indexedValue !== null) {\n ownDesc = {\n writable: false,\n enumerable: true,\n configurable: true,\n value: utils.tryWrapperForImpl(indexedValue)\n };\n }\n }\n\n if (ownDesc === undefined) {\n ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n }\n if (ownDesc === undefined) {\n const parent = Reflect.getPrototypeOf(target);\n if (parent !== null) {\n return Reflect.set(parent, P, V, receiver);\n }\n ownDesc = { writable: true, enumerable: true, configurable: true, value: undefined };\n }\n if (!ownDesc.writable) {\n return false;\n }\n if (!utils.isObject(receiver)) {\n return false;\n }\n const existingDesc = Reflect.getOwnPropertyDescriptor(receiver, P);\n let valueDesc;\n if (existingDesc !== undefined) {\n if (existingDesc.get || existingDesc.set) {\n return false;\n }\n if (!existingDesc.writable) {\n return false;\n }\n valueDesc = { value: V };\n } else {\n valueDesc = { writable: true, enumerable: true, configurable: true, value: V };\n }\n return Reflect.defineProperty(receiver, P, valueDesc);\n }\n\n defineProperty(target, P, desc) {\n if (typeof P === \"symbol\") {\n return Reflect.defineProperty(target, P, desc);\n }\n\n const globalObject = this._globalObject;\n\n if (utils.isArrayIndexPropName(P)) {\n return false;\n }\n if (!utils.hasOwn(target, P)) {\n const creating = !(target[implSymbol].namedItem(P) !== null);\n if (!creating) {\n return false;\n }\n }\n return Reflect.defineProperty(target, P, desc);\n }\n\n deleteProperty(target, P) {\n if (typeof P === \"symbol\") {\n return Reflect.deleteProperty(target, P);\n }\n\n const globalObject = this._globalObject;\n\n if (utils.isArrayIndexPropName(P)) {\n const index = P >>> 0;\n return !(target[implSymbol].item(index) !== null);\n }\n\n if (target[implSymbol].namedItem(P) !== null && !(P in target)) {\n return false;\n }\n\n return Reflect.deleteProperty(target, P);\n }\n\n preventExtensions() {\n return false;\n }\n}\n\nconst Impl = require(\"../nodes/HTMLCollection-impl.js\");\n","export default {}","\"use strict\";\n\n// Returns \"Type(value) is Object\" in ES terminology.\nfunction isObject(value) {\n return (typeof value === \"object\" && value !== null) || typeof value === \"function\";\n}\n\nconst hasOwn = Function.prototype.call.bind(Object.prototype.hasOwnProperty);\n\n// Like `Object.assign`, but using `[[GetOwnProperty]]` and `[[DefineOwnProperty]]`\n// instead of `[[Get]]` and `[[Set]]` and only allowing objects\nfunction define(target, source) {\n for (const key of Reflect.ownKeys(source)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(source, key);\n if (descriptor && !Reflect.defineProperty(target, key, descriptor)) {\n throw new TypeError(`Cannot redefine property: ${String(key)}`);\n }\n }\n}\n\nfunction newObjectInRealm(globalObject, object) {\n const ctorRegistry = initCtorRegistry(globalObject);\n return Object.defineProperties(\n Object.create(ctorRegistry[\"%Object.prototype%\"]),\n Object.getOwnPropertyDescriptors(object)\n );\n}\n\nconst wrapperSymbol = Symbol(\"wrapper\");\nconst implSymbol = Symbol(\"impl\");\nconst sameObjectCaches = Symbol(\"SameObject caches\");\nconst ctorRegistrySymbol = Symbol.for(\"[webidl2js] constructor registry\");\n\nconst AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () {}).prototype);\n\nfunction initCtorRegistry(globalObject) {\n if (hasOwn(globalObject, ctorRegistrySymbol)) {\n return globalObject[ctorRegistrySymbol];\n }\n\n const ctorRegistry = Object.create(null);\n\n // In addition to registering all the WebIDL2JS-generated types in the constructor registry,\n // we also register a few intrinsics that we make use of in generated code, since they are not\n // easy to grab from the globalObject variable.\n ctorRegistry[\"%Object.prototype%\"] = globalObject.Object.prototype;\n ctorRegistry[\"%IteratorPrototype%\"] = Object.getPrototypeOf(\n Object.getPrototypeOf(new globalObject.Array()[Symbol.iterator]())\n );\n\n try {\n ctorRegistry[\"%AsyncIteratorPrototype%\"] = Object.getPrototypeOf(\n Object.getPrototypeOf(\n globalObject.eval(\"(async function* () {})\").prototype\n )\n );\n } catch {\n ctorRegistry[\"%AsyncIteratorPrototype%\"] = AsyncIteratorPrototype;\n }\n\n globalObject[ctorRegistrySymbol] = ctorRegistry;\n return ctorRegistry;\n}\n\nfunction getSameObject(wrapper, prop, creator) {\n if (!wrapper[sameObjectCaches]) {\n wrapper[sameObjectCaches] = Object.create(null);\n }\n\n if (prop in wrapper[sameObjectCaches]) {\n return wrapper[sameObjectCaches][prop];\n }\n\n wrapper[sameObjectCaches][prop] = creator();\n return wrapper[sameObjectCaches][prop];\n}\n\nfunction wrapperForImpl(impl) {\n return impl ? impl[wrapperSymbol] : null;\n}\n\nfunction implForWrapper(wrapper) {\n return wrapper ? wrapper[implSymbol] : null;\n}\n\nfunction tryWrapperForImpl(impl) {\n const wrapper = wrapperForImpl(impl);\n return wrapper ? wrapper : impl;\n}\n\nfunction tryImplForWrapper(wrapper) {\n const impl = implForWrapper(wrapper);\n return impl ? impl : wrapper;\n}\n\nconst iterInternalSymbol = Symbol(\"internal\");\n\nfunction isArrayIndexPropName(P) {\n if (typeof P !== \"string\") {\n return false;\n }\n const i = P >>> 0;\n if (i === 2 ** 32 - 1) {\n return false;\n }\n const s = `${i}`;\n if (P !== s) {\n return false;\n }\n return true;\n}\n\nconst byteLengthGetter =\n Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"byteLength\").get;\nfunction isArrayBuffer(value) {\n try {\n byteLengthGetter.call(value);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction iteratorResult([key, value], kind) {\n let result;\n switch (kind) {\n case \"key\":\n result = key;\n break;\n case \"value\":\n result = value;\n break;\n case \"key+value\":\n result = [key, value];\n break;\n }\n return { value: result, done: false };\n}\n\nconst supportsPropertyIndex = Symbol(\"supports property index\");\nconst supportedPropertyIndices = Symbol(\"supported property indices\");\nconst supportsPropertyName = Symbol(\"supports property name\");\nconst supportedPropertyNames = Symbol(\"supported property names\");\nconst indexedGet = Symbol(\"indexed property get\");\nconst indexedSetNew = Symbol(\"indexed property set new\");\nconst indexedSetExisting = Symbol(\"indexed property set existing\");\nconst namedGet = Symbol(\"named property get\");\nconst namedSetNew = Symbol(\"named property set new\");\nconst namedSetExisting = Symbol(\"named property set existing\");\nconst namedDelete = Symbol(\"named property delete\");\n\nconst asyncIteratorNext = Symbol(\"async iterator get the next iteration result\");\nconst asyncIteratorReturn = Symbol(\"async iterator return steps\");\nconst asyncIteratorInit = Symbol(\"async iterator initialization steps\");\nconst asyncIteratorEOI = Symbol(\"async iterator end of iteration\");\n\nmodule.exports = exports = {\n isObject,\n hasOwn,\n define,\n newObjectInRealm,\n wrapperSymbol,\n implSymbol,\n getSameObject,\n ctorRegistrySymbol,\n initCtorRegistry,\n wrapperForImpl,\n implForWrapper,\n tryWrapperForImpl,\n tryImplForWrapper,\n iterInternalSymbol,\n isArrayBuffer,\n isArrayIndexPropName,\n supportsPropertyIndex,\n supportedPropertyIndices,\n supportsPropertyName,\n supportedPropertyNames,\n indexedGet,\n indexedSetNew,\n indexedSetExisting,\n namedGet,\n namedSetNew,\n namedSetExisting,\n namedDelete,\n asyncIteratorNext,\n asyncIteratorReturn,\n asyncIteratorInit,\n asyncIteratorEOI,\n iteratorResult\n};\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","\"use strict\";\n\nconst combiningMarks = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C04\\u0C3C\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0CF3\\u0D00-\\u0D03\\u0D3B\\u0D3C\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81-\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF4\\u1CF7-\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA82C\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10EAB}\\u{10EAC}\\u{10EFD}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11000}-\\u{11002}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11082}\\u{110B0}-\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{11134}\\u{11145}\\u{11146}\\u{11173}\\u{11180}-\\u{11182}\\u{111B3}-\\u{111C0}\\u{111C9}-\\u{111CC}\\u{111CE}\\u{111CF}\\u{1122C}-\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}-\\u{112EA}\\u{11300}-\\u{11303}\\u{1133B}\\u{1133C}\\u{1133E}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11357}\\u{11362}\\u{11363}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11435}-\\u{11446}\\u{1145E}\\u{114B0}-\\u{114C3}\\u{115AF}-\\u{115B5}\\u{115B8}-\\u{115C0}\\u{115DC}\\u{115DD}\\u{11630}-\\u{11640}\\u{116AB}-\\u{116B7}\\u{1171D}-\\u{1172B}\\u{1182C}-\\u{1183A}\\u{11930}-\\u{11935}\\u{11937}\\u{11938}\\u{1193B}-\\u{1193E}\\u{11940}\\u{11942}\\u{11943}\\u{119D1}-\\u{119D7}\\u{119DA}-\\u{119E0}\\u{119E4}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A39}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A5B}\\u{11A8A}-\\u{11A99}\\u{11C2F}-\\u{11C36}\\u{11C38}-\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CA9}-\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D8A}-\\u{11D8E}\\u{11D90}\\u{11D91}\\u{11D93}-\\u{11D97}\\u{11EF3}-\\u{11EF6}\\u{11F00}\\u{11F01}\\u{11F03}\\u{11F34}-\\u{11F3A}\\u{11F3E}-\\u{11F42}\\u{13440}\\u{13447}-\\u{13455}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F51}-\\u{16F87}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{16FF0}\\u{16FF1}\\u{1BC9D}\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D165}-\\u{1D169}\\u{1D16D}-\\u{1D172}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]/u;\nconst combiningClassVirama = /[\\u094D\\u09CD\\u0A4D\\u0ACD\\u0B4D\\u0BCD\\u0C4D\\u0CCD\\u0D3B\\u0D3C\\u0D4D\\u0DCA\\u0E3A\\u0EBA\\u0F84\\u1039\\u103A\\u1714\\u1734\\u17D2\\u1A60\\u1B44\\u1BAA\\u1BAB\\u1BF2\\u1BF3\\u2D7F\\uA806\\uA8C4\\uA953\\uA9C0\\uAAF6\\uABED\\u{10A3F}\\u{11046}\\u{1107F}\\u{110B9}\\u{11133}\\u{11134}\\u{111C0}\\u{11235}\\u{112EA}\\u{1134D}\\u{11442}\\u{114C2}\\u{115BF}\\u{1163F}\\u{116B6}\\u{1172B}\\u{11839}\\u{119E0}\\u{11A34}\\u{11A47}\\u{11A99}\\u{11C3F}\\u{11D44}\\u{11D45}\\u{11D97}]/u;\nconst validZWNJ = /[\\u0620\\u0626\\u0628\\u062A-\\u062E\\u0633-\\u063F\\u0641-\\u0647\\u0649\\u064A\\u066E\\u066F\\u0678-\\u0687\\u069A-\\u06BF\\u06C1\\u06C2\\u06CC\\u06CE\\u06D0\\u06D1\\u06FA-\\u06FC\\u06FF\\u0712-\\u0714\\u071A-\\u071D\\u071F-\\u0727\\u0729\\u072B\\u072D\\u072E\\u074E-\\u0758\\u075C-\\u076A\\u076D-\\u0770\\u0772\\u0775-\\u0777\\u077A-\\u077F\\u07CA-\\u07EA\\u0841-\\u0845\\u0848\\u084A-\\u0853\\u0855\\u0860\\u0862-\\u0865\\u0868\\u08A0-\\u08A9\\u08AF\\u08B0\\u08B3\\u08B4\\u08B6-\\u08B8\\u08BA-\\u08BD\\u1807\\u1820-\\u1878\\u1887-\\u18A8\\u18AA\\uA840-\\uA872\\u{10AC0}-\\u{10AC4}\\u{10ACD}\\u{10AD3}-\\u{10ADC}\\u{10ADE}-\\u{10AE0}\\u{10AEB}-\\u{10AEE}\\u{10B80}\\u{10B82}\\u{10B86}-\\u{10B88}\\u{10B8A}\\u{10B8B}\\u{10B8D}\\u{10B90}\\u{10BAD}\\u{10BAE}\\u{10D00}-\\u{10D21}\\u{10D23}\\u{10F30}-\\u{10F32}\\u{10F34}-\\u{10F44}\\u{10F51}-\\u{10F53}\\u{1E900}-\\u{1E943}][\\xAD\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u061C\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u070F\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200B\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFEFF\\uFFF9-\\uFFFB\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10F46}-\\u{10F50}\\u{11001}\\u{11038}-\\u{11046}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{13430}-\\u{13438}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E130}-\\u{1E136}\\u{1E2EC}-\\u{1E2EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94B}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*\\u200C[\\xAD\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u061C\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u070F\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200B\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFEFF\\uFFF9-\\uFFFB\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10F46}-\\u{10F50}\\u{11001}\\u{11038}-\\u{11046}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{13430}-\\u{13438}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E130}-\\u{1E136}\\u{1E2EC}-\\u{1E2EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94B}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*[\\u0620\\u0622-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u0673\\u0675-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u077F\\u07CA-\\u07EA\\u0840-\\u0855\\u0860\\u0862-\\u0865\\u0867-\\u086A\\u08A0-\\u08AC\\u08AE-\\u08B4\\u08B6-\\u08BD\\u1807\\u1820-\\u1878\\u1887-\\u18A8\\u18AA\\uA840-\\uA871\\u{10AC0}-\\u{10AC5}\\u{10AC7}\\u{10AC9}\\u{10ACA}\\u{10ACE}-\\u{10AD6}\\u{10AD8}-\\u{10AE1}\\u{10AE4}\\u{10AEB}-\\u{10AEF}\\u{10B80}-\\u{10B91}\\u{10BA9}-\\u{10BAE}\\u{10D01}-\\u{10D23}\\u{10F30}-\\u{10F44}\\u{10F51}-\\u{10F54}\\u{1E900}-\\u{1E943}]/u;\nconst bidiDomain = /[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0600-\\u0605\\u0608\\u060B\\u060D\\u061B-\\u064A\\u0660-\\u0669\\u066B-\\u066F\\u0671-\\u06D5\\u06DD\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u0870-\\u088E\\u0890\\u0891\\u08A0-\\u08C9\\u08E2\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A40}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D23}\\u{10D30}-\\u{10D39}\\u{10E60}-\\u{10E7E}\\u{10E80}-\\u{10EA9}\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10F00}-\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F51}-\\u{10F59}\\u{10F70}-\\u{10F81}\\u{10F86}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}]/u;\nconst bidiS1LTR = /[A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02BB-\\u02C1\\u02D0\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559-\\u0589\\u0903-\\u0939\\u093B\\u093D-\\u0940\\u0949-\\u094C\\u094E-\\u0950\\u0958-\\u0961\\u0964-\\u0980\\u0982\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09FA\\u09FC\\u09FD\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A76\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AF0\\u0AF9\\u0B02\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C77\\u0C7F\\u0C80\\u0C82-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D02-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D4F\\u0D54-\\u0D61\\u0D66-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E4F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F17\\u0F1A-\\u0F34\\u0F36\\u0F38\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u102C\\u1031\\u1038\\u103B\\u103C\\u103F-\\u1057\\u105A-\\u105D\\u1061-\\u1070\\u1075-\\u1081\\u1083\\u1084\\u1087-\\u108C\\u108E-\\u109C\\u109E-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u167F\\u1681-\\u169A\\u16A0-\\u16F8\\u1700-\\u1711\\u1715\\u171F-\\u1731\\u1734-\\u1736\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u17D4-\\u17DA\\u17DC\\u17E0-\\u17E9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A19\\u1A1A\\u1A1E-\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1B04-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B4C\\u1B50-\\u1B6A\\u1B74-\\u1B7E\\u1B82-\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BAE-\\u1BE5\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1BFC-\\u1C2B\\u1C34\\u1C35\\u1C3B-\\u1C49\\u1C4D-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CC7\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF7\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u302E\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3190-\\u31BF\\u31F0-\\u321C\\u3220-\\u324F\\u3260-\\u327B\\u327F-\\u32B0\\u32C0-\\u32CB\\u32D0-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA680-\\uA69D\\uA6A0-\\uA6EF\\uA6F2-\\uA6F7\\uA722-\\uA787\\uA789-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA824\\uA827\\uA830-\\uA837\\uA840-\\uA873\\uA880-\\uA8C3\\uA8CE-\\uA8D9\\uA8F2-\\uA8FE\\uA900-\\uA925\\uA92E-\\uA946\\uA952\\uA953\\uA95F-\\uA97C\\uA983-\\uA9B2\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA7B\\uAA7D-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAAEB\\uAAEE-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB69\\uAB70-\\uABE4\\uABE6\\uABE7\\uABE9-\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1013F}\\u{1018D}\\u{1018E}\\u{101D0}-\\u{101FC}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}\\u{105BC}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{11000}\\u{11002}-\\u{11037}\\u{11047}-\\u{1104D}\\u{11066}-\\u{1106F}\\u{11071}\\u{11072}\\u{11075}\\u{11082}-\\u{110B2}\\u{110B7}\\u{110B8}\\u{110BB}-\\u{110C1}\\u{110CD}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11103}-\\u{11126}\\u{1112C}\\u{11136}-\\u{11147}\\u{11150}-\\u{11172}\\u{11174}-\\u{11176}\\u{11182}-\\u{111B5}\\u{111BF}-\\u{111C8}\\u{111CD}\\u{111CE}\\u{111D0}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122E}\\u{11232}\\u{11233}\\u{11235}\\u{11238}-\\u{1123D}\\u{1123F}\\u{11240}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112DE}\\u{112E0}-\\u{112E2}\\u{112F0}-\\u{112F9}\\u{11302}\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}-\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11400}-\\u{11437}\\u{11440}\\u{11441}\\u{11445}\\u{11447}-\\u{1145B}\\u{1145D}\\u{1145F}-\\u{11461}\\u{11480}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BE}\\u{114C1}\\u{114C4}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{115C1}-\\u{115DB}\\u{11600}-\\u{11632}\\u{1163B}\\u{1163C}\\u{1163E}\\u{11641}-\\u{11644}\\u{11650}-\\u{11659}\\u{11680}-\\u{116AA}\\u{116AC}\\u{116AE}\\u{116AF}\\u{116B6}\\u{116B8}\\u{116B9}\\u{116C0}-\\u{116C9}\\u{11700}-\\u{1171A}\\u{11720}\\u{11721}\\u{11726}\\u{11730}-\\u{11746}\\u{11800}-\\u{1182E}\\u{11838}\\u{1183B}\\u{118A0}-\\u{118F2}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}\\u{11916}\\u{11918}-\\u{11935}\\u{11937}\\u{11938}\\u{1193D}\\u{1193F}-\\u{11942}\\u{11944}-\\u{11946}\\u{11950}-\\u{11959}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E1}-\\u{119E4}\\u{11A00}\\u{11A07}\\u{11A08}\\u{11A0B}-\\u{11A32}\\u{11A39}\\u{11A3A}\\u{11A3F}-\\u{11A46}\\u{11A50}\\u{11A57}\\u{11A58}\\u{11A5C}-\\u{11A89}\\u{11A97}\\u{11A9A}-\\u{11AA2}\\u{11AB0}-\\u{11AF8}\\u{11B00}-\\u{11B09}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2F}\\u{11C3E}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D50}-\\u{11D59}\\u{11D60}-\\u{11D65}\\u{11D67}\\u{11D68}\\u{11D6A}-\\u{11D8E}\\u{11D93}\\u{11D94}\\u{11D96}\\u{11D98}\\u{11DA0}-\\u{11DA9}\\u{11EE0}-\\u{11EF2}\\u{11EF5}-\\u{11EF8}\\u{11F02}-\\u{11F10}\\u{11F12}-\\u{11F35}\\u{11F3E}\\u{11F3F}\\u{11F41}\\u{11F43}-\\u{11F59}\\u{11FB0}\\u{11FC0}-\\u{11FD4}\\u{11FFF}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF2}\\u{13000}-\\u{1343F}\\u{13441}-\\u{13446}\\u{14400}-\\u{14646}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}-\\u{16ABE}\\u{16AC0}-\\u{16AC9}\\u{16AD0}-\\u{16AED}\\u{16AF5}\\u{16B00}-\\u{16B2F}\\u{16B37}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16E40}-\\u{16E9A}\\u{16F00}-\\u{16F4A}\\u{16F50}-\\u{16F87}\\u{16F93}-\\u{16F9F}\\u{16FE0}\\u{16FE1}\\u{16FE3}\\u{16FF0}\\u{16FF1}\\u{17000}-\\u{187F7}\\u{18800}-\\u{18CD5}\\u{18D00}-\\u{18D08}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}\\u{1BC9F}\\u{1CF50}-\\u{1CFC3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D166}\\u{1D16A}-\\u{1D172}\\u{1D183}\\u{1D184}\\u{1D18C}-\\u{1D1A9}\\u{1D1AE}-\\u{1D1E8}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D360}-\\u{1D378}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6DA}\\u{1D6DC}-\\u{1D714}\\u{1D716}-\\u{1D74E}\\u{1D750}-\\u{1D788}\\u{1D78A}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1D800}-\\u{1D9FF}\\u{1DA37}-\\u{1DA3A}\\u{1DA6D}-\\u{1DA74}\\u{1DA76}-\\u{1DA83}\\u{1DA85}-\\u{1DA8B}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E030}-\\u{1E06D}\\u{1E100}-\\u{1E12C}\\u{1E137}-\\u{1E13D}\\u{1E140}-\\u{1E149}\\u{1E14E}\\u{1E14F}\\u{1E290}-\\u{1E2AD}\\u{1E2C0}-\\u{1E2EB}\\u{1E2F0}-\\u{1E2F9}\\u{1E4D0}-\\u{1E4EB}\\u{1E4F0}-\\u{1E4F9}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1F110}-\\u{1F12E}\\u{1F130}-\\u{1F169}\\u{1F170}-\\u{1F1AC}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B739}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{323AF}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}]/u;\nconst bidiS1RTL = /[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u0870-\\u088E\\u08A0-\\u08C9\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A40}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D23}\\u{10E80}-\\u{10EA9}\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10F00}-\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F51}-\\u{10F59}\\u{10F70}-\\u{10F81}\\u{10F86}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}]/u;\nconst bidiS2 = /^[\\0-\\x08\\x0E-\\x1B!-@\\[-`\\{-\\x84\\x86-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02B9\\u02BA\\u02C2-\\u02CF\\u02D2-\\u02DF\\u02E5-\\u02ED\\u02EF-\\u036F\\u0374\\u0375\\u037E\\u0384\\u0385\\u0387\\u03F6\\u0483-\\u0489\\u058A\\u058D-\\u058F\\u0591-\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0600-\\u070D\\u070F-\\u074A\\u074D-\\u07B1\\u07C0-\\u07FA\\u07FD-\\u082D\\u0830-\\u083E\\u0840-\\u085B\\u085E\\u0860-\\u086A\\u0870-\\u088E\\u0890\\u0891\\u0898-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09F2\\u09F3\\u09FB\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AF1\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0BF3-\\u0BFA\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C78-\\u0C7E\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E3F\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39-\\u0F3D\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1390-\\u1399\\u1400\\u169B\\u169C\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DB\\u17DD\\u17F0-\\u17F9\\u1800-\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1940\\u1944\\u1945\\u19DE-\\u19FF\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u200B-\\u200D\\u200F-\\u2027\\u202F-\\u205E\\u2060-\\u2064\\u206A-\\u2070\\u2074-\\u207E\\u2080-\\u208E\\u20A0-\\u20C0\\u20D0-\\u20F0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u2150-\\u215F\\u2189-\\u218B\\u2190-\\u2335\\u237B-\\u2394\\u2396-\\u2426\\u2440-\\u244A\\u2460-\\u249B\\u24EA-\\u26AB\\u26AD-\\u27FF\\u2900-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2CEF-\\u2CF1\\u2CF9-\\u2CFF\\u2D7F\\u2DE0-\\u2E5D\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u3004\\u3008-\\u3020\\u302A-\\u302D\\u3030\\u3036\\u3037\\u303D-\\u303F\\u3099-\\u309C\\u30A0\\u30FB\\u31C0-\\u31E3\\u321D\\u321E\\u3250-\\u325F\\u327C-\\u327E\\u32B1-\\u32BF\\u32CC-\\u32CF\\u3377-\\u337A\\u33DE\\u33DF\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA60D-\\uA60F\\uA66F-\\uA67F\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA700-\\uA721\\uA788\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA828-\\uA82C\\uA838\\uA839\\uA874-\\uA877\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uAB6A\\uAB6B\\uABE5\\uABE8\\uABED\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD8F\\uFD92-\\uFDC7\\uFDCF\\uFDF0-\\uFE19\\uFE20-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFEFF\\uFF01-\\uFF20\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFF9-\\uFFFD\\u{10101}\\u{10140}-\\u{1018C}\\u{10190}-\\u{1019C}\\u{101A0}\\u{101FD}\\u{102E0}-\\u{102FB}\\u{10376}-\\u{1037A}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{1091F}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A38}-\\u{10A3A}\\u{10A3F}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE6}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B39}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D27}\\u{10D30}-\\u{10D39}\\u{10E60}-\\u{10E7E}\\u{10E80}-\\u{10EA9}\\u{10EAB}-\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10EFD}-\\u{10F27}\\u{10F30}-\\u{10F59}\\u{10F70}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{11001}\\u{11038}-\\u{11046}\\u{11052}-\\u{11065}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{11660}-\\u{1166C}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{11FD5}-\\u{11FF1}\\u{13440}\\u{13447}-\\u{13455}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE2}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D1E9}\\u{1D1EA}\\u{1D200}-\\u{1D245}\\u{1D300}-\\u{1D356}\\u{1D6DB}\\u{1D715}\\u{1D74F}\\u{1D789}\\u{1D7C3}\\u{1D7CE}-\\u{1D7FF}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E2FF}\\u{1E4EC}-\\u{1E4EF}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8D6}\\u{1E900}-\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{1EEF0}\\u{1EEF1}\\u{1F000}-\\u{1F02B}\\u{1F030}-\\u{1F093}\\u{1F0A0}-\\u{1F0AE}\\u{1F0B1}-\\u{1F0BF}\\u{1F0C1}-\\u{1F0CF}\\u{1F0D1}-\\u{1F0F5}\\u{1F100}-\\u{1F10F}\\u{1F12F}\\u{1F16A}-\\u{1F16F}\\u{1F1AD}\\u{1F260}-\\u{1F265}\\u{1F300}-\\u{1F6D7}\\u{1F6DC}-\\u{1F6EC}\\u{1F6F0}-\\u{1F6FC}\\u{1F700}-\\u{1F776}\\u{1F77B}-\\u{1F7D9}\\u{1F7E0}-\\u{1F7EB}\\u{1F7F0}\\u{1F800}-\\u{1F80B}\\u{1F810}-\\u{1F847}\\u{1F850}-\\u{1F859}\\u{1F860}-\\u{1F887}\\u{1F890}-\\u{1F8AD}\\u{1F8B0}\\u{1F8B1}\\u{1F900}-\\u{1FA53}\\u{1FA60}-\\u{1FA6D}\\u{1FA70}-\\u{1FA7C}\\u{1FA80}-\\u{1FA88}\\u{1FA90}-\\u{1FABD}\\u{1FABF}-\\u{1FAC5}\\u{1FACE}-\\u{1FADB}\\u{1FAE0}-\\u{1FAE8}\\u{1FAF0}-\\u{1FAF8}\\u{1FB00}-\\u{1FB92}\\u{1FB94}-\\u{1FBCA}\\u{1FBF0}-\\u{1FBF9}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*$/u;\nconst bidiS3 = /[0-9\\xB2\\xB3\\xB9\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0600-\\u0605\\u0608\\u060B\\u060D\\u061B-\\u064A\\u0660-\\u0669\\u066B-\\u066F\\u0671-\\u06D5\\u06DD\\u06E5\\u06E6\\u06EE-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u0870-\\u088E\\u0890\\u0891\\u08A0-\\u08C9\\u08E2\\u200F\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2488-\\u249B\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\u{102E1}-\\u{102FB}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A40}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D23}\\u{10D30}-\\u{10D39}\\u{10E60}-\\u{10E7E}\\u{10E80}-\\u{10EA9}\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10F00}-\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F51}-\\u{10F59}\\u{10F70}-\\u{10F81}\\u{10F86}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{1D7CE}-\\u{1D7FF}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{1F100}-\\u{1F10A}\\u{1FBF0}-\\u{1FBF9}][\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10EAB}\\u{10EAC}\\u{10EFD}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11001}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{13440}\\u{13447}-\\u{13455}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]*$/u;\nconst bidiS4EN = /[0-9\\xB2\\xB3\\xB9\\u06F0-\\u06F9\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2488-\\u249B\\uFF10-\\uFF19\\u{102E1}-\\u{102FB}\\u{1D7CE}-\\u{1D7FF}\\u{1F100}-\\u{1F10A}\\u{1FBF0}-\\u{1FBF9}]/u;\nconst bidiS4AN = /[\\u0600-\\u0605\\u0660-\\u0669\\u066B\\u066C\\u06DD\\u0890\\u0891\\u08E2\\u{10D30}-\\u{10D39}\\u{10E60}-\\u{10E7E}]/u;\nconst bidiS5 = /^[\\0-\\x08\\x0E-\\x1B!-\\x84\\x86-\\u0377\\u037A-\\u037F\\u0384-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u052F\\u0531-\\u0556\\u0559-\\u058A\\u058D-\\u058F\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0606\\u0607\\u0609\\u060A\\u060C\\u060E-\\u061A\\u064B-\\u065F\\u066A\\u0670\\u06D6-\\u06DC\\u06DE-\\u06E4\\u06E7-\\u06ED\\u06F0-\\u06F9\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07F6-\\u07F9\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A76\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AF1\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B77\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BFA\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C5D\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C77-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4F\\u0D54-\\u0D63\\u0D66-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E3A\\u0E3F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECE\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F97\\u0F99-\\u0FBC\\u0FBE-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u137C\\u1380-\\u1399\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1400-\\u167F\\u1681-\\u169C\\u16A0-\\u16F8\\u1700-\\u1715\\u171F-\\u1736\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17DD\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1800-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1940\\u1944-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u19DE-\\u1A1B\\u1A1E-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1AB0-\\u1ACE\\u1B00-\\u1B4C\\u1B50-\\u1B7E\\u1B80-\\u1BF3\\u1BFC-\\u1C37\\u1C3B-\\u1C49\\u1C4D-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CC7\\u1CD0-\\u1CFA\\u1D00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFE\\u200B-\\u200E\\u2010-\\u2027\\u202F-\\u205E\\u2060-\\u2064\\u206A-\\u2071\\u2074-\\u208E\\u2090-\\u209C\\u20A0-\\u20C0\\u20D0-\\u20F0\\u2100-\\u218B\\u2190-\\u2426\\u2440-\\u244A\\u2460-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2CF3\\u2CF9-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2E5D\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303F\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3190-\\u31E3\\u31F0-\\u321E\\u3220-\\uA48C\\uA490-\\uA4C6\\uA4D0-\\uA62B\\uA640-\\uA6F7\\uA700-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA82C\\uA830-\\uA839\\uA840-\\uA877\\uA880-\\uA8C5\\uA8CE-\\uA8D9\\uA8E0-\\uA953\\uA95F-\\uA97C\\uA980-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAAC2\\uAADB-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB6B\\uAB70-\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1E\\uFB29\\uFD3E-\\uFD4F\\uFDCF\\uFDFD-\\uFE19\\uFE20-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFEFF\\uFF01-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFF9-\\uFFFD\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}-\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1018E}\\u{10190}-\\u{1019C}\\u{101A0}\\u{101D0}-\\u{101FD}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{102E0}-\\u{102FB}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{1037A}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}\\u{105BC}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{1091F}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10B39}-\\u{10B3F}\\u{10D24}-\\u{10D27}\\u{10EAB}\\u{10EAC}\\u{10EFD}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11000}-\\u{1104D}\\u{11052}-\\u{11075}\\u{1107F}-\\u{110C2}\\u{110CD}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11100}-\\u{11134}\\u{11136}-\\u{11147}\\u{11150}-\\u{11176}\\u{11180}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{11241}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112EA}\\u{112F0}-\\u{112F9}\\u{11300}-\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133B}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11400}-\\u{1145B}\\u{1145D}-\\u{11461}\\u{11480}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B5}\\u{115B8}-\\u{115DD}\\u{11600}-\\u{11644}\\u{11650}-\\u{11659}\\u{11660}-\\u{1166C}\\u{11680}-\\u{116B9}\\u{116C0}-\\u{116C9}\\u{11700}-\\u{1171A}\\u{1171D}-\\u{1172B}\\u{11730}-\\u{11746}\\u{11800}-\\u{1183B}\\u{118A0}-\\u{118F2}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}\\u{11916}\\u{11918}-\\u{11935}\\u{11937}\\u{11938}\\u{1193B}-\\u{11946}\\u{11950}-\\u{11959}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D7}\\u{119DA}-\\u{119E4}\\u{11A00}-\\u{11A47}\\u{11A50}-\\u{11AA2}\\u{11AB0}-\\u{11AF8}\\u{11B00}-\\u{11B09}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C36}\\u{11C38}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11C92}-\\u{11CA7}\\u{11CA9}-\\u{11CB6}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D47}\\u{11D50}-\\u{11D59}\\u{11D60}-\\u{11D65}\\u{11D67}\\u{11D68}\\u{11D6A}-\\u{11D8E}\\u{11D90}\\u{11D91}\\u{11D93}-\\u{11D98}\\u{11DA0}-\\u{11DA9}\\u{11EE0}-\\u{11EF8}\\u{11F00}-\\u{11F10}\\u{11F12}-\\u{11F3A}\\u{11F3E}-\\u{11F59}\\u{11FB0}\\u{11FC0}-\\u{11FF1}\\u{11FFF}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF2}\\u{13000}-\\u{13455}\\u{14400}-\\u{14646}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}-\\u{16ABE}\\u{16AC0}-\\u{16AC9}\\u{16AD0}-\\u{16AED}\\u{16AF0}-\\u{16AF5}\\u{16B00}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16E40}-\\u{16E9A}\\u{16F00}-\\u{16F4A}\\u{16F4F}-\\u{16F87}\\u{16F8F}-\\u{16F9F}\\u{16FE0}-\\u{16FE4}\\u{16FF0}\\u{16FF1}\\u{17000}-\\u{187F7}\\u{18800}-\\u{18CD5}\\u{18D00}-\\u{18D08}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}-\\u{1BCA3}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1CF50}-\\u{1CFC3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D1EA}\\u{1D200}-\\u{1D245}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D300}-\\u{1D356}\\u{1D360}-\\u{1D378}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D7CB}\\u{1D7CE}-\\u{1DA8B}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E030}-\\u{1E06D}\\u{1E08F}\\u{1E100}-\\u{1E12C}\\u{1E130}-\\u{1E13D}\\u{1E140}-\\u{1E149}\\u{1E14E}\\u{1E14F}\\u{1E290}-\\u{1E2AE}\\u{1E2C0}-\\u{1E2F9}\\u{1E2FF}\\u{1E4D0}-\\u{1E4F9}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{1EEF0}\\u{1EEF1}\\u{1F000}-\\u{1F02B}\\u{1F030}-\\u{1F093}\\u{1F0A0}-\\u{1F0AE}\\u{1F0B1}-\\u{1F0BF}\\u{1F0C1}-\\u{1F0CF}\\u{1F0D1}-\\u{1F0F5}\\u{1F100}-\\u{1F1AD}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{1F260}-\\u{1F265}\\u{1F300}-\\u{1F6D7}\\u{1F6DC}-\\u{1F6EC}\\u{1F6F0}-\\u{1F6FC}\\u{1F700}-\\u{1F776}\\u{1F77B}-\\u{1F7D9}\\u{1F7E0}-\\u{1F7EB}\\u{1F7F0}\\u{1F800}-\\u{1F80B}\\u{1F810}-\\u{1F847}\\u{1F850}-\\u{1F859}\\u{1F860}-\\u{1F887}\\u{1F890}-\\u{1F8AD}\\u{1F8B0}\\u{1F8B1}\\u{1F900}-\\u{1FA53}\\u{1FA60}-\\u{1FA6D}\\u{1FA70}-\\u{1FA7C}\\u{1FA80}-\\u{1FA88}\\u{1FA90}-\\u{1FABD}\\u{1FABF}-\\u{1FAC5}\\u{1FACE}-\\u{1FADB}\\u{1FAE0}-\\u{1FAE8}\\u{1FAF0}-\\u{1FAF8}\\u{1FB00}-\\u{1FB92}\\u{1FB94}-\\u{1FBCA}\\u{1FBF0}-\\u{1FBF9}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B739}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{323AF}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}]*$/u;\nconst bidiS6 = /[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02BB-\\u02C1\\u02D0\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559-\\u0589\\u06F0-\\u06F9\\u0903-\\u0939\\u093B\\u093D-\\u0940\\u0949-\\u094C\\u094E-\\u0950\\u0958-\\u0961\\u0964-\\u0980\\u0982\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09FA\\u09FC\\u09FD\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A76\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AF0\\u0AF9\\u0B02\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C77\\u0C7F\\u0C80\\u0C82-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D02-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D4F\\u0D54-\\u0D61\\u0D66-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E4F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F17\\u0F1A-\\u0F34\\u0F36\\u0F38\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u102C\\u1031\\u1038\\u103B\\u103C\\u103F-\\u1057\\u105A-\\u105D\\u1061-\\u1070\\u1075-\\u1081\\u1083\\u1084\\u1087-\\u108C\\u108E-\\u109C\\u109E-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u167F\\u1681-\\u169A\\u16A0-\\u16F8\\u1700-\\u1711\\u1715\\u171F-\\u1731\\u1734-\\u1736\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u17D4-\\u17DA\\u17DC\\u17E0-\\u17E9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A19\\u1A1A\\u1A1E-\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1B04-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B4C\\u1B50-\\u1B6A\\u1B74-\\u1B7E\\u1B82-\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BAE-\\u1BE5\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1BFC-\\u1C2B\\u1C34\\u1C35\\u1C3B-\\u1C49\\u1C4D-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CC7\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF7\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2188\\u2336-\\u237A\\u2395\\u2488-\\u24E9\\u26AC\\u2800-\\u28FF\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u302E\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3190-\\u31BF\\u31F0-\\u321C\\u3220-\\u324F\\u3260-\\u327B\\u327F-\\u32B0\\u32C0-\\u32CB\\u32D0-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA680-\\uA69D\\uA6A0-\\uA6EF\\uA6F2-\\uA6F7\\uA722-\\uA787\\uA789-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA824\\uA827\\uA830-\\uA837\\uA840-\\uA873\\uA880-\\uA8C3\\uA8CE-\\uA8D9\\uA8F2-\\uA8FE\\uA900-\\uA925\\uA92E-\\uA946\\uA952\\uA953\\uA95F-\\uA97C\\uA983-\\uA9B2\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA7B\\uAA7D-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAAEB\\uAAEE-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB69\\uAB70-\\uABE4\\uABE6\\uABE7\\uABE9-\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1013F}\\u{1018D}\\u{1018E}\\u{101D0}-\\u{101FC}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{102E1}-\\u{102FB}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}\\u{105BC}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{11000}\\u{11002}-\\u{11037}\\u{11047}-\\u{1104D}\\u{11066}-\\u{1106F}\\u{11071}\\u{11072}\\u{11075}\\u{11082}-\\u{110B2}\\u{110B7}\\u{110B8}\\u{110BB}-\\u{110C1}\\u{110CD}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11103}-\\u{11126}\\u{1112C}\\u{11136}-\\u{11147}\\u{11150}-\\u{11172}\\u{11174}-\\u{11176}\\u{11182}-\\u{111B5}\\u{111BF}-\\u{111C8}\\u{111CD}\\u{111CE}\\u{111D0}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122E}\\u{11232}\\u{11233}\\u{11235}\\u{11238}-\\u{1123D}\\u{1123F}\\u{11240}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112DE}\\u{112E0}-\\u{112E2}\\u{112F0}-\\u{112F9}\\u{11302}\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}-\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11400}-\\u{11437}\\u{11440}\\u{11441}\\u{11445}\\u{11447}-\\u{1145B}\\u{1145D}\\u{1145F}-\\u{11461}\\u{11480}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BE}\\u{114C1}\\u{114C4}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{115C1}-\\u{115DB}\\u{11600}-\\u{11632}\\u{1163B}\\u{1163C}\\u{1163E}\\u{11641}-\\u{11644}\\u{11650}-\\u{11659}\\u{11680}-\\u{116AA}\\u{116AC}\\u{116AE}\\u{116AF}\\u{116B6}\\u{116B8}\\u{116B9}\\u{116C0}-\\u{116C9}\\u{11700}-\\u{1171A}\\u{11720}\\u{11721}\\u{11726}\\u{11730}-\\u{11746}\\u{11800}-\\u{1182E}\\u{11838}\\u{1183B}\\u{118A0}-\\u{118F2}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}\\u{11916}\\u{11918}-\\u{11935}\\u{11937}\\u{11938}\\u{1193D}\\u{1193F}-\\u{11942}\\u{11944}-\\u{11946}\\u{11950}-\\u{11959}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E1}-\\u{119E4}\\u{11A00}\\u{11A07}\\u{11A08}\\u{11A0B}-\\u{11A32}\\u{11A39}\\u{11A3A}\\u{11A3F}-\\u{11A46}\\u{11A50}\\u{11A57}\\u{11A58}\\u{11A5C}-\\u{11A89}\\u{11A97}\\u{11A9A}-\\u{11AA2}\\u{11AB0}-\\u{11AF8}\\u{11B00}-\\u{11B09}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2F}\\u{11C3E}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D50}-\\u{11D59}\\u{11D60}-\\u{11D65}\\u{11D67}\\u{11D68}\\u{11D6A}-\\u{11D8E}\\u{11D93}\\u{11D94}\\u{11D96}\\u{11D98}\\u{11DA0}-\\u{11DA9}\\u{11EE0}-\\u{11EF2}\\u{11EF5}-\\u{11EF8}\\u{11F02}-\\u{11F10}\\u{11F12}-\\u{11F35}\\u{11F3E}\\u{11F3F}\\u{11F41}\\u{11F43}-\\u{11F59}\\u{11FB0}\\u{11FC0}-\\u{11FD4}\\u{11FFF}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF2}\\u{13000}-\\u{1343F}\\u{13441}-\\u{13446}\\u{14400}-\\u{14646}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}-\\u{16ABE}\\u{16AC0}-\\u{16AC9}\\u{16AD0}-\\u{16AED}\\u{16AF5}\\u{16B00}-\\u{16B2F}\\u{16B37}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16E40}-\\u{16E9A}\\u{16F00}-\\u{16F4A}\\u{16F50}-\\u{16F87}\\u{16F93}-\\u{16F9F}\\u{16FE0}\\u{16FE1}\\u{16FE3}\\u{16FF0}\\u{16FF1}\\u{17000}-\\u{187F7}\\u{18800}-\\u{18CD5}\\u{18D00}-\\u{18D08}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}\\u{1BC9F}\\u{1CF50}-\\u{1CFC3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D166}\\u{1D16A}-\\u{1D172}\\u{1D183}\\u{1D184}\\u{1D18C}-\\u{1D1A9}\\u{1D1AE}-\\u{1D1E8}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D360}-\\u{1D378}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6DA}\\u{1D6DC}-\\u{1D714}\\u{1D716}-\\u{1D74E}\\u{1D750}-\\u{1D788}\\u{1D78A}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1D7CE}-\\u{1D9FF}\\u{1DA37}-\\u{1DA3A}\\u{1DA6D}-\\u{1DA74}\\u{1DA76}-\\u{1DA83}\\u{1DA85}-\\u{1DA8B}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E030}-\\u{1E06D}\\u{1E100}-\\u{1E12C}\\u{1E137}-\\u{1E13D}\\u{1E140}-\\u{1E149}\\u{1E14E}\\u{1E14F}\\u{1E290}-\\u{1E2AD}\\u{1E2C0}-\\u{1E2EB}\\u{1E2F0}-\\u{1E2F9}\\u{1E4D0}-\\u{1E4EB}\\u{1E4F0}-\\u{1E4F9}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1F100}-\\u{1F10A}\\u{1F110}-\\u{1F12E}\\u{1F130}-\\u{1F169}\\u{1F170}-\\u{1F1AC}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{1FBF0}-\\u{1FBF9}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B739}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{323AF}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}][\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10EAB}\\u{10EAC}\\u{10EFD}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11001}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{13440}\\u{13447}-\\u{13455}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]*$/u;\n\nmodule.exports = {\n combiningMarks,\n combiningClassVirama,\n validZWNJ,\n bidiDomain,\n bidiS1LTR,\n bidiS1RTL,\n bidiS2,\n bidiS3,\n bidiS4EN,\n bidiS4AN,\n bidiS5,\n bidiS6\n};\n","\"use strict\";\n\nmodule.exports.STATUS_MAPPING = {\n mapped: 1,\n valid: 2,\n disallowed: 3,\n disallowed_STD3_valid: 4,\n disallowed_STD3_mapped: 5,\n deviation: 6,\n ignored: 7\n};\n","\"use strict\";\n\nconst punycode = require(\"punycode/\");\nconst regexes = require(\"./lib/regexes.js\");\nconst mappingTable = require(\"./lib/mappingTable.json\");\nconst { STATUS_MAPPING } = require(\"./lib/statusMapping.js\");\n\nfunction containsNonASCII(str) {\n return /[^\\x00-\\x7F]/u.test(str);\n}\n\nfunction findStatus(val, { useSTD3ASCIIRules }) {\n let start = 0;\n let end = mappingTable.length - 1;\n\n while (start <= end) {\n const mid = Math.floor((start + end) / 2);\n\n const target = mappingTable[mid];\n const min = Array.isArray(target[0]) ? target[0][0] : target[0];\n const max = Array.isArray(target[0]) ? target[0][1] : target[0];\n\n if (min <= val && max >= val) {\n if (useSTD3ASCIIRules &&\n (target[1] === STATUS_MAPPING.disallowed_STD3_valid || target[1] === STATUS_MAPPING.disallowed_STD3_mapped)) {\n return [STATUS_MAPPING.disallowed, ...target.slice(2)];\n } else if (target[1] === STATUS_MAPPING.disallowed_STD3_valid) {\n return [STATUS_MAPPING.valid, ...target.slice(2)];\n } else if (target[1] === STATUS_MAPPING.disallowed_STD3_mapped) {\n return [STATUS_MAPPING.mapped, ...target.slice(2)];\n }\n\n return target.slice(1);\n } else if (min > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nfunction mapChars(domainName, { useSTD3ASCIIRules, processingOption }) {\n let hasError = false;\n let processed = \"\";\n\n for (const ch of domainName) {\n const [status, mapping] = findStatus(ch.codePointAt(0), { useSTD3ASCIIRules });\n\n switch (status) {\n case STATUS_MAPPING.disallowed:\n hasError = true;\n processed += ch;\n break;\n case STATUS_MAPPING.ignored:\n break;\n case STATUS_MAPPING.mapped:\n processed += mapping;\n break;\n case STATUS_MAPPING.deviation:\n if (processingOption === \"transitional\") {\n processed += mapping;\n } else {\n processed += ch;\n }\n break;\n case STATUS_MAPPING.valid:\n processed += ch;\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nfunction validateLabel(label, { checkHyphens, checkBidi, checkJoiners, processingOption, useSTD3ASCIIRules }) {\n if (label.normalize(\"NFC\") !== label) {\n return false;\n }\n\n const codePoints = Array.from(label);\n\n if (checkHyphens) {\n if ((codePoints[2] === \"-\" && codePoints[3] === \"-\") ||\n (label.startsWith(\"-\") || label.endsWith(\"-\"))) {\n return false;\n }\n }\n\n if (label.includes(\".\") ||\n (codePoints.length > 0 && regexes.combiningMarks.test(codePoints[0]))) {\n return false;\n }\n\n for (const ch of codePoints) {\n const [status] = findStatus(ch.codePointAt(0), { useSTD3ASCIIRules });\n if ((processingOption === \"transitional\" && status !== STATUS_MAPPING.valid) ||\n (processingOption === \"nontransitional\" &&\n status !== STATUS_MAPPING.valid && status !== STATUS_MAPPING.deviation)) {\n return false;\n }\n }\n\n // https://tools.ietf.org/html/rfc5892#appendix-A\n if (checkJoiners) {\n let last = 0;\n for (const [i, ch] of codePoints.entries()) {\n if (ch === \"\\u200C\" || ch === \"\\u200D\") {\n if (i > 0) {\n if (regexes.combiningClassVirama.test(codePoints[i - 1])) {\n continue;\n }\n if (ch === \"\\u200C\") {\n // TODO: make this more efficient\n const next = codePoints.indexOf(\"\\u200C\", i + 1);\n const test = next < 0 ? codePoints.slice(last) : codePoints.slice(last, next);\n if (regexes.validZWNJ.test(test.join(\"\"))) {\n last = i + 1;\n continue;\n }\n }\n }\n return false;\n }\n }\n }\n\n // https://tools.ietf.org/html/rfc5893#section-2\n // For the codePoints length check, see discussion in https://github.com/jsdom/whatwg-url/pull/250 and the second item\n // in https://github.com/whatwg/url/issues/744.\n if (checkBidi && codePoints.length > 0) {\n let rtl;\n\n // 1\n if (regexes.bidiS1LTR.test(codePoints[0])) {\n rtl = false;\n } else if (regexes.bidiS1RTL.test(codePoints[0])) {\n rtl = true;\n } else {\n return false;\n }\n\n if (rtl) {\n // 2-4\n if (!regexes.bidiS2.test(label) ||\n !regexes.bidiS3.test(label) ||\n (regexes.bidiS4EN.test(label) && regexes.bidiS4AN.test(label))) {\n return false;\n }\n } else if (!regexes.bidiS5.test(label) ||\n !regexes.bidiS6.test(label)) { // 5-6\n return false;\n }\n }\n\n return true;\n}\n\nfunction isBidiDomain(labels) {\n const domain = labels.map(label => {\n if (label.startsWith(\"xn--\")) {\n try {\n return punycode.decode(label.substring(4));\n } catch (err) {\n return \"\";\n }\n }\n return label;\n }).join(\".\");\n return regexes.bidiDomain.test(domain);\n}\n\nfunction processing(domainName, options) {\n const { processingOption } = options;\n\n // 1. Map.\n let { string, error } = mapChars(domainName, options);\n\n // 2. Normalize.\n string = string.normalize(\"NFC\");\n\n // 3. Break.\n const labels = string.split(\".\");\n const isBidi = isBidiDomain(labels);\n\n // 4. Convert/Validate.\n for (const [i, origLabel] of labels.entries()) {\n let label = origLabel;\n let curProcessing = processingOption;\n if (label.startsWith(\"xn--\")) {\n try {\n label = punycode.decode(label.substring(4));\n labels[i] = label;\n } catch (err) {\n error = true;\n continue;\n }\n curProcessing = \"nontransitional\";\n }\n\n // No need to validate if we already know there is an error.\n if (error) {\n continue;\n }\n const validation = validateLabel(label, {\n ...options,\n processingOption: curProcessing,\n checkBidi: options.checkBidi && isBidi\n });\n if (!validation) {\n error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error\n };\n}\n\nfunction toASCII(domainName, {\n checkHyphens = false,\n checkBidi = false,\n checkJoiners = false,\n useSTD3ASCIIRules = false,\n processingOption = \"nontransitional\",\n verifyDNSLength = false\n} = {}) {\n if (processingOption !== \"transitional\" && processingOption !== \"nontransitional\") {\n throw new RangeError(\"processingOption must be either transitional or nontransitional\");\n }\n\n const result = processing(domainName, {\n processingOption,\n checkHyphens,\n checkBidi,\n checkJoiners,\n useSTD3ASCIIRules\n });\n let labels = result.string.split(\".\");\n labels = labels.map(l => {\n if (containsNonASCII(l)) {\n try {\n return `xn--${punycode.encode(l)}`;\n } catch (e) {\n result.error = true;\n }\n }\n return l;\n });\n\n if (verifyDNSLength) {\n const total = labels.join(\".\").length;\n if (total > 253 || total === 0) {\n result.error = true;\n }\n\n for (let i = 0; i < labels.length; ++i) {\n if (labels[i].length > 63 || labels[i].length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) {\n return null;\n }\n return labels.join(\".\");\n}\n\nfunction toUnicode(domainName, {\n checkHyphens = false,\n checkBidi = false,\n checkJoiners = false,\n useSTD3ASCIIRules = false,\n processingOption = \"nontransitional\"\n} = {}) {\n const result = processing(domainName, {\n processingOption,\n checkHyphens,\n checkBidi,\n checkJoiners,\n useSTD3ASCIIRules\n });\n\n return {\n domain: result.string,\n error: result.error\n };\n}\n\nmodule.exports = {\n toASCII,\n toUnicode\n};\n","\"use strict\";\n\n// Note that we take code points as JS numbers, not JS strings.\n\nfunction isASCIIDigit(c) {\n return c >= 0x30 && c <= 0x39;\n}\n\nfunction isASCIIAlpha(c) {\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\n}\n\nfunction isASCIIAlphanumeric(c) {\n return isASCIIAlpha(c) || isASCIIDigit(c);\n}\n\nfunction isASCIIHex(c) {\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\n}\n\nmodule.exports = {\n isASCIIDigit,\n isASCIIAlpha,\n isASCIIAlphanumeric,\n isASCIIHex\n};\n","\"use strict\";\nconst utf8Encoder = new TextEncoder();\nconst utf8Decoder = new TextDecoder(\"utf-8\", { ignoreBOM: true });\n\nfunction utf8Encode(string) {\n return utf8Encoder.encode(string);\n}\n\nfunction utf8DecodeWithoutBOM(bytes) {\n return utf8Decoder.decode(bytes);\n}\n\nmodule.exports = {\n utf8Encode,\n utf8DecodeWithoutBOM\n};\n","\"use strict\";\nconst { isASCIIHex } = require(\"./infra\");\nconst { utf8Encode } = require(\"./encoding\");\n\nfunction p(char) {\n return char.codePointAt(0);\n}\n\n// https://url.spec.whatwg.org/#percent-encode\nfunction percentEncode(c) {\n let hex = c.toString(16).toUpperCase();\n if (hex.length === 1) {\n hex = `0${hex}`;\n }\n\n return `%${hex}`;\n}\n\n// https://url.spec.whatwg.org/#percent-decode\nfunction percentDecodeBytes(input) {\n const output = new Uint8Array(input.byteLength);\n let outputIndex = 0;\n for (let i = 0; i < input.byteLength; ++i) {\n const byte = input[i];\n if (byte !== 0x25) {\n output[outputIndex++] = byte;\n } else if (byte === 0x25 && (!isASCIIHex(input[i + 1]) || !isASCIIHex(input[i + 2]))) {\n output[outputIndex++] = byte;\n } else {\n const bytePoint = parseInt(String.fromCodePoint(input[i + 1], input[i + 2]), 16);\n output[outputIndex++] = bytePoint;\n i += 2;\n }\n }\n\n return output.slice(0, outputIndex);\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\nfunction percentDecodeString(input) {\n const bytes = utf8Encode(input);\n return percentDecodeBytes(bytes);\n}\n\n// https://url.spec.whatwg.org/#c0-control-percent-encode-set\nfunction isC0ControlPercentEncode(c) {\n return c <= 0x1F || c > 0x7E;\n}\n\n// https://url.spec.whatwg.org/#fragment-percent-encode-set\nconst extraFragmentPercentEncodeSet = new Set([p(\" \"), p(\"\\\"\"), p(\"<\"), p(\">\"), p(\"`\")]);\nfunction isFragmentPercentEncode(c) {\n return isC0ControlPercentEncode(c) || extraFragmentPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#query-percent-encode-set\nconst extraQueryPercentEncodeSet = new Set([p(\" \"), p(\"\\\"\"), p(\"#\"), p(\"<\"), p(\">\")]);\nfunction isQueryPercentEncode(c) {\n return isC0ControlPercentEncode(c) || extraQueryPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#special-query-percent-encode-set\nfunction isSpecialQueryPercentEncode(c) {\n return isQueryPercentEncode(c) || c === p(\"'\");\n}\n\n// https://url.spec.whatwg.org/#path-percent-encode-set\nconst extraPathPercentEncodeSet = new Set([p(\"?\"), p(\"`\"), p(\"{\"), p(\"}\")]);\nfunction isPathPercentEncode(c) {\n return isQueryPercentEncode(c) || extraPathPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#userinfo-percent-encode-set\nconst extraUserinfoPercentEncodeSet =\n new Set([p(\"/\"), p(\":\"), p(\";\"), p(\"=\"), p(\"@\"), p(\"[\"), p(\"\\\\\"), p(\"]\"), p(\"^\"), p(\"|\")]);\nfunction isUserinfoPercentEncode(c) {\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#component-percent-encode-set\nconst extraComponentPercentEncodeSet = new Set([p(\"$\"), p(\"%\"), p(\"&\"), p(\"+\"), p(\",\")]);\nfunction isComponentPercentEncode(c) {\n return isUserinfoPercentEncode(c) || extraComponentPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#application-x-www-form-urlencoded-percent-encode-set\nconst extraURLEncodedPercentEncodeSet = new Set([p(\"!\"), p(\"'\"), p(\"(\"), p(\")\"), p(\"~\")]);\nfunction isURLEncodedPercentEncode(c) {\n return isComponentPercentEncode(c) || extraURLEncodedPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#code-point-percent-encode-after-encoding\n// https://url.spec.whatwg.org/#utf-8-percent-encode\n// Assuming encoding is always utf-8 allows us to trim one of the logic branches. TODO: support encoding.\n// The \"-Internal\" variant here has code points as JS strings. The external version used by other files has code points\n// as JS numbers, like the rest of the codebase.\nfunction utf8PercentEncodeCodePointInternal(codePoint, percentEncodePredicate) {\n const bytes = utf8Encode(codePoint);\n let output = \"\";\n for (const byte of bytes) {\n // Our percentEncodePredicate operates on bytes, not code points, so this is slightly different from the spec.\n if (!percentEncodePredicate(byte)) {\n output += String.fromCharCode(byte);\n } else {\n output += percentEncode(byte);\n }\n }\n\n return output;\n}\n\nfunction utf8PercentEncodeCodePoint(codePoint, percentEncodePredicate) {\n return utf8PercentEncodeCodePointInternal(String.fromCodePoint(codePoint), percentEncodePredicate);\n}\n\n// https://url.spec.whatwg.org/#string-percent-encode-after-encoding\n// https://url.spec.whatwg.org/#string-utf-8-percent-encode\nfunction utf8PercentEncodeString(input, percentEncodePredicate, spaceAsPlus = false) {\n let output = \"\";\n for (const codePoint of input) {\n if (spaceAsPlus && codePoint === \" \") {\n output += \"+\";\n } else {\n output += utf8PercentEncodeCodePointInternal(codePoint, percentEncodePredicate);\n }\n }\n return output;\n}\n\nmodule.exports = {\n isC0ControlPercentEncode,\n isFragmentPercentEncode,\n isQueryPercentEncode,\n isSpecialQueryPercentEncode,\n isPathPercentEncode,\n isUserinfoPercentEncode,\n isURLEncodedPercentEncode,\n percentDecodeString,\n percentDecodeBytes,\n utf8PercentEncodeString,\n utf8PercentEncodeCodePoint\n};\n","\"use strict\";\nconst tr46 = require(\"tr46\");\n\nconst infra = require(\"./infra\");\nconst { utf8DecodeWithoutBOM } = require(\"./encoding\");\nconst { percentDecodeString, utf8PercentEncodeCodePoint, utf8PercentEncodeString, isC0ControlPercentEncode,\n isFragmentPercentEncode, isQueryPercentEncode, isSpecialQueryPercentEncode, isPathPercentEncode,\n isUserinfoPercentEncode } = require(\"./percent-encoding\");\n\nfunction p(char) {\n return char.codePointAt(0);\n}\n\nconst specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nconst failure = Symbol(\"failure\");\n\nfunction countSymbols(str) {\n return [...str].length;\n}\n\nfunction at(input, idx) {\n const c = input[idx];\n return isNaN(c) ? undefined : String.fromCodePoint(c);\n}\n\nfunction isSingleDot(buffer) {\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\n}\n\nfunction isDoubleDot(buffer) {\n buffer = buffer.toLowerCase();\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\n}\n\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\n return infra.isASCIIAlpha(cp1) && (cp2 === p(\":\") || cp2 === p(\"|\"));\n}\n\nfunction isWindowsDriveLetterString(string) {\n return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\n}\n\nfunction isNormalizedWindowsDriveLetterString(string) {\n return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\n}\n\nfunction containsForbiddenHostCodePoint(string) {\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|<|>|\\?|@|\\[|\\\\|\\]|\\^|\\|/u) !== -1;\n}\n\nfunction containsForbiddenDomainCodePoint(string) {\n return containsForbiddenHostCodePoint(string) || string.search(/[\\u0000-\\u001F]|%|\\u007F/u) !== -1;\n}\n\nfunction isSpecialScheme(scheme) {\n return specialSchemes[scheme] !== undefined;\n}\n\nfunction isSpecial(url) {\n return isSpecialScheme(url.scheme);\n}\n\nfunction isNotSpecial(url) {\n return !isSpecialScheme(url.scheme);\n}\n\nfunction defaultPort(scheme) {\n return specialSchemes[scheme];\n}\n\nfunction parseIPv4Number(input) {\n if (input === \"\") {\n return failure;\n }\n\n let R = 10;\n\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\n input = input.substring(2);\n R = 16;\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\n input = input.substring(1);\n R = 8;\n }\n\n if (input === \"\") {\n return 0;\n }\n\n let regex = /[^0-7]/u;\n if (R === 10) {\n regex = /[^0-9]/u;\n }\n if (R === 16) {\n regex = /[^0-9A-Fa-f]/u;\n }\n\n if (regex.test(input)) {\n return failure;\n }\n\n return parseInt(input, R);\n}\n\nfunction parseIPv4(input) {\n const parts = input.split(\".\");\n if (parts[parts.length - 1] === \"\") {\n if (parts.length > 1) {\n parts.pop();\n }\n }\n\n if (parts.length > 4) {\n return failure;\n }\n\n const numbers = [];\n for (const part of parts) {\n const n = parseIPv4Number(part);\n if (n === failure) {\n return failure;\n }\n\n numbers.push(n);\n }\n\n for (let i = 0; i < numbers.length - 1; ++i) {\n if (numbers[i] > 255) {\n return failure;\n }\n }\n if (numbers[numbers.length - 1] >= 256 ** (5 - numbers.length)) {\n return failure;\n }\n\n let ipv4 = numbers.pop();\n let counter = 0;\n\n for (const n of numbers) {\n ipv4 += n * 256 ** (3 - counter);\n ++counter;\n }\n\n return ipv4;\n}\n\nfunction serializeIPv4(address) {\n let output = \"\";\n let n = address;\n\n for (let i = 1; i <= 4; ++i) {\n output = String(n % 256) + output;\n if (i !== 4) {\n output = `.${output}`;\n }\n n = Math.floor(n / 256);\n }\n\n return output;\n}\n\nfunction parseIPv6(input) {\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\n let pieceIndex = 0;\n let compress = null;\n let pointer = 0;\n\n input = Array.from(input, c => c.codePointAt(0));\n\n if (input[pointer] === p(\":\")) {\n if (input[pointer + 1] !== p(\":\")) {\n return failure;\n }\n\n pointer += 2;\n ++pieceIndex;\n compress = pieceIndex;\n }\n\n while (pointer < input.length) {\n if (pieceIndex === 8) {\n return failure;\n }\n\n if (input[pointer] === p(\":\")) {\n if (compress !== null) {\n return failure;\n }\n ++pointer;\n ++pieceIndex;\n compress = pieceIndex;\n continue;\n }\n\n let value = 0;\n let length = 0;\n\n while (length < 4 && infra.isASCIIHex(input[pointer])) {\n value = value * 0x10 + parseInt(at(input, pointer), 16);\n ++pointer;\n ++length;\n }\n\n if (input[pointer] === p(\".\")) {\n if (length === 0) {\n return failure;\n }\n\n pointer -= length;\n\n if (pieceIndex > 6) {\n return failure;\n }\n\n let numbersSeen = 0;\n\n while (input[pointer] !== undefined) {\n let ipv4Piece = null;\n\n if (numbersSeen > 0) {\n if (input[pointer] === p(\".\") && numbersSeen < 4) {\n ++pointer;\n } else {\n return failure;\n }\n }\n\n if (!infra.isASCIIDigit(input[pointer])) {\n return failure;\n }\n\n while (infra.isASCIIDigit(input[pointer])) {\n const number = parseInt(at(input, pointer));\n if (ipv4Piece === null) {\n ipv4Piece = number;\n } else if (ipv4Piece === 0) {\n return failure;\n } else {\n ipv4Piece = ipv4Piece * 10 + number;\n }\n if (ipv4Piece > 255) {\n return failure;\n }\n ++pointer;\n }\n\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\n\n ++numbersSeen;\n\n if (numbersSeen === 2 || numbersSeen === 4) {\n ++pieceIndex;\n }\n }\n\n if (numbersSeen !== 4) {\n return failure;\n }\n\n break;\n } else if (input[pointer] === p(\":\")) {\n ++pointer;\n if (input[pointer] === undefined) {\n return failure;\n }\n } else if (input[pointer] !== undefined) {\n return failure;\n }\n\n address[pieceIndex] = value;\n ++pieceIndex;\n }\n\n if (compress !== null) {\n let swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex !== 0 && swaps > 0) {\n const temp = address[compress + swaps - 1];\n address[compress + swaps - 1] = address[pieceIndex];\n address[pieceIndex] = temp;\n --pieceIndex;\n --swaps;\n }\n } else if (compress === null && pieceIndex !== 8) {\n return failure;\n }\n\n return address;\n}\n\nfunction serializeIPv6(address) {\n let output = \"\";\n const compress = findLongestZeroSequence(address);\n let ignore0 = false;\n\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\n if (ignore0 && address[pieceIndex] === 0) {\n continue;\n } else if (ignore0) {\n ignore0 = false;\n }\n\n if (compress === pieceIndex) {\n const separator = pieceIndex === 0 ? \"::\" : \":\";\n output += separator;\n ignore0 = true;\n continue;\n }\n\n output += address[pieceIndex].toString(16);\n\n if (pieceIndex !== 7) {\n output += \":\";\n }\n }\n\n return output;\n}\n\nfunction parseHost(input, isNotSpecialArg = false) {\n if (input[0] === \"[\") {\n if (input[input.length - 1] !== \"]\") {\n return failure;\n }\n\n return parseIPv6(input.substring(1, input.length - 1));\n }\n\n if (isNotSpecialArg) {\n return parseOpaqueHost(input);\n }\n\n const domain = utf8DecodeWithoutBOM(percentDecodeString(input));\n const asciiDomain = domainToASCII(domain);\n if (asciiDomain === failure) {\n return failure;\n }\n\n if (containsForbiddenDomainCodePoint(asciiDomain)) {\n return failure;\n }\n\n if (endsInANumber(asciiDomain)) {\n return parseIPv4(asciiDomain);\n }\n\n return asciiDomain;\n}\n\nfunction endsInANumber(input) {\n const parts = input.split(\".\");\n if (parts[parts.length - 1] === \"\") {\n if (parts.length === 1) {\n return false;\n }\n parts.pop();\n }\n\n const last = parts[parts.length - 1];\n if (parseIPv4Number(last) !== failure) {\n return true;\n }\n\n if (/^[0-9]+$/u.test(last)) {\n return true;\n }\n\n return false;\n}\n\nfunction parseOpaqueHost(input) {\n if (containsForbiddenHostCodePoint(input)) {\n return failure;\n }\n\n return utf8PercentEncodeString(input, isC0ControlPercentEncode);\n}\n\nfunction findLongestZeroSequence(arr) {\n let maxIdx = null;\n let maxLen = 1; // only find elements > 1\n let currStart = null;\n let currLen = 0;\n\n for (let i = 0; i < arr.length; ++i) {\n if (arr[i] !== 0) {\n if (currLen > maxLen) {\n maxIdx = currStart;\n maxLen = currLen;\n }\n\n currStart = null;\n currLen = 0;\n } else {\n if (currStart === null) {\n currStart = i;\n }\n ++currLen;\n }\n }\n\n // if trailing zeros\n if (currLen > maxLen) {\n return currStart;\n }\n\n return maxIdx;\n}\n\nfunction serializeHost(host) {\n if (typeof host === \"number\") {\n return serializeIPv4(host);\n }\n\n // IPv6 serializer\n if (host instanceof Array) {\n return `[${serializeIPv6(host)}]`;\n }\n\n return host;\n}\n\nfunction domainToASCII(domain, beStrict = false) {\n const result = tr46.toASCII(domain, {\n checkBidi: true,\n checkHyphens: false,\n checkJoiners: true,\n useSTD3ASCIIRules: beStrict,\n verifyDNSLength: beStrict\n });\n if (result === null || result === \"\") {\n return failure;\n }\n return result;\n}\n\nfunction trimControlChars(url) {\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/ug, \"\");\n}\n\nfunction trimTabAndNewline(url) {\n return url.replace(/\\u0009|\\u000A|\\u000D/ug, \"\");\n}\n\nfunction shortenPath(url) {\n const { path } = url;\n if (path.length === 0) {\n return;\n }\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\n return;\n }\n\n path.pop();\n}\n\nfunction includesCredentials(url) {\n return url.username !== \"\" || url.password !== \"\";\n}\n\nfunction cannotHaveAUsernamePasswordPort(url) {\n return url.host === null || url.host === \"\" || url.scheme === \"file\";\n}\n\nfunction hasAnOpaquePath(url) {\n return typeof url.path === \"string\";\n}\n\nfunction isNormalizedWindowsDriveLetter(string) {\n return /^[A-Za-z]:$/u.test(string);\n}\n\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\n this.pointer = 0;\n this.input = input;\n this.base = base || null;\n this.encodingOverride = encodingOverride || \"utf-8\";\n this.stateOverride = stateOverride;\n this.url = url;\n this.failure = false;\n this.parseError = false;\n\n if (!this.url) {\n this.url = {\n scheme: \"\",\n username: \"\",\n password: \"\",\n host: null,\n port: null,\n path: [],\n query: null,\n fragment: null\n };\n\n const res = trimControlChars(this.input);\n if (res !== this.input) {\n this.parseError = true;\n }\n this.input = res;\n }\n\n const res = trimTabAndNewline(this.input);\n if (res !== this.input) {\n this.parseError = true;\n }\n this.input = res;\n\n this.state = stateOverride || \"scheme start\";\n\n this.buffer = \"\";\n this.atFlag = false;\n this.arrFlag = false;\n this.passwordTokenSeenFlag = false;\n\n this.input = Array.from(this.input, c => c.codePointAt(0));\n\n for (; this.pointer <= this.input.length; ++this.pointer) {\n const c = this.input[this.pointer];\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\n\n // exec state machine\n const ret = this[`parse ${this.state}`](c, cStr);\n if (!ret) {\n break; // terminate algorithm\n } else if (ret === failure) {\n this.failure = true;\n break;\n }\n }\n}\n\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\n if (infra.isASCIIAlpha(c)) {\n this.buffer += cStr.toLowerCase();\n this.state = \"scheme\";\n } else if (!this.stateOverride) {\n this.state = \"no scheme\";\n --this.pointer;\n } else {\n this.parseError = true;\n return failure;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\n if (infra.isASCIIAlphanumeric(c) || c === p(\"+\") || c === p(\"-\") || c === p(\".\")) {\n this.buffer += cStr.toLowerCase();\n } else if (c === p(\":\")) {\n if (this.stateOverride) {\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\n return false;\n }\n\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\n return false;\n }\n\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\n return false;\n }\n\n if (this.url.scheme === \"file\" && this.url.host === \"\") {\n return false;\n }\n }\n this.url.scheme = this.buffer;\n if (this.stateOverride) {\n if (this.url.port === defaultPort(this.url.scheme)) {\n this.url.port = null;\n }\n return false;\n }\n this.buffer = \"\";\n if (this.url.scheme === \"file\") {\n if (this.input[this.pointer + 1] !== p(\"/\") || this.input[this.pointer + 2] !== p(\"/\")) {\n this.parseError = true;\n }\n this.state = \"file\";\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\n this.state = \"special relative or authority\";\n } else if (isSpecial(this.url)) {\n this.state = \"special authority slashes\";\n } else if (this.input[this.pointer + 1] === p(\"/\")) {\n this.state = \"path or authority\";\n ++this.pointer;\n } else {\n this.url.path = \"\";\n this.state = \"opaque path\";\n }\n } else if (!this.stateOverride) {\n this.buffer = \"\";\n this.state = \"no scheme\";\n this.pointer = -1;\n } else {\n this.parseError = true;\n return failure;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\n if (this.base === null || (hasAnOpaquePath(this.base) && c !== p(\"#\"))) {\n return failure;\n } else if (hasAnOpaquePath(this.base) && c === p(\"#\")) {\n this.url.scheme = this.base.scheme;\n this.url.path = this.base.path;\n this.url.query = this.base.query;\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else if (this.base.scheme === \"file\") {\n this.state = \"file\";\n --this.pointer;\n } else {\n this.state = \"relative\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\n if (c === p(\"/\") && this.input[this.pointer + 1] === p(\"/\")) {\n this.state = \"special authority ignore slashes\";\n ++this.pointer;\n } else {\n this.parseError = true;\n this.state = \"relative\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\n if (c === p(\"/\")) {\n this.state = \"authority\";\n } else {\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\n this.url.scheme = this.base.scheme;\n if (c === p(\"/\")) {\n this.state = \"relative slash\";\n } else if (isSpecial(this.url) && c === p(\"\\\\\")) {\n this.parseError = true;\n this.state = \"relative slash\";\n } else {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n if (c === p(\"?\")) {\n this.url.query = \"\";\n this.state = \"query\";\n } else if (c === p(\"#\")) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else if (!isNaN(c)) {\n this.url.query = null;\n this.url.path.pop();\n this.state = \"path\";\n --this.pointer;\n }\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\n if (isSpecial(this.url) && (c === p(\"/\") || c === p(\"\\\\\"))) {\n if (c === p(\"\\\\\")) {\n this.parseError = true;\n }\n this.state = \"special authority ignore slashes\";\n } else if (c === p(\"/\")) {\n this.state = \"authority\";\n } else {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\n if (c === p(\"/\") && this.input[this.pointer + 1] === p(\"/\")) {\n this.state = \"special authority ignore slashes\";\n ++this.pointer;\n } else {\n this.parseError = true;\n this.state = \"special authority ignore slashes\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\n if (c !== p(\"/\") && c !== p(\"\\\\\")) {\n this.state = \"authority\";\n --this.pointer;\n } else {\n this.parseError = true;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\n if (c === p(\"@\")) {\n this.parseError = true;\n if (this.atFlag) {\n this.buffer = `%40${this.buffer}`;\n }\n this.atFlag = true;\n\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\n const len = countSymbols(this.buffer);\n for (let pointer = 0; pointer < len; ++pointer) {\n const codePoint = this.buffer.codePointAt(pointer);\n\n if (codePoint === p(\":\") && !this.passwordTokenSeenFlag) {\n this.passwordTokenSeenFlag = true;\n continue;\n }\n const encodedCodePoints = utf8PercentEncodeCodePoint(codePoint, isUserinfoPercentEncode);\n if (this.passwordTokenSeenFlag) {\n this.url.password += encodedCodePoints;\n } else {\n this.url.username += encodedCodePoints;\n }\n }\n this.buffer = \"\";\n } else if (isNaN(c) || c === p(\"/\") || c === p(\"?\") || c === p(\"#\") ||\n (isSpecial(this.url) && c === p(\"\\\\\"))) {\n if (this.atFlag && this.buffer === \"\") {\n this.parseError = true;\n return failure;\n }\n this.pointer -= countSymbols(this.buffer) + 1;\n this.buffer = \"\";\n this.state = \"host\";\n } else {\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse hostname\"] =\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\n if (this.stateOverride && this.url.scheme === \"file\") {\n --this.pointer;\n this.state = \"file host\";\n } else if (c === p(\":\") && !this.arrFlag) {\n if (this.buffer === \"\") {\n this.parseError = true;\n return failure;\n }\n\n if (this.stateOverride === \"hostname\") {\n return false;\n }\n\n const host = parseHost(this.buffer, isNotSpecial(this.url));\n if (host === failure) {\n return failure;\n }\n\n this.url.host = host;\n this.buffer = \"\";\n this.state = \"port\";\n } else if (isNaN(c) || c === p(\"/\") || c === p(\"?\") || c === p(\"#\") ||\n (isSpecial(this.url) && c === p(\"\\\\\"))) {\n --this.pointer;\n if (isSpecial(this.url) && this.buffer === \"\") {\n this.parseError = true;\n return failure;\n } else if (this.stateOverride && this.buffer === \"\" &&\n (includesCredentials(this.url) || this.url.port !== null)) {\n this.parseError = true;\n return false;\n }\n\n const host = parseHost(this.buffer, isNotSpecial(this.url));\n if (host === failure) {\n return failure;\n }\n\n this.url.host = host;\n this.buffer = \"\";\n this.state = \"path start\";\n if (this.stateOverride) {\n return false;\n }\n } else {\n if (c === p(\"[\")) {\n this.arrFlag = true;\n } else if (c === p(\"]\")) {\n this.arrFlag = false;\n }\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\n if (infra.isASCIIDigit(c)) {\n this.buffer += cStr;\n } else if (isNaN(c) || c === p(\"/\") || c === p(\"?\") || c === p(\"#\") ||\n (isSpecial(this.url) && c === p(\"\\\\\")) ||\n this.stateOverride) {\n if (this.buffer !== \"\") {\n const port = parseInt(this.buffer);\n if (port > 2 ** 16 - 1) {\n this.parseError = true;\n return failure;\n }\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\n this.buffer = \"\";\n }\n if (this.stateOverride) {\n return false;\n }\n this.state = \"path start\";\n --this.pointer;\n } else {\n this.parseError = true;\n return failure;\n }\n\n return true;\n};\n\nconst fileOtherwiseCodePoints = new Set([p(\"/\"), p(\"\\\\\"), p(\"?\"), p(\"#\")]);\n\nfunction startsWithWindowsDriveLetter(input, pointer) {\n const length = input.length - pointer;\n return length >= 2 &&\n isWindowsDriveLetterCodePoints(input[pointer], input[pointer + 1]) &&\n (length === 2 || fileOtherwiseCodePoints.has(input[pointer + 2]));\n}\n\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\n this.url.scheme = \"file\";\n this.url.host = \"\";\n\n if (c === p(\"/\") || c === p(\"\\\\\")) {\n if (c === p(\"\\\\\")) {\n this.parseError = true;\n }\n this.state = \"file slash\";\n } else if (this.base !== null && this.base.scheme === \"file\") {\n this.url.host = this.base.host;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n if (c === p(\"?\")) {\n this.url.query = \"\";\n this.state = \"query\";\n } else if (c === p(\"#\")) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else if (!isNaN(c)) {\n this.url.query = null;\n if (!startsWithWindowsDriveLetter(this.input, this.pointer)) {\n shortenPath(this.url);\n } else {\n this.parseError = true;\n this.url.path = [];\n }\n\n this.state = \"path\";\n --this.pointer;\n }\n } else {\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\n if (c === p(\"/\") || c === p(\"\\\\\")) {\n if (c === p(\"\\\\\")) {\n this.parseError = true;\n }\n this.state = \"file host\";\n } else {\n if (this.base !== null && this.base.scheme === \"file\") {\n if (!startsWithWindowsDriveLetter(this.input, this.pointer) &&\n isNormalizedWindowsDriveLetterString(this.base.path[0])) {\n this.url.path.push(this.base.path[0]);\n }\n this.url.host = this.base.host;\n }\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\n if (isNaN(c) || c === p(\"/\") || c === p(\"\\\\\") || c === p(\"?\") || c === p(\"#\")) {\n --this.pointer;\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\n this.parseError = true;\n this.state = \"path\";\n } else if (this.buffer === \"\") {\n this.url.host = \"\";\n if (this.stateOverride) {\n return false;\n }\n this.state = \"path start\";\n } else {\n let host = parseHost(this.buffer, isNotSpecial(this.url));\n if (host === failure) {\n return failure;\n }\n if (host === \"localhost\") {\n host = \"\";\n }\n this.url.host = host;\n\n if (this.stateOverride) {\n return false;\n }\n\n this.buffer = \"\";\n this.state = \"path start\";\n }\n } else {\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\n if (isSpecial(this.url)) {\n if (c === p(\"\\\\\")) {\n this.parseError = true;\n }\n this.state = \"path\";\n\n if (c !== p(\"/\") && c !== p(\"\\\\\")) {\n --this.pointer;\n }\n } else if (!this.stateOverride && c === p(\"?\")) {\n this.url.query = \"\";\n this.state = \"query\";\n } else if (!this.stateOverride && c === p(\"#\")) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else if (c !== undefined) {\n this.state = \"path\";\n if (c !== p(\"/\")) {\n --this.pointer;\n }\n } else if (this.stateOverride && this.url.host === null) {\n this.url.path.push(\"\");\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\n if (isNaN(c) || c === p(\"/\") || (isSpecial(this.url) && c === p(\"\\\\\")) ||\n (!this.stateOverride && (c === p(\"?\") || c === p(\"#\")))) {\n if (isSpecial(this.url) && c === p(\"\\\\\")) {\n this.parseError = true;\n }\n\n if (isDoubleDot(this.buffer)) {\n shortenPath(this.url);\n if (c !== p(\"/\") && !(isSpecial(this.url) && c === p(\"\\\\\"))) {\n this.url.path.push(\"\");\n }\n } else if (isSingleDot(this.buffer) && c !== p(\"/\") &&\n !(isSpecial(this.url) && c === p(\"\\\\\"))) {\n this.url.path.push(\"\");\n } else if (!isSingleDot(this.buffer)) {\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\n this.buffer = `${this.buffer[0]}:`;\n }\n this.url.path.push(this.buffer);\n }\n this.buffer = \"\";\n if (c === p(\"?\")) {\n this.url.query = \"\";\n this.state = \"query\";\n }\n if (c === p(\"#\")) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n }\n } else {\n // TODO: If c is not a URL code point and not \"%\", parse error.\n\n if (c === p(\"%\") &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n this.buffer += utf8PercentEncodeCodePoint(c, isPathPercentEncode);\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse opaque path\"] = function parseOpaquePath(c) {\n if (c === p(\"?\")) {\n this.url.query = \"\";\n this.state = \"query\";\n } else if (c === p(\"#\")) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else {\n // TODO: Add: not a URL code point\n if (!isNaN(c) && c !== p(\"%\")) {\n this.parseError = true;\n }\n\n if (c === p(\"%\") &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n if (!isNaN(c)) {\n this.url.path += utf8PercentEncodeCodePoint(c, isC0ControlPercentEncode);\n }\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\n this.encodingOverride = \"utf-8\";\n }\n\n if ((!this.stateOverride && c === p(\"#\")) || isNaN(c)) {\n const queryPercentEncodePredicate = isSpecial(this.url) ? isSpecialQueryPercentEncode : isQueryPercentEncode;\n this.url.query += utf8PercentEncodeString(this.buffer, queryPercentEncodePredicate);\n\n this.buffer = \"\";\n\n if (c === p(\"#\")) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n }\n } else if (!isNaN(c)) {\n // TODO: If c is not a URL code point and not \"%\", parse error.\n\n if (c === p(\"%\") &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\n if (!isNaN(c)) {\n // TODO: If c is not a URL code point and not \"%\", parse error.\n if (c === p(\"%\") &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n this.url.fragment += utf8PercentEncodeCodePoint(c, isFragmentPercentEncode);\n }\n\n return true;\n};\n\nfunction serializeURL(url, excludeFragment) {\n let output = `${url.scheme}:`;\n if (url.host !== null) {\n output += \"//\";\n\n if (url.username !== \"\" || url.password !== \"\") {\n output += url.username;\n if (url.password !== \"\") {\n output += `:${url.password}`;\n }\n output += \"@\";\n }\n\n output += serializeHost(url.host);\n\n if (url.port !== null) {\n output += `:${url.port}`;\n }\n }\n\n if (url.host === null && !hasAnOpaquePath(url) && url.path.length > 1 && url.path[0] === \"\") {\n output += \"/.\";\n }\n output += serializePath(url);\n\n if (url.query !== null) {\n output += `?${url.query}`;\n }\n\n if (!excludeFragment && url.fragment !== null) {\n output += `#${url.fragment}`;\n }\n\n return output;\n}\n\nfunction serializeOrigin(tuple) {\n let result = `${tuple.scheme}://`;\n result += serializeHost(tuple.host);\n\n if (tuple.port !== null) {\n result += `:${tuple.port}`;\n }\n\n return result;\n}\n\nfunction serializePath(url) {\n if (hasAnOpaquePath(url)) {\n return url.path;\n }\n\n let output = \"\";\n for (const segment of url.path) {\n output += `/${segment}`;\n }\n return output;\n}\n\nmodule.exports.serializeURL = serializeURL;\n\nmodule.exports.serializePath = serializePath;\n\nmodule.exports.serializeURLOrigin = function (url) {\n // https://url.spec.whatwg.org/#concept-url-origin\n switch (url.scheme) {\n case \"blob\":\n try {\n return module.exports.serializeURLOrigin(module.exports.parseURL(serializePath(url)));\n } catch (e) {\n // serializing an opaque origin returns \"null\"\n return \"null\";\n }\n case \"ftp\":\n case \"http\":\n case \"https\":\n case \"ws\":\n case \"wss\":\n return serializeOrigin({\n scheme: url.scheme,\n host: url.host,\n port: url.port\n });\n case \"file\":\n // The spec says:\n // > Unfortunate as it is, this is left as an exercise to the reader. When in doubt, return a new opaque origin.\n // Browsers tested so far:\n // - Chrome says \"file://\", but treats file: URLs as cross-origin for most (all?) purposes; see e.g.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=37586\n // - Firefox says \"null\", but treats file: URLs as same-origin sometimes based on directory stuff; see\n // https://developer.mozilla.org/en-US/docs/Archive/Misc_top_level/Same-origin_policy_for_file:_URIs\n return \"null\";\n default:\n // serializing an opaque origin returns \"null\"\n return \"null\";\n }\n};\n\nmodule.exports.basicURLParse = function (input, options) {\n if (options === undefined) {\n options = {};\n }\n\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\n if (usm.failure) {\n return null;\n }\n\n return usm.url;\n};\n\nmodule.exports.setTheUsername = function (url, username) {\n url.username = utf8PercentEncodeString(username, isUserinfoPercentEncode);\n};\n\nmodule.exports.setThePassword = function (url, password) {\n url.password = utf8PercentEncodeString(password, isUserinfoPercentEncode);\n};\n\nmodule.exports.serializeHost = serializeHost;\n\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\n\nmodule.exports.hasAnOpaquePath = hasAnOpaquePath;\n\nmodule.exports.serializeInteger = function (integer) {\n return String(integer);\n};\n\nmodule.exports.parseURL = function (input, options) {\n if (options === undefined) {\n options = {};\n }\n\n // We don't handle blobs, so this just delegates:\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\n};\n","\"use strict\";\nconst { utf8Encode, utf8DecodeWithoutBOM } = require(\"./encoding\");\nconst { percentDecodeBytes, utf8PercentEncodeString, isURLEncodedPercentEncode } = require(\"./percent-encoding\");\n\nfunction p(char) {\n return char.codePointAt(0);\n}\n\n// https://url.spec.whatwg.org/#concept-urlencoded-parser\nfunction parseUrlencoded(input) {\n const sequences = strictlySplitByteSequence(input, p(\"&\"));\n const output = [];\n for (const bytes of sequences) {\n if (bytes.length === 0) {\n continue;\n }\n\n let name, value;\n const indexOfEqual = bytes.indexOf(p(\"=\"));\n\n if (indexOfEqual >= 0) {\n name = bytes.slice(0, indexOfEqual);\n value = bytes.slice(indexOfEqual + 1);\n } else {\n name = bytes;\n value = new Uint8Array(0);\n }\n\n name = replaceByteInByteSequence(name, 0x2B, 0x20);\n value = replaceByteInByteSequence(value, 0x2B, 0x20);\n\n const nameString = utf8DecodeWithoutBOM(percentDecodeBytes(name));\n const valueString = utf8DecodeWithoutBOM(percentDecodeBytes(value));\n\n output.push([nameString, valueString]);\n }\n return output;\n}\n\n// https://url.spec.whatwg.org/#concept-urlencoded-string-parser\nfunction parseUrlencodedString(input) {\n return parseUrlencoded(utf8Encode(input));\n}\n\n// https://url.spec.whatwg.org/#concept-urlencoded-serializer\nfunction serializeUrlencoded(tuples, encodingOverride = undefined) {\n let encoding = \"utf-8\";\n if (encodingOverride !== undefined) {\n // TODO \"get the output encoding\", i.e. handle encoding labels vs. names.\n encoding = encodingOverride;\n }\n\n let output = \"\";\n for (const [i, tuple] of tuples.entries()) {\n // TODO: handle encoding override\n\n const name = utf8PercentEncodeString(tuple[0], isURLEncodedPercentEncode, true);\n\n let value = tuple[1];\n if (tuple.length > 2 && tuple[2] !== undefined) {\n if (tuple[2] === \"hidden\" && name === \"_charset_\") {\n value = encoding;\n } else if (tuple[2] === \"file\") {\n // value is a File object\n value = value.name;\n }\n }\n\n value = utf8PercentEncodeString(value, isURLEncodedPercentEncode, true);\n\n if (i !== 0) {\n output += \"&\";\n }\n output += `${name}=${value}`;\n }\n return output;\n}\n\nfunction strictlySplitByteSequence(buf, cp) {\n const list = [];\n let last = 0;\n let i = buf.indexOf(cp);\n while (i >= 0) {\n list.push(buf.slice(last, i));\n last = i + 1;\n i = buf.indexOf(cp, last);\n }\n if (last !== buf.length) {\n list.push(buf.slice(last));\n }\n return list;\n}\n\nfunction replaceByteInByteSequence(buf, from, to) {\n let i = buf.indexOf(from);\n while (i >= 0) {\n buf[i] = to;\n i = buf.indexOf(from, i + 1);\n }\n return buf;\n}\n\nmodule.exports = {\n parseUrlencodedString,\n serializeUrlencoded\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n if (typeof value !== \"function\") {\n throw new globalObject.TypeError(context + \" is not a function\");\n }\n\n function invokeTheCallbackFunction(...args) {\n const thisArg = utils.tryWrapperForImpl(this);\n let callResult;\n\n for (let i = 0; i < args.length; i++) {\n args[i] = utils.tryWrapperForImpl(args[i]);\n }\n\n callResult = Reflect.apply(value, thisArg, args);\n\n callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n return callResult;\n }\n\n invokeTheCallbackFunction.construct = (...args) => {\n for (let i = 0; i < args.length; i++) {\n args[i] = utils.tryWrapperForImpl(args[i]);\n }\n\n let callResult = Reflect.construct(value, args);\n\n callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n return callResult;\n };\n\n invokeTheCallbackFunction[utils.wrapperSymbol] = value;\n invokeTheCallbackFunction.objectReference = value;\n\n return invokeTheCallbackFunction;\n};\n","\"use strict\";\nconst urlencoded = require(\"./urlencoded\");\n\nexports.implementation = class URLSearchParamsImpl {\n constructor(globalObject, constructorArgs, { doNotStripQMark = false }) {\n let init = constructorArgs[0];\n this._list = [];\n this._url = null;\n\n if (!doNotStripQMark && typeof init === \"string\" && init[0] === \"?\") {\n init = init.slice(1);\n }\n\n if (Array.isArray(init)) {\n for (const pair of init) {\n if (pair.length !== 2) {\n throw new TypeError(\"Failed to construct 'URLSearchParams': parameter 1 sequence's element does not \" +\n \"contain exactly two elements.\");\n }\n this._list.push([pair[0], pair[1]]);\n }\n } else if (typeof init === \"object\" && Object.getPrototypeOf(init) === null) {\n for (const name of Object.keys(init)) {\n const value = init[name];\n this._list.push([name, value]);\n }\n } else {\n this._list = urlencoded.parseUrlencodedString(init);\n }\n }\n\n _updateSteps() {\n if (this._url !== null) {\n let serializedQuery = urlencoded.serializeUrlencoded(this._list);\n if (serializedQuery === \"\") {\n serializedQuery = null;\n }\n\n this._url._url.query = serializedQuery;\n\n if (serializedQuery === null) {\n this._url._potentiallyStripTrailingSpacesFromAnOpaquePath();\n }\n }\n }\n\n append(name, value) {\n this._list.push([name, value]);\n this._updateSteps();\n }\n\n delete(name) {\n let i = 0;\n while (i < this._list.length) {\n if (this._list[i][0] === name) {\n this._list.splice(i, 1);\n } else {\n i++;\n }\n }\n this._updateSteps();\n }\n\n get(name) {\n for (const tuple of this._list) {\n if (tuple[0] === name) {\n return tuple[1];\n }\n }\n return null;\n }\n\n getAll(name) {\n const output = [];\n for (const tuple of this._list) {\n if (tuple[0] === name) {\n output.push(tuple[1]);\n }\n }\n return output;\n }\n\n has(name) {\n for (const tuple of this._list) {\n if (tuple[0] === name) {\n return true;\n }\n }\n return false;\n }\n\n set(name, value) {\n let found = false;\n let i = 0;\n while (i < this._list.length) {\n if (this._list[i][0] === name) {\n if (found) {\n this._list.splice(i, 1);\n } else {\n found = true;\n this._list[i][1] = value;\n i++;\n }\n } else {\n i++;\n }\n }\n if (!found) {\n this._list.push([name, value]);\n }\n this._updateSteps();\n }\n\n sort() {\n this._list.sort((a, b) => {\n if (a[0] < b[0]) {\n return -1;\n }\n if (a[0] > b[0]) {\n return 1;\n }\n return 0;\n });\n\n this._updateSteps();\n }\n\n [Symbol.iterator]() {\n return this._list[Symbol.iterator]();\n }\n\n toString() {\n return urlencoded.serializeUrlencoded(this._list);\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Function = require(\"./Function.js\");\nconst newObjectInRealm = utils.newObjectInRealm;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"URLSearchParams\";\n\nexports.is = value => {\n return utils.isObject(value) && utils.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n if (exports.is(value)) {\n return utils.implForWrapper(value);\n }\n throw new globalObject.TypeError(`${context} is not of type 'URLSearchParams'.`);\n};\n\nexports.createDefaultIterator = (globalObject, target, kind) => {\n const ctorRegistry = globalObject[ctorRegistrySymbol];\n const iteratorPrototype = ctorRegistry[\"URLSearchParams Iterator\"];\n const iterator = Object.create(iteratorPrototype);\n Object.defineProperty(iterator, utils.iterInternalSymbol, {\n value: { target, kind, index: 0 },\n configurable: true\n });\n return iterator;\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n let proto;\n if (newTarget !== undefined) {\n proto = newTarget.prototype;\n }\n\n if (!utils.isObject(proto)) {\n proto = globalObject[ctorRegistrySymbol][\"URLSearchParams\"].prototype;\n }\n\n return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n const wrapper = makeWrapper(globalObject);\n return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n const wrapper = exports.create(globalObject, constructorArgs, privateData);\n return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n privateData.wrapper = wrapper;\n\n exports._internalSetup(wrapper, globalObject);\n Object.defineProperty(wrapper, implSymbol, {\n value: new Impl.implementation(globalObject, constructorArgs, privateData),\n configurable: true\n });\n\n wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n if (Impl.init) {\n Impl.init(wrapper[implSymbol]);\n }\n return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n const wrapper = makeWrapper(globalObject, newTarget);\n\n exports._internalSetup(wrapper, globalObject);\n Object.defineProperty(wrapper, implSymbol, {\n value: Object.create(Impl.implementation.prototype),\n configurable: true\n });\n\n wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n if (Impl.init) {\n Impl.init(wrapper[implSymbol]);\n }\n return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n if (!globalNames.some(globalName => exposed.has(globalName))) {\n return;\n }\n\n const ctorRegistry = utils.initCtorRegistry(globalObject);\n class URLSearchParams {\n constructor() {\n const args = [];\n {\n let curArg = arguments[0];\n if (curArg !== undefined) {\n if (utils.isObject(curArg)) {\n if (curArg[Symbol.iterator] !== undefined) {\n if (!utils.isObject(curArg)) {\n throw new globalObject.TypeError(\n \"Failed to construct 'URLSearchParams': parameter 1\" + \" sequence\" + \" is not an iterable object.\"\n );\n } else {\n const V = [];\n const tmp = curArg;\n for (let nextItem of tmp) {\n if (!utils.isObject(nextItem)) {\n throw new globalObject.TypeError(\n \"Failed to construct 'URLSearchParams': parameter 1\" +\n \" sequence\" +\n \"'s element\" +\n \" is not an iterable object.\"\n );\n } else {\n const V = [];\n const tmp = nextItem;\n for (let nextItem of tmp) {\n nextItem = conversions[\"USVString\"](nextItem, {\n context:\n \"Failed to construct 'URLSearchParams': parameter 1\" +\n \" sequence\" +\n \"'s element\" +\n \"'s element\",\n globals: globalObject\n });\n\n V.push(nextItem);\n }\n nextItem = V;\n }\n\n V.push(nextItem);\n }\n curArg = V;\n }\n } else {\n if (!utils.isObject(curArg)) {\n throw new globalObject.TypeError(\n \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \" is not an object.\"\n );\n } else {\n const result = Object.create(null);\n for (const key of Reflect.ownKeys(curArg)) {\n const desc = Object.getOwnPropertyDescriptor(curArg, key);\n if (desc && desc.enumerable) {\n let typedKey = key;\n\n typedKey = conversions[\"USVString\"](typedKey, {\n context: \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \"'s key\",\n globals: globalObject\n });\n\n let typedValue = curArg[key];\n\n typedValue = conversions[\"USVString\"](typedValue, {\n context: \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \"'s value\",\n globals: globalObject\n });\n\n result[typedKey] = typedValue;\n }\n }\n curArg = result;\n }\n }\n } else {\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to construct 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n }\n } else {\n curArg = \"\";\n }\n args.push(curArg);\n }\n return exports.setup(Object.create(new.target.prototype), globalObject, args);\n }\n\n append(name, value) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\n \"'append' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n\n if (arguments.length < 2) {\n throw new globalObject.TypeError(\n `Failed to execute 'append' on 'URLSearchParams': 2 arguments required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'append' on 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n {\n let curArg = arguments[1];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'append' on 'URLSearchParams': parameter 2\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(esValue[implSymbol].append(...args));\n }\n\n delete(name) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\n \"'delete' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to execute 'delete' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'delete' on 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(esValue[implSymbol].delete(...args));\n }\n\n get(name) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get' called on an object that is not a valid instance of URLSearchParams.\");\n }\n\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to execute 'get' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'get' on 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return esValue[implSymbol].get(...args);\n }\n\n getAll(name) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\n \"'getAll' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to execute 'getAll' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'getAll' on 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(esValue[implSymbol].getAll(...args));\n }\n\n has(name) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'has' called on an object that is not a valid instance of URLSearchParams.\");\n }\n\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to execute 'has' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'has' on 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return esValue[implSymbol].has(...args);\n }\n\n set(name, value) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set' called on an object that is not a valid instance of URLSearchParams.\");\n }\n\n if (arguments.length < 2) {\n throw new globalObject.TypeError(\n `Failed to execute 'set' on 'URLSearchParams': 2 arguments required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'set' on 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n {\n let curArg = arguments[1];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'set' on 'URLSearchParams': parameter 2\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(esValue[implSymbol].set(...args));\n }\n\n sort() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'sort' called on an object that is not a valid instance of URLSearchParams.\");\n }\n\n return utils.tryWrapperForImpl(esValue[implSymbol].sort());\n }\n\n toString() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\n \"'toString' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n\n return esValue[implSymbol].toString();\n }\n\n keys() {\n if (!exports.is(this)) {\n throw new globalObject.TypeError(\"'keys' called on an object that is not a valid instance of URLSearchParams.\");\n }\n return exports.createDefaultIterator(globalObject, this, \"key\");\n }\n\n values() {\n if (!exports.is(this)) {\n throw new globalObject.TypeError(\n \"'values' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n return exports.createDefaultIterator(globalObject, this, \"value\");\n }\n\n entries() {\n if (!exports.is(this)) {\n throw new globalObject.TypeError(\n \"'entries' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n return exports.createDefaultIterator(globalObject, this, \"key+value\");\n }\n\n forEach(callback) {\n if (!exports.is(this)) {\n throw new globalObject.TypeError(\n \"'forEach' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n \"Failed to execute 'forEach' on 'iterable': 1 argument required, but only 0 present.\"\n );\n }\n callback = Function.convert(globalObject, callback, {\n context: \"Failed to execute 'forEach' on 'iterable': The callback provided as parameter 1\"\n });\n const thisArg = arguments[1];\n let pairs = Array.from(this[implSymbol]);\n let i = 0;\n while (i < pairs.length) {\n const [key, value] = pairs[i].map(utils.tryWrapperForImpl);\n callback.call(thisArg, value, key, this);\n pairs = Array.from(this[implSymbol]);\n i++;\n }\n }\n }\n Object.defineProperties(URLSearchParams.prototype, {\n append: { enumerable: true },\n delete: { enumerable: true },\n get: { enumerable: true },\n getAll: { enumerable: true },\n has: { enumerable: true },\n set: { enumerable: true },\n sort: { enumerable: true },\n toString: { enumerable: true },\n keys: { enumerable: true },\n values: { enumerable: true },\n entries: { enumerable: true },\n forEach: { enumerable: true },\n [Symbol.toStringTag]: { value: \"URLSearchParams\", configurable: true },\n [Symbol.iterator]: { value: URLSearchParams.prototype.entries, configurable: true, writable: true }\n });\n ctorRegistry[interfaceName] = URLSearchParams;\n\n ctorRegistry[\"URLSearchParams Iterator\"] = Object.create(ctorRegistry[\"%IteratorPrototype%\"], {\n [Symbol.toStringTag]: {\n configurable: true,\n value: \"URLSearchParams Iterator\"\n }\n });\n utils.define(ctorRegistry[\"URLSearchParams Iterator\"], {\n next() {\n const internal = this && this[utils.iterInternalSymbol];\n if (!internal) {\n throw new globalObject.TypeError(\"next() called on a value that is not a URLSearchParams iterator object\");\n }\n\n const { target, kind, index } = internal;\n const values = Array.from(target[implSymbol]);\n const len = values.length;\n if (index >= len) {\n return newObjectInRealm(globalObject, { value: undefined, done: true });\n }\n\n const pair = values[index];\n internal.index = index + 1;\n return newObjectInRealm(globalObject, utils.iteratorResult(pair.map(utils.tryWrapperForImpl), kind));\n }\n });\n\n Object.defineProperty(globalObject, interfaceName, {\n configurable: true,\n writable: true,\n value: URLSearchParams\n });\n};\n\nconst Impl = require(\"./URLSearchParams-impl.js\");\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\nconst urlencoded = require(\"./urlencoded\");\nconst URLSearchParams = require(\"./URLSearchParams\");\n\nexports.implementation = class URLImpl {\n constructor(globalObject, constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === null) {\n throw new TypeError(`Invalid base URL: ${base}`);\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === null) {\n throw new TypeError(`Invalid URL: ${url}`);\n }\n\n const query = parsedURL.query !== null ? parsedURL.query : \"\";\n\n this._url = parsedURL;\n\n // We cannot invoke the \"new URLSearchParams object\" algorithm without going through the constructor, which strips\n // question mark by default. Therefore the doNotStripQMark hack is used.\n this._query = URLSearchParams.createImpl(globalObject, [query], { doNotStripQMark: true });\n this._query._url = this;\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === null) {\n throw new TypeError(`Invalid URL: ${v}`);\n }\n\n this._url = parsedURL;\n\n this._query._list.splice(0);\n const { query } = parsedURL;\n if (query !== null) {\n this._query._list = urlencoded.parseUrlencodedString(query);\n }\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return `${this._url.scheme}:`;\n }\n\n set protocol(v) {\n usm.basicURLParse(`${v}:`, { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return `${usm.serializeHost(url.host)}:${usm.serializeInteger(url.port)}`;\n }\n\n set host(v) {\n if (usm.hasAnOpaquePath(this._url)) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (usm.hasAnOpaquePath(this._url)) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n return usm.serializePath(this._url);\n }\n\n set pathname(v) {\n if (usm.hasAnOpaquePath(this._url)) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return `?${this._url.query}`;\n }\n\n set search(v) {\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n this._query._list = [];\n this._potentiallyStripTrailingSpacesFromAnOpaquePath();\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n this._query._list = urlencoded.parseUrlencodedString(input);\n }\n\n get searchParams() {\n return this._query;\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return `#${this._url.fragment}`;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n this._potentiallyStripTrailingSpacesFromAnOpaquePath();\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n\n _potentiallyStripTrailingSpacesFromAnOpaquePath() {\n if (!usm.hasAnOpaquePath(this._url)) {\n return;\n }\n\n if (this._url.fragment !== null) {\n return;\n }\n\n if (this._url.query !== null) {\n return;\n }\n\n this._url.path = this._url.path.replace(/\\u0020+$/u, \"\");\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"URL\";\n\nexports.is = value => {\n return utils.isObject(value) && utils.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n if (exports.is(value)) {\n return utils.implForWrapper(value);\n }\n throw new globalObject.TypeError(`${context} is not of type 'URL'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n let proto;\n if (newTarget !== undefined) {\n proto = newTarget.prototype;\n }\n\n if (!utils.isObject(proto)) {\n proto = globalObject[ctorRegistrySymbol][\"URL\"].prototype;\n }\n\n return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n const wrapper = makeWrapper(globalObject);\n return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n const wrapper = exports.create(globalObject, constructorArgs, privateData);\n return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n privateData.wrapper = wrapper;\n\n exports._internalSetup(wrapper, globalObject);\n Object.defineProperty(wrapper, implSymbol, {\n value: new Impl.implementation(globalObject, constructorArgs, privateData),\n configurable: true\n });\n\n wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n if (Impl.init) {\n Impl.init(wrapper[implSymbol]);\n }\n return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n const wrapper = makeWrapper(globalObject, newTarget);\n\n exports._internalSetup(wrapper, globalObject);\n Object.defineProperty(wrapper, implSymbol, {\n value: Object.create(Impl.implementation.prototype),\n configurable: true\n });\n\n wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n if (Impl.init) {\n Impl.init(wrapper[implSymbol]);\n }\n return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n if (!globalNames.some(globalName => exposed.has(globalName))) {\n return;\n }\n\n const ctorRegistry = utils.initCtorRegistry(globalObject);\n class URL {\n constructor(url) {\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to construct 'URL': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to construct 'URL': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n {\n let curArg = arguments[1];\n if (curArg !== undefined) {\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to construct 'URL': parameter 2\",\n globals: globalObject\n });\n }\n args.push(curArg);\n }\n return exports.setup(Object.create(new.target.prototype), globalObject, args);\n }\n\n toJSON() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'toJSON' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol].toJSON();\n }\n\n get href() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get href' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"href\"];\n }\n\n set href(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set href' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'href' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"href\"] = V;\n }\n\n toString() {\n const esValue = this;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'toString' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"href\"];\n }\n\n get origin() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get origin' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"origin\"];\n }\n\n get protocol() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get protocol' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"protocol\"];\n }\n\n set protocol(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set protocol' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'protocol' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"protocol\"] = V;\n }\n\n get username() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get username' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"username\"];\n }\n\n set username(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set username' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'username' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"username\"] = V;\n }\n\n get password() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get password' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"password\"];\n }\n\n set password(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set password' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'password' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"password\"] = V;\n }\n\n get host() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get host' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"host\"];\n }\n\n set host(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set host' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'host' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"host\"] = V;\n }\n\n get hostname() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get hostname' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"hostname\"];\n }\n\n set hostname(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set hostname' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'hostname' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"hostname\"] = V;\n }\n\n get port() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get port' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"port\"];\n }\n\n set port(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set port' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'port' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"port\"] = V;\n }\n\n get pathname() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get pathname' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"pathname\"];\n }\n\n set pathname(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set pathname' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'pathname' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"pathname\"] = V;\n }\n\n get search() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get search' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"search\"];\n }\n\n set search(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set search' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'search' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"search\"] = V;\n }\n\n get searchParams() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get searchParams' called on an object that is not a valid instance of URL.\");\n }\n\n return utils.getSameObject(this, \"searchParams\", () => {\n return utils.tryWrapperForImpl(esValue[implSymbol][\"searchParams\"]);\n });\n }\n\n get hash() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get hash' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"hash\"];\n }\n\n set hash(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set hash' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'hash' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"hash\"] = V;\n }\n }\n Object.defineProperties(URL.prototype, {\n toJSON: { enumerable: true },\n href: { enumerable: true },\n toString: { enumerable: true },\n origin: { enumerable: true },\n protocol: { enumerable: true },\n username: { enumerable: true },\n password: { enumerable: true },\n host: { enumerable: true },\n hostname: { enumerable: true },\n port: { enumerable: true },\n pathname: { enumerable: true },\n search: { enumerable: true },\n searchParams: { enumerable: true },\n hash: { enumerable: true },\n [Symbol.toStringTag]: { value: \"URL\", configurable: true }\n });\n ctorRegistry[interfaceName] = URL;\n\n Object.defineProperty(globalObject, interfaceName, {\n configurable: true,\n writable: true,\n value: URL\n });\n\n if (globalNames.includes(\"Window\")) {\n Object.defineProperty(globalObject, \"webkitURL\", {\n configurable: true,\n writable: true,\n value: URL\n });\n }\n};\n\nconst Impl = require(\"./URL-impl.js\");\n","\"use strict\";\n\nconst URL = require(\"./lib/URL\");\nconst URLSearchParams = require(\"./lib/URLSearchParams\");\n\nexports.URL = URL;\nexports.URLSearchParams = URLSearchParams;\n","\"use strict\";\n\nconst { URL, URLSearchParams } = require(\"./webidl2js-wrapper\");\nconst urlStateMachine = require(\"./lib/url-state-machine\");\nconst percentEncoding = require(\"./lib/percent-encoding\");\n\nconst sharedGlobalObject = { Array, Object, Promise, String, TypeError };\nURL.install(sharedGlobalObject, [\"Window\"]);\nURLSearchParams.install(sharedGlobalObject, [\"Window\"]);\n\nexports.URL = sharedGlobalObject.URL;\nexports.URLSearchParams = sharedGlobalObject.URLSearchParams;\n\nexports.parseURL = urlStateMachine.parseURL;\nexports.basicURLParse = urlStateMachine.basicURLParse;\nexports.serializeURL = urlStateMachine.serializeURL;\nexports.serializePath = urlStateMachine.serializePath;\nexports.serializeHost = urlStateMachine.serializeHost;\nexports.serializeInteger = urlStateMachine.serializeInteger;\nexports.serializeURLOrigin = urlStateMachine.serializeURLOrigin;\nexports.setTheUsername = urlStateMachine.setTheUsername;\nexports.setThePassword = urlStateMachine.setThePassword;\nexports.cannotHaveAUsernamePasswordPort = urlStateMachine.cannotHaveAUsernamePasswordPort;\nexports.hasAnOpaquePath = urlStateMachine.hasAnOpaquePath;\n\nexports.percentDecodeString = percentEncoding.percentDecodeString;\nexports.percentDecodeBytes = percentEncoding.percentDecodeBytes;\n","'use strict';\n\nmodule.exports = class SymbolTreeNode {\n constructor() {\n this.parent = null;\n this.previousSibling = null;\n this.nextSibling = null;\n\n this.firstChild = null;\n this.lastChild = null;\n\n /** This value is incremented anytime a children is added or removed */\n this.childrenVersion = 0;\n /** The last child object which has a cached index */\n this.childIndexCachedUpTo = null;\n\n /** This value represents the cached node index, as long as\n * cachedIndexVersion matches with the childrenVersion of the parent */\n this.cachedIndex = -1;\n this.cachedIndexVersion = NaN; // NaN is never equal to anything\n }\n\n get isAttached() {\n return Boolean(this.parent || this.previousSibling || this.nextSibling);\n }\n\n get hasChildren() {\n return Boolean(this.firstChild);\n }\n\n childrenChanged() {\n /* jshint -W016 */\n // integer wrap around\n this.childrenVersion = (this.childrenVersion + 1) & 0xFFFFFFFF;\n this.childIndexCachedUpTo = null;\n }\n\n getCachedIndex(parentNode) {\n // (assumes parentNode is actually the parent)\n if (this.cachedIndexVersion !== parentNode.childrenVersion) {\n this.cachedIndexVersion = NaN;\n // cachedIndex is no longer valid\n return -1;\n }\n\n return this.cachedIndex; // -1 if not cached\n }\n\n setCachedIndex(parentNode, index) {\n // (assumes parentNode is actually the parent)\n this.cachedIndexVersion = parentNode.childrenVersion;\n this.cachedIndex = index;\n }\n};\n","'use strict';\n\n/* eslint-disable sort-keys */\nmodule.exports = Object.freeze({\n // same as DOM DOCUMENT_POSITION_\n DISCONNECTED: 1,\n PRECEDING: 2,\n FOLLOWING: 4,\n CONTAINS: 8,\n CONTAINED_BY: 16,\n});\n","'use strict';\n\nconst TREE = Symbol();\nconst ROOT = Symbol();\nconst NEXT = Symbol();\nconst ITERATE_FUNC = Symbol();\n\nclass TreeIterator {\n constructor(tree, root, firstResult, iterateFunction) {\n this[TREE] = tree;\n this[ROOT] = root;\n this[NEXT] = firstResult;\n this[ITERATE_FUNC] = iterateFunction;\n }\n\n next() {\n const tree = this[TREE];\n const iterateFunc = this[ITERATE_FUNC];\n const root = this[ROOT];\n\n if (!this[NEXT]) {\n return {\n done: true,\n value: root,\n };\n }\n\n const value = this[NEXT];\n\n if (iterateFunc === 1) {\n this[NEXT] = tree._node(value).previousSibling;\n }\n else if (iterateFunc === 2) {\n this[NEXT] = tree._node(value).nextSibling;\n }\n else if (iterateFunc === 3) {\n this[NEXT] = tree._node(value).parent;\n }\n else if (iterateFunc === 4) {\n this[NEXT] = tree.preceding(value, {root: root});\n }\n else /* if (iterateFunc === 5)*/ {\n this[NEXT] = tree.following(value, {root: root});\n }\n\n return {\n done: false,\n value: value,\n };\n }\n}\n\nObject.defineProperty(TreeIterator.prototype, Symbol.iterator, {\n value: function() {\n return this;\n },\n writable: false,\n});\n\nTreeIterator.PREV = 1;\nTreeIterator.NEXT = 2;\nTreeIterator.PARENT = 3;\nTreeIterator.PRECEDING = 4;\nTreeIterator.FOLLOWING = 5;\n\nObject.freeze(TreeIterator);\nObject.freeze(TreeIterator.prototype);\n\nmodule.exports = TreeIterator;\n","'use strict';\n\n/**\n * @module symbol-tree\n * @author Joris van der Wel \n */\n\nconst SymbolTreeNode = require('./SymbolTreeNode');\nconst TreePosition = require('./TreePosition');\nconst TreeIterator = require('./TreeIterator');\n\nfunction returnTrue() {\n return true;\n}\n\nfunction reverseArrayIndex(array, reverseIndex) {\n return array[array.length - 1 - reverseIndex]; // no need to check `index >= 0`\n}\n\nclass SymbolTree {\n\n /**\n * @constructor\n * @alias module:symbol-tree\n * @param {string} [description='SymbolTree data'] Description used for the Symbol\n */\n constructor(description) {\n this.symbol = Symbol(description || 'SymbolTree data');\n }\n\n /**\n * You can use this function to (optionally) initialize an object right after its creation,\n * to take advantage of V8's fast properties. Also useful if you would like to\n * freeze your object.\n *\n * `O(1)`\n *\n * @method\n * @alias module:symbol-tree#initialize\n * @param {Object} object\n * @return {Object} object\n */\n initialize(object) {\n this._node(object);\n\n return object;\n }\n\n _node(object) {\n if (!object) {\n return null;\n }\n\n const node = object[this.symbol];\n\n if (node) {\n return node;\n }\n\n return (object[this.symbol] = new SymbolTreeNode());\n }\n\n /**\n * Returns `true` if the object has any children. Otherwise it returns `false`.\n *\n * * `O(1)`\n *\n * @method hasChildren\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Boolean}\n */\n hasChildren(object) {\n return this._node(object).hasChildren;\n }\n\n /**\n * Returns the first child of the given object.\n *\n * * `O(1)`\n *\n * @method firstChild\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object}\n */\n firstChild(object) {\n return this._node(object).firstChild;\n }\n\n /**\n * Returns the last child of the given object.\n *\n * * `O(1)`\n *\n * @method lastChild\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object}\n */\n lastChild(object) {\n return this._node(object).lastChild;\n }\n\n /**\n * Returns the previous sibling of the given object.\n *\n * * `O(1)`\n *\n * @method previousSibling\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object}\n */\n previousSibling(object) {\n return this._node(object).previousSibling;\n }\n\n /**\n * Returns the next sibling of the given object.\n *\n * * `O(1)`\n *\n * @method nextSibling\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object}\n */\n nextSibling(object) {\n return this._node(object).nextSibling;\n }\n\n /**\n * Return the parent of the given object.\n *\n * * `O(1)`\n *\n * @method parent\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object}\n */\n parent(object) {\n return this._node(object).parent;\n }\n\n /**\n * Find the inclusive descendant that is last in tree order of the given object.\n *\n * * `O(n)` (worst case) where `n` is the depth of the subtree of `object`\n *\n * @method lastInclusiveDescendant\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object}\n */\n lastInclusiveDescendant(object) {\n let lastChild;\n let current = object;\n\n while ((lastChild = this._node(current).lastChild)) {\n current = lastChild;\n }\n\n return current;\n }\n\n /**\n * Find the preceding object (A) of the given object (B).\n * An object A is preceding an object B if A and B are in the same tree\n * and A comes before B in tree order.\n *\n * * `O(n)` (worst case)\n * * `O(1)` (amortized when walking the entire tree)\n *\n * @method preceding\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @param {Object} [options]\n * @param {Object} [options.root] If set, `root` must be an inclusive ancestor\n * of the return value (or else null is returned). This check _assumes_\n * that `root` is also an inclusive ancestor of the given `object`\n * @return {?Object}\n */\n preceding(object, options) {\n const treeRoot = options && options.root;\n\n if (object === treeRoot) {\n return null;\n }\n\n const previousSibling = this._node(object).previousSibling;\n\n if (previousSibling) {\n return this.lastInclusiveDescendant(previousSibling);\n }\n\n // if there is no previous sibling return the parent (might be null)\n return this._node(object).parent;\n }\n\n /**\n * Find the following object (A) of the given object (B).\n * An object A is following an object B if A and B are in the same tree\n * and A comes after B in tree order.\n *\n * * `O(n)` (worst case) where `n` is the amount of objects in the entire tree\n * * `O(1)` (amortized when walking the entire tree)\n *\n * @method following\n * @memberOf module:symbol-tree#\n * @param {!Object} object\n * @param {Object} [options]\n * @param {Object} [options.root] If set, `root` must be an inclusive ancestor\n * of the return value (or else null is returned). This check _assumes_\n * that `root` is also an inclusive ancestor of the given `object`\n * @param {Boolean} [options.skipChildren=false] If set, ignore the children of `object`\n * @return {?Object}\n */\n following(object, options) {\n const treeRoot = options && options.root;\n const skipChildren = options && options.skipChildren;\n\n const firstChild = !skipChildren && this._node(object).firstChild;\n\n if (firstChild) {\n return firstChild;\n }\n\n let current = object;\n\n do {\n if (current === treeRoot) {\n return null;\n }\n\n const nextSibling = this._node(current).nextSibling;\n\n if (nextSibling) {\n return nextSibling;\n }\n\n current = this._node(current).parent;\n } while (current);\n\n return null;\n }\n\n /**\n * Append all children of the given object to an array.\n *\n * * `O(n)` where `n` is the amount of children of the given `parent`\n *\n * @method childrenToArray\n * @memberOf module:symbol-tree#\n * @param {Object} parent\n * @param {Object} [options]\n * @param {Object[]} [options.array=[]]\n * @param {Function} [options.filter] Function to test each object before it is added to the array.\n * Invoked with arguments (object). Should return `true` if an object\n * is to be included.\n * @param {*} [options.thisArg] Value to use as `this` when executing `filter`.\n * @return {Object[]}\n */\n childrenToArray(parent, options) {\n const array = (options && options.array) || [];\n const filter = (options && options.filter) || returnTrue;\n const thisArg = (options && options.thisArg) || undefined;\n\n const parentNode = this._node(parent);\n let object = parentNode.firstChild;\n let index = 0;\n\n while (object) {\n const node = this._node(object);\n node.setCachedIndex(parentNode, index);\n\n if (filter.call(thisArg, object)) {\n array.push(object);\n }\n\n object = node.nextSibling;\n ++index;\n }\n\n return array;\n }\n\n /**\n * Append all inclusive ancestors of the given object to an array.\n *\n * * `O(n)` where `n` is the amount of ancestors of the given `object`\n *\n * @method ancestorsToArray\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @param {Object} [options]\n * @param {Object[]} [options.array=[]]\n * @param {Function} [options.filter] Function to test each object before it is added to the array.\n * Invoked with arguments (object). Should return `true` if an object\n * is to be included.\n * @param {*} [options.thisArg] Value to use as `this` when executing `filter`.\n * @return {Object[]}\n */\n ancestorsToArray(object, options) {\n const array = (options && options.array) || [];\n const filter = (options && options.filter) || returnTrue;\n const thisArg = (options && options.thisArg) || undefined;\n\n let ancestor = object;\n\n while (ancestor) {\n if (filter.call(thisArg, ancestor)) {\n array.push(ancestor);\n }\n ancestor = this._node(ancestor).parent;\n }\n\n return array;\n }\n\n /**\n * Append all descendants of the given object to an array (in tree order).\n *\n * * `O(n)` where `n` is the amount of objects in the sub-tree of the given `object`\n *\n * @method treeToArray\n * @memberOf module:symbol-tree#\n * @param {Object} root\n * @param {Object} [options]\n * @param {Object[]} [options.array=[]]\n * @param {Function} [options.filter] Function to test each object before it is added to the array.\n * Invoked with arguments (object). Should return `true` if an object\n * is to be included.\n * @param {*} [options.thisArg] Value to use as `this` when executing `filter`.\n * @return {Object[]}\n */\n treeToArray(root, options) {\n const array = (options && options.array) || [];\n const filter = (options && options.filter) || returnTrue;\n const thisArg = (options && options.thisArg) || undefined;\n\n let object = root;\n\n while (object) {\n if (filter.call(thisArg, object)) {\n array.push(object);\n }\n object = this.following(object, {root: root});\n }\n\n return array;\n }\n\n /**\n * Iterate over all children of the given object\n *\n * * `O(1)` for a single iteration\n *\n * @method childrenIterator\n * @memberOf module:symbol-tree#\n * @param {Object} parent\n * @param {Object} [options]\n * @param {Boolean} [options.reverse=false]\n * @return {Object} An iterable iterator (ES6)\n */\n childrenIterator(parent, options) {\n const reverse = options && options.reverse;\n const parentNode = this._node(parent);\n\n return new TreeIterator(\n this,\n parent,\n reverse ? parentNode.lastChild : parentNode.firstChild,\n reverse ? TreeIterator.PREV : TreeIterator.NEXT\n );\n }\n\n /**\n * Iterate over all the previous siblings of the given object. (in reverse tree order)\n *\n * * `O(1)` for a single iteration\n *\n * @method previousSiblingsIterator\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object} An iterable iterator (ES6)\n */\n previousSiblingsIterator(object) {\n return new TreeIterator(\n this,\n object,\n this._node(object).previousSibling,\n TreeIterator.PREV\n );\n }\n\n /**\n * Iterate over all the next siblings of the given object. (in tree order)\n *\n * * `O(1)` for a single iteration\n *\n * @method nextSiblingsIterator\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object} An iterable iterator (ES6)\n */\n nextSiblingsIterator(object) {\n return new TreeIterator(\n this,\n object,\n this._node(object).nextSibling,\n TreeIterator.NEXT\n );\n }\n\n /**\n * Iterate over all inclusive ancestors of the given object\n *\n * * `O(1)` for a single iteration\n *\n * @method ancestorsIterator\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object} An iterable iterator (ES6)\n */\n ancestorsIterator(object) {\n return new TreeIterator(\n this,\n object,\n object,\n TreeIterator.PARENT\n );\n }\n\n /**\n * Iterate over all descendants of the given object (in tree order).\n *\n * Where `n` is the amount of objects in the sub-tree of the given `root`:\n *\n * * `O(n)` (worst case for a single iteration)\n * * `O(n)` (amortized, when completing the iterator)\n *\n * @method treeIterator\n * @memberOf module:symbol-tree#\n * @param {Object} root\n * @param {Object} options\n * @param {Boolean} [options.reverse=false]\n * @return {Object} An iterable iterator (ES6)\n */\n treeIterator(root, options) {\n const reverse = options && options.reverse;\n\n return new TreeIterator(\n this,\n root,\n reverse ? this.lastInclusiveDescendant(root) : root,\n reverse ? TreeIterator.PRECEDING : TreeIterator.FOLLOWING\n );\n }\n\n /**\n * Find the index of the given object (the number of preceding siblings).\n *\n * * `O(n)` where `n` is the amount of preceding siblings\n * * `O(1)` (amortized, if the tree is not modified)\n *\n * @method index\n * @memberOf module:symbol-tree#\n * @param {Object} child\n * @return {Number} The number of preceding siblings, or -1 if the object has no parent\n */\n index(child) {\n const childNode = this._node(child);\n const parentNode = this._node(childNode.parent);\n\n if (!parentNode) {\n // In principal, you could also find out the number of preceding siblings\n // for objects that do not have a parent. This method limits itself only to\n // objects that have a parent because that lets us optimize more.\n return -1;\n }\n\n let currentIndex = childNode.getCachedIndex(parentNode);\n\n if (currentIndex >= 0) {\n return currentIndex;\n }\n\n currentIndex = 0;\n let object = parentNode.firstChild;\n\n if (parentNode.childIndexCachedUpTo) {\n const cachedUpToNode = this._node(parentNode.childIndexCachedUpTo);\n object = cachedUpToNode.nextSibling;\n currentIndex = cachedUpToNode.getCachedIndex(parentNode) + 1;\n }\n\n while (object) {\n const node = this._node(object);\n node.setCachedIndex(parentNode, currentIndex);\n\n if (object === child) {\n break;\n }\n\n ++currentIndex;\n object = node.nextSibling;\n }\n\n parentNode.childIndexCachedUpTo = child;\n\n return currentIndex;\n }\n\n /**\n * Calculate the number of children.\n *\n * * `O(n)` where `n` is the amount of children\n * * `O(1)` (amortized, if the tree is not modified)\n *\n * @method childrenCount\n * @memberOf module:symbol-tree#\n * @param {Object} parent\n * @return {Number}\n */\n childrenCount(parent) {\n const parentNode = this._node(parent);\n\n if (!parentNode.lastChild) {\n return 0;\n }\n\n return this.index(parentNode.lastChild) + 1;\n }\n\n /**\n * Compare the position of an object relative to another object. A bit set is returned:\n *\n * \n * - DISCONNECTED : 1
\n * - PRECEDING : 2
\n * - FOLLOWING : 4
\n * - CONTAINS : 8
\n * - CONTAINED_BY : 16
\n *
\n *\n * The semantics are the same as compareDocumentPosition in DOM, with the exception that\n * DISCONNECTED never occurs with any other bit.\n *\n * where `n` and `m` are the amount of ancestors of `left` and `right`;\n * where `o` is the amount of children of the lowest common ancestor of `left` and `right`:\n *\n * * `O(n + m + o)` (worst case)\n * * `O(n + m)` (amortized, if the tree is not modified)\n *\n * @method compareTreePosition\n * @memberOf module:symbol-tree#\n * @param {Object} left\n * @param {Object} right\n * @return {Number}\n */\n compareTreePosition(left, right) {\n // In DOM terms:\n // left = reference / context object\n // right = other\n\n if (left === right) {\n return 0;\n }\n\n /* jshint -W016 */\n\n const leftAncestors = []; { // inclusive\n let leftAncestor = left;\n\n while (leftAncestor) {\n if (leftAncestor === right) {\n return TreePosition.CONTAINS | TreePosition.PRECEDING;\n // other is ancestor of reference\n }\n\n leftAncestors.push(leftAncestor);\n leftAncestor = this.parent(leftAncestor);\n }\n }\n\n\n const rightAncestors = []; {\n let rightAncestor = right;\n\n while (rightAncestor) {\n if (rightAncestor === left) {\n return TreePosition.CONTAINED_BY | TreePosition.FOLLOWING;\n }\n\n rightAncestors.push(rightAncestor);\n rightAncestor = this.parent(rightAncestor);\n }\n }\n\n\n const root = reverseArrayIndex(leftAncestors, 0);\n\n if (!root || root !== reverseArrayIndex(rightAncestors, 0)) {\n // note: unlike DOM, preceding / following is not set here\n return TreePosition.DISCONNECTED;\n }\n\n // find the lowest common ancestor\n let commonAncestorIndex = 0;\n const ancestorsMinLength = Math.min(leftAncestors.length, rightAncestors.length);\n\n for (let i = 0; i < ancestorsMinLength; ++i) {\n const leftAncestor = reverseArrayIndex(leftAncestors, i);\n const rightAncestor = reverseArrayIndex(rightAncestors, i);\n\n if (leftAncestor !== rightAncestor) {\n break;\n }\n\n commonAncestorIndex = i;\n }\n\n // indexes within the common ancestor\n const leftIndex = this.index(reverseArrayIndex(leftAncestors, commonAncestorIndex + 1));\n const rightIndex = this.index(reverseArrayIndex(rightAncestors, commonAncestorIndex + 1));\n\n return rightIndex < leftIndex\n ? TreePosition.PRECEDING\n : TreePosition.FOLLOWING;\n }\n\n /**\n * Remove the object from this tree.\n * Has no effect if already removed.\n *\n * * `O(1)`\n *\n * @method remove\n * @memberOf module:symbol-tree#\n * @param {Object} removeObject\n * @return {Object} removeObject\n */\n remove(removeObject) {\n const removeNode = this._node(removeObject);\n const parentNode = this._node(removeNode.parent);\n const prevNode = this._node(removeNode.previousSibling);\n const nextNode = this._node(removeNode.nextSibling);\n\n if (parentNode) {\n if (parentNode.firstChild === removeObject) {\n parentNode.firstChild = removeNode.nextSibling;\n }\n\n if (parentNode.lastChild === removeObject) {\n parentNode.lastChild = removeNode.previousSibling;\n }\n }\n\n if (prevNode) {\n prevNode.nextSibling = removeNode.nextSibling;\n }\n\n if (nextNode) {\n nextNode.previousSibling = removeNode.previousSibling;\n }\n\n removeNode.parent = null;\n removeNode.previousSibling = null;\n removeNode.nextSibling = null;\n removeNode.cachedIndex = -1;\n removeNode.cachedIndexVersion = NaN;\n\n if (parentNode) {\n parentNode.childrenChanged();\n }\n\n return removeObject;\n }\n\n /**\n * Insert the given object before the reference object.\n * `newObject` is now the previous sibling of `referenceObject`.\n *\n * * `O(1)`\n *\n * @method insertBefore\n * @memberOf module:symbol-tree#\n * @param {Object} referenceObject\n * @param {Object} newObject\n * @throws {Error} If the newObject is already present in this SymbolTree\n * @return {Object} newObject\n */\n insertBefore(referenceObject, newObject) {\n const referenceNode = this._node(referenceObject);\n const prevNode = this._node(referenceNode.previousSibling);\n const newNode = this._node(newObject);\n const parentNode = this._node(referenceNode.parent);\n\n if (newNode.isAttached) {\n throw Error('Given object is already present in this SymbolTree, remove it first');\n }\n\n newNode.parent = referenceNode.parent;\n newNode.previousSibling = referenceNode.previousSibling;\n newNode.nextSibling = referenceObject;\n referenceNode.previousSibling = newObject;\n\n if (prevNode) {\n prevNode.nextSibling = newObject;\n }\n\n if (parentNode && parentNode.firstChild === referenceObject) {\n parentNode.firstChild = newObject;\n }\n\n if (parentNode) {\n parentNode.childrenChanged();\n }\n\n return newObject;\n }\n\n /**\n * Insert the given object after the reference object.\n * `newObject` is now the next sibling of `referenceObject`.\n *\n * * `O(1)`\n *\n * @method insertAfter\n * @memberOf module:symbol-tree#\n * @param {Object} referenceObject\n * @param {Object} newObject\n * @throws {Error} If the newObject is already present in this SymbolTree\n * @return {Object} newObject\n */\n insertAfter(referenceObject, newObject) {\n const referenceNode = this._node(referenceObject);\n const nextNode = this._node(referenceNode.nextSibling);\n const newNode = this._node(newObject);\n const parentNode = this._node(referenceNode.parent);\n\n if (newNode.isAttached) {\n throw Error('Given object is already present in this SymbolTree, remove it first');\n }\n\n newNode.parent = referenceNode.parent;\n newNode.previousSibling = referenceObject;\n newNode.nextSibling = referenceNode.nextSibling;\n referenceNode.nextSibling = newObject;\n\n if (nextNode) {\n nextNode.previousSibling = newObject;\n }\n\n if (parentNode && parentNode.lastChild === referenceObject) {\n parentNode.lastChild = newObject;\n }\n\n if (parentNode) {\n parentNode.childrenChanged();\n }\n\n return newObject;\n }\n\n /**\n * Insert the given object as the first child of the given reference object.\n * `newObject` is now the first child of `referenceObject`.\n *\n * * `O(1)`\n *\n * @method prependChild\n * @memberOf module:symbol-tree#\n * @param {Object} referenceObject\n * @param {Object} newObject\n * @throws {Error} If the newObject is already present in this SymbolTree\n * @return {Object} newObject\n */\n prependChild(referenceObject, newObject) {\n const referenceNode = this._node(referenceObject);\n const newNode = this._node(newObject);\n\n if (newNode.isAttached) {\n throw Error('Given object is already present in this SymbolTree, remove it first');\n }\n\n if (referenceNode.hasChildren) {\n this.insertBefore(referenceNode.firstChild, newObject);\n }\n else {\n newNode.parent = referenceObject;\n referenceNode.firstChild = newObject;\n referenceNode.lastChild = newObject;\n referenceNode.childrenChanged();\n }\n\n return newObject;\n }\n\n /**\n * Insert the given object as the last child of the given reference object.\n * `newObject` is now the last child of `referenceObject`.\n *\n * * `O(1)`\n *\n * @method appendChild\n * @memberOf module:symbol-tree#\n * @param {Object} referenceObject\n * @param {Object} newObject\n * @throws {Error} If the newObject is already present in this SymbolTree\n * @return {Object} newObject\n */\n appendChild(referenceObject, newObject) {\n const referenceNode = this._node(referenceObject);\n const newNode = this._node(newObject);\n\n if (newNode.isAttached) {\n throw Error('Given object is already present in this SymbolTree, remove it first');\n }\n\n if (referenceNode.hasChildren) {\n this.insertAfter(referenceNode.lastChild, newObject);\n }\n else {\n newNode.parent = referenceObject;\n referenceNode.firstChild = newObject;\n referenceNode.lastChild = newObject;\n referenceNode.childrenChanged();\n }\n\n return newObject;\n }\n}\n\nmodule.exports = SymbolTree;\nSymbolTree.TreePosition = TreePosition;\n","\"use strict\";\nconst SymbolTree = require(\"symbol-tree\");\n\nexports.cloningSteps = Symbol(\"cloning steps\");\n\n// TODO: the many underscore-prefixed hooks should move here\n// E.g. _attrModified (which maybe should be split into its per-spec variants)\n\n/**\n * This SymbolTree is used to build the tree for all Node in a document\n */\nexports.domSymbolTree = new SymbolTree(\"DOM SymbolTree\");\n","export default {}","\"use strict\";\nconst path = require(\"path\");\nconst whatwgURL = require(\"whatwg-url\");\nconst { domSymbolTree } = require(\"./living/helpers/internal-constants\");\nconst SYMBOL_TREE_POSITION = require(\"symbol-tree\").TreePosition;\n\nexports.toFileUrl = function (fileName) {\n // Beyond just the `path.resolve`, this is mostly for the benefit of Windows,\n // where we need to convert \"\\\" to \"/\" and add an extra \"/\" prefix before the\n // drive letter.\n let pathname = path.resolve(process.cwd(), fileName).replace(/\\\\/g, \"/\");\n if (pathname[0] !== \"/\") {\n pathname = \"/\" + pathname;\n }\n\n // path might contain spaces, so convert those to %20\n return \"file://\" + encodeURI(pathname);\n};\n\n/**\n * Define a set of properties on an object, by copying the property descriptors\n * from the original object.\n *\n * - `object` {Object} the target object\n * - `properties` {Object} the source from which to copy property descriptors\n */\nexports.define = function define(object, properties) {\n for (const name of Object.getOwnPropertyNames(properties)) {\n const propDesc = Object.getOwnPropertyDescriptor(properties, name);\n Object.defineProperty(object, name, propDesc);\n }\n};\n\n/**\n * Define a list of constants on a constructor and its .prototype\n *\n * - `Constructor` {Function} the constructor to define the constants on\n * - `propertyMap` {Object} key/value map of properties to define\n */\nexports.addConstants = function addConstants(Constructor, propertyMap) {\n for (const property in propertyMap) {\n const value = propertyMap[property];\n addConstant(Constructor, property, value);\n addConstant(Constructor.prototype, property, value);\n }\n};\n\nfunction addConstant(object, property, value) {\n Object.defineProperty(object, property, {\n configurable: false,\n enumerable: true,\n writable: false,\n value\n });\n}\n\nexports.mixin = (target, source) => {\n const keys = Reflect.ownKeys(source);\n for (let i = 0; i < keys.length; ++i) {\n if (keys[i] in target) {\n continue;\n }\n\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nlet memoizeQueryTypeCounter = 0;\n\n/**\n * Returns a version of a method that memoizes specific types of calls on the object\n *\n * - `fn` {Function} the method to be memozied\n */\nexports.memoizeQuery = function memoizeQuery(fn) {\n // Only memoize query functions with arity <= 2\n if (fn.length > 2) {\n return fn;\n }\n\n const type = memoizeQueryTypeCounter++;\n\n return function (...args) {\n if (!this._memoizedQueries) {\n return fn.apply(this, args);\n }\n\n if (!this._memoizedQueries[type]) {\n this._memoizedQueries[type] = Object.create(null);\n }\n\n let key;\n if (args.length === 1 && typeof args[0] === \"string\") {\n key = args[0];\n } else if (args.length === 2 && typeof args[0] === \"string\" && typeof args[1] === \"string\") {\n key = args[0] + \"::\" + args[1];\n } else {\n return fn.apply(this, args);\n }\n\n if (!(key in this._memoizedQueries[type])) {\n this._memoizedQueries[type][key] = fn.apply(this, args);\n }\n return this._memoizedQueries[type][key];\n };\n};\n\nfunction isValidAbsoluteURL(str) {\n return whatwgURL.parseURL(str) !== null;\n}\n\nexports.isValidTargetOrigin = function (str) {\n return str === \"*\" || str === \"/\" || isValidAbsoluteURL(str);\n};\n\nexports.simultaneousIterators = function* (first, second) {\n for (;;) {\n const firstResult = first.next();\n const secondResult = second.next();\n\n if (firstResult.done && secondResult.done) {\n return;\n }\n\n yield [\n firstResult.done ? null : firstResult.value,\n secondResult.done ? null : secondResult.value\n ];\n }\n};\n\nexports.treeOrderSorter = function (a, b) {\n const compare = domSymbolTree.compareTreePosition(a, b);\n\n if (compare & SYMBOL_TREE_POSITION.PRECEDING) { // b is preceding a\n return 1;\n }\n\n if (compare & SYMBOL_TREE_POSITION.FOLLOWING) {\n return -1;\n }\n\n // disconnected or equal:\n return 0;\n};\n\n/* eslint-disable global-require */\ntry {\n exports.Canvas = require(\"canvas\");\n} catch {\n exports.Canvas = null;\n}\n","import {nodeDetachedFromDocument} from 'jsdom/lib/jsdom/living/named-properties-window.js';\n\nexport default class Utils {\n static repeat (times, iterator) {\n return Array(times).fill('').map((val, index) => iterator(index)).join('');\n }\n\n static setCssVariable(css, name, value) {\n const cssString = String(css);\n if (cssString.indexOf(`${name}:`) > -1) {\n return cssString.replace(new RegExp(`${name}:.*?(;|})`), `${name}: ${value}$1`);\n } else {\n return `* {${name}: ${value};} ${cssString}`;\n }\n }\n\n static classes(...list) {\n let classNames = [];\n let className;\n while (className = list.shift()) {\n if (!!list.shift()) classNames.push(className);\n }\n return classNames.join(' ');\n }\n\n static range(start, stop, step) {\n if (stop === null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n const length = Math.max(Math.ceil((stop - start) / step), 0);\n const range = Array(length);\n\n for (let idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n }\n\n static isBetween (num1, num2, num3) {\n if (num2 > num3) {\n return num1 <= num2 && num1 >= num3;\n } else {\n return num1 >= num2 && num1 <= num3;\n }\n }\n\n static makeDataUrl(data) {\n return `data:image/svg+xml,${encodeURIComponent(data)}`;\n }\n\n static xmlToObject(xmlString, options = {}) {\n const { arrays = [], exclude = [], booleans = [], numbers = [], preserveCapitals = false } = options;\n\n function formatName(name) {\n return preserveCapitals ? name : name.charAt(0).toLowerCase() + name.slice(1);\n }\n\n function convertType(name, value) {\n if (booleans.includes(name)) {\n return value.toLowerCase() === 'true';\n }\n if (numbers.includes(name)) {\n return Number(value);\n }\n return value;\n }\n\n const parser = new DOMParser();\n let dom;\n try {\n dom = parser.parseFromString(xmlString, 'application/xml');\n } catch (error) {\n console.log('ERROR: XmlToObject failed to parse XML');\n return null;\n }\n\n function parseNode(xmlNode, result) {\n let nodeName = xmlNode.nodeName;\n if (nodeName === \"#text\") {\n let v = xmlNode.nodeValue;\n if (v.trim()) result['#text'] = v;\n return;\n }\n\n if (exclude.indexOf(nodeName) !== -1) {\n return;\n }\n\n name = formatName(nodeName);\n\n let jsonNode = {},\n existing = result[name];\n if (existing) {\n if (!Array.isArray(existing)) result[name] = [existing, jsonNode];\n else result[name].push(jsonNode);\n }\n else {\n if (arrays.indexOf(nodeName) !== -1) result[name] = [jsonNode];\n else result[name] = jsonNode;\n }\n\n if (xmlNode.attributes) for (let attribute of xmlNode.attributes) jsonNode[formatName(attribute.nodeName)] = convertType(attribute.nodeName, attribute.nodeValue);\n\n for (let node of xmlNode.childNodes) parseNode(node, jsonNode);\n }\n\n let result = {};\n for (let node of dom.childNodes) parseNode(node, result);\n\n return result;\n }\n\n static doAndResizeSmoothly(element, action, endAnimationCallback = () => {}) {\n const startWidth = element.offsetWidth;\n const startHeight = element.offsetHeight;\n action();\n const childElement = element.firstElementChild;\n const childRect = childElement.getBoundingClientRect();\n const endWidth = element.offsetWidth;\n const endHeight = element.offsetHeight;\n const styleWidth = element.style.width;\n const styleHeight = element.style.height;\n const childStyleWidth = childElement.style.width;\n const childStyleHeight = childElement.style.height;\n const styleOverflow = element.style.overflow;\n element.style.overflow = 'hidden';\n element.style.width = startWidth + 'px';\n element.style.height = startHeight + 'px';\n element.style.transition = 'width 200ms, height 200ms';\n childElement.style.width = childRect.width + 'px';\n childElement.style.height = childRect.height + 'px';\n setTimeout(() => {\n element.style.width = endWidth + 'px';\n element.style.height = endHeight + 'px';\n });\n setTimeout(() => {\n element.style.width = styleWidth;\n element.style.height = styleHeight;\n element.style.overflow = styleOverflow;\n element.style.transition = 'none';\n childElement.style.width = childStyleWidth;\n childElement.style.height = childStyleHeight;\n endAnimationCallback();\n }, 201);\n }\n\n static makeDraggable(element, referenceElement = document.body) {\n class PositionInfo {\n constructor(dataObject) {\n this.pageX = dataObject.pageX;\n this.pageY = dataObject.pageY;\n this.screenX = dataObject.pageX;\n this.screenY = dataObject.pageY;\n this.clientX = dataObject.clientX;\n this.clientY = dataObject.clientY;\n this.target = dataObject.target;\n }\n }\n\n class dragController {\n constructor(element, referenceElement) {\n this._element = element;\n this._referenceElement = referenceElement;\n this._element.addEventListener('mousedown', this._onMouseDown);\n this._element.addEventListener('touchstart', this._onTouchStart, {passive: false});\n }\n\n _onMouseDown = (e) => {\n if (this._startHandler && this._startHandler(e, new PositionInfo(e), this) !== false) {\n this._referenceElement.addEventListener('mousemove', this._onMouseMove);\n this._referenceElement.addEventListener('mouseup', this._onMouseUp);\n this._referenceElement.addEventListener('mouseleave', this._onMouseLeave);\n }\n }\n\n _onMouseMove = (e) => {\n this._moveHandler && this._moveHandler(e, new PositionInfo(e), this);\n }\n\n _onMouseUp = (e) => {\n this._removeMouseEvents();\n this._endHandler && this._endHandler(e, this);\n }\n\n _onMouseLeave = (e) => {\n this._removeMouseEvents();\n this._exceptionHandler && this._exceptionHandler(e, this);\n }\n\n _removeMouseEvents() {\n this._referenceElement.removeEventListener('mousemove', this._onMouseMove);\n this._referenceElement.removeEventListener('mouseup', this._onMouseUp);\n this._referenceElement.removeEventListener('mouseleave', this._onMouseLeave);\n }\n\n\n _onTouchStart = (e) => {\n if (this._startHandler && this._startHandler(e, new PositionInfo(e.touches[0]), this) !== false) {\n this._referenceElement.addEventListener('touchmove', this._onTouchMove, {passive: false});\n this._referenceElement.addEventListener('touchend', this._onTouchEnd);\n this._referenceElement.addEventListener('touchcancel', this._onTouchCancel);\n }\n }\n\n _onTouchMove = (e) => {\n this._moveHandler && this._moveHandler(e, new PositionInfo(e.touches[0]), this);\n }\n\n _onTouchEnd = (e) => {\n this._removeTouchEvents();\n this._endHandler && this._endHandler(e, this);\n }\n\n _onTouchCancel = (e) => {\n this._removeTouchEvents();\n this._exceptionHandler && this._exceptionHandler(e, this);\n }\n\n _removeTouchEvents() {\n this._referenceElement.removeEventListener('touchmove', this._onTouchMove);\n this._referenceElement.removeEventListener('touchend', this._onTouchEnd);\n this._referenceElement.removeEventListener('touchcancel', this._onTouchCancel);\n }\n\n onStart(startHandler = (event, positionInfo, controller) => {return this}) {\n this._startHandler = startHandler;\n return this;\n }\n\n onMove(moveHandler = (event, positionInfo, controller) => {return this}) {\n this._moveHandler = moveHandler;\n return this;\n }\n\n onEnd(endHandler = (event, controller) => {return this}) {\n this._endHandler = endHandler;\n return this;\n }\n\n onException(exceptionHandler = (event, controller) => {return this}) {\n this._exceptionHandler = exceptionHandler;\n return this;\n }\n\n stopListening() {\n this._element.removeEventListener('mousedown', this._onMouseDown);\n this._element.removeEventListener('touchstart', this._onTouchStart);\n delete this._element;\n delete this._referenceElement;\n }\n }\n\n return new dragController(element, referenceElement);\n }\n\n static makeMovable(popupElement, dragHandleElement) {\n let startMousePos, startPopupPos;\n const handlers = {};\n this.makeDraggable(dragHandleElement)\n .onStart((evt, positionInfo) => {\n if (positionInfo.target === dragHandleElement) {\n evt.preventDefault();\n popupElement.style.top = popupElement.offsetTop + 'px';\n popupElement.style.left = popupElement.offsetLeft + 'px';\n popupElement.style.position = 'absolute';\n startMousePos = {\n x: positionInfo.pageX,\n y: positionInfo.pageY,\n };\n startPopupPos = {\n x: popupElement.offsetLeft,\n y: popupElement.offsetTop,\n };\n if (handlers.startHandler) {\n handlers.startHandler(evt, positionInfo);\n }\n return true;\n } else {\n return false;\n }\n })\n .onMove((evt, positionInfo) => {\n evt.preventDefault();\n const currentMousePos = {\n x: positionInfo.pageX,\n y: positionInfo.pageY,\n };\n const delta = {\n x: currentMousePos.x - startMousePos.x,\n y: currentMousePos.y - startMousePos.y,\n };\n popupElement.style.left = (startPopupPos.x + delta.x) + 'px';\n popupElement.style.top = (startPopupPos.y + delta.y) + 'px';\n if (handlers.moveHandler) {\n handlers.moveHandler(evt, positionInfo);\n }\n });\n return {\n onStart: handler => handlers.startHandler = handler,\n onMove: handler => handlers.moveHandler = handler,\n }\n }\n}\n","\nexport const directions = {\n VERTICAL: 'vertical',\n HORIZONTAL: 'horizontal',\n};\n\nexport const modes = {\n NORMAL: 'normal',\n MAXIMISED: 'maximised',\n MINIMISED: 'minimised',\n};\n\nexport const events = {\n RE_FLOW: 'UI.reFlow',\n};\n\nexport const animationDurationMilliseconds = 500\n\nconst constants = {\n directions,\n modes,\n events,\n animationDurationMilliseconds,\n}\n\nexport default constants;\n","import {Model, MyassaysComponent, PropTypes} from 'myassays-global';\nimport Layout from './Layout';\nimport {directions} from './constants.js';\n\nexport default class LayoutElement extends MyassaysComponent {\n constructor() {\n super();\n\n this._layout = undefined;\n this.shadow = this.attachShadow({mode: 'open'});\n }\n\n static get propTypes() {\n return {[PropTypes.ALLOW_HYPHENS_IN_ATTRIBUTE_NAMES]: false};\n }\n\n get initialState() {\n // can make use of _props as initial attributes have been processed.\n return {\n showing: true,\n };\n }\n\n propertyChangedCallback(attrName, oldVal, newVal) {\n // e.g. update the DOM or _state from _props after a _props change.\n }\n\n stateChangedCallback(evt) {\n // e.g. update the DOM or _state from _state after a _state change.\n }\n\n static get observedAttributes() {\n return PropTypes.getObserved(this.propTypes);\n }\n\n connectedCallback() {\n this._props = PropTypes.attributesToProps(this);\n this._state = new Model(this.initialState);\n this.render();\n this._state.addEventListener('change', evt => this.stateChangedCallback(evt));\n this.attributesHaveBeenRead = true;\n }\n\n disconnectedCallback() {\n delete this._group;\n delete this._layout;\n }\n\n attributeChangedCallback(attrName, oldVal, newVal) {\n if (this.attributesHaveBeenRead) {\n const props = PropTypes.attributesToProps(this, attrName);\n const propName = Object.keys(props)[0];\n const previousValue = this._props[propName];\n const newValue = props[propName];\n this._props = {\n ...this._props,\n ...props,\n };\n this.propertyChangedCallback(propName, previousValue, newValue);\n }\n }\n\n applySkin(styles) {\n this.shadow.adoptedStyleSheets = [styles];\n }\n\n render() {\n this.shadow.innerHTML = this.constructor.template(this.templateData);\n //console.log(this.props.id, 'rendered', this.isSideways);\n }\n\n get templateData() {\n return {...this.props, ...this.state};\n }\n\n updateView() {\n //console.log(this.props.id, 'updated');\n }\n\n fixInnerSize(size) {\n // override to fix the inner content to the specified pixels.\n // Call without size to unfix.\n }\n\n setState(newAttributes, noTrigger = false) {\n this._state.set(newAttributes, noTrigger);\n }\n\n get state() {\n return this._state.attributes;\n }\n\n get previousState() {\n return this._state.previousAttributes;\n }\n\n hasChanged(attributeName) {\n return this.state[attributeName] !== this.previousState[attributeName];\n }\n\n get props() {\n return {\n ...this._props,\n };\n }\n\n get isVisible() {\n // override to return whether an element should be visible\n return true;\n }\n\n get group() {\n if (this._group) {\n return this._group;\n } else {\n const layoutElement = this.layout;\n const groupElement = this.parentElement;\n return this._group = (groupElement !== layoutElement ? groupElement : null);\n }\n }\n\n get isSideways() {\n return this.group ? (this.group.props ? this.group.props.direction === directions.HORIZONTAL : undefined) : undefined;\n }\n\n get layout() {\n if (this._layout) {\n return this._layout;\n } else {\n let layout = this;\n while (! (layout instanceof Layout)) {\n layout = layout.parentElement;\n }\n return this._layout = layout;\n }\n }\n}\n","\nimport LayoutElement from './LayoutElement';\nimport PropTypes from 'myassays-global/PropTypes';\n\nexport default class ResizableElement extends LayoutElement {\n static get propTypes() {\n return {\n ...super.propTypes,\n id: PropTypes.string.required,\n initialBasis: PropTypes.dimension,\n initialGrow: PropTypes.number,\n }\n }\n\n constructor() {\n super();\n }\n\n get initialState() {\n const size = this._props.initialBasis === undefined ? 'unset' : this._props.initialBasis;\n return {\n ...super.initialState,\n size,\n forceFluid: false,\n isResizing: false,\n showing: this._props.initiallyShowing,\n }\n }\n\n stateChangedCallback(evt) {\n super.stateChangedCallback(evt);\n const { hasChanged, attributes } = evt.data;\n\n hasChanged('isResizing', truth => {\n this.classList.toggle('resizing', truth);\n });\n\n if (hasChanged('size') || hasChanged('forceFluid')) {\n this.updateView();\n }\n }\n\n get grow() {\n const {size, forceFluid} = this.state;\n const {initialGrow} = this.props;\n const grow = size !== 'unset' ? 'unset' : initialGrow !== undefined ? initialGrow : '1';\n return (grow === 'unset' && forceFluid) ? '1' : grow;\n }\n\n get basis() {\n const { size, forceFluid } = this.state;\n return forceFluid ? 'unset' : size;\n }\n\n get templateData() {\n return {\n ...super.templateData,\n grow: this.grow,\n basis: this.basis,\n width: this.isSideways === null ? '100%' : (this.isSideways ? 'unset' : '100%'),\n height: this.isSideways === null ? '100%' : (!this.isSideways ? 'unset' : '100%'),\n }\n }\n\n updateView() {\n super.updateView();\n if (this.isVisible) {\n if (this._saveMinWidth !== undefined) {\n this.style.minWidth = this._saveMinWidth;\n delete this._saveMinWidth;\n }\n this.style.flexBasis = this.basis;\n this.style.flexGrow = this.grow;\n } else {\n this.style.flexBasis = '0';\n this.style.flexGrow = '0';\n if (this.style.minWidth) {\n this._saveMinWidth = this.style.minWidth;\n this.style.minWidth = '0';\n }\n }\n }\n}\n","\nimport LayoutElement from './LayoutElement';\nimport PropTypes from 'myassays-global/PropTypes';\nimport { directions } from './constants';\nimport {Utils} from 'myassays-global';\n\nexport default class Splitter extends LayoutElement {\n static get propTypes() {\n return {\n ...super.propTypes,\n style: PropTypes.style.default(''),\n class: PropTypes.string.default(''),\n resizes: PropTypes.string.required,\n }\n }\n\n constructor() {\n super();\n\n Utils.makeDraggable(this)\n .onStart(this._dragStart)\n .onMove(this._dragMove)\n .onEnd(this._dragEnd)\n .onException(this._dragEnd)\n }\n\n _dragStart = (evt, positionInfo) => {\n evt.preventDefault();\n const group = this.group;\n const resized = this.resizedMember;\n const units = resized.props.initialBasis ? resized.props.initialBasis.replace(/^.*?(px|%)$/, '$1') : '%';\n const isHorizontal = group.props.direction === directions.HORIZONTAL;\n const spaceAvailable = isHorizontal ? group.offsetWidth : group.offsetHeight;\n const size = isHorizontal ? resized.offsetWidth : resized.offsetHeight;\n const initialSize = units === 'px' ? size : 100 * size / spaceAvailable;\n this.mouseDownData = {\n resized: resized,\n downPos: {x: positionInfo.pageX, y: positionInfo.pageY},\n units: units,\n isHorizontal: isHorizontal,\n spaceAvailable: spaceAvailable,\n initialSize: initialSize,\n };\n this.layout.getLayoutElementsByType(LayoutElement).forEach(element => {\n element.setState({isResizing: true});\n });\n }\n\n _dragMove = (evt, positionInfo) => {\n evt.preventDefault();\n const pos = {x: positionInfo.pageX, y: positionInfo.pageY};\n const { resized, downPos, units, isHorizontal, spaceAvailable, initialSize } = this.mouseDownData;\n const multiplier = (resized === this.nextElementSibling) ? -1 : 1;\n if (units === 'px') {\n if (isHorizontal) {\n resized.setState({size: `${initialSize + multiplier * (pos.x - downPos.x)}px`});\n } else {\n resized.setState({size: `${initialSize + multiplier * (pos.y - downPos.y)}px`});\n }\n } else {\n if (isHorizontal) {\n resized.setState({size: `${initialSize + 100 * multiplier * (pos.x - downPos.x)/spaceAvailable}%`});\n } else {\n resized.setState({size: `${initialSize + 100 * multiplier * (pos.y - downPos.y)/spaceAvailable}%`});\n }\n }\n }\n\n _dragEnd = evt => {\n evt.preventDefault();\n const { resized, units, isHorizontal, spaceAvailable } = this.mouseDownData;\n const size = isHorizontal ? resized.offsetWidth : resized.offsetHeight;\n resized.setState({\n size: units === 'px' ? `${size}px` : `${100 * size / spaceAvailable}%`,\n });\n this.layout.getLayoutElementsByType(LayoutElement).forEach(element => {\n element.setState({\n isResizing: false,\n });\n });\n delete this.mouseDownData;\n }\n\n get resizedMember() {\n return this.parentElement.querySelector('#' + this._props.resizes);\n }\n\n stateChangedCallback(evt) {\n super.stateChangedCallback(evt);\n const { hasChanged } = evt.data;\n\n hasChanged('showing', truth => {\n this.updateView();\n });\n }\n\n get isVisible() {\n return this._state.get('showing');\n }\n\n updateView() {\n this.style.flexBasis = this.isVisible ? 'content' : '0';\n }\n\n get templateData() {\n return {\n ...super.templateData,\n sideways: this.isSideways,\n }\n }\n\n static template(data) {\n return `\n \n
\n `;\n }\n}\n","\nimport { directions } from './constants';\nimport PropTypes from 'myassays-global/PropTypes';\nimport ResizableElement from './ResizableElement.js';\nimport Splitter from './Splitter.js';\n\nexport default class Group extends ResizableElement {\n static get propTypes() {\n return {\n ...super.propTypes,\n style: PropTypes.style.default(''),\n class: PropTypes.string.default(''),\n direction: PropTypes.string.lookup(directions).required,\n }\n }\n\n onMemberVisibilityChange(member) {\n const children = Array.from(this.children);\n children.forEach((item, index, array) => {\n if (item instanceof Splitter) {\n let showing = false;\n const { resizedMember } = item;\n if (resizedMember.isVisible) {\n // check forwards and backwards for visible GroupMember instances\n for (let i = index - 1; i >= 0; i--) {\n const sibling = array[i];\n if (sibling instanceof ResizableElement && sibling.isVisible) {\n showing = true;\n break;\n }\n }\n if (showing) {\n showing = false;\n let precedingSplitter = undefined;\n for (let i = index + 1; i < array.length; i++) {\n const sibling = array[i];\n if (sibling instanceof ResizableElement && sibling.isVisible) {\n showing = precedingSplitter ? precedingSplitter.resizedMember !== sibling : true;\n break;\n }\n precedingSplitter = sibling instanceof Splitter ? sibling : undefined;\n }\n }\n }\n item.setState({showing});\n resizedMember.setState({forceFluid: !showing});\n }\n });\n const group = this.group;\n this.updateView();\n group && group.onMemberVisibilityChange(this);\n }\n\n get isVisible() {\n const children = Array.from(this.children);\n return children.filter(item => item.state && item.isVisible).length > 0;\n }\n\n fixInnerSize(size) {\n super.fixInnerSize(size);\n const innerElem = this.shadow.querySelector('.group');\n if (this.isSideways) {\n innerElem.style.width = size === undefined ? '100%' : size + 'px';\n } else {\n innerElem.style.height = size === undefined ? '100%' : size + 'px';\n }\n }\n\n static template(data) {\n return `\n \n\n \n \n
\n `;\n }\n}\n","\n\nimport { modes } from './constants';\nimport PropTypes from 'myassays-global/PropTypes';\nimport ResizableElement from './ResizableElement.js';\n\nexport default class Pane extends ResizableElement {\n static get propTypes() {\n return {\n ...super.propTypes,\n titleText: PropTypes.string.default('Untitled pane').observed,\n minimisedTitle: PropTypes.string.default('').observed,\n canMaximise: PropTypes.bool.default(true),\n canMinimise: PropTypes.bool.default(true),\n showTitleBar: PropTypes.bool.default(true).observed,\n initialMode: PropTypes.string.lookup(modes).default(modes.NORMAL),\n resizeUpdateInterval: PropTypes.number.default(0),\n initiallyShowing: PropTypes.bool.default(true),\n style: PropTypes.style.default(''),\n class: PropTypes.string.default(''),\n titleBarStyle: PropTypes.style.default(''),\n contentStyle: PropTypes.style.default(''),\n }\n }\n\n get initialState() {\n return {\n ...super.initialState,\n mode: this._props.initialMode,\n forceMinimised: false,\n }\n }\n\n constructor() {\n super();\n this.shadow.addEventListener('click', this.onClick);\n this.shadow.addEventListener('dblclick', this.onDoubleClick);\n }\n\n connectedCallback() {\n super.connectedCallback();\n if (this.props.resizeUpdateInterval !== 0) {\n this._resizeObserver = new ResizeObserver(() => {\n if (!this._preventReflow) {\n this._preventReflow = true;\n setTimeout(() => {\n this.dispatchEvent(new CustomEvent('paneresize', {\n bubbles: true,\n detail: {\n layoutId: this.layout.id,\n paneId: this.id,\n },\n }));\n this._preventReflow = false;\n }, this.props.resizeUpdateInterval);\n }\n });\n this._resizeObserver.observe(this);\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._resizeObserver && this._resizeObserver.disconnect();\n }\n\n onClick = evt => {\n switch (evt.target.className) {\n case 'titleBar minimise':\n evt.preventDefault();\n this.minimise();\n break;\n case 'titleBar maximise':\n evt.preventDefault();\n this.maximise();\n break;\n case 'titleBar restore':\n evt.preventDefault();\n this.restore();\n break;\n }\n }\n\n maximise() {\n this.layout.saveElementSizes();\n this.setState({mode:modes.MAXIMISED});\n this.layout.animateElements();\n }\n\n minimise() {\n this.layout.saveElementSizes();\n this.setState({mode: modes.MINIMISED});\n this.layout.animateElements();\n }\n\n restore() {\n this.layout.saveElementSizes();\n this.setState({mode:modes.NORMAL});\n this.layout.animateElements();\n }\n\n onDoubleClick = evt => {\n if (this.props.canMaximise && evt.target.className === 'titleBar title') {\n if (this.state.mode === modes.NORMAL) {\n this.maximise();\n } else if(this.state.mode === modes.MAXIMISED) {\n this.restore();\n }\n evt.preventDefault();\n }\n }\n\n stateChangedCallback(evt) {\n super.stateChangedCallback(evt);\n const { hasChanged, attributes } = evt.data;\n\n hasChanged('isRezising', truth => {\n const elem = this.shadow.querySelector('.content');\n elem && (elem.style.pointerEvents = truth ? 'none' : 'all');\n });\n\n if (hasChanged('forceMinimised') || hasChanged('mode') || hasChanged('showing')) {\n this.group.onMemberVisibilityChange(this);\n this.updateView();\n }\n\n hasChanged('mode', (value, previousValue) => {\n this.setPaneControls();\n this.layout.onPaneStateChange(this, value, previousValue);\n });\n }\n\n setPaneControls() {\n const value = this.state.mode;\n let elem = this.shadow.querySelector('.restore');\n elem && (elem.style.display = this.props.canMaximise && value === modes.MAXIMISED ? 'block' : 'none');\n elem = this.shadow.querySelector('.maximise');\n elem && (elem.style.display = this.props.canMaximise && value === modes.NORMAL ? 'block' : 'none');\n }\n\n get isVisible() {\n const { showing, mode, forceMinimised } = this.state;\n return showing && mode !== modes.MINIMISED && !forceMinimised;\n }\n\n get isMinimised() {\n return this.state.mode === modes.MINIMISED || this.state.forceMinimised;\n }\n\n get isMaximised() {\n return this.state.mode === modes.MAXIMISED;\n }\n\n propertyChangedCallback(attrName, oldVal, newVal) {\n let elem;\n switch (attrName) {\n case 'titleText':\n elem = this.shadow.querySelector('.title');\n elem && (elem.text = newVal);\n break;\n case 'minimisedTitle':\n // TODO: update minimised panes list\n break;\n case 'showTitleBar':\n elem = this.shadow.querySelector('.titleBarContainer');\n elem && (elem.style.display = newVal ? 'flex' : 'none');\n break;\n }\n }\n\n show() {\n this.layout.saveElementSizes();\n this.setState({\n showing: true,\n mode: modes.NORMAL,\n forceMinimised: false,\n });\n this.layout.onPaneStateChange(this, this.state.mode, this.previousState.mode);\n this.layout.animateElements();\n }\n\n hide() {\n this.layout.saveElementSizes();\n this.setState({showing: false});\n this.layout.onPaneStateChange(this, this.state.mode, this.previousState.mode);\n this.layout.animateElements();\n }\n\n\n render() {\n super.render();\n this.setPaneControls();\n const { backgroundColor } = this.shadow.querySelector('.content').style;\n this.style.backgroundColor = backgroundColor;\n }\n\n fixInnerSize(size) {\n super.fixInnerSize(size);\n const innerElem = this.shadow.querySelector('.pane');\n if (this.isSideways) {\n innerElem.style.width = size === undefined ? '100%' : size + 'px';\n } else {\n innerElem.style.height = size === undefined ? '100%' : size + 'px';\n }\n }\n\n static template(data) {\n return `\n \n \n
\n
${data.titleText}
\n
\n
\n
\n
\n
\n
\n `;\n }\n}\n","\nimport LayoutElement from './LayoutElement';\nimport PropTypes from 'myassays-global/PropTypes';\nimport { directions } from './constants';\n\nexport default class MinimisedPaneList extends LayoutElement {\n static get propTypes() {\n return {\n ...super.propTypes,\n id: PropTypes.string,\n style: PropTypes.style.default(''),\n class: PropTypes.string.default(''),\n tabStyle: PropTypes.style.default(''),\n }\n }\n\n get initialState() {\n return {\n ...super.initialState,\n paneList: [],\n };\n }\n\n stateChangedCallback(evt) {\n super.stateChangedCallback(evt);\n const { hasChanged, attributes } = evt.data;\n if (hasChanged('showing') || hasChanged('paneList')) {\n this.updateView()\n }\n\n hasChanged('paneList', (list, previousList) => {\n /*\n A tab is created for every pane that can be minimised\n */\n const minimisedPaneList = this.shadow.querySelector('.minimisedPaneList');\n if (!minimisedPaneList) return;\n\n let tabIdsToShow = list.filter(item => item.included).map(item => item.id);\n if (tabIdsToShow.length === 0) {\n tabIdsToShow = previousList.filter(item => item.included).map(item => item.id);\n }\n\n previousList && previousList.forEach(previousItem => {\n if (! list.find(item => item.id === previousItem.id)) {\n const elem = minimisedPaneList.querySelector(`[data-id=\"${previousItem.id}\"]`);\n elem && elem.remove();\n }\n });\n list.forEach(item => {\n if (! previousList.find(previousItem => previousItem.id === item.id)) {\n minimisedPaneList.innerHTML += this.constructor.tabTemplate({\n ...item,\n orientation: this.isSideways ? 'sideways' : 'normal',\n tabStyle: this._props.tabStyle,\n });\n } else {\n const elem = minimisedPaneList.querySelector(`[data-id=\"${item.id}\"]`);\n elem.style.display = tabIdsToShow.includes(item.id) ? 'block' : 'none';\n }\n });\n });\n }\n\n get isVisible() {\n const { showing, paneList } = this.state;\n return showing && paneList.filter(item => item.included).length > 0;\n }\n\n updateView() {\n this.style.flexBasis = this.isVisible ? 'content' : '0';\n }\n\n constructor() {\n super();\n this.shadow.addEventListener('click', this.onClick);\n }\n\n onClick = evt => {\n switch (evt.target.className) {\n case 'tab':\n const paneId = evt.target.getAttribute('data-id');\n this.layout.minimisedTabClicked(paneId);\n break;\n }\n evt.preventDefault();\n }\n\n get templateData() {\n return {\n ...super.templateData,\n sideways: this.isSideways,\n }\n }\n\n static template(data) {\n return `\n \n \n \n
\n `;\n }\n\n static tabTemplate = data => {\n return `\n ${data.titleText}
\n `;\n }\n\n}\n","import {Model} from 'myassays-global';\n\nexport default class Animator {\n static DELAY = 300;\n static phases = {\n INITIALISE: 'initialise',\n START: 'start',\n END: 'end',\n CANCELLED: 'cancelled',\n IDLE: 'idle',\n }\n\n static create(delay) {\n return new Animator(delay);\n }\n\n onInitialise(callBack) {\n this._initialiseCallBack = callBack;\n return this;\n }\n\n onStart(callBack) {\n this._startCallBack = callBack;\n return this;\n }\n\n onEnd(callBack) {\n this._endCallBack = callBack;\n return this;\n }\n\n onIdle(callBack) {\n this._idleCallBack = callBack;\n return this;\n }\n\n onCancel(callBack) {\n this._cancelCallBack = callBack;\n return this;\n }\n\n constructor(delay) {\n const { phases, DELAY } = Animator;\n this._delay = delay === undefined ? DELAY : delay;\n this._phase = phases.IDLE;\n this._timerId = undefined;\n return this;\n }\n\n begin() {\n const { phases } = Animator;\n this.cancel();\n this._phase = phases.INITIALISE;\n this._timerId = setTimeout(() => {\n this._phase = phases.START;\n this._timerId = setTimeout(() => {\n this._phase = phases.END;\n this._timerId = setTimeout(() => {\n this._phase = phases.IDLE;\n delete this._timerId;\n this._idleCallBack(this);\n }, 1);\n this._endCallBack(this);\n }, this._delay);\n this._startCallBack(this);\n }, 1);\n this._initialiseCallBack(this);\n return this;\n }\n\n cancel() {\n const { phases } = Animator;\n if (this._timerId !== undefined) {\n clearTimeout(this._timerId);\n delete this._timerId;\n this._phase = phases.CANCELLED;\n this._cancelCallBack(this);\n }\n return this;\n }\n\n get delay() {\n return this._delay;\n }\n\n get phase() {\n return this._phase;\n }\n}\n","\nimport LayoutElement from './LayoutElement.js';\nimport Group from './Group';\nimport Pane from './Pane';\nimport Splitter from './Splitter';\nimport MinimisedPaneList from './MinimisedPaneList';\nimport PropTypes from 'myassays-global/PropTypes';\nimport { modes } from './constants';\nimport Animator from './Animator.js';\n\nexport default class Layout extends LayoutElement {\n static get propTypes() {\n return {\n ...super.propTypes,\n id: PropTypes.string.required,\n style: PropTypes.style.default(''),\n class: PropTypes.string.default(''),\n skin: PropTypes.string,\n transitionMilliseconds: PropTypes.number.default(300),\n }\n }\n\n static template(props) {\n return `\n \n \n `;\n }\n\n constructor() {\n super();\n if (document.readyState === \"loaded\" || document.readyState === \"complete\") {\n this._domContentLoaded = true;\n } else {\n document.addEventListener('DOMContentLoaded', () => {\n this._onDomContentLoaded();\n });\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._isInvalid = undefined;\n if (this.props.skin) {\n this._fetchingSkin = true;\n const skinElement = document.getElementById(this.props.skin);\n if (skinElement instanceof HTMLStyleElement) {\n const onSkinLoad = () => {\n this._fetchingSkin = false;\n this._skinStyles = new CSSStyleSheet();\n this._skinStyles.replaceSync(skinElement.innerHTML);\n if (this._domContentLoaded) {\n this.initialRender();\n }\n skinElement.removeEventListener('load', onSkinLoad);\n }\n skinElement.addEventListener('load', onSkinLoad);\n } else {\n fetch(this.props.skin).then(response => {\n this._fetchingSkin = false;\n response.text().then(text => {\n this._skinStyles = new CSSStyleSheet();\n this._skinStyles.replaceSync(text);\n if (this._domContentLoaded) {\n this.initialRender();\n }\n });\n }, error => {\n this._fetchingSkin = false;\n if (this._domContentLoaded) {\n this.initialRender();\n }\n });\n }\n } else if (this._domContentLoaded) {\n setTimeout(() => this.initialRender(), 1);\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n\n _onDomContentLoaded() {\n this._domContentLoaded = true;\n if (!this._fetchingSkin) {\n setTimeout(() => this.initialRender(), 1);\n }\n }\n\n initialRender() {\n if (this.skinStyles) {\n const elements = this.getAllLayoutElements();\n elements.forEach(element => element.applySkin(this.skinStyles));\n }\n this.getLayoutElementsByType(Pane).forEach(pane => {\n pane.updateView();\n pane.group.onMemberVisibilityChange(pane);\n this.onPaneStateChange(pane, pane.state.mode, pane.previousState.mode);\n });\n this.style.visibility = 'visible';\n }\n\n getAllLayoutElements() {\n const selector = [Group, Pane, Splitter, MinimisedPaneList].map(Type => customElements.getName(Type)).join(', ');\n return Array.from(this.querySelectorAll(selector));\n }\n\n getLayoutElementById(id) {\n return this.querySelector(`#${id}`);\n }\n\n getLayoutElementsByType(Type) {\n const tagName = customElements.getName(Type);\n return Array.from(this.querySelectorAll(tagName));\n }\n\n getMaximisedPaneElement() {\n const element = this.getLayoutElementsByType(Pane).find(pane => pane.state && pane.state.mode === modes.MAXIMISED);\n return element || undefined;\n }\n\n getMinimisedPaneListElement() {\n const element = this.getLayoutElementsByType(MinimisedPaneList)[0];\n return element || undefined;\n }\n\n get skinStyles() {\n return this._skinStyles;\n }\n\n saveElementSizes() {\n if (this.props.transitionMilliseconds === 0) {\n return;\n }\n\n this.getAllLayoutElements().forEach(elem => {\n const isSideways = elem.isSideways;\n elem._saveData = {\n basis: elem.style.flexBasis,\n grow: elem.style.flexGrow,\n size: isSideways ? elem.offsetWidth : elem.offsetHeight,\n minSize: isSideways ? elem.style.minWidth : elem.style.minHeight,\n }\n });\n }\n\n animateElements() {\n if (this.props.transitionMilliseconds === 0) {\n return;\n }\n\n this._animator && this._animator.cancel();\n this._allChangedElements = this.getAllLayoutElements().filter(elem => elem.style.flexBasis !== elem._saveData.basis);\n\n this._allChangedElements.forEach(elem => {\n const isSideways = elem.isSideways;\n elem._newData = {\n basis: elem.style.flexBasis,\n grow: elem.style.flexGrow,\n size: isSideways ? elem.offsetWidth : elem.offsetHeight,\n minSize: isSideways ? elem.style.minWidth : elem.style.minHeight,\n }\n });\n\n const endAndCancelCallBack = animator => {\n this._allChangedElements.forEach(elem => {\n elem.style.transition = undefined;\n if (elem._newData) {\n elem.style.flexBasis = elem._newData.basis;\n elem.style.flexGrow = elem._newData.grow;\n if (elem.isSideways) {\n elem.style.minWidth = elem._newData.minSize;\n } else {\n elem.style.minHeight = elem._newData.minSize;\n }\n }\n elem.fixInnerSize();\n });\n this.style.pointerEvents = 'all';\n delete this._allChangedElements;\n };\n\n this._animator || (this._animator = Animator\n .create(this.props.transitionMilliseconds)\n .onInitialise(animator => {\n this.style.pointerEvents = 'none';\n this._allChangedElements.forEach(elem => {\n const isSideways = elem.isSideways;\n const group = elem.group;\n elem.style.flexGrow = '0';\n if (group && this._allChangedElements.includes(group) && group._newData.size === 0) {\n elem.style.flexBasis = elem._saveData.basis;\n elem.style.flexGrow = elem._saveData.grow;\n if (elem.isSideways) {\n elem.style.minWidth = elem._saveData.minSize;\n } else {\n elem.style.minHeight = elem._saveData.minSize;\n }\n } else if (!group || !(this._allChangedElements.includes(group) && group._saveData.size === 0)) {\n elem.style.flexBasis = elem._saveData.size + 'px';\n if (isSideways) {\n elem.style.minWidth = '0';\n } else {\n elem.style.minHeight = '0';\n }\n if (elem._saveData.size === 0) {\n elem.fixInnerSize(elem._newData.size);\n } else if (elem._newData.size === 0) {\n elem.fixInnerSize(elem._saveData.size);\n }\n }\n });\n })\n .onStart(animator => {\n this._allChangedElements.forEach(elem => {\n const group = elem.group;\n if (!group || !(this._allChangedElements.includes(group) && group._newData.size === 0)) {\n elem.style.transition = `flex-basis ${this.props.transitionMilliseconds}ms`;\n elem.style.flexBasis = elem._newData.size + 'px';\n }\n });\n })\n .onEnd(animator => {\n endAndCancelCallBack();\n })\n .onCancel(animator => {\n endAndCancelCallBack();\n })\n .onIdle(animator => {\n this.getAllLayoutElements().forEach(elem => {\n delete elem._saveData;\n delete elem._newData;\n });\n }));\n this._animator.begin();\n }\n\n onPaneStateChange(pane, mode, previousMode) {\n const panes = this.getLayoutElementsByType(Pane).filter(element => element.props && element.props.canMinimise);\n panes.forEach(element => {\n if (element !== pane) {\n if (mode === modes.MAXIMISED && previousMode === modes.NORMAL) {\n element.setState({forceMinimised: true});\n } else if (mode !== modes.MAXIMISED && previousMode === modes.MAXIMISED) {\n element.setState({forceMinimised: false});\n } else if (mode === modes.NORMAL && previousMode === modes.MINIMISED) {\n if (element.state.forceMinimised) {\n element.setState({\n forceMinimised: false,\n mode: modes.MINIMISED,\n });\n }\n }\n }\n });\n const minimisedPaneList = this.getMinimisedPaneListElement();\n minimisedPaneList && minimisedPaneList.setState && minimisedPaneList.setState({paneList: panes.map(element => {\n const {props, state} = element;\n return {\n id: props.id,\n included: !element.isVisible && state.showing,\n titleText: props.minimisedTitle || props.titleText,\n style: props.titleBarStyle,\n }\n })});\n }\n\n render() {\n if (!this._fetchingSkin) {\n super.render();\n }\n }\n\n minimisedTabClicked(paneId) {\n // A tab mey exist because the pane it represents is mode MINIMISED,\n // or because another pane is mode MAXIMISED, in which case this pane\n // is either mode NORMAL or MINIMISED if it had been minimised before.\n this.saveElementSizes();\n\n const pane = this.getLayoutElementById(paneId);\n if (pane) {\n const maximisedPane = this.getMaximisedPaneElement();\n if (maximisedPane) {\n this.getLayoutElementsByType(Pane).forEach(paneElem => {\n if (paneElem === pane) {\n paneElem.setState({\n mode: modes.NORMAL,\n forceMinimised: false,\n });\n } else if (paneElem.state.forceMinimised) {\n paneElem.setState({\n mode: modes.MINIMISED,\n forceMinimised: false,\n });\n }\n });\n maximisedPane.setState({mode: modes.NORMAL})\n } else {\n pane.setState({mode: modes.NORMAL});\n }\n }\n\n this.animateElements();\n }\n\n getPaneById(id) {\n const pane = this.getLayoutElementById(id);\n if (!pane) {\n throw new Error(`mp-pane#${id} does not exist in mp-layout#${this.id}`);\n } else {\n return pane;\n }\n }\n}\n","\nimport Layout from './src/Layout';\nimport Group from './src/Group';\nimport Pane from './src/Pane';\nimport MinimisedPaneList from './src/MinimisedPaneList';\nimport Splitter from './src/Splitter';\nimport 'construct-style-sheets-polyfill';\n\ncustomElements.define('mp-layout', Layout);\ncustomElements.define('mp-group', Group);\ncustomElements.define('mp-pane', Pane);\ncustomElements.define('mp-minimised-pane-list', MinimisedPaneList);\ncustomElements.define('mp-splitter', Splitter);\n\nif (window.MyAssaysPanes !== undefined) {\n if (!(window.MyAssaysPanes instanceof Object)) {\n throw new Error('Could not create \"window.MyAssaysPanes\" namespace.');\n }\n} else {\n window.MyAssaysPanes = {};\n}\nwindow.MyAssaysPanes = {\n ...window.MyAssaysPanes,\n getPane: function (layoutId, paneId) {\n return document.getElementById(layoutId).getPaneById(paneId);\n },\n showPane: function (layoutId, paneId) {\n MyAssaysPanes.getPane(layoutId, paneId).show();\n },\n hidePane: function (layoutId, paneId) {\n MyAssaysPanes.getPane(layoutId, paneId).hide();\n },\n minimisePane: function (layoutId, paneId) {\n MyAssaysPanes.getPane(layoutId, paneId).minimise();\n },\n maximisePane: function (layoutId, paneId) {\n MyAssaysPanes.getPane(layoutId, paneId).maximise();\n },\n restorePane: function (layoutId, paneId) {\n MyAssaysPanes.getPane(layoutId, paneId).restore();\n },\n isMinimised: function (layoutId, paneId) {\n return MyAssaysPanes.getPane(layoutId, paneId).isMinimised;\n },\n isMaximised: function (layoutId, paneId) {\n return MyAssaysPanes.getPane(layoutId, paneId).isMaximised;\n },\n}\n","(function () {\n 'use strict';\n\n if (typeof document === 'undefined' || 'adoptedStyleSheets' in document) { return; }\n\n var hasShadyCss = 'ShadyCSS' in window && !ShadyCSS.nativeShadow;\n var bootstrapper = document.implementation.createHTMLDocument('');\n var closedShadowRootRegistry = new WeakMap();\n var _DOMException = typeof DOMException === 'object' ? Error : DOMException;\n var defineProperty = Object.defineProperty;\n var forEach = Array.prototype.forEach;\n\n var importPattern = /@import.+?;?$/gm;\n function rejectImports(contents) {\n var _contents = contents.replace(importPattern, '');\n if (_contents !== contents) {\n console.warn('@import rules are not allowed here. See https://github.com/WICG/construct-stylesheets/issues/119#issuecomment-588352418');\n }\n return _contents.trim();\n }\n function isElementConnected(element) {\n return 'isConnected' in element\n ? element.isConnected\n : document.contains(element);\n }\n function unique(arr) {\n return arr.filter(function (value, index) { return arr.indexOf(value) === index; });\n }\n function diff(arr1, arr2) {\n return arr1.filter(function (value) { return arr2.indexOf(value) === -1; });\n }\n function removeNode(node) {\n node.parentNode.removeChild(node);\n }\n function getShadowRoot(element) {\n return element.shadowRoot || closedShadowRootRegistry.get(element);\n }\n\n var cssStyleSheetMethods = [\n 'addRule',\n 'deleteRule',\n 'insertRule',\n 'removeRule',\n ];\n var NonConstructedStyleSheet = CSSStyleSheet;\n var nonConstructedProto = NonConstructedStyleSheet.prototype;\n nonConstructedProto.replace = function () {\n return Promise.reject(new _DOMException(\"Can't call replace on non-constructed CSSStyleSheets.\"));\n };\n nonConstructedProto.replaceSync = function () {\n throw new _DOMException(\"Failed to execute 'replaceSync' on 'CSSStyleSheet': Can't call replaceSync on non-constructed CSSStyleSheets.\");\n };\n function isCSSStyleSheetInstance(instance) {\n return typeof instance === 'object'\n ? proto$1.isPrototypeOf(instance) ||\n nonConstructedProto.isPrototypeOf(instance)\n : false;\n }\n function isNonConstructedStyleSheetInstance(instance) {\n return typeof instance === 'object'\n ? nonConstructedProto.isPrototypeOf(instance)\n : false;\n }\n var $basicStyleElement = new WeakMap();\n var $locations = new WeakMap();\n var $adoptersByLocation = new WeakMap();\n var $appliedMethods = new WeakMap();\n function addAdopterLocation(sheet, location) {\n var adopter = document.createElement('style');\n $adoptersByLocation.get(sheet).set(location, adopter);\n $locations.get(sheet).push(location);\n return adopter;\n }\n function getAdopterByLocation(sheet, location) {\n return $adoptersByLocation.get(sheet).get(location);\n }\n function removeAdopterLocation(sheet, location) {\n $adoptersByLocation.get(sheet).delete(location);\n $locations.set(sheet, $locations.get(sheet).filter(function (_location) { return _location !== location; }));\n }\n function restyleAdopter(sheet, adopter) {\n requestAnimationFrame(function () {\n adopter.textContent = $basicStyleElement.get(sheet).textContent;\n $appliedMethods\n .get(sheet)\n .forEach(function (command) {\n return adopter.sheet[command.method].apply(adopter.sheet, command.args);\n });\n });\n }\n function checkInvocationCorrectness(self) {\n if (!$basicStyleElement.has(self)) {\n throw new TypeError('Illegal invocation');\n }\n }\n function ConstructedStyleSheet() {\n var self = this;\n var style = document.createElement('style');\n bootstrapper.body.appendChild(style);\n $basicStyleElement.set(self, style);\n $locations.set(self, []);\n $adoptersByLocation.set(self, new WeakMap());\n $appliedMethods.set(self, []);\n }\n var proto$1 = ConstructedStyleSheet.prototype;\n proto$1.replace = function replace(contents) {\n try {\n this.replaceSync(contents);\n return Promise.resolve(this);\n }\n catch (e) {\n return Promise.reject(e);\n }\n };\n proto$1.replaceSync = function replaceSync(contents) {\n checkInvocationCorrectness(this);\n if (typeof contents === 'string') {\n var self_1 = this;\n $basicStyleElement.get(self_1).textContent = rejectImports(contents);\n $appliedMethods.set(self_1, []);\n $locations.get(self_1).forEach(function (location) {\n if (location.isConnected()) {\n restyleAdopter(self_1, getAdopterByLocation(self_1, location));\n }\n });\n }\n };\n defineProperty(proto$1, 'cssRules', {\n configurable: true,\n enumerable: true,\n get: function cssRules() {\n checkInvocationCorrectness(this);\n return $basicStyleElement.get(this).sheet.cssRules;\n },\n });\n defineProperty(proto$1, 'media', {\n configurable: true,\n enumerable: true,\n get: function media() {\n checkInvocationCorrectness(this);\n return $basicStyleElement.get(this).sheet.media;\n },\n });\n cssStyleSheetMethods.forEach(function (method) {\n proto$1[method] = function () {\n var self = this;\n checkInvocationCorrectness(self);\n var args = arguments;\n $appliedMethods.get(self).push({ method: method, args: args });\n $locations.get(self).forEach(function (location) {\n if (location.isConnected()) {\n var sheet = getAdopterByLocation(self, location).sheet;\n sheet[method].apply(sheet, args);\n }\n });\n var basicSheet = $basicStyleElement.get(self).sheet;\n return basicSheet[method].apply(basicSheet, args);\n };\n });\n defineProperty(ConstructedStyleSheet, Symbol.hasInstance, {\n configurable: true,\n value: isCSSStyleSheetInstance,\n });\n\n var defaultObserverOptions = {\n childList: true,\n subtree: true,\n };\n var locations = new WeakMap();\n function getAssociatedLocation(element) {\n var location = locations.get(element);\n if (!location) {\n location = new Location(element);\n locations.set(element, location);\n }\n return location;\n }\n function attachAdoptedStyleSheetProperty(constructor) {\n defineProperty(constructor.prototype, 'adoptedStyleSheets', {\n configurable: true,\n enumerable: true,\n get: function () {\n return getAssociatedLocation(this).sheets;\n },\n set: function (sheets) {\n getAssociatedLocation(this).update(sheets);\n },\n });\n }\n function traverseWebComponents(node, callback) {\n var iter = document.createNodeIterator(node, NodeFilter.SHOW_ELEMENT, function (foundNode) {\n return getShadowRoot(foundNode)\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_REJECT;\n },\n null, false);\n for (var next = void 0; (next = iter.nextNode());) {\n callback(getShadowRoot(next));\n }\n }\n var $element = new WeakMap();\n var $uniqueSheets = new WeakMap();\n var $observer = new WeakMap();\n function isExistingAdopter(self, element) {\n return (element instanceof HTMLStyleElement &&\n $uniqueSheets.get(self).some(function (sheet) { return getAdopterByLocation(sheet, self); }));\n }\n function getAdopterContainer(self) {\n var element = $element.get(self);\n return element instanceof Document ? element.body : element;\n }\n function adopt(self) {\n var styleList = document.createDocumentFragment();\n var sheets = $uniqueSheets.get(self);\n var observer = $observer.get(self);\n var container = getAdopterContainer(self);\n observer.disconnect();\n sheets.forEach(function (sheet) {\n styleList.appendChild(getAdopterByLocation(sheet, self) || addAdopterLocation(sheet, self));\n });\n container.insertBefore(styleList, null);\n observer.observe(container, defaultObserverOptions);\n sheets.forEach(function (sheet) {\n restyleAdopter(sheet, getAdopterByLocation(sheet, self));\n });\n }\n function Location(element) {\n var self = this;\n self.sheets = [];\n $element.set(self, element);\n $uniqueSheets.set(self, []);\n $observer.set(self, new MutationObserver(function (mutations, observer) {\n if (!document) {\n observer.disconnect();\n return;\n }\n mutations.forEach(function (mutation) {\n if (!hasShadyCss) {\n forEach.call(mutation.addedNodes, function (node) {\n if (!(node instanceof Element)) {\n return;\n }\n traverseWebComponents(node, function (root) {\n getAssociatedLocation(root).connect();\n });\n });\n }\n forEach.call(mutation.removedNodes, function (node) {\n if (!(node instanceof Element)) {\n return;\n }\n if (isExistingAdopter(self, node)) {\n adopt(self);\n }\n if (!hasShadyCss) {\n traverseWebComponents(node, function (root) {\n getAssociatedLocation(root).disconnect();\n });\n }\n });\n });\n }));\n }\n Location.prototype = {\n isConnected: function () {\n var element = $element.get(this);\n return element instanceof Document\n ? element.readyState !== 'loading'\n : isElementConnected(element.host);\n },\n connect: function () {\n var container = getAdopterContainer(this);\n $observer.get(this).observe(container, defaultObserverOptions);\n if ($uniqueSheets.get(this).length > 0) {\n adopt(this);\n }\n traverseWebComponents(container, function (root) {\n getAssociatedLocation(root).connect();\n });\n },\n disconnect: function () {\n $observer.get(this).disconnect();\n },\n update: function (sheets) {\n var self = this;\n var locationType = $element.get(self) === document ? 'Document' : 'ShadowRoot';\n if (!Array.isArray(sheets)) {\n throw new TypeError(\"Failed to set the 'adoptedStyleSheets' property on \" + locationType + \": Iterator getter is not callable.\");\n }\n if (!sheets.every(isCSSStyleSheetInstance)) {\n throw new TypeError(\"Failed to set the 'adoptedStyleSheets' property on \" + locationType + \": Failed to convert value to 'CSSStyleSheet'\");\n }\n if (sheets.some(isNonConstructedStyleSheetInstance)) {\n throw new TypeError(\"Failed to set the 'adoptedStyleSheets' property on \" + locationType + \": Can't adopt non-constructed stylesheets\");\n }\n self.sheets = sheets;\n var oldUniqueSheets = $uniqueSheets.get(self);\n var uniqueSheets = unique(sheets);\n var removedSheets = diff(oldUniqueSheets, uniqueSheets);\n removedSheets.forEach(function (sheet) {\n removeNode(getAdopterByLocation(sheet, self));\n removeAdopterLocation(sheet, self);\n });\n $uniqueSheets.set(self, uniqueSheets);\n if (self.isConnected() && uniqueSheets.length > 0) {\n adopt(self);\n }\n },\n };\n\n window.CSSStyleSheet = ConstructedStyleSheet;\n attachAdoptedStyleSheetProperty(Document);\n if ('ShadowRoot' in window) {\n attachAdoptedStyleSheetProperty(ShadowRoot);\n var proto = Element.prototype;\n var attach_1 = proto.attachShadow;\n proto.attachShadow = function attachShadow(init) {\n var root = attach_1.call(this, init);\n if (init.mode === 'closed') {\n closedShadowRootRegistry.set(this, root);\n }\n return root;\n };\n }\n var documentLocation = getAssociatedLocation(document);\n if (documentLocation.isConnected()) {\n documentLocation.connect();\n }\n else {\n document.addEventListener('DOMContentLoaded', documentLocation.connect.bind(documentLocation));\n }\n\n}());\n"],"names":["cloneValue","value","Model","returnValue","key","_Model","initialAttributes","newAttributes","noTrigger","previousAttributes","newAttribute","evt","attributes","attributeName","handler","prevValue","newValue","changed","previousValue","__publicField","types","attributesToObject","result","i","attr","PropType","type","valueArrayOrObject","regExp","noHyphens","_PropTypes","propTypes","defaults","propType","observed","docLines","commentsExist","parts","item","element","singleAttrName","hash","required","props","attrObject","elementId","name","convertedValue","lowerCaseValue","testValue","testLookup","PropTypes","MyassaysComponent","makeException","ErrorType","message","options","toNumber","evenRound","x","censorNegativeZero","integerPart","n","sign","modulo","y","signMightNotMatch","createIntegerConversion","bitLength","unsigned","lowerBound","upperBound","twoToTheBitLength","twoToOneLessThanTheBitLength","createLongLongConversion","asBigIntN","xBigInt","exports","c","S","U","d","a","b","abByteLengthGetter","sabByteLengthGetter","isNonSharedArrayBuffer","isSharedArrayBuffer","isArrayBufferDetached","dvByteLengthGetter","typedArrayNameGetter","func","article","isObject","hasOwn","define","target","source","descriptor","newObjectInRealm","globalObject","object","ctorRegistry","initCtorRegistry","wrapperSymbol","implSymbol","sameObjectCaches","ctorRegistrySymbol","AsyncIteratorPrototype","getSameObject","wrapper","prop","creator","wrapperForImpl","impl","implForWrapper","tryWrapperForImpl","tryImplForWrapper","iterInternalSymbol","isArrayIndexPropName","P","s","byteLengthGetter","isArrayBuffer","iteratorResult","kind","supportsPropertyIndex","supportedPropertyIndices","supportsPropertyName","supportedPropertyNames","indexedGet","indexedSetNew","indexedSetExisting","namedGet","namedSetNew","namedSetExisting","namedDelete","asyncIteratorNext","asyncIteratorReturn","asyncIteratorInit","asyncIteratorEOI","module","namespaces","idlUtils","require$$0","HTML_NS","require$$1","HTMLCollectionImpl_1","args","privateData","index","snapshot","id","conversions","utils","interfaceName","Impl","context","makeWrapper","newTarget","proto","makeProxy","proxyHandler","proxyHandlerCache","ProxyHandler","constructorArgs","exposed","globalNames","globalName","HTMLCollection","esValue","curArg","receiver","desc","getter","parent","keys","ignoreNamedProps","indexedValue","namedValue","V","ownDesc","existingDesc","valueDesc","require$$2","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","stringFromCharCode","error","map","array","callback","length","mapDomain","domain","labels","encoded","ucs2decode","string","output","counter","extra","ucs2encode","codePoints","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","decode","input","inputLength","bias","basic","j","oldi","w","t","baseMinusT","out","encode","currentValue","basicLength","handledCPCount","m","handledCPCountPlusOne","q","qMinusT","toUnicode","toASCII","regexes","statusMapping","punycode","mappingTable","STATUS_MAPPING","require$$3","containsNonASCII","str","findStatus","val","useSTD3ASCIIRules","start","end","mid","min","max","mapChars","domainName","processingOption","hasError","processed","ch","status","mapping","validateLabel","label","checkHyphens","checkBidi","checkJoiners","last","next","test","rtl","isBidiDomain","processing","isBidi","origLabel","curProcessing","verifyDNSLength","l","total","tr46","isASCIIDigit","isASCIIAlpha","isASCIIAlphanumeric","isASCIIHex","infra","utf8Encoder","utf8Decoder","utf8Encode","utf8DecodeWithoutBOM","bytes","encoding","p","char","percentEncode","hex","percentDecodeBytes","outputIndex","byte","bytePoint","percentDecodeString","isC0ControlPercentEncode","extraFragmentPercentEncodeSet","isFragmentPercentEncode","extraQueryPercentEncodeSet","isQueryPercentEncode","isSpecialQueryPercentEncode","extraPathPercentEncodeSet","isPathPercentEncode","extraUserinfoPercentEncodeSet","isUserinfoPercentEncode","extraComponentPercentEncodeSet","isComponentPercentEncode","extraURLEncodedPercentEncodeSet","isURLEncodedPercentEncode","utf8PercentEncodeCodePointInternal","percentEncodePredicate","utf8PercentEncodeCodePoint","utf8PercentEncodeString","spaceAsPlus","percentEncoding","specialSchemes","failure","countSymbols","at","idx","isSingleDot","buffer","isDoubleDot","isWindowsDriveLetterCodePoints","cp1","cp2","isWindowsDriveLetterString","isNormalizedWindowsDriveLetterString","containsForbiddenHostCodePoint","containsForbiddenDomainCodePoint","isSpecialScheme","scheme","isSpecial","url","isNotSpecial","defaultPort","parseIPv4Number","R","regex","parseIPv4","numbers","part","ipv4","serializeIPv4","address","parseIPv6","pieceIndex","compress","pointer","numbersSeen","ipv4Piece","number","swaps","temp","serializeIPv6","findLongestZeroSequence","ignore0","parseHost","isNotSpecialArg","parseOpaqueHost","asciiDomain","domainToASCII","endsInANumber","arr","maxIdx","maxLen","currStart","currLen","serializeHost","host","beStrict","trimControlChars","trimTabAndNewline","shortenPath","path","isNormalizedWindowsDriveLetter","includesCredentials","cannotHaveAUsernamePasswordPort","hasAnOpaquePath","URLStateMachine","encodingOverride","stateOverride","res","cStr","ret","len","encodedCodePoints","port","fileOtherwiseCodePoints","startsWithWindowsDriveLetter","queryPercentEncodePredicate","serializeURL","excludeFragment","serializePath","serializeOrigin","tuple","segment","usm","username","password","integer","parseUrlencoded","sequences","strictlySplitByteSequence","indexOfEqual","replaceByteInByteSequence","nameString","valueString","parseUrlencodedString","serializeUrlencoded","tuples","buf","cp","list","from","to","urlencoded","_Function","invokeTheCallbackFunction","thisArg","callResult","URLSearchParamsImpl_1","doNotStripQMark","init","pair","serializedQuery","found","Function","iteratorPrototype","iterator","URLSearchParams","tmp","nextItem","typedKey","typedValue","pairs","internal","values","URLImpl_1","parsedBase","parsedURL","query","v","URL","webidl2jsWrapper","urlStateMachine","sharedGlobalObject","whatwgUrl","SymbolTreeNode_1","parentNode","TreePosition","TREE","ROOT","NEXT","ITERATE_FUNC","TreeIterator$1","tree","root","firstResult","iterateFunction","iterateFunc","TreeIterator","TreeIterator_1","SymbolTreeNode","returnTrue","reverseArrayIndex","reverseIndex","SymbolTree$1","description","node","lastChild","current","treeRoot","previousSibling","firstChild","nextSibling","filter","ancestor","reverse","child","childNode","currentIndex","cachedUpToNode","left","right","leftAncestors","leftAncestor","rightAncestors","rightAncestor","commonAncestorIndex","ancestorsMinLength","leftIndex","removeObject","removeNode","prevNode","nextNode","referenceObject","newObject","referenceNode","newNode","SymbolTree_1","SymbolTree","internalConstants","whatwgURL","domSymbolTree","SYMBOL_TREE_POSITION","fileName","pathname","utils$2","properties","propDesc","Constructor","propertyMap","property","addConstant","memoizeQueryTypeCounter","fn","isValidAbsoluteURL","first","second","secondResult","compare","Canvas","require$$4","Utils","times","css","cssString","classNames","className","stop","step","range","num1","num2","num3","data","xmlString","arrays","exclude","booleans","preserveCapitals","formatName","convertType","parser","dom","parseNode","xmlNode","nodeName","jsonNode","existing","attribute","action","endAnimationCallback","startWidth","startHeight","childElement","childRect","endWidth","endHeight","styleWidth","styleHeight","childStyleWidth","childStyleHeight","styleOverflow","referenceElement","PositionInfo","dataObject","dragController","e","startHandler","event","positionInfo","controller","moveHandler","endHandler","exceptionHandler","popupElement","dragHandleElement","startMousePos","startPopupPos","handlers","currentMousePos","directions","modes","LayoutElement","attrName","oldVal","newVal","propName","styles","size","layoutElement","groupElement","layout","Layout","ResizableElement","hasChanged","truth","forceFluid","initialGrow","grow","Splitter","group","resized","units","isHorizontal","spaceAvailable","initialSize","pos","downPos","multiplier","Group","member","showing","resizedMember","sibling","precedingSplitter","innerElem","Pane","elem","mode","forceMinimised","backgroundColor","MinimisedPaneList","paneId","previousList","minimisedPaneList","tabIdsToShow","previousItem","paneList","_Animator","delay","callBack","phases","DELAY","Animator","skinElement","onSkinLoad","response","text","pane","selector","Type","tagName","isSideways","endAndCancelCallBack","animator","previousMode","panes","state","maximisedPane","paneElem","hasShadyCss","bootstrapper","closedShadowRootRegistry","_DOMException","defineProperty","forEach","importPattern","rejectImports","contents","_contents","isElementConnected","unique","diff","arr1","arr2","getShadowRoot","cssStyleSheetMethods","NonConstructedStyleSheet","nonConstructedProto","isCSSStyleSheetInstance","instance","proto$1","isNonConstructedStyleSheetInstance","$basicStyleElement","$locations","$adoptersByLocation","$appliedMethods","addAdopterLocation","sheet","location","adopter","getAdopterByLocation","removeAdopterLocation","_location","restyleAdopter","command","checkInvocationCorrectness","self","ConstructedStyleSheet","style","self_1","method","basicSheet","defaultObserverOptions","locations","getAssociatedLocation","Location","attachAdoptedStyleSheetProperty","constructor","sheets","traverseWebComponents","iter","foundNode","$element","$uniqueSheets","$observer","isExistingAdopter","getAdopterContainer","adopt","styleList","observer","container","mutations","mutation","locationType","oldUniqueSheets","uniqueSheets","removedSheets","attach_1","documentLocation","layoutId"],"mappings":"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","x_google_ignoreList":[3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,44]}