{"version":3,"file":"myassays-pad.iife.js","sources":["../../../src/myassays-global/Model.js","../model/DataModel.js","../MyassaysPad.css?raw","../templates/padStatusTemplate.js","../templates/endPointTemplate.js","../templates/kineticsTemplate.js","../templates/kineticsIndexedTemplate.js","../templates/spectralTemplate.js","../templates/wellScanTemplate.js","../templates/templateHelpers.js","../templates/gridTemplate.js","../../../src/myassays-global/PropTypes.js","../../../src/myassays-global/FlashTimer.js","../ActivityMonitor.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","../MyassaysPad.js","../index.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","import Model from 'myassays-global/Model';\n\nfunction splitLine(raw) {\n if (raw.includes('\\t')) {\n return raw.trim().split(/\\t/).map(item => item.trim());\n } else {\n return raw.trim().split(/ +/);\n }\n}\n\nclass WellScanDataPoint extends Model {\n static defaults = {\n value: '',\n }\n}\n\nclass KineticsDataPoint extends Model {\n static defaults = {\n time: '',\n value: '',\n }\n}\n\nclass KineticsIndexedDataPoint extends Model {\n static defaults = {\n value: '',\n }\n}\n\nclass SpectralDataPoint extends Model {\n static defaults = {\n wavelength: '',\n value: '',\n }\n}\n\nclass EndPointDataPoint extends Model {\n static defaults = {\n value: '',\n }\n}\n\nclass Well extends Model {\n constructor(rawText) {\n super();\n this.fromRaw(rawText);\n }\n\n fromRaw(raw) {\n\n }\n\n toRaw() {\n return '';\n }\n get wellLabelToRowColumn() {\n return Well._wellLabelToRowColumn;\n }\n get rowColumnToWellLabel() {\n return Well._rowColumnToWellLabel;\n }\n static defaults = {\n row: 0,\n column: 0,\n dataPoints: [],\n }\n static _wellLabelToRowColumn(wellLabel) {\n const row = wellLabel.charCodeAt(0) - 'A'.charCodeAt(0);\n const column = Number(wellLabel.slice(1)) - 1;\n return {row, column};\n }\n static _rowColumnToWellLabel(row, column) {\n return String.fromCharCode('A'.charCodeAt(0) + row) + String(column + 1);\n }\n}\n\nclass WellScanWell extends Well {\n fromRaw(raw) {\n // A1 6.738 12.862 21.816 27.748\n const parts = splitLine(raw);\n const { row, column } = this.wellLabelToRowColumn(parts.shift());\n const dataPoints = parts.map(part => {\n return new WellScanDataPoint({value: part});\n });\n this.set({row, column, dataPoints});\n }\n\n toRaw() {\n const { row, column, dataPoints } = this.attributes;\n const parts = [this.rowColumnToWellLabel(row, column)];\n dataPoints.forEach(dataPoint => {\n parts.push(dataPoint.value);\n });\n\n return parts.join(' ');\n }\n}\n\nclass KineticsWell extends Well {\n fromRaw(raw) {\n // A1 0.000;7.769 0.100;17.496 0.200;23.541 0.300;33.412 0.400;39.010 0.500;52.017 0.600;59.519 0.700;60.001 0.800;72.080 0.900;84.380\n const parts = splitLine(raw);\n const { row, column } = this.wellLabelToRowColumn(parts.shift());\n const dataPoints = parts.map(part => {\n const [ time, value ] = part.split(';');\n return new KineticsDataPoint({time, value});\n });\n this.set({row, column, dataPoints});\n }\n\n toRaw() {\n const { row, column, dataPoints } = this.attributes;\n const parts = [this.rowColumnToWellLabel(row, column)];\n dataPoints.forEach(dataPoint => {\n const { time, value } = dataPoint;\n parts.push(`${time};${value}`);\n })\n return parts.join(' ');\n }\n}\n\nclass KineticsIndexedWell extends Well {\n fromRaw(raw) {\n // A1 1.300 2.274 3.869 4.827 5.704 6.985 9.071 8.979 11.448 11.410\n const parts = splitLine(raw);\n const { row, column } = this.wellLabelToRowColumn(parts.shift());\n const dataPoints = parts.map(part => {\n return new KineticsIndexedDataPoint({value: part});\n });\n this.set({row, column, dataPoints});\n }\n\n toRaw() {\n const { row, column, dataPoints } = this.attributes;\n const parts = [this.rowColumnToWellLabel(row, column)];\n dataPoints.forEach(dataPoint => {\n const { value } = dataPoint;\n parts.push(value);\n })\n return parts.join(' ');\n }\n}\n\nclass SpectralWell extends Well {\n fromRaw(raw) {\n // A1 300.000;0.061 350.000;0.187 400.000;0.418 450.000;0.676 500.000;0.794 550.000;0.676 600.000;0.418 650.000;0.187 700.000;0.061\n const parts = splitLine(raw);\n const { row, column } = this.wellLabelToRowColumn(parts.shift());\n const dataPoints = parts.map(part => {\n const [ wavelength, value ] = part.split(';');\n return new SpectralDataPoint({wavelength, value});\n });\n this.set({row, column, dataPoints});\n }\n\n toRaw() {\n const { row, column, dataPoints } = this.attributes;\n const parts = [this.rowColumnToWellLabel(row, column)];\n dataPoints.forEach(dataPoint => {\n const { wavelength, value } = dataPoint;\n parts.push(`${wavelength};${value}`);\n })\n return parts.join(' ');\n }\n}\n\nclass EndPointWell extends Well {\n constructor(rawText, row, column) {\n super(rawText);\n this.set({row, column});\n }\n\n fromRaw(raw) {\n this.set({row: this.row, dataPoints: [new EndPointDataPoint({value: raw})]});\n }\n\n toRaw() {\n return this.get('dataPoints').map(dataPoint => dataPoint.value).join('');\n }\n}\n\nclass Matrix extends Model {\n constructor(matrixTypeId, matrixData, rawWellData, dataSpec) {\n super(matrixData);\n this.matrixTypeId = matrixTypeId;\n this.dataSpec = dataSpec;\n this.fromRaw(rawWellData);\n }\n\n get _WellClass() {\n switch (this.matrixTypeId.toLowerCase()) {\n case 'xy-kinetics': return KineticsWell;\n case 'xy-kinetics-indexed': return KineticsIndexedWell;\n case 'xy-spectral': return SpectralWell;\n case 'xyz-well-scan': return WellScanWell;\n default: return EndPointWell;\n }\n }\n\n static defaults = {\n wells: [],\n label: '',\n indicesLabel: '',\n }\n\n fromRaw(raw) {\n let rawWells;\n if (this.matrixTypeId === 'endpoint') {\n rawWells = raw.split(/[\\n\\t ]+/);\n\n while (rawWells.length < this.dataSpec.containerWidth * this.dataSpec.containerHeight) {\n rawWells.push('-');\n }\n this.set({wells: rawWells.map((rawWell, i) => {\n const row = Math.floor(i / this.dataSpec.containerWidth);\n const column = i - row * this.dataSpec.containerWidth;\n return new EndPointWell(rawWell, row, column);\n })});\n } else {\n rawWells = raw.split(/ ?\\n ?/);\n this.set({wells: rawWells.map(rawWell => new this._WellClass(rawWell))});\n }\n }\n\n toRaw() {\n if (this.matrixTypeId === 'endpoint') {\n const re = new RegExp(`((?:[^ ]* ){${this.dataSpec.containerWidth - 1}}[^ ]*) `, 'g');\n const colWidths = Array(this.dataSpec.containerWidth).fill(0);\n let raw = this.getExact('wells').map(well => {\n const rawWell = well.toRaw();\n const column = well.get('column');\n colWidths[column] = Math.max(colWidths[column], rawWell.length);\n return rawWell;\n }).join(' ').replace(re, '$1\\n').trim();\n\n let col = 0;\n return raw.replace(/[^ \\n]+/mg, match => {\n const width = colWidths[col];\n col++;\n if (col === this.dataSpec.containerWidth) {\n col = 0;\n }\n return match.padEnd(width, ' ');\n });\n } else {\n let raw = '';\n const colWidths = [];\n raw += this.getExact('wells').map(well => {\n const rawWell = well.toRaw()\n rawWell.split(/ +/).forEach((value, col) => {\n const width = colWidths[col] || 0;\n colWidths[col] = Math.max(width, value.length);\n });\n return rawWell;\n }).join('\\n');\n let col = 0;\n raw = raw.replace(/[^ \\n]+/mg, match => {\n if (/^[A-Z][0-9]{1,2}$/.test(match)) {\n col = 0;\n }\n const width = colWidths[col];\n col++;\n return match.padEnd(width, ' ');\n });\n if (this.matrixTypeId === 'xyz-well-scan') {\n raw = `${this.get('indicesLabel')}\\n` + raw;\n }\n return raw;\n }\n }\n}\n\nclass Container extends Model {\n static defaults = {\n label: '',\n matrices: [],\n }\n\n toRaw() {\n const matrices = this.getExact('matrices');\n const showHeadings = matrices.length > 1;\n\n return matrices.map((matrix, i) => {\n let label = '';\n if (showHeadings) {\n label = matrix.get('label');\n if (!label) {\n label = `Raw${i + 1}`;\n }\n }\n return `${label ? `${label}\\n` : ''}${matrix.toRaw()}`;\n }).join('\\n');\n }\n}\n\nexport default class DataModel extends Model {\n constructor(rawText, dataSpec) {\n super();\n this.dataSpec = dataSpec;\n this.fromRaw(rawText);\n }\n\n static defaults = {\n containers: [],\n }\n\n toRaw() {\n const containers = this.getExact('containers');\n return containers.map((container, i) => {\n let label = '';\n if (this.dataSpec.multipleContainers) {\n label = container.get('label');\n if (!label) {\n label = (this.dataSpec.containerType === 'plex' ? 'Analyte' : 'Plate') + ` ${i + 1}`;\n }\n }\n return `${label ? `${label}\\n` : ''}${container.toRaw()}`;\n }).join('\\n');\n }\n\n fromRaw(raw) {\n // consume the raw file line by line\n const whitespacePattern = '[ \\\\n\\\\t]+';\n\n const numberPattern = '-?[0-9]+([.,][0-9]+e-?[0-9]{1,2}|[.,][0-9]+|[.,]?e-?[0-9]{1,2})?';\n const wellLabelPattern = '[A-Z][1-9][0-9]?';\n const xyValuePattern = `${numberPattern};${numberPattern}`;\n\n const getRE = matrixTypeId => {\n switch (matrixTypeId) {\n case 'endpoint': return new RegExp(`^((${numberPattern}|-)${whitespacePattern})*(${numberPattern}|-)$`, 'i');\n case 'xy-kinetics-indexed':\n case 'xyz-well-scan': return new RegExp(`^${wellLabelPattern}(${whitespacePattern}(${numberPattern}|-))*$`, 'i');\n case 'xy-kinetics':\n case 'xy-spectral': return new RegExp(`^${wellLabelPattern}(${whitespacePattern}${xyValuePattern})*$`, 'i');\n default: throw new Error(`matrix type \"${matrixTypeId}\" not recognised.`);\n }\n }\n\n const lines = raw.split('\\n').map(line => line.trim()).filter(line => line !== '');\n\n const containers = [];\n while (lines.length) {\n const containerData = {};\n if (this.dataSpec.multipleContainers) {\n containerData.label = lines.shift();\n }\n containerData.matrices = [];\n this.dataSpec.matrices.forEach(matrixTypeId => {\n const re = getRE(matrixTypeId);\n const matrixData = {};\n if (this.dataSpec.matrices.length > 1) {\n matrixData.label = lines.shift();\n }\n if (matrixTypeId === 'xyz-well-scan') {\n matrixData.indicesLabel = lines.shift();\n }\n const rawWellData = [];\n while (lines.length) {\n const line = lines.shift();\n\n if (re.test(line)) {\n rawWellData.push(line);\n } else {\n const previousLine = rawWellData.pop();\n if (re.test(previousLine + ' ' + line)) {\n rawWellData.push(previousLine + ' ' + line);\n } else {\n rawWellData.push(previousLine);\n lines.unshift(line);\n break;\n }\n }\n }\n if (rawWellData.length > 0) {\n containerData.matrices.push(new Matrix(matrixTypeId, matrixData, rawWellData.join('\\n'), this.dataSpec));\n }\n });\n if (containerData.matrices.length === this.dataSpec.matrices.length) {\n containers.push(new Container(containerData));\n }\n if (!this.dataSpec.multipleContainers) break;\n }\n this.set({containers});\n }\n}\n","export default \":host {\\n position: relative;\\n display: inline-block;\\n width: 100%;\\n}\\n\\n* {\\n box-sizing: border-box;\\n}\\n\\n#grid-container {\\n position: relative;\\n top: 0;\\n left: 0;\\n margin: 0;\\n padding: 0;\\n overflow: hidden;\\n}\\n\\n#grid {\\n position: absolute;\\n top: 0;\\n left: 0;\\n margin: 0;\\n padding: 0;\\n border: 1px solid transparent;\\n}\\n#grid .matrix {\\n display: grid;\\n}\\n#grid .matrix > * {\\n outline: 1px solid black;\\n outline-offset: -0.5px;\\n}\\n#grid .well-label {\\n grid-column-start: 1;\\n}\\n#grid .unknown {\\n background-color: white;\\n color: transparent;\\n}\\n\\n#pad {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n border: 1px solid transparent;\\n background: transparent;\\n margin: 0;\\n white-space: pre;\\n overflow: auto;\\n resize: none;\\n}\\n#pad.scrolling-x {\\n border-right-color: black;\\n}\\n#pad.scrolling-y {\\n border-bottom-color: black;\\n}\\n#pad:focus {\\n border: 1px solid black;\\n}\\n#pad.display {\\n color: transparent;\\n}\\n\\n@keyframes spin {\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n#pad-status {\\n position: sticky;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n right: 0;\\n z-index: 3;\\n font-family: sans-serif;\\n font-size: 14px;\\n text-align: center;\\n line-height: 22px;\\n background: white;\\n color: black;\\n border: 2px solid black;\\n border-radius: 13px;\\n padding: 0 3px;\\n margin: 4px 3px;\\n display: inline-block;\\n}\\n#pad-status svg {\\n vertical-align: -3px;\\n}\\n#pad-status.ok {\\n color: green;\\n border-color: green;\\n}\\n#pad-status.validating {\\n color: green;\\n border-color: green;\\n}\\n#pad-status.validating svg {\\n animation: spin 1s linear infinite;\\n}\\n#pad-status.failed {\\n color: red;\\n border-color: red;\\n}\\n#pad-status.typing {\\n display: none;\\n}\\n#pad-status.none {\\n display: none;\\n}\\n\\n/*# sourceMappingURL=MyassaysPad.css.map */\\n\"","\nexport default function padStatusTemplate (status, error) {\n if (status === 'ok') {\n return `\n \n `;\n } else if (status === 'validating') {\n return `\n \n `\n } else if (status === 'failed') {\n return `\n \n ${error}`;\n } else {\n return '';\n }\n}\n","import {wellStyle, wellFlashClass} from './templateHelpers.js';\n\nexport default function endPointTemplate(data, containerIndex, matrixIndex, matrixData) {\n return `\\\n
\n ${matrixData.wells.map((well, wellIndex) => {\n const value = well.dataPoints[0].value;\n const unknown = value === '-';\n return `\n
${value}
\n `;\n }).join('')}\n
\n`\n}\n","import {matrixStyle, wellStyle, wellFlashClass, rowColumnToWellLabel} from './templateHelpers.js';\n\nexport default function kineticsTemplate(data, containerIndex, matrixIndex, matrixData) {\n return `\\\n
\n ${matrixData.wells.map((well, wellIndex) => `\n
${rowColumnToWellLabel(well.row, well.column)}
\n ${well.dataPoints.map(dataPoint => `\n
${dataPoint.time};${dataPoint.value}
`).join('')}\n `).join('')}\n
\n`\n}\n","import {matrixStyle, wellStyle, wellFlashClass, rowColumnToWellLabel} from './templateHelpers.js';\n\nexport default function kineticsIndexedTemplate(data, containerIndex, matrixIndex, matrixData) {\n return `\\\n
\n ${matrixData.wells.map((well, wellIndex) => `\n
${rowColumnToWellLabel(well.row, well.column)}
\n ${well.dataPoints.map(dataPoint => `\n
${dataPoint.value}
`).join('')}\n `).join('')}\n
\n`\n}\n","import {matrixStyle, wellStyle, wellFlashClass, rowColumnToWellLabel} from './templateHelpers.js';\n\nexport default function spectralTemplate(data, containerIndex, matrixIndex, matrixData) {\n return `\\\n
\n ${matrixData.wells.map((well, wellIndex) => `\n
${rowColumnToWellLabel(well.row, well.column)}
\n ${well.dataPoints.map(dataPoint => `\n
${dataPoint.wavelength};${dataPoint.value}
`).join('')}\n `).join('')}\n
\n`\n}\n","import {matrixStyle, wellStyle, wellFlashClass, rowColumnToWellLabel} from './templateHelpers.js';\n\nexport default function wellScanTemplate(data, containerIndex, matrixIndex, matrixData) {\n const indicesLabel = matrixData.indicesLabel;\n return `\\\n
${indicesLabel}
\n
\n ${matrixData.wells.map((well, wellIndex) => `\n
${rowColumnToWellLabel(well.row, well.column)}
\n ${well.dataPoints.map(dataPoint => `\n
${dataPoint.value}
`).join('')}\n `).join('')}\n
\n`\n}\n","import endPointTemplate from './endPointTemplate.js';\nimport kineticsTemplate from './kineticsTemplate.js';\nimport kineticsIndexedTemplate from './kineticsIndexedTemplate.js';\nimport spectralTemplate from './spectralTemplate.js';\nimport wellScanTemplate from './wellScanTemplate.js';\n\nexport function rowColumnToWellLabel(row, column) {\n return String.fromCharCode('A'.charCodeAt(0) + row) + String(column + 1);\n}\n\nexport function wellFlashClass(data, wellIndex) {\n return data.flashEnabled && data.flashWellPositions.includes(wellIndex + 1) ? 'flashing' : '';\n}\n\nexport function wellStyle(data, well, unknown = false) {\n if (unknown) {\n return `style=\"background-color: transparent; color: transparent !important\"`;\n } else {\n const colour = data.colours[well.row * data.spec.containerWidth + well.column];\n return `style=\"background-color: ${colour}\"`;\n }\n}\n\nexport function matrixStyle(matrixData) {\n let maxDataPoints = 0;\n matrixData.wells.forEach(well => {\n maxDataPoints = Math.max(maxDataPoints, well.dataPoints.length);\n });\n return `style=\"grid-template-columns: repeat(${maxDataPoints + 1}, fit-content(100%))\"`;\n}\n\nexport function getMatrixTemplate(type) {\n return {\n 'endpoint': endPointTemplate,\n 'xy-kinetics': kineticsTemplate,\n 'xy-kinetics-indexed': kineticsIndexedTemplate,\n 'xy-spectral': spectralTemplate,\n 'xyz-well-scan': wellScanTemplate,\n }[type.toLowerCase()];\n}\n","import { getMatrixTemplate } from './templateHelpers.js';\n\nexport default function gridTemplate (data) {\n const { model, spec } = data;\n return `\\\n\n${model.containers.map((container, containerIndex) => `\\\n${spec.multipleContainers ? `
${container.label}
` : ''}\n
\n ${container.matrices.map((matrix, matrixIndex) => {\n const matrixTypeId = spec.matrices[matrixIndex];\n const matrixData = data.model.containers[containerIndex].matrices[matrixIndex];\n const matrixTemplate = getMatrixTemplate(matrixTypeId);\n const label = matrix.label;\n return matrixTemplate ? `\n ${container.matrices.length > 1 ? `\\\n
${label}
\n ` : ''}\n ${matrixTemplate(data, containerIndex, matrixIndex, matrixData)}\n ` : '';\n }).join('')}\n
`).join('')}`;\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","\nexport default class FlashTimer {\n static _startTimer() {\n if (this._timerId === undefined) {\n this._state = false;\n this._timerId = setInterval(() => this._toggleState(), 500);\n }\n }\n\n static _stopTimer() {\n clearInterval(this._timerId);\n delete this._timerId;\n }\n\n static _toggleState() {\n this._state = !this._state;\n this._subscribers.forEach(handler => handler(this._state));\n }\n\n static subscribe(handler) {\n this._subscribers || (this._subscribers = []);\n if (! this._subscribers.includes(handler)) {\n this._subscribers.push(handler);\n }\n this._startTimer();\n }\n\n static unSubscribe(handler) {\n this._subscribers = this._subscribers.filter(item => item !== handler);\n if (this._subscribers.length === 0) {\n delete this._subscribers;\n this._stopTimer();\n }\n }\n\n static get state() {\n return this._state;\n }\n}\n","export default class extends EventTarget {\n constructor(pendingDelay = 1000, validateDelay = 2000, removeStatusDelay = 1000, exitEditModeDelay = 1000) {\n super();\n this._pendingDelay = pendingDelay;\n this._validateDelay = validateDelay;\n this._removeStatusDelay = removeStatusDelay;\n this._exitEditModeDelay = exitEditModeDelay;\n this._monitoring = false;\n this._delayID = null;\n this._status = this.STATUS_STOPPED;\n this._hasValidated = false;\n this._immediateValidation = false;\n this._errorMessage = '';\n }\n\n EVENT_STATUS_CHANGE = 'status-change';\n STATUS_STOPPED = 'stopped';\n STATUS_IDLE = 'idle';\n STATUS_ACTIVITY = 'activity';\n STATUS_PENDING_VALIDATION = 'pending-validation';\n STATUS_VALIDATING = 'validating';\n STATUS_VALID = 'valid';\n STATUS_INVALID = 'invalid';\n\n EVENT_VALIDATE = 'validate';\n EVENT_EXIT_EDIT_MODE = 'exit-edit-mode';\n\n _setStatus(status) {\n if (this._monitoring && status !== this._status) {\n if (this._delayID !== null) {\n clearTimeout(this._delayID);\n this._delayID = null;\n }\n switch (status) {\n case this.STATUS_STOPPED:\n break;\n case this.STATUS_IDLE:\n if (this._hasValidated) {\n this._delayID = setTimeout(() => {\n this._delayID = null;\n this._dispatchNewEvent(this.EVENT_EXIT_EDIT_MODE);\n }, this._exitEditModeDelay);\n }\n break;\n case this.STATUS_ACTIVITY:\n this._hasValidated = false;\n this._delayID = setTimeout(() => {\n this._delayID = null;\n this._setStatus(this.STATUS_PENDING_VALIDATION);\n }, this._pendingDelay);\n break;\n case this.STATUS_PENDING_VALIDATION:\n this._delayID = setTimeout(() => {\n this._delayID = null;\n this._setStatus(this.STATUS_VALIDATING);\n }, this._validateDelay);\n break;\n case this.STATUS_VALIDATING:\n this._dispatchNewEvent(this.EVENT_VALIDATE);\n break;\n case this.STATUS_VALID:\n this._hasValidated = true;\n if (this._immediateValidation) {\n this._immediateValidation = false;\n this._dispatchNewEvent(this.EVENT_EXIT_EDIT_MODE);\n } else {\n this._delayID = setTimeout(() => {\n this._delayID = null;\n this._setStatus(this.STATUS_IDLE);\n }, this._removeStatusDelay);\n }\n break;\n case this.STATUS_INVALID:\n break;\n }\n this._status = status;\n this.dispatchEvent(new CustomEvent(this.EVENT_STATUS_CHANGE, {\n detail: {\n status,\n errorMessage: this._errorMessage,\n },\n }));\n }\n }\n\n _dispatchNewEvent(type) {\n this.dispatchEvent(new CustomEvent(type));\n }\n\n get status() {\n return this._status;\n }\n\n start() {\n if (!this._monitoring) {\n this._hasValidated = false;\n this._monitoring = true;\n this._setStatus(this.STATUS_IDLE);\n }\n }\n\n stop() {\n if (this._monitoring) {\n this._setStatus(this.STATUS_STOPPED);\n this._monitoring = false;\n }\n }\n\n validateNow() {\n this._immediateValidation = true;\n this._setStatus(this.STATUS_VALIDATING);\n }\n\n registerActivity() {\n this._setStatus(this.STATUS_ACTIVITY);\n }\n\n setValidationResult(valid, errorMessage = '') {\n this._errorMessage = errorMessage;\n this._setStatus(valid ? this.STATUS_VALID : this.STATUS_INVALID);\n }\n}\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.3.1',\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","\nimport DataModel from './model/DataModel.js';\nimport styles from './MyassaysPad.css?raw';\nimport padStatusTemplate from './templates/padStatusTemplate.js';\nimport gridTemplate from './templates/gridTemplate.js';\nimport PropTypes from 'myassays-global/PropTypes';\nimport FlashTimer from 'myassays-global/FlashTimer';\nimport ActivityMonitor from './ActivityMonitor.js';\nimport {MyassaysComponent} from 'myassays-global';\n\nconst MODE_EDIT = 'edit';\nconst MODE_DISPLAY = 'display';\n\nfunction template (data) {\n return `\\\n\n
\n
\n
\n
\n`;\n}\n\nexport default class MyassaysPad extends MyassaysComponent {\n static get propTypes() {\n return {\n id: PropTypes.string,\n style: PropTypes.string,\n dataMode: PropTypes.string.lookup([MODE_DISPLAY, MODE_EDIT]).default(MODE_DISPLAY).observed,\n dataPmcSpec: PropTypes.json.required.observed,\n dataValue: PropTypes.string.required.observed,\n dataColours: PropTypes.string.required.observed,\n autoValidationDelays: PropTypes.string.regExp(/^\\d+ *, *\\d+ *, *\\d+ *, *\\d+$/),\n padStyle: PropTypes.style,\n numRowsMin: PropTypes.number.default(10).observed,\n numRowsMax: PropTypes.number.default(-1).observed,\n dataValidation: PropTypes.string.observed,\n flashEnabled: PropTypes.bool.default(true).observed,\n flashWellPositions: PropTypes.string.regExp(/^\\d*( *, *\\d*)*$/).default('').observed,\n flashColour: PropTypes.string.default('black'),\n flashBackgroundColour: PropTypes.string.default('white'),\n }\n }\n\n constructor() {\n super();\n\n this.shadow = this.attachShadow({mode: 'open'});\n }\n\n onFlashStateChange = state => {\n const grid = this.shadow.getElementById('grid');\n if (grid) {\n grid.classList.toggle('flash-on', state);\n }\n }\n\n onActivityStatusChange(evt) {\n const { status, errorMessage } = evt.detail;\n const pad = this.shadow.getElementById('pad');\n const am = this.activityMonitor;\n let newPadStatus = 'none';\n let error = undefined;\n switch (status) {\n case am.STATUS_STOPPED:\n case am.STATUS_IDLE:\n case am.STATUS_ACTIVITY:\n break;\n case am.STATUS_PENDING_VALIDATION:\n case am.STATUS_VALIDATING:\n newPadStatus = 'validating';\n break;\n case am.STATUS_VALID:\n if (this._props.dataMode === MODE_EDIT) newPadStatus = 'ok';\n this.dispatchEvent(new CustomEvent('padchangevalidated', {\n detail: pad.value,\n bubbles: true,\n }));\n break;\n case am.STATUS_INVALID:\n newPadStatus = 'failed';\n error = errorMessage;\n pad.focus();\n break;\n }\n this.updatePadStatus(newPadStatus, error);\n }\n\n onActivityValidate() {\n this.validate().then(error => {\n this.activityMonitor.setValidationResult(!error, error);\n });\n }\n\n onActivityExitEditMode() {\n const pad = this.shadow.getElementById('pad');\n pad.blur();\n this._props.dataMode = MODE_DISPLAY;\n this.configure();\n }\n\n static get observedAttributes() {\n return PropTypes.getObserved(this.propTypes);\n }\n\n connectedCallback() {\n this._props = PropTypes.attributesToProps(this);\n\n if (this._props.autoValidationDelays) {\n const [ pendingDelay, validateDelay, removeStatusDelay, exitEditModeDelay ] = this._props.autoValidationDelays.split(/ *, */).map(item => Number(item));\n this.activityMonitor = new ActivityMonitor(pendingDelay, validateDelay, removeStatusDelay, exitEditModeDelay);\n } else {\n this.activityMonitor = new ActivityMonitor();\n }\n const am = this.activityMonitor;\n this.validationId = 0;\n\n am.addEventListener(am.EVENT_STATUS_CHANGE, evt => this.onActivityStatusChange(evt));\n am.addEventListener(am.EVENT_VALIDATE, () => this.onActivityValidate());\n am.addEventListener(am.EVENT_EXIT_EDIT_MODE, () => this.onActivityExitEditMode());\n\n this.rawData = this._props.dataValue;\n this._colours = this._props.dataColours.trim().split(/[ \\n]+/);\n\n this.parsePadStyles();\n this.testCellPadding(this.fontStyleRules).then(padding => {\n this.leftRightCellPadding = padding;\n this.shadow.innerHTML = template({\n cellPadding: this.leftRightCellPadding,\n fontStyles: this.fontStyleRules,\n });\n\n this.configure();\n this.resizeAndScroll();\n const pad = this.shadow.getElementById('pad');\n const grid = this.shadow.getElementById('grid');\n this.resizeObserver = new ResizeObserver(entries => {\n this.resizeAndScroll();\n });\n\n this.resizeObserver.observe(pad);\n pad.addEventListener('scroll', () => this.resizeAndScroll());\n pad.addEventListener('input', this.onInput);\n\n // NOTE: In FireFox, the textarea triggers a selectionchange event. In all other\n // browsers, the document triggers it.\n pad.addEventListener('mousedown', this.onPadMouseDown)\n document.addEventListener('selectionchange', this.onSelectionChange);\n pad.addEventListener('selectionchange', this.onSelectionChange);\n\n this._hasBeenRendered = true;\n });\n\n FlashTimer.subscribe(this.onFlashStateChange);\n }\n\n disconnectedCallback() {\n FlashTimer.unSubscribe(this.onFlashStateChange);\n }\n\n resizeAndScroll() {\n const pad = this.shadow.getElementById('pad');\n const gridContainer = this.shadow.getElementById('grid-container');\n const grid = this.shadow.getElementById('grid');\n\n let numRows = pad.value.split('\\n').length;\n const { numRowsMin, numRowsMax } = this._props;\n\n if (numRowsMin !== -1) {\n numRows = Math.max(numRows, numRowsMin);\n }\n\n if (numRowsMax !== -1) {\n numRows = Math.min(numRows, numRowsMax);\n }\n\n //const { lineHeight } = getComputedStyle(pad);\n //pad.style.height = (parseFloat(lineHeight) * numRows + pad.offsetHeight - pad.clientHeight) + 'px';\n\n\n const { lineHeight, borderTopWidth, borderBottomWidth } = getComputedStyle(pad);\n const topBottomBorderWidth = parseFloat(borderTopWidth) + parseFloat(borderBottomWidth);\n const padHeight = (parseFloat(lineHeight) * numRows + pad.offsetHeight - pad.clientHeight) + topBottomBorderWidth;\n pad.style.height = padHeight + 'px';\n\n const { width, height } = pad.getBoundingClientRect();\n const { scrollTop, scrollLeft } = pad;\n\n pad.classList.toggle('scrolling-x', pad.clientWidth < pad.scrollWidth);\n pad.classList.toggle('scrolling-y', pad.clientHeight < pad.scrollHeight);\n\n gridContainer.style.width = width + 'px';\n gridContainer.style.height = height + 'px';\n grid.style.top = -scrollTop + 'px';\n grid.style.left = -scrollLeft + 'px';\n }\n\n parsePadStyles() {\n const padStyles = this._props.padStyle;\n this.fontStyleRules = {\n 'font-family': 'monospace',\n 'font-size': '13px',\n 'font-weight': 'normal',\n 'font-style': 'normal',\n 'letter-spacing': 'normal',\n 'line-height': '20px',\n 'color': 'inherit',\n };\n if (padStyles) {\n padStyles.trim().split(/ *; */).forEach(style => {\n const [ key, value ] = style.split(/ *: */);\n switch (key) {\n case 'font-family':\n case 'font-size':\n case 'font-weight':\n case 'font-style':\n case 'letter-spacing':\n case 'color':\n case 'max-height':\n case 'min-height':\n this.fontStyleRules[key] = value;\n break;\n case 'line-height':\n if (!/^\\d+px$/.test(value)) {\n throw new Error('Please only specify \"line-height\" in \"px\" values only');\n }\n this.fontStyleRules[key] = value;\n break;\n case '':\n break;\n case 'font':\n throw new Error('Please use individual font properties in the \"font-style\" attribute, rather than \"font\".');\n default:\n throw new Error('Only \"font-family\", \"font-size\", \"font-weight\", \"font-style\", \"letter-spacing\", \"line-height\" and \"color\" properties are allowed in the \"font-style\" attribute.');\n }\n });\n }\n }\n\n attributeChangedCallback(attrName) {\n if (this._hasBeenRendered) {\n const changedProps = PropTypes.attributesToProps(this, attrName);\n const propName = Object.keys(changedProps)[0];\n const newVal = changedProps[propName];\n this._props[propName] = newVal;\n\n switch (attrName) {\n case 'data-value':\n this.rawData = newVal;\n break;\n case 'data-colours':\n this._colours = newVal.trim().split(/[ \\n]+/);\n break;\n }\n if (this._props.dataMode === MODE_DISPLAY && this.configurePendingId === undefined) {\n this.configurePendingId = setTimeout(() => {\n delete this.configurePendingId;\n this.configure();\n this.resizeAndScroll();\n }, 1);\n }\n }\n }\n\n testCellPadding(fontStyleRules) {\n // test the width of a character\n return new Promise(resolve => {\n this.shadow.innerHTML = ` key + ':' + fontStyleRules[key]).join(';')}\">0`;\n document.fonts.ready.then(() => {\n const span = this.shadow.querySelector('span');\n const test = () => {\n const width = span.getBoundingClientRect().width;\n if (width) {\n // ch unit doesn't always equal '0' width, e.g. when italic.\n // so, calculate the ch value that equates to half a character\n span.style.paddingRight = '1ch';\n const paddingWidth = span.getBoundingClientRect().width - width;\n resolve((width/paddingWidth)/2 + 'ch');\n } else {\n setTimeout(test, 10);\n }\n }\n test();\n });\n });\n }\n\n configure() {\n const grid = this.shadow.getElementById('grid');\n const pad = this.shadow.getElementById('pad');\n\n if (!grid || !pad) return;\n\n if (this._props.dataMode === MODE_DISPLAY) {\n this.dataModel = new DataModel(this.rawData, this._props.dataPmcSpec);\n this.rawData = this.dataModel.toRaw();\n const data = {\n mode: this._props.dataMode,\n spec: this._props.dataPmcSpec,\n flashEnabled: this._props.flashEnabled,\n flashWellPositions: this._props.flashWellPositions ? this._props.flashWellPositions.split(/ *, */).map(item => Number(item)) : [],\n flashColour: this._props.flashColour,\n flashBackgroundColour: this._props.flashBackgroundColour,\n colours: this._colours,\n model: this.dataModel.attributes,\n cellPadding: this.leftRightCellPadding,\n fontStyles: this.fontStyleRules,\n }\n grid.innerHTML = gridTemplate(data);\n pad.classList.toggle('hide-text', true);\n this.activityMonitor.stop();\n } else {\n grid.innerHTML = '';\n pad.classList.toggle('hide-text', false);\n this.activityMonitor.start();\n }\n pad.classList.toggle('display', this._props.dataMode === MODE_DISPLAY);\n this.updatePadStatus('none');\n\n pad.value = this.dataModel ? this.dataModel.toRaw() : this.rawData;\n }\n\n onPadMouseDown = evt => {\n const pad = evt.currentTarget;\n this._inhibitModeChange = evt.offsetY > pad.clientHeight || evt.offsetX > pad.clientWidth;\n const onMouseUp = evt => {\n this._inhibitModeChange = false;\n document.body.removeEventListener('mouseup', onMouseUp);\n }\n document.body.addEventListener('mouseup', onMouseUp);\n }\n\n onSelectionChange = evt => {\n if (this._inhibitModeChange) return;\n\n if (this._props.dataMode === MODE_DISPLAY && this === document.activeElement) {\n this._props.dataMode = MODE_EDIT;\n const pad = this.shadow.getElementById('pad');\n pad.addEventListener('blur', this.onBlur);\n this.configure();\n } else if (this._props.dataMode === MODE_EDIT && this !== document.activeElement) {\n this.activityMonitor.validateNow();\n }\n }\n\n onBlur = () => {\n const pad = this.shadow.getElementById('pad');\n pad.removeEventListener('blur', this.onBlur);\n this.activityMonitor.validateNow();\n }\n\n onInput = evt => {\n if (this._props.dataMode === MODE_EDIT) {\n\n this.activityMonitor.registerActivity();\n\n this.resizeAndScroll();\n this.dispatchEvent(new CustomEvent('padchange', {\n detail: evt.target.value,\n bubbles: true,\n }));\n this.rawData = evt.target.value;\n }\n }\n\n validate() {\n const validationId = ++this.validationId;\n return new Promise((resolve, reject) => {\n const pad = this.shadow.getElementById('pad');\n const validationFunctionName = this._props.dataValidation;\n if (validationFunctionName) {\n const validationFunction = window[validationFunctionName];\n if (typeof validationFunction !== 'function') throw new Error(`Identifier \"${validationFunctionName}\" specified in \"data-validation\" is not a function.`);\n validationFunction(pad.value, JSON.stringify(this._props.dataPmcSpec)).then(error => {\n if (validationId === this.validationId) {\n resolve(error);\n } else {\n reject();\n }\n });\n }\n });\n }\n\n updatePadStatus(status, error = '') {\n const padStatus = this.shadow.getElementById('pad-status');\n padStatus.className = status;\n padStatus.innerHTML = padStatusTemplate(status, error);\n }\n\n get value() {\n return this.rawData.trim().replace(/ +/g, ' ').replace(/ +$/mg, '');\n }\n\n set value(newValue) {\n this.rawData = newValue;\n this._props.dataMode = MODE_DISPLAY;\n this.configure();\n }\n\n set colours(newValue) {\n this._colours = newValue.trim().split(/[ \\n]+/);\n this._props.dataMode = MODE_DISPLAY;\n this.configure();\n }\n}\n","import MyassaysPad from './MyassaysPad';\n\ncustomElements.define('myassays-pad', MyassaysPad);\n\nif (window.MyAssaysPad !== undefined) {\n if (!(window.MyAssaysPad instanceof Object)) {\n throw new Error('Could not create \"window.MyAssaysPad\" namespace.');\n }\n} else {\n window.MyAssaysPad = {};\n}\nwindow.MyAssaysPad = {\n ...window.MyAssaysPad,\n getPadById: function (padId) {\n const padElem = document.getElementById(padId);\n if (!padElem) {\n throw `An instance of MyassaysPad with the id \"${padId}\" could not be found.`;\n } else if (! padElem instanceof MyassaysPad) {\n throw `The element with the id \"${padId}\" is not a MyassaysPad.`;\n } else {\n return padElem;\n }\n },\n getValue: function (padId) {\n return this.getPadById(padId).value;\n },\n setValue: function (padId, newValue) {\n this.getPadById(padId).value = newValue;\n },\n setColours: function (padId, newValue) {\n this.getPadById(padId).colours = newValue;\n },\n setFlashWellPositions: function (padId, newValue) {\n this.getPadById(padId).setAttribute('flash-well-positions', newValue);\n },\n toggleFlashEnabled: function (padId, forceValue = undefined) {\n const pad = this.getPadById(padId);\n const enabled = String(pad.getAttribute('flash-enabled')).toLowerCase() !== 'false';\n pad.setAttribute('flash-enabled', (forceValue === undefined ? !enabled : forceValue) ? 'true' : 'false');\n },\n}\n"],"names":["cloneValue","value","Model","returnValue","key","_Model","initialAttributes","newAttributes","noTrigger","previousAttributes","newAttribute","evt","attributes","attributeName","handler","prevValue","newValue","changed","previousValue","__publicField","splitLine","raw","item","WellScanDataPoint","KineticsDataPoint","KineticsIndexedDataPoint","SpectralDataPoint","EndPointDataPoint","_Well","rawText","wellLabel","row","column","Well","WellScanWell","parts","dataPoints","part","dataPoint","KineticsWell","time","KineticsIndexedWell","SpectralWell","wavelength","EndPointWell","Matrix","matrixTypeId","matrixData","rawWellData","dataSpec","rawWells","rawWell","i","re","colWidths","well","col","match","width","Container","matrices","showHeadings","matrix","label","DataModel","container","whitespacePattern","numberPattern","wellLabelPattern","xyValuePattern","getRE","lines","line","containers","containerData","previousLine","styles","padStatusTemplate","status","error","endPointTemplate","data","containerIndex","matrixIndex","wellIndex","unknown","wellFlashClass","wellStyle","kineticsTemplate","matrixStyle","rowColumnToWellLabel","kineticsIndexedTemplate","spectralTemplate","wellScanTemplate","maxDataPoints","getMatrixTemplate","type","gridTemplate","model","spec","matrixTemplate","types","attributesToObject","result","attr","PropType","valueArrayOrObject","regExp","noHyphens","_PropTypes","propTypes","defaults","propType","observed","docLines","commentsExist","element","singleAttrName","hash","required","props","attrObject","elementId","name","convertedValue","lowerCaseValue","testValue","testLookup","PropTypes","FlashTimer","ActivityMonitor","pendingDelay","validateDelay","removeStatusDelay","exitEditModeDelay","valid","errorMessage","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","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","mapping","validateLabel","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","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","MODE_EDIT","MODE_DISPLAY","template","MyassaysPad","state","grid","pad","onMouseUp","am","newPadStatus","padding","entries","gridContainer","numRows","numRowsMin","numRowsMax","lineHeight","borderTopWidth","borderBottomWidth","topBottomBorderWidth","padHeight","height","scrollTop","scrollLeft","padStyles","style","attrName","changedProps","propName","newVal","fontStyleRules","resolve","span","paddingWidth","validationId","reject","validationFunctionName","validationFunction","padStatus","padId","padElem","forceValue","enabled"],"mappings":"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","x_google_ignoreList":[15,16,17,18,19,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,44]}