@quartz-community/bases-page 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/yaml/dist/nodes/identity.js","../node_modules/yaml/dist/visit.js","../node_modules/yaml/dist/doc/directives.js","../node_modules/yaml/dist/doc/anchors.js","../node_modules/yaml/dist/doc/applyReviver.js","../node_modules/yaml/dist/nodes/toJS.js","../node_modules/yaml/dist/nodes/Node.js","../node_modules/yaml/dist/nodes/Alias.js","../node_modules/yaml/dist/nodes/Scalar.js","../node_modules/yaml/dist/doc/createNode.js","../node_modules/yaml/dist/nodes/Collection.js","../node_modules/yaml/dist/stringify/stringifyComment.js","../node_modules/yaml/dist/stringify/foldFlowLines.js","../node_modules/yaml/dist/stringify/stringifyString.js","../node_modules/yaml/dist/stringify/stringify.js","../node_modules/yaml/dist/stringify/stringifyPair.js","../node_modules/yaml/dist/log.js","../node_modules/yaml/dist/schema/yaml-1.1/merge.js","../node_modules/yaml/dist/nodes/addPairToJSMap.js","../node_modules/yaml/dist/nodes/Pair.js","../node_modules/yaml/dist/stringify/stringifyCollection.js","../node_modules/yaml/dist/nodes/YAMLMap.js","../node_modules/yaml/dist/schema/common/map.js","../node_modules/yaml/dist/nodes/YAMLSeq.js","../node_modules/yaml/dist/schema/common/seq.js","../node_modules/yaml/dist/schema/common/string.js","../node_modules/yaml/dist/schema/common/null.js","../node_modules/yaml/dist/schema/core/bool.js","../node_modules/yaml/dist/stringify/stringifyNumber.js","../node_modules/yaml/dist/schema/core/float.js","../node_modules/yaml/dist/schema/core/int.js","../node_modules/yaml/dist/schema/core/schema.js","../node_modules/yaml/dist/schema/json/schema.js","../node_modules/yaml/dist/schema/yaml-1.1/binary.js","../node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../node_modules/yaml/dist/schema/yaml-1.1/omap.js","../node_modules/yaml/dist/schema/yaml-1.1/bool.js","../node_modules/yaml/dist/schema/yaml-1.1/float.js","../node_modules/yaml/dist/schema/yaml-1.1/int.js","../node_modules/yaml/dist/schema/yaml-1.1/set.js","../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../node_modules/yaml/dist/schema/yaml-1.1/schema.js","../node_modules/yaml/dist/schema/tags.js","../node_modules/yaml/dist/schema/Schema.js","../node_modules/yaml/dist/stringify/stringifyDocument.js","../node_modules/yaml/dist/doc/Document.js","../node_modules/yaml/dist/errors.js","../node_modules/yaml/dist/compose/resolve-props.js","../node_modules/yaml/dist/compose/util-contains-newline.js","../node_modules/yaml/dist/compose/util-flow-indent-check.js","../node_modules/yaml/dist/compose/util-map-includes.js","../node_modules/yaml/dist/compose/resolve-block-map.js","../node_modules/yaml/dist/compose/resolve-block-seq.js","../node_modules/yaml/dist/compose/resolve-end.js","../node_modules/yaml/dist/compose/resolve-flow-collection.js","../node_modules/yaml/dist/compose/compose-collection.js","../node_modules/yaml/dist/compose/resolve-block-scalar.js","../node_modules/yaml/dist/compose/resolve-flow-scalar.js","../node_modules/yaml/dist/compose/compose-scalar.js","../node_modules/yaml/dist/compose/util-empty-scalar-position.js","../node_modules/yaml/dist/compose/compose-node.js","../node_modules/yaml/dist/compose/compose-doc.js","../node_modules/yaml/dist/compose/composer.js","../node_modules/yaml/dist/parse/cst-scalar.js","../node_modules/yaml/dist/parse/cst-stringify.js","../node_modules/yaml/dist/parse/cst-visit.js","../node_modules/yaml/dist/parse/cst.js","../node_modules/yaml/dist/parse/lexer.js","../node_modules/yaml/dist/parse/line-counter.js","../node_modules/yaml/dist/parse/parser.js","../node_modules/yaml/dist/public-api.js","../node_modules/yaml/dist/index.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/color.node.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/preact-render-to-string/src/lib/constants.js","../node_modules/preact-render-to-string/src/lib/util.js","../node_modules/preact-render-to-string/src/index.js","../node_modules/devlop/lib/default.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/hast-util-parse-selector/lib/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/hastscript/lib/create-h.js","../node_modules/hastscript/lib/svg-case-sensitive-tag-names.js","../node_modules/hastscript/lib/index.js","../node_modules/vfile-location/lib/index.js","../node_modules/web-namespaces/index.js","../node_modules/hast-util-from-parse5/lib/index.js","../node_modules/parse5/dist/common/unicode.js","../node_modules/parse5/dist/common/error-codes.js","../node_modules/parse5/dist/tokenizer/preprocessor.js","../node_modules/parse5/dist/common/token.js","../node_modules/entities/src/generated/decode-data-html.ts","../node_modules/entities/src/decode-codepoint.ts","../node_modules/entities/src/decode.ts","../node_modules/parse5/dist/common/html.js","../node_modules/parse5/dist/tokenizer/index.js","../node_modules/parse5/dist/parser/open-element-stack.js","../node_modules/parse5/dist/parser/formatting-element-list.js","../node_modules/parse5/dist/tree-adapters/default.js","../node_modules/parse5/dist/common/doctype.js","../node_modules/parse5/dist/common/foreign-content.js","../node_modules/parse5/dist/parser/index.js","../node_modules/parse5/dist/serializer/index.js","../node_modules/parse5/dist/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/index.js","../node_modules/hast-util-from-html/lib/errors.js","../node_modules/hast-util-from-html/lib/index.js","../src/parser.ts","../src/pageType.ts","../src/transformer.ts"],"names":["exports","SKIP","visit","i","k","v","res","anchors","c","node","a","next","end","o","merge","value","_","stringify","comment","str","map","seq","d","require_schema","s","pairs","omap","require_bool","require_float","f","require_int","n","set","p","tags","b","Schema","search","m","ok","tag","errors","index","ch","Parser","start","lineCounter","parse","checks","all","is","DIFFED","COMMIT","SKIP_EFFECTS","COMPONENT","CHILDREN","DIRTY","NEXT_STATE","UNSAFE_NAME","NAMESPACE_REPLACE_REGEX","HTML_LOWER_CASE","SVG_CAMEL_CASE","HTML_ENUMERATED","Set","setDirty","component","unsetDirty","__g","isDirty","ENCODED_ENTITIES","encodeEntities","length","test","last","out","charCodeAt","slice","JS_TO_CSS","IS_NON_DIMENSIONAL","CSS_REGEX","styleObjToCss","prop","val","name","replace","toLowerCase","suffix","startsWith","has","markAsDirty","this","__d","createComponent","vnode","context","__v","props","setState","forceUpdate","__h","Array","renderToStringAsync","beforeDiff","afterDiff","renderHook","ummountHook","EMPTY_OBJ","EMPTY_ARR","isArray","assign","Object","EMPTY_STR","BEGIN_SUSPENSE_DENOMINATOR","END_SUSPENSE_DENOMINATOR","wrapWithSuspenseMarkers","result","unshift","push","then","renderToString","_rendererState","previousSkipEffects","options","unmount","parent","h","Fragment","rendered","_renderToString","join","e","Error","renderClassComponent","type","isMounting","state","getDerivedStateFromProps","componentWillMount","componentWillUpdate","render","isSvgMode","selectValue","asyncMode","renderer","vnodeType","renderArray","vnodeLength","child","_renderArray","childRender","constructor","contextType","cctx","tpl","exprs","UNSTABLE_comment","children","provider","__c","__","isClassComponent","prototype","count","call","error","getChildContext","errorBoundaries","getDerivedStateFromError","componentDidCatch","key","err","_suspended","onError","errorHook","html","isSignal","__html","SELF_CLOSING","endTag","startTag","x","peek","svg","point","position","location","CODE_POINTS","ERR","TokenType","_a","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","base","NS","ATTRS","DOCUMENT_MODE","TAG_NAMES","TAG_ID","$","State","isAsciiAlphaNumeric","element","EntryType","entry","InsertionMode","default","field","camelcase","$2","readFileSync","empty"],"mappings":"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","file":"index.js","sourcesContent":["'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n","'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n prevAnchors ?? (prevAnchors = anchorNames(doc));\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n","'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n","'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n","'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc, ctx) {\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit.visit(doc, {\n Node: (_key, node) => {\n if (identity.isAlias(node) || identity.hasAnchor(node))\n nodes.push(node);\n }\n });\n if (ctx)\n ctx.aliasResolveCache = nodes;\n }\n let found = undefined;\n for (const node of nodes) {\n if (node === this)\n break;\n if (node.anchor === this.source)\n found = node;\n }\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc, ctx);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (data?.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n","'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n ref.anchor ?? (ref.anchor = onAnchor(value));\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n","'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n","'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?<!\\n))\\n+(?!\\n|$)', 'g');\n}\ncatch {\n blockEndNewlines = /\\n+(?!\\n|$)/g;\n}\nfunction blockString({ comment, type, value }, ctx, onComment, onChompKeep) {\n const { blockQuote, commentString, lineWidth } = ctx.options;\n // 1. Block can't end in whitespace unless the last line is non-empty.\n // 2. Strings consisting of only whitespace are best rendered explicitly.\n if (!blockQuote || /\\n[\\t ]+$/.test(value)) {\n return quotedString(value, ctx);\n }\n const indent = ctx.indent ||\n (ctx.forceBlockIndent || containsDocumentMarker(value) ? ' ' : '');\n const literal = blockQuote === 'literal'\n ? true\n : blockQuote === 'folded' || type === Scalar.Scalar.BLOCK_FOLDED\n ? false\n : type === Scalar.Scalar.BLOCK_LITERAL\n ? true\n : !lineLengthOverLimit(value, lineWidth, indent.length);\n if (!value)\n return literal ? '|\\n' : '>\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trailingComma: false,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n' && valueComment)\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n","'use strict';\n\nvar node_process = require('process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n","'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n reqNewline || (reqNewline = lines.length > linesAtValue || str.includes('\\n'));\n if (i < items.length - 1) {\n str += ',';\n }\n else if (ctx.options.trailingComma) {\n if (ctx.options.lineWidth > 0) {\n reqNewline || (reqNewline = lines.reduce((sum, line) => sum + line.length + 2, 2) +\n (str.length + 2) >\n ctx.options.lineWidth);\n }\n if (reqNewline) {\n str += ',';\n }\n }\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n","'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n","'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n","'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = Object.is(value, -0) ? '-0' : JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n","'use strict';\n\nvar node_buffer = require('buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n type ?? (type = Scalar.Scalar.BLOCK_LITERAL);\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map<unknown, unknown>`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n","'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end?.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n","'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n","'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n","'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n","'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n","'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value?.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n","'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source?.[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce?.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt?.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(?<![ \\t])[ \\t]*\\r?\\n', 'sy');\n line = new RegExp('[ \\t]*(.*?)(?:(?<![ \\t])[ \\t]*)?\\r?\\n', 'sy');\n }\n catch {\n first = /(.*?)[ \\t]*\\r?\\n/sy;\n line = /[ \\t]*(.*?)[ \\t]*\\r?\\n/sy;\n }\n let match = first.exec(source);\n if (!match)\n return source;\n let res = match[1];\n let sep = ' ';\n let pos = first.lastIndex;\n line.lastIndex = pos;\n while ((match = line.exec(source))) {\n if (match[1] === '') {\n if (sep === '\\n')\n res += sep;\n else\n sep = '\\n';\n }\n else {\n res += sep + match[1];\n sep = ' ';\n }\n pos = line.lastIndex;\n }\n const last = /[ \\t]*(.*)/sy;\n last.lastIndex = pos;\n match = last.exec(source);\n return res + sep + (match?.[1] ?? '');\n}\nfunction doubleQuotedValue(source, onError) {\n let res = '';\n for (let i = 1; i < source.length - 1; ++i) {\n const ch = source[i];\n if (ch === '\\r' && source[i + 1] === '\\n')\n continue;\n if (ch === '\\n') {\n const { fold, offset } = foldNewline(source, i);\n res += fold;\n i = offset;\n }\n else if (ch === '\\\\') {\n let next = source[++i];\n const cc = escapeCodes[next];\n if (cc)\n res += cc;\n else if (next === '\\n') {\n // skip escaped newlines, but still trim the following line\n next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n }\n else if (next === '\\r' && source[i + 1] === '\\n') {\n // skip escaped CRLF newlines, but still trim the following line\n next = source[++i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n }\n else if (next === 'x' || next === 'u' || next === 'U') {\n const length = { x: 2, u: 4, U: 8 }[next];\n res += parseCharCode(source, i + 1, length, onError);\n i += length;\n }\n else {\n const raw = source.substr(i - 1, 2);\n onError(i - 1, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n res += raw;\n }\n }\n else if (ch === ' ' || ch === '\\t') {\n // trim trailing whitespace\n const wsStart = i;\n let next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n if (next !== '\\n' && !(next === '\\r' && source[i + 2] === '\\n'))\n res += i > wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n","'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n pos ?? (pos = before.length);\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n try {\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n }\n catch (error) {\n // Almost certainly here due to a stack overflow\n const message = error instanceof Error ? error.message : String(error);\n onError(token, 'RESOURCE_EXHAUSTION', message);\n }\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n isSrcToken = false;\n }\n }\n node ?? (node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError));\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n","'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n","'use strict';\n\nvar node_process = require('process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n","'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n","'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n","'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n","'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '<BOM>';\n case DOCUMENT:\n return '<DOC>';\n case FLOW_END:\n return '<FLOW_END>';\n case SCALAR:\n return '<SCALAR>';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n","'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n","'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n","'use strict';\n\nvar node_process = require('process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && top?.type !== 'doc-end') {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top?.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | ReadonlyArray<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends ReadonlyArray<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends Array<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test)\n ? anyFactory(test)\n : // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(/** @type {Props} */ (test))\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array<Check>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n return '\\u001B[33m' + d + '\\u001B[39m'\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<infer T>\n * ? MatchesOne<Value, T>\n * : Check extends Array<infer T>\n * ? MatchesOne<Value, T>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array<VisitedParents>} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array<UnistParent>} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record<string, unknown>} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly<ActionTuple>} */\n let result = empty\n /** @type {Readonly<ActionTuple>} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<UnistParent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<any>\n * ? MatchesOne<Value, Check[number]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches<Descendant, Check>,\n * Extract<Descendant, UnistParent>\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant<Tree>,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array<UnistParent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","// Options hooks\nexport const DIFF = '__b';\nexport const RENDER = '__r';\nexport const DIFFED = 'diffed';\nexport const COMMIT = '__c';\nexport const SKIP_EFFECTS = '__s';\nexport const CATCH_ERROR = '__e';\n\n// VNode properties\nexport const COMPONENT = '__c';\nexport const CHILDREN = '__k';\nexport const PARENT = '__';\nexport const MASK = '__m';\n\n// Component properties\nexport const VNODE = '__v';\nexport const DIRTY = '__d';\nexport const BITS = '__g';\nexport const NEXT_STATE = '__s';\nexport const CHILD_DID_SUSPEND = '__c';\n","import { DIRTY, BITS } from './constants';\n\nexport const VOID_ELEMENTS =\n\t/^(?:area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;\n// oxlint-disable-next-line no-control-regex\nexport const UNSAFE_NAME = /[\\s\\n\\\\/='\"\\0<>]/;\nexport const NAMESPACE_REPLACE_REGEX = /^(xlink|xmlns|xml)([A-Z])/;\nexport const HTML_LOWER_CASE =\n\t/^(?:accessK|auto[A-Z]|cell|ch|col|cont|cross|dateT|encT|form[A-Z]|frame|hrefL|inputM|maxL|minL|noV|playsI|popoverT|readO|rowS|src[A-Z]|tabI|useM|item[A-Z])/;\nexport const SVG_CAMEL_CASE =\n\t/^ac|^ali|arabic|basel|cap|clipPath$|clipRule$|color|dominant|enable|fill|flood|font|glyph[^R]|horiz|image|letter|lighting|marker[^WUH]|overline|panose|pointe|paint|rendering|shape|stop|strikethrough|stroke|text[^L]|transform|underline|unicode|units|^v[^i]|^w|^xH/;\n\n// Boolean DOM properties that translate to enumerated ('true'/'false') attributes\nexport const HTML_ENUMERATED = new Set(['draggable', 'spellcheck']);\n\nexport const COMPONENT_DIRTY_BIT = 1 << 3;\nexport function setDirty(component) {\n\tif (component[BITS] !== undefined) {\n\t\tcomponent[BITS] |= COMPONENT_DIRTY_BIT;\n\t} else {\n\t\tcomponent[DIRTY] = true;\n\t}\n}\n\nexport function unsetDirty(component) {\n\tif (component.__g !== undefined) {\n\t\tcomponent.__g &= ~COMPONENT_DIRTY_BIT;\n\t} else {\n\t\tcomponent[DIRTY] = false;\n\t}\n}\n\nexport function isDirty(component) {\n\tif (component.__g !== undefined) {\n\t\treturn (component.__g & COMPONENT_DIRTY_BIT) !== 0;\n\t}\n\treturn component[DIRTY] === true;\n}\n\n// DOM properties that should NOT have \"px\" added when numeric\nconst ENCODED_ENTITIES = /[\"&<]/;\n\n/** @param {string} str */\nexport function encodeEntities(str) {\n\t// Skip all work for strings with no entities needing encoding:\n\tif (str.length === 0 || ENCODED_ENTITIES.test(str) === false) return str;\n\n\tlet last = 0,\n\t\ti = 0,\n\t\tout = '',\n\t\tch = '';\n\n\t// Seek forward in str until the next entity char:\n\tfor (; i < str.length; i++) {\n\t\tswitch (str.charCodeAt(i)) {\n\t\t\tcase 34:\n\t\t\t\tch = '&quot;';\n\t\t\t\tbreak;\n\t\t\tcase 38:\n\t\t\t\tch = '&amp;';\n\t\t\t\tbreak;\n\t\t\tcase 60:\n\t\t\t\tch = '&lt;';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tcontinue;\n\t\t}\n\t\t// Append skipped/buffered characters and the encoded entity:\n\t\tif (i !== last) out = out + str.slice(last, i);\n\t\tout = out + ch;\n\t\t// Start the next seek/buffer after the entity's offset:\n\t\tlast = i + 1;\n\t}\n\tif (i !== last) out = out + str.slice(last, i);\n\treturn out;\n}\n\nexport let indent = (s, char) =>\n\tString(s).replace(/(\\n+)/g, '$1' + (char || '\\t'));\n\nexport let isLargeString = (s, length, ignoreLines) =>\n\tString(s).length > (length || 40) ||\n\t(!ignoreLines && String(s).indexOf('\\n') !== -1) ||\n\tString(s).indexOf('<') !== -1;\n\nconst JS_TO_CSS = {};\n\nconst IS_NON_DIMENSIONAL = new Set([\n\t'animation-iteration-count',\n\t'border-image-outset',\n\t'border-image-slice',\n\t'border-image-width',\n\t'box-flex',\n\t'box-flex-group',\n\t'box-ordinal-group',\n\t'column-count',\n\t'fill-opacity',\n\t'flex',\n\t'flex-grow',\n\t'flex-negative',\n\t'flex-order',\n\t'flex-positive',\n\t'flex-shrink',\n\t'flood-opacity',\n\t'font-weight',\n\t'grid-column',\n\t'grid-row',\n\t'line-clamp',\n\t'line-height',\n\t'opacity',\n\t'order',\n\t'orphans',\n\t'stop-opacity',\n\t'stroke-dasharray',\n\t'stroke-dashoffset',\n\t'stroke-miterlimit',\n\t'stroke-opacity',\n\t'stroke-width',\n\t'tab-size',\n\t'widows',\n\t'z-index',\n\t'zoom'\n]);\n\nconst CSS_REGEX = /[A-Z]/g;\n// Convert an Object style to a CSSText string\nexport function styleObjToCss(s) {\n\tlet str = '';\n\tfor (let prop in s) {\n\t\tlet val = s[prop];\n\t\tif (val != null && val !== '') {\n\t\t\tconst name =\n\t\t\t\tprop[0] == '-'\n\t\t\t\t\t? prop\n\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\tlet suffix = ';';\n\t\t\tif (\n\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t// Exclude custom-attributes\n\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t!IS_NON_DIMENSIONAL.has(name)\n\t\t\t) {\n\t\t\t\tsuffix = 'px;';\n\t\t\t}\n\t\t\tstr = str + name + ':' + val + suffix;\n\t\t}\n\t}\n\treturn str || undefined;\n}\n\n/**\n * Get flattened children from the children prop\n * @param {Array} accumulator\n * @param {any} children A `props.children` opaque object.\n * @returns {Array} accumulator\n * @private\n */\nexport function getChildren(accumulator, children) {\n\tif (Array.isArray(children)) {\n\t\tchildren.reduce(getChildren, accumulator);\n\t} else if (children != null && children !== false) {\n\t\taccumulator.push(children);\n\t}\n\treturn accumulator;\n}\n\nfunction markAsDirty() {\n\tthis.__d = true;\n}\n\nexport function createComponent(vnode, context) {\n\treturn {\n\t\t__v: vnode,\n\t\tcontext,\n\t\tprops: vnode.props,\n\t\t// silently drop state updates\n\t\tsetState: markAsDirty,\n\t\tforceUpdate: markAsDirty,\n\t\t__d: true,\n\t\t// hooks\n\t\t// oxlint-disable-next-line no-new-array\n\t\t__h: new Array(0)\n\t};\n}\n\n// Necessary for createContext api. Setting this property will pass\n// the context value as `this.context` just for this component.\nexport function getContext(nodeName, context) {\n\tlet cxType = nodeName.contextType;\n\tlet provider = cxType && context[cxType.__c];\n\treturn cxType != null\n\t\t? provider\n\t\t\t? provider.props.value\n\t\t\t: cxType.__\n\t\t: context;\n}\n\n/**\n * @template T\n */\nexport class Deferred {\n\tconstructor() {\n\t\t/** @type {Promise<T>} */\n\t\tthis.promise = new Promise((resolve, reject) => {\n\t\t\tthis.resolve = resolve;\n\t\t\tthis.reject = reject;\n\t\t});\n\t}\n}\n","import {\n\tencodeEntities,\n\tstyleObjToCss,\n\tUNSAFE_NAME,\n\tNAMESPACE_REPLACE_REGEX,\n\tHTML_LOWER_CASE,\n\tHTML_ENUMERATED,\n\tSVG_CAMEL_CASE,\n\tcreateComponent,\n\tsetDirty,\n\tunsetDirty,\n\tisDirty\n} from './lib/util.js';\nimport { options, h, Fragment } from 'preact';\nimport {\n\tCHILDREN,\n\tCOMMIT,\n\tCOMPONENT,\n\tDIFF,\n\tDIFFED,\n\tNEXT_STATE,\n\tPARENT,\n\tRENDER,\n\tSKIP_EFFECTS,\n\tVNODE,\n\tCATCH_ERROR\n} from './lib/constants.js';\n\nconst EMPTY_OBJ = {};\nconst EMPTY_ARR = [];\nconst isArray = Array.isArray;\nconst assign = Object.assign;\nconst EMPTY_STR = '';\nconst BEGIN_SUSPENSE_DENOMINATOR = '<!--$s-->';\nconst END_SUSPENSE_DENOMINATOR = '<!--/$s-->';\n\n/**\n * Wraps a render result with suspense boundary markers, handling all possible\n * return types from _renderToString: string, Array, or Promise.\n * @param {string | Array | Promise} result\n * @returns {string | Array | Promise}\n */\nfunction wrapWithSuspenseMarkers(result) {\n\tif (typeof result === 'string') {\n\t\treturn BEGIN_SUSPENSE_DENOMINATOR + result + END_SUSPENSE_DENOMINATOR;\n\t} else if (isArray(result)) {\n\t\tresult.unshift(BEGIN_SUSPENSE_DENOMINATOR);\n\t\tresult.push(END_SUSPENSE_DENOMINATOR);\n\t\treturn result;\n\t} else if (result && typeof result.then === 'function') {\n\t\treturn result.then(wrapWithSuspenseMarkers);\n\t}\n\treturn BEGIN_SUSPENSE_DENOMINATOR + result + END_SUSPENSE_DENOMINATOR;\n}\n\n// Global state for the current render pass\nlet beforeDiff, afterDiff, renderHook, ummountHook;\n\n/**\n * Render Preact JSX + Components to an HTML string.\n * @param {VNode} vnode\tJSX Element / VNode to render\n * @param {Object} [context={}] Initial root context object\n * @param {RendererState} [_rendererState] for internal use\n * @returns {string} serialized HTML\n */\nexport function renderToString(vnode, context, _rendererState) {\n\t// Performance optimization: `renderToString` is synchronous and we\n\t// therefore don't execute any effects. To do that we pass an empty\n\t// array to `options._commit` (`__c`). But we can go one step further\n\t// and avoid a lot of dirty checks and allocations by setting\n\t// `options._skipEffects` (`__s`) too.\n\tconst previousSkipEffects = options[SKIP_EFFECTS];\n\toptions[SKIP_EFFECTS] = true;\n\n\t// store options hooks once before each synchronous render call\n\tbeforeDiff = options[DIFF];\n\tafterDiff = options[DIFFED];\n\trenderHook = options[RENDER];\n\tummountHook = options.unmount;\n\n\tconst parent = h(Fragment, null);\n\tparent[CHILDREN] = [vnode];\n\n\ttry {\n\t\tconst rendered = _renderToString(\n\t\t\tvnode,\n\t\t\tcontext || EMPTY_OBJ,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tparent,\n\t\t\tfalse,\n\t\t\t_rendererState\n\t\t);\n\n\t\tif (isArray(rendered)) {\n\t\t\treturn rendered.join(EMPTY_STR);\n\t\t}\n\t\treturn rendered;\n\t} catch (e) {\n\t\tif (e.then) {\n\t\t\tthrow new Error('Use \"renderToStringAsync\" for suspenseful rendering.');\n\t\t}\n\n\t\tthrow e;\n\t} finally {\n\t\t// options._commit, we don't schedule any effects in this library right now,\n\t\t// so we can pass an empty queue to this hook.\n\t\tif (options[COMMIT]) options[COMMIT](vnode, EMPTY_ARR);\n\t\toptions[SKIP_EFFECTS] = previousSkipEffects;\n\t\tEMPTY_ARR.length = 0;\n\t}\n}\n\n/**\n * Render Preact JSX + Components to an HTML string.\n * @param {VNode} vnode\tJSX Element / VNode to render\n * @param {Object} [context={}] Initial root context object\n * @returns {string} serialized HTML\n */\nexport async function renderToStringAsync(vnode, context) {\n\t// Performance optimization: `renderToString` is synchronous and we\n\t// therefore don't execute any effects. To do that we pass an empty\n\t// array to `options._commit` (`__c`). But we can go one step further\n\t// and avoid a lot of dirty checks and allocations by setting\n\t// `options._skipEffects` (`__s`) too.\n\tconst previousSkipEffects = options[SKIP_EFFECTS];\n\toptions[SKIP_EFFECTS] = true;\n\n\t// store options hooks once before each synchronous render call\n\tbeforeDiff = options[DIFF];\n\tafterDiff = options[DIFFED];\n\trenderHook = options[RENDER];\n\tummountHook = options.unmount;\n\n\tconst parent = h(Fragment, null);\n\tparent[CHILDREN] = [vnode];\n\n\ttry {\n\t\tconst rendered = await _renderToString(\n\t\t\tvnode,\n\t\t\tcontext || EMPTY_OBJ,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tparent,\n\t\t\ttrue,\n\t\t\tundefined\n\t\t);\n\n\t\tif (isArray(rendered)) {\n\t\t\tlet count = 0;\n\t\t\tlet resolved = rendered;\n\n\t\t\t// Resolving nested Promises with a maximum depth of 25\n\t\t\twhile (\n\t\t\t\tresolved.some(\n\t\t\t\t\t(element) => element && typeof element.then === 'function'\n\t\t\t\t) &&\n\t\t\t\tcount++ < 25\n\t\t\t) {\n\t\t\t\tresolved = (await Promise.all(resolved)).flat();\n\t\t\t}\n\n\t\t\treturn resolved.join(EMPTY_STR);\n\t\t}\n\n\t\treturn rendered;\n\t} finally {\n\t\t// options._commit, we don't schedule any effects in this library right now,\n\t\t// so we can pass an empty queue to this hook.\n\t\tif (options[COMMIT]) options[COMMIT](vnode, EMPTY_ARR);\n\t\toptions[SKIP_EFFECTS] = previousSkipEffects;\n\t\tEMPTY_ARR.length = 0;\n\t}\n}\n\n/**\n * @param {VNode} vnode\n * @param {Record<string, unknown>} context\n */\nfunction renderClassComponent(vnode, context) {\n\tlet type =\n\t\t/** @type {import(\"preact\").ComponentClass<typeof vnode.props>} */ (\n\t\t\tvnode.type\n\t\t);\n\n\tlet isMounting = true;\n\tlet c;\n\tif (vnode[COMPONENT]) {\n\t\tisMounting = false;\n\t\tc = vnode[COMPONENT];\n\t\tc.state = c[NEXT_STATE];\n\t} else {\n\t\tc = new type(vnode.props, context);\n\t}\n\n\tvnode[COMPONENT] = c;\n\tc[VNODE] = vnode;\n\n\tc.props = vnode.props;\n\tc.context = context;\n\n\t// Turn off stateful rendering\n\tsetDirty(c);\n\n\tif (c.state == null) c.state = EMPTY_OBJ;\n\n\tif (c[NEXT_STATE] == null) {\n\t\tc[NEXT_STATE] = c.state;\n\t}\n\n\tif (type.getDerivedStateFromProps) {\n\t\tc.state = assign(\n\t\t\t{},\n\t\t\tc.state,\n\t\t\ttype.getDerivedStateFromProps(c.props, c.state)\n\t\t);\n\t} else if (isMounting && c.componentWillMount) {\n\t\tc.componentWillMount();\n\n\t\t// If the user called setState in cWM we need to flush pending,\n\t\t// state updates. This is the same behaviour in React.\n\t\tc.state = c[NEXT_STATE] !== c.state ? c[NEXT_STATE] : c.state;\n\t} else if (!isMounting && c.componentWillUpdate) {\n\t\tc.componentWillUpdate();\n\t}\n\n\tif (renderHook) renderHook(vnode);\n\n\treturn c.render(c.props, c.state, context);\n}\n\n/**\n * Recursively render VNodes to HTML.\n * @param {VNode|any} vnode\n * @param {any} context\n * @param {boolean} isSvgMode\n * @param {any} selectValue\n * @param {VNode} parent\n * @param {boolean} asyncMode\n * @param {RendererState | undefined} [renderer]\n * @returns {string | Promise<string> | (string | Promise<string>)[]}\n */\nfunction _renderToString(\n\tvnode,\n\tcontext,\n\tisSvgMode,\n\tselectValue,\n\tparent,\n\tasyncMode,\n\trenderer\n) {\n\t// Ignore non-rendered VNodes/values\n\tif (\n\t\tvnode == null ||\n\t\tvnode === true ||\n\t\tvnode === false ||\n\t\tvnode === EMPTY_STR\n\t) {\n\t\treturn EMPTY_STR;\n\t}\n\n\tlet vnodeType = typeof vnode;\n\t// Text VNodes: escape as HTML\n\tif (vnodeType != 'object') {\n\t\tif (vnodeType == 'function') return EMPTY_STR;\n\t\treturn vnodeType == 'string' ? encodeEntities(vnode) : vnode + EMPTY_STR;\n\t}\n\n\t// Recurse into children / Arrays\n\tif (isArray(vnode)) {\n\t\tlet rendered = EMPTY_STR,\n\t\t\trenderArray;\n\t\tparent[CHILDREN] = vnode;\n\t\tconst vnodeLength = vnode.length;\n\t\tfor (let i = 0; i < vnodeLength; i++) {\n\t\t\tlet child = vnode[i];\n\t\t\tif (child == null || typeof child == 'boolean') continue;\n\n\t\t\tconst childRender = _renderToString(\n\t\t\t\tchild,\n\t\t\t\tcontext,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue,\n\t\t\t\tparent,\n\t\t\t\tasyncMode,\n\t\t\t\trenderer\n\t\t\t);\n\n\t\t\tif (typeof childRender == 'string') {\n\t\t\t\trendered = rendered + childRender;\n\t\t\t} else {\n\t\t\t\tif (!renderArray) {\n\t\t\t\t\t// oxlint-disable-next-line no-new-array\n\t\t\t\t\trenderArray = new Array(vnodeLength);\n\t\t\t\t}\n\n\t\t\t\tif (rendered) renderArray.push(rendered);\n\n\t\t\t\trendered = EMPTY_STR;\n\n\t\t\t\tif (isArray(childRender)) {\n\t\t\t\t\trenderArray.push(...childRender);\n\t\t\t\t} else {\n\t\t\t\t\trenderArray.push(childRender);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (renderArray) {\n\t\t\tif (rendered) renderArray.push(rendered);\n\t\t\treturn renderArray;\n\t\t}\n\n\t\treturn rendered;\n\t}\n\n\t// VNodes have {constructor:undefined} to prevent JSON injection:\n\tif (vnode.constructor !== undefined) return EMPTY_STR;\n\n\tvnode[PARENT] = parent;\n\tif (beforeDiff) beforeDiff(vnode);\n\n\tlet type = vnode.type,\n\t\tprops = vnode.props;\n\n\t// Invoke rendering on Components\n\tif (typeof type == 'function') {\n\t\tlet cctx = context,\n\t\t\tcontextType,\n\t\t\trendered,\n\t\t\tcomponent;\n\t\tif (type === Fragment) {\n\t\t\t// Serialized precompiled JSX.\n\t\t\tif ('tpl' in props) {\n\t\t\t\tlet out = EMPTY_STR;\n\t\t\t\tfor (let i = 0; i < props.tpl.length; i++) {\n\t\t\t\t\tout = out + props.tpl[i];\n\n\t\t\t\t\tif (props.exprs && i < props.exprs.length) {\n\t\t\t\t\t\tconst value = props.exprs[i];\n\t\t\t\t\t\tif (value == null) continue;\n\n\t\t\t\t\t\t// Check if we're dealing with a vnode or an array of nodes\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof value == 'object' &&\n\t\t\t\t\t\t\t(value.constructor === undefined || isArray(value))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tout =\n\t\t\t\t\t\t\t\tout +\n\t\t\t\t\t\t\t\t_renderToString(\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\t\t\t\tvnode,\n\t\t\t\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\t\t\t\trenderer\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Values are pre-escaped by the JSX transform\n\t\t\t\t\t\t\tout = out + value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn out;\n\t\t\t} else if ('UNSTABLE_comment' in props) {\n\t\t\t\t// Fragments are the least used components of core that's why\n\t\t\t\t// branching here for comments has the least effect on perf.\n\t\t\t\treturn '<!--' + encodeEntities(props.UNSTABLE_comment) + '-->';\n\t\t\t}\n\n\t\t\trendered = props.children;\n\t\t} else {\n\t\t\tcontextType = type.contextType;\n\t\t\tif (contextType != null) {\n\t\t\t\tlet provider = context[contextType.__c];\n\t\t\t\tcctx = provider ? provider.props.value : contextType.__;\n\t\t\t}\n\n\t\t\tlet isClassComponent =\n\t\t\t\ttype.prototype && typeof type.prototype.render == 'function';\n\t\t\tif (isClassComponent) {\n\t\t\t\trendered = /**#__NOINLINE__**/ renderClassComponent(vnode, cctx);\n\t\t\t\tcomponent = vnode[COMPONENT];\n\t\t\t} else {\n\t\t\t\tvnode[COMPONENT] = component = /**#__NOINLINE__**/ createComponent(\n\t\t\t\t\tvnode,\n\t\t\t\t\tcctx\n\t\t\t\t);\n\n\t\t\t\t// If a hook invokes setState() to invalidate the component during rendering,\n\t\t\t\t// re-render it up to 25 times to allow \"settling\" of memoized states.\n\t\t\t\t// Note:\n\t\t\t\t// This will need to be updated for Preact 11 to use internal.flags rather than component._dirty:\n\t\t\t\t// https://github.com/preactjs/preact/blob/d4ca6fdb19bc715e49fd144e69f7296b2f4daa40/src/diff/component.js#L35-L44\n\t\t\t\tlet count = 0;\n\t\t\t\twhile (isDirty(component) && count++ < 25) {\n\t\t\t\t\tunsetDirty(component);\n\n\t\t\t\t\tif (renderHook) renderHook(vnode);\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\trendered = type.call(component, props, cctx);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (asyncMode && error && typeof error.then == 'function') {\n\t\t\t\t\t\t\tvnode._suspended = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsetDirty(component);\n\t\t\t}\n\n\t\t\tif (component.getChildContext != null) {\n\t\t\t\tcontext = assign({}, context, component.getChildContext());\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tisClassComponent &&\n\t\t\t\toptions.errorBoundaries &&\n\t\t\t\t(type.getDerivedStateFromError || component.componentDidCatch)\n\t\t\t) {\n\t\t\t\t// When a component returns a Fragment node we flatten it in core, so we\n\t\t\t\t// need to mirror that logic here too\n\t\t\t\tlet isTopLevelFragment =\n\t\t\t\t\trendered != null &&\n\t\t\t\t\trendered.type === Fragment &&\n\t\t\t\t\trendered.key == null &&\n\t\t\t\t\trendered.props.tpl == null;\n\t\t\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\t\t\ttry {\n\t\t\t\t\treturn _renderToString(\n\t\t\t\t\t\trendered,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\tvnode,\n\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\trenderer\n\t\t\t\t\t);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (type.getDerivedStateFromError) {\n\t\t\t\t\t\tcomponent[NEXT_STATE] = type.getDerivedStateFromError(err);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (component.componentDidCatch) {\n\t\t\t\t\t\tcomponent.componentDidCatch(err, EMPTY_OBJ);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isDirty(component)) {\n\t\t\t\t\t\trendered = renderClassComponent(vnode, context);\n\t\t\t\t\t\tcomponent = vnode[COMPONENT];\n\n\t\t\t\t\t\tif (component.getChildContext != null) {\n\t\t\t\t\t\t\tcontext = assign({}, context, component.getChildContext());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet isTopLevelFragment =\n\t\t\t\t\t\t\trendered != null &&\n\t\t\t\t\t\t\trendered.type === Fragment &&\n\t\t\t\t\t\t\trendered.key == null &&\n\t\t\t\t\t\t\trendered.props.tpl == null;\n\t\t\t\t\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\t\t\t\t\treturn _renderToString(\n\t\t\t\t\t\t\trendered,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\t\tvnode,\n\t\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\t\trenderer\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn EMPTY_STR;\n\t\t\t\t} finally {\n\t\t\t\t\tif (afterDiff) afterDiff(vnode);\n\n\t\t\t\t\tif (ummountHook) ummountHook(vnode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// When a component returns a Fragment node we flatten it in core, so we\n\t\t// need to mirror that logic here too\n\t\tlet isTopLevelFragment =\n\t\t\trendered != null &&\n\t\t\trendered.type === Fragment &&\n\t\t\trendered.key == null &&\n\t\t\trendered.props.tpl == null;\n\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\ttry {\n\t\t\t// Recurse into children before invoking the after-diff hook\n\t\t\tconst str = _renderToString(\n\t\t\t\trendered,\n\t\t\t\tcontext,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue,\n\t\t\t\tvnode,\n\t\t\t\tasyncMode,\n\t\t\t\trenderer\n\t\t\t);\n\n\t\t\tif (afterDiff) afterDiff(vnode);\n\t\t\t// when we are dealing with suspense we can't do this...\n\n\t\t\tif (options.unmount) options.unmount(vnode);\n\n\t\t\tif (vnode._suspended) {\n\t\t\t\treturn wrapWithSuspenseMarkers(str);\n\t\t\t}\n\n\t\t\treturn str;\n\t\t} catch (error) {\n\t\t\tif (!asyncMode && renderer && renderer.onError) {\n\t\t\t\tconst onError = (error) => {\n\t\t\t\t\treturn renderer.onError(error, vnode, (child, parent) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treturn _renderToString(\n\t\t\t\t\t\t\t\tchild,\n\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\t\t\tparent,\n\t\t\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\t\t\trenderer\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\treturn onError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tlet res = onError(error);\n\n\t\t\t\tif (res !== undefined) return res;\n\n\t\t\t\tlet errorHook = options[CATCH_ERROR];\n\t\t\t\tif (errorHook) errorHook(error, vnode);\n\t\t\t\treturn EMPTY_STR;\n\t\t\t}\n\n\t\t\tif (!asyncMode) throw error;\n\n\t\t\tif (!error || typeof error.then != 'function') throw error;\n\n\t\t\tconst renderNestedChildren = () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = _renderToString(\n\t\t\t\t\t\trendered,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\tvnode,\n\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\trenderer\n\t\t\t\t\t);\n\t\t\t\t\treturn vnode._suspended ? wrapWithSuspenseMarkers(result) : result;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (!e || typeof e.then != 'function') throw e;\n\n\t\t\t\t\treturn e.then(renderNestedChildren);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn error.then(renderNestedChildren);\n\t\t}\n\t}\n\n\t// Serialize Element VNodes to HTML\n\tlet s = '<' + type,\n\t\thtml = EMPTY_STR,\n\t\tchildren;\n\n\tfor (let name in props) {\n\t\tlet v = props[name];\n\t\tv = isSignal(v) ? v.value : v;\n\n\t\tif (typeof v == 'function' && name !== 'class' && name !== 'className') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tswitch (name) {\n\t\t\tcase 'children':\n\t\t\t\tchildren = v;\n\t\t\t\tcontinue;\n\n\t\t\t// VDOM-specific props\n\t\t\tcase 'key':\n\t\t\tcase 'ref':\n\t\t\tcase '__self':\n\t\t\tcase '__source':\n\t\t\t\tcontinue;\n\n\t\t\t// prefer for/class over htmlFor/className\n\t\t\tcase 'htmlFor':\n\t\t\t\tif ('for' in props) continue;\n\t\t\t\tname = 'for';\n\t\t\t\tbreak;\n\t\t\tcase 'className':\n\t\t\t\tif ('class' in props) continue;\n\t\t\t\tname = 'class';\n\t\t\t\tbreak;\n\n\t\t\t// Form element reflected properties\n\t\t\tcase 'defaultChecked':\n\t\t\t\tname = 'checked';\n\t\t\t\tbreak;\n\t\t\tcase 'defaultSelected':\n\t\t\t\tname = 'selected';\n\t\t\t\tbreak;\n\n\t\t\t// Special value attribute handling\n\t\t\tcase 'defaultValue':\n\t\t\tcase 'value':\n\t\t\t\tname = 'value';\n\t\t\t\tswitch (type) {\n\t\t\t\t\t// <textarea value=\"a&b\"> --> <textarea>a&amp;b</textarea>\n\t\t\t\t\tcase 'textarea':\n\t\t\t\t\t\tchildren = v;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t// <select value> is serialized as a selected attribute on the matching option child\n\t\t\t\t\tcase 'select':\n\t\t\t\t\t\tselectValue = v;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t// Add a selected attribute to <option> if its value matches the parent <select> value\n\t\t\t\t\tcase 'option':\n\t\t\t\t\t\tif (selectValue == v && !('selected' in props)) {\n\t\t\t\t\t\t\ts = s + ' selected';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'dangerouslySetInnerHTML':\n\t\t\t\thtml = v && v.__html;\n\t\t\t\tcontinue;\n\n\t\t\t// serialize object styles to a CSS string\n\t\t\tcase 'style':\n\t\t\t\tif (typeof v === 'object') {\n\t\t\t\t\tv = styleObjToCss(v);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'acceptCharset':\n\t\t\t\tname = 'accept-charset';\n\t\t\t\tbreak;\n\t\t\tcase 'httpEquiv':\n\t\t\t\tname = 'http-equiv';\n\t\t\t\tbreak;\n\n\t\t\tdefault: {\n\t\t\t\tif (NAMESPACE_REPLACE_REGEX.test(name)) {\n\t\t\t\t\tname = name.replace(NAMESPACE_REPLACE_REGEX, '$1:$2').toLowerCase();\n\t\t\t\t} else if (UNSAFE_NAME.test(name)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (\n\t\t\t\t\t(name[4] === '-' || HTML_ENUMERATED.has(name)) &&\n\t\t\t\t\tv != null\n\t\t\t\t) {\n\t\t\t\t\t// serialize boolean aria-xyz or enumerated attribute values as strings\n\t\t\t\t\tv = v + EMPTY_STR;\n\t\t\t\t} else if (isSvgMode) {\n\t\t\t\t\tif (SVG_CAMEL_CASE.test(name)) {\n\t\t\t\t\t\tname =\n\t\t\t\t\t\t\tname === 'panose1'\n\t\t\t\t\t\t\t\t? 'panose-1'\n\t\t\t\t\t\t\t\t: name.replace(/([A-Z])/g, '-$1').toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t} else if (HTML_LOWER_CASE.test(name)) {\n\t\t\t\t\tname = name.toLowerCase();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// write this attribute to the buffer\n\t\tif (v != null && v !== false) {\n\t\t\tif (v === true || v === EMPTY_STR) {\n\t\t\t\ts = s + ' ' + name;\n\t\t\t} else {\n\t\t\t\ts =\n\t\t\t\t\ts +\n\t\t\t\t\t' ' +\n\t\t\t\t\tname +\n\t\t\t\t\t'=\"' +\n\t\t\t\t\t(typeof v == 'string' ? encodeEntities(v) : v + EMPTY_STR) +\n\t\t\t\t\t'\"';\n\t\t\t}\n\t\t}\n\t}\n\n\tif (UNSAFE_NAME.test(type)) {\n\t\t// this seems to performs a lot better than throwing\n\t\t// return '<!-- -->';\n\t\tthrow new Error(`${type} is not a valid HTML tag name in ${s}>`);\n\t}\n\n\tif (html) {\n\t\t// dangerouslySetInnerHTML defined this node's contents\n\t} else if (typeof children === 'string') {\n\t\t// single text child\n\t\thtml = encodeEntities(children);\n\t} else if (children != null && children !== false && children !== true) {\n\t\t// recurse into this element VNode's children\n\t\tlet childSvgMode =\n\t\t\ttype === 'svg' || (type !== 'foreignObject' && isSvgMode);\n\t\thtml = _renderToString(\n\t\t\tchildren,\n\t\t\tcontext,\n\t\t\tchildSvgMode,\n\t\t\tselectValue,\n\t\t\tvnode,\n\t\t\tasyncMode,\n\t\t\trenderer\n\t\t);\n\t}\n\n\tif (afterDiff) afterDiff(vnode);\n\n\tif (ummountHook) ummountHook(vnode);\n\n\t// Emit self-closing tag for empty void elements:\n\tif (!html && SELF_CLOSING.has(type)) {\n\t\treturn s + '/>';\n\t}\n\n\tconst endTag = '</' + type + '>';\n\tconst startTag = s + '>';\n\n\tif (isArray(html)) return [startTag, ...html, endTag];\n\telse if (typeof html != 'string') return [startTag, html, endTag];\n\treturn startTag + html + endTag;\n}\n\nconst SELF_CLOSING = new Set([\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'command',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'keygen',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr'\n]);\n\nexport default renderToString;\nexport const render = renderToString;\nexport const renderToStaticMarkup = renderToString;\n\nfunction isSignal(x) {\n\treturn (\n\t\tx !== null &&\n\t\ttypeof x === 'object' &&\n\t\ttypeof x.peek === 'function' &&\n\t\t'value' in x\n\t);\n}\n","export function deprecate(fn) {\n return fn\n}\n\nexport function equal() {}\n\nexport function ok() {}\n\nexport function unreachable() {}\n","/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record<string, Info>} */\n const property = {}\n /** @type {Record<string, string>} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record<string, Info>} */\n const properties = {}\n /** @type {Record<string, string>} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n","import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n","/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n","import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n },\n space: 'xlink',\n transform(_, property) {\n return 'xlink:' + property.slice(5).toLowerCase()\n }\n})\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n properties: {xmlnsXLink: null, xmlns: null},\n space: 'xmlns',\n transform: caseInsensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n space: 'xml',\n transform(_, property) {\n return 'xml:' + property.slice(3).toLowerCase()\n }\n})\n","/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n * Schema;\n * either the `html` or `svg` export.\n * @param {string} value\n * An attribute-like or property-like name;\n * it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n * Info.\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let property = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Kebab.\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Camel.\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n","/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n */\n\n/**\n * @template {string} SimpleSelector\n * Selector type.\n * @template {string} DefaultTagName\n * Default tag name.\n * @typedef {(\n * SimpleSelector extends ''\n * ? DefaultTagName\n * : SimpleSelector extends `${infer TagName}.${infer Rest}`\n * ? ExtractTagName<TagName, DefaultTagName>\n * : SimpleSelector extends `${infer TagName}#${infer Rest}`\n * ? ExtractTagName<TagName, DefaultTagName>\n * : SimpleSelector extends string\n * ? SimpleSelector\n * : DefaultTagName\n * )} ExtractTagName\n * Extract tag name from a simple selector.\n */\n\nconst search = /[#.]/g\n\n/**\n * Create a hast element from a simple CSS selector.\n *\n * @template {string} Selector\n * Type of selector.\n * @template {string} [DefaultTagName='div']\n * Type of default tag name (default: `'div'`).\n * @param {Selector | null | undefined} [selector]\n * Simple CSS selector (optional).\n *\n * Can contain a tag name (`foo`), classes (`.bar`), and an ID (`#baz`).\n * Multiple classes are allowed.\n * Uses the last ID if multiple IDs are found.\n * @param {DefaultTagName | null | undefined} [defaultTagName='div']\n * Tag name to use if `selector` does not specify one (default: `'div'`).\n * @returns {Element & {tagName: ExtractTagName<Selector, DefaultTagName>}}\n * Built element.\n */\nexport function parseSelector(selector, defaultTagName) {\n const value = selector || ''\n /** @type {Properties} */\n const props = {}\n let start = 0\n /** @type {string | undefined} */\n let previous\n /** @type {string | undefined} */\n let tagName\n\n while (start < value.length) {\n search.lastIndex = start\n const match = search.exec(value)\n const subvalue = value.slice(start, match ? match.index : value.length)\n\n if (subvalue) {\n if (!previous) {\n tagName = subvalue\n } else if (previous === '#') {\n props.id = subvalue\n } else if (Array.isArray(props.className)) {\n props.className.push(subvalue)\n } else {\n props.className = [subvalue]\n }\n\n start += subvalue.length\n }\n\n if (match) {\n previous = match[0]\n start++\n }\n }\n\n return {\n type: 'element',\n // @ts-expect-error: tag name is parsed.\n tagName: tagName || defaultTagName || 'div',\n properties: props,\n children: []\n }\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","/**\n * @import {Element, Nodes, RootContent, Root} from 'hast'\n * @import {Info, Schema} from 'property-information'\n */\n\n/**\n * @typedef {Array<Nodes | PrimitiveChild>} ArrayChildNested\n * List of children (deep).\n */\n\n/**\n * @typedef {Array<ArrayChildNested | Nodes | PrimitiveChild>} ArrayChild\n * List of children.\n */\n\n/**\n * @typedef {Array<number | string>} ArrayValue\n * List of property values for space- or comma separated values (such as `className`).\n */\n\n/**\n * @typedef {ArrayChild | Nodes | PrimitiveChild} Child\n * Acceptable child value.\n */\n\n/**\n * @typedef {number | string | null | undefined} PrimitiveChild\n * Primitive children, either ignored (nullish), or turned into text nodes.\n */\n\n/**\n * @typedef {boolean | number | string | null | undefined} PrimitiveValue\n * Primitive property value.\n */\n\n/**\n * @typedef {Record<string, PropertyValue | Style>} Properties\n * Acceptable value for element properties.\n */\n\n/**\n * @typedef {ArrayValue | PrimitiveValue} PropertyValue\n * Primitive value or list value.\n */\n\n/**\n * @typedef {Element | Root} Result\n * Result from a `h` (or `s`) call.\n */\n\n/**\n * @typedef {number | string} StyleValue\n * Value for a CSS style field.\n */\n\n/**\n * @typedef {Record<string, StyleValue>} Style\n * Supported value of a `style` prop.\n */\n\nimport {parse as parseCommas} from 'comma-separated-tokens'\nimport {parseSelector} from 'hast-util-parse-selector'\nimport {find, normalize} from 'property-information'\nimport {parse as parseSpaces} from 'space-separated-tokens'\n\n/**\n * @param {Schema} schema\n * Schema to use.\n * @param {string} defaultTagName\n * Default tag name.\n * @param {ReadonlyArray<string> | undefined} [caseSensitive]\n * Case-sensitive tag names (default: `undefined`).\n * @returns\n * `h`.\n */\nexport function createH(schema, defaultTagName, caseSensitive) {\n const adjust = caseSensitive ? createAdjustMap(caseSensitive) : undefined\n\n /**\n * Hyperscript compatible DSL for creating virtual hast trees.\n *\n * @overload\n * @param {null | undefined} [selector]\n * @param {...Child} children\n * @returns {Root}\n *\n * @overload\n * @param {string} selector\n * @param {Properties} properties\n * @param {...Child} children\n * @returns {Element}\n *\n * @overload\n * @param {string} selector\n * @param {...Child} children\n * @returns {Element}\n *\n * @param {string | null | undefined} [selector]\n * Selector.\n * @param {Child | Properties | null | undefined} [properties]\n * Properties (or first child) (default: `undefined`).\n * @param {...Child} children\n * Children.\n * @returns {Result}\n * Result.\n */\n function h(selector, properties, ...children) {\n /** @type {Result} */\n let node\n\n if (selector === null || selector === undefined) {\n node = {type: 'root', children: []}\n // Properties are not supported for roots.\n const child = /** @type {Child} */ (properties)\n children.unshift(child)\n } else {\n node = parseSelector(selector, defaultTagName)\n // Normalize the name.\n const lower = node.tagName.toLowerCase()\n const adjusted = adjust ? adjust.get(lower) : undefined\n node.tagName = adjusted || lower\n\n // Handle properties.\n if (isChild(properties)) {\n children.unshift(properties)\n } else {\n for (const [key, value] of Object.entries(properties)) {\n addProperty(schema, node.properties, key, value)\n }\n }\n }\n\n // Handle children.\n for (const child of children) {\n addChild(node.children, child)\n }\n\n if (node.type === 'element' && node.tagName === 'template') {\n node.content = {type: 'root', children: node.children}\n node.children = []\n }\n\n return node\n }\n\n return h\n}\n\n/**\n * Check if something is properties or a child.\n *\n * @param {Child | Properties} value\n * Value to check.\n * @returns {value is Child}\n * Whether `value` is definitely a child.\n */\nfunction isChild(value) {\n // Never properties if not an object.\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n return true\n }\n\n // Never node without `type`; that’s the main discriminator.\n if (typeof value.type !== 'string') return false\n\n // Slower check: never property value if object or array with\n // non-number/strings.\n const record = /** @type {Record<string, unknown>} */ (value)\n const keys = Object.keys(value)\n\n for (const key of keys) {\n const value = record[key]\n\n if (value && typeof value === 'object') {\n if (!Array.isArray(value)) return true\n\n const list = /** @type {ReadonlyArray<unknown>} */ (value)\n\n for (const item of list) {\n if (typeof item !== 'number' && typeof item !== 'string') {\n return true\n }\n }\n }\n }\n\n // Also see empty `children` as a node.\n if ('children' in value && Array.isArray(value.children)) {\n return true\n }\n\n // Default to properties, someone can always pass an empty object,\n // put `data: {}` in a node,\n // or wrap it in an array.\n return false\n}\n\n/**\n * @param {Schema} schema\n * Schema.\n * @param {Properties} properties\n * Properties object.\n * @param {string} key\n * Property name.\n * @param {PropertyValue | Style} value\n * Property value.\n * @returns {undefined}\n * Nothing.\n */\nfunction addProperty(schema, properties, key, value) {\n const info = find(schema, key)\n /** @type {PropertyValue} */\n let result\n\n // Ignore nullish and NaN values.\n if (value === null || value === undefined) return\n\n if (typeof value === 'number') {\n // Ignore NaN.\n if (Number.isNaN(value)) return\n\n result = value\n }\n // Booleans.\n else if (typeof value === 'boolean') {\n result = value\n }\n // Handle list values.\n else if (typeof value === 'string') {\n if (info.spaceSeparated) {\n result = parseSpaces(value)\n } else if (info.commaSeparated) {\n result = parseCommas(value)\n } else if (info.commaOrSpaceSeparated) {\n result = parseSpaces(parseCommas(value).join(' '))\n } else {\n result = parsePrimitive(info, info.property, value)\n }\n } else if (Array.isArray(value)) {\n result = [...value]\n } else {\n result = info.property === 'style' ? style(value) : String(value)\n }\n\n if (Array.isArray(result)) {\n /** @type {Array<number | string>} */\n const finalResult = []\n\n for (const item of result) {\n // Assume no booleans in array.\n finalResult.push(\n /** @type {number | string} */ (\n parsePrimitive(info, info.property, item)\n )\n )\n }\n\n result = finalResult\n }\n\n // Class names (which can be added both on the `selector` and here).\n if (info.property === 'className' && Array.isArray(properties.className)) {\n // Assume no booleans in `className`.\n result = properties.className.concat(\n /** @type {Array<number | string> | number | string} */ (result)\n )\n }\n\n properties[info.property] = result\n}\n\n/**\n * @param {Array<RootContent>} nodes\n * Children.\n * @param {Child} value\n * Child.\n * @returns {undefined}\n * Nothing.\n */\nfunction addChild(nodes, value) {\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'number' || typeof value === 'string') {\n nodes.push({type: 'text', value: String(value)})\n } else if (Array.isArray(value)) {\n for (const child of value) {\n addChild(nodes, child)\n }\n } else if (typeof value === 'object' && 'type' in value) {\n if (value.type === 'root') {\n addChild(nodes, value.children)\n } else {\n nodes.push(value)\n }\n } else {\n throw new Error('Expected node, nodes, or string, got `' + value + '`')\n }\n}\n\n/**\n * Parse a single primitives.\n *\n * @param {Info} info\n * Property information.\n * @param {string} name\n * Property name.\n * @param {PrimitiveValue} value\n * Property value.\n * @returns {PrimitiveValue}\n * Property value.\n */\nfunction parsePrimitive(info, name, value) {\n if (typeof value === 'string') {\n if (info.number && value && !Number.isNaN(Number(value))) {\n return Number(value)\n }\n\n if (\n (info.boolean || info.overloadedBoolean) &&\n (value === '' || normalize(value) === normalize(name))\n ) {\n return true\n }\n }\n\n return value\n}\n\n/**\n * Serialize a `style` object as a string.\n *\n * @param {Style} styles\n * Style object.\n * @returns {string}\n * CSS string.\n */\nfunction style(styles) {\n /** @type {Array<string>} */\n const result = []\n\n for (const [key, value] of Object.entries(styles)) {\n result.push([key, value].join(': '))\n }\n\n return result.join('; ')\n}\n\n/**\n * Create a map to adjust casing.\n *\n * @param {ReadonlyArray<string>} values\n * List of properly cased keys.\n * @returns {Map<string, string>}\n * Map of lowercase keys to uppercase keys.\n */\nfunction createAdjustMap(values) {\n /** @type {Map<string, string>} */\n const result = new Map()\n\n for (const value of values) {\n result.set(value.toLowerCase(), value)\n }\n\n return result\n}\n","/**\n * List of case-sensitive SVG tag names.\n *\n * @type {ReadonlyArray<string>}\n */\nexport const svgCaseSensitiveTagNames = [\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'solidColor',\n 'textArea',\n 'textPath'\n]\n","// Register the JSX namespace on `h`.\n/**\n * @typedef {import('./jsx-classic.js').Element} h.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} h.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} h.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} h.JSX.IntrinsicElements\n */\n\n// Register the JSX namespace on `s`.\n/**\n * @typedef {import('./jsx-classic.js').Element} s.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} s.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} s.JSX.IntrinsicElements\n */\n\nimport {html, svg} from 'property-information'\nimport {createH} from './create-h.js'\nimport {svgCaseSensitiveTagNames} from './svg-case-sensitive-tag-names.js'\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nexport const h = createH(html, 'div')\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nexport const s = createH(svg, 'g', svgCaseSensitiveTagNames)\n","/**\n * @import {VFile, Value} from 'vfile'\n * @import {Location} from 'vfile-location'\n */\n\n/**\n * Create an index of the given document to translate between line/column and\n * offset based positional info.\n *\n * Also implemented in Rust in [`wooorm/markdown-rs`][markdown-rs].\n *\n * [markdown-rs]: https://github.com/wooorm/markdown-rs/blob/main/src/util/location.rs\n *\n * @param {VFile | Value} file\n * File to index.\n * @returns {Location}\n * Accessors for index.\n */\nexport function location(file) {\n const value = String(file)\n /**\n * List, where each index is a line number (0-based), and each value is the\n * byte index *after* where the line ends.\n *\n * @type {Array<number>}\n */\n const indices = []\n\n return {toOffset, toPoint}\n\n /** @type {Location['toPoint']} */\n function toPoint(offset) {\n if (typeof offset === 'number' && offset > -1 && offset <= value.length) {\n let index = 0\n\n while (true) {\n let end = indices[index]\n\n if (end === undefined) {\n const eol = next(value, indices[index - 1])\n end = eol === -1 ? value.length + 1 : eol + 1\n indices[index] = end\n }\n\n if (end > offset) {\n return {\n line: index + 1,\n column: offset - (index > 0 ? indices[index - 1] : 0) + 1,\n offset\n }\n }\n\n index++\n }\n }\n }\n\n /** @type {Location['toOffset']} */\n function toOffset(point) {\n if (\n point &&\n typeof point.line === 'number' &&\n typeof point.column === 'number' &&\n !Number.isNaN(point.line) &&\n !Number.isNaN(point.column)\n ) {\n while (indices.length < point.line) {\n const from = indices[indices.length - 1]\n const eol = next(value, from)\n const end = eol === -1 ? value.length + 1 : eol + 1\n if (from === end) break\n indices.push(end)\n }\n\n const offset =\n (point.line > 1 ? indices[point.line - 2] : 0) + point.column - 1\n // The given `column` could not exist on this line.\n if (offset < indices[point.line - 1]) return offset\n }\n }\n}\n\n/**\n * @param {string} value\n * @param {number} from\n */\nfunction next(value, from) {\n const cr = value.indexOf('\\r', from)\n const lf = value.indexOf('\\n', from)\n if (lf === -1) return cr\n if (cr === -1 || cr + 1 === lf) return lf\n return cr < lf ? cr : lf\n}\n","/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nexport const webNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg',\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace',\n xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n","/**\n * @import {ElementData, Element, Nodes, RootContent, Root} from 'hast'\n * @import {DefaultTreeAdapterMap, Token} from 'parse5'\n * @import {Schema} from 'property-information'\n * @import {Point, Position} from 'unist'\n * @import {VFile} from 'vfile'\n * @import {Options} from 'hast-util-from-parse5'\n */\n\n/**\n * @typedef State\n * Info passed around about the current state.\n * @property {VFile | undefined} file\n * Corresponding file.\n * @property {boolean} location\n * Whether location info was found.\n * @property {Schema} schema\n * Current schema.\n * @property {boolean | undefined} verbose\n * Add extra positional info.\n */\n\nimport {ok as assert} from 'devlop'\nimport {h, s} from 'hastscript'\nimport {find, html, svg} from 'property-information'\nimport {location} from 'vfile-location'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n/** @type {unknown} */\n// type-coverage:ignore-next-line\nconst proto = Object.prototype\n\n/**\n * Transform a `parse5` AST to hast.\n *\n * @param {DefaultTreeAdapterMap['node']} tree\n * `parse5` tree to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {Nodes}\n * hast tree.\n */\nexport function fromParse5(tree, options) {\n const settings = options || {}\n\n return one(\n {\n file: settings.file || undefined,\n location: false,\n schema: settings.space === 'svg' ? svg : html,\n verbose: settings.verbose || false\n },\n tree\n )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['node']} node\n * p5 node.\n * @returns {Nodes}\n * hast node.\n */\nfunction one(state, node) {\n /** @type {Nodes} */\n let result\n\n switch (node.nodeName) {\n case '#comment': {\n const reference = /** @type {DefaultTreeAdapterMap['commentNode']} */ (\n node\n )\n result = {type: 'comment', value: reference.data}\n patch(state, reference, result)\n return result\n }\n\n case '#document':\n case '#document-fragment': {\n const reference =\n /** @type {DefaultTreeAdapterMap['document'] | DefaultTreeAdapterMap['documentFragment']} */ (\n node\n )\n const quirksMode =\n 'mode' in reference\n ? reference.mode === 'quirks' || reference.mode === 'limited-quirks'\n : false\n\n result = {\n type: 'root',\n children: all(state, node.childNodes),\n data: {quirksMode}\n }\n\n if (state.file && state.location) {\n const document = String(state.file)\n const loc = location(document)\n const start = loc.toPoint(0)\n const end = loc.toPoint(document.length)\n // Always defined as we give valid input.\n assert(start, 'expected `start`')\n assert(end, 'expected `end`')\n result.position = {start, end}\n }\n\n return result\n }\n\n case '#documentType': {\n const reference = /** @type {DefaultTreeAdapterMap['documentType']} */ (\n node\n )\n result = {type: 'doctype'}\n patch(state, reference, result)\n return result\n }\n\n case '#text': {\n const reference = /** @type {DefaultTreeAdapterMap['textNode']} */ (node)\n result = {type: 'text', value: reference.value}\n patch(state, reference, result)\n return result\n }\n\n // Element.\n default: {\n const reference = /** @type {DefaultTreeAdapterMap['element']} */ (node)\n result = element(state, reference)\n return result\n }\n }\n}\n\n/**\n * Transform children.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {Array<DefaultTreeAdapterMap['node']>} nodes\n * Nodes.\n * @returns {Array<RootContent>}\n * hast nodes.\n */\nfunction all(state, nodes) {\n let index = -1\n /** @type {Array<RootContent>} */\n const results = []\n\n while (++index < nodes.length) {\n // Assume no roots in `nodes`.\n const result = /** @type {RootContent} */ (one(state, nodes[index]))\n results.push(result)\n }\n\n return results\n}\n\n/**\n * Transform an element.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['element']} node\n * `parse5` node to transform.\n * @returns {Element}\n * hast node.\n */\nfunction element(state, node) {\n const schema = state.schema\n\n state.schema = node.namespaceURI === webNamespaces.svg ? svg : html\n\n // Props.\n let index = -1\n /** @type {Record<string, string>} */\n const properties = {}\n\n while (++index < node.attrs.length) {\n const attribute = node.attrs[index]\n const name =\n (attribute.prefix ? attribute.prefix + ':' : '') + attribute.name\n if (!own.call(proto, name)) {\n properties[name] = attribute.value\n }\n }\n\n // Build.\n const x = state.schema.space === 'svg' ? s : h\n const result = x(node.tagName, properties, all(state, node.childNodes))\n patch(state, node, result)\n\n // Switch content.\n if (result.tagName === 'template') {\n const reference = /** @type {DefaultTreeAdapterMap['template']} */ (node)\n const pos = reference.sourceCodeLocation\n const startTag = pos && pos.startTag && position(pos.startTag)\n const endTag = pos && pos.endTag && position(pos.endTag)\n\n // Root in, root out.\n const content = /** @type {Root} */ (one(state, reference.content))\n\n if (startTag && endTag && state.file) {\n content.position = {start: startTag.end, end: endTag.start}\n }\n\n result.content = content\n }\n\n state.schema = schema\n\n return result\n}\n\n/**\n * Patch positional info from `from` onto `to`.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['node']} from\n * p5 node.\n * @param {Nodes} to\n * hast node.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(state, from, to) {\n if ('sourceCodeLocation' in from && from.sourceCodeLocation && state.file) {\n const position = createLocation(state, to, from.sourceCodeLocation)\n\n if (position) {\n state.location = true\n to.position = position\n }\n }\n}\n\n/**\n * Create clean positional information.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {Nodes} node\n * hast node.\n * @param {Token.ElementLocation} location\n * p5 location info.\n * @returns {Position | undefined}\n * Position, or nothing.\n */\nfunction createLocation(state, node, location) {\n const result = position(location)\n\n if (node.type === 'element') {\n const tail = node.children[node.children.length - 1]\n\n // Bug for unclosed with children.\n // See: <https://github.com/inikulin/parse5/issues/109>.\n if (\n result &&\n !location.endTag &&\n tail &&\n tail.position &&\n tail.position.end\n ) {\n result.end = Object.assign({}, tail.position.end)\n }\n\n if (state.verbose) {\n /** @type {Record<string, Position | undefined>} */\n const properties = {}\n /** @type {string} */\n let key\n\n if (location.attrs) {\n for (key in location.attrs) {\n if (own.call(location.attrs, key)) {\n properties[find(state.schema, key).property] = position(\n location.attrs[key]\n )\n }\n }\n }\n\n assert(location.startTag, 'a start tag should exist')\n const opening = position(location.startTag)\n const closing = location.endTag ? position(location.endTag) : undefined\n /** @type {ElementData['position']} */\n const data = {opening}\n if (closing) data.closing = closing\n data.properties = properties\n\n node.data = {position: data}\n }\n }\n\n return result\n}\n\n/**\n * Turn a p5 location into a position.\n *\n * @param {Token.Location} loc\n * Location.\n * @returns {Position | undefined}\n * Position or nothing.\n */\nfunction position(loc) {\n const start = point({\n line: loc.startLine,\n column: loc.startCol,\n offset: loc.startOffset\n })\n const end = point({\n line: loc.endLine,\n column: loc.endCol,\n offset: loc.endOffset\n })\n\n // @ts-expect-error: we do use `undefined` for points if one or the other\n // exists.\n return start || end ? {start, end} : undefined\n}\n\n/**\n * Filter out invalid points.\n *\n * @param {Point} point\n * Point with potentially `undefined` values.\n * @returns {Point | undefined}\n * Point or nothing.\n */\nfunction point(point) {\n return point.line && point.column ? point : undefined\n}\n","const UNDEFINED_CODE_POINTS = new Set([\n 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n 1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n})(CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n DASH_DASH: '--',\n CDATA_START: '[CDATA[',\n DOCTYPE: 'doctype',\n SCRIPT: 'script',\n PUBLIC: 'public',\n SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n","export var ERR;\n(function (ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR || (ERR = {}));\n","import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n constructor(handler) {\n this.handler = handler;\n this.html = '';\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code, cpOffset) {\n const { line, col, offset } = this;\n const startCol = col + cpOffset;\n const startOffset = offset + cpOffset;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol,\n endCol: startCol,\n startOffset,\n endOffset: startOffset,\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code, 0));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n }\n else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for (let i = 0; i < pattern.length; i++) {\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.isEol = true;\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (cp === $.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if (isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange = this.handler.onParseError === null ||\n (cp > 0x1f && cp < 0x7f) ||\n cp === $.LINE_FEED ||\n cp === $.CARRIAGE_RETURN ||\n (cp > 0x9f && cp < 64976);\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n }\n else if (isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while (this.pos < this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n}\n","export var TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n}\n","// Generated using scripts/write-decode-map.ts\n\nexport const htmlDecodeTree: Uint16Array = /* #__PURE__ */ new Uint16Array(\n // prettier-ignore\n /* #__PURE__ */ \"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)),\n);\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\n\nconst decodeMap = new Map([\n [0, 65_533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint: (...codePoints: number[]) => string =\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n String.fromCodePoint ??\n function (codePoint: number): string {\n let output = \"\";\n\n if (codePoint > 0xff_ff) {\n codePoint -= 0x1_00_00;\n output += String.fromCharCode(\n ((codePoint >>> 10) & 0x3_ff) | 0xd8_00,\n );\n codePoint = 0xdc_00 | (codePoint & 0x3_ff);\n }\n\n output += String.fromCharCode(codePoint);\n return output;\n };\n\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint: number): number {\n if (\n (codePoint >= 0xd8_00 && codePoint <= 0xdf_ff) ||\n codePoint > 0x10_ff_ff\n ) {\n return 0xff_fd;\n }\n\n return decodeMap.get(codePoint) ?? codePoint;\n}\n\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint: number): string {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\n\nconst enum CharCodes {\n NUM = 35, // \"#\"\n SEMI = 59, // \";\"\n EQUALS = 61, // \"=\"\n ZERO = 48, // \"0\"\n NINE = 57, // \"9\"\n LOWER_A = 97, // \"a\"\n LOWER_F = 102, // \"f\"\n LOWER_X = 120, // \"x\"\n LOWER_Z = 122, // \"z\"\n UPPER_A = 65, // \"A\"\n UPPER_F = 70, // \"F\"\n UPPER_Z = 90, // \"Z\"\n}\n\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b10_0000;\n\nexport enum BinTrieFlags {\n VALUE_LENGTH = 0b1100_0000_0000_0000,\n BRANCH_LENGTH = 0b0011_1111_1000_0000,\n JUMP_TABLE = 0b0000_0000_0111_1111,\n}\n\nfunction isNumber(code: number): boolean {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\n\nfunction isHexadecimalCharacter(code: number): boolean {\n return (\n (code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F)\n );\n}\n\nfunction isAsciiAlphaNumeric(code: number): boolean {\n return (\n (code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code)\n );\n}\n\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code: number): boolean {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\n\nconst enum EntityDecoderState {\n EntityStart,\n NumericStart,\n NumericDecimal,\n NumericHex,\n NamedEntity,\n}\n\nexport enum DecodingMode {\n /** Entities in text nodes that can end with any character. */\n Legacy = 0,\n /** Only allow entities terminated with a semicolon. */\n Strict = 1,\n /** Entities in attributes have limitations on ending characters. */\n Attribute = 2,\n}\n\n/**\n * Producers for character reference errors as defined in the HTML spec.\n */\nexport interface EntityErrorProducer {\n missingSemicolonAfterCharacterReference(): void;\n absenceOfDigitsInNumericCharacterReference(\n consumedCharacters: number,\n ): void;\n validateNumericCharacterReference(code: number): void;\n}\n\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n private readonly decodeTree: Uint16Array,\n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n private readonly emitCodePoint: (cp: number, consumed: number) => void,\n /** An object that is used to produce errors. */\n private readonly errors?: EntityErrorProducer | undefined,\n ) {}\n\n /** The current state of the decoder. */\n private state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n private consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n private result = 0;\n\n /** The current index in the decode tree. */\n private treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n private excess = 1;\n /** The mode in which the decoder is operating. */\n private decodeMode = DecodingMode.Strict;\n\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode: DecodingMode): void {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input: string, offset: number): number {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n private stateNumericStart(input: string, offset: number): number {\n if (offset >= input.length) {\n return -1;\n }\n\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n\n private addToNumericResult(\n input: string,\n start: number,\n end: number,\n base: number,\n ): void {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n Number.parseInt(input.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n private stateNumericHex(input: string, offset: number): number {\n const startIndex = offset;\n\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n } else {\n this.addToNumericResult(input, startIndex, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n\n this.addToNumericResult(input, startIndex, offset, 16);\n\n return -1;\n }\n\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n private stateNumericDecimal(input: string, offset: number): number {\n const startIndex = offset;\n\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n } else {\n this.addToNumericResult(input, startIndex, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n\n this.addToNumericResult(input, startIndex, offset, 10);\n\n return -1;\n }\n\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n private emitNumericEntity(lastCp: number, expectedLength: number): number {\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n this.errors?.absenceOfDigitsInNumericCharacterReference(\n this.consumed,\n );\n return 0;\n }\n\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n } else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n\n this.errors.validateNumericCharacterReference(this.result);\n }\n\n return this.consumed;\n }\n\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n private stateNamedEntity(input: string, offset: number): number {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n\n for (; offset < input.length; offset++, this.excess++) {\n const char = input.charCodeAt(offset);\n\n this.treeIndex = determineBranch(\n decodeTree,\n current,\n this.treeIndex + Math.max(1, valueLength),\n char,\n );\n\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(\n this.treeIndex,\n valueLength,\n this.consumed + this.excess,\n );\n }\n\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n\n return -1;\n }\n\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n private emitNotTerminatedNamedEntity(): number {\n const { result, decodeTree } = this;\n\n const valueLength =\n (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n\n this.emitNamedEntityData(result, valueLength, this.consumed);\n this.errors?.missingSemicolonAfterCharacterReference();\n\n return this.consumed;\n }\n\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n private emitNamedEntityData(\n result: number,\n valueLength: number,\n consumed: number,\n ): number {\n const { decodeTree } = this;\n\n this.emitCodePoint(\n valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1],\n consumed,\n );\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n\n return consumed;\n }\n\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end(): number {\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n this.errors?.absenceOfDigitsInNumericCharacterReference(\n this.consumed,\n );\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree: Uint16Array) {\n let returnValue = \"\";\n const decoder = new EntityDecoder(\n decodeTree,\n (data) => (returnValue += fromCodePoint(data)),\n );\n\n return function decodeWithTrie(\n input: string,\n decodeMode: DecodingMode,\n ): string {\n let lastIndex = 0;\n let offset = 0;\n\n while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n returnValue += input.slice(lastIndex, offset);\n\n decoder.startEntity(decodeMode);\n\n const length = decoder.write(\n input,\n // Skip the \"&\"\n offset + 1,\n );\n\n if (length < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n\n lastIndex = offset + length;\n // If `length` is 0, skip the current `&` and continue.\n offset = length === 0 ? lastIndex + 1 : lastIndex;\n }\n\n const result = returnValue + input.slice(lastIndex);\n\n // Make sure we don't keep a reference to the final string.\n returnValue = \"\";\n\n return result;\n };\n}\n\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(\n decodeTree: Uint16Array,\n current: number,\n nodeIndex: number,\n char: number,\n): number {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n }\n\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIndex + value] - 1;\n }\n\n // Case 3: Multiple branches encoded in dictionary\n\n // Binary search for the character.\n let lo = nodeIndex;\n let hi = lo + branchCount - 1;\n\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midValue = decodeTree[mid];\n\n if (midValue < char) {\n lo = mid + 1;\n } else if (midValue > char) {\n hi = mid - 1;\n } else {\n return decodeTree[mid + branchCount];\n }\n }\n\n return -1;\n}\n\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(\n htmlString: string,\n mode: DecodingMode = DecodingMode.Legacy,\n): string {\n return htmlDecoder(htmlString, mode);\n}\n\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute: string): string {\n return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString: string): string {\n return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString: string): string {\n return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\n\nexport {\n decodeCodePoint,\n replaceCodePoint,\n fromCodePoint,\n} from \"./decode-codepoint.js\";\n","/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SEARCH\"] = \"search\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SEARCH\"] = 94] = \"SEARCH\";\n TAG_ID[TAG_ID[\"SECTION\"] = 95] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 96] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 97] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 98] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 99] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 100] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 101] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 102] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 103] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 104] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 105] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 106] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 107] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 108] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 109] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 110] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 111] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 112] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 113] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 114] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 115] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 116] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 117] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 118] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 119] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 120] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 121] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 122] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 123] = \"XMP\";\n})(TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [TAG_NAMES.A, TAG_ID.A],\n [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n [TAG_NAMES.APPLET, TAG_ID.APPLET],\n [TAG_NAMES.AREA, TAG_ID.AREA],\n [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n [TAG_NAMES.B, TAG_ID.B],\n [TAG_NAMES.BASE, TAG_ID.BASE],\n [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n [TAG_NAMES.BIG, TAG_ID.BIG],\n [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n [TAG_NAMES.BODY, TAG_ID.BODY],\n [TAG_NAMES.BR, TAG_ID.BR],\n [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n [TAG_NAMES.CENTER, TAG_ID.CENTER],\n [TAG_NAMES.CODE, TAG_ID.CODE],\n [TAG_NAMES.COL, TAG_ID.COL],\n [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n [TAG_NAMES.DD, TAG_ID.DD],\n [TAG_NAMES.DESC, TAG_ID.DESC],\n [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n [TAG_NAMES.DIR, TAG_ID.DIR],\n [TAG_NAMES.DIV, TAG_ID.DIV],\n [TAG_NAMES.DL, TAG_ID.DL],\n [TAG_NAMES.DT, TAG_ID.DT],\n [TAG_NAMES.EM, TAG_ID.EM],\n [TAG_NAMES.EMBED, TAG_ID.EMBED],\n [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n [TAG_NAMES.FONT, TAG_ID.FONT],\n [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n [TAG_NAMES.FORM, TAG_ID.FORM],\n [TAG_NAMES.FRAME, TAG_ID.FRAME],\n [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n [TAG_NAMES.H1, TAG_ID.H1],\n [TAG_NAMES.H2, TAG_ID.H2],\n [TAG_NAMES.H3, TAG_ID.H3],\n [TAG_NAMES.H4, TAG_ID.H4],\n [TAG_NAMES.H5, TAG_ID.H5],\n [TAG_NAMES.H6, TAG_ID.H6],\n [TAG_NAMES.HEAD, TAG_ID.HEAD],\n [TAG_NAMES.HEADER, TAG_ID.HEADER],\n [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n [TAG_NAMES.HR, TAG_ID.HR],\n [TAG_NAMES.HTML, TAG_ID.HTML],\n [TAG_NAMES.I, TAG_ID.I],\n [TAG_NAMES.IMG, TAG_ID.IMG],\n [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n [TAG_NAMES.INPUT, TAG_ID.INPUT],\n [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n [TAG_NAMES.LABEL, TAG_ID.LABEL],\n [TAG_NAMES.LI, TAG_ID.LI],\n [TAG_NAMES.LINK, TAG_ID.LINK],\n [TAG_NAMES.LISTING, TAG_ID.LISTING],\n [TAG_NAMES.MAIN, TAG_ID.MAIN],\n [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n [TAG_NAMES.MATH, TAG_ID.MATH],\n [TAG_NAMES.MENU, TAG_ID.MENU],\n [TAG_NAMES.META, TAG_ID.META],\n [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n [TAG_NAMES.MI, TAG_ID.MI],\n [TAG_NAMES.MO, TAG_ID.MO],\n [TAG_NAMES.MN, TAG_ID.MN],\n [TAG_NAMES.MS, TAG_ID.MS],\n [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n [TAG_NAMES.NAV, TAG_ID.NAV],\n [TAG_NAMES.NOBR, TAG_ID.NOBR],\n [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n [TAG_NAMES.OL, TAG_ID.OL],\n [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n [TAG_NAMES.OPTION, TAG_ID.OPTION],\n [TAG_NAMES.P, TAG_ID.P],\n [TAG_NAMES.PARAM, TAG_ID.PARAM],\n [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n [TAG_NAMES.PRE, TAG_ID.PRE],\n [TAG_NAMES.RB, TAG_ID.RB],\n [TAG_NAMES.RP, TAG_ID.RP],\n [TAG_NAMES.RT, TAG_ID.RT],\n [TAG_NAMES.RTC, TAG_ID.RTC],\n [TAG_NAMES.RUBY, TAG_ID.RUBY],\n [TAG_NAMES.S, TAG_ID.S],\n [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n [TAG_NAMES.SEARCH, TAG_ID.SEARCH],\n [TAG_NAMES.SECTION, TAG_ID.SECTION],\n [TAG_NAMES.SELECT, TAG_ID.SELECT],\n [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n [TAG_NAMES.SMALL, TAG_ID.SMALL],\n [TAG_NAMES.SPAN, TAG_ID.SPAN],\n [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n [TAG_NAMES.STRONG, TAG_ID.STRONG],\n [TAG_NAMES.STYLE, TAG_ID.STYLE],\n [TAG_NAMES.SUB, TAG_ID.SUB],\n [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n [TAG_NAMES.SUP, TAG_ID.SUP],\n [TAG_NAMES.TABLE, TAG_ID.TABLE],\n [TAG_NAMES.TBODY, TAG_ID.TBODY],\n [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n [TAG_NAMES.TD, TAG_ID.TD],\n [TAG_NAMES.TH, TAG_ID.TH],\n [TAG_NAMES.THEAD, TAG_ID.THEAD],\n [TAG_NAMES.TITLE, TAG_ID.TITLE],\n [TAG_NAMES.TR, TAG_ID.TR],\n [TAG_NAMES.TRACK, TAG_ID.TRACK],\n [TAG_NAMES.TT, TAG_ID.TT],\n [TAG_NAMES.U, TAG_ID.U],\n [TAG_NAMES.UL, TAG_ID.UL],\n [TAG_NAMES.SVG, TAG_ID.SVG],\n [TAG_NAMES.VAR, TAG_ID.VAR],\n [TAG_NAMES.WBR, TAG_ID.WBR],\n [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP,\n ]),\n [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set(),\n};\nexport const NUMBERED_HEADERS = new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]);\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n","import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, EntityDecoder, DecodingMode } from 'entities/decode';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//States\nvar State;\n(function (State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 72] = \"AMBIGUOUS_AMPERSAND\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\nfunction getErrorForNumericCharacterReference(code) {\n if (code === $.NULL) {\n return ERR.nullCharacterReference;\n }\n else if (code > 1114111) {\n return ERR.characterReferenceOutsideUnicodeRange;\n }\n else if (isSurrogate(code)) {\n return ERR.surrogateCharacterReference;\n }\n else if (isUndefinedCodePoint(code)) {\n return ERR.noncharacterCharacterReference;\n }\n else if (isControlCodePoint(code) || code === $.CARRIAGE_RETURN) {\n return ERR.controlCharacterReference;\n }\n return null;\n}\n//Tokenizer\nexport class Tokenizer {\n constructor(options, handler) {\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */\n this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */\n this.inForeignNode = false;\n this.lastStartTagName = '';\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.entityStartPos = 0;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = { name: '', value: '' };\n this.preprocessor = new Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n this.entityDecoder = new EntityDecoder(htmlDecodeTree, (cp, consumed) => {\n // Note: Set `pos` _before_ flushing, as flushing might drop\n // the current chunk and invalidate `entityStartPos`.\n this.preprocessor.pos = this.entityStartPos + consumed - 1;\n this._flushCodePointConsumedAsCharacterReference(cp);\n }, handler.onParseError\n ? {\n missingSemicolonAfterCharacterReference: () => {\n this._err(ERR.missingSemicolonAfterCharacterReference, 1);\n },\n absenceOfDigitsInNumericCharacterReference: (consumed) => {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);\n },\n validateNumericCharacterReference: (code) => {\n const error = getErrorForNumericCharacterReference(code);\n if (error)\n this._err(error, 1);\n },\n }\n : undefined);\n }\n //Errors\n _err(code, cpOffset = 0) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n };\n }\n _runParsingLoop() {\n if (this.inLoop)\n return;\n this.inLoop = true;\n while (this.active && !this.paused) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error('Parser was already resumed');\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop)\n return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this.preprocessor.retreat(this.consumedAfterSnapshot);\n this.consumedAfterSnapshot = 0;\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for (let i = 0; i < count; i++) {\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: TokenType.START_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1),\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: TokenType.END_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2),\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: TokenType.COMMENT,\n data: '',\n location: this.getCurrentLocation(offset),\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation,\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation,\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: '',\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if (getTokenAttr(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n }\n else {\n this._err(ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = getTagID(ct.tagName);\n if (ct.type === TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n }\n else {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch (this.currentCharacterToken.type) {\n case TokenType.CHARACTER: {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({ type: TokenType.EOF, location });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: The specification uses only one type of character token (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type === type) {\n this.currentCharacterToken.chars += ch;\n return;\n }\n else {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp)\n ? TokenType.WHITESPACE_CHARACTER\n : cp === $.NULL\n ? TokenType.NULL_CHARACTER\n : TokenType.CHARACTER;\n this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _startCharacterReference() {\n this.returnState = this.state;\n this.state = State.CHARACTER_REFERENCE;\n this.entityStartPos = this.preprocessor.pos;\n this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy);\n }\n _isCharacterReferenceInAttribute() {\n return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch (this.state) {\n case State.DATA: {\n this._stateData(cp);\n break;\n }\n case State.RCDATA: {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT: {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA: {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT: {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN: {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN: {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME: {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN: {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN: {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME: {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN: {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN: {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME: {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN: {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME: {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START: {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED: {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH: {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME: {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME: {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME: {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE: {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED: {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG: {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT: {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN: {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START: {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH: {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT: {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN: {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG: {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH: {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END: {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG: {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE: {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME: {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME: {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME: {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE: {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION: {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET: {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END: {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE: {\n this._stateCharacterReference();\n break;\n }\n case State.AMBIGUOUS_AMPERSAND: {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n default: {\n throw new Error('Unknown state');\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.TAG_OPEN;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch (cp) {\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch (cp) {\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case $.QUESTION_MARK: {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n _stateTagName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.tagName += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n _stateRcdataLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RCDATA_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n _stateRcdataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RCDATA_END_TAG_NAME;\n this._stateRcdataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n handleSpecialEndTag(_cp) {\n if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n return !this._ensureHibernation();\n }\n this._createEndTagToken();\n const token = this.currentToken;\n token.tagName = this.lastStartTagName;\n const cp = this.preprocessor.peek(this.lastStartTagName.length);\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n return false;\n }\n case $.SOLIDUS: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.SELF_CLOSING_START_TAG;\n return false;\n }\n case $.GREATER_THAN_SIGN: {\n this._advanceBy(this.lastStartTagName.length);\n this.emitCurrentTagToken();\n this.state = State.DATA;\n return false;\n }\n default: {\n return !this._ensureHibernation();\n }\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n _stateRcdataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n _stateRawtextLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RAWTEXT_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n _stateRawtextEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RAWTEXT_END_TAG_NAME;\n this._stateRawtextEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n _stateRawtextEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataLessThanSign(cp) {\n switch (cp) {\n case $.SOLIDUS: {\n this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.SCRIPT_DATA_ESCAPE_START;\n this._emitChars('<!');\n break;\n }\n default: {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n }\n // Script data end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_END_TAG_NAME;\n this._stateScriptDataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStart(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStartDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escaped state\n //------------------------------------------------------------------\n _stateScriptDataEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n }\n else if (isAsciiLetter(cp)) {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n }\n else {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeStart(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars('/');\n }\n else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED:\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN: {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.EQUALS_SIGN: {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default: {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN:\n case $.EQUALS_SIGN:\n case $.GRAVE_ACCENT: {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n this._createCommentToken($$.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n }\n else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n }\n else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n }\n else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken($$.CDATA_START.length + 1);\n this.currentToken.data = '[CDATA[';\n this.state = State.BOGUS_COMMENT;\n }\n }\n //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n token.data += '!';\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n }\n else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n }\n else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case $.HYPHEN_MINUS: {\n token.data += '-';\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n token.data += '--!';\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--!';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n }\n else\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.name += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n }\n else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n break;\n }\n case $.EOF: {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n // Do nothing\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch (cp) {\n case $.RIGHT_SQUARE_BRACKET: {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n }\n else {\n this._emitChars(']');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n break;\n }\n case $.RIGHT_SQUARE_BRACKET: {\n this._emitChars(']');\n break;\n }\n default: {\n this._emitChars(']]');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference() {\n let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);\n if (length < 0) {\n if (this.preprocessor.lastChunkWritten) {\n length = this.entityDecoder.end();\n }\n else {\n // Wait for the rest of the entity.\n this.active = false;\n // Mark the entire buffer as read.\n this.preprocessor.pos = this.preprocessor.html.length - 1;\n this.consumedAfterSnapshot = 0;\n this.preprocessor.endOfChunkHit = true;\n return;\n }\n }\n if (length === 0) {\n // This was not a valid entity. Go back to the beginning, and\n // figure out what to do.\n this.preprocessor.pos = this.entityStartPos;\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this.state =\n !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric(this.preprocessor.peek(1))\n ? State.AMBIGUOUS_AMPERSAND\n : this.returnState;\n }\n else {\n // We successfully parsed an entity. Switch to the return state.\n this.state = this.returnState;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n }\n else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n this.state = this.returnState;\n this._callState(cp);\n }\n }\n}\n","import { TAG_ID as $, NS, NUMBERED_HEADERS } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n $.CAPTION,\n $.COLGROUP,\n $.TBODY,\n $.TD,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TR,\n]);\nconst SCOPING_ELEMENTS_HTML = new Set([\n $.APPLET,\n $.CAPTION,\n $.HTML,\n $.MARQUEE,\n $.OBJECT,\n $.TABLE,\n $.TD,\n $.TEMPLATE,\n $.TH,\n]);\nconst SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, $.OL, $.UL]);\nconst SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, $.BUTTON]);\nconst SCOPING_ELEMENTS_MATHML = new Set([$.ANNOTATION_XML, $.MI, $.MN, $.MO, $.MS, $.MTEXT]);\nconst SCOPING_ELEMENTS_SVG = new Set([$.DESC, $.FOREIGN_OBJECT, $.TITLE]);\nconst TABLE_ROW_CONTEXT = new Set([$.TR, $.TEMPLATE, $.HTML]);\nconst TABLE_BODY_CONTEXT = new Set([$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML]);\nconst TABLE_CONTEXT = new Set([$.TABLE, $.TEMPLATE, $.HTML]);\nconst TABLE_CELLS = new Set([$.TD, $.TH]);\n//Stack of open elements\nexport class OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler) {\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = $.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n if (this.current && this.currentTagId !== undefined) {\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n this.shortenToLength(Math.max(targetIdx, 0));\n }\n shortenToLength(idx) {\n while (this.stackTop >= idx) {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(Math.max(idx, 0));\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(Math.max(idx, 0));\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(NUMBERED_HEADERS, NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n }\n else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n }\n //Element in scope\n hasInDynamicScope(tagName, htmlScope) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (tn === tagName)\n return true;\n if (htmlScope.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);\n }\n hasInListItemScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);\n }\n hasInButtonScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (NUMBERED_HEADERS.has(tn))\n return true;\n if (SCOPING_ELEMENTS_HTML.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n break;\n }\n default: {\n return false;\n }\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while (this.currentTagId !== undefined &&\n this.currentTagId !== exclusionId &&\n IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n}\n","//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n constructor(treeAdapter) {\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY)\n return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY)\n return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for (let i = 0; i < candidates.length; i++) {\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token,\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token,\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex !== -1) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */\n clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx === -1) {\n this.entries.length = 0;\n }\n else {\n this.entries.splice(0, markerIdx + 1);\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n }\n}\n","import { DOCUMENT_MODE } from '../common/html.js';\nexport const defaultTreeAdapter = {\n //Node construction\n createDocument() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: [],\n };\n },\n createDocumentFragment() {\n return {\n nodeName: '#document-fragment',\n childNodes: [],\n };\n },\n createElement(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null,\n };\n },\n createCommentNode(data) {\n return {\n nodeName: '#comment',\n data,\n parentNode: null,\n };\n },\n createTextNode(value) {\n return {\n nodeName: '#text',\n value,\n parentNode: null,\n };\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent(templateElement) {\n return templateElement.content;\n },\n setDocumentType(document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n }\n else {\n const node = {\n nodeName: '#documentType',\n name,\n publicId,\n systemId,\n parentNode: null,\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode(document, mode) {\n document.mode = mode;\n },\n getDocumentMode(document) {\n return document.mode;\n },\n detachNode(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText(parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n }\n else {\n defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n for (let j = 0; j < attrs.length; j++) {\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.childNodes[0];\n },\n getChildNodes(node) {\n return node.childNodes;\n },\n getParentNode(node) {\n return node.parentNode;\n },\n getAttrList(element) {\n return element.attrs;\n },\n //Node data\n getTagName(element) {\n return element.tagName;\n },\n getNamespaceURI(element) {\n return element.namespaceURI;\n },\n getTextNodeContent(textNode) {\n return textNode.value;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode(node) {\n return node.nodeName === '#text';\n },\n isCommentNode(node) {\n return node.nodeName === '#comment';\n },\n isDocumentTypeNode(node) {\n return node.nodeName === '#documentType';\n },\n isElementNode(node) {\n return Object.prototype.hasOwnProperty.call(node, 'tagName');\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n },\n};\n","import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n '-//w3o//dtd w3 html strict 3.0//en//',\n '-/w3c/dtd html 4.0 transitional/en',\n 'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n return (token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n}\n","import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n 'attributeName',\n 'attributeType',\n 'baseFrequency',\n 'baseProfile',\n 'calcMode',\n 'clipPathUnits',\n 'diffuseConstant',\n 'edgeMode',\n 'filterUnits',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'limitingConeAngle',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'maskContentUnits',\n 'maskUnits',\n 'numOctaves',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'refX',\n 'refY',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'specularConstant',\n 'specularExponent',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stitchTiles',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textLength',\n 'viewBox',\n 'viewTarget',\n 'xChannelSelector',\n 'yChannelSelector',\n 'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n $.B,\n $.BIG,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.CENTER,\n $.CODE,\n $.DD,\n $.DIV,\n $.DL,\n $.DT,\n $.EM,\n $.EMBED,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HR,\n $.I,\n $.IMG,\n $.LI,\n $.LISTING,\n $.MENU,\n $.META,\n $.NOBR,\n $.OL,\n $.P,\n $.PRE,\n $.RUBY,\n $.S,\n $.SMALL,\n $.SPAN,\n $.STRONG,\n $.STRIKE,\n $.SUB,\n $.SUP,\n $.TABLE,\n $.TT,\n $.U,\n $.UL,\n $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === $.FONT &&\n startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n}\nexport function adjustTokenSVGAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nexport function adjustTokenXMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n}\nexport function adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = getTagID(token.tagName);\n }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n","import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, NUMBERED_HEADERS, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: defaultTreeAdapter,\n onParseError: null,\n};\n//Parser\nexport class Parser {\n constructor(options, document, \n /** @internal */\n fragmentContext = null, \n /** @internal */\n scriptHandler = null) {\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n /** @internal */\n this.insertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.originalInsertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.headElement = null;\n /** @internal */\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */\n this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n *\n * @internal\n */\n this.tmplInsertionModeStack = [];\n /** @internal */\n this.pendingCharacterTokens = [];\n /** @internal */\n this.hasNonWhitespacePendingCharacterToken = false;\n /** @internal */\n this.framesetOk = true;\n /** @internal */\n this.skipNextNewLine = false;\n /** @internal */\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options,\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new Tokenizer(this.options, this);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options,\n };\n //NOTE: use a <template> element as the fragment context if no context element was provided,\n //so we will parse in a \"forgiving\" manner\n fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n //This is important for jsdom, where a new `document` cannot be created. This led to\n //fragment parsing messing with the main `document`.\n const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n const parser = new this(opts, documentMock, fragmentContext);\n if (parser.fragmentContextID === $.TEMPLATE) {\n parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n }\n parser._initTokenizerForFragmentParsing();\n parser._insertFakeRootElement();\n parser._resetInsertionMode();\n parser._findFormInFragmentContext();\n return parser;\n }\n getFragment() {\n const rootElement = this.treeAdapter.getFirstChild(this.document);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n //Errors\n /** @internal */\n _err(token, code, beforeToken) {\n var _a;\n if (!this.onParseError)\n return;\n const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n const err = {\n code,\n startLine: loc.startLine,\n startCol: loc.startCol,\n startOffset: loc.startOffset,\n endLine: beforeToken ? loc.startLine : loc.endLine,\n endCol: beforeToken ? loc.startCol : loc.endCol,\n endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n };\n this.onParseError(err);\n }\n //Stack events\n /** @internal */\n onItemPush(node, tid, isTop) {\n var _a, _b;\n (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n if (isTop && this.openElements.stackTop > 0)\n this._setContextModes(node, tid);\n }\n /** @internal */\n onItemPop(node, isTop) {\n var _a, _b;\n if (this.options.sourceCodeLocationInfo) {\n this._setEndLocation(node, this.currentToken);\n }\n (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n if (isTop) {\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n this._setContextModes(current, currentTagId);\n }\n }\n _setContextModes(current, tid) {\n const isHTML = current === this.document || (current && this.treeAdapter.getNamespaceURI(current) === NS.HTML);\n this.currentNotInHTML = !isHTML;\n this.tokenizer.inForeignNode =\n !isHTML && current !== undefined && tid !== undefined && !this._isIntegrationPoint(tid, current);\n }\n /** @protected */\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = InsertionMode.TEXT;\n }\n switchToPlaintextParsing() {\n this.insertionMode = InsertionMode.TEXT;\n this.originalInsertionMode = InsertionMode.IN_BODY;\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n }\n //Fragment parsing\n /** @protected */\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n /** @protected */\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n while (node) {\n if (this.treeAdapter.getTagName(node) === TN.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n }\n }\n _initTokenizerForFragmentParsing() {\n if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n return;\n }\n switch (this.fragmentContextID) {\n case $.TITLE:\n case $.TEXTAREA: {\n this.tokenizer.state = TokenizerMode.RCDATA;\n break;\n }\n case $.STYLE:\n case $.XMP:\n case $.IFRAME:\n case $.NOEMBED:\n case $.NOFRAMES:\n case $.NOSCRIPT: {\n this.tokenizer.state = TokenizerMode.RAWTEXT;\n break;\n }\n case $.SCRIPT: {\n this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n break;\n }\n case $.PLAINTEXT: {\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n break;\n }\n default:\n // Do nothing\n }\n }\n //Tree mutation\n /** @protected */\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n if (token.location) {\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n if (docTypeNode) {\n this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n }\n }\n }\n /** @protected */\n _attachElementToTree(element, location) {\n if (this.options.sourceCodeLocationInfo) {\n const loc = location && {\n ...location,\n startTag: location,\n };\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n }\n else {\n const parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.appendChild(parent !== null && parent !== void 0 ? parent : this.document, element);\n }\n }\n /**\n * For self-closing tags. Add an element to the tree, but skip adding it\n * to the stack.\n */\n /** @protected */\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n }\n /** @protected */\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n this.openElements.push(element, token.tagID);\n }\n /** @protected */\n _insertFakeElement(tagName, tagID) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n this._attachElementToTree(element, null);\n this.openElements.push(element, tagID);\n }\n /** @protected */\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl, token.location);\n this.openElements.push(tmpl, token.tagID);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(content, null);\n }\n /** @protected */\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(element, null);\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element, $.HTML);\n }\n /** @protected */\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n }\n }\n /** @protected */\n _insertCharacters(token) {\n let parent;\n let beforeElement;\n if (this._shouldFosterParentOnInsertion()) {\n ({ parent, beforeElement } = this._findFosterParentingLocation());\n if (beforeElement) {\n this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n }\n else {\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n else {\n parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.insertText(parent, token.chars);\n }\n if (!token.location)\n return;\n const siblings = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n const textNode = siblings[textNodeIdx - 1];\n //NOTE: if we have a location assigned by another token, then just update the end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n }\n else if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n /** @protected */\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n /** @protected */\n _setEndLocation(element, closingToken) {\n if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n const endLoc = \n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n ? {\n endTag: { ...ctLoc },\n endLine: ctLoc.endLine,\n endCol: ctLoc.endCol,\n endOffset: ctLoc.endOffset,\n }\n : {\n endLine: ctLoc.startLine,\n endCol: ctLoc.startCol,\n endOffset: ctLoc.startOffset,\n };\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n //Token processing\n shouldProcessStartTagTokenInForeignContent(token) {\n // Check that neither current === document, or ns === NS.HTML\n if (!this.currentNotInHTML)\n return false;\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n if (token.tagID === $.SVG &&\n this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n return false;\n }\n return (\n // Check that `current` is not an integration point for HTML or MathML elements.\n this.tokenizer.inForeignNode ||\n // If it _is_ an integration point, then we might have to check that it is not an HTML\n // integration point.\n ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n currentTagId !== undefined &&\n !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n }\n /** @protected */\n _processToken(token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n this.onCharacter(token);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.onNullCharacter(token);\n break;\n }\n case TokenType.COMMENT: {\n this.onComment(token);\n break;\n }\n case TokenType.DOCTYPE: {\n this.onDoctype(token);\n break;\n }\n case TokenType.START_TAG: {\n this._processStartTag(token);\n break;\n }\n case TokenType.END_TAG: {\n this.onEndTag(token);\n break;\n }\n case TokenType.EOF: {\n this.onEof(token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.onWhitespaceCharacter(token);\n break;\n }\n }\n }\n //Integration points\n /** @protected */\n _isIntegrationPoint(tid, element, foreignNS) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n /** @protected */\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.entries.length;\n if (listLength) {\n const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1;\n for (let i = unopenIdx; i >= 0; i--) {\n const entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n //Close elements\n /** @protected */\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = InsertionMode.IN_ROW;\n }\n /** @protected */\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n //Insertion modes\n /** @protected */\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n //Insertion mode reset map\n switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n case $.TR: {\n this.insertionMode = InsertionMode.IN_ROW;\n return;\n }\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n this.insertionMode = InsertionMode.IN_TABLE_BODY;\n return;\n }\n case $.CAPTION: {\n this.insertionMode = InsertionMode.IN_CAPTION;\n return;\n }\n case $.COLGROUP: {\n this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n return;\n }\n case $.TABLE: {\n this.insertionMode = InsertionMode.IN_TABLE;\n return;\n }\n case $.BODY: {\n this.insertionMode = InsertionMode.IN_BODY;\n return;\n }\n case $.FRAMESET: {\n this.insertionMode = InsertionMode.IN_FRAMESET;\n return;\n }\n case $.SELECT: {\n this._resetInsertionModeForSelect(i);\n return;\n }\n case $.TEMPLATE: {\n this.insertionMode = this.tmplInsertionModeStack[0];\n return;\n }\n case $.HTML: {\n this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n return;\n }\n case $.TD:\n case $.TH: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_CELL;\n return;\n }\n break;\n }\n case $.HEAD: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_HEAD;\n return;\n }\n break;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_BODY;\n }\n /** @protected */\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const tn = this.openElements.tagIDs[i];\n if (tn === $.TEMPLATE) {\n break;\n }\n else if (tn === $.TABLE) {\n this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n return;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_SELECT;\n }\n //Foster parenting\n /** @protected */\n _isElementCausesFosterParenting(tn) {\n return TABLE_STRUCTURE_TAGS.has(tn);\n }\n /** @protected */\n _shouldFosterParentOnInsertion() {\n return (this.fosterParentingEnabled &&\n this.openElements.currentTagId !== undefined &&\n this._isElementCausesFosterParenting(this.openElements.currentTagId));\n }\n /** @protected */\n _findFosterParentingLocation() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n switch (this.openElements.tagIDs[i]) {\n case $.TEMPLATE: {\n if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n }\n break;\n }\n case $.TABLE: {\n const parent = this.treeAdapter.getParentNode(openElement);\n if (parent) {\n return { parent, beforeElement: openElement };\n }\n return { parent: this.openElements.items[i - 1], beforeElement: null };\n }\n default:\n // Do nothing\n }\n }\n return { parent: this.openElements.items[0], beforeElement: null };\n }\n /** @protected */\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n }\n else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n //Special elements\n /** @protected */\n _isSpecialElement(element, id) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n return SPECIAL_ELEMENTS[ns].has(id);\n }\n /** @internal */\n onCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n characterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE: {\n characterInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n characterInTableText(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onNullCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n nullCharacterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onComment(token) {\n this.skipNextNewLine = false;\n if (this.currentNotInHTML) {\n appendComment(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL:\n case InsertionMode.BEFORE_HTML:\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n appendComment(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n appendCommentToRootHtmlElement(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n appendCommentToDocument(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onDoctype(token) {\n this.skipNextNewLine = false;\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n doctypeInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD: {\n this._err(token, ERR.misplacedDoctype);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onStartTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n this._processStartTag(token);\n if (token.selfClosing && !token.ackSelfClosing) {\n this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n /**\n * Processes a given start tag.\n *\n * `onStartTag` checks if a self-closing tag was recognized. When a token\n * is moved inbetween multiple insertion modes, this check for self-closing\n * could lead to false positives. To avoid this, `_processStartTag` is used\n * for nested calls.\n *\n * @param token The token to process.\n * @protected\n */\n _processStartTag(token) {\n if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n startTagInForeignContent(this, token);\n }\n else {\n this._startTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _startTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n startTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n startTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n startTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n startTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n startTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n startTagInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n startTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n startTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n startTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n startTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n startTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n startTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n startTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n startTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n startTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n startTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n startTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n startTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n startTagAfterAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n startTagAfterAfterFrameset(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEndTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n if (this.currentNotInHTML) {\n endTagInForeignContent(this, token);\n }\n else {\n this._endTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _endTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n endTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n endTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n endTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n endTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n endTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n endTagInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n endTagInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n endTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n endTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n endTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n endTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n endTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n endTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n endTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n endTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n endTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n endTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n endTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n endTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEof(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n eofInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n eofInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n eofInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n stopParsing(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onWhitespaceCharacter(token) {\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n if (token.chars.length === 1) {\n return;\n }\n token.chars = token.chars.substr(1);\n }\n }\n if (this.tokenizer.inForeignNode) {\n this._insertCharacters(token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.TEXT:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.AFTER_BODY:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n whitespaceCharacterInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n whitespaceCharacterInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n }\n else if (!p.openElements.hasInScope(token.tagID)) {\n formattingElementEntry = null;\n }\n }\n else {\n genericEndTagInBody(p, token);\n }\n return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n let idx = p.openElements.stackTop;\n for (; idx >= 0; idx--) {\n const element = p.openElements.items[idx];\n if (element === formattingElementEntry.element) {\n break;\n }\n if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n furthestBlock = element;\n }\n }\n if (!furthestBlock) {\n p.openElements.shortenToLength(Math.max(idx, 0));\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n p.openElements.remove(element);\n }\n else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const tid = getTagID(tn);\n if (p._isElementCausesFosterParenting(tid)) {\n p._fosterParentElement(lastElement);\n }\n else {\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n if (tid === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const { token } = formattingElementEntry;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n p.treeAdapter.detachNode(lastElement);\n if (commonAncestor)\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n p.stopped = true;\n // NOTE: Set end locations for elements that remain on the open element stack.\n if (token.location) {\n // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n // This is a problem, as we might overwrite their end position here.\n const target = p.fragmentContext ? 0 : 2;\n for (let i = p.openElements.stackTop; i >= target; i--) {\n p._setEndLocation(p.openElements.items[i], token);\n }\n // Handle `html` and `body`\n if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n const htmlElement = p.openElements.items[0];\n const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n if (htmlLocation && !htmlLocation.endTag) {\n p._setEndLocation(htmlElement, token);\n if (p.openElements.stackTop >= 1) {\n const bodyElement = p.openElements.items[1];\n const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n if (bodyLocation && !bodyLocation.endTag) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n }\n }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n if (!doctype.isConforming(token)) {\n p._err(token, ERR.nonConformingDoctype);\n }\n p.treeAdapter.setDocumentMode(p.document, mode);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n p._err(token, ERR.missingDoctype, true);\n p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagID === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n }\n else {\n tokenBeforeHtml(p, token);\n }\n}\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagID;\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.HEAD: {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n default: {\n tokenBeforeHead(p, token);\n }\n }\n}\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagID;\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement(TN.HEAD, $.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TITLE: {\n p._switchToTextParsing(token, TokenizerMode.RCDATA);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n }\n else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n }\n break;\n }\n case $.NOFRAMES:\n case $.STYLE: {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n break;\n }\n case $.SCRIPT: {\n p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n break;\n }\n case $.TEMPLATE: {\n p._insertTemplate(token);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TEMPLATE;\n p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenInHead(p, token);\n }\n }\n}\nfunction endTagInHead(p, token) {\n switch (token.tagID) {\n case $.HEAD: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n break;\n }\n case $.BODY:\n case $.BR:\n case $.HTML: {\n tokenInHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction templateEndTagInHead(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n if (p.openElements.currentTagId !== $.TEMPLATE) {\n p._err(token, ERR.closingOfElementWithOpenChildElements);\n }\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASEFONT:\n case $.BGSOUND:\n case $.HEAD:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.STYLE: {\n startTagInHead(p, token);\n break;\n }\n case $.NOSCRIPT: {\n p._err(token, ERR.nestedNoscriptInHead);\n break;\n }\n default: {\n tokenInHeadNoScript(p, token);\n }\n }\n}\nfunction endTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.NOSCRIPT: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n case $.BR: {\n tokenInHeadNoScript(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenInHeadNoScript(p, token) {\n const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n p._err(token, errCode);\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BODY: {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_BODY;\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n p._err(token, ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement, $.HEAD);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenAfterHead(p, token);\n }\n }\n}\nfunction endTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.BODY:\n case $.HTML:\n case $.BR: {\n tokenAfterHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement(TN.BODY, $.BODY);\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInBody(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInBody(p, token);\n break;\n }\n case TokenType.COMMENT: {\n appendComment(p, token);\n break;\n }\n case TokenType.START_TAG: {\n startTagInBody(p, token);\n break;\n }\n case TokenType.END_TAG: {\n endTagInBody(p, token);\n break;\n }\n case TokenType.EOF: {\n eofInBody(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n }\n}\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n if (p.openElements.currentTagId !== undefined && NUMBERED_HEADERS.has(p.openElements.currentTagId)) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n const tn = token.tagID;\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const elementId = p.openElements.tagIDs[i];\n if ((tn === $.LI && elementId === $.LI) ||\n ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n p.openElements.popUntilTagNamePopped(elementId);\n break;\n }\n if (elementId !== $.ADDRESS &&\n elementId !== $.DIV &&\n elementId !== $.P &&\n p._isSpecialElement(p.openElements.items[i], elementId)) {\n break;\n }\n }\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n const inputType = getTokenAttr(token, ATTRS.TYPE);\n return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n if (!isHiddenInput(token)) {\n p.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n token.tagName = TN.IMG;\n token.tagID = $.IMG;\n areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = TokenizerMode.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse\n//<noembed>/<noframes> as rawtext.\nfunction rawTextStartTagInBody(p, token) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode =\n p.insertionMode === InsertionMode.IN_TABLE ||\n p.insertionMode === InsertionMode.IN_CAPTION ||\n p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n p.insertionMode === InsertionMode.IN_ROW ||\n p.insertionMode === InsertionMode.IN_CELL\n ? InsertionMode.IN_SELECT_IN_TABLE\n : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n }\n else {\n p._insertElement(token, NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n }\n else {\n p._insertElement(token, NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n switch (token.tagID) {\n case $.I:\n case $.S:\n case $.B:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n bStartTagInBody(p, token);\n break;\n }\n case $.A: {\n aStartTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderStartTagInBody(p, token);\n break;\n }\n case $.P:\n case $.DL:\n case $.OL:\n case $.UL:\n case $.DIV:\n case $.DIR:\n case $.NAV:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.DETAILS:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressStartTagInBody(p, token);\n break;\n }\n case $.LI:\n case $.DD:\n case $.DT: {\n listItemStartTagInBody(p, token);\n break;\n }\n case $.BR:\n case $.IMG:\n case $.WBR:\n case $.AREA:\n case $.EMBED:\n case $.KEYGEN: {\n areaStartTagInBody(p, token);\n break;\n }\n case $.HR: {\n hrStartTagInBody(p, token);\n break;\n }\n case $.RB:\n case $.RTC: {\n rbStartTagInBody(p, token);\n break;\n }\n case $.RT:\n case $.RP: {\n rtStartTagInBody(p, token);\n break;\n }\n case $.PRE:\n case $.LISTING: {\n preStartTagInBody(p, token);\n break;\n }\n case $.XMP: {\n xmpStartTagInBody(p, token);\n break;\n }\n case $.SVG: {\n svgStartTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlStartTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.LINK:\n case $.META:\n case $.STYLE:\n case $.TITLE:\n case $.SCRIPT:\n case $.BGSOUND:\n case $.BASEFONT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.BODY: {\n bodyStartTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInBody(p, token);\n break;\n }\n case $.NOBR: {\n nobrStartTagInBody(p, token);\n break;\n }\n case $.MATH: {\n mathStartTagInBody(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInBody(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInBody(p, token);\n break;\n }\n case $.PARAM:\n case $.TRACK:\n case $.SOURCE: {\n paramStartTagInBody(p, token);\n break;\n }\n case $.IMAGE: {\n imageStartTagInBody(p, token);\n break;\n }\n case $.BUTTON: {\n buttonStartTagInBody(p, token);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletStartTagInBody(p, token);\n break;\n }\n case $.IFRAME: {\n iframeStartTagInBody(p, token);\n break;\n }\n case $.SELECT: {\n selectStartTagInBody(p, token);\n break;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n optgroupStartTagInBody(p, token);\n break;\n }\n case $.NOEMBED:\n case $.NOFRAMES: {\n rawTextStartTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n framesetStartTagInBody(p, token);\n break;\n }\n case $.TEXTAREA: {\n textareaStartTagInBody(p, token);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n rawTextStartTagInBody(p, token);\n }\n else {\n genericStartTagInBody(p, token);\n }\n break;\n }\n case $.PLAINTEXT: {\n plaintextStartTagInBody(p, token);\n break;\n }\n case $.COL:\n case $.TH:\n case $.TD:\n case $.TR:\n case $.HEAD:\n case $.FRAME:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.CAPTION:\n case $.COLGROUP: {\n // Ignore token\n break;\n }\n default: {\n genericStartTagInBody(p, token);\n }\n }\n}\nfunction bodyEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n //NOTE: <body> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n}\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n endTagAfterBody(p, token);\n }\n}\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const { formElement } = p;\n if (!inTemplate) {\n p.formElement = null;\n }\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n }\n else if (formElement) {\n p.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement(TN.P, $.P);\n }\n p._closePElement();\n}\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement(TN.BR, $.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n const tid = token.tagID;\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n const elementId = p.openElements.tagIDs[i];\n // Compare the tag name here, as the tag might not be a known tag with an ID.\n if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tid);\n if (p.openElements.stackTop >= i)\n p.openElements.shortenToLength(i);\n break;\n }\n if (p._isSpecialElement(element, elementId)) {\n break;\n }\n }\n}\nfunction endTagInBody(p, token) {\n switch (token.tagID) {\n case $.A:\n case $.B:\n case $.I:\n case $.S:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.NOBR:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n callAdoptionAgency(p, token);\n break;\n }\n case $.P: {\n pEndTagInBody(p);\n break;\n }\n case $.DL:\n case $.UL:\n case $.OL:\n case $.DIR:\n case $.DIV:\n case $.NAV:\n case $.PRE:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.BUTTON:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.DETAILS:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.LISTING:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressEndTagInBody(p, token);\n break;\n }\n case $.LI: {\n liEndTagInBody(p);\n break;\n }\n case $.DD:\n case $.DT: {\n ddEndTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderEndTagInBody(p);\n break;\n }\n case $.BR: {\n brEndTagInBody(p);\n break;\n }\n case $.BODY: {\n bodyEndTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlEndTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formEndTagInBody(p);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletEndTagInBody(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n genericEndTagInBody(p, token);\n }\n }\n}\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStack.length > 0) {\n eofInTemplate(p, token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n var _a;\n if (token.tagID === $.SCRIPT) {\n (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n }\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n p._err(token, ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n if (p.openElements.currentTagId !== undefined && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n p.pendingCharacterTokens.length = 0;\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInTableText(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInTableText(p, token);\n break;\n }\n // Ignore null\n }\n }\n else {\n tokenInTable(p, token);\n }\n}\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.TBODY, $.TBODY);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n}\nfunction inputStartTagInTable(p, token) {\n if (isHiddenInput(token)) {\n p._appendElement(token, NS.HTML);\n }\n else {\n tokenInTable(p, token);\n }\n token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\nfunction startTagInTable(p, token) {\n switch (token.tagID) {\n case $.TD:\n case $.TH:\n case $.TR: {\n tdStartTagInTable(p, token);\n break;\n }\n case $.STYLE:\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.COL: {\n colStartTagInTable(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInTable(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInTable(p, token);\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n tbodyStartTagInTable(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInTable(p, token);\n break;\n }\n case $.CAPTION: {\n captionStartTagInTable(p, token);\n break;\n }\n case $.COLGROUP: {\n colgroupStartTagInTable(p, token);\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction endTagInTable(p, token) {\n switch (token.tagID) {\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n p.fosterParentingEnabled = true;\n // Process token in `In Body` mode\n modeInBody(p, token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n let i = 0;\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n }\n else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCaption(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.CAPTION:\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n if (tn === $.TABLE) {\n endTagInTable(p, token);\n }\n }\n break;\n }\n case $.BODY:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.COL: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction endTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.COLGROUP: {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.COL: {\n // Ignore token\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n p._processToken(token);\n }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n switch (token.tagID) {\n case $.TR: {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_ROW;\n break;\n }\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement(TN.TR, $.TR);\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInTableBody(p, token) {\n const tn = token.tagID;\n switch (token.tagID) {\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n endTagInTable(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n switch (token.tagID) {\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CELL;\n p.activeFormattingElements.insertMarker();\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInRow(p, token) {\n switch (token.tagID) {\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH: {\n // Ignore end tag\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n startTagInRow(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCell(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.TD:\n case $.TH: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_ROW;\n }\n break;\n }\n case $.TABLE:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n endTagInRow(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.OPTGROUP: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.HR: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.INPUT:\n case $.KEYGEN:\n case $.TEXTAREA:\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n if (token.tagID !== $.SELECT) {\n p._processStartTag(token);\n }\n }\n break;\n }\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInSelect(p, token) {\n switch (token.tagID) {\n case $.OPTGROUP: {\n if (p.openElements.stackTop > 0 &&\n p.openElements.currentTagId === $.OPTION &&\n p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n break;\n }\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n else {\n startTagInSelect(p, token);\n }\n}\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p.onEndTag(token);\n }\n }\n else {\n endTagInSelect(p, token);\n }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n switch (token.tagID) {\n // First, handle tags that can start without a mode change\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n startTagInHead(p, token);\n break;\n }\n // Re-process the token in the appropriate mode\n case $.CAPTION:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n break;\n }\n case $.COL: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n break;\n }\n case $.TR: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n break;\n }\n case $.TD:\n case $.TH: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n default: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n p.insertionMode = InsertionMode.IN_BODY;\n startTagInBody(p, token);\n }\n }\n}\nfunction endTagInTemplate(p, token) {\n if (token.tagID === $.TEMPLATE) {\n templateEndTagInHead(p, token);\n }\n}\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n p.onEof(token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction endTagAfterBody(p, token) {\n var _a;\n if (token.tagID === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n }\n //NOTE: <html> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n p._setEndLocation(p.openElements.items[0], token);\n // Update the body element, if it doesn't have an end tag\n const bodyElement = p.openElements.items[1];\n if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction tokenAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.FRAME: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInFrameset(p, token) {\n if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n p.insertionMode = InsertionMode.AFTER_FRAMESET;\n }\n }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagAfterFrameset(p, token) {\n if (token.tagID === $.HTML) {\n p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterAfterBody(p, token);\n }\n}\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n p.openElements.currentTagId !== undefined &&\n !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n p.openElements.pop();\n }\n}\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token)) {\n popUntilHtmlOrIntegrationPoint(p);\n p._startTagOutsideForeignContent(token);\n }\n else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n }\n else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n }\n else {\n p._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p, token) {\n if (token.tagID === $.P || token.tagID === $.BR) {\n popUntilHtmlOrIntegrationPoint(p);\n p._endTagOutsideForeignContent(token);\n return;\n }\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._endTagOutsideForeignContent(token);\n break;\n }\n const tagName = p.treeAdapter.getTagName(element);\n if (tagName.toLowerCase() === token.tagName) {\n //NOTE: update the token tag name for `_setEndLocation`.\n token.tagName = tagName;\n p.openElements.shortenToLength(i);\n break;\n }\n }\n}\n","import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/escape';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n $.AREA,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BR,\n $.COL,\n $.EMBED,\n $.FRAME,\n $.HR,\n $.IMG,\n $.INPUT,\n $.KEYGEN,\n $.LINK,\n $.META,\n $.PARAM,\n $.SOURCE,\n $.TRACK,\n $.WBR,\n]);\nfunction isVoidElement(node, options) {\n return (options.treeAdapter.isElementNode(node) &&\n options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n const opts = { ...defaultOpts, ...options };\n if (isVoidElement(node, opts)) {\n return '';\n }\n return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const str = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n const opts = { ...defaultOpts, ...options };\n return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n let html = '';\n // Get container of the child nodes\n const container = options.treeAdapter.isElementNode(parentNode) &&\n options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n ? options.treeAdapter.getTemplateContent(parentNode)\n : parentNode;\n const childNodes = options.treeAdapter.getChildNodes(container);\n if (childNodes) {\n for (const currentNode of childNodes) {\n html += serializeNode(currentNode, options);\n }\n }\n return html;\n}\nfunction serializeNode(node, options) {\n if (options.treeAdapter.isElementNode(node)) {\n return serializeElement(node, options);\n }\n if (options.treeAdapter.isTextNode(node)) {\n return serializeTextNode(node, options);\n }\n if (options.treeAdapter.isCommentNode(node)) {\n return serializeCommentNode(node, options);\n }\n if (options.treeAdapter.isDocumentTypeNode(node)) {\n return serializeDocumentTypeNode(node, options);\n }\n // Return an empty string for unknown nodes\n return '';\n}\nfunction serializeElement(node, options) {\n const tn = options.treeAdapter.getTagName(node);\n return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n let html = '';\n for (const attr of treeAdapter.getAttrList(node)) {\n html += ' ';\n if (attr.namespace) {\n switch (attr.namespace) {\n case NS.XML: {\n html += `xml:${attr.name}`;\n break;\n }\n case NS.XMLNS: {\n if (attr.name !== 'xmlns') {\n html += 'xmlns:';\n }\n html += attr.name;\n break;\n }\n case NS.XLINK: {\n html += `xlink:${attr.name}`;\n break;\n }\n default: {\n html += `${attr.prefix}:${attr.name}`;\n }\n }\n }\n else {\n html += attr.name;\n }\n html += `=\"${escapeAttribute(attr.value)}\"`;\n }\n return html;\n}\nfunction serializeTextNode(node, options) {\n const { treeAdapter } = options;\n const content = treeAdapter.getTextNodeContent(node);\n const parent = treeAdapter.getParentNode(node);\n const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n return parentTn &&\n treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n hasUnescapedText(parentTn, options.scriptingEnabled)\n ? content\n : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n","import { Parser } from './parser/index.js';\nexport { defaultTreeAdapter } from './tree-adapters/default.js';\nexport { /** @internal */ Parser } from './parser/index.js';\nexport { serialize, serializeOuter } from './serializer/index.js';\nexport { ERR as ErrorCodes } from './common/error-codes.js';\n/** @internal */\nexport * as foreignContent from './common/foreign-content.js';\nexport * as html from './common/html.js';\nexport * as Token from './common/token.js';\n/** @internal */\nexport { Tokenizer, TokenizerMode } from './tokenizer/index.js';\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nexport function parse(html, options) {\n return Parser.parse(html, options);\n}\nexport function parseFragment(fragmentContext, html, options) {\n if (typeof fragmentContext === 'string') {\n options = html;\n html = fragmentContext;\n fragmentContext = null;\n }\n const parser = Parser.getFragmentParser(fragmentContext, options);\n parser.tokenizer.write(html, true);\n return parser.getFragment();\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array<Node> | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` — error, file not usable\n * * `false` — warning, change may be needed\n * * `undefined` — change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file = ''\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual = undefined\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | undefined}\n */\n this.expected = undefined\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note = undefined\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url = undefined\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","/**\n * @typedef ErrorInfo\n * Info on a `parse5` error.\n * @property {string} reason\n * Reason of error.\n * @property {string} description\n * More info on error.\n * @property {false} [url]\n * Turn off if this is not documented in the html5 spec (optional).\n */\n\nexport const errors = {\n /** @type {ErrorInfo} */\n abandonedHeadElementChild: {\n reason: 'Unexpected metadata element after head',\n description:\n 'Unexpected element after head. Expected the element before `</head>`',\n url: false\n },\n /** @type {ErrorInfo} */\n abruptClosingOfEmptyComment: {\n reason: 'Unexpected abruptly closed empty comment',\n description: 'Unexpected `>` or `->`. Expected `-->` to close comments'\n },\n /** @type {ErrorInfo} */\n abruptDoctypePublicIdentifier: {\n reason: 'Unexpected abruptly closed public identifier',\n description:\n 'Unexpected `>`. Expected a closing `\"` or `\\'` after the public identifier'\n },\n /** @type {ErrorInfo} */\n abruptDoctypeSystemIdentifier: {\n reason: 'Unexpected abruptly closed system identifier',\n description:\n 'Unexpected `>`. Expected a closing `\"` or `\\'` after the identifier identifier'\n },\n /** @type {ErrorInfo} */\n absenceOfDigitsInNumericCharacterReference: {\n reason: 'Unexpected non-digit at start of numeric character reference',\n description:\n 'Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references'\n },\n /** @type {ErrorInfo} */\n cdataInHtmlContent: {\n reason: 'Unexpected CDATA section in HTML',\n description:\n 'Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead'\n },\n /** @type {ErrorInfo} */\n characterReferenceOutsideUnicodeRange: {\n reason: 'Unexpected too big numeric character reference',\n description:\n 'Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)'\n },\n /** @type {ErrorInfo} */\n closingOfElementWithOpenChildElements: {\n reason: 'Unexpected closing tag with open child elements',\n description:\n 'Unexpectedly closing tag. Expected other tags to be closed first',\n url: false\n },\n /** @type {ErrorInfo} */\n controlCharacterInInputStream: {\n reason: 'Unexpected control character',\n description:\n 'Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace'\n },\n /** @type {ErrorInfo} */\n controlCharacterReference: {\n reason: 'Unexpected control character reference',\n description:\n 'Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace'\n },\n /** @type {ErrorInfo} */\n disallowedContentInNoscriptInHead: {\n reason: 'Disallowed content inside `<noscript>` in `<head>`',\n description:\n 'Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`',\n url: false\n },\n /** @type {ErrorInfo} */\n duplicateAttribute: {\n reason: 'Unexpected duplicate attribute',\n description:\n 'Unexpectedly double attribute. Expected attributes to occur only once'\n },\n /** @type {ErrorInfo} */\n endTagWithAttributes: {\n reason: 'Unexpected attribute on closing tag',\n description: 'Unexpected attribute. Expected `>` instead'\n },\n /** @type {ErrorInfo} */\n endTagWithTrailingSolidus: {\n reason: 'Unexpected slash at end of closing tag',\n description: 'Unexpected `%c-1`. Expected `>` instead'\n },\n /** @type {ErrorInfo} */\n endTagWithoutMatchingOpenElement: {\n reason: 'Unexpected unopened end tag',\n description: 'Unexpected end tag. Expected no end tag or another end tag',\n url: false\n },\n /** @type {ErrorInfo} */\n eofBeforeTagName: {\n reason: 'Unexpected end of file',\n description: 'Unexpected end of file. Expected tag name instead'\n },\n /** @type {ErrorInfo} */\n eofInCdata: {\n reason: 'Unexpected end of file in CDATA',\n description: 'Unexpected end of file. Expected `]]>` to close the CDATA'\n },\n /** @type {ErrorInfo} */\n eofInComment: {\n reason: 'Unexpected end of file in comment',\n description: 'Unexpected end of file. Expected `-->` to close the comment'\n },\n /** @type {ErrorInfo} */\n eofInDoctype: {\n reason: 'Unexpected end of file in doctype',\n description:\n 'Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)'\n },\n /** @type {ErrorInfo} */\n eofInElementThatCanContainOnlyText: {\n reason: 'Unexpected end of file in element that can only contain text',\n description: 'Unexpected end of file. Expected text or a closing tag',\n url: false\n },\n /** @type {ErrorInfo} */\n eofInScriptHtmlCommentLikeText: {\n reason: 'Unexpected end of file in comment inside script',\n description: 'Unexpected end of file. Expected `-->` to close the comment'\n },\n /** @type {ErrorInfo} */\n eofInTag: {\n reason: 'Unexpected end of file in tag',\n description: 'Unexpected end of file. Expected `>` to close the tag'\n },\n /** @type {ErrorInfo} */\n incorrectlyClosedComment: {\n reason: 'Incorrectly closed comment',\n description: 'Unexpected `%c-1`. Expected `-->` to close the comment'\n },\n /** @type {ErrorInfo} */\n incorrectlyOpenedComment: {\n reason: 'Incorrectly opened comment',\n description: 'Unexpected `%c`. Expected `<!--` to open the comment'\n },\n /** @type {ErrorInfo} */\n invalidCharacterSequenceAfterDoctypeName: {\n reason: 'Invalid sequence after doctype name',\n description: 'Unexpected sequence at `%c`. Expected `public` or `system`'\n },\n /** @type {ErrorInfo} */\n invalidFirstCharacterOfTagName: {\n reason: 'Invalid first character in tag name',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n /** @type {ErrorInfo} */\n misplacedDoctype: {\n reason: 'Misplaced doctype',\n description: 'Unexpected doctype. Expected doctype before head',\n url: false\n },\n /** @type {ErrorInfo} */\n misplacedStartTagForHeadElement: {\n reason: 'Misplaced `<head>` start tag',\n description:\n 'Unexpected start tag `<head>`. Expected `<head>` directly after doctype',\n url: false\n },\n /** @type {ErrorInfo} */\n missingAttributeValue: {\n reason: 'Missing attribute value',\n description:\n 'Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead'\n },\n /** @type {ErrorInfo} */\n missingDoctype: {\n reason: 'Missing doctype before other content',\n description: 'Expected a `<!doctype html>` before anything else',\n url: false\n },\n /** @type {ErrorInfo} */\n missingDoctypeName: {\n reason: 'Missing doctype name',\n description: 'Unexpected doctype end at `%c`. Expected `html` instead'\n },\n /** @type {ErrorInfo} */\n missingDoctypePublicIdentifier: {\n reason: 'Missing public identifier in doctype',\n description: 'Unexpected `%c`. Expected identifier for `public` instead'\n },\n /** @type {ErrorInfo} */\n missingDoctypeSystemIdentifier: {\n reason: 'Missing system identifier in doctype',\n description:\n 'Unexpected `%c`. Expected identifier for `system` instead (suggested: `\"about:legacy-compat\"`)'\n },\n /** @type {ErrorInfo} */\n missingEndTagName: {\n reason: 'Missing name in end tag',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n /** @type {ErrorInfo} */\n missingQuoteBeforeDoctypePublicIdentifier: {\n reason: 'Missing quote before public identifier in doctype',\n description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n },\n /** @type {ErrorInfo} */\n missingQuoteBeforeDoctypeSystemIdentifier: {\n reason: 'Missing quote before system identifier in doctype',\n description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n },\n /** @type {ErrorInfo} */\n missingSemicolonAfterCharacterReference: {\n reason: 'Missing semicolon after character reference',\n description: 'Unexpected `%c`. Expected `;` instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceAfterDoctypePublicKeyword: {\n reason: 'Missing whitespace after public identifier in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceAfterDoctypeSystemKeyword: {\n reason: 'Missing whitespace after system identifier in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceBeforeDoctypeName: {\n reason: 'Missing whitespace before doctype name',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceBetweenAttributes: {\n reason: 'Missing whitespace between attributes',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers: {\n reason:\n 'Missing whitespace between public and system identifiers in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n nestedComment: {\n reason: 'Unexpected nested comment',\n description: 'Unexpected `<!--`. Expected `-->`'\n },\n /** @type {ErrorInfo} */\n nestedNoscriptInHead: {\n reason: 'Unexpected nested `<noscript>` in `<head>`',\n description:\n 'Unexpected `<noscript>`. Expected a closing tag or a meta element',\n url: false\n },\n /** @type {ErrorInfo} */\n nonConformingDoctype: {\n reason: 'Unexpected non-conforming doctype declaration',\n description:\n 'Expected `<!doctype html>` or `<!doctype html system \"about:legacy-compat\">`',\n url: false\n },\n /** @type {ErrorInfo} */\n nonVoidHtmlElementStartTagWithTrailingSolidus: {\n reason: 'Unexpected trailing slash on start tag of non-void element',\n description: 'Unexpected `/`. Expected `>` instead'\n },\n /** @type {ErrorInfo} */\n noncharacterCharacterReference: {\n reason:\n 'Unexpected noncharacter code point referenced by character reference',\n description: 'Unexpected code point. Do not use noncharacters in HTML'\n },\n /** @type {ErrorInfo} */\n noncharacterInInputStream: {\n reason: 'Unexpected noncharacter character',\n description: 'Unexpected code point `%x`. Do not use noncharacters in HTML'\n },\n /** @type {ErrorInfo} */\n nullCharacterReference: {\n reason: 'Unexpected NULL character referenced by character reference',\n description: 'Unexpected code point. Do not use NULL characters in HTML'\n },\n /** @type {ErrorInfo} */\n openElementsLeftAfterEof: {\n reason: 'Unexpected end of file',\n description: 'Unexpected end of file. Expected closing tag instead',\n url: false\n },\n /** @type {ErrorInfo} */\n surrogateCharacterReference: {\n reason: 'Unexpected surrogate character referenced by character reference',\n description:\n 'Unexpected code point. Do not use lone surrogate characters in HTML'\n },\n /** @type {ErrorInfo} */\n surrogateInInputStream: {\n reason: 'Unexpected surrogate character',\n description:\n 'Unexpected code point `%x`. Do not use lone surrogate characters in HTML'\n },\n /** @type {ErrorInfo} */\n unexpectedCharacterAfterDoctypeSystemIdentifier: {\n reason: 'Invalid character after system identifier in doctype',\n description: 'Unexpected character at `%c`. Expected `>`'\n },\n /** @type {ErrorInfo} */\n unexpectedCharacterInAttributeName: {\n reason: 'Unexpected character in attribute name',\n description:\n 'Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter'\n },\n /** @type {ErrorInfo} */\n unexpectedCharacterInUnquotedAttributeValue: {\n reason: 'Unexpected character in unquoted attribute value',\n description: 'Unexpected `%c`. Quote the attribute value to include it'\n },\n /** @type {ErrorInfo} */\n unexpectedEqualsSignBeforeAttributeName: {\n reason: 'Unexpected equals sign before attribute name',\n description: 'Unexpected `%c`. Add an attribute name before it'\n },\n /** @type {ErrorInfo} */\n unexpectedNullCharacter: {\n reason: 'Unexpected NULL character',\n description:\n 'Unexpected code point `%x`. Do not use NULL characters in HTML'\n },\n /** @type {ErrorInfo} */\n unexpectedQuestionMarkInsteadOfTagName: {\n reason: 'Unexpected question mark instead of tag name',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n /** @type {ErrorInfo} */\n unexpectedSolidusInTag: {\n reason: 'Unexpected slash in tag',\n description:\n 'Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value'\n },\n /** @type {ErrorInfo} */\n unknownNamedCharacterReference: {\n reason: 'Unexpected unknown named character reference',\n description:\n 'Unexpected character reference. Expected known named character references'\n }\n}\n","/**\n * @import {Root} from 'hast'\n * @import {ParserError} from 'parse5'\n * @import {Value} from 'vfile'\n * @import {ErrorCode, Options} from './types.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {parse, parseFragment} from 'parse5'\nimport {VFile} from 'vfile'\nimport {VFileMessage} from 'vfile-message'\nimport {errors} from './errors.js'\n\nconst base = 'https://html.spec.whatwg.org/multipage/parsing.html#parse-error-'\n\nconst dashToCamelRe = /-[a-z]/g\nconst formatCRe = /%c(?:([-+])(\\d+))?/g\nconst formatXRe = /%x/g\n\nconst fatalities = {2: true, 1: false, 0: null}\n\n/** @type {Readonly<Options>} */\nconst emptyOptions = {}\n\n/**\n * Turn serialized HTML into a hast tree.\n *\n * @param {VFile | Value} value\n * Serialized HTML to parse.\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {Root}\n * Tree.\n */\nexport function fromHtml(value, options) {\n const settings = options || emptyOptions\n const onerror = settings.onerror\n const file = value instanceof VFile ? value : new VFile(value)\n const parseFunction = settings.fragment ? parseFragment : parse\n const document = String(file)\n const p5Document = parseFunction(document, {\n sourceCodeLocationInfo: true,\n // Note `parse5` types currently do not allow `undefined`.\n onParseError: settings.onerror ? internalOnerror : null,\n scriptingEnabled: false\n })\n\n // `parse5` returns document which are always mapped to roots.\n return /** @type {Root} */ (\n fromParse5(p5Document, {\n file,\n space: settings.space,\n verbose: settings.verbose\n })\n )\n\n /**\n * Handle a parse error.\n *\n * @param {ParserError} error\n * Parse5 error.\n * @returns {undefined}\n * Nothing.\n */\n function internalOnerror(error) {\n const code = error.code\n const name = camelcase(code)\n const setting = settings[name]\n const config = setting === null || setting === undefined ? true : setting\n const level = typeof config === 'number' ? config : config ? 1 : 0\n\n if (level) {\n const info = errors[name]\n assert(info, 'expected known error from `parse5`')\n\n const message = new VFileMessage(format(info.reason), {\n place: {\n start: {\n line: error.startLine,\n column: error.startCol,\n offset: error.startOffset\n },\n end: {\n line: error.endLine,\n column: error.endCol,\n offset: error.endOffset\n }\n },\n ruleId: code,\n source: 'hast-util-from-html'\n })\n\n if (file.path) {\n message.file = file.path\n message.name = file.path + ':' + message.name\n }\n\n message.fatal = fatalities[level]\n message.note = format(info.description)\n message.url = info.url === false ? undefined : base + code\n\n assert(onerror, '`internalOnerror` is not passed if `onerror` is not set')\n onerror(message)\n }\n\n /**\n * Format a human readable string about an error.\n *\n * @param {string} value\n * Value to format.\n * @returns {string}\n * Formatted.\n */\n function format(value) {\n return value.replace(formatCRe, formatC).replace(formatXRe, formatX)\n\n /**\n * Format the character.\n *\n * @param {string} _\n * Match.\n * @param {string} $1\n * Sign (`-` or `+`, optional).\n * @param {string} $2\n * Offset.\n * @returns {string}\n * Formatted.\n */\n function formatC(_, $1, $2) {\n const offset =\n ($2 ? Number.parseInt($2, 10) : 0) * ($1 === '-' ? -1 : 1)\n const char = document.charAt(error.startOffset + offset)\n return visualizeCharacter(char)\n }\n\n /**\n * Format the character code.\n *\n * @returns {string}\n * Formatted.\n */\n function formatX() {\n return visualizeCharacterCode(document.charCodeAt(error.startOffset))\n }\n }\n }\n}\n\n/**\n * @param {string} value\n * Error code in dash case.\n * @returns {ErrorCode}\n * Error code in camelcase.\n */\nfunction camelcase(value) {\n // This should match an error code.\n return /** @type {ErrorCode} */ (value.replace(dashToCamelRe, dashToCamel))\n}\n\n/**\n * @param {string} $0\n * Match.\n * @returns {string}\n * Camelcased.\n */\nfunction dashToCamel($0) {\n return $0.charAt(1).toUpperCase()\n}\n\n/**\n * @param {string} char\n * Character.\n * @returns {string}\n * Formatted.\n */\nfunction visualizeCharacter(char) {\n return char === '`' ? '` ` `' : char\n}\n\n/**\n * @param {number} charCode\n * Character code.\n * @returns {string}\n * Formatted.\n */\nfunction visualizeCharacterCode(charCode) {\n return '0x' + charCode.toString(16).toUpperCase()\n}\n","import { parse } from \"yaml\";\nimport type { BasesData, BasesView, SortEntry } from \"./types\";\n\nfunction extractBaseBlock(raw: string): string | null {\n const lines = raw.split(\"\\n\");\n let start = -1;\n for (let i = 0; i < lines.length; i += 1) {\n const trimmed = (lines[i] ?? \"\").trim();\n if (!trimmed.startsWith(\"```\")) continue;\n const lang = trimmed.slice(3).trim();\n if (lang === \"base\") {\n start = i + 1;\n break;\n }\n }\n\n if (start === -1) return null;\n\n let end = -1;\n for (let i = start; i < lines.length; i += 1) {\n if ((lines[i] ?? \"\").trim().startsWith(\"```\")) {\n end = i;\n break;\n }\n }\n\n if (end === -1) return null;\n return lines.slice(start, end).join(\"\\n\");\n}\n\nfunction normalizeSortEntries(sort: unknown): SortEntry[] | undefined {\n if (!Array.isArray(sort)) return undefined;\n const result: SortEntry[] = [];\n for (const entry of sort) {\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) continue;\n const rec = entry as Record<string, unknown>;\n // Obsidian uses \"column\" but our SortEntry expects \"property\"\n const property =\n typeof rec.property === \"string\"\n ? rec.property\n : typeof rec.column === \"string\"\n ? rec.column\n : undefined;\n if (!property) continue;\n const direction = rec.direction === \"DESC\" ? (\"DESC\" as const) : (\"ASC\" as const);\n result.push({ property, direction });\n }\n return result;\n}\n\nfunction normalizeViews(views: unknown): BasesView[] | null | undefined {\n if (views === undefined) return undefined;\n if (!Array.isArray(views)) return null;\n\n const normalized = views\n .map((view) => {\n if (!view || typeof view !== \"object\" || Array.isArray(view)) return null;\n const record = view as Record<string, unknown>;\n if (typeof record.type !== \"string\") return null;\n const sort = normalizeSortEntries(record.sort);\n if (sort !== undefined) {\n record.sort = sort;\n }\n return record as BasesView;\n })\n .filter((view): view is BasesView => view !== null);\n\n return normalized;\n}\n\nexport function parseBasesData(raw: string): BasesData | null {\n const block = extractBaseBlock(raw);\n const content = block ?? raw;\n\n let data: unknown;\n try {\n data = parse(content);\n } catch {\n return null;\n }\n\n if (!data || typeof data !== \"object\" || Array.isArray(data)) {\n return null;\n }\n\n const record = data as Record<string, unknown>;\n const views = normalizeViews(record.views);\n if (views === null) return null;\n\n return {\n ...(record as BasesData),\n views,\n };\n}\n","import type {\n QuartzPageTypePlugin,\n PageMatcher,\n FullSlug,\n FilePath,\n VirtualPage,\n TreeTransform,\n QuartzComponentProps,\n} from \"@quartz-community/types\";\nimport type { Root as HtmlRoot, Element, ElementContent } from \"hast\";\nimport { visit } from \"unist-util-visit\";\nimport { render } from \"preact-render-to-string\";\nimport { h, Fragment } from \"preact\";\nimport { fromHtml } from \"hast-util-from-html\";\nimport { readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { slugifyFilePath } from \"@quartz-community/utils\";\nimport type { SimpleSlug } from \"@quartz-community/utils\";\nimport { parseBasesData } from \"./parser\";\nimport { resolveBasesEntries } from \"./resolver\";\nimport BasesBody from \"./components/BasesBody\";\nimport type { BasesPageOptions, BasesData } from \"./types\";\nimport type { EvalContext } from \"./compiler\";\nimport { registerBuiltinViews } from \"./components/views\";\nimport { registerCustomViews, viewRegistry } from \"./registry\";\nimport { i18n } from \"./i18n\";\nimport { ViewSelector } from \"./components/ViewSelector\";\n\nconst basesMatcher: PageMatcher = ({ fileData }) => {\n return \"basesData\" in fileData;\n};\n\nexport const BasesPage: QuartzPageTypePlugin<BasesPageOptions> = (opts) => ({\n name: \"BasesPage\",\n priority: 20,\n fileExtensions: [\".base\"],\n match: basesMatcher,\n generate({ content, ctx }) {\n const baseFiles = ctx.allFiles.filter((fp) => fp.endsWith(\".base\"));\n const allFileData = content.map((c) => c[1].data);\n const virtualPages: VirtualPage[] = [];\n\n for (const filePath of baseFiles) {\n const fullPath = join(ctx.argv.directory, filePath);\n let raw: string;\n try {\n raw = readFileSync(fullPath, \"utf-8\");\n } catch {\n continue;\n }\n\n const basesData = parseBasesData(raw);\n if (!basesData) continue;\n\n const slug = slugifyFilePath(filePath as unknown as FilePath) as unknown as FullSlug;\n const fileWithoutExt = filePath.replace(/\\.base$/, \"\");\n const baseName = fileWithoutExt.split(\"/\").pop() ?? \"Base\";\n\n const lastSlash = filePath.lastIndexOf(\"/\");\n const folder = lastSlash >= 0 ? filePath.slice(0, lastSlash) : \"\";\n const dotIndex = filePath.lastIndexOf(\".\");\n const ext = dotIndex >= 0 ? filePath.slice(dotIndex + 1) : \"\";\n const basesSelfContext = {\n file: {\n name: baseName,\n path: filePath,\n folder,\n ext,\n },\n };\n\n virtualPages.push({\n slug,\n title: baseName,\n data: {\n frontmatter: { title: baseName, tags: [] },\n links: resolveBasesEntries(\n basesData,\n allFileData,\n undefined,\n basesSelfContext,\n ).entries.map((e) => e.slug as SimpleSlug),\n basesData,\n basesOptions: opts,\n basesSelfContext,\n },\n });\n }\n\n return virtualPages;\n },\n layout: \"bases\",\n body: BasesBody,\n treeTransforms(_ctx) {\n return [createBasesCodeblockTransform(opts)];\n },\n});\n\n/**\n * Creates a tree transform that resolves `data-qz-bases-codeblock` placeholder\n * divs at render time, replacing them with fully rendered Bases views.\n *\n * This runs after transclusion in `renderPage()`, when `allFiles` is available.\n */\nfunction createBasesCodeblockTransform(opts: BasesPageOptions | undefined): TreeTransform {\n let builtinViewsRegistered = false;\n\n return (root: HtmlRoot, _slug: FullSlug, componentData: QuartzComponentProps) => {\n const fileData = componentData.fileData as Record<string, unknown>;\n const basesBlocks = fileData.basesBlocks as BasesData[] | undefined;\n if (!basesBlocks || basesBlocks.length === 0) return;\n\n // Ensure built-in views are registered\n if (!builtinViewsRegistered) {\n registerBuiltinViews();\n builtinViewsRegistered = true;\n }\n if (opts?.customViews) {\n registerCustomViews(opts.customViews);\n }\n\n const locale = componentData.cfg?.locale ?? \"en-US\";\n const localeStrings = i18n(locale).components.bases;\n const allFiles = componentData.allFiles;\n const slug = (componentData.fileData.slug as string) ?? \"\";\n const allSlugs = ((componentData.ctx as Record<string, unknown>)?.allSlugs as string[]) ?? [];\n const linkResolution = opts?.linkResolution ?? \"shortest\";\n\n visit(root, \"element\", (node: Element, index, parent) => {\n if (!parent || index === undefined) return;\n const blockIndexStr = node.properties?.[\"dataQzBasesCodeblock\"] as string | undefined;\n if (blockIndexStr === undefined) return;\n\n const blockIndex = Number(blockIndexStr);\n const basesData = basesBlocks[blockIndex];\n if (!basesData) return;\n\n const viewName = node.properties?.[\"dataQzBasesView\"] as string | undefined;\n\n const fd = componentData.fileData as Record<string, unknown>;\n const selfPath = (fd.relativePath ?? fd.filePath ?? slug) as string;\n const selfName =\n selfPath\n .split(\"/\")\n .pop()\n ?.replace(/\\.[^.]+$/, \"\") ?? \"\";\n const selfLastSlash = selfPath.lastIndexOf(\"/\");\n const selfContext = {\n file: {\n name: selfName,\n path: selfPath,\n folder: selfLastSlash >= 0 ? selfPath.slice(0, selfLastSlash) : \"\",\n ext: selfPath.slice(selfPath.lastIndexOf(\".\") + 1),\n },\n };\n\n const baseSlugs = new Set(allSlugs.filter((s) => s.endsWith(\".base\")));\n const baseAliases = new Set([...baseSlugs].map((s) => s.replace(/\\.base$/, \"\")));\n const contentSlugs = allSlugs.filter((s) => !baseSlugs.has(s) && !baseAliases.has(s));\n\n const htmlString = renderBasesInline(\n basesData,\n allFiles,\n locale,\n localeStrings,\n opts,\n slug,\n contentSlugs,\n linkResolution,\n viewName,\n selfContext,\n );\n const fragment = fromHtml(htmlString, { fragment: true }) as HtmlRoot;\n\n // Replace the placeholder node's children with the rendered content\n node.tagName = \"div\";\n node.properties = { class: \"bases-page bases-inline\" };\n node.children = fragment.children as ElementContent[];\n });\n };\n}\n\n/**\n * Render a BasesData block to an HTML string, replicating the core rendering\n * logic of BasesBody.tsx but invoked at tree-transform time.\n */\nfunction renderBasesInline(\n basesData: BasesData,\n allFiles: Record<string, unknown>[],\n locale: string,\n localeStrings: { noData: string; noViews: string },\n opts: BasesPageOptions | undefined,\n slug: string,\n allSlugs: string[],\n linkResolution: \"absolute\" | \"relative\" | \"shortest\",\n viewName?: string,\n selfContext?: EvalContext[\"self\"],\n): string {\n let views = basesData.views ?? [];\n\n if (viewName) {\n const viewNameLower = viewName.toLowerCase();\n views = views.filter((v) => v.name?.toLowerCase() === viewNameLower);\n if (views.length === 0) {\n return `<div class=\"bases-empty\">View &quot;${viewName}&quot; not found</div>`;\n }\n }\n\n if (views.length === 0) {\n return `<div class=\"bases-empty\">${localeStrings.noViews}</div>`;\n }\n\n const preferredType = opts?.defaultViewType ?? \"table\";\n const initialIndex = Math.max(\n 0,\n views.findIndex((view) => view.type === preferredType),\n );\n\n // Collect CSS from custom view registrations (deduplicated by type)\n const activeTypes = new Set(views.map((v) => v.type));\n const viewCssChunks: string[] = [];\n for (const typeId of activeTypes) {\n const reg = viewRegistry.get(typeId);\n if (reg?.css) viewCssChunks.push(reg.css);\n }\n\n // Render the view selector\n const selectorHtml = render(\n h(Fragment, null, ViewSelector({ views, activeIndex: initialIndex, locale })),\n );\n\n // Render each view panel\n const viewPanels = views.map((view, index) => {\n const { entries, total } = resolveBasesEntries(basesData, allFiles, view, selfContext);\n const registration = viewRegistry.get(view.type);\n const Renderer = registration?.render;\n const activeClass = index === initialIndex ? \" is-active\" : \"\";\n\n let innerHtml: string;\n if (entries.length === 0) {\n innerHtml = `<div class=\"bases-empty\">${localeStrings.noData}</div>`;\n } else if (Renderer) {\n innerHtml = render(\n h(\n Fragment,\n null,\n Renderer({\n entries,\n view,\n basesData,\n total,\n locale,\n slug,\n allSlugs,\n linkResolution,\n options: registration?.options,\n }),\n ),\n );\n } else {\n innerHtml = `<div class=\"bases-empty\">Unknown view type: ${view.type}</div>`;\n }\n\n return `<div class=\"bases-view${activeClass}\" data-view-index=\"${index}\" data-view-type=\"${view.type}\">${innerHtml}</div>`;\n });\n\n const cssBlock = viewCssChunks.length > 0 ? `<style>${viewCssChunks.join(\"\\n\")}</style>` : \"\";\n\n return `${cssBlock}${selectorHtml}<div class=\"bases-view-container\">${viewPanels.join(\"\")}</div>`;\n}\n","import type { Root as HTMLRoot, Element, ElementContent } from \"hast\";\nimport type { QuartzTransformerPlugin, BuildCtx } from \"@quartz-community/types\";\nimport type { FilePath } from \"@quartz-community/utils\";\nimport { slugifyFilePath } from \"@quartz-community/utils\";\nimport type { VFile } from \"vfile\";\nimport { visit } from \"unist-util-visit\";\nimport { readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { parseBasesData } from \"./parser\";\nimport type { BasesData, BasesPageOptions } from \"./types\";\n\n/**\n * Rehype plugin that finds ` ```base ` codeblocks in the HAST tree and replaces\n * them with placeholder `<div>` elements. The parsed BasesData for each block is\n * stored on `vfile.data.basesBlocks` so it can be resolved at render time by the\n * tree-transform hook (when `allFiles` is available).\n *\n * Markdown parsers convert fenced code blocks to `<pre><code class=\"language-base\">`.\n * Syntax highlighters (e.g. rehype-pretty-code) may transform this further to\n * `<figure><pre><code data-language=\"base\">` with text wrapped in `<span data-line>`.\n * This plugin detects both patterns, extracts the text content, parses it as YAML\n * via `parseBasesData()`, and replaces the top-level node with a placeholder div.\n */\nexport const BasesTransformer: QuartzTransformerPlugin<Partial<BasesPageOptions>> = (_opts) => {\n return {\n name: \"BasesTransformer\",\n htmlPlugins(ctx: BuildCtx) {\n const baseFileBySlug = buildBaseFileLookup(ctx);\n\n return [\n () => {\n return (tree: HTMLRoot, file: VFile) => {\n const embeds: string[] = [];\n\n visit(tree, \"element\", (node: Element, index, parent) => {\n if (!parent || index === undefined) return;\n if (node.tagName !== \"blockquote\") return;\n const classes = (node.properties?.className ?? []) as string[];\n if (!classes.includes(\"transclude\")) return;\n\n const url = node.properties?.dataUrl as string | undefined;\n if (!url) return;\n\n const baseFile = baseFileBySlug.get(url);\n if (!baseFile) {\n embeds.push(url);\n return;\n }\n\n const block = (node.properties?.dataBlock as string) ?? \"\";\n const viewName = block.startsWith(\"#\") ? block.slice(1) : \"\";\n\n const fullPath = join(ctx.argv.directory, baseFile);\n let raw: string;\n try {\n raw = readFileSync(fullPath, \"utf-8\");\n } catch {\n embeds.push(url);\n return;\n }\n\n const basesData = parseBasesData(raw);\n if (!basesData) {\n embeds.push(url);\n return;\n }\n\n if (!file.data.basesBlocks) file.data.basesBlocks = [];\n const blockIndex = file.data.basesBlocks.length;\n file.data.basesBlocks.push(basesData);\n\n const placeholder: Element = {\n type: \"element\",\n tagName: \"div\",\n properties: {\n dataQzBasesCodeblock: String(blockIndex),\n ...(viewName ? { dataQzBasesView: viewName } : {}),\n },\n children: [],\n };\n parent.children[index] = placeholder;\n });\n\n if (embeds.length > 0) {\n file.data.embeds = embeds;\n }\n };\n },\n () => {\n return (tree: HTMLRoot, file: VFile) => {\n const basesBlocks: BasesData[] = [];\n\n visit(tree, \"element\", (node: Element, index, parent) => {\n if (!parent || index === undefined) return;\n\n // Detect base codeblocks in two forms:\n // 1. Raw: <pre><code class=\"language-base\">\n // 2. Post-syntax-highlighting: <figure><pre><code data-language=\"base\">\n // (rehype-pretty-code wraps in <figure> and uses data-language prop)\n const {\n codeElement,\n replaceNode: _replaceNode,\n replaceIndex,\n replaceParent,\n } = findBaseCodeblock(node, index, parent);\n if (!codeElement) return;\n\n // Extract raw text from the <code> element (handles both plain\n // text nodes and <span data-line> wrappers from syntax highlighters)\n const rawText = extractText(codeElement);\n if (!rawText) return;\n\n // Parse as YAML — parseBasesData handles both raw YAML and ``` fenced blocks\n const basesData = parseBasesData(rawText);\n if (!basesData) return;\n\n const blockIndex = basesBlocks.length;\n basesBlocks.push(basesData);\n\n // Replace the <pre> node with a placeholder div\n const placeholder: Element = {\n type: \"element\",\n tagName: \"div\",\n properties: {\n dataQzBasesCodeblock: String(blockIndex),\n },\n children: [],\n };\n\n replaceParent.children[replaceIndex] = placeholder;\n });\n\n if (basesBlocks.length > 0) {\n file.data.basesBlocks = basesBlocks;\n }\n };\n },\n ];\n },\n };\n};\n\n/**\n * Detect whether a HAST node is (or contains) a ```base codeblock.\n * Returns the code element and the node/parent/index to replace.\n *\n * Handles two shapes:\n * - `<pre><code class=\"language-base\">` (standard markdown → HTML)\n * - `<figure data-rehype-pretty-code-figure><pre><code data-language=\"base\">` (after syntax highlighting)\n */\nfunction findBaseCodeblock(\n node: Element,\n index: number | undefined,\n parent: { children: (ElementContent | import(\"hast\").RootContent)[] },\n): {\n codeElement: Element | null;\n replaceNode: Element;\n replaceIndex: number;\n replaceParent: { children: (ElementContent | import(\"hast\").RootContent)[] };\n} {\n const empty = {\n codeElement: null,\n replaceNode: node,\n replaceIndex: index ?? 0,\n replaceParent: parent,\n };\n\n // Case 1: node is <pre> directly\n if (node.tagName === \"pre\") {\n const code = findCodeChild(node);\n if (code && isBaseLanguage(code)) {\n return {\n codeElement: code,\n replaceNode: node,\n replaceIndex: index ?? 0,\n replaceParent: parent,\n };\n }\n return empty;\n }\n\n // Case 2: node is <figure data-rehype-pretty-code-figure> wrapping <pre><code>\n if (node.tagName === \"figure\" && node.properties?.dataRehypePrettyCodeFigure !== undefined) {\n const pre = node.children.find(\n (child): child is Element => child.type === \"element\" && child.tagName === \"pre\",\n );\n if (pre) {\n const code = findCodeChild(pre);\n if (code && isBaseLanguage(code)) {\n // Replace the <figure>, not just the <pre>\n return {\n codeElement: code,\n replaceNode: node,\n replaceIndex: index ?? 0,\n replaceParent: parent,\n };\n }\n }\n return empty;\n }\n\n return empty;\n}\n\n/** Find the first <code> child element */\nfunction findCodeChild(pre: Element): Element | null {\n return (\n pre.children.find(\n (child): child is Element => child.type === \"element\" && child.tagName === \"code\",\n ) ?? null\n );\n}\n\n/**\n * Check whether a <code> element represents a `base` language block.\n * Checks both `class=\"language-base\"` (standard) and `data-language=\"base\"` (rehype-pretty-code).\n */\nfunction isBaseLanguage(code: Element): boolean {\n // Standard: class includes \"language-base\"\n const classNames = (code.properties?.className ?? []) as string[];\n if (classNames.includes(\"language-base\")) return true;\n\n // rehype-pretty-code: data-language=\"base\"\n if (code.properties?.dataLanguage === \"base\") return true;\n\n return false;\n}\n\n/**\n * Recursively extract text content from a HAST element.\n * Handles both plain text nodes and <span data-line> wrappers\n * from syntax highlighters. Avoids regex by walking the tree directly.\n */\nfunction extractText(node: Element): string {\n const parts: string[] = [];\n for (const child of node.children) {\n if (child.type === \"text\") {\n parts.push(child.value);\n } else if (child.type === \"element\") {\n parts.push(extractText(child));\n }\n }\n return parts.join(\"\");\n}\n\nfunction buildBaseFileLookup(ctx: BuildCtx): Map<string, string> {\n const lookup = new Map<string, string>();\n const baseFiles = ctx.allFiles.filter((fp) => fp.endsWith(\".base\"));\n for (const fp of baseFiles) {\n const slug = slugifyFilePath(fp as unknown as FilePath);\n lookup.set(slug, fp);\n\n const fileName = fp.split(\"/\").pop() ?? \"\";\n const fileNameSlug = slugifyFilePath(fileName as unknown as FilePath);\n if (!lookup.has(fileNameSlug)) {\n lookup.set(fileNameSlug, fp);\n }\n\n const withoutExt = fp.replace(/\\.base$/, \"\");\n const nameOnly = withoutExt.split(\"/\").pop() ?? \"\";\n const nameSlug = slugifyFilePath(nameOnly as unknown as FilePath);\n if (!lookup.has(nameSlug)) {\n lookup.set(nameSlug, fp);\n }\n }\n return lookup;\n}\n\ndeclare module \"vfile\" {\n interface DataMap {\n basesBlocks?: BasesData[];\n embeds?: string[];\n }\n}\n"]}