htmlparser2
Advanced tools
+18
-1
@@ -98,3 +98,2 @@ import Tokenizer, { type Callbacks, QuoteType } from "./Tokenizer.js"; | ||
| private readonly stack; | ||
| /** Determines whether self-closing tags are recognized. */ | ||
| private readonly foreignContext; | ||
@@ -127,2 +126,4 @@ private readonly cbs; | ||
| ontextentity(cp: number, endIndex: number): void; | ||
| /** @internal */ | ||
| isInForeignContext(): boolean; | ||
| /** | ||
@@ -135,2 +136,12 @@ * Checks if the current tag is a void element. Override this if you want | ||
| /** | ||
| * Read a tag name from the buffer. | ||
| * | ||
| * When `lowerCaseTagNames` is enabled (the default in HTML mode), the name | ||
| * is lowercased and may be adjusted for SVG casing or the `image` → `img` | ||
| * alias. | ||
| * @param start Start index of the tag name in the buffer. | ||
| * @param endIndex End index of the tag name in the buffer. | ||
| */ | ||
| private readTagName; | ||
| /** | ||
| * @param start Start index for the current parser event. | ||
@@ -159,2 +170,8 @@ * @param endIndex End index for the current parser event. | ||
| onselfclosingtag(endIndex: number): void; | ||
| /** | ||
| * Pop the top element off the stack, emit a close event, and maintain | ||
| * the foreign context stack. | ||
| * @param implied Whether this close is implied (not from an explicit end tag). | ||
| */ | ||
| private popElement; | ||
| private closeCurrentTag; | ||
@@ -161,0 +178,0 @@ /** |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../src/Parser.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,EAAE,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAsGtE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;;;OAKG;IACH,WAAW,CACP,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAClC,IAAI,CAAC;IACR,SAAS,CACL,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAChC,SAAS,EAAE,OAAO,GACnB,IAAI,CAAC;IACR,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,IAAI,IAAI,CAAC;IACrB,UAAU,IAAI,IAAI,CAAC;IACnB,YAAY,IAAI,IAAI,CAAC;IACrB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7D;AAID;;GAEG;AACH,qBAAa,MAAO,YAAW,SAAS;IAmChC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAlC5B,yCAAyC;IACzC,UAAU,SAAK;IACf,uCAAuC;IACvC,QAAQ,SAAK;IACb;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAK;IAEzB,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAY;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmB;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAU;IAClD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAU;IAC/C,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,YAAY,CAAK;IACzB,kFAAkF;IAClF,OAAO,CAAC,UAAU,CAAK;IACvB,kFAAkF;IAClF,OAAO,CAAC,KAAK,CAAS;gBAGlB,GAAG,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,EACZ,OAAO,GAAE,aAAkB;IAmBhD;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAO7C;;;;OAIG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMhD;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9C;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAYpD,OAAO,CAAC,WAAW;IA8BnB,OAAO,CAAC,UAAU;IAclB;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQpC;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA2CjD;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAaxC,OAAO,CAAC,eAAe;IAYvB;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IASnD;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInD;;;OAGG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAqBrD,OAAO,CAAC,kBAAkB;IAW1B;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAapD;;;;OAIG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAa9D;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAUhE;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAiB9D,gBAAgB;IAChB,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,KAAK,IAAI,IAAI;IAkBb;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKjC,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,WAAW;IAMnB;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAa1B;;;OAGG;IACH,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAWzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,MAAM,IAAI,IAAI;CAYjB"} | ||
| {"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../src/Parser.ts"],"names":[],"mappings":"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"} |
+159
-43
@@ -13,2 +13,3 @@ const { fromCodePoint } = String; | ||
| const pTag = new Set(["p"]); | ||
| const headingTags = new Set(["h1", "h2", "h3", "h4", "h5", "h6", "p"]); | ||
| const tableSectionTags = new Set(["thead", "tbody"]); | ||
@@ -22,10 +23,11 @@ const ddtTags = new Set(["dd", "dt"]); | ||
| ["body", new Set(["head", "link", "script"])], | ||
| ["a", new Set(["a"])], | ||
| ["li", new Set(["li"])], | ||
| ["p", pTag], | ||
| ["h1", pTag], | ||
| ["h2", pTag], | ||
| ["h3", pTag], | ||
| ["h4", pTag], | ||
| ["h5", pTag], | ||
| ["h6", pTag], | ||
| ["h1", headingTags], | ||
| ["h2", headingTags], | ||
| ["h3", headingTags], | ||
| ["h4", headingTags], | ||
| ["h5", headingTags], | ||
| ["h6", headingTags], | ||
| ["select", formTags], | ||
@@ -67,2 +69,3 @@ ["input", formTags], | ||
| ]); | ||
| const DOCUMENT_TYPE = "doctype"; | ||
| const voidElements = new Set([ | ||
@@ -90,2 +93,8 @@ "area", | ||
| const foreignContextElements = new Set(["math", "svg"]); | ||
| /** | ||
| * Elements that can be used to integrate HTML content within foreign namespaces (e.g., SVG or MathML). | ||
| * | ||
| * Entries must use the SVG-adjusted casing (e.g. "foreignObject" not | ||
| * "foreignobject") since they are compared against adjusted tag names. | ||
| */ | ||
| const htmlIntegrationElements = new Set([ | ||
@@ -98,6 +107,51 @@ "mi", | ||
| "annotation-xml", | ||
| "foreignobject", | ||
| "foreignObject", | ||
| "desc", | ||
| "title", | ||
| ]); | ||
| const svgTagNameAdjustments = new Map([ | ||
| ["altglyph", "altGlyph"], | ||
| ["altglyphdef", "altGlyphDef"], | ||
| ["altglyphitem", "altGlyphItem"], | ||
| ["animatecolor", "animateColor"], | ||
| ["animatemotion", "animateMotion"], | ||
| ["animatetransform", "animateTransform"], | ||
| ["clippath", "clipPath"], | ||
| ["feblend", "feBlend"], | ||
| ["fecolormatrix", "feColorMatrix"], | ||
| ["fecomponenttransfer", "feComponentTransfer"], | ||
| ["fecomposite", "feComposite"], | ||
| ["feconvolvematrix", "feConvolveMatrix"], | ||
| ["fediffuselighting", "feDiffuseLighting"], | ||
| ["fedisplacementmap", "feDisplacementMap"], | ||
| ["fedistantlight", "feDistantLight"], | ||
| ["fedropshadow", "feDropShadow"], | ||
| ["feflood", "feFlood"], | ||
| ["fefunca", "feFuncA"], | ||
| ["fefuncb", "feFuncB"], | ||
| ["fefuncg", "feFuncG"], | ||
| ["fefuncr", "feFuncR"], | ||
| ["fegaussianblur", "feGaussianBlur"], | ||
| ["feimage", "feImage"], | ||
| ["femerge", "feMerge"], | ||
| ["femergenode", "feMergeNode"], | ||
| ["femorphology", "feMorphology"], | ||
| ["feoffset", "feOffset"], | ||
| ["fepointlight", "fePointLight"], | ||
| ["fespecularlighting", "feSpecularLighting"], | ||
| ["fespotlight", "feSpotLight"], | ||
| ["fetile", "feTile"], | ||
| ["feturbulence", "feTurbulence"], | ||
| ["foreignobject", "foreignObject"], | ||
| ["glyphref", "glyphRef"], | ||
| ["lineargradient", "linearGradient"], | ||
| ["radialgradient", "radialGradient"], | ||
| ["textpath", "textPath"], | ||
| ]); | ||
| var ForeignContext; | ||
| (function (ForeignContext) { | ||
| ForeignContext[ForeignContext["None"] = 0] = "None"; | ||
| ForeignContext[ForeignContext["Svg"] = 1] = "Svg"; | ||
| ForeignContext[ForeignContext["MathML"] = 2] = "MathML"; | ||
| })(ForeignContext || (ForeignContext = {})); | ||
| const reNameEnd = /\s|\//; | ||
@@ -123,3 +177,2 @@ /** | ||
| stack = []; | ||
| /** Determines whether self-closing tags are recognized. */ | ||
| foreignContext; | ||
@@ -149,3 +202,3 @@ cbs; | ||
| this.tokenizer = new (options.Tokenizer ?? Tokenizer)(this.options, this); | ||
| this.foreignContext = [!this.htmlMode]; | ||
| this.foreignContext = [ForeignContext.None]; | ||
| this.cbs.onparserinit?.(this); | ||
@@ -175,2 +228,6 @@ } | ||
| } | ||
| /** @internal */ | ||
| isInForeignContext() { | ||
| return this.foreignContext[0] !== ForeignContext.None; | ||
| } | ||
| /** | ||
@@ -185,2 +242,39 @@ * Checks if the current tag is a void element. Override this if you want | ||
| /** | ||
| * Read a tag name from the buffer. | ||
| * | ||
| * When `lowerCaseTagNames` is enabled (the default in HTML mode), the name | ||
| * is lowercased and may be adjusted for SVG casing or the `image` → `img` | ||
| * alias. | ||
| * @param start Start index of the tag name in the buffer. | ||
| * @param endIndex End index of the tag name in the buffer. | ||
| */ | ||
| readTagName(start, endIndex) { | ||
| const name = this.lowerCaseTagNames | ||
| ? this.getSlice(start, endIndex).toLowerCase() | ||
| : this.getSlice(start, endIndex); | ||
| if (!(this.lowerCaseTagNames && this.htmlMode)) { | ||
| return name; | ||
| } | ||
| if (this.foreignContext[0] === ForeignContext.Svg) { | ||
| return svgTagNameAdjustments.get(name) ?? name; | ||
| } | ||
| /* | ||
| * Closing tags for SVG elements inside HTML integration points | ||
| * (e.g. </foreignObject> while inside its own content) need case | ||
| * adjustment so the name matches what was pushed to the stack. | ||
| * `foreignContext.length > 1` means a foreign ancestor exists — | ||
| * the base [None] entry plus at least one pushed context. | ||
| */ | ||
| if (this.foreignContext.length > 1) { | ||
| const adjusted = svgTagNameAdjustments.get(name); | ||
| if (adjusted !== undefined && this.stack.includes(adjusted)) { | ||
| return adjusted; | ||
| } | ||
| } | ||
| if (!this.isInForeignContext()) { | ||
| return name === "image" ? "img" : name; | ||
| } | ||
| return name; | ||
| } | ||
| /** | ||
| * @param start Start index for the current parser event. | ||
@@ -192,7 +286,3 @@ * @param endIndex End index for the current parser event. | ||
| this.endIndex = endIndex; | ||
| let name = this.getSlice(start, endIndex); | ||
| if (this.lowerCaseTagNames) { | ||
| name = name.toLowerCase(); | ||
| } | ||
| this.emitOpenTag(name); | ||
| this.emitOpenTag(this.readTagName(start, endIndex)); | ||
| } | ||
@@ -202,10 +292,16 @@ emitOpenTag(name) { | ||
| this.tagname = name; | ||
| /* | ||
| * The spec ignores a second <form> when one is already open. | ||
| * Setting tagname to "" suppresses all downstream effects: attribs | ||
| * stays null so endOpenTag is a no-op, and closeCurrentTag can't | ||
| * match "" on the stack. | ||
| */ | ||
| if (this.htmlMode && name === "form" && this.stack.includes("form")) { | ||
| this.tagname = ""; | ||
| return; | ||
| } | ||
| const impliesClose = this.htmlMode && openImpliesClose.get(name); | ||
| if (impliesClose) { | ||
| while (this.stack.length > 0 && impliesClose.has(this.stack[0])) { | ||
| const element = this.stack.shift(); | ||
| if (element === undefined) { | ||
| break; | ||
| } | ||
| this.cbs.onclosetag?.(element, true); | ||
| this.popElement(true); | ||
| } | ||
@@ -216,7 +312,10 @@ } | ||
| if (this.htmlMode) { | ||
| if (foreignContextElements.has(name)) { | ||
| this.foreignContext.unshift(true); | ||
| if (name === "svg") { | ||
| this.foreignContext.unshift(ForeignContext.Svg); | ||
| } | ||
| else if (name === "math") { | ||
| this.foreignContext.unshift(ForeignContext.MathML); | ||
| } | ||
| else if (htmlIntegrationElements.has(name)) { | ||
| this.foreignContext.unshift(false); | ||
| this.foreignContext.unshift(ForeignContext.None); | ||
| } | ||
@@ -257,21 +356,10 @@ } | ||
| this.endIndex = endIndex; | ||
| let name = this.getSlice(start, endIndex); | ||
| if (this.lowerCaseTagNames) { | ||
| name = name.toLowerCase(); | ||
| } | ||
| if (this.htmlMode && | ||
| (foreignContextElements.has(name) || | ||
| htmlIntegrationElements.has(name))) { | ||
| this.foreignContext.shift(); | ||
| } | ||
| const name = this.readTagName(start, endIndex); | ||
| if (!this.isVoidElement(name)) { | ||
| const pos = this.stack.indexOf(name); | ||
| if (pos !== -1) { | ||
| for (let index = 0; index <= pos; index++) { | ||
| const element = this.stack.shift(); | ||
| if (element === undefined) { | ||
| break; | ||
| } | ||
| this.cbs.onclosetag?.(element, index !== pos); | ||
| for (let index = 0; index < pos; index++) { | ||
| this.popElement(true); | ||
| } | ||
| this.popElement(false); | ||
| } | ||
@@ -299,3 +387,3 @@ else if (this.htmlMode && name === "p") { | ||
| this.endIndex = endIndex; | ||
| if (this.recognizeSelfClosing || this.foreignContext[0]) { | ||
| if (this.recognizeSelfClosing || this.isInForeignContext()) { | ||
| this.closeCurrentTag(false); | ||
@@ -310,2 +398,17 @@ // Set `startIndex` for next node | ||
| } | ||
| /** | ||
| * Pop the top element off the stack, emit a close event, and maintain | ||
| * the foreign context stack. | ||
| * @param implied Whether this close is implied (not from an explicit end tag). | ||
| */ | ||
| popElement(implied) { | ||
| // biome-ignore lint/style/noNonNullAssertion: The element is guaranteed to exist. | ||
| const element = this.stack.shift(); | ||
| if (this.htmlMode && | ||
| (foreignContextElements.has(element) || | ||
| htmlIntegrationElements.has(element))) { | ||
| this.foreignContext.shift(); | ||
| } | ||
| this.cbs.onclosetag?.(element, implied); | ||
| } | ||
| closeCurrentTag(isOpenImplied) { | ||
@@ -316,5 +419,3 @@ const name = this.tagname; | ||
| if (this.stack[0] === name) { | ||
| // If the opening tag isn't implied, the closing tag has to be implied. | ||
| this.cbs.onclosetag?.(name, !isOpenImplied); | ||
| this.stack.shift(); | ||
| this.popElement(!isOpenImplied); | ||
| } | ||
@@ -385,3 +486,11 @@ } | ||
| if (this.cbs.onprocessinginstruction) { | ||
| const name = this.getInstructionName(value); | ||
| /* | ||
| * In HTML mode, ondeclaration is only reached for DOCTYPE | ||
| * (the tokenizer routes everything else to bogus comments). | ||
| */ | ||
| const name = this.htmlMode | ||
| ? this.lowerCaseTagNames | ||
| ? DOCUMENT_TYPE | ||
| : value.slice(0, DOCUMENT_TYPE.length) | ||
| : this.getInstructionName(value); | ||
| this.cbs.onprocessinginstruction(`!${name}`, `!${value}`); | ||
@@ -434,2 +543,5 @@ } | ||
| } | ||
| else if (this.isInForeignContext()) { | ||
| this.cbs.ontext?.(value); | ||
| } | ||
| else { | ||
@@ -461,2 +573,3 @@ this.cbs.oncomment?.(`[CDATA[${value}]]`); | ||
| this.attribname = ""; | ||
| this.attribvalue = ""; | ||
| this.attribs = null; | ||
@@ -469,3 +582,3 @@ this.stack.length = 0; | ||
| this.foreignContext.length = 0; | ||
| this.foreignContext.unshift(!this.htmlMode); | ||
| this.foreignContext.unshift(ForeignContext.None); | ||
| this.bufferOffset = 0; | ||
@@ -485,2 +598,5 @@ this.writeIndex = 0; | ||
| getSlice(start, end) { | ||
| if (start === end) { | ||
| return ""; | ||
| } | ||
| while (start - this.bufferOffset >= this.buffers[0].length) { | ||
@@ -487,0 +603,0 @@ this.shiftBuffer(); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../src/Parser.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../src/Parser.ts"],"names":[],"mappings":"AAAA,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;AAEjC,OAAO,SAAS,EAAE,EAAkB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEtE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACrB,OAAO;IACP,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,UAAU;CACb,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACvE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AACrD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACtC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEtC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAsB;IAClD,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACvB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7C,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACvB,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,IAAI,EAAE,WAAW,CAAC;IACnB,CAAC,IAAI,EAAE,WAAW,CAAC;IACnB,CAAC,IAAI,EAAE,WAAW,CAAC;IACnB,CAAC,IAAI,EAAE,WAAW,CAAC;IACnB,CAAC,IAAI,EAAE,WAAW,CAAC;IACnB,CAAC,IAAI,EAAE,WAAW,CAAC;IACnB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,OAAO,EAAE,QAAQ,CAAC;IACnB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,UAAU,EAAE,QAAQ,CAAC;IACtB,CAAC,UAAU,EAAE,QAAQ,CAAC;IACtB,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/B,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7C,CAAC,IAAI,EAAE,OAAO,CAAC;IACf,CAAC,IAAI,EAAE,OAAO,CAAC;IACf,CAAC,SAAS,EAAE,IAAI,CAAC;IACjB,CAAC,SAAS,EAAE,IAAI,CAAC;IACjB,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,YAAY,EAAE,IAAI,CAAC;IACpB,CAAC,SAAS,EAAE,IAAI,CAAC;IACjB,CAAC,KAAK,EAAE,IAAI,CAAC;IACb,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,UAAU,EAAE,IAAI,CAAC;IAClB,CAAC,YAAY,EAAE,IAAI,CAAC;IACpB,CAAC,QAAQ,EAAE,IAAI,CAAC;IAChB,CAAC,QAAQ,EAAE,IAAI,CAAC;IAChB,CAAC,MAAM,EAAE,IAAI,CAAC;IACd,CAAC,QAAQ,EAAE,IAAI,CAAC;IAChB,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,MAAM,EAAE,IAAI,CAAC;IACd,CAAC,KAAK,EAAE,IAAI,CAAC;IACb,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,KAAK,EAAE,IAAI,CAAC;IACb,CAAC,SAAS,EAAE,IAAI,CAAC;IACjB,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,IAAI,EAAE,OAAO,CAAC;IACf,CAAC,IAAI,EAAE,OAAO,CAAC;IACf,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAC3B,CAAC,OAAO,EAAE,gBAAgB,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,SAAS,CAAC;AAEhC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IACzB,MAAM;IACN,MAAM;IACN,UAAU;IACV,IAAI;IACJ,KAAK;IACL,SAAS;IACT,OAAO;IACP,OAAO;IACP,IAAI;IACJ,KAAK;IACL,OAAO;IACP,SAAS;IACT,QAAQ;IACR,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,KAAK;CACR,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAExD;;;;;GAKG;AACH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACpC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,OAAO;IACP,gBAAgB;IAChB,eAAe;IACf,MAAM;IACN,OAAO;CACV,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAiB;IAClD,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,aAAa,EAAE,aAAa,CAAC;IAC9B,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,eAAe,EAAE,eAAe,CAAC;IAClC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACxC,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,eAAe,EAAE,eAAe,CAAC;IAClC,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAC9C,CAAC,aAAa,EAAE,aAAa,CAAC;IAC9B,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACxC,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAC1C,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAC1C,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,aAAa,EAAE,aAAa,CAAC;IAC9B,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAC5C,CAAC,aAAa,EAAE,aAAa,CAAC;IAC9B,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,eAAe,EAAE,eAAe,CAAC;IAClC,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,UAAU,EAAE,UAAU,CAAC;CAC3B,CAAC,CAAC;AAEH,IAAW,cAIV;AAJD,WAAW,cAAc;IACrB,mDAAI,CAAA;IACJ,iDAAG,CAAA;IACH,uDAAM,CAAA;AACV,CAAC,EAJU,cAAc,KAAd,cAAc,QAIxB;AA+FD,MAAM,SAAS,GAAG,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,OAAO,MAAM;IAkCM;IAjCrB,yCAAyC;IACzC,UAAU,GAAG,CAAC,CAAC;IACf,uCAAuC;IACvC,QAAQ,GAAG,CAAC,CAAC;IACb;;;OAGG;IACK,YAAY,GAAG,CAAC,CAAC;IAEjB,OAAO,GAAG,EAAE,CAAC;IACb,UAAU,GAAG,EAAE,CAAC;IAChB,WAAW,GAAG,EAAE,CAAC;IACjB,OAAO,GAAqC,IAAI,CAAC;IACxC,KAAK,GAAa,EAAE,CAAC;IACrB,cAAc,CAAmB;IACjC,GAAG,CAAmB;IACtB,iBAAiB,CAAU;IAC3B,uBAAuB,CAAU;IACjC,oBAAoB,CAAU;IAC/C,4DAA4D;IAC3C,QAAQ,CAAU;IAClB,SAAS,CAAY;IAErB,OAAO,GAAa,EAAE,CAAC;IAChC,YAAY,GAAG,CAAC,CAAC;IACzB,kFAAkF;IAC1E,UAAU,GAAG,CAAC,CAAC;IACvB,kFAAkF;IAC1E,KAAK,GAAG,KAAK,CAAC;IAEtB,YACI,GAA6B,EACZ,UAAyB,EAAE;QAA3B,YAAO,GAAP,OAAO,CAAoB;QAE5C,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC;QAChE,IAAI,CAAC,uBAAuB;YACxB,OAAO,CAAC,uBAAuB,IAAI,IAAI,CAAC,QAAQ,CAAC;QACrD,IAAI,CAAC,oBAAoB;YACrB,OAAO,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,CACjD,IAAI,CAAC,OAAO,EACZ,IAAI,CACP,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,2BAA2B;IAE3B;;;;OAIG;IACH,MAAM,CAAC,KAAa,EAAE,QAAgB;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,EAAU,EAAE,QAAgB;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;IAC/B,CAAC;IAED,gBAAgB;IAChB,kBAAkB;QACd,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,IAAI,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACO,aAAa,CAAC,IAAY;QAChC,OAAO,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;OAQG;IACK,WAAW,CAAC,KAAa,EAAE,QAAgB;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB;YAC/B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,WAAW,EAAE;YAC9C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAErC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,GAAG,EAAE,CAAC;YAChD,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACnD,CAAC;QAED;;;;;;WAMG;QACH,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1D,OAAO,QAAQ,CAAC;YACpB,CAAC;QACL,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC7B,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAa,EAAE,QAAgB;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC;IAEO,WAAW,CAAC,IAAY;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB;;;;;WAKG;QACH,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,OAAO;QACX,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjE,IAAI,YAAY,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;oBACjB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBACpD,CAAC;qBAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oBACzB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvD,CAAC;qBAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IAC9C,CAAC;IAEO,UAAU,CAAC,SAAkB;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;QAEpC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAAgB;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEvB,iCAAiC;QACjC,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,KAAa,EAAE,QAAgB;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACb,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;oBACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;gBACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACvC,6BAA6B;gBAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACxC,oFAAoF;YACpF,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,QAAgB;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAE5B,iCAAiC;YACjC,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACJ,gDAAgD;YAChD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,UAAU,CAAC,OAAgB;QAC/B,kFAAkF;QAClF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;QACpC,IACI,IAAI,CAAC,QAAQ;YACb,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC;gBAChC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAC3C,CAAC;YACC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAEO,eAAe,CAAC,aAAsB;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAE/B,oDAAoD;QACpD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,KAAa,EAAE,QAAgB;QACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB;YAC1C,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;YACpB,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,KAAa,EAAE,QAAgB;QACxC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,EAAU;QACrB,IAAI,CAAC,WAAW,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,KAAgB,EAAE,QAAgB;QAC1C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAClB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,WAAW,EAChB,KAAK,KAAK,SAAS,CAAC,MAAM;YACtB,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM;gBAC1B,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,OAAO;oBAC3B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,IAAI,CACjB,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAEO,kBAAkB,CAAC,KAAa;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAa,EAAE,QAAgB;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;YACnC;;;eAGG;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;gBACtB,CAAC,CAAC,IAAI,CAAC,iBAAiB;oBACpB,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,uBAAuB,CAAC,KAAa,EAAE,QAAgB;QACnD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,KAAa,EAAE,QAAgB,EAAE,MAAc;QACrD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC;QAE1B,iCAAiC;QACjC,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,KAAa,EAAE,QAAgB,EAAE,MAAc;QACnD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC;QAEtD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAChD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;QAC5B,CAAC;aAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC;QAC9B,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,gBAAgB;IAChB,KAAK;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACtB,2CAA2C;YAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;YAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBACrD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,IAAY;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAEO,QAAQ,CAAC,KAAa,EAAE,GAAW;QACvC,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,OAAO,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACzD,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAC7B,KAAK,GAAG,IAAI,CAAC,YAAY,EACzB,GAAG,GAAG,IAAI,CAAC,YAAY,CAC1B,CAAC;QAEF,OAAO,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACtD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAa;QACf,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACtD,OAAO;QACX,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,KAAc;QACd,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACpD,OAAO;QACX,CAAC;QAED,IAAI,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,MAAM;QACF,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAExB,OACI,IAAI,CAAC,SAAS,CAAC,OAAO;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EACvC,CAAC;YACC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IACzC,CAAC;CACJ"} |
+61
-7
@@ -29,2 +29,3 @@ /** | ||
| ontextentity(codepoint: number, endIndex: number): void; | ||
| isInForeignContext?(): boolean; | ||
| } | ||
@@ -56,6 +57,8 @@ /** | ||
| private readonly decodeEntities; | ||
| private readonly recognizeSelfClosing; | ||
| private readonly entityDecoder; | ||
| constructor({ xmlMode, decodeEntities, }: { | ||
| constructor({ xmlMode, decodeEntities, recognizeSelfClosing, }: { | ||
| xmlMode?: boolean; | ||
| decodeEntities?: boolean; | ||
| recognizeSelfClosing?: boolean; | ||
| }, cbs: Callbacks); | ||
@@ -70,8 +73,14 @@ reset(): void; | ||
| private sequenceIndex; | ||
| private stateSpecialStartSequence; | ||
| private enterTagBody; | ||
| /** | ||
| * Look for an end tag. For <title> tags, also decode entities. | ||
| * Match the opening tag name against an HTML text-only tag sequence. | ||
| * | ||
| * Some tags share an initial prefix (`script`/`style`, `title`/`textarea`, | ||
| * `noembed`/`noframes`), so we may switch to an alternate sequence at the | ||
| * first distinguishing byte. On a successful full match we fall back to | ||
| * the normal tag-name state; a later `>` will enter raw-text, RCDATA, or | ||
| * plaintext mode based on `currentSequence` / `isSpecial`. | ||
| * @param c Current character code point. | ||
| */ | ||
| private stateInSpecialTag; | ||
| private stateSpecialStartSequence; | ||
| private stateCDATASequence; | ||
@@ -86,2 +95,7 @@ /** | ||
| /** | ||
| * Emit a comment token and return to the text state. | ||
| * @param offset Number of characters in the end sequence that have already been matched. | ||
| */ | ||
| private emitComment; | ||
| /** | ||
| * Comments and CDATA end with `-->` and `]]>`. | ||
@@ -104,3 +118,10 @@ * | ||
| private isTagStartChar; | ||
| private startSpecial; | ||
| /** | ||
| * Scan raw-text / RCDATA content for the matching end tag. | ||
| * | ||
| * For RCDATA tags (`<title>`, `<textarea>`) entities are decoded inline. | ||
| * For raw-text tags (`<script>`, `<style>`, etc.) we fast-forward to `<`. | ||
| * @param c Current character code point. | ||
| */ | ||
| private stateInSpecialTag; | ||
| private stateBeforeTagName; | ||
@@ -112,2 +133,11 @@ private stateInTagName; | ||
| private stateBeforeAttributeName; | ||
| /** | ||
| * Handle `/` before `>` in an opening tag. | ||
| * | ||
| * In HTML mode, text-only tags ignore the self-closing flag and still enter | ||
| * their raw-text/RCDATA/plaintext state unless self-closing tags are being | ||
| * recognized. In XML mode, or for ordinary tags, the tokenizer returns to | ||
| * regular text parsing after emitting the self-closing callback. | ||
| * @param c Current character code point. | ||
| */ | ||
| private stateInSelfClosingTag; | ||
@@ -121,9 +151,31 @@ private stateInAttributeName; | ||
| private stateInAttributeValueNoQuotes; | ||
| /** | ||
| * Distinguish between CDATA, declarations, HTML comments, and HTML bogus | ||
| * comments after `<!`. | ||
| * | ||
| * In HTML mode, only real comments and doctypes stay on declaration paths; | ||
| * everything else becomes a bogus comment terminated by the next `>`. | ||
| * @param c Current character code point. | ||
| */ | ||
| private stateBeforeDeclaration; | ||
| /** | ||
| * Continue matching `doctype` after `<!d`. | ||
| * | ||
| * A full `doctype` match stays on the declaration path; any other name falls | ||
| * back to an HTML bogus comment, which matches browser behavior for | ||
| * non-doctype `<!...>` constructs. | ||
| * @param c Current character code point. | ||
| */ | ||
| private stateDeclarationSequence; | ||
| private stateInDeclaration; | ||
| /** | ||
| * XML processing instructions (`<?...?>`). | ||
| * | ||
| * In HTML mode `<?` is routed to `InSpecialComment` instead, so this | ||
| * state is only reachable in XML mode. | ||
| * @param c Current character code point. | ||
| */ | ||
| private stateInProcessingInstruction; | ||
| private stateBeforeComment; | ||
| private stateInSpecialComment; | ||
| private stateBeforeSpecialS; | ||
| private stateBeforeSpecialT; | ||
| private startEntity; | ||
@@ -143,2 +195,4 @@ private stateInEntity; | ||
| private finish; | ||
| private handleTrailingCommentLikeData; | ||
| private handleTrailingMarkupDeclaration; | ||
| /** Handle any trailing data. */ | ||
@@ -145,0 +199,0 @@ private handleTrailingData; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../src/Tokenizer.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../src/Tokenizer.ts"],"names":[],"mappings":"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"} |
+378
-175
@@ -58,9 +58,9 @@ import { DecodingMode, EntityDecoder, htmlDecodeTree, xmlDecodeTree, } from "entities/decode"; | ||
| State[State["CDATASequence"] = 19] = "CDATASequence"; | ||
| State[State["InSpecialComment"] = 20] = "InSpecialComment"; | ||
| State[State["InCommentLike"] = 21] = "InCommentLike"; | ||
| State[State["DeclarationSequence"] = 20] = "DeclarationSequence"; | ||
| State[State["InSpecialComment"] = 21] = "InSpecialComment"; | ||
| State[State["InCommentLike"] = 22] = "InCommentLike"; | ||
| // Special tags | ||
| State[State["BeforeSpecialS"] = 22] = "BeforeSpecialS"; | ||
| State[State["BeforeSpecialT"] = 23] = "BeforeSpecialT"; | ||
| State[State["SpecialStartSequence"] = 24] = "SpecialStartSequence"; | ||
| State[State["InSpecialTag"] = 25] = "InSpecialTag"; | ||
| State[State["SpecialStartSequence"] = 23] = "SpecialStartSequence"; | ||
| State[State["InSpecialTag"] = 24] = "InSpecialTag"; | ||
| State[State["InPlainText"] = 25] = "InPlainText"; | ||
| State[State["InEntity"] = 26] = "InEntity"; | ||
@@ -103,2 +103,13 @@ })(State || (State = {})); | ||
| CommentEnd: new Uint8Array([0x2d, 0x2d, 0x21, 0x3e]), // `--!>` | ||
| Doctype: new Uint8Array([0x64, 0x6f, 0x63, 0x74, 0x79, 0x70, 0x65]), // `doctype` | ||
| IframeEnd: new Uint8Array([0x3c, 0x2f, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65]), // `</iframe` | ||
| NoembedEnd: new Uint8Array([ | ||
| 0x3c, 0x2f, 0x6e, 0x6f, 0x65, 0x6d, 0x62, 0x65, 0x64, | ||
| ]), // `</noembed` | ||
| NoframesEnd: new Uint8Array([ | ||
| 0x3c, 0x2f, 0x6e, 0x6f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, | ||
| ]), // `</noframes` | ||
| Plaintext: new Uint8Array([ | ||
| 0x3c, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x78, 0x74, | ||
| ]), // `</plaintext` | ||
| ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // `</script` | ||
@@ -113,2 +124,16 @@ StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), // `</style` | ||
| /** | ||
| * Maps the first lowercase character of an HTML tag name to the sequence | ||
| * used for special-tag detection. All sequences share a common layout | ||
| * where index 2 is the first tag-name character, so matching always | ||
| * continues from offset 3. | ||
| */ | ||
| const specialStartSequences = new Map([ | ||
| [Sequences.IframeEnd[2], Sequences.IframeEnd], | ||
| [Sequences.NoembedEnd[2], Sequences.NoembedEnd], | ||
| [Sequences.Plaintext[2], Sequences.Plaintext], | ||
| [Sequences.ScriptEnd[2], Sequences.ScriptEnd], | ||
| [Sequences.TitleEnd[2], Sequences.TitleEnd], | ||
| [Sequences.XmpEnd[2], Sequences.XmpEnd], | ||
| ]); | ||
| /** | ||
| * Tokenizer implementation used by `Parser`. | ||
@@ -138,7 +163,9 @@ */ | ||
| decodeEntities; | ||
| recognizeSelfClosing; | ||
| entityDecoder; | ||
| constructor({ xmlMode = false, decodeEntities = true, }, cbs) { | ||
| constructor({ xmlMode = false, decodeEntities = true, recognizeSelfClosing = xmlMode, }, cbs) { | ||
| this.cbs = cbs; | ||
| this.xmlMode = xmlMode; | ||
| this.decodeEntities = decodeEntities; | ||
| this.recognizeSelfClosing = recognizeSelfClosing; | ||
| this.entityDecoder = new EntityDecoder(xmlMode ? xmlDecodeTree : htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed)); | ||
@@ -191,61 +218,68 @@ } | ||
| sequenceIndex = 0; | ||
| stateSpecialStartSequence(c) { | ||
| const isEnd = this.sequenceIndex === this.currentSequence.length; | ||
| const isMatch = isEnd | ||
| ? // If we are at the end of the sequence, make sure the tag name has ended | ||
| isEndOfTagSection(c) | ||
| : // Otherwise, do a case-insensitive comparison | ||
| (c | 0x20) === this.currentSequence[this.sequenceIndex]; | ||
| if (!isMatch) { | ||
| this.isSpecial = false; | ||
| enterTagBody() { | ||
| if (this.currentSequence === Sequences.Plaintext) { | ||
| this.currentSequence = Sequences.Empty; | ||
| this.state = State.InPlainText; | ||
| } | ||
| else if (!isEnd) { | ||
| this.sequenceIndex++; | ||
| return; | ||
| else if (this.isSpecial) { | ||
| this.state = State.InSpecialTag; | ||
| this.sequenceIndex = 0; | ||
| } | ||
| this.sequenceIndex = 0; | ||
| this.state = State.InTagName; | ||
| this.stateInTagName(c); | ||
| else { | ||
| this.state = State.Text; | ||
| } | ||
| } | ||
| /** | ||
| * Look for an end tag. For <title> tags, also decode entities. | ||
| * Match the opening tag name against an HTML text-only tag sequence. | ||
| * | ||
| * Some tags share an initial prefix (`script`/`style`, `title`/`textarea`, | ||
| * `noembed`/`noframes`), so we may switch to an alternate sequence at the | ||
| * first distinguishing byte. On a successful full match we fall back to | ||
| * the normal tag-name state; a later `>` will enter raw-text, RCDATA, or | ||
| * plaintext mode based on `currentSequence` / `isSpecial`. | ||
| * @param c Current character code point. | ||
| */ | ||
| stateInSpecialTag(c) { | ||
| if (this.sequenceIndex === this.currentSequence.length) { | ||
| if (isEndOfTagSection(c)) { | ||
| const endOfText = this.index - this.currentSequence.length; | ||
| if (this.sectionStart < endOfText) { | ||
| // Spoof the index so that reported locations match up. | ||
| const actualIndex = this.index; | ||
| this.index = endOfText; | ||
| this.cbs.ontext(this.sectionStart, endOfText); | ||
| this.index = actualIndex; | ||
| } | ||
| this.isSpecial = false; | ||
| this.sectionStart = endOfText + 2; // Skip over the `</` | ||
| this.stateInClosingTagName(c); | ||
| return; // We are done; skip the rest of the function. | ||
| stateSpecialStartSequence(c) { | ||
| const lower = c | 0x20; | ||
| // Still matching — check for an alternate sequence at branch points. | ||
| if (this.sequenceIndex < this.currentSequence.length) { | ||
| if (lower === this.currentSequence[this.sequenceIndex]) { | ||
| this.sequenceIndex++; | ||
| return; | ||
| } | ||
| this.sequenceIndex = 0; | ||
| } | ||
| if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) { | ||
| this.sequenceIndex += 1; | ||
| } | ||
| else if (this.sequenceIndex === 0) { | ||
| if (this.currentSequence === Sequences.TitleEnd) { | ||
| // We have to parse entities in <title> tags. | ||
| if (this.decodeEntities && c === CharCodes.Amp) { | ||
| this.startEntity(); | ||
| if (this.sequenceIndex === 3) { | ||
| if (this.currentSequence === Sequences.ScriptEnd && | ||
| lower === Sequences.StyleEnd[3]) { | ||
| this.currentSequence = Sequences.StyleEnd; | ||
| this.sequenceIndex = 4; | ||
| return; | ||
| } | ||
| if (this.currentSequence === Sequences.TitleEnd && | ||
| lower === Sequences.TextareaEnd[3]) { | ||
| this.currentSequence = Sequences.TextareaEnd; | ||
| this.sequenceIndex = 4; | ||
| return; | ||
| } | ||
| } | ||
| else if (this.fastForwardTo(CharCodes.Lt)) { | ||
| // Outside of <title> tags, we can fast-forward. | ||
| this.sequenceIndex = 1; | ||
| else if (this.sequenceIndex === 4 && | ||
| this.currentSequence === Sequences.NoembedEnd && | ||
| lower === Sequences.NoframesEnd[4]) { | ||
| this.currentSequence = Sequences.NoframesEnd; | ||
| this.sequenceIndex = 5; | ||
| return; | ||
| } | ||
| } | ||
| else { | ||
| // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`. | ||
| this.sequenceIndex = Number(c === CharCodes.Lt); | ||
| else if (isEndOfTagSection(c)) { | ||
| // Full match on a valid tag boundary — keep the sequence. | ||
| this.sequenceIndex = 0; | ||
| this.state = State.InTagName; | ||
| this.stateInTagName(c); | ||
| return; | ||
| } | ||
| // No match — abandon special-tag detection. | ||
| this.isSpecial = false; | ||
| this.currentSequence = Sequences.Empty; | ||
| this.sequenceIndex = 0; | ||
| this.state = State.InTagName; | ||
| this.stateInTagName(c); | ||
| } | ||
@@ -263,4 +297,10 @@ stateCDATASequence(c) { | ||
| this.sequenceIndex = 0; | ||
| this.state = State.InDeclaration; | ||
| this.stateInDeclaration(c); // Reconsume the character | ||
| if (this.xmlMode) { | ||
| this.state = State.InDeclaration; | ||
| this.stateInDeclaration(c); // Reconsume the character | ||
| } | ||
| else { | ||
| this.state = State.InSpecialComment; | ||
| this.stateInSpecialComment(c); // Reconsume the character | ||
| } | ||
| } | ||
@@ -290,2 +330,12 @@ } | ||
| /** | ||
| * Emit a comment token and return to the text state. | ||
| * @param offset Number of characters in the end sequence that have already been matched. | ||
| */ | ||
| emitComment(offset) { | ||
| this.cbs.oncomment(this.sectionStart, this.index, offset); | ||
| this.sequenceIndex = 0; | ||
| this.sectionStart = this.index + 1; | ||
| this.state = State.Text; | ||
| } | ||
| /** | ||
| * Comments and CDATA end with `-->` and `]]>`. | ||
@@ -300,10 +350,20 @@ * | ||
| stateInCommentLike(c) { | ||
| if (this.currentSequence === Sequences.CommentEnd && | ||
| if (!this.xmlMode && | ||
| this.currentSequence === Sequences.CommentEnd && | ||
| this.sequenceIndex <= 1 && | ||
| /* | ||
| * We're still at the very start of the comment: the only | ||
| * characters consumed since `<!--` are the dashes that | ||
| * advanced sequenceIndex (0 for `<!-->`, 1 for `<!--->`). | ||
| */ | ||
| this.index === this.sectionStart + this.sequenceIndex && | ||
| c === CharCodes.Gt) { | ||
| // Abruptly closed empty HTML comment. | ||
| this.emitComment(this.sequenceIndex); | ||
| } | ||
| else if (this.currentSequence === Sequences.CommentEnd && | ||
| this.sequenceIndex === 2 && | ||
| c === CharCodes.Gt) { | ||
| // `!` is optional here, so the same sequence also accepts `-->`. | ||
| this.cbs.oncomment(this.sectionStart, this.index, 2); | ||
| this.sequenceIndex = 0; | ||
| this.sectionStart = this.index + 1; | ||
| this.state = State.Text; | ||
| this.emitComment(2); | ||
| } | ||
@@ -349,7 +409,47 @@ else if (this.currentSequence === Sequences.CommentEnd && | ||
| } | ||
| startSpecial(sequence, offset) { | ||
| this.isSpecial = true; | ||
| this.currentSequence = sequence; | ||
| this.sequenceIndex = offset; | ||
| this.state = State.SpecialStartSequence; | ||
| /** | ||
| * Scan raw-text / RCDATA content for the matching end tag. | ||
| * | ||
| * For RCDATA tags (`<title>`, `<textarea>`) entities are decoded inline. | ||
| * For raw-text tags (`<script>`, `<style>`, etc.) we fast-forward to `<`. | ||
| * @param c Current character code point. | ||
| */ | ||
| stateInSpecialTag(c) { | ||
| if (this.sequenceIndex === this.currentSequence.length) { | ||
| if (isEndOfTagSection(c)) { | ||
| const endOfText = this.index - this.currentSequence.length; | ||
| if (this.sectionStart < endOfText) { | ||
| // Spoof the index so that reported locations match up. | ||
| const actualIndex = this.index; | ||
| this.index = endOfText; | ||
| this.cbs.ontext(this.sectionStart, endOfText); | ||
| this.index = actualIndex; | ||
| } | ||
| this.isSpecial = false; | ||
| this.sectionStart = endOfText + 2; // Skip over the `</` | ||
| this.stateInClosingTagName(c); | ||
| return; // We are done; skip the rest of the function. | ||
| } | ||
| this.sequenceIndex = 0; | ||
| } | ||
| if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) { | ||
| this.sequenceIndex += 1; | ||
| } | ||
| else if (this.sequenceIndex === 0) { | ||
| if (this.currentSequence === Sequences.TitleEnd || | ||
| this.currentSequence === Sequences.TextareaEnd) { | ||
| // RCDATA tags have to parse entities while still looking for their end tag. | ||
| if (this.decodeEntities && c === CharCodes.Amp) { | ||
| this.startEntity(); | ||
| } | ||
| } | ||
| else if (this.fastForwardTo(CharCodes.Lt)) { | ||
| // Outside of RCDATA tags, we can fast-forward. | ||
| this.sequenceIndex = 1; | ||
| } | ||
| } | ||
| else { | ||
| // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`. | ||
| this.sequenceIndex = Number(c === CharCodes.Lt); | ||
| } | ||
| } | ||
@@ -362,21 +462,25 @@ stateBeforeTagName(c) { | ||
| else if (c === CharCodes.Questionmark) { | ||
| this.state = State.InProcessingInstruction; | ||
| this.sequenceIndex = 0; | ||
| this.sectionStart = this.index + 1; | ||
| if (this.xmlMode) { | ||
| this.state = State.InProcessingInstruction; | ||
| this.sequenceIndex = 0; | ||
| this.sectionStart = this.index + 1; | ||
| } | ||
| else { | ||
| this.state = State.InSpecialComment; | ||
| this.sectionStart = this.index; | ||
| } | ||
| } | ||
| else if (this.isTagStartChar(c)) { | ||
| const lower = c | 0x20; | ||
| this.sectionStart = this.index; | ||
| if (this.xmlMode) { | ||
| const special = this.xmlMode || this.cbs.isInForeignContext?.() | ||
| ? undefined | ||
| : specialStartSequences.get(c | 0x20); | ||
| if (special === undefined) { | ||
| this.state = State.InTagName; | ||
| } | ||
| else if (lower === Sequences.ScriptEnd[2]) { | ||
| this.state = State.BeforeSpecialS; | ||
| } | ||
| else if (lower === Sequences.TitleEnd[2] || | ||
| lower === Sequences.XmpEnd[2]) { | ||
| this.state = State.BeforeSpecialT; | ||
| } | ||
| else { | ||
| this.state = State.InTagName; | ||
| this.isSpecial = true; | ||
| this.currentSequence = special; | ||
| this.sequenceIndex = 3; | ||
| this.state = State.SpecialStartSequence; | ||
| } | ||
@@ -402,6 +506,15 @@ } | ||
| if (isWhitespace(c)) { | ||
| // Ignore | ||
| if (this.xmlMode) { | ||
| // Ignore | ||
| } | ||
| else { | ||
| this.state = State.InSpecialComment; | ||
| this.sectionStart = this.index; | ||
| } | ||
| } | ||
| else if (c === CharCodes.Gt) { | ||
| this.state = State.Text; | ||
| if (!this.xmlMode) { | ||
| this.sectionStart = this.index + 1; | ||
| } | ||
| } | ||
@@ -433,9 +546,3 @@ else { | ||
| this.cbs.onopentagend(this.index); | ||
| if (this.isSpecial) { | ||
| this.state = State.InSpecialTag; | ||
| this.sequenceIndex = 0; | ||
| } | ||
| else { | ||
| this.state = State.Text; | ||
| } | ||
| this.enterTagBody(); | ||
| this.sectionStart = this.index + 1; | ||
@@ -451,8 +558,22 @@ } | ||
| } | ||
| /** | ||
| * Handle `/` before `>` in an opening tag. | ||
| * | ||
| * In HTML mode, text-only tags ignore the self-closing flag and still enter | ||
| * their raw-text/RCDATA/plaintext state unless self-closing tags are being | ||
| * recognized. In XML mode, or for ordinary tags, the tokenizer returns to | ||
| * regular text parsing after emitting the self-closing callback. | ||
| * @param c Current character code point. | ||
| */ | ||
| stateInSelfClosingTag(c) { | ||
| if (c === CharCodes.Gt) { | ||
| this.cbs.onselfclosingtag(this.index); | ||
| this.sectionStart = this.index + 1; | ||
| if (!this.recognizeSelfClosing) { | ||
| this.enterTagBody(); | ||
| return; | ||
| } | ||
| this.state = State.Text; | ||
| this.sectionStart = this.index + 1; | ||
| this.isSpecial = false; // Reset special state, in case of self-closing special tags | ||
| this.currentSequence = Sequences.Empty; | ||
| } | ||
@@ -535,2 +656,10 @@ else if (!isWhitespace(c)) { | ||
| } | ||
| /** | ||
| * Distinguish between CDATA, declarations, HTML comments, and HTML bogus | ||
| * comments after `<!`. | ||
| * | ||
| * In HTML mode, only real comments and doctypes stay on declaration paths; | ||
| * everything else becomes a bogus comment terminated by the next `>`. | ||
| * @param c Current character code point. | ||
| */ | ||
| stateBeforeDeclaration(c) { | ||
@@ -541,3 +670,3 @@ if (c === CharCodes.OpeningSquareBracket) { | ||
| } | ||
| else { | ||
| else if (this.xmlMode) { | ||
| this.state = | ||
@@ -548,3 +677,44 @@ c === CharCodes.Dash | ||
| } | ||
| else if ((c | 0x20) === Sequences.Doctype[0]) { | ||
| this.state = State.DeclarationSequence; | ||
| this.currentSequence = Sequences.Doctype; | ||
| this.sequenceIndex = 1; | ||
| } | ||
| else if (c === CharCodes.Gt) { | ||
| this.cbs.oncomment(this.sectionStart, this.index, 0); | ||
| this.state = State.Text; | ||
| this.sectionStart = this.index + 1; | ||
| } | ||
| else if (c === CharCodes.Dash) { | ||
| this.state = State.BeforeComment; | ||
| } | ||
| else { | ||
| this.state = State.InSpecialComment; | ||
| } | ||
| } | ||
| /** | ||
| * Continue matching `doctype` after `<!d`. | ||
| * | ||
| * A full `doctype` match stays on the declaration path; any other name falls | ||
| * back to an HTML bogus comment, which matches browser behavior for | ||
| * non-doctype `<!...>` constructs. | ||
| * @param c Current character code point. | ||
| */ | ||
| stateDeclarationSequence(c) { | ||
| if (this.sequenceIndex === this.currentSequence.length) { | ||
| this.state = State.InDeclaration; | ||
| this.stateInDeclaration(c); | ||
| } | ||
| else if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) { | ||
| this.sequenceIndex += 1; | ||
| } | ||
| else if (c === CharCodes.Gt) { | ||
| this.cbs.oncomment(this.sectionStart, this.index, 0); | ||
| this.state = State.Text; | ||
| this.sectionStart = this.index + 1; | ||
| } | ||
| else { | ||
| this.state = State.InSpecialComment; | ||
| } | ||
| } | ||
| stateInDeclaration(c) { | ||
@@ -557,24 +727,24 @@ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { | ||
| } | ||
| /** | ||
| * XML processing instructions (`<?...?>`). | ||
| * | ||
| * In HTML mode `<?` is routed to `InSpecialComment` instead, so this | ||
| * state is only reachable in XML mode. | ||
| * @param c Current character code point. | ||
| */ | ||
| stateInProcessingInstruction(c) { | ||
| if (this.xmlMode) { | ||
| if (c === CharCodes.Questionmark) { | ||
| // Remember that we just consumed `?`, so the next `>` closes the PI. | ||
| this.sequenceIndex = 1; | ||
| } | ||
| else if (c === CharCodes.Gt && this.sequenceIndex === 1) { | ||
| this.cbs.onprocessinginstruction(this.sectionStart, this.index - 1); | ||
| this.sequenceIndex = 0; | ||
| this.state = State.Text; | ||
| this.sectionStart = this.index + 1; | ||
| } | ||
| else { | ||
| // Keep scanning for the next `?`, which can start a closing `?>`. | ||
| this.sequenceIndex = Number(this.fastForwardTo(CharCodes.Questionmark)); | ||
| } | ||
| if (c === CharCodes.Questionmark) { | ||
| // Remember that we just consumed `?`, so the next `>` closes the PI. | ||
| this.sequenceIndex = 1; | ||
| } | ||
| else if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { | ||
| this.cbs.onprocessinginstruction(this.sectionStart, this.index); | ||
| else if (c === CharCodes.Gt && this.sequenceIndex === 1) { | ||
| this.cbs.onprocessinginstruction(this.sectionStart, this.index - 1); | ||
| this.sequenceIndex = 0; | ||
| this.state = State.Text; | ||
| this.sectionStart = this.index + 1; | ||
| } | ||
| else { | ||
| // Keep scanning for the next `?`, which can start a closing `?>`. | ||
| this.sequenceIndex = Number(this.fastForwardTo(CharCodes.Questionmark)); | ||
| } | ||
| } | ||
@@ -585,15 +755,9 @@ stateBeforeComment(c) { | ||
| this.currentSequence = Sequences.CommentEnd; | ||
| /* | ||
| * In HTML, `<!-->` is a valid empty comment. In XML, comments | ||
| * must be closed by `-->`, so we require the full sequence. | ||
| */ | ||
| this.sequenceIndex = this.xmlMode ? 0 : 2; | ||
| this.sequenceIndex = 0; | ||
| this.sectionStart = this.index + 1; | ||
| } | ||
| else { | ||
| else if (this.xmlMode) { | ||
| this.state = State.InDeclaration; | ||
| } | ||
| } | ||
| stateInSpecialComment(c) { | ||
| if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { | ||
| else if (c === CharCodes.Gt) { | ||
| this.cbs.oncomment(this.sectionStart, this.index, 0); | ||
@@ -603,35 +767,11 @@ this.state = State.Text; | ||
| } | ||
| } | ||
| stateBeforeSpecialS(c) { | ||
| const lower = c | 0x20; | ||
| if (lower === Sequences.ScriptEnd[3]) { | ||
| this.startSpecial(Sequences.ScriptEnd, 4); | ||
| } | ||
| else if (lower === Sequences.StyleEnd[3]) { | ||
| this.startSpecial(Sequences.StyleEnd, 4); | ||
| } | ||
| else { | ||
| this.state = State.InTagName; | ||
| this.stateInTagName(c); // Consume the token again | ||
| this.state = State.InSpecialComment; | ||
| } | ||
| } | ||
| stateBeforeSpecialT(c) { | ||
| const lower = c | 0x20; | ||
| switch (lower) { | ||
| case Sequences.TitleEnd[3]: { | ||
| this.startSpecial(Sequences.TitleEnd, 4); | ||
| break; | ||
| } | ||
| case Sequences.TextareaEnd[3]: { | ||
| this.startSpecial(Sequences.TextareaEnd, 4); | ||
| break; | ||
| } | ||
| case Sequences.XmpEnd[3]: { | ||
| this.startSpecial(Sequences.XmpEnd, 4); | ||
| break; | ||
| } | ||
| default: { | ||
| this.state = State.InTagName; | ||
| this.stateInTagName(c); // Consume the token again | ||
| } | ||
| stateInSpecialComment(c) { | ||
| if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { | ||
| this.cbs.oncomment(this.sectionStart, this.index, 0); | ||
| this.state = State.Text; | ||
| this.sectionStart = this.index + 1; | ||
| } | ||
@@ -678,2 +818,3 @@ } | ||
| if (this.state === State.Text || | ||
| this.state === State.InPlainText || | ||
| (this.state === State.InSpecialTag && this.sequenceIndex === 0)) { | ||
@@ -707,2 +848,7 @@ this.cbs.ontext(this.sectionStart, this.index); | ||
| } | ||
| case State.InPlainText: { | ||
| // Skip to end of buffer; cleanup() emits the text. | ||
| this.index = this.buffer.length + this.offset - 1; | ||
| break; | ||
| } | ||
| case State.SpecialStartSequence: { | ||
@@ -720,2 +866,6 @@ this.stateSpecialStartSequence(c); | ||
| } | ||
| case State.DeclarationSequence: { | ||
| this.stateDeclarationSequence(c); | ||
| break; | ||
| } | ||
| case State.InAttributeValueDq: { | ||
@@ -773,10 +923,2 @@ this.stateInAttributeValueDoubleQuotes(c); | ||
| } | ||
| case State.BeforeSpecialS: { | ||
| this.stateBeforeSpecialS(c); | ||
| break; | ||
| } | ||
| case State.BeforeSpecialT: { | ||
| this.stateBeforeSpecialT(c); | ||
| break; | ||
| } | ||
| case State.InAttributeValueNq: { | ||
@@ -823,5 +965,71 @@ this.stateInAttributeValueNoQuotes(c); | ||
| } | ||
| handleTrailingCommentLikeData(endIndex) { | ||
| if (this.state !== State.InCommentLike) { | ||
| return false; | ||
| } | ||
| if (this.currentSequence === Sequences.CdataEnd) { | ||
| if (this.xmlMode) { | ||
| if (this.sectionStart < endIndex) { | ||
| this.cbs.oncdata(this.sectionStart, endIndex, 0); | ||
| } | ||
| } | ||
| else { | ||
| /* In HTML mode, unclosed CDATA is a bogus comment. */ | ||
| const cdataStart = this.sectionStart - Sequences.Cdata.length - 1; | ||
| this.cbs.oncomment(cdataStart, endIndex, 0); | ||
| } | ||
| } | ||
| else { | ||
| const offset = this.xmlMode | ||
| ? 0 | ||
| : Math.min(this.sequenceIndex, Sequences.CommentEnd.length - 1); | ||
| this.cbs.oncomment(this.sectionStart, endIndex, offset); | ||
| } | ||
| return true; | ||
| } | ||
| handleTrailingMarkupDeclaration(endIndex) { | ||
| if (this.xmlMode) { | ||
| switch (this.state) { | ||
| case State.InSpecialComment: | ||
| case State.BeforeComment: | ||
| case State.CDATASequence: | ||
| case State.DeclarationSequence: | ||
| case State.InDeclaration: { | ||
| this.cbs.ontext(this.sectionStart, endIndex); | ||
| return true; | ||
| } | ||
| default: { | ||
| return false; | ||
| } | ||
| } | ||
| } | ||
| switch (this.state) { | ||
| case State.BeforeDeclaration: | ||
| case State.InSpecialComment: | ||
| case State.BeforeComment: | ||
| case State.CDATASequence: { | ||
| this.cbs.oncomment(this.sectionStart, endIndex, 0); | ||
| return true; | ||
| } | ||
| case State.DeclarationSequence: { | ||
| if (this.sequenceIndex !== Sequences.Doctype.length) { | ||
| this.cbs.oncomment(this.sectionStart, endIndex, 0); | ||
| } | ||
| return true; | ||
| } | ||
| case State.InDeclaration: { | ||
| return true; | ||
| } | ||
| default: { | ||
| return false; | ||
| } | ||
| } | ||
| } | ||
| /** Handle any trailing data. */ | ||
| handleTrailingData() { | ||
| const endIndex = this.buffer.length + this.offset; | ||
| if (this.handleTrailingCommentLikeData(endIndex) || | ||
| this.handleTrailingMarkupDeclaration(endIndex)) { | ||
| return; | ||
| } | ||
| // If there is no remaining data, we are done. | ||
@@ -831,27 +1039,22 @@ if (this.sectionStart >= endIndex) { | ||
| } | ||
| if (this.state === State.InCommentLike) { | ||
| if (this.currentSequence === Sequences.CdataEnd) { | ||
| this.cbs.oncdata(this.sectionStart, endIndex, 0); | ||
| switch (this.state) { | ||
| case State.InTagName: | ||
| case State.BeforeAttributeName: | ||
| case State.BeforeAttributeValue: | ||
| case State.AfterAttributeName: | ||
| case State.InAttributeName: | ||
| case State.InAttributeValueSq: | ||
| case State.InAttributeValueDq: | ||
| case State.InAttributeValueNq: | ||
| case State.InClosingTagName: { | ||
| /* | ||
| * If we are currently in an opening or closing tag, us not calling the | ||
| * respective callback signals that the tag should be ignored. | ||
| */ | ||
| break; | ||
| } | ||
| else { | ||
| this.cbs.oncomment(this.sectionStart, endIndex, 0); | ||
| default: { | ||
| this.cbs.ontext(this.sectionStart, endIndex); | ||
| } | ||
| } | ||
| else if (this.state === State.InTagName || | ||
| this.state === State.BeforeAttributeName || | ||
| this.state === State.BeforeAttributeValue || | ||
| this.state === State.AfterAttributeName || | ||
| this.state === State.InAttributeName || | ||
| this.state === State.InAttributeValueSq || | ||
| this.state === State.InAttributeValueDq || | ||
| this.state === State.InAttributeValueNq || | ||
| this.state === State.InClosingTagName) { | ||
| /* | ||
| * If we are currently in an opening or closing tag, us not calling the | ||
| * respective callback signals that the tag should be ignored. | ||
| */ | ||
| } | ||
| else { | ||
| this.cbs.ontext(this.sectionStart, endIndex); | ||
| } | ||
| } | ||
@@ -858,0 +1061,0 @@ emitCodePoint(cp, consumed) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"Tokenizer.js","sourceRoot":"","sources":["../src/Tokenizer.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"Tokenizer.js","sourceRoot":"","sources":["../src/Tokenizer.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,GAChB,MAAM,iBAAiB,CAAC;AAEzB,IAAW,SA4BV;AA5BD,WAAW,SAAS;IAChB,uCAAS,CAAA;IACT,gDAAa,CAAA;IACb,kDAAc,CAAA;IACd,8DAAoB,CAAA;IACpB,4CAAY,CAAA;IACZ,gEAAsB,CAAA;IACtB,8CAAa,CAAA;IACb,wCAAU,CAAA;IACV,wDAAkB,CAAA;IAClB,wDAAkB,CAAA;IAClB,0CAAW,CAAA;IACX,4CAAY,CAAA;IACZ,0CAAW,CAAA;IACX,0CAAW,CAAA;IACX,0CAAW,CAAA;IACX,sCAAS,CAAA;IACT,sCAAS,CAAA;IACT,sCAAS,CAAA;IACT,0DAAmB,CAAA;IACnB,8CAAa,CAAA;IACb,8CAAa,CAAA;IACb,8CAAa,CAAA;IACb,+CAAa,CAAA;IACb,8CAAa,CAAA;IACb,+CAAa,CAAA;IACb,+CAAa,CAAA;IACb,0EAA2B,CAAA;AAC/B,CAAC,EA5BU,SAAS,KAAT,SAAS,QA4BnB;AAED,8CAA8C;AAC9C,IAAW,KAsCV;AAtCD,WAAW,KAAK;IACZ,iCAAQ,CAAA;IACR,mDAAa,CAAA;IACb,2CAAS,CAAA;IACT,yDAAgB,CAAA;IAChB,iEAAoB,CAAA;IACpB,yDAAgB,CAAA;IAChB,+DAAmB,CAAA;IAEnB,aAAa;IACb,+DAAmB,CAAA;IACnB,uDAAe,CAAA;IACf,8DAAkB,CAAA;IAClB,kEAAoB,CAAA;IACpB,8DAAkB,CAAA;IAClB,8DAAkB,CAAA;IAClB,8DAAkB,CAAA;IAElB,eAAe;IACf,4DAAiB,CAAA;IACjB,oDAAa,CAAA;IAEb,0BAA0B;IAC1B,wEAAuB,CAAA;IAEvB,mBAAmB;IACnB,oDAAa,CAAA;IACb,oDAAa,CAAA;IACb,gEAAmB,CAAA;IACnB,0DAAgB,CAAA;IAChB,oDAAa,CAAA;IAEb,eAAe;IACf,kEAAoB,CAAA;IACpB,kDAAY,CAAA;IACZ,gDAAW,CAAA;IAEX,0CAAQ,CAAA;AACZ,CAAC,EAtCU,KAAK,KAAL,KAAK,QAsCf;AAED,SAAS,YAAY,CAAC,CAAS;IAC3B,OAAO,CACH,CAAC,KAAK,SAAS,CAAC,KAAK;QACrB,CAAC,KAAK,SAAS,CAAC,OAAO;QACvB,CAAC,KAAK,SAAS,CAAC,GAAG;QACnB,CAAC,KAAK,SAAS,CAAC,QAAQ;QACxB,CAAC,KAAK,SAAS,CAAC,cAAc,CACjC,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAS;IAChC,OAAO,CAAC,KAAK,SAAS,CAAC,KAAK,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC3B,OAAO,CACH,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC;QAChD,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CACnD,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACjB,+CAAW,CAAA;IACX,iDAAY,CAAA;IACZ,6CAAU,CAAA;IACV,6CAAU,CAAA;AACd,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAwBD;;;;;GAKG;AACH,MAAM,SAAS,GAAG;IACd,KAAK,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC;IACxB,KAAK,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS;IACtE,QAAQ,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM;IACpD,UAAU,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS;IAC/D,OAAO,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,YAAY;IACjF,SAAS,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,aAAa;IAC1F,UAAU,EAAE,IAAI,UAAU,CAAC;QACvB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KACvD,CAAC,EAAE,cAAc;IAClB,WAAW,EAAE,IAAI,UAAU,CAAC;QACxB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KAC7D,CAAC,EAAE,eAAe;IACnB,SAAS,EAAE,IAAI,UAAU,CAAC;QACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KACnE,CAAC,EAAE,gBAAgB;IACpB,SAAS,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,aAAa;IAC1F,QAAQ,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,YAAY;IAClF,QAAQ,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,YAAY;IAClF,WAAW,EAAE,IAAI,UAAU,CAAC;QACxB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KAC7D,CAAC,EAAE,eAAe;IACnB,MAAM,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU;CACrE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAqB;IACtD,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC;IAC7C,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC;IAC/C,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC;IAC7C,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC;IAC7C,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC;IAC3C,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC;CAC1C,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAmCL;IAlCrB,6CAA6C;IACrC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IAC3B,uBAAuB;IACf,MAAM,GAAG,EAAE,CAAC;IACpB,iEAAiE;IACzD,YAAY,GAAG,CAAC,CAAC;IACzB,oEAAoE;IAC5D,KAAK,GAAG,CAAC,CAAC;IAClB,oCAAoC;IAC5B,WAAW,GAAG,CAAC,CAAC;IACxB,kIAAkI;IAC1H,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;IAC/B,oEAAoE;IAC5D,SAAS,GAAG,KAAK,CAAC;IAC1B,uDAAuD;IACvD,OAAO,GAAG,IAAI,CAAC;IACf,wCAAwC;IAChC,MAAM,GAAG,CAAC,CAAC;IAEF,OAAO,CAAU;IACjB,cAAc,CAAU;IACxB,oBAAoB,CAAU;IAC9B,aAAa,CAAgB;IAE9C,YACI,EACI,OAAO,GAAG,KAAK,EACf,cAAc,GAAG,IAAI,EACrB,oBAAoB,GAAG,OAAO,GAKjC,EACgB,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;QAE/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAClC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,EACxC,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,CACrD,CAAC;IACN,CAAC;IAED,KAAK;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,KAAa;QACf,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,GAAG;QACC,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,KAAK;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,MAAM;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,CAAS;QACvB,IACI,CAAC,KAAK,SAAS,CAAC,EAAE;YAClB,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAC5D,CAAC;YACC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;YACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAEO,eAAe,GAAe,SAAS,CAAC,KAAK,CAAC;IAC9C,aAAa,GAAG,CAAC,CAAC;IAElB,YAAY;QAChB,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC;YACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QAC5B,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACK,yBAAyB,CAAC,CAAS;QACvC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;QAEvB,qEAAqE;QACrE,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YACnD,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,OAAO;YACX,CAAC;YAED,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;gBAC3B,IACI,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,SAAS;oBAC5C,KAAK,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EACjC,CAAC;oBACC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC;oBAC1C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;oBACvB,OAAO;gBACX,CAAC;gBAED,IACI,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,QAAQ;oBAC3C,KAAK,KAAK,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EACpC,CAAC;oBACC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC;oBAC7C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;oBACvB,OAAO;gBACX,CAAC;YACL,CAAC;iBAAM,IACH,IAAI,CAAC,aAAa,KAAK,CAAC;gBACxB,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,UAAU;gBAC7C,KAAK,KAAK,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EACpC,CAAC;gBACC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC;gBAC7C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBACvB,OAAO;YACX,CAAC;QACL,CAAC;aAAM,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9B,0DAA0D;YAC1D,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO;QACX,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEO,kBAAkB,CAAC,CAAS;QAChC,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;gBACjC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC;gBAC1C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;gBACjC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B;YAC1D,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBACpC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B;YAC7D,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACK,aAAa,CAAC,CAAS;QAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QAED;;;;;WAKG;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAElD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,MAAc;QAC9B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED;;;;;;;;OAQG;IACK,kBAAkB,CAAC,CAAS;QAChC,IACI,CAAC,IAAI,CAAC,OAAO;YACb,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,UAAU;YAC7C,IAAI,CAAC,aAAa,IAAI,CAAC;YACvB;;;;eAIG;YACH,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;YACrD,CAAC,KAAK,SAAS,CAAC,EAAE,EACpB,CAAC;YACC,sCAAsC;YACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC;aAAM,IACH,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,UAAU;YAC7C,IAAI,CAAC,aAAa,KAAK,CAAC;YACxB,CAAC,KAAK,SAAS,CAAC,EAAE,EACpB,CAAC;YACC,iEAAiE;YACjE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;aAAM,IACH,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,UAAU;YAC7C,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YACtD,CAAC,KAAK,SAAS,CAAC,EAAE,EACpB,CAAC;YACC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACxD,IAAI,EAAE,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;gBACvD,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;oBAC9C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACzD,CAAC;gBAED,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YAC5B,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;YAClC,sDAAsD;YACtD,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5D,uCAAuC;YACvC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACK,cAAc,CAAC,CAAS;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;OAMG;IACK,iBAAiB,CAAC,CAAS;QAC/B,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YACrD,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;gBAE3D,IAAI,IAAI,CAAC,YAAY,GAAG,SAAS,EAAE,CAAC;oBAChC,uDAAuD;oBACvD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC/B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;oBACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;oBAC9C,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;gBAC7B,CAAC;gBAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,YAAY,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,qBAAqB;gBACxD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAC9B,OAAO,CAAC,8CAA8C;YAC1D,CAAC;YAED,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;YAClC,IACI,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,QAAQ;gBAC3C,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,WAAW,EAChD,CAAC;gBACC,4EAA4E;gBAC5E,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;oBAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvB,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC1C,+CAA+C;gBAC/C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,6EAA6E;YAC7E,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,CAAS;QAChC,IAAI,CAAC,KAAK,SAAS,CAAC,eAAe,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC;YACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,uBAAuB,CAAC;gBAC3C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YAE/B,MAAM,OAAO,GACT,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE;gBAC3C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAE9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;gBAC/B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,oBAAoB,CAAC;YAC5C,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,oBAAoB,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IACO,cAAc,CAAC,CAAS;QAC5B,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,mBAAmB,CAAC;YACvC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IACO,yBAAyB,CAAC,CAAS;QACvC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,SAAS;YACb,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC/B,CAAC,CAAC,KAAK,CAAC,gBAAgB;gBACxB,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QACnC,CAAC;IACL,CAAC;IACO,qBAAqB,CAAC,CAAS;QACnC,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,mBAAmB,CAAC;YACvC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IACO,wBAAwB,CAAC,CAAS;QACtC,4BAA4B;QAC5B,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IACO,wBAAwB,CAAC,CAAS;QACtC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACxC,CAAC;aAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QACnC,CAAC;IACL,CAAC;IACD;;;;;;;;OAQG;IACK,qBAAqB,CAAC,CAAS;QACnC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YAEnC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,OAAO;YACX,CAAC;YAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,4DAA4D;YACpF,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC;QAC3C,CAAC;aAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,mBAAmB,CAAC;YACvC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IACO,oBAAoB,CAAC,CAAS;QAClC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC;YACtC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;IACO,uBAAuB,CAAC,CAAS;QACrC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,oBAAoB,CAAC;QAC5C,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YACrD,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,mBAAmB,CAAC;YACvC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QACnC,CAAC;IACL,CAAC;IACO,yBAAyB,CAAC,CAAS;QACvC,IAAI,CAAC,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC;YACtC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB;QAC7D,CAAC;IACL,CAAC;IACO,sBAAsB,CAAC,CAAS,EAAE,KAAa;QACnD,IACI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EACrD,CAAC;YACC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,WAAW,CAChB,KAAK,KAAK,SAAS,CAAC,WAAW;gBAC3B,CAAC,CAAC,SAAS,CAAC,MAAM;gBAClB,CAAC,CAAC,SAAS,CAAC,MAAM,EACtB,IAAI,CAAC,KAAK,GAAG,CAAC,CACjB,CAAC;YACF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,mBAAmB,CAAC;QAC3C,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IACO,iCAAiC,CAAC,CAAS;QAC/C,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IACO,iCAAiC,CAAC,CAAS;QAC/C,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IACO,6BAA6B,CAAC,CAAS;QAC3C,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,mBAAmB,CAAC;YACvC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IACD;;;;;;;OAOG;IACK,sBAAsB,CAAC,CAAS;QACpC,IAAI,CAAC,KAAK,SAAS,CAAC,oBAAoB,EAAE,CAAC;YACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK;gBACN,CAAC,KAAK,SAAS,CAAC,IAAI;oBAChB,CAAC,CAAC,KAAK,CAAC,aAAa;oBACrB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;QAClC,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,mBAAmB,CAAC;YACvC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;QACrC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACxC,CAAC;IACL,CAAC;IACD;;;;;;;OAOG;IACK,wBAAwB,CAAC,CAAS;QACtC,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;YACjC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACxC,CAAC;IACL,CAAC;IACO,kBAAkB,CAAC,CAAS;QAChC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IACD;;;;;;OAMG;IACK,4BAA4B,CAAC,CAAS;QAC1C,IAAI,CAAC,KAAK,SAAS,CAAC,YAAY,EAAE,CAAC;YAC/B,qEAAqE;YACrE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,kEAAkE;YAClE,IAAI,CAAC,aAAa,GAAG,MAAM,CACvB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAC7C,CAAC;QACN,CAAC;IACL,CAAC;IACO,kBAAkB,CAAC,CAAS;QAChC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;YACjC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC;YAC5C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;QACrC,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACxC,CAAC;IACL,CAAC;IACO,qBAAqB,CAAC,CAAS;QACnC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,WAAW,CAC1B,IAAI,CAAC,OAAO;YACR,CAAC,CAAC,YAAY,CAAC,MAAM;YACrB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI;gBAC3B,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,YAAY;gBACvC,CAAC,CAAC,YAAY,CAAC,MAAM;gBACrB,CAAC,CAAC,YAAY,CAAC,SAAS,CACjC,CAAC;IACN,CAAC;IAEO,aAAa;QACjB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEpE,wDAAwD;QACxD,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;YAE5B,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YACpB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IACI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;gBAClC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,SAAS,CAAC,GAAG,EACzD,CAAC;gBACC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC5B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;gBAChB,OAAO;YACX,CAAC;YAED,2BAA2B;YAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;IAED;;OAEG;IACK,OAAO;QACX,qEAAqE;QACrE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACnD,IACI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI;gBACzB,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW;gBAChC,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC,EACjE,CAAC;gBACC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,CAAC;iBAAM,IACH,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,kBAAkB;gBACvC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,kBAAkB;gBACvC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,kBAAkB,EACzC,CAAC;gBACC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,CAAC;QACL,CAAC;IACL,CAAC;IAEO,cAAc;QAClB,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACK,KAAK;QACT,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3D,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACjB,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAClB,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;oBACrB,mDAAmD;oBACnD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBAClD,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;oBAClC,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;oBACtB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;oBAC1B,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBAC7B,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC5B,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC;oBAC1C,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;oBACzB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC1B,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;oBAC9B,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBAC7B,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;oBACnB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oBACvB,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC1B,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;oBAC9B,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC5B,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC5B,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC;oBAC1C,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;oBAClC,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;oBAClC,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBAC7B,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC5B,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;oBACtC,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC1B,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;oBAC9B,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBAC3B,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;oBAC/B,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;oBACrC,MAAM;gBACV,CAAC;gBACD,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAClB,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,MAAM;gBACV,CAAC;YACL,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,MAAM;QACV,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAEO,6BAA6B,CAAC,QAAgB;QAClD,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,YAAY,GAAG,QAAQ,EAAE,CAAC;oBAC/B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,sDAAsD;gBACtD,MAAM,UAAU,GACZ,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACnD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;gBACvB,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,+BAA+B,CAAC,QAAgB;QACpD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACjB,KAAK,KAAK,CAAC,gBAAgB,CAAC;gBAC5B,KAAK,KAAK,CAAC,aAAa,CAAC;gBACzB,KAAK,KAAK,CAAC,aAAa,CAAC;gBACzB,KAAK,KAAK,CAAC,mBAAmB,CAAC;gBAC/B,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;oBAC7C,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACN,OAAO,KAAK,CAAC;gBACjB,CAAC;YACL,CAAC;QACL,CAAC;QAED,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,KAAK,KAAK,CAAC,iBAAiB,CAAC;YAC7B,KAAK,KAAK,CAAC,gBAAgB,CAAC;YAC5B,KAAK,KAAK,CAAC,aAAa,CAAC;YACzB,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACnD,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,KAAK,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC7B,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBAClD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACvD,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;gBACvB,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACN,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;IACL,CAAC;IAED,gCAAgC;IACxB,kBAAkB;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAElD,IACI,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,EAChD,CAAC;YACC,OAAO;QACX,CAAC;QAED,8CAA8C;QAC9C,IAAI,IAAI,CAAC,YAAY,IAAI,QAAQ,EAAE,CAAC;YAChC,OAAO;QACX,CAAC;QAED,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,mBAAmB,CAAC;YAC/B,KAAK,KAAK,CAAC,oBAAoB,CAAC;YAChC,KAAK,KAAK,CAAC,kBAAkB,CAAC;YAC9B,KAAK,KAAK,CAAC,eAAe,CAAC;YAC3B,KAAK,KAAK,CAAC,kBAAkB,CAAC;YAC9B,KAAK,KAAK,CAAC,kBAAkB,CAAC;YAC9B,KAAK,KAAK,CAAC,kBAAkB,CAAC;YAC9B,KAAK,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC1B;;;mBAGG;gBACH,MAAM;YACV,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,EAAU,EAAE,QAAgB;QAC9C,IACI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI;YAC7B,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,YAAY,EACvC,CAAC;YACC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;YAChD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YAEnC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACJ,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;YAChD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YAEnC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;CACJ"} |
+3
-3
| { | ||
| "name": "htmlparser2", | ||
| "version": "11.0.0", | ||
| "version": "12.0.0", | ||
| "description": "Fast & forgiving HTML/XML parser", | ||
@@ -70,7 +70,7 @@ "keywords": [ | ||
| "domhandler": "^6.0.0", | ||
| "domutils": "^4.0.0", | ||
| "domutils": "^4.0.2", | ||
| "entities": "^8.0.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@biomejs/biome": "^2.4.7", | ||
| "@biomejs/biome": "^2.4.8", | ||
| "@feedic/eslint-config": "^0.3.1", | ||
@@ -77,0 +77,0 @@ "@types/node": "^25.5.0", |
+172
-52
@@ -15,2 +15,3 @@ const { fromCodePoint } = String; | ||
| const pTag = new Set(["p"]); | ||
| const headingTags = new Set(["h1", "h2", "h3", "h4", "h5", "h6", "p"]); | ||
| const tableSectionTags = new Set(["thead", "tbody"]); | ||
@@ -25,10 +26,11 @@ const ddtTags = new Set(["dd", "dt"]); | ||
| ["body", new Set(["head", "link", "script"])], | ||
| ["a", new Set(["a"])], | ||
| ["li", new Set(["li"])], | ||
| ["p", pTag], | ||
| ["h1", pTag], | ||
| ["h2", pTag], | ||
| ["h3", pTag], | ||
| ["h4", pTag], | ||
| ["h5", pTag], | ||
| ["h6", pTag], | ||
| ["h1", headingTags], | ||
| ["h2", headingTags], | ||
| ["h3", headingTags], | ||
| ["h4", headingTags], | ||
| ["h5", headingTags], | ||
| ["h6", headingTags], | ||
| ["select", formTags], | ||
@@ -71,2 +73,4 @@ ["input", formTags], | ||
| const DOCUMENT_TYPE = "doctype"; | ||
| const voidElements = new Set([ | ||
@@ -96,2 +100,8 @@ "area", | ||
| /** | ||
| * Elements that can be used to integrate HTML content within foreign namespaces (e.g., SVG or MathML). | ||
| * | ||
| * Entries must use the SVG-adjusted casing (e.g. "foreignObject" not | ||
| * "foreignobject") since they are compared against adjusted tag names. | ||
| */ | ||
| const htmlIntegrationElements = new Set([ | ||
@@ -104,3 +114,3 @@ "mi", | ||
| "annotation-xml", | ||
| "foreignobject", | ||
| "foreignObject", | ||
| "desc", | ||
@@ -110,2 +120,48 @@ "title", | ||
| const svgTagNameAdjustments = new Map<string, string>([ | ||
| ["altglyph", "altGlyph"], | ||
| ["altglyphdef", "altGlyphDef"], | ||
| ["altglyphitem", "altGlyphItem"], | ||
| ["animatecolor", "animateColor"], | ||
| ["animatemotion", "animateMotion"], | ||
| ["animatetransform", "animateTransform"], | ||
| ["clippath", "clipPath"], | ||
| ["feblend", "feBlend"], | ||
| ["fecolormatrix", "feColorMatrix"], | ||
| ["fecomponenttransfer", "feComponentTransfer"], | ||
| ["fecomposite", "feComposite"], | ||
| ["feconvolvematrix", "feConvolveMatrix"], | ||
| ["fediffuselighting", "feDiffuseLighting"], | ||
| ["fedisplacementmap", "feDisplacementMap"], | ||
| ["fedistantlight", "feDistantLight"], | ||
| ["fedropshadow", "feDropShadow"], | ||
| ["feflood", "feFlood"], | ||
| ["fefunca", "feFuncA"], | ||
| ["fefuncb", "feFuncB"], | ||
| ["fefuncg", "feFuncG"], | ||
| ["fefuncr", "feFuncR"], | ||
| ["fegaussianblur", "feGaussianBlur"], | ||
| ["feimage", "feImage"], | ||
| ["femerge", "feMerge"], | ||
| ["femergenode", "feMergeNode"], | ||
| ["femorphology", "feMorphology"], | ||
| ["feoffset", "feOffset"], | ||
| ["fepointlight", "fePointLight"], | ||
| ["fespecularlighting", "feSpecularLighting"], | ||
| ["fespotlight", "feSpotLight"], | ||
| ["fetile", "feTile"], | ||
| ["feturbulence", "feTurbulence"], | ||
| ["foreignobject", "foreignObject"], | ||
| ["glyphref", "glyphRef"], | ||
| ["lineargradient", "linearGradient"], | ||
| ["radialgradient", "radialGradient"], | ||
| ["textpath", "textPath"], | ||
| ]); | ||
| const enum ForeignContext { | ||
| None, | ||
| Svg, | ||
| MathML, | ||
| } | ||
| /** | ||
@@ -225,4 +281,3 @@ * Options for the streaming HTML/XML parser. | ||
| private readonly stack: string[] = []; | ||
| /** Determines whether self-closing tags are recognized. */ | ||
| private readonly foreignContext: boolean[]; | ||
| private readonly foreignContext: ForeignContext[]; | ||
| private readonly cbs: Partial<Handler>; | ||
@@ -258,3 +313,3 @@ private readonly lowerCaseTagNames: boolean; | ||
| ); | ||
| this.foreignContext = [!this.htmlMode]; | ||
| this.foreignContext = [ForeignContext.None]; | ||
| this.cbs.onparserinit?.(this); | ||
@@ -288,2 +343,7 @@ } | ||
| /** @internal */ | ||
| isInForeignContext(): boolean { | ||
| return this.foreignContext[0] !== ForeignContext.None; | ||
| } | ||
| /** | ||
@@ -299,2 +359,45 @@ * Checks if the current tag is a void element. Override this if you want | ||
| /** | ||
| * Read a tag name from the buffer. | ||
| * | ||
| * When `lowerCaseTagNames` is enabled (the default in HTML mode), the name | ||
| * is lowercased and may be adjusted for SVG casing or the `image` → `img` | ||
| * alias. | ||
| * @param start Start index of the tag name in the buffer. | ||
| * @param endIndex End index of the tag name in the buffer. | ||
| */ | ||
| private readTagName(start: number, endIndex: number): string { | ||
| const name = this.lowerCaseTagNames | ||
| ? this.getSlice(start, endIndex).toLowerCase() | ||
| : this.getSlice(start, endIndex); | ||
| if (!(this.lowerCaseTagNames && this.htmlMode)) { | ||
| return name; | ||
| } | ||
| if (this.foreignContext[0] === ForeignContext.Svg) { | ||
| return svgTagNameAdjustments.get(name) ?? name; | ||
| } | ||
| /* | ||
| * Closing tags for SVG elements inside HTML integration points | ||
| * (e.g. </foreignObject> while inside its own content) need case | ||
| * adjustment so the name matches what was pushed to the stack. | ||
| * `foreignContext.length > 1` means a foreign ancestor exists — | ||
| * the base [None] entry plus at least one pushed context. | ||
| */ | ||
| if (this.foreignContext.length > 1) { | ||
| const adjusted = svgTagNameAdjustments.get(name); | ||
| if (adjusted !== undefined && this.stack.includes(adjusted)) { | ||
| return adjusted; | ||
| } | ||
| } | ||
| if (!this.isInForeignContext()) { | ||
| return name === "image" ? "img" : name; | ||
| } | ||
| return name; | ||
| } | ||
| /** | ||
| * @param start Start index for the current parser event. | ||
@@ -306,10 +409,3 @@ * @param endIndex End index for the current parser event. | ||
| this.endIndex = endIndex; | ||
| let name = this.getSlice(start, endIndex); | ||
| if (this.lowerCaseTagNames) { | ||
| name = name.toLowerCase(); | ||
| } | ||
| this.emitOpenTag(name); | ||
| this.emitOpenTag(this.readTagName(start, endIndex)); | ||
| } | ||
@@ -321,2 +417,13 @@ | ||
| /* | ||
| * The spec ignores a second <form> when one is already open. | ||
| * Setting tagname to "" suppresses all downstream effects: attribs | ||
| * stays null so endOpenTag is a no-op, and closeCurrentTag can't | ||
| * match "" on the stack. | ||
| */ | ||
| if (this.htmlMode && name === "form" && this.stack.includes("form")) { | ||
| this.tagname = ""; | ||
| return; | ||
| } | ||
| const impliesClose = this.htmlMode && openImpliesClose.get(name); | ||
@@ -326,7 +433,3 @@ | ||
| while (this.stack.length > 0 && impliesClose.has(this.stack[0])) { | ||
| const element = this.stack.shift(); | ||
| if (element === undefined) { | ||
| break; | ||
| } | ||
| this.cbs.onclosetag?.(element, true); | ||
| this.popElement(true); | ||
| } | ||
@@ -338,6 +441,8 @@ } | ||
| if (this.htmlMode) { | ||
| if (foreignContextElements.has(name)) { | ||
| this.foreignContext.unshift(true); | ||
| if (name === "svg") { | ||
| this.foreignContext.unshift(ForeignContext.Svg); | ||
| } else if (name === "math") { | ||
| this.foreignContext.unshift(ForeignContext.MathML); | ||
| } else if (htmlIntegrationElements.has(name)) { | ||
| this.foreignContext.unshift(false); | ||
| this.foreignContext.unshift(ForeignContext.None); | ||
| } | ||
@@ -383,27 +488,11 @@ } | ||
| this.endIndex = endIndex; | ||
| const name = this.readTagName(start, endIndex); | ||
| let name = this.getSlice(start, endIndex); | ||
| if (this.lowerCaseTagNames) { | ||
| name = name.toLowerCase(); | ||
| } | ||
| if ( | ||
| this.htmlMode && | ||
| (foreignContextElements.has(name) || | ||
| htmlIntegrationElements.has(name)) | ||
| ) { | ||
| this.foreignContext.shift(); | ||
| } | ||
| if (!this.isVoidElement(name)) { | ||
| const pos = this.stack.indexOf(name); | ||
| if (pos !== -1) { | ||
| for (let index = 0; index <= pos; index++) { | ||
| const element = this.stack.shift(); | ||
| if (element === undefined) { | ||
| break; | ||
| } | ||
| this.cbs.onclosetag?.(element, index !== pos); | ||
| for (let index = 0; index < pos; index++) { | ||
| this.popElement(true); | ||
| } | ||
| this.popElement(false); | ||
| } else if (this.htmlMode && name === "p") { | ||
@@ -431,3 +520,3 @@ // Implicit open before close | ||
| this.endIndex = endIndex; | ||
| if (this.recognizeSelfClosing || this.foreignContext[0]) { | ||
| if (this.recognizeSelfClosing || this.isInForeignContext()) { | ||
| this.closeCurrentTag(false); | ||
@@ -443,2 +532,20 @@ | ||
| /** | ||
| * Pop the top element off the stack, emit a close event, and maintain | ||
| * the foreign context stack. | ||
| * @param implied Whether this close is implied (not from an explicit end tag). | ||
| */ | ||
| private popElement(implied: boolean): void { | ||
| // biome-ignore lint/style/noNonNullAssertion: The element is guaranteed to exist. | ||
| const element = this.stack.shift()!; | ||
| if ( | ||
| this.htmlMode && | ||
| (foreignContextElements.has(element) || | ||
| htmlIntegrationElements.has(element)) | ||
| ) { | ||
| this.foreignContext.shift(); | ||
| } | ||
| this.cbs.onclosetag?.(element, implied); | ||
| } | ||
| private closeCurrentTag(isOpenImplied: boolean) { | ||
@@ -450,5 +557,3 @@ const name = this.tagname; | ||
| if (this.stack[0] === name) { | ||
| // If the opening tag isn't implied, the closing tag has to be implied. | ||
| this.cbs.onclosetag?.(name, !isOpenImplied); | ||
| this.stack.shift(); | ||
| this.popElement(!isOpenImplied); | ||
| } | ||
@@ -535,3 +640,11 @@ } | ||
| if (this.cbs.onprocessinginstruction) { | ||
| const name = this.getInstructionName(value); | ||
| /* | ||
| * In HTML mode, ondeclaration is only reached for DOCTYPE | ||
| * (the tokenizer routes everything else to bogus comments). | ||
| */ | ||
| const name = this.htmlMode | ||
| ? this.lowerCaseTagNames | ||
| ? DOCUMENT_TYPE | ||
| : value.slice(0, DOCUMENT_TYPE.length) | ||
| : this.getInstructionName(value); | ||
| this.cbs.onprocessinginstruction(`!${name}`, `!${value}`); | ||
@@ -592,2 +705,4 @@ } | ||
| this.cbs.oncdataend?.(); | ||
| } else if (this.isInForeignContext()) { | ||
| this.cbs.ontext?.(value); | ||
| } else { | ||
@@ -622,2 +737,3 @@ this.cbs.oncomment?.(`[CDATA[${value}]]`); | ||
| this.attribname = ""; | ||
| this.attribvalue = ""; | ||
| this.attribs = null; | ||
@@ -630,3 +746,3 @@ this.stack.length = 0; | ||
| this.foreignContext.length = 0; | ||
| this.foreignContext.unshift(!this.htmlMode); | ||
| this.foreignContext.unshift(ForeignContext.None); | ||
| this.bufferOffset = 0; | ||
@@ -648,2 +764,6 @@ this.writeIndex = 0; | ||
| private getSlice(start: number, end: number) { | ||
| if (start === end) { | ||
| return ""; | ||
| } | ||
| while (start - this.bufferOffset >= this.buffers[0].length) { | ||
@@ -650,0 +770,0 @@ this.shiftBuffer(); |
+394
-177
@@ -67,2 +67,3 @@ import { | ||
| CDATASequence, | ||
| DeclarationSequence, | ||
| InSpecialComment, | ||
@@ -72,6 +73,5 @@ InCommentLike, | ||
| // Special tags | ||
| BeforeSpecialS, // Decide if we deal with `<script` or `<style` | ||
| BeforeSpecialT, // Decide if we deal with `<title` or `<textarea` | ||
| SpecialStartSequence, | ||
| InSpecialTag, | ||
| InPlainText, | ||
@@ -131,2 +131,3 @@ InEntity, | ||
| ontextentity(codepoint: number, endIndex: number): void; | ||
| isInForeignContext?(): boolean; | ||
| } | ||
@@ -145,2 +146,13 @@ | ||
| CommentEnd: new Uint8Array([0x2d, 0x2d, 0x21, 0x3e]), // `--!>` | ||
| Doctype: new Uint8Array([0x64, 0x6f, 0x63, 0x74, 0x79, 0x70, 0x65]), // `doctype` | ||
| IframeEnd: new Uint8Array([0x3c, 0x2f, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65]), // `</iframe` | ||
| NoembedEnd: new Uint8Array([ | ||
| 0x3c, 0x2f, 0x6e, 0x6f, 0x65, 0x6d, 0x62, 0x65, 0x64, | ||
| ]), // `</noembed` | ||
| NoframesEnd: new Uint8Array([ | ||
| 0x3c, 0x2f, 0x6e, 0x6f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, | ||
| ]), // `</noframes` | ||
| Plaintext: new Uint8Array([ | ||
| 0x3c, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x78, 0x74, | ||
| ]), // `</plaintext` | ||
| ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // `</script` | ||
@@ -156,2 +168,17 @@ StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), // `</style` | ||
| /** | ||
| * Maps the first lowercase character of an HTML tag name to the sequence | ||
| * used for special-tag detection. All sequences share a common layout | ||
| * where index 2 is the first tag-name character, so matching always | ||
| * continues from offset 3. | ||
| */ | ||
| const specialStartSequences = new Map<number, Uint8Array>([ | ||
| [Sequences.IframeEnd[2], Sequences.IframeEnd], | ||
| [Sequences.NoembedEnd[2], Sequences.NoembedEnd], | ||
| [Sequences.Plaintext[2], Sequences.Plaintext], | ||
| [Sequences.ScriptEnd[2], Sequences.ScriptEnd], | ||
| [Sequences.TitleEnd[2], Sequences.TitleEnd], | ||
| [Sequences.XmpEnd[2], Sequences.XmpEnd], | ||
| ]); | ||
| /** | ||
| * Tokenizer implementation used by `Parser`. | ||
@@ -181,2 +208,3 @@ */ | ||
| private readonly decodeEntities: boolean; | ||
| private readonly recognizeSelfClosing: boolean; | ||
| private readonly entityDecoder: EntityDecoder; | ||
@@ -188,3 +216,8 @@ | ||
| decodeEntities = true, | ||
| }: { xmlMode?: boolean; decodeEntities?: boolean }, | ||
| recognizeSelfClosing = xmlMode, | ||
| }: { | ||
| xmlMode?: boolean; | ||
| decodeEntities?: boolean; | ||
| recognizeSelfClosing?: boolean; | ||
| }, | ||
| private readonly cbs: Callbacks, | ||
@@ -194,2 +227,3 @@ ) { | ||
| this.decodeEntities = decodeEntities; | ||
| this.recognizeSelfClosing = recognizeSelfClosing; | ||
| this.entityDecoder = new EntityDecoder( | ||
@@ -252,64 +286,76 @@ xmlMode ? xmlDecodeTree : htmlDecodeTree, | ||
| private sequenceIndex = 0; | ||
| private stateSpecialStartSequence(c: number): void { | ||
| const isEnd = this.sequenceIndex === this.currentSequence.length; | ||
| const isMatch = isEnd | ||
| ? // If we are at the end of the sequence, make sure the tag name has ended | ||
| isEndOfTagSection(c) | ||
| : // Otherwise, do a case-insensitive comparison | ||
| (c | 0x20) === this.currentSequence[this.sequenceIndex]; | ||
| if (!isMatch) { | ||
| this.isSpecial = false; | ||
| } else if (!isEnd) { | ||
| this.sequenceIndex++; | ||
| return; | ||
| private enterTagBody(): void { | ||
| if (this.currentSequence === Sequences.Plaintext) { | ||
| this.currentSequence = Sequences.Empty; | ||
| this.state = State.InPlainText; | ||
| } else if (this.isSpecial) { | ||
| this.state = State.InSpecialTag; | ||
| this.sequenceIndex = 0; | ||
| } else { | ||
| this.state = State.Text; | ||
| } | ||
| this.sequenceIndex = 0; | ||
| this.state = State.InTagName; | ||
| this.stateInTagName(c); | ||
| } | ||
| /** | ||
| * Look for an end tag. For <title> tags, also decode entities. | ||
| * Match the opening tag name against an HTML text-only tag sequence. | ||
| * | ||
| * Some tags share an initial prefix (`script`/`style`, `title`/`textarea`, | ||
| * `noembed`/`noframes`), so we may switch to an alternate sequence at the | ||
| * first distinguishing byte. On a successful full match we fall back to | ||
| * the normal tag-name state; a later `>` will enter raw-text, RCDATA, or | ||
| * plaintext mode based on `currentSequence` / `isSpecial`. | ||
| * @param c Current character code point. | ||
| */ | ||
| private stateInSpecialTag(c: number): void { | ||
| if (this.sequenceIndex === this.currentSequence.length) { | ||
| if (isEndOfTagSection(c)) { | ||
| const endOfText = this.index - this.currentSequence.length; | ||
| private stateSpecialStartSequence(c: number): void { | ||
| const lower = c | 0x20; | ||
| if (this.sectionStart < endOfText) { | ||
| // Spoof the index so that reported locations match up. | ||
| const actualIndex = this.index; | ||
| this.index = endOfText; | ||
| this.cbs.ontext(this.sectionStart, endOfText); | ||
| this.index = actualIndex; | ||
| // Still matching — check for an alternate sequence at branch points. | ||
| if (this.sequenceIndex < this.currentSequence.length) { | ||
| if (lower === this.currentSequence[this.sequenceIndex]) { | ||
| this.sequenceIndex++; | ||
| return; | ||
| } | ||
| if (this.sequenceIndex === 3) { | ||
| if ( | ||
| this.currentSequence === Sequences.ScriptEnd && | ||
| lower === Sequences.StyleEnd[3] | ||
| ) { | ||
| this.currentSequence = Sequences.StyleEnd; | ||
| this.sequenceIndex = 4; | ||
| return; | ||
| } | ||
| this.isSpecial = false; | ||
| this.sectionStart = endOfText + 2; // Skip over the `</` | ||
| this.stateInClosingTagName(c); | ||
| return; // We are done; skip the rest of the function. | ||
| if ( | ||
| this.currentSequence === Sequences.TitleEnd && | ||
| lower === Sequences.TextareaEnd[3] | ||
| ) { | ||
| this.currentSequence = Sequences.TextareaEnd; | ||
| this.sequenceIndex = 4; | ||
| return; | ||
| } | ||
| } else if ( | ||
| this.sequenceIndex === 4 && | ||
| this.currentSequence === Sequences.NoembedEnd && | ||
| lower === Sequences.NoframesEnd[4] | ||
| ) { | ||
| this.currentSequence = Sequences.NoframesEnd; | ||
| this.sequenceIndex = 5; | ||
| return; | ||
| } | ||
| } else if (isEndOfTagSection(c)) { | ||
| // Full match on a valid tag boundary — keep the sequence. | ||
| this.sequenceIndex = 0; | ||
| this.state = State.InTagName; | ||
| this.stateInTagName(c); | ||
| return; | ||
| } | ||
| if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) { | ||
| this.sequenceIndex += 1; | ||
| } else if (this.sequenceIndex === 0) { | ||
| if (this.currentSequence === Sequences.TitleEnd) { | ||
| // We have to parse entities in <title> tags. | ||
| if (this.decodeEntities && c === CharCodes.Amp) { | ||
| this.startEntity(); | ||
| } | ||
| } else if (this.fastForwardTo(CharCodes.Lt)) { | ||
| // Outside of <title> tags, we can fast-forward. | ||
| this.sequenceIndex = 1; | ||
| } | ||
| } else { | ||
| // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`. | ||
| this.sequenceIndex = Number(c === CharCodes.Lt); | ||
| } | ||
| // No match — abandon special-tag detection. | ||
| this.isSpecial = false; | ||
| this.currentSequence = Sequences.Empty; | ||
| this.sequenceIndex = 0; | ||
| this.state = State.InTagName; | ||
| this.stateInTagName(c); | ||
| } | ||
@@ -327,4 +373,9 @@ | ||
| this.sequenceIndex = 0; | ||
| this.state = State.InDeclaration; | ||
| this.stateInDeclaration(c); // Reconsume the character | ||
| if (this.xmlMode) { | ||
| this.state = State.InDeclaration; | ||
| this.stateInDeclaration(c); // Reconsume the character | ||
| } else { | ||
| this.state = State.InSpecialComment; | ||
| this.stateInSpecialComment(c); // Reconsume the character | ||
| } | ||
| } | ||
@@ -358,2 +409,13 @@ } | ||
| /** | ||
| * Emit a comment token and return to the text state. | ||
| * @param offset Number of characters in the end sequence that have already been matched. | ||
| */ | ||
| private emitComment(offset: number): void { | ||
| this.cbs.oncomment(this.sectionStart, this.index, offset); | ||
| this.sequenceIndex = 0; | ||
| this.sectionStart = this.index + 1; | ||
| this.state = State.Text; | ||
| } | ||
| /** | ||
| * Comments and CDATA end with `-->` and `]]>`. | ||
@@ -369,3 +431,17 @@ * | ||
| if ( | ||
| !this.xmlMode && | ||
| this.currentSequence === Sequences.CommentEnd && | ||
| this.sequenceIndex <= 1 && | ||
| /* | ||
| * We're still at the very start of the comment: the only | ||
| * characters consumed since `<!--` are the dashes that | ||
| * advanced sequenceIndex (0 for `<!-->`, 1 for `<!--->`). | ||
| */ | ||
| this.index === this.sectionStart + this.sequenceIndex && | ||
| c === CharCodes.Gt | ||
| ) { | ||
| // Abruptly closed empty HTML comment. | ||
| this.emitComment(this.sequenceIndex); | ||
| } else if ( | ||
| this.currentSequence === Sequences.CommentEnd && | ||
| this.sequenceIndex === 2 && | ||
@@ -375,7 +451,3 @@ c === CharCodes.Gt | ||
| // `!` is optional here, so the same sequence also accepts `-->`. | ||
| this.cbs.oncomment(this.sectionStart, this.index, 2); | ||
| this.sequenceIndex = 0; | ||
| this.sectionStart = this.index + 1; | ||
| this.state = State.Text; | ||
| this.emitComment(2); | ||
| } else if ( | ||
@@ -421,7 +493,50 @@ this.currentSequence === Sequences.CommentEnd && | ||
| private startSpecial(sequence: Uint8Array, offset: number) { | ||
| this.isSpecial = true; | ||
| this.currentSequence = sequence; | ||
| this.sequenceIndex = offset; | ||
| this.state = State.SpecialStartSequence; | ||
| /** | ||
| * Scan raw-text / RCDATA content for the matching end tag. | ||
| * | ||
| * For RCDATA tags (`<title>`, `<textarea>`) entities are decoded inline. | ||
| * For raw-text tags (`<script>`, `<style>`, etc.) we fast-forward to `<`. | ||
| * @param c Current character code point. | ||
| */ | ||
| private stateInSpecialTag(c: number): void { | ||
| if (this.sequenceIndex === this.currentSequence.length) { | ||
| if (isEndOfTagSection(c)) { | ||
| const endOfText = this.index - this.currentSequence.length; | ||
| if (this.sectionStart < endOfText) { | ||
| // Spoof the index so that reported locations match up. | ||
| const actualIndex = this.index; | ||
| this.index = endOfText; | ||
| this.cbs.ontext(this.sectionStart, endOfText); | ||
| this.index = actualIndex; | ||
| } | ||
| this.isSpecial = false; | ||
| this.sectionStart = endOfText + 2; // Skip over the `</` | ||
| this.stateInClosingTagName(c); | ||
| return; // We are done; skip the rest of the function. | ||
| } | ||
| this.sequenceIndex = 0; | ||
| } | ||
| if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) { | ||
| this.sequenceIndex += 1; | ||
| } else if (this.sequenceIndex === 0) { | ||
| if ( | ||
| this.currentSequence === Sequences.TitleEnd || | ||
| this.currentSequence === Sequences.TextareaEnd | ||
| ) { | ||
| // RCDATA tags have to parse entities while still looking for their end tag. | ||
| if (this.decodeEntities && c === CharCodes.Amp) { | ||
| this.startEntity(); | ||
| } | ||
| } else if (this.fastForwardTo(CharCodes.Lt)) { | ||
| // Outside of RCDATA tags, we can fast-forward. | ||
| this.sequenceIndex = 1; | ||
| } | ||
| } else { | ||
| // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`. | ||
| this.sequenceIndex = Number(c === CharCodes.Lt); | ||
| } | ||
| } | ||
@@ -434,19 +549,25 @@ | ||
| } else if (c === CharCodes.Questionmark) { | ||
| this.state = State.InProcessingInstruction; | ||
| this.sequenceIndex = 0; | ||
| this.sectionStart = this.index + 1; | ||
| if (this.xmlMode) { | ||
| this.state = State.InProcessingInstruction; | ||
| this.sequenceIndex = 0; | ||
| this.sectionStart = this.index + 1; | ||
| } else { | ||
| this.state = State.InSpecialComment; | ||
| this.sectionStart = this.index; | ||
| } | ||
| } else if (this.isTagStartChar(c)) { | ||
| const lower = c | 0x20; | ||
| this.sectionStart = this.index; | ||
| if (this.xmlMode) { | ||
| const special = | ||
| this.xmlMode || this.cbs.isInForeignContext?.() | ||
| ? undefined | ||
| : specialStartSequences.get(c | 0x20); | ||
| if (special === undefined) { | ||
| this.state = State.InTagName; | ||
| } else if (lower === Sequences.ScriptEnd[2]) { | ||
| this.state = State.BeforeSpecialS; | ||
| } else if ( | ||
| lower === Sequences.TitleEnd[2] || | ||
| lower === Sequences.XmpEnd[2] | ||
| ) { | ||
| this.state = State.BeforeSpecialT; | ||
| } else { | ||
| this.state = State.InTagName; | ||
| this.isSpecial = true; | ||
| this.currentSequence = special; | ||
| this.sequenceIndex = 3; | ||
| this.state = State.SpecialStartSequence; | ||
| } | ||
@@ -470,5 +591,13 @@ } else if (c === CharCodes.Slash) { | ||
| if (isWhitespace(c)) { | ||
| // Ignore | ||
| if (this.xmlMode) { | ||
| // Ignore | ||
| } else { | ||
| this.state = State.InSpecialComment; | ||
| this.sectionStart = this.index; | ||
| } | ||
| } else if (c === CharCodes.Gt) { | ||
| this.state = State.Text; | ||
| if (!this.xmlMode) { | ||
| this.sectionStart = this.index + 1; | ||
| } | ||
| } else { | ||
@@ -499,8 +628,3 @@ this.state = this.isTagStartChar(c) | ||
| this.cbs.onopentagend(this.index); | ||
| if (this.isSpecial) { | ||
| this.state = State.InSpecialTag; | ||
| this.sequenceIndex = 0; | ||
| } else { | ||
| this.state = State.Text; | ||
| } | ||
| this.enterTagBody(); | ||
| this.sectionStart = this.index + 1; | ||
@@ -514,8 +638,24 @@ } else if (c === CharCodes.Slash) { | ||
| } | ||
| /** | ||
| * Handle `/` before `>` in an opening tag. | ||
| * | ||
| * In HTML mode, text-only tags ignore the self-closing flag and still enter | ||
| * their raw-text/RCDATA/plaintext state unless self-closing tags are being | ||
| * recognized. In XML mode, or for ordinary tags, the tokenizer returns to | ||
| * regular text parsing after emitting the self-closing callback. | ||
| * @param c Current character code point. | ||
| */ | ||
| private stateInSelfClosingTag(c: number): void { | ||
| if (c === CharCodes.Gt) { | ||
| this.cbs.onselfclosingtag(this.index); | ||
| this.sectionStart = this.index + 1; | ||
| if (!this.recognizeSelfClosing) { | ||
| this.enterTagBody(); | ||
| return; | ||
| } | ||
| this.state = State.Text; | ||
| this.sectionStart = this.index + 1; | ||
| this.isSpecial = false; // Reset special state, in case of self-closing special tags | ||
| this.currentSequence = Sequences.Empty; | ||
| } else if (!isWhitespace(c)) { | ||
@@ -596,2 +736,10 @@ this.state = State.BeforeAttributeName; | ||
| } | ||
| /** | ||
| * Distinguish between CDATA, declarations, HTML comments, and HTML bogus | ||
| * comments after `<!`. | ||
| * | ||
| * In HTML mode, only real comments and doctypes stay on declaration paths; | ||
| * everything else becomes a bogus comment terminated by the next `>`. | ||
| * @param c Current character code point. | ||
| */ | ||
| private stateBeforeDeclaration(c: number): void { | ||
@@ -601,3 +749,3 @@ if (c === CharCodes.OpeningSquareBracket) { | ||
| this.sequenceIndex = 0; | ||
| } else { | ||
| } else if (this.xmlMode) { | ||
| this.state = | ||
@@ -607,4 +755,38 @@ c === CharCodes.Dash | ||
| : State.InDeclaration; | ||
| } else if ((c | 0x20) === Sequences.Doctype[0]) { | ||
| this.state = State.DeclarationSequence; | ||
| this.currentSequence = Sequences.Doctype; | ||
| this.sequenceIndex = 1; | ||
| } else if (c === CharCodes.Gt) { | ||
| this.cbs.oncomment(this.sectionStart, this.index, 0); | ||
| this.state = State.Text; | ||
| this.sectionStart = this.index + 1; | ||
| } else if (c === CharCodes.Dash) { | ||
| this.state = State.BeforeComment; | ||
| } else { | ||
| this.state = State.InSpecialComment; | ||
| } | ||
| } | ||
| /** | ||
| * Continue matching `doctype` after `<!d`. | ||
| * | ||
| * A full `doctype` match stays on the declaration path; any other name falls | ||
| * back to an HTML bogus comment, which matches browser behavior for | ||
| * non-doctype `<!...>` constructs. | ||
| * @param c Current character code point. | ||
| */ | ||
| private stateDeclarationSequence(c: number): void { | ||
| if (this.sequenceIndex === this.currentSequence.length) { | ||
| this.state = State.InDeclaration; | ||
| this.stateInDeclaration(c); | ||
| } else if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) { | ||
| this.sequenceIndex += 1; | ||
| } else if (c === CharCodes.Gt) { | ||
| this.cbs.oncomment(this.sectionStart, this.index, 0); | ||
| this.state = State.Text; | ||
| this.sectionStart = this.index + 1; | ||
| } else { | ||
| this.state = State.InSpecialComment; | ||
| } | ||
| } | ||
| private stateInDeclaration(c: number): void { | ||
@@ -617,25 +799,23 @@ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { | ||
| } | ||
| /** | ||
| * XML processing instructions (`<?...?>`). | ||
| * | ||
| * In HTML mode `<?` is routed to `InSpecialComment` instead, so this | ||
| * state is only reachable in XML mode. | ||
| * @param c Current character code point. | ||
| */ | ||
| private stateInProcessingInstruction(c: number): void { | ||
| if (this.xmlMode) { | ||
| if (c === CharCodes.Questionmark) { | ||
| // Remember that we just consumed `?`, so the next `>` closes the PI. | ||
| this.sequenceIndex = 1; | ||
| } else if (c === CharCodes.Gt && this.sequenceIndex === 1) { | ||
| this.cbs.onprocessinginstruction( | ||
| this.sectionStart, | ||
| this.index - 1, | ||
| ); | ||
| this.sequenceIndex = 0; | ||
| this.state = State.Text; | ||
| this.sectionStart = this.index + 1; | ||
| } else { | ||
| // Keep scanning for the next `?`, which can start a closing `?>`. | ||
| this.sequenceIndex = Number( | ||
| this.fastForwardTo(CharCodes.Questionmark), | ||
| ); | ||
| } | ||
| } else if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { | ||
| this.cbs.onprocessinginstruction(this.sectionStart, this.index); | ||
| if (c === CharCodes.Questionmark) { | ||
| // Remember that we just consumed `?`, so the next `>` closes the PI. | ||
| this.sequenceIndex = 1; | ||
| } else if (c === CharCodes.Gt && this.sequenceIndex === 1) { | ||
| this.cbs.onprocessinginstruction(this.sectionStart, this.index - 1); | ||
| this.sequenceIndex = 0; | ||
| this.state = State.Text; | ||
| this.sectionStart = this.index + 1; | ||
| } else { | ||
| // Keep scanning for the next `?`, which can start a closing `?>`. | ||
| this.sequenceIndex = Number( | ||
| this.fastForwardTo(CharCodes.Questionmark), | ||
| ); | ||
| } | ||
@@ -647,10 +827,12 @@ } | ||
| this.currentSequence = Sequences.CommentEnd; | ||
| /* | ||
| * In HTML, `<!-->` is a valid empty comment. In XML, comments | ||
| * must be closed by `-->`, so we require the full sequence. | ||
| */ | ||
| this.sequenceIndex = this.xmlMode ? 0 : 2; | ||
| this.sequenceIndex = 0; | ||
| this.sectionStart = this.index + 1; | ||
| } else if (this.xmlMode) { | ||
| this.state = State.InDeclaration; | ||
| } else if (c === CharCodes.Gt) { | ||
| this.cbs.oncomment(this.sectionStart, this.index, 0); | ||
| this.state = State.Text; | ||
| this.sectionStart = this.index + 1; | ||
| } else { | ||
| this.state = State.InDeclaration; | ||
| this.state = State.InSpecialComment; | ||
| } | ||
@@ -665,39 +847,3 @@ } | ||
| } | ||
| private stateBeforeSpecialS(c: number): void { | ||
| const lower = c | 0x20; | ||
| if (lower === Sequences.ScriptEnd[3]) { | ||
| this.startSpecial(Sequences.ScriptEnd, 4); | ||
| } else if (lower === Sequences.StyleEnd[3]) { | ||
| this.startSpecial(Sequences.StyleEnd, 4); | ||
| } else { | ||
| this.state = State.InTagName; | ||
| this.stateInTagName(c); // Consume the token again | ||
| } | ||
| } | ||
| private stateBeforeSpecialT(c: number): void { | ||
| const lower = c | 0x20; | ||
| switch (lower) { | ||
| case Sequences.TitleEnd[3]: { | ||
| this.startSpecial(Sequences.TitleEnd, 4); | ||
| break; | ||
| } | ||
| case Sequences.TextareaEnd[3]: { | ||
| this.startSpecial(Sequences.TextareaEnd, 4); | ||
| break; | ||
| } | ||
| case Sequences.XmpEnd[3]: { | ||
| this.startSpecial(Sequences.XmpEnd, 4); | ||
| break; | ||
| } | ||
| default: { | ||
| this.state = State.InTagName; | ||
| this.stateInTagName(c); // Consume the token again | ||
| } | ||
| } | ||
| } | ||
| private startEntity() { | ||
@@ -751,2 +897,3 @@ this.baseState = this.state; | ||
| this.state === State.Text || | ||
| this.state === State.InPlainText || | ||
| (this.state === State.InSpecialTag && this.sequenceIndex === 0) | ||
@@ -784,2 +931,7 @@ ) { | ||
| } | ||
| case State.InPlainText: { | ||
| // Skip to end of buffer; cleanup() emits the text. | ||
| this.index = this.buffer.length + this.offset - 1; | ||
| break; | ||
| } | ||
| case State.SpecialStartSequence: { | ||
@@ -797,2 +949,6 @@ this.stateSpecialStartSequence(c); | ||
| } | ||
| case State.DeclarationSequence: { | ||
| this.stateDeclarationSequence(c); | ||
| break; | ||
| } | ||
| case State.InAttributeValueDq: { | ||
@@ -850,10 +1006,2 @@ this.stateInAttributeValueDoubleQuotes(c); | ||
| } | ||
| case State.BeforeSpecialS: { | ||
| this.stateBeforeSpecialS(c); | ||
| break; | ||
| } | ||
| case State.BeforeSpecialT: { | ||
| this.stateBeforeSpecialT(c); | ||
| break; | ||
| } | ||
| case State.InAttributeValueNq: { | ||
@@ -904,2 +1052,68 @@ this.stateInAttributeValueNoQuotes(c); | ||
| private handleTrailingCommentLikeData(endIndex: number): boolean { | ||
| if (this.state !== State.InCommentLike) { | ||
| return false; | ||
| } | ||
| if (this.currentSequence === Sequences.CdataEnd) { | ||
| if (this.xmlMode) { | ||
| if (this.sectionStart < endIndex) { | ||
| this.cbs.oncdata(this.sectionStart, endIndex, 0); | ||
| } | ||
| } else { | ||
| /* In HTML mode, unclosed CDATA is a bogus comment. */ | ||
| const cdataStart = | ||
| this.sectionStart - Sequences.Cdata.length - 1; | ||
| this.cbs.oncomment(cdataStart, endIndex, 0); | ||
| } | ||
| } else { | ||
| const offset = this.xmlMode | ||
| ? 0 | ||
| : Math.min(this.sequenceIndex, Sequences.CommentEnd.length - 1); | ||
| this.cbs.oncomment(this.sectionStart, endIndex, offset); | ||
| } | ||
| return true; | ||
| } | ||
| private handleTrailingMarkupDeclaration(endIndex: number): boolean { | ||
| if (this.xmlMode) { | ||
| switch (this.state) { | ||
| case State.InSpecialComment: | ||
| case State.BeforeComment: | ||
| case State.CDATASequence: | ||
| case State.DeclarationSequence: | ||
| case State.InDeclaration: { | ||
| this.cbs.ontext(this.sectionStart, endIndex); | ||
| return true; | ||
| } | ||
| default: { | ||
| return false; | ||
| } | ||
| } | ||
| } | ||
| switch (this.state) { | ||
| case State.BeforeDeclaration: | ||
| case State.InSpecialComment: | ||
| case State.BeforeComment: | ||
| case State.CDATASequence: { | ||
| this.cbs.oncomment(this.sectionStart, endIndex, 0); | ||
| return true; | ||
| } | ||
| case State.DeclarationSequence: { | ||
| if (this.sequenceIndex !== Sequences.Doctype.length) { | ||
| this.cbs.oncomment(this.sectionStart, endIndex, 0); | ||
| } | ||
| return true; | ||
| } | ||
| case State.InDeclaration: { | ||
| return true; | ||
| } | ||
| default: { | ||
| return false; | ||
| } | ||
| } | ||
| } | ||
| /** Handle any trailing data. */ | ||
@@ -909,2 +1123,9 @@ private handleTrailingData() { | ||
| if ( | ||
| this.handleTrailingCommentLikeData(endIndex) || | ||
| this.handleTrailingMarkupDeclaration(endIndex) | ||
| ) { | ||
| return; | ||
| } | ||
| // If there is no remaining data, we are done. | ||
@@ -915,25 +1136,21 @@ if (this.sectionStart >= endIndex) { | ||
| if (this.state === State.InCommentLike) { | ||
| if (this.currentSequence === Sequences.CdataEnd) { | ||
| this.cbs.oncdata(this.sectionStart, endIndex, 0); | ||
| } else { | ||
| this.cbs.oncomment(this.sectionStart, endIndex, 0); | ||
| switch (this.state) { | ||
| case State.InTagName: | ||
| case State.BeforeAttributeName: | ||
| case State.BeforeAttributeValue: | ||
| case State.AfterAttributeName: | ||
| case State.InAttributeName: | ||
| case State.InAttributeValueSq: | ||
| case State.InAttributeValueDq: | ||
| case State.InAttributeValueNq: | ||
| case State.InClosingTagName: { | ||
| /* | ||
| * If we are currently in an opening or closing tag, us not calling the | ||
| * respective callback signals that the tag should be ignored. | ||
| */ | ||
| break; | ||
| } | ||
| } else if ( | ||
| this.state === State.InTagName || | ||
| this.state === State.BeforeAttributeName || | ||
| this.state === State.BeforeAttributeValue || | ||
| this.state === State.AfterAttributeName || | ||
| this.state === State.InAttributeName || | ||
| this.state === State.InAttributeValueSq || | ||
| this.state === State.InAttributeValueDq || | ||
| this.state === State.InAttributeValueNq || | ||
| this.state === State.InClosingTagName | ||
| ) { | ||
| /* | ||
| * If we are currently in an opening or closing tag, us not calling the | ||
| * respective callback signals that the tag should be ignored. | ||
| */ | ||
| } else { | ||
| this.cbs.ontext(this.sectionStart, endIndex); | ||
| default: { | ||
| this.cbs.ontext(this.sectionStart, endIndex); | ||
| } | ||
| } | ||
@@ -940,0 +1157,0 @@ } |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
235104
18.67%4298
19.79%10
-16.67%6
-14.29%Updated