{"version":3,"file":"swim-recon.mjs","sources":["../main/Recon.ts","../main/parser/BlockParser.ts","../main/parser/AttrParser.ts","../main/parser/BlockItemParser.ts","../main/parser/InlineItemParser.ts","../main/parser/RecordParser.ts","../main/parser/MarkupParser.ts","../main/parser/DataParser.ts","../main/parser/IdentParser.ts","../main/parser/StringParser.ts","../main/parser/RawStringParser.ts","../main/parser/NumberParser.ts","../main/parser/LambdaFuncParser.ts","../main/parser/ConditionalOperatorParser.ts","../main/parser/OrOperatorParser.ts","../main/parser/AndOperatorParser.ts","../main/parser/BitwiseOrOperatorParser.ts","../main/parser/BitwiseXorOperatorParser.ts","../main/parser/BitwiseAndOperatorParser.ts","../main/parser/ComparisonOperatorParser.ts","../main/parser/AttrExpressionParser.ts","../main/parser/AdditiveOperatorParser.ts","../main/parser/MultiplicativeOperatorParser.ts","../main/parser/PrefixOperatorParser.ts","../main/parser/InvokeOperatorParser.ts","../main/parser/PrimaryParser.ts","../main/parser/LiteralParser.ts","../main/parser/SelectorParser.ts","../main/parser/ReconParser.ts","../main/parser/ReconStructureParser.ts","../main/writer/AttrWriter.ts","../main/writer/SlotWriter.ts","../main/writer/BlockWriter.ts","../main/writer/PrimaryWriter.ts","../main/writer/MarkupTextWriter.ts","../main/writer/DataWriter.ts","../main/writer/IdentWriter.ts","../main/writer/StringWriter.ts","../main/writer/LambdaFuncWriter.ts","../main/writer/ConditionalOperatorWriter.ts","../main/writer/InfixOperatorWriter.ts","../main/writer/PrefixOperatorWriter.ts","../main/writer/InvokeOperatorWriter.ts","../main/writer/LiteralSelectorWriter.ts","../main/writer/GetSelectorWriter.ts","../main/writer/GetAttrSelectorWriter.ts","../main/writer/GetItemSelectorWriter.ts","../main/writer/KeysSelectorWriter.ts","../main/writer/ValuesSelectorWriter.ts","../main/writer/ChildrenSelectorWriter.ts","../main/writer/DescendantsSelectorWriter.ts","../main/writer/FilterSelectorWriter.ts","../main/writer/ReconWriter.ts","../main/writer/ReconStructureWriter.ts"],"sourcesContent":["// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Output} from \"@swim/codec\";\nimport type {Parser} from \"@swim/codec\";\nimport type {Writer} from \"@swim/codec\";\nimport {Unicode} from \"@swim/codec\";\nimport {Utf8} from \"@swim/codec\";\nimport {Item} from \"@swim/structure\";\nimport {Value} from \"@swim/structure\";\nimport {Data} from \"@swim/structure\";\nimport type {ReconParser} from \"./parser/ReconParser\";\nimport {ReconStructureParser} from \"./\"; // forward import\nimport type {ReconWriter} from \"./writer/ReconWriter\";\nimport {ReconStructureWriter} from \"./\"; // forward import\n\n/**\n * Factory for constructing Recon parsers and writers.\n * @public\n */\nexport const Recon = (function () {\n  const Recon = {} as {\n    structureParser(): ReconParser<Item, Value>;\n\n    structureWriter(): ReconWriter<Item, Value>;\n\n    parse(recon: string): Value;\n\n    parser(): Parser<Value>;\n\n    sizeOf(item: Item): number;\n\n    sizeOfBlock(item: Item): number;\n\n    write(output: Output, item: Item): Writer;\n\n    writeBlock(output: Output, item: Item): Writer;\n\n    toString(item: Item): string;\n\n    toBlockString(item: Item): string;\n\n    toData(item: Item): Data;\n\n    toBlockData(item: Item): Data;\n\n    /** @internal */\n    isSpace(c: number): boolean;\n\n    /** @internal */\n    isNewline(c: number): boolean;\n\n    /** @internal */\n    isWhitespace(c: number): boolean;\n\n    /** @internal */\n    isIdentStartChar(c: number): boolean;\n\n    /** @internal */\n    isIdentChar(c: number): boolean;\n  };\n\n  Object.defineProperty(Recon, \"structureParser\", {\n    value: function (): ReconStructureParser {\n      const structureParser = new ReconStructureParser();\n      Object.defineProperty(Recon, \"structureParser\", {\n        value: function (): ReconStructureParser {\n          return structureParser;\n        },\n        enumerable: true,\n        configurable: true,\n      });\n      return structureParser;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  Object.defineProperty(Recon, \"structureWriter\", {\n    value: function (): ReconStructureWriter {\n      const structureWriter = new ReconStructureWriter();\n      Object.defineProperty(Recon, \"structureWriter\", {\n        value: function (): ReconStructureWriter {\n          return structureWriter;\n        },\n        enumerable: true,\n        configurable: true,\n      });\n      return structureWriter;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  Recon.parse = function (recon: string): Value {\n    return Recon.structureParser().parseBlockString(recon);\n  };\n\n  Recon.parser = function (): Parser<Value> {\n    return Recon.structureParser().blockParser();\n  };\n\n  Recon.sizeOf = function (item: Item): number {\n    return Recon.structureWriter().sizeOfItem(item);\n  };\n\n  Recon.sizeOfBlock = function (item: Item): number {\n    return Recon.structureWriter().sizeOfBlockItem(item);\n  };\n\n  Recon.write = function (output: Output, item: Item): Writer {\n    return Recon.structureWriter().writeItem(output, item);\n  };\n\n  Recon.writeBlock = function (output: Output, item: Item): Writer {\n    return Recon.structureWriter().writeBlockItem(output, item);\n  };\n\n  Recon.toString = function (item: Item): string {\n    let output = Unicode.stringOutput();\n    const writer = Recon.write(output, item);\n    if (!writer.isDone()) {\n      output = Output.error(writer.trap());\n    }\n    return output.bind();\n  };\n\n  Recon.toBlockString = function (item: Item): string {\n    let output = Unicode.stringOutput();\n    const writer = Recon.writeBlock(output, item);\n    if (!writer.isDone()) {\n      output = Output.error(writer.trap());\n    }\n    return output.bind();\n  };\n\n  Recon.toData = function (item: Item): Data {\n    let output = Utf8.encodedOutput(Data.output());\n    const writer = Recon.write(output, item);\n    if (!writer.isDone()) {\n      output = Output.error(writer.trap());\n    }\n    return output.bind();\n  };\n\n  Recon.toBlockData = function (item: Item): Data {\n    let output = Utf8.encodedOutput(Data.output());\n    const writer = Recon.writeBlock(output, item);\n    if (!writer.isDone()) {\n      output = Output.error(writer.trap());\n    }\n    return output.bind();\n  };\n\n  Recon.isSpace = function (c: number): boolean {\n    return c === 0x20 || c === 0x9;\n  };\n\n  Recon.isNewline = function (c: number): boolean {\n    return c === 0xa || c === 0xd;\n  };\n\n  Recon.isWhitespace = function (c: number): boolean {\n    return Recon.isSpace(c) || Recon.isNewline(c);\n  };\n\n  Recon.isIdentStartChar = function (c: number): boolean {\n    return c >= 65/*'A'*/ && c <= 90/*'Z'*/\n        || c === 95/*'_'*/\n        || c >= 97/*'a'*/ && c <= 122/*'z'*/\n        || c >= 0xc0 && c <= 0xd6\n        || c >= 0xd8 && c <= 0xf6\n        || c >= 0xf8 && c <= 0x2ff\n        || c >= 0x370 && c <= 0x37d\n        || c >= 0x37f && c <= 0x1fff\n        || c >= 0x200c && c <= 0x200d\n        || c >= 0x2070 && c <= 0x218f\n        || c >= 0x2c00 && c <= 0x2fef\n        || c >= 0x3001 && c <= 0xd7ff\n        || c >= 0xf900 && c <= 0xfdcf\n        || c >= 0xfdf0 && c <= 0xfffd\n        || c >= 0x10000 && c <= 0xeffff;\n  };\n\n  Recon.isIdentChar = function (c: number): boolean {\n    return c === 45/*'-'*/\n        || c >= 48/*'0'*/ && c <= 57/*'9'*/\n        || c >= 65/*'A'*/ && c <= 90/*'Z'*/\n        || c === 95/*'_'*/\n        || c >= 97/*'a'*/ && c <= 122/*'z'*/\n        || c === 0xb7\n        || c >= 0xc0 && c <= 0xd6\n        || c >= 0xd8 && c <= 0xf6\n        || c >= 0xf8 && c <= 0x37d\n        || c >= 0x37f && c <= 0x1fff\n        || c >= 0x200c && c <= 0x200d\n        || c >= 0x203f && c <= 0x2040\n        || c >= 0x2070 && c <= 0x218f\n        || c >= 0x2c00 && c <= 0x2fef\n        || c >= 0x3001 && c <= 0xd7ff\n        || c >= 0xf900 && c <= 0xfdcf\n        || c >= 0xfdf0 && c <= 0xfffd\n        || c >= 0x10000 && c <= 0xeffff;\n  };\n\n  Item.prototype.toRecon = function (this: Item): string {\n    return Recon.toString(this);\n  };\n\n  Item.prototype.toReconBlock = function (this: Item): string {\n    return Recon.toBlockString(this);\n  };\n\n  return Recon;\n})();\n\nValue.parseRecon = function (recon: string): Value {\n  return Recon.parse(recon);\n};\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class BlockParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly keyParser: Parser<V> | undefined;\n  private readonly valueParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>, keyParser?: Parser<V>,\n              valueParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.keyParser = keyParser;\n    this.valueParser = valueParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return BlockParser.parse(input, this.recon, this.builder, this.keyParser,\n                             this.valueParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     keyParser?: Parser<V>, valueParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    block: do {\n      if (step === 1) {\n        while (input.isCont() && (c = input.head(), Recon.isWhitespace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 33/*'!'*/ || c === 34/*'\"'*/ || c === 36/*'$'*/ || c === 37/*'%'*/\n              || c === 39/*'\\''*/ || c === 40/*'('*/ || c === 43/*'+'*/ || c === 45/*'-'*/\n              || c >= 48/*'0'*/ && c <= 57/*'9'*/ || c === 64/*'@'*/\n              || c === 91/*'['*/ || c === 96/*'`'*/ || c === 123/*'{'*/ || c === 126/*'~'*/\n              || Recon.isIdentStartChar(c)) {\n            builder = builder || recon.valueBuilder();\n            step = 2;\n          } else if (c === 35/*'#'*/) {\n            input = input.step();\n            step = 7;\n          } else {\n            if (builder !== void 0) {\n              return Parser.done(builder.build());\n            } else {\n              return Parser.done(recon.absent());\n            }\n          }\n        } else if (input.isDone()) {\n          if (builder !== void 0) {\n            return Parser.done(builder.build());\n          } else {\n            return Parser.done(recon.absent());\n          }\n        }\n      }\n      if (step === 2) {\n        if (keyParser === void 0) {\n          keyParser = recon.parseBlockExpression(input);\n        }\n        while (keyParser.isCont() && !input.isEmpty()) {\n          keyParser = keyParser.feed(input);\n        }\n        if (keyParser.isDone()) {\n          step = 3;\n        } else if (keyParser.isError()) {\n          return keyParser;\n        }\n      }\n      if (step === 3) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 58/*':'*/) {\n            input = input.step();\n            step = 4;\n          } else {\n            builder!.push(recon.item(keyParser!.bind()));\n            keyParser = void 0;\n            step = 6;\n          }\n        } else if (input.isDone()) {\n          builder!.push(recon.item(keyParser!.bind()));\n          return Parser.done(builder!.build());\n        }\n      }\n      if (step === 4) {\n        while (input.isCont() && Recon.isSpace(input.head())) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          step = 5;\n        } else if (input.isDone()) {\n          builder!.push(recon.slot(keyParser!.bind()));\n          return Parser.done(builder!.build());\n        }\n      }\n      if (step === 5) {\n        if (valueParser === void 0) {\n          valueParser = recon.parseBlockExpression(input);\n        }\n        while (valueParser.isCont() && !input.isEmpty()) {\n          valueParser = valueParser.feed(input);\n        }\n        if (valueParser.isDone()) {\n          builder!.push(recon.slot(keyParser!.bind(), valueParser.bind()));\n          keyParser = void 0;\n          valueParser = void 0;\n          step = 6;\n        } else if (valueParser.isError()) {\n          return valueParser;\n        }\n      }\n      if (step === 6) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 44/*','*/ || c === 59/*';'*/ || Recon.isNewline(c)) {\n            input = input.step();\n            step = 1;\n            continue;\n          } else if (c === 35/*'#'*/) {\n            input = input.step();\n            step = 7;\n          } else {\n            return Parser.done(builder!.build());\n          }\n        } else if (input.isDone()) {\n          return Parser.done(builder!.build());\n        }\n      }\n      if (step === 7) {\n        while (input.isCont()) {\n          c = input.head();\n          if (!Recon.isNewline(c)) {\n            input = input.step();\n          } else {\n            step = 1;\n            continue block;\n          }\n        }\n        if (input.isDone()) {\n          step = 1;\n          continue;\n        }\n      }\n      break;\n    } while (true);\n    return new BlockParser<I, V>(recon, builder, keyParser, valueParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class AttrParser<I, V> extends Parser<I> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly keyParser: Parser<V> | undefined;\n  private readonly valueParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, keyParser?: Parser<V>,\n              valueParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.keyParser = keyParser;\n    this.valueParser = valueParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<I> {\n    return AttrParser.parse(input, this.recon, this.keyParser,\n                            this.valueParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, keyParser?: Parser<V>,\n                     valueParser?: Parser<V>, step: number = 1): Parser<I> {\n    let c = 0;\n    if (step === 1) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 64/*'@'*/) {\n          input = input.step();\n          step = 2;\n        } else {\n          return Parser.error(Diagnostic.expected(64/*'@'*/, input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(64/*'@'*/, input));\n      }\n    }\n    if (step === 2) {\n      if (keyParser === void 0) {\n        if (input.isCont()) {\n          c = input.head();\n          if (c === 34/*'\"'*/ || c === 39/*'\\''*/) {\n            keyParser = recon.parseString(input);\n          } else if (Recon.isIdentStartChar(c)) {\n            keyParser = recon.parseIdent(input);\n          } else {\n            return Parser.error(Diagnostic.expected(\"attribute name\", input));\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(\"attribute name\", input));\n        }\n      } else {\n        keyParser = keyParser.feed(input);\n      }\n      if (keyParser !== void 0) {\n        if (keyParser.isDone()) {\n          step = 3;\n        } else if (keyParser.isError()) {\n          return keyParser.asError();\n        }\n      }\n    }\n    if (step === 3) {\n      if (input.isCont() && input.head() === 40/*'('*/) {\n        input = input.step();\n        step = 4;\n      } else if (!input.isEmpty()) {\n        return Parser.done(recon.attr(keyParser!.bind()));\n      }\n    }\n    if (step === 4) {\n      while (input.isCont() && (c = input.head(), Recon.isWhitespace(c))) {\n        input = input.step();\n      }\n      if (input.isCont()) {\n        if (c === 41/*')'*/) {\n          input = input.step();\n          return Parser.done(recon.attr(keyParser!.bind()));\n        } else {\n          step = 5;\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(\")\", input));\n      }\n    }\n    if (step === 5) {\n      if (valueParser === void 0) {\n        valueParser = recon.parseBlock(input);\n      }\n      while (valueParser.isCont() && !input.isEmpty()) {\n        valueParser = valueParser.feed(input);\n      }\n      if (valueParser.isDone()) {\n        step = 6;\n      } else if (valueParser.isError()) {\n        return valueParser.asError();\n      }\n    }\n    if (step === 6) {\n      while (input.isCont() && (c = input.head(), Recon.isWhitespace(c))) {\n        input = input.step();\n      }\n      if (input.isCont()) {\n        if (c === 41/*')'*/) {\n          input = input.step();\n          return Parser.done(recon.attr(keyParser!.bind(), valueParser!.bind()));\n        } else {\n          return Parser.error(Diagnostic.expected(\")\", input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(\")\", input));\n      }\n    }\n    return new AttrParser<I, V>(recon, keyParser, valueParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class BlockItemParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly fieldParser: Parser<I> | undefined;\n  private readonly valueParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>, fieldParser?: Parser<I>,\n              valueParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.fieldParser = fieldParser;\n    this.valueParser = valueParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return BlockItemParser.parse(input, this.recon, this.builder, this.fieldParser,\n                                 this.valueParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     fieldParser?: Parser<I>, valueParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    do {\n      if (step === 1) {\n        if (input.isCont()) {\n          c = input.head();\n          if (c === 64/*'@'*/) {\n            fieldParser = recon.parseAttr(input);\n            step = 2;\n          } else if (c === 123/*'{'*/) {\n            builder = builder || recon.recordBuilder();\n            valueParser = recon.parseRecord(input, builder);\n            step = 5;\n          } else if (c === 91/*'['*/) {\n            builder = builder || recon.recordBuilder();\n            valueParser = recon.parseMarkup(input, builder);\n            step = 5;\n          } else if (Recon.isIdentStartChar(c)) {\n            valueParser = recon.parseIdent(input);\n            step = 4;\n          } else if (c === 34/*'\"'*/ || c === 39/*'\\''*/) {\n            valueParser = recon.parseString(input);\n            step = 4;\n          } else if (c === 96/*'`'*/) {\n            valueParser = recon.parseRawString(input);\n            step = 4;\n          } else if (c === 45/*'-'*/ || c >= 48/*'0'*/ && c <= 57/*'9'*/) {\n            valueParser = recon.parseNumber(input);\n            step = 4;\n          } else if (c === 37/*'%'*/) {\n            valueParser = recon.parseData(input);\n            step = 4;\n          } else if (c === 36/*'$'*/) {\n            valueParser = recon.parseSelector(input);\n            step = 4;\n          } else if (builder === void 0) {\n            return Parser.done(recon.extant());\n          } else {\n            return Parser.done(builder.build());\n          }\n        } else if (input.isDone()) {\n          if (builder === void 0) {\n            return Parser.done(recon.extant());\n          } else {\n            return Parser.done(builder.build());\n          }\n        }\n      }\n      if (step === 2) {\n        while (fieldParser!.isCont() && !input.isEmpty()) {\n          fieldParser = fieldParser!.feed(input);\n        }\n        if (fieldParser!.isDone()) {\n          builder = builder || recon.valueBuilder();\n          builder.push(fieldParser!.bind());\n          fieldParser = void 0;\n          step = 3;\n        } else if (fieldParser!.isError()) {\n          return fieldParser!.asError();\n        }\n      }\n      if (step === 3) {\n        while (input.isCont() && Recon.isSpace(input.head())) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          step = 1;\n          continue;\n        } else if (input.isDone()) {\n          return Parser.done(builder!.build());\n        }\n      }\n      if (step === 4) {\n        while (valueParser!.isCont() && !input.isEmpty()) {\n          valueParser = valueParser!.feed(input);\n        }\n        if (valueParser!.isDone()) {\n          builder = builder || recon.valueBuilder();\n          builder.push(recon.item(valueParser!.bind()));\n          valueParser = void 0;\n          step = 6;\n        } else if (valueParser!.isError()) {\n          return valueParser!;\n        }\n      }\n      if (step === 5) {\n        while (valueParser!.isCont() && !input.isEmpty()) {\n          valueParser = valueParser!.feed(input);\n        }\n        if (valueParser!.isDone()) {\n          valueParser = void 0;\n          step = 6;\n        } else if (valueParser!.isError()) {\n          return valueParser!;\n        }\n      }\n      if (step === 6) {\n        while (input.isCont() && Recon.isSpace(input.head())) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (input.head() === 64/*'@'*/) {\n            step = 1;\n          } else {\n            return Parser.done(builder!.build());\n          }\n        } else if (input.isDone()) {\n          return Parser.done(builder!.build());\n        }\n      }\n      break;\n    } while (true);\n    return new BlockItemParser<I, V>(recon, builder, fieldParser, valueParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class InlineItemParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly fieldParser: Parser<I> | undefined;\n  private readonly valueParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>, fieldParser?: Parser<I>,\n              valueParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.fieldParser = fieldParser;\n    this.valueParser = valueParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return InlineItemParser.parse(input, this.recon, this.builder, this.fieldParser,\n                                  this.valueParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     fieldParser?: Parser<I>,  valueParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 64/*'@'*/) {\n          fieldParser = recon.parseAttr(input);\n          step = 2;\n        } else if (c === 123/*'{'*/) {\n          if (builder !== void 0) {\n            valueParser = recon.parseRecord(input, builder);\n            step = 5;\n          } else {\n            valueParser = recon.parseRecord(input);\n            step = 4;\n          }\n        } else if (c === 91/*'['*/) {\n          if (builder !== void 0) {\n            valueParser = recon.parseMarkup(input, builder);\n            step = 5;\n          } else {\n            valueParser = recon.parseMarkup(input);\n            step = 4;\n          }\n        } else if (builder === void 0) {\n          return Parser.done(recon.extant());\n        } else {\n          return Parser.done(builder.build());\n        }\n      } else if (input.isDone()) {\n        if (builder === void 0) {\n          return Parser.done(recon.extant());\n        } else {\n          return Parser.done(builder.build());\n        }\n      }\n    }\n    if (step === 2) {\n      while (fieldParser!.isCont() && !input.isEmpty()) {\n        fieldParser = fieldParser!.feed(input);\n      }\n      if (fieldParser!.isDone()) {\n        builder = builder || recon.valueBuilder();\n        builder.push(fieldParser!.bind());\n        fieldParser = void 0;\n        step = 3;\n      } else if (fieldParser!.isError()) {\n        return fieldParser!.asError();\n      }\n    }\n    if (step === 3) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 123/*'{'*/) {\n          valueParser = recon.parseRecord(input, builder);\n          step = 5;\n        } else if (c === 91/*'['*/) {\n          valueParser = recon.parseMarkup(input, builder);\n          step = 5;\n        } else {\n          return Parser.done(builder!.build());\n        }\n      } else if (input.isDone()) {\n        return Parser.done(builder!.build());\n      }\n    }\n    if (step === 4) {\n      while (valueParser!.isCont() && !input.isEmpty()) {\n        valueParser = valueParser!.feed(input);\n      }\n      if (valueParser!.isDone()) {\n        builder = builder || recon.valueBuilder();\n        builder.push(recon.item(valueParser!.bind()));\n        return Parser.done(builder.build());\n      } else if (valueParser!.isError()) {\n        return valueParser!;\n      }\n    }\n    if (step === 5) {\n      while (valueParser!.isCont() && !input.isEmpty()) {\n        valueParser = valueParser!.feed(input);\n      }\n      if (valueParser!.isDone()) {\n        return Parser.done(builder!.build());\n      } else if (valueParser!.isError()) {\n        return valueParser!;\n      }\n    }\n    return new InlineItemParser<I, V>(recon, builder, fieldParser, valueParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class RecordParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly keyParser: Parser<V> | undefined;\n  private readonly valueParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>, keyParser?: Parser<V>,\n              valueParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.keyParser = keyParser;\n    this.valueParser = valueParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return RecordParser.parse(input, this.recon, this.builder, this.keyParser,\n                              this.valueParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     keyParser?: Parser<V>, valueParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 123/*'{'*/) {\n          input = input.step();\n          step = 2;\n        } else {\n          return Parser.error(Diagnostic.expected(123/*'{'*/, input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(123/*'{'*/, input));\n      }\n    }\n    block: do {\n      if (step === 2) {\n        while (input.isCont() && (c = input.head(), Recon.isWhitespace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          builder = builder || recon.recordBuilder();\n          if (c === 125/*'}'*/) {\n            input = input.step();\n            return Parser.done(builder.build());\n          } else if (c === 35/*'#'*/) {\n            input = input.step();\n            step = 8;\n          } else {\n            step = 3;\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(125/*'}'*/, input));\n        }\n      }\n      if (step === 3) {\n        if (keyParser === void 0) {\n          keyParser = recon.parseBlockExpression(input);\n        }\n        while (keyParser.isCont() && !input.isEmpty()) {\n          keyParser = keyParser.feed(input);\n        }\n        if (keyParser.isDone()) {\n          step = 4;\n        } else if (keyParser.isError()) {\n          return keyParser;\n        }\n      }\n      if (step === 4) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 58/*':'*/) {\n            input = input.step();\n            step = 5;\n          } else {\n            builder!.push(recon.item(keyParser!.bind()));\n            keyParser = void 0;\n            step = 7;\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(125/*'}'*/, input));\n        }\n      }\n      if (step === 5) {\n        while (input.isCont() && Recon.isSpace(input.head())) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          step = 6;\n        } else if (input.isDone()) {\n          builder!.push(recon.slot(keyParser!.bind()));\n          return Parser.done(builder!.build());\n        }\n      }\n      if (step === 6) {\n        if (valueParser === void 0) {\n          valueParser = recon.parseBlockExpression(input);\n        }\n        while (valueParser.isCont() && !input.isEmpty()) {\n          valueParser = valueParser.feed(input);\n        }\n        if (valueParser.isDone()) {\n          builder!.push(recon.slot(keyParser!.bind(), valueParser.bind()));\n          keyParser = void 0;\n          valueParser = void 0;\n          step = 7;\n        } else if (valueParser.isError()) {\n          return valueParser;\n        }\n      }\n      if (step === 7) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 44/*','*/ || c === 59/*';'*/ || Recon.isNewline(c)) {\n            input = input.step();\n            step = 2;\n            continue;\n          } else if (c === 35/*'#'*/) {\n            input = input.step();\n            step = 8;\n          } else if (c === 125/*'}'*/) {\n            input = input.step();\n            return Parser.done(builder!.build());\n          } else {\n            return Parser.error(Diagnostic.expected(\"'}', ';', ',', or newline\", input));\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(125/*'}'*/, input));\n        }\n      }\n      if (step === 8) {\n        while (input.isCont()) {\n          c = input.head();\n          if (!Recon.isNewline(c)) {\n            input = input.step();\n          } else {\n            step = 2;\n            continue block;\n          }\n        }\n        if (input.isDone()) {\n          step = 2;\n          continue;\n        }\n      }\n      break;\n    } while (true);\n    return new RecordParser<I, V>(recon, builder, keyParser, valueParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport type {Output} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class MarkupParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly textOutput: Output<V> | undefined;\n  private readonly valueParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>, textOutput?: Output<V>,\n              valueParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.textOutput = textOutput;\n    this.valueParser = valueParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return MarkupParser.parse(input, this.recon, this.builder, this.textOutput,\n                              this.valueParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     textOutput?: Output<V>, valueParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 91/*'['*/) {\n          input = input.step();\n          step = 2;\n        } else {\n          return Parser.error(Diagnostic.expected(91/*'['*/, input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(91/*'['*/, input));\n      }\n    }\n    do {\n      if (step === 2) {\n        while (input.isCont()) {\n          c = input.head();\n          if (c !== 64/*'@'*/ && c !== 91/*'['*/ && c !== 92/*'\\\\'*/ && c !== 93/*']'*/\n              && c !== 123/*'{'*/ && c !== 125/*'}'*/) {\n            input = input.step();\n            textOutput = textOutput || recon.textOutput();\n            textOutput.write(c);\n          } else {\n            break;\n          }\n        }\n        if (input.isCont()) {\n          if (c === 93/*']'*/) {\n            input = input.step();\n            builder = builder || recon.recordBuilder();\n            if (textOutput !== void 0) {\n              builder.push(recon.item(textOutput.bind()));\n            }\n            return Parser.done(builder.build());\n          } else if (c === 64/*'@'*/) {\n            builder = builder || recon.recordBuilder();\n            if (textOutput !== void 0) {\n              builder.push(recon.item(textOutput.bind()));\n              textOutput = void 0;\n            }\n            valueParser = recon.parseInlineItem(input);\n            step = 3;\n          } else if (c === 123/*'{'*/) {\n            builder = builder || recon.recordBuilder();\n            if (textOutput !== void 0) {\n              builder.push(recon.item(textOutput.bind()));\n              textOutput = void 0;\n            }\n            valueParser = recon.parseRecord(input, builder);\n            step = 4;\n          } else if (c === 91/*'['*/) {\n            builder = builder || recon.recordBuilder();\n            if (textOutput !== void 0) {\n              builder.push(recon.item(textOutput.bind()));\n              textOutput = void 0;\n            }\n            valueParser = recon.parseMarkup(input, builder);\n            step = 4;\n          } else if (c === 92/*'\\\\'*/) {\n            input = input.step();\n            step = 5;\n          } else {\n            return Parser.error(Diagnostic.unexpected(input));\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.unexpected(input));\n        }\n      }\n      if (step === 3) {\n        while (valueParser!.isCont() && !input.isEmpty()) {\n          valueParser = valueParser!.feed(input);\n        }\n        if (valueParser!.isDone()) {\n          builder!.push(recon.item(valueParser!.bind()));\n          valueParser = void 0;\n          step = 2;\n          continue;\n        } else if (valueParser!.isError()) {\n          return valueParser!;\n        }\n      }\n      if (step === 4) {\n        while (valueParser!.isCont() && !input.isEmpty()) {\n          valueParser = valueParser!.feed(input);\n        }\n        if (valueParser!.isDone()) {\n          valueParser = void 0;\n          step = 2;\n          continue;\n        } else if (valueParser!.isError()) {\n          return valueParser!;\n        }\n      }\n      if (step === 5) {\n        if (input.isCont()) {\n          c = input.head();\n          textOutput = textOutput || recon.textOutput();\n          if (c === 34/*'\"'*/ || c === 36/*'$'*/ || c === 39/*'\\''*/ || c === 47/*'/'*/\n              || c === 64/*'@'*/ || c === 91/*'['*/ || c === 92/*'\\\\'*/ || c === 93/*']'*/\n              || c === 123/*'{'*/ || c === 125/*'}'*/) {\n            input = input.step();\n            textOutput.write(c);\n            step = 2;\n          } else if (c === 98/*'b'*/) {\n            input = input.step();\n            textOutput.write(8/*'\\b'*/);\n            step = 2;\n          } else if (c === 102/*'f'*/) {\n            input = input.step();\n            textOutput.write(12/*'\\f'*/);\n            step = 2;\n          } else if (c === 110/*'n'*/) {\n            input = input.step();\n            textOutput.write(10/*'\\n'*/);\n            step = 2;\n          } else if (c === 114/*'r'*/) {\n            input = input.step();\n            textOutput.write(13/*'\\r'*/);\n            step = 2;\n          } else if (c === 116/*'t'*/) {\n            input = input.step();\n            textOutput.write(9/*'\\t'*/);\n            step = 2;\n          } else {\n            return Parser.error(Diagnostic.expected(\"escape character\", input));\n          }\n          continue;\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(\"escape character\", input));\n        }\n      }\n      break;\n    } while (true);\n    return new MarkupParser<I, V>(recon, builder, textOutput, valueParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Base64} from \"@swim/codec\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class DataParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly base64Parser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, base64Parser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.base64Parser = base64Parser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return DataParser.parse(input, this.recon, this.base64Parser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>,\n                     base64Parser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 37/*'%'*/) {\n          input = input.step();\n          step = 2;\n        } else {\n          return Parser.error(Diagnostic.expected(37/*'%'*/, input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(37/*'%'*/, input));\n      }\n    }\n    if (step === 2) {\n      if (base64Parser === void 0) {\n        base64Parser = Base64.standard().parse(input, recon.dataOutput());\n      }\n      while (base64Parser.isCont() && !input.isEmpty()) {\n        base64Parser = base64Parser.feed(input);\n      }\n      if (base64Parser.isDone()) {\n        return base64Parser;\n      } else if (base64Parser.isError()) {\n        return base64Parser;\n      }\n    }\n    return new DataParser<I, V>(recon, base64Parser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport type {Output} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class IdentParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly output: Output<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, output?: Output<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.output = output;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return IdentParser.parse(input, this.recon, this.output, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, output?: Output<V>,\n                     step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      if (input.isCont()) {\n        c = input.head();\n        if (Recon.isIdentStartChar(c)) {\n          input = input.step();\n          output = output || recon.textOutput();\n          output = output.write(c);\n          step = 2;\n        } else {\n          return Parser.error(Diagnostic.expected(\"identifier\", input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(\"identifier\", input));\n      }\n    }\n    if (step === 2) {\n      while (input.isCont() && (c = input.head(), Recon.isIdentChar(c))) {\n        input = input.step();\n        output!.write(c);\n      }\n      if (!input.isEmpty()) {\n        return Parser.done(recon.ident(output!.bind()));\n      }\n    }\n    return new IdentParser<I, V>(recon, output, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport type {Output} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Base16} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class StringParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly output: Output<V> | undefined;\n  private readonly quote: number | undefined;\n  private readonly code: number | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, output?: Output<V>, quote?: number,\n              code?: number, step?: number) {\n    super();\n    this.recon = recon;\n    this.output = output;\n    this.quote = quote;\n    this.code = code;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return StringParser.parse(input, this.recon, this.output, this.quote,\n                              this.code, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, output?: Output<V>,\n                     quote: number = 0, code: number = 0, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      while (input.isCont() && (c = input.head(), Recon.isWhitespace(c))) {\n        input = input.step();\n      }\n      if (input.isCont()) {\n        if ((c === 34/*'\"'*/ || c === 39/*'\\''*/) && (quote === c || quote === 0)) {\n          input = input.step();\n          output = output || recon.textOutput();\n          quote = c;\n          step = 2;\n        } else {\n          return Parser.error(Diagnostic.expected(\"string\", input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(\"string\", input));\n      }\n    }\n    string: do {\n      if (step === 2) {\n        while (input.isCont()) {\n          c = input.head();\n          if (c >= 0x20 && c !== quote && c !== 92/*'\\\\'*/) {\n            input = input.step();\n            output = output!.write(c);\n          } else {\n            break;\n          }\n        }\n        if (input.isCont()) {\n          if (c === quote) {\n            input = input.step();\n            return Parser.done(output!.bind());\n          } else if (c === 92/*'\\\\'*/) {\n            input = input.step();\n            step = 3;\n          } else {\n            return Parser.error(Diagnostic.expected(quote, input));\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(quote, input));\n        }\n      }\n      if (step === 3) {\n        if (input.isCont()) {\n          c = input.head();\n          if (c === 34/*'\"'*/ || c === 36/*'$'*/ || c === 39/*'\\''*/ || c === 47/*'/'*/\n              || c === 64/*'@'*/ || c === 91/*'['*/ || c === 92/*'\\\\'*/ || c === 93/*']'*/\n              || c === 123/*'{'*/ || c === 125/*'}'*/) {\n            input = input.step();\n            output = output!.write(c);\n            step = 2;\n            continue;\n          } else if (c === 98/*'b'*/) {\n            input = input.step();\n            output = output!.write(8/*'\\b'*/);\n            step = 2;\n            continue;\n          } else if (c === 102/*'f'*/) {\n            input = input.step();\n            output = output!.write(12/*'\\f'*/);\n            step = 2;\n            continue;\n          } else if (c === 110/*'n'*/) {\n            input = input.step();\n            output = output!.write(10/*'\\n'*/);\n            step = 2;\n            continue;\n          } else if (c === 114/*'r'*/) {\n            input = input.step();\n            output = output!.write(13/*'\\r'*/);\n            step = 2;\n            continue;\n          } else if (c === 116/*'t'*/) {\n            input = input.step();\n            output = output!.write(9/*'\\t'*/);\n            step = 2;\n            continue;\n          } else if (c === 117/*'u'*/) {\n            input = input.step();\n            step = 4;\n          } else {\n            return Parser.error(Diagnostic.expected(\"escape character\", input));\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(\"escape character\", input));\n        }\n      }\n      if (step >= 4) {\n        do {\n          if (input.isCont()) {\n            c = input.head();\n            if (Base16.isDigit(c)) {\n              input = input.step();\n              code = 16 * code + Base16.decodeDigit(c);\n              if (step <= 6) {\n                step += 1;\n                continue;\n              } else {\n                output = output!.write(code);\n                code = 0;\n                step = 2;\n                continue string;\n              }\n            } else {\n              return Parser.error(Diagnostic.expected(\"hex digit\", input));\n            }\n          } else if (input.isDone()) {\n            return Parser.error(Diagnostic.expected(\"hex digit\", input));\n          }\n          break;\n        } while (true);\n      }\n      break;\n    } while (true);\n    return new StringParser<I, V>(recon, output, quote, code, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport type {Output} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class RawStringParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly output: Output<V> | undefined;\n  private readonly count: number | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, output?: Output<V>, count?: number, step?: number) {\n    super();\n    this.recon = recon;\n    this.output = output;\n    this.count = count;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return RawStringParser.parse(input, this.recon, this.output, this.count, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, output?: Output<V>,\n                     count: number = 0, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      while (input.isCont() && (c = input.head(), Recon.isWhitespace(c))) {\n        input = input.step();\n      }\n      if (input.isCont() && c === 96/*'`'*/) {\n        input = input.step();\n        count = 1;\n        step = 2;\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(\"raw string\", input));\n      }\n    }\n    if (step === 2) {\n      if (input.isCont()) {\n        if (input.head() === 96/*'`'*/) {\n          input = input.step();\n          count = 2;\n          step = 3;\n        } else {\n          output = output || recon.textOutput();\n          step = 4;\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(\"raw string\", input));\n      }\n    }\n    if (step === 3) {\n      if (input.isCont()) {\n        if (input.head() === 96/*'`'*/) {\n          input = input.step();\n          output = output || recon.textOutput();\n          count = 3;\n          step = 4;\n        } else {\n          output = output || recon.textOutput();\n          return Parser.done(output!.bind());\n        }\n      } else if (input.isDone()) {\n        output = output || recon.textOutput();\n        return Parser.done(output!.bind());\n      }\n    }\n    do {\n      if (step === 4) {\n        while (input.isCont()) {\n          c = input.head();\n          if ((count !== 1 || c >= 0x20) && c !== 96/*'`'*/ && c !== 92/*'\\\\'*/) {\n            input = input.step();\n            output = output!.write(c);\n          } else {\n            break;\n          }\n        }\n        if (input.isCont()) {\n          if (c === 92/*'\\\\'*/) {\n            input = input.step();\n            step = 5;\n          } else if (c === 96/*'`'*/) {\n            input = input.step();\n            if (count === 1) {\n              return Parser.done(output!.bind());\n            } else {\n              step = 6;\n            }\n          } else {\n            return Parser.error(Diagnostic.expected(96/*'`'*/, input));\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(96/*'`'*/, input));\n        }\n      }\n      if (step === 5) {\n        if (input.isCont()) {\n          c = input.head();\n          input = input.step();\n          if (c !== 92/*'\\\\'*/ && c !== 96/*'`'*/) {\n            output = output!.write(92/*'\\\\'*/);\n          }\n          output = output!.write(c);\n          step = 4;\n          continue;\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(\"escape character\", input));\n        }\n      }\n      if (step === 6) {\n        if (input.isCont()) {\n          if (input.head() === 96/*'`'*/) {\n            input = input.step();\n            step = 7;\n          } else {\n            output = output!.write(96/*'`'*/);\n            step = 4;\n            continue;\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.message(\"unclosed raw string\", input));\n        }\n      }\n      if (step === 7) {\n        if (input.isCont()) {\n          if (input.head() === 96/*'`'*/) {\n            input = input.step();\n            return Parser.done(output!.bind());\n          } else {\n            output = output!.write(96/*'`'*/);\n            output = output!.write(96/*'`'*/);\n            step = 4;\n            continue;\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.message(\"unclosed raw string\", input));\n        }\n      }\n      break;\n    } while (true);\n    return new RawStringParser<I, V>(recon, output, count, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport type {Output} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Unicode} from \"@swim/codec\";\nimport {Base16} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class NumberParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly sign: number | undefined;\n  private readonly value: number | undefined;\n  private readonly mode: number | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, sign?: number, value?: number, mode?: number, step?: number) {\n    super();\n    this.recon = recon;\n    this.sign = sign;\n    this.value = value;\n    this.mode = mode;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return NumberParser.parse(input, this.recon, this.sign, this.value, this.mode, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, sign: number = 1, value: number = 0,\n                     mode: number = 2, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      while (input.isCont() && (c = input.head(), Recon.isWhitespace(c))) {\n        input = input.step();\n      }\n      if (input.isCont()) {\n        if (c === 45/*'-'*/) {\n          input = input.step();\n          sign = -1;\n        }\n        step = 2;\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(\"number\", input));\n      }\n    }\n    if (step === 2) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 48/*'0'*/) {\n          input = input.step();\n          step = 4;\n        } else if (c >= 49/*'1'*/ && c <= 57/*'9'*/) {\n          input = input.step();\n          value = sign * (c - 48/*'0'*/);\n          step = 3;\n        } else {\n          return Parser.error(Diagnostic.expected(\"digit\", input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(\"digit\", input));\n      }\n    }\n    if (step === 3) {\n      while (input.isCont()) {\n        c = input.head();\n        if (c >= 48/*'0'*/ && c <= 57/*'9'*/) {\n          const newValue = 10 * value + sign * (c - 48/*'0'*/);\n          if (-9007199254740991 <= newValue && newValue <= 9007199254740992) {\n            value = newValue;\n            input = input.step();\n          } else {\n            return Parser.error(Diagnostic.message(\"integer overflow\", input));\n          }\n        } else {\n          break;\n        }\n      }\n      if (input.isCont()) {\n        step = 4;\n      } else if (input.isDone()) {\n        return Parser.done(recon.num(value));\n      }\n    }\n    if (step === 4) {\n      if (input.isCont()) {\n        c = input.head();\n        if (mode > 0 && c === 46/*'.'*/ || mode > 1 && (c === 69/*'E'*/ || c === 101/*'e'*/)) {\n          let output = Unicode.stringOutput();\n          if (sign < 0 && value === 0) {\n            output = output.write(45/*'-'*/).write(48/*'0'*/);\n          } else {\n            output = output.write(\"\" + value);\n          }\n          return DecimalParser.parse(input, recon, output, mode);\n        } else if (c === 120/*'x'*/ && sign > 0 && value === 0) {\n          input = input.step();\n          return HexadecimalParser.parse(input, recon);\n        } else {\n          return Parser.done(recon.num(value));\n        }\n      } else if (input.isDone()) {\n        return Parser.done(recon.num(value));\n      }\n    }\n    return new NumberParser<I, V>(recon, sign, value, mode, step);\n  }\n\n  static parseInteger<I, V>(input: Input, recon: ReconParser<I, V>): Parser<V> {\n    return NumberParser.parse(input, recon, void 0, void 0, 0);\n  }\n\n  static parseDecimal<I, V>(input: Input, recon: ReconParser<I, V>): Parser<V> {\n    return NumberParser.parse(input, recon, void 0, void 0, 1);\n  }\n}\n\n/** @internal */\nexport class DecimalParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly output: Output<string>;\n  private readonly mode: number | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, output: Output<string>, mode?: number, step?: number) {\n    super();\n    this.recon = recon;\n    this.output = output;\n    this.mode = mode;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return DecimalParser.parse(input, this.recon, this.output, this.mode, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, output: Output<string>,\n                     mode: number = 2, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 46/*'.'*/) {\n          input = input.step();\n          output = output.write(c);\n          step = 2;\n        } else if (mode > 1 && (c === 69/*'E'*/ || c === 101/*'e'*/)) {\n          input = input.step();\n          output = output.write(c);\n          step = 5;\n        } else {\n          return Parser.error(Diagnostic.expected(\"decimal or exponent\", input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(\"decimal or exponent\", input));\n      }\n    }\n    if (step === 2) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c >= 48/*'0'*/ && c <= 57/*'9'*/) {\n          input = input.step();\n          output = output.write(c);\n          step = 3;\n        } else {\n          return Parser.error(Diagnostic.expected(\"digit\", input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(\"digit\", input));\n      }\n    }\n    if (step === 3) {\n      while (input.isCont()) {\n        c = input.head();\n        if (c >= 48/*'0'*/ && c <= 57/*'9'*/) {\n          input = input.step();\n          output = output.write(c);\n        } else {\n          break;\n        }\n      }\n      if (input.isCont()) {\n        if (mode > 1) {\n          step = 4;\n        } else {\n          return Parser.done(recon.num(output.bind()));\n        }\n      } else if (input.isDone()) {\n        return Parser.done(recon.num(output.bind()));\n      }\n    }\n    if (step === 4) {\n      c = input.head();\n      if (c === 69/*'E'*/ || c === 101/*'e'*/) {\n        input = input.step();\n        output = output.write(c);\n        step = 5;\n      } else {\n        return Parser.done(recon.num(output.bind()));\n      }\n    }\n    if (step === 5) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 43/*'+'*/ || c === 45/*'-'*/) {\n          input = input.step();\n          output = output.write(c);\n        }\n        step = 6;\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.unexpected(input));\n      }\n    }\n    if (step === 6) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c >= 48/*'0'*/ && c <= 57/*'9'*/) {\n          input = input.step();\n          output = output.write(c);\n          step = 7;\n        } else {\n          return Parser.error(Diagnostic.expected(\"digit\", input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(\"digit\", input));\n      }\n    }\n    if (step === 7) {\n      while (input.isCont()) {\n        c = input.head();\n        if (c >= 48/*'0'*/ && c <= 57/*'9'*/) {\n          input = input.step();\n          output = output.write(c);\n        } else {\n          break;\n        }\n      }\n      if (!input.isEmpty()) {\n        return Parser.done(recon.num(output.bind()));\n      }\n    }\n    return new DecimalParser<I, V>(recon, output, mode, step);\n  }\n}\n\n/** @internal */\nclass HexadecimalParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly value: number | undefined;\n  private readonly size: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, value?: number, size?: number) {\n    super();\n    this.recon = recon;\n    this.value = value;\n    this.size = size;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return HexadecimalParser.parse(input, this.recon, this.value, this.size);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>,\n                     value: number = 0, size: number = 0): Parser<V> {\n    let c = 0;\n    while (input.isCont()) {\n      c = input.head();\n      if (Base16.isDigit(c)) {\n        input = input.step();\n        value = 16 * value + Base16.decodeDigit(c);\n        size += 1;\n      } else {\n        break;\n      }\n    }\n    if (!input.isEmpty()) {\n      if (size > 0) {\n        if (size <= 8) {\n          return Parser.done(recon.uint32(value));\n        } else {\n          return Parser.done(recon.uint64(value));\n        }\n      } else {\n        return Parser.error(Diagnostic.expected(\"hex digit\", input));\n      }\n    }\n    return new HexadecimalParser<I, V>(recon, value, size);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class LambdaFuncParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly bindingsParser: Parser<V> | undefined;\n  private readonly templateParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>, bindingsParser?: Parser<V>,\n              templateParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.bindingsParser = bindingsParser;\n    this.templateParser = templateParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return LambdaFuncParser.parse(input, this.recon, this.builder, this.bindingsParser,\n                                  this.templateParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     bindingsParser?: Parser<V>, templateParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      if (bindingsParser === void 0) {\n        bindingsParser = recon.parseConditionalOperator(input, builder);\n      }\n      while (bindingsParser.isCont() && !input.isEmpty()) {\n        bindingsParser = bindingsParser.feed(input);\n      }\n      if (bindingsParser.isDone()) {\n        step = 2;\n      } else if (bindingsParser.isError()) {\n        return bindingsParser.asError();\n      }\n    }\n    if (step === 2) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 62/*'>'*/) {\n          // leading '=' consumed by ComparisonOperatorParser\n          input = input.step();\n          step = 3;\n        } else {\n          return bindingsParser!;\n        }\n      } else if (input.isDone()) {\n        return bindingsParser!;\n      }\n    }\n    if (step === 3) {\n      if (templateParser === void 0) {\n        templateParser = recon.parseConditionalOperator(input);\n      }\n      while (templateParser.isCont() && !input.isEmpty()) {\n        templateParser = templateParser.feed(input);\n      }\n      if (templateParser.isDone()) {\n        const bindings = bindingsParser!.bind();\n        const template = templateParser.bind();\n        return Parser.done(recon.lambda(bindings, template));\n      } else if (templateParser.isError()) {\n        return templateParser.asError();\n      }\n    }\n    return new LambdaFuncParser<I, V>(recon, builder, bindingsParser, templateParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class ConditionalOperatorParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly ifParser: Parser<V> | undefined;\n  private readonly thenParser: Parser<V> | undefined;\n  private readonly elseParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>, ifParser?: Parser<V>,\n              thenParser?: Parser<V>, elseParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.ifParser = ifParser;\n    this.thenParser = thenParser;\n    this.elseParser = elseParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return ConditionalOperatorParser.parse(input, this.recon, this.builder, this.ifParser,\n                                           this.thenParser, this.elseParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     ifParser?: Parser<V>, thenParser?: Parser<V>,\n                     elseParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      if (ifParser === void 0) {\n        ifParser = recon.parseOrOperator(input, builder);\n      }\n      while (ifParser.isCont() && !input.isEmpty()) {\n        ifParser = ifParser.feed(input);\n      }\n      if (ifParser.isDone()) {\n        step = 2;\n      } else if (ifParser.isError()) {\n        return ifParser.asError();\n      }\n    }\n    if (step === 2) {\n      while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n        input = input.step();\n      }\n      if (input.isCont()) {\n        if (c === 63/*'?'*/) {\n          input = input.step();\n          step = 3;\n        } else {\n          return ifParser!;\n        }\n      } else if (input.isDone()) {\n        return ifParser!;\n      }\n    }\n    if (step === 3) {\n      if (thenParser === void 0) {\n        thenParser = recon.parseConditionalOperator(input, builder);\n      }\n      while (thenParser.isCont() && !input.isEmpty()) {\n        thenParser = thenParser.feed(input);\n      }\n      if (thenParser.isDone()) {\n        step = 4;\n      } else if (thenParser.isError()) {\n        return thenParser.asError();\n      }\n    }\n    if (step === 4) {\n      while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n        input = input.step();\n      }\n      if (input.isCont()) {\n        if (c === 58/*':'*/) {\n          input = input.step();\n          step = 5;\n        } else {\n          return Parser.error(Diagnostic.expected(58/*':'*/, input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(58/*':'*/, input));\n      }\n    }\n    if (step === 5) {\n      if (elseParser === void 0) {\n        elseParser = recon.parseConditionalOperator(input, builder);\n      }\n      while (elseParser.isCont() && !input.isEmpty()) {\n        elseParser = elseParser.feed(input);\n      }\n      if (elseParser.isDone()) {\n        const ifTerm = ifParser!.bind();\n        const thenTerm = thenParser!.bind();\n        const elseTerm = elseParser.bind();\n        return Parser.done(recon.conditional(ifTerm, thenTerm, elseTerm));\n      } else if (elseParser.isError()) {\n        return elseParser.asError();\n      }\n    }\n    return new ConditionalOperatorParser<I, V>(recon, builder, ifParser, thenParser, elseParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class OrOperatorParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly lhsParser: Parser<V> | undefined;\n  private readonly rhsParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>,\n              lhsParser?: Parser<V>, rhsParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.lhsParser = lhsParser;\n    this.rhsParser = rhsParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return OrOperatorParser.parse(input, this.recon, this.builder, this.lhsParser,\n                                  this.rhsParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     lhsParser?: Parser<V>, rhsParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    do {\n      if (step === 1) {\n        if (lhsParser === void 0) {\n          lhsParser = recon.parseAndOperator(input, builder);\n        }\n        while (lhsParser.isCont() && !input.isEmpty()) {\n          lhsParser = lhsParser.feed(input);\n        }\n        if (lhsParser.isDone()) {\n          step = 2;\n        } else if (lhsParser.isError()) {\n          return lhsParser.asError();\n        }\n      }\n      if (step === 2) {\n        if (input.isCont()) {\n          c = input.head();\n          if (c === 124/*'|'*/) {\n            // first '|' consumed by BitwiseOrOperatorParser\n            input = input.step();\n            step = 3;\n          } else {\n            return lhsParser!;\n          }\n        } else if (input.isDone()) {\n          return lhsParser!;\n        }\n      }\n      if (step === 3) {\n        if (rhsParser === void 0) {\n          rhsParser = recon.parseAndOperator(input, builder);\n        }\n        while (rhsParser.isCont() && !input.isEmpty()) {\n          rhsParser = rhsParser.feed(input);\n        }\n        if (rhsParser.isDone()) {\n          const lhs = lhsParser!.bind();\n          const rhs = rhsParser.bind();\n          lhsParser = Parser.done(recon.or(lhs, rhs));\n          rhsParser = void 0;\n          step = 2;\n          continue;\n        } else if (rhsParser.isError()) {\n          return rhsParser.asError();\n        }\n      }\n      break;\n    } while (true);\n    return new OrOperatorParser<I, V>(recon, builder, lhsParser, rhsParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class AndOperatorParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly lhsParser: Parser<V> | undefined;\n  private readonly rhsParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>,\n              lhsParser?: Parser<V>, rhsParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.lhsParser = lhsParser;\n    this.rhsParser = rhsParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return AndOperatorParser.parse(input, this.recon, this.builder, this.lhsParser,\n                                   this.rhsParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     lhsParser?: Parser<V>, rhsParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    do {\n      if (step === 1) {\n        if (lhsParser === void 0) {\n          lhsParser = recon.parseBitwiseOrOperator(input, builder);\n        }\n        while (lhsParser.isCont() && !input.isEmpty()) {\n          lhsParser = lhsParser.feed(input);\n        }\n        if (lhsParser.isDone()) {\n          step = 2;\n        } else if (lhsParser.isError()) {\n          return lhsParser.asError();\n        }\n      }\n      if (step === 2) {\n        if (input.isCont()) {\n          c = input.head();\n          if (c === 38/*'&'*/) {\n            // first '&' consumed by BitwiseAndOperatorParser\n            input = input.step();\n            step = 3;\n          } else {\n            return lhsParser!;\n          }\n        } else if (input.isDone()) {\n          return lhsParser!;\n        }\n      }\n      if (step === 3) {\n        if (rhsParser === void 0) {\n          rhsParser = recon.parseBitwiseOrOperator(input, builder);\n        }\n        while (rhsParser.isCont() && !input.isEmpty()) {\n          rhsParser = rhsParser.feed(input);\n        }\n        if (rhsParser.isDone()) {\n          const lhs = lhsParser!.bind();\n          const rhs = rhsParser.bind();\n          lhsParser = Parser.done(recon.and(lhs, rhs));\n          rhsParser = void 0;\n          step = 2;\n          continue;\n        } else if (rhsParser.isError()) {\n          return rhsParser.asError();\n        }\n      }\n      break;\n    } while (true);\n    return new AndOperatorParser<I, V>(recon, builder, lhsParser, rhsParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class BitwiseOrOperatorParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly lhsParser: Parser<V> | undefined;\n  private readonly rhsParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>,\n              lhsParser?: Parser<V>, rhsParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.lhsParser = lhsParser;\n    this.rhsParser = rhsParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return BitwiseOrOperatorParser.parse(input, this.recon, this.builder,\n                                         this.lhsParser, this.rhsParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     lhsParser?: Parser<V>, rhsParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    do {\n      if (step === 1) {\n        if (lhsParser === void 0) {\n          lhsParser = recon.parseBitwiseXorOperator(input, builder);\n        }\n        while (lhsParser.isCont() && !input.isEmpty()) {\n          lhsParser = lhsParser.feed(input);\n        }\n        if (lhsParser.isDone()) {\n          step = 2;\n        } else if (lhsParser.isError()) {\n          return lhsParser.asError();\n        }\n      }\n      if (step === 2) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 124/*'|'*/) {\n            input = input.step();\n            step = 3;\n          } else {\n            return lhsParser!;\n          }\n        } else if (input.isDone()) {\n          return lhsParser!;\n        }\n      }\n      if (step === 3) {\n        if (input.isCont()) {\n          c = input.head();\n          if (c === 124/*'|'*/) {\n            return lhsParser!;\n          } else {\n            step = 4;\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.unexpected(input));\n        }\n      }\n      if (step === 4) {\n        if (rhsParser === void 0) {\n          rhsParser = recon.parseBitwiseXorOperator(input, builder);\n        }\n        while (rhsParser.isCont() && !input.isEmpty()) {\n          rhsParser = rhsParser.feed(input);\n        }\n        if (rhsParser.isDone()) {\n          const lhs = lhsParser!.bind();\n          const rhs = rhsParser.bind();\n          lhsParser = Parser.done(recon.bitwiseOr(lhs, rhs));\n          rhsParser = void 0;\n          step = 2;\n          continue;\n        } else if (rhsParser.isError()) {\n          return rhsParser.asError();\n        }\n      }\n      break;\n    } while (true);\n    return new BitwiseOrOperatorParser<I, V>(recon, builder, lhsParser, rhsParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class BitwiseXorOperatorParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly lhsParser: Parser<V> | undefined;\n  private readonly rhsParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>,\n              lhsParser?: Parser<V>, rhsParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.lhsParser = lhsParser;\n    this.rhsParser = rhsParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return BitwiseXorOperatorParser.parse(input, this.recon, this.builder,\n                                          this.lhsParser, this.rhsParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     lhsParser?: Parser<V>, rhsParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    do {\n      if (step === 1) {\n        if (lhsParser === void 0) {\n          lhsParser = recon.parseBitwiseAndOperator(input, builder);\n        }\n        while (lhsParser.isCont() && !input.isEmpty()) {\n          lhsParser = lhsParser.feed(input);\n        }\n        if (lhsParser.isDone()) {\n          step = 2;\n        } else if (lhsParser.isError()) {\n          return lhsParser.asError();\n        }\n      }\n      if (step === 2) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 94/*'^'*/) {\n            input = input.step();\n            step = 3;\n          } else {\n            return lhsParser!;\n          }\n        } else if (input.isDone()) {\n          return lhsParser!;\n        }\n      }\n      if (step === 3) {\n        if (rhsParser === void 0) {\n          rhsParser = recon.parseBitwiseAndOperator(input, builder);\n        }\n        while (rhsParser.isCont() && !input.isEmpty()) {\n          rhsParser = rhsParser.feed(input);\n        }\n        if (rhsParser.isDone()) {\n          const lhs = lhsParser!.bind();\n          const rhs = rhsParser.bind();\n          lhsParser = Parser.done(recon.bitwiseXor(lhs, rhs));\n          rhsParser = void 0;\n          step = 2;\n          continue;\n        } else if (rhsParser.isError()) {\n          return rhsParser.asError();\n        }\n      }\n      break;\n    } while (true);\n    return new BitwiseXorOperatorParser<I, V>(recon, builder, lhsParser, rhsParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class BitwiseAndOperatorParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly lhsParser: Parser<V> | undefined;\n  private readonly rhsParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>,\n              lhsParser?: Parser<V>, rhsParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.lhsParser = lhsParser;\n    this.rhsParser = rhsParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return BitwiseAndOperatorParser.parse(input, this.recon, this.builder,\n                                          this.lhsParser, this.rhsParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     lhsParser?: Parser<V>, rhsParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    do {\n      if (step === 1) {\n        if (lhsParser === void 0) {\n          lhsParser = recon.parseComparisonOperator(input, builder);\n        }\n        while (lhsParser.isCont() && !input.isEmpty()) {\n          lhsParser = lhsParser.feed(input);\n        }\n        if (lhsParser.isDone()) {\n          step = 2;\n        } else if (lhsParser.isError()) {\n          return lhsParser.asError();\n        }\n      }\n      if (step === 2) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 38/*'&'*/) {\n            input = input.step();\n            step = 3;\n          } else {\n            return lhsParser!;\n          }\n        } else if (input.isDone()) {\n          return lhsParser!;\n        }\n      }\n      if (step === 3) {\n        if (input.isCont()) {\n          c = input.head();\n          if (c === 38/*'&'*/) {\n            return lhsParser!;\n          } else {\n            step = 4;\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.unexpected(input));\n        }\n      }\n      if (step === 4) {\n        if (rhsParser === void 0) {\n          rhsParser = recon.parseComparisonOperator(input, builder);\n        }\n        while (rhsParser.isCont() && !input.isEmpty()) {\n          rhsParser = rhsParser.feed(input);\n        }\n        if (rhsParser.isDone()) {\n          const lhs = lhsParser!.bind();\n          const rhs = rhsParser.bind();\n          lhsParser = Parser.done(recon.bitwiseAnd(lhs, rhs));\n          rhsParser = void 0;\n          step = 2;\n          continue;\n        } else if (rhsParser.isError()) {\n          return rhsParser.asError();\n        }\n      }\n      break;\n    } while (true);\n    return new BitwiseAndOperatorParser<I, V>(recon, builder, lhsParser, rhsParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class ComparisonOperatorParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly lhsParser: Parser<V> | undefined;\n  private readonly operator: string | undefined;\n  private readonly rhsParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>, lhsParser?: Parser<V>,\n              operator?: string, rhsParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.lhsParser = lhsParser;\n    this.operator = operator;\n    this.rhsParser = rhsParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return ComparisonOperatorParser.parse(input, this.recon, this.builder, this.lhsParser,\n                                          this.operator, this.rhsParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>, lhsParser?: Parser<V>,\n                     operator?: string, rhsParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      if (lhsParser === void 0) {\n        lhsParser = recon.parseAttrExpression(input, builder);\n      }\n      while (lhsParser.isCont() && !input.isEmpty()) {\n        lhsParser = lhsParser.feed(input);\n      }\n      if (lhsParser.isDone()) {\n        step = 2;\n      } else if (lhsParser.isError()) {\n        return lhsParser.asError();\n      }\n    }\n    if (step === 2) {\n      while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n        input = input.step();\n      }\n      if (input.isCont()) {\n        if (c === 33/*'!'*/) {\n          input = input.step();\n          step = 3;\n        } else if (c === 60/*'<'*/) {\n          input = input.step();\n          step = 4;\n        } else if (c === 62/*'>'*/) {\n          input = input.step();\n          step = 5;\n        } else if (c === 61/*'='*/) {\n          input = input.step();\n          step = 6;\n        } else {\n          return lhsParser!;\n        }\n      } else if (input.isDone()) {\n        return lhsParser!;\n      }\n    }\n    if (step === 3) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 61/*'='*/) {\n          input = input.step();\n          operator = \"!=\";\n          step = 7;\n        } else {\n          operator = \"!\";\n          step = 7;\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.unexpected(input));\n      }\n    }\n    if (step === 4) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 61/*'='*/) {\n          input = input.step();\n          operator = \"<=\";\n          step = 7;\n        } else {\n          operator = \"<\";\n          step = 7;\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.unexpected(input));\n      }\n    }\n    if (step === 5) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 61/*'='*/) {\n          input = input.step();\n          operator = \">=\";\n          step = 7;\n        } else {\n          operator = \">\";\n          step = 7;\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.unexpected(input));\n      }\n    }\n    if (step === 6) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 61/*'='*/) {\n          input = input.step();\n          operator = \"==\";\n          step = 7;\n        } else if (c === 62/*'>'*/) {\n          return lhsParser!;\n        } else {\n          operator = \"=\";\n          step = 7;\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.unexpected(input));\n      }\n    }\n    if (step === 7) {\n      if (rhsParser === void 0) {\n        rhsParser = recon.parseAttrExpression(input, builder);\n      }\n      while (rhsParser.isCont() && !input.isEmpty()) {\n        rhsParser = rhsParser.feed(input);\n      }\n      if (rhsParser.isDone()) {\n        const lhs = lhsParser!.bind();\n        const rhs = rhsParser.bind();\n        if (operator === \"<\") {\n          return Parser.done(recon.lt(lhs, rhs));\n        } else if (operator === \"<=\") {\n          return Parser.done(recon.le(lhs, rhs));\n        } else if (operator === \"==\") {\n          return Parser.done(recon.eq(lhs, rhs));\n        } else if (operator === \"!=\") {\n          return Parser.done(recon.ne(lhs, rhs));\n        } else if (operator === \">=\") {\n          return Parser.done(recon.ge(lhs, rhs));\n        } else if (operator === \">\") {\n          return Parser.done(recon.gt(lhs, rhs));\n        } else {\n          return Parser.error(Diagnostic.message(operator!, input));\n        }\n      } else if (rhsParser.isError()) {\n        return rhsParser.asError();\n      }\n    }\n    return new ComparisonOperatorParser<I, V>(recon, builder, lhsParser, operator, rhsParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class AttrExpressionParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly fieldParser: Parser<I> | undefined;\n  private readonly valueParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>,\n              fieldParser?: Parser<I>, valueParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.fieldParser = fieldParser;\n    this.valueParser = valueParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return AttrExpressionParser.parse(input, this.recon, this.builder,\n                                      this.fieldParser, this.valueParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     fieldParser?: Parser<I>, valueParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    do {\n      if (step === 1) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 64/*'@'*/) {\n            step = 2;\n          } else if (c === 123/*'{'*/ || c === 91/*'['*/) {\n            builder = builder || recon.recordBuilder();\n            step = 5;\n          } else if (c === 40/*'('*/) {\n            step = 4;\n          } else if (c === 33/*'!'*/ || c === 34/*'\"'*/ || c === 36/*'$'*/ || c === 37/*'%'*/\n                  || c === 39/*'\\''*/ || c === 43/*'+'*/ || c === 45/*'-'*/\n                  || c >= 48/*'0'*/ && c <= 57/*'9'*/ || c === 96/*'`'*/ || c === 126/*'~'*/\n                  || Recon.isIdentStartChar(c)) {\n            step = 3;\n          } else if (builder === void 0) {\n            return Parser.done(recon.extant());\n          } else {\n            return Parser.done(builder.build());\n          }\n        } else if (input.isDone()) {\n          if (builder === void 0) {\n            return Parser.done(recon.extant());\n          } else {\n            return Parser.done(builder.build());\n          }\n        }\n      }\n      if (step === 2) {\n        if (fieldParser === void 0) {\n          fieldParser = recon.parseAttr(input);\n        }\n        while (fieldParser.isCont() && !input.isEmpty()) {\n          fieldParser = fieldParser.feed(input);\n        }\n        if (fieldParser.isDone()) {\n          builder = builder || recon.recordBuilder();\n          builder.push(fieldParser.bind());\n          fieldParser = void 0;\n          step = 1;\n          continue;\n        } else if (fieldParser.isError()) {\n          return fieldParser.asError();\n        }\n      }\n      if (step === 3) {\n        if (valueParser === void 0) {\n          valueParser = recon.parseAdditiveOperator(input);\n        }\n        while (valueParser.isCont() && !input.isEmpty()) {\n          valueParser = valueParser.feed(input);\n        }\n        if (valueParser.isDone()) {\n          builder = builder || recon.valueBuilder();\n          builder.push(recon.item(valueParser.bind()));\n          valueParser = void 0;\n          step = 6;\n        } else if (valueParser.isError()) {\n          return valueParser.asError();\n        }\n      }\n      if (step === 4) {\n        if (valueParser === void 0) {\n          valueParser = recon.parseAdditiveOperator(input, builder);\n        }\n        while (valueParser.isCont() && !input.isEmpty()) {\n          valueParser = valueParser.feed(input);\n        }\n        if (valueParser.isDone()) {\n          if (builder === void 0) {\n            builder = recon.valueBuilder();\n            builder.push(recon.item(valueParser.bind()));\n          }\n          valueParser = void 0;\n          step = 6;\n        } else if (valueParser.isError()) {\n          return valueParser.asError();\n        }\n      }\n      if (step === 5) {\n        if (valueParser === void 0) {\n          valueParser = recon.parseAdditiveOperator(input, builder);\n        }\n        while (valueParser.isCont() && !input.isEmpty()) {\n          valueParser = valueParser.feed(input);\n        }\n        if (valueParser.isDone()) {\n          valueParser = void 0;\n          step = 6;\n        } else if (valueParser.isError()) {\n          return valueParser.asError();\n        }\n      }\n      if (step === 6) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 64/*'@'*/) {\n            step = 1;\n            continue;\n          } else {\n            return Parser.done(builder!.build());\n          }\n        } else if (input.isDone()) {\n          return Parser.done(builder!.build());\n        }\n      }\n      break;\n    } while (true);\n    return new AttrExpressionParser<I, V>(recon, builder, fieldParser, valueParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class AdditiveOperatorParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly lhsParser: Parser<V> | undefined;\n  private readonly operator: string | undefined;\n  private readonly rhsParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>, lhsParser?: Parser<V>,\n              operator?: string, rhsParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.lhsParser = lhsParser;\n    this.operator = operator;\n    this.rhsParser = rhsParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return AdditiveOperatorParser.parse(input, this.recon, this.builder, this.lhsParser,\n                                        this.operator, this.rhsParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>, lhsParser?: Parser<V>,\n                     operator?: string, rhsParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    do {\n      if (step === 1) {\n        if (lhsParser === void 0) {\n          lhsParser = recon.parseMultiplicativeOperator(input, builder);\n        }\n        while (lhsParser.isCont() && !input.isEmpty()) {\n          lhsParser = lhsParser.feed(input);\n        }\n        if (lhsParser.isDone()) {\n          step = 2;\n        } else if (lhsParser.isError()) {\n          return lhsParser.asError();\n        }\n      }\n      if (step === 2) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 43/*'+'*/) {\n            input = input.step();\n            operator = \"+\";\n            step = 3;\n          } else if (c === 45/*'-'*/) {\n            input = input.step();\n            operator = \"-\";\n            step = 3;\n          } else {\n            return lhsParser!;\n          }\n        } else if (input.isDone()) {\n          return lhsParser!;\n        }\n      }\n      if (step === 3) {\n        if (rhsParser === void 0) {\n          rhsParser = recon.parseMultiplicativeOperator(input, builder);\n        }\n        while (rhsParser.isCont() && !input.isEmpty()) {\n          rhsParser = rhsParser.feed(input);\n        }\n        if (rhsParser.isDone()) {\n          const lhs = lhsParser!.bind();\n          const rhs = rhsParser.bind();\n          if (operator === \"+\") {\n            lhsParser = Parser.done(recon.plus(lhs, rhs));\n          } else if (operator === \"-\") {\n            lhsParser = Parser.done(recon.minus(lhs, rhs));\n          } else {\n            return Parser.error(Diagnostic.message(operator!, input));\n          }\n          rhsParser = void 0;\n          operator = void 0;\n          step = 2;\n          continue;\n        } else if (rhsParser.isError()) {\n          return rhsParser.asError();\n        }\n      }\n      break;\n    } while (true);\n    return new AdditiveOperatorParser<I, V>(recon, builder, lhsParser, operator, rhsParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class MultiplicativeOperatorParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly lhsParser: Parser<V> | undefined;\n  private readonly operator: string | undefined;\n  private readonly rhsParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>, lhsParser?: Parser<V>,\n              operator?: string, rhsParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.lhsParser = lhsParser;\n    this.operator = operator;\n    this.rhsParser = rhsParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return MultiplicativeOperatorParser.parse(input, this.recon, this.builder, this.lhsParser,\n                                              this.operator, this.rhsParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>, lhsParser?: Parser<V>,\n                     operator?: string, rhsParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    do {\n      if (step === 1) {\n        if (lhsParser === void 0) {\n          lhsParser = recon.parsePrefixOperator(input, builder);\n        }\n        while (lhsParser.isCont() && !input.isEmpty()) {\n          lhsParser = lhsParser.feed(input);\n        }\n        if (lhsParser.isDone()) {\n          step = 2;\n        } else if (lhsParser.isError()) {\n          return lhsParser.asError();\n        }\n      }\n      if (step === 2) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 42/*'*'*/) {\n            input = input.step();\n            operator = \"*\";\n            step = 3;\n          } else if (c === 47/*'/'*/) {\n            input = input.step();\n            operator = \"/\";\n            step = 3;\n          } else if (c === 37/*'%'*/) {\n            input = input.step();\n            operator = \"%\";\n            step = 3;\n          } else {\n            return lhsParser!;\n          }\n        } else if (input.isDone()) {\n          return lhsParser!;\n        }\n      }\n      if (step === 3) {\n        if (rhsParser === void 0) {\n          rhsParser = recon.parsePrefixOperator(input, builder);\n        }\n        while (rhsParser.isCont() && !input.isEmpty()) {\n          rhsParser = rhsParser.feed(input);\n        }\n        if (rhsParser.isDone()) {\n          const lhs = lhsParser!.bind();\n          const rhs = rhsParser.bind();\n          if (operator === \"*\") {\n            lhsParser = Parser.done(recon.times(lhs, rhs));\n          } else if (operator === \"/\") {\n            lhsParser = Parser.done(recon.divide(lhs, rhs));\n          } else if (operator === \"%\") {\n            lhsParser = Parser.done(recon.modulo(lhs, rhs));\n          } else {\n            return Parser.error(Diagnostic.message(operator!, input));\n          }\n          rhsParser = void 0;\n          operator = void 0;\n          step = 2;\n          continue;\n        } else if (rhsParser.isError()) {\n          return rhsParser.asError();\n        }\n      }\n      break;\n    } while (true);\n    return new MultiplicativeOperatorParser<I, V>(recon, builder, lhsParser, operator, rhsParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class PrefixOperatorParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly operator: string | undefined;\n  private readonly operandParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>,\n              operator?: string, rhsParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.operator = operator;\n    this.operandParser = rhsParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return PrefixOperatorParser.parse(input, this.recon, this.builder,\n                                      this.operator, this.operandParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     operator?: string, rhsParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n        input = input.step();\n      }\n      if (input.isCont()) {\n        if (c === 33/*'!'*/) {\n          input = input.step();\n          operator = \"!\";\n        } else if (c === 126/*'~'*/) {\n          input = input.step();\n          operator = \"~\";\n        } else if (c === 45/*'-'*/) {\n          input = input.step();\n          operator = \"-\";\n        } else if (c === 43/*'+'*/) {\n          input = input.step();\n          operator = \"+\";\n        } else {\n          return recon.parseInvokeOperator(input, builder);\n        }\n        step = 2;\n      } else if (input.isDone()) {\n        return recon.parseInvokeOperator(input, builder);\n      }\n    }\n    if (step === 2) {\n      if (rhsParser === void 0) {\n        rhsParser = recon.parsePrefixOperator(input, builder);\n      }\n      while (rhsParser.isCont() && !input.isEmpty()) {\n        rhsParser = rhsParser.feed(input);\n      }\n      if (rhsParser.isDone()) {\n        const operand = rhsParser.bind();\n        if (!recon.isDistinct(operand)) {\n          return Parser.error(Diagnostic.expected(\"value\", input));\n        } else if (operator === \"!\") {\n          return Parser.done(recon.not(operand));\n        } else if (operator === \"~\") {\n          return Parser.done(recon.bitwiseNot(operand));\n        } else if (operator === \"-\") {\n          return Parser.done(recon.negative(operand));\n        } else if (operator === \"+\") {\n          return Parser.done(recon.positive(operand));\n        } else {\n          return Parser.error(Diagnostic.message(operator!, input));\n        }\n      } else if (rhsParser.isError()) {\n        return rhsParser.asError();\n      }\n    }\n    return new PrefixOperatorParser<I, V>(recon, builder, operator, rhsParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Builder} from \"@swim/util\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class InvokeOperatorParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly exprParser: Parser<V> | undefined;\n  private readonly argsParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>,\n              exprParser?: Parser<V>, argsParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.exprParser = exprParser;\n    this.argsParser = argsParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return InvokeOperatorParser.parse(input, this.recon, this.builder,\n                                      this.exprParser, this.argsParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     exprParser?: Parser<V>, argsParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      if (exprParser === void 0) {\n        exprParser = recon.parsePrimary(input, builder);\n      }\n      while (exprParser.isCont() && !input.isEmpty()) {\n        exprParser = exprParser.feed(input);\n      }\n      if (exprParser.isDone()) {\n        step = 2;\n      } else if (exprParser.isError()) {\n        return exprParser.asError();\n      }\n    }\n    do {\n      if (step === 2) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 40/*'('*/) {\n            input = input.step();\n            step = 3;\n          } else {\n            return exprParser!;\n          }\n        } else if (input.isDone()) {\n          return exprParser!;\n        }\n      }\n      if (step === 3) {\n        while (input.isCont() && (c = input.head(), Recon.isWhitespace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 41/*')'*/) {\n            input = input.step();\n            const expr = exprParser!.bind();\n            exprParser = Parser.done(recon.invoke(expr, recon.extant()));\n            step = 2;\n            continue;\n          } else {\n            step = 4;\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(41/*')'*/, input));\n        }\n      }\n      if (step === 4) {\n        if (argsParser === void 0) {\n          argsParser = recon.parseBlock(input);\n        }\n        while (argsParser.isCont() && !input.isEmpty()) {\n          argsParser = argsParser.feed(input);\n        }\n        if (argsParser.isDone()) {\n          step = 5;\n        } else if (argsParser.isError()) {\n          return argsParser.asError();\n        }\n      }\n      if (step === 5) {\n        while (input.isCont() && (c = input.head(), Recon.isWhitespace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n        if (c === 41/*')'*/) {\n            input = input.step();\n            const expr = exprParser!.bind();\n            const args = argsParser!.bind();\n            exprParser = Parser.done(recon.invoke(expr, args));\n            argsParser = void 0;\n            step = 2;\n            continue;\n          } else {\n            return Parser.error(Diagnostic.expected(41/*')'*/, input));\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(41/*')'*/, input));\n        }\n      }\n      break;\n    } while (true);\n    return new InvokeOperatorParser<I, V>(recon, builder, exprParser, argsParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class PrimaryParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly exprParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>,\n              exprParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.exprParser = exprParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return PrimaryParser.parse(input, this.recon, this.builder,\n                               this.exprParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     exprParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n        input = input.step();\n      }\n      if (input.isCont()) {\n        if (c === 40/*'('*/) {\n          input = input.step();\n          step = 3;\n        } else {\n          step = 2;\n        }\n      } else if (input.isDone()) {\n        step = 2;\n      }\n    }\n    if (step === 2) {\n      if (exprParser === void 0) {\n        exprParser = recon.parseLiteral(input, builder);\n      }\n      while (exprParser.isCont() && !input.isEmpty()) {\n        exprParser = exprParser.feed(input);\n      }\n      if (exprParser.isDone()) {\n        return exprParser;\n      } else if (exprParser.isError()) {\n        return exprParser.asError();\n      }\n    }\n    if (step === 3) {\n      if (exprParser === void 0) {\n        exprParser = recon.parseBlockExpression(input, builder);\n      }\n      while (exprParser.isCont() && !input.isEmpty()) {\n        exprParser = exprParser.feed(input);\n      }\n      if (exprParser.isDone()) {\n        step = 4;\n      } else if (exprParser.isError()) {\n        return exprParser.asError();\n      }\n    }\n    do {\n      if (step === 4) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 44/*','*/) {\n            input = input.step();\n            if (exprParser !== void 0) {\n              if (builder === void 0) {\n                builder = recon.recordBuilder();\n                builder.push(recon.item(exprParser.bind()));\n              }\n              exprParser = void 0;\n            }\n            step = 5;\n          } else if (c === 41/*')'*/) {\n            input = input.step();\n            if (exprParser !== void 0) {\n              return exprParser;\n            } else {\n              return Parser.done(builder!.build());\n            }\n          } else {\n            return Parser.error(Diagnostic.expected(41/*')'*/, input));\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(41/*')'*/, input));\n        }\n      }\n      if (step === 5) {\n        if (exprParser === void 0) {\n          exprParser = recon.parseBlockExpression(input, builder);\n        }\n        while (exprParser.isCont() && !input.isEmpty()) {\n          exprParser = exprParser.feed(input);\n        }\n        if (exprParser.isDone()) {\n          exprParser = void 0;\n          step = 4;\n          continue;\n        } else if (exprParser.isError()) {\n          return exprParser.asError();\n        }\n      }\n      break;\n    } while (true);\n    return new PrimaryParser<I, V>(recon, builder, exprParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Builder} from \"@swim/util\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class LiteralParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly valueParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>,\n              valueParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.valueParser = valueParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return LiteralParser.parse(input, this.recon, this.builder, this.valueParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     valueParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n        input = input.step();\n      }\n      if (input.isCont()) {\n        if (c === 40/*'('*/) {\n          input = input.step();\n          step = 4;\n        } else if (c === 123/*'{'*/) {\n          builder = builder || recon.recordBuilder();\n          valueParser = recon.parseRecord(input, builder);\n          step = 3;\n        } else if (c === 91/*'['*/) {\n          builder = builder || recon.recordBuilder();\n          valueParser = recon.parseMarkup(input, builder);\n          step = 3;\n        } else if (Recon.isIdentStartChar(c)) {\n          valueParser = recon.parseIdent(input);\n          step = 2;\n        } else if (c === 34/*'\"'*/ || c === 39/*'\\''*/) {\n          valueParser = recon.parseString(input);\n          step = 2;\n        } else if (c === 96/*'`'*/) {\n          valueParser = recon.parseRawString(input);\n          step = 2;\n        } else if (c === 45/*'-'*/ || c >= 48/*'0'*/ && c <= 57/*'9'*/) {\n          valueParser = recon.parseNumber(input);\n          step = 2;\n        } else if (c === 37/*'%'*/) {\n          valueParser = recon.parseData(input);\n          step = 2;\n        } else if (c === 36/*'$'*/) {\n          valueParser = recon.parseSelector(input);\n          step = 2;\n        } else if (builder === void 0) {\n          return Parser.done(recon.extant());\n        } else {\n          return Parser.done(builder.build());\n        }\n      } else if (input.isDone()) {\n        if (builder === void 0) {\n          return Parser.done(recon.extant());\n        } else {\n          return Parser.done(builder.build());\n        }\n      }\n    }\n    if (step === 2) {\n      while (valueParser!.isCont() && !input.isEmpty()) {\n        valueParser = valueParser!.feed(input);\n      }\n      if (valueParser!.isDone()) {\n        builder = builder || recon.valueBuilder();\n        builder.push(recon.item(valueParser!.bind()));\n        return Parser.done(builder.build());\n      } else if (valueParser!.isError()) {\n        return valueParser!.asError();\n      }\n    }\n    if (step === 3) {\n      while (valueParser!.isCont() && !input.isEmpty()) {\n        valueParser = valueParser!.feed(input);\n      }\n      if (valueParser!.isDone()) {\n        return Parser.done(builder!.build());\n      } else if (valueParser!.isError()) {\n        return valueParser!.asError();\n      }\n    }\n    if (step === 4) {\n      if (valueParser === void 0) {\n        valueParser = recon.parseBlockExpression(input);\n      }\n      while (valueParser.isCont() && !input.isEmpty()) {\n        valueParser = valueParser.feed(input);\n      }\n      if (valueParser.isDone()) {\n        step = 5;\n      } else if (valueParser.isError()) {\n        return valueParser.asError();\n      }\n    }\n    if (step === 5) {\n      while (input.isCont() && (c = input.head(), Recon.isWhitespace(c))) {\n        input = input.step();\n      }\n      if (input.isCont()) {\n        if (c === 41/*')'*/) {\n          input = input.step();\n          builder = builder || recon.valueBuilder();\n          builder.push(recon.item(valueParser!.bind()));\n          return Parser.done(builder.build());\n        } else {\n          return Parser.error(Diagnostic.expected(41/*')'*/, input));\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(41/*')'*/, input));\n      }\n    }\n    return new LiteralParser<I, V>(recon, builder, valueParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport type {ReconParser} from \"./ReconParser\";\n\n/** @internal */\nexport class SelectorParser<I, V> extends Parser<V> {\n  private readonly recon: ReconParser<I, V>;\n  private readonly builder: Builder<I, V> | undefined;\n  private readonly selector: V | undefined;\n  private readonly valueParser: Parser<V> | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconParser<I, V>, builder?: Builder<I, V>,\n              selector?: V, valueParser?: Parser<V>, step?: number) {\n    super();\n    this.recon = recon;\n    this.builder = builder;\n    this.selector = selector;\n    this.valueParser = valueParser;\n    this.step = step;\n  }\n\n  override feed(input: Input): Parser<V> {\n    return SelectorParser.parse(input, this.recon, this.builder,\n                                this.selector, this.valueParser, this.step);\n  }\n\n  static parse<I, V>(input: Input, recon: ReconParser<I, V>, builder?: Builder<I, V>,\n                     selector?: V, valueParser?: Parser<V>, step: number = 1): Parser<V> {\n    let c = 0;\n    if (step === 1) {\n      while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n        input = input.step();\n      }\n      if (input.isCont() && c === 36/*'$'*/) {\n        input = input.step();\n        selector = selector || recon.selector();\n        step = 2;\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.expected(36/*'$'*/, input));\n      }\n    }\n    if (step === 2) {\n      if (input.isCont()) {\n        c = input.head();\n        if (c === 91/*'['*/) {\n          input = input.step();\n          step = 8;\n        } else if (c === 64/*'@'*/) {\n          input = input.step();\n          step = 7;\n        } else if (c === 58/*':'*/) {\n          input = input.step();\n          step = 6;\n        } else if (c === 42/*'*'*/) {\n          input = input.step();\n          step = 5;\n        } else if (c === 35/*'#'*/) {\n          input = input.step();\n          step = 4;\n        } else {\n          step = 3;\n        }\n      } else if (input.isDone()) {\n        return Parser.error(Diagnostic.unexpected(input));\n      }\n    }\n    do {\n      if (step === 3) {\n        if (valueParser === void 0) {\n          valueParser = recon.parseLiteral(input, recon.valueBuilder());\n        }\n        while (valueParser.isCont() && !input.isEmpty()) {\n          valueParser = valueParser.feed(input);\n        }\n        if (valueParser.isDone()) {\n          selector = recon.get(selector!, valueParser.bind());\n          valueParser = void 0;\n          step = 10;\n        } else if (valueParser.isError()) {\n          return valueParser.asError();\n        }\n      }\n      if (step === 4) {\n        if (valueParser === void 0) {\n          valueParser = recon.parseInteger(input);\n        }\n        while (valueParser.isCont() && !input.isEmpty()) {\n          valueParser = valueParser.feed(input);\n        }\n        if (valueParser.isDone()) {\n          selector = recon.value(recon.getItem(selector!, valueParser.bind()));\n          valueParser = void 0;\n          step = 10;\n        } else if (valueParser.isError()) {\n          return valueParser.asError();\n        }\n      }\n      if (step === 5) {\n        if (input.isCont()) {\n          c = input.head();\n          if (c === 58/*':'*/) {\n            input = input.step();\n            selector = recon.keys(selector!);\n            step = 10;\n          } else if (c === 42/*'*'*/) {\n            input = input.step();\n            selector = recon.descendants(selector!);\n            step = 10;\n          } else {\n            selector = recon.children(selector!);\n            step = 10;\n          }\n        } else if (input.isDone()) {\n          selector = recon.children(selector!);\n          step = 10;\n        }\n      }\n      if (step === 6) {\n        if (input.isCont()) {\n          c = input.head();\n          if (c === 42/*'*'*/) {\n            input = input.step();\n            selector = recon.values(selector!);\n            step = 10;\n          } else {\n            return Parser.error(Diagnostic.expected(42/*'*'*/, input));\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(42/*'*'*/, input));\n        }\n      }\n      if (step === 7) {\n        if (valueParser === void 0) {\n          valueParser = recon.parseIdent(input);\n        }\n        while (valueParser.isCont() && !input.isEmpty()) {\n          valueParser = valueParser.feed(input);\n        }\n        if (valueParser.isDone()) {\n          selector = recon.getAttr(selector!, valueParser.bind());\n          valueParser = void 0;\n          step = 10;\n        } else if (valueParser.isError()) {\n          return valueParser.asError();\n        }\n      }\n      if (step === 8) {\n        if (valueParser === void 0) {\n          valueParser = recon.parseBlockExpression(input);\n        }\n        while (valueParser.isCont() && !input.isEmpty()) {\n          valueParser = valueParser.feed(input);\n        }\n        if (valueParser.isDone()) {\n          step = 9;\n        } else if (valueParser.isError()) {\n          return valueParser.asError();\n        }\n      }\n      if (step === 9) {\n        while (input.isCont() && (c = input.head(), Recon.isSpace(c))) {\n          input = input.step();\n        }\n        if (input.isCont()) {\n          if (c === 93/*']'*/) {\n            input = input.step();\n            selector = recon.filter(selector!, valueParser!.bind());\n            valueParser = void 0;\n            step = 10;\n          } else {\n            return Parser.error(Diagnostic.expected(93/*']'*/, input));\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.expected(93/*']'*/, input));\n        }\n      }\n      if (step === 10) {\n        if (input.isCont()) {\n          c = input.head();\n          if (c === 91/*'['*/) {\n            input = input.step();\n            step = 8;\n            continue;\n          } else if (c === 35/*'#'*/) {\n            input = input.step();\n            step = 4;\n            continue;\n          } else if (c === 46/*'.'*/) {\n            input = input.step();\n            step = 11;\n          } else if (builder !== void 0) {\n            builder.push(recon.item(selector!));\n            return Parser.done(builder.build());\n          } else {\n            return Parser.done(selector!);\n          }\n        } else if (input.isDone()) {\n          if (builder !== void 0) {\n            builder.push(recon.item(selector!));\n            return Parser.done(builder.build());\n          } else {\n            return Parser.done(selector!);\n          }\n        }\n      }\n      if (step === 11) {\n        if (input.isCont()) {\n          c = input.head();\n          if (c === 64/*'@'*/) {\n            input = input.step();\n            step = 7;\n            continue;\n          } else if (c === 58/*':'*/) {\n            input = input.step();\n            step = 6;\n            continue;\n          } else if (c === 42/*'*'*/) {\n            input = input.step();\n            step = 5;\n            continue;\n          } else {\n            step = 3;\n            continue;\n          }\n        } else if (input.isDone()) {\n          return Parser.error(Diagnostic.unexpected(input));\n        }\n      }\n      break;\n    } while (true);\n    return new SelectorParser<I, V>(recon, builder, selector, valueParser, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport {Diagnostic} from \"@swim/codec\";\nimport type {Input} from \"@swim/codec\";\nimport type {Output} from \"@swim/codec\";\nimport {Parser} from \"@swim/codec\";\nimport {Unicode} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport {BlockParser} from \"./BlockParser\";\nimport {AttrParser} from \"./AttrParser\";\nimport {BlockItemParser} from \"./BlockItemParser\";\nimport {InlineItemParser} from \"./InlineItemParser\";\nimport {RecordParser} from \"./RecordParser\";\nimport {MarkupParser} from \"./MarkupParser\";\nimport {DataParser} from \"./DataParser\";\nimport {IdentParser} from \"./IdentParser\";\nimport {StringParser} from \"./StringParser\";\nimport {RawStringParser} from \"./RawStringParser\";\nimport {NumberParser} from \"./NumberParser\";\nimport {LambdaFuncParser} from \"./LambdaFuncParser\";\nimport {ConditionalOperatorParser} from \"./ConditionalOperatorParser\";\nimport {OrOperatorParser} from \"./OrOperatorParser\";\nimport {AndOperatorParser} from \"./AndOperatorParser\";\nimport {BitwiseOrOperatorParser} from \"./BitwiseOrOperatorParser\";\nimport {BitwiseXorOperatorParser} from \"./BitwiseXorOperatorParser\";\nimport {BitwiseAndOperatorParser} from \"./BitwiseAndOperatorParser\";\nimport {ComparisonOperatorParser} from \"./ComparisonOperatorParser\";\nimport {AttrExpressionParser} from \"./AttrExpressionParser\";\nimport {AdditiveOperatorParser} from \"./AdditiveOperatorParser\";\nimport {MultiplicativeOperatorParser} from \"./MultiplicativeOperatorParser\";\nimport {PrefixOperatorParser} from \"./PrefixOperatorParser\";\nimport {InvokeOperatorParser} from \"./InvokeOperatorParser\";\nimport {PrimaryParser} from \"./PrimaryParser\";\nimport {LiteralParser} from \"./LiteralParser\";\nimport {SelectorParser} from \"./SelectorParser\";\n\n/**\n * Factory for constructing Recon parsers and parse trees.\n * @public\n */\nexport abstract class ReconParser<I, V> {\n  abstract isDistinct(value: V): boolean;\n\n  abstract item(value: V): I;\n\n  abstract value(item: I): V;\n\n  abstract attr(key: V, value: V): I;\n\n  abstract attr(key: V): I;\n\n  abstract slot(key: V, value: V): I;\n\n  abstract slot(key: V): I;\n\n  abstract valueBuilder(): Builder<I, V>;\n\n  abstract recordBuilder(): Builder<I, V>;\n\n  abstract dataOutput(): Output<V>;\n\n  abstract textOutput(): Output<V>;\n\n  abstract ident(value: V): V;\n\n  abstract num(value: number | string): V;\n\n  abstract uint32(value: number): V;\n\n  abstract uint64(value: number): V;\n\n  abstract bool(value: boolean): V;\n\n  abstract selector(): V;\n\n  abstract extant(): V;\n\n  abstract absent(): V;\n\n  abstract conditional(ifTerm: V, thenTerm: V, elseTerm: V): V;\n\n  abstract or(lhs: V, rhs: V): V;\n\n  abstract and(lhs: V, rhs: V): V;\n\n  abstract bitwiseOr(lhs: V, rhs: V): V;\n\n  abstract bitwiseXor(lhs: V, rhs: V): V;\n\n  abstract bitwiseAnd(lhs: V, rhs: V): V;\n\n  abstract lt(lhs: V, rhs: V): V;\n\n  abstract le(lhs: V, rhs: V): V;\n\n  abstract eq(lhs: V, rhs: V): V;\n\n  abstract ne(lhs: V, rhs: V): V;\n\n  abstract ge(lhs: V, rhs: V): V;\n\n  abstract gt(lhs: V, rhs: V): V;\n\n  abstract plus(lhs: V, rhs: V): V;\n\n  abstract minus(lhs: V, rhs: V): V;\n\n  abstract times(lhs: V, rhs: V): V;\n\n  abstract divide(lhs: V, rhs: V): V;\n\n  abstract modulo(lhs: V, rhs: V): V;\n\n  abstract not(rhs: V): V;\n\n  abstract bitwiseNot(rhs: V): V;\n\n  abstract negative(rhs: V): V;\n\n  abstract positive(rhs: V): V;\n\n  abstract invoke(func: V, args: V): V;\n\n  abstract lambda(bindings: V, template: V): V;\n\n  abstract get(selector: V, key: V): V;\n\n  abstract getAttr(selector: V, key: V): V;\n\n  abstract getItem(selector: V, index: V): I;\n\n  abstract children(selector: V): V;\n\n  abstract descendants(selector: V): V;\n\n  abstract keys(selector: V): V;\n\n  abstract values(selector: V): V;\n\n  abstract filter(selector: V, predicate: V): V;\n\n  parseBlock(input: Input): Parser<V> {\n    return BlockParser.parse(input, this);\n  }\n\n  parseAttr(input: Input): Parser<I> {\n    return AttrParser.parse(input, this);\n  }\n\n  parseBlockItem(input: Input): Parser<V> {\n    return BlockItemParser.parse(input, this);\n  }\n\n  parseInlineItem(input: Input): Parser<V> {\n    return InlineItemParser.parse(input, this);\n  }\n\n  parseRecord(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return RecordParser.parse(input, this, builder);\n  }\n\n  parseMarkup(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return MarkupParser.parse(input, this, builder);\n  }\n\n  parseData(input: Input): Parser<V> {\n    return DataParser.parse(input, this);\n  }\n\n  parseIdent(input: Input): Parser<V> {\n    return IdentParser.parse(input, this);\n  }\n\n  parseString(input: Input): Parser<V> {\n    return StringParser.parse(input, this);\n  }\n\n  parseRawString(input: Input): Parser<V> {\n    return RawStringParser.parse(input, this);\n  }\n\n  parseNumber(input: Input): Parser<V> {\n    return NumberParser.parse(input, this);\n  }\n\n  parseInteger(input: Input): Parser<V> {\n    return NumberParser.parseInteger(input, this);\n  }\n\n  parseBlockExpression(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return this.parseLambdaFunc(input, builder);\n  }\n\n  parseLambdaFunc(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return LambdaFuncParser.parse(input, this, builder);\n  }\n\n  parseConditionalOperator(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return ConditionalOperatorParser.parse(input, this, builder);\n  }\n\n  parseOrOperator(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return OrOperatorParser.parse(input, this, builder);\n  }\n\n  parseAndOperator(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return AndOperatorParser.parse(input, this, builder);\n  }\n\n  parseBitwiseOrOperator(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return BitwiseOrOperatorParser.parse(input, this, builder);\n  }\n\n  parseBitwiseXorOperator(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return BitwiseXorOperatorParser.parse(input, this, builder);\n  }\n\n  parseBitwiseAndOperator(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return BitwiseAndOperatorParser.parse(input, this, builder);\n  }\n\n  parseComparisonOperator(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return ComparisonOperatorParser.parse(input, this, builder);\n  }\n\n  parseAttrExpression(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return AttrExpressionParser.parse(input, this, builder);\n  }\n\n  parseAdditiveOperator(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return AdditiveOperatorParser.parse(input, this, builder);\n  }\n\n  parseMultiplicativeOperator(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return MultiplicativeOperatorParser.parse(input, this, builder);\n  }\n\n  parsePrefixOperator(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return PrefixOperatorParser.parse(input, this, builder);\n  }\n\n  parseInvokeOperator(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return InvokeOperatorParser.parse(input, this, builder);\n  }\n\n  parsePrimary(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return PrimaryParser.parse(input, this, builder);\n  }\n\n  parseLiteral(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return LiteralParser.parse(input, this, builder);\n  }\n\n  parseSelector(input: Input, builder?: Builder<I, V>): Parser<V> {\n    return SelectorParser.parse(input, this, builder);\n  }\n\n  blockParser(): Parser<V> {\n    return new BlockParser<I, V>(this);\n  }\n\n  parseBlockString(string: string): V {\n    let input = Unicode.stringInput(string);\n    while (input.isCont() && Recon.isWhitespace(input.head())) {\n      input = input.step();\n    }\n    let parser = this.parseBlock(input);\n    if (parser.isDone()) {\n      while (input.isCont() && Recon.isWhitespace(input.head())) {\n        input = input.step();\n      }\n    }\n    if (input.isCont() && !parser.isError()) {\n      parser = Parser.error(Diagnostic.unexpected(input));\n    }\n    return parser.bind();\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Builder} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport type {Item} from \"@swim/structure\";\nimport {Attr} from \"@swim/structure\";\nimport {Slot} from \"@swim/structure\";\nimport {Value} from \"@swim/structure\";\nimport {Record} from \"@swim/structure\";\nimport {Data} from \"@swim/structure\";\nimport {Text} from \"@swim/structure\";\nimport {Num} from \"@swim/structure\";\nimport {Bool} from \"@swim/structure\";\nimport {Selector} from \"@swim/structure\";\nimport {AndOperator} from \"@swim/structure\";\nimport {BitwiseAndOperator} from \"@swim/structure\";\nimport {BitwiseNotOperator} from \"@swim/structure\";\nimport {BitwiseOrOperator} from \"@swim/structure\";\nimport {BitwiseXorOperator} from \"@swim/structure\";\nimport {DivideOperator} from \"@swim/structure\";\nimport {EqOperator} from \"@swim/structure\";\nimport {GeOperator} from \"@swim/structure\";\nimport {GtOperator} from \"@swim/structure\";\nimport {InvokeOperator} from \"@swim/structure\";\nimport {LeOperator} from \"@swim/structure\";\nimport {LtOperator} from \"@swim/structure\";\nimport {MinusOperator} from \"@swim/structure\";\nimport {ModuloOperator} from \"@swim/structure\";\nimport {NeOperator} from \"@swim/structure\";\nimport {NegativeOperator} from \"@swim/structure\";\nimport {NotOperator} from \"@swim/structure\";\nimport {OrOperator} from \"@swim/structure\";\nimport {PlusOperator} from \"@swim/structure\";\nimport {PositiveOperator} from \"@swim/structure\";\nimport {TimesOperator} from \"@swim/structure\";\nimport {ReconParser} from \"./ReconParser\";\n\n/** @public */\nexport class ReconStructureParser extends ReconParser<Item, Value> {\n  override isDistinct(value: Value): boolean {\n    return value.isDistinct();\n  }\n\n  override item(value: Value): Item {\n    return value;\n  }\n\n  override value(item: Item): Value {\n    return item.toValue();\n  }\n\n  override attr(key: Value, value?: Value): Item {\n    if (arguments.length === 1) {\n      return Attr.of(key as Text);\n    } else {\n      return Attr.of(key as Text, value);\n    }\n  }\n\n  override slot(key: Value, value?: Value): Item {\n    if (arguments.length === 1) {\n      return Slot.of(key);\n    } else {\n      return Slot.of(key, value);\n    }\n  }\n\n  override valueBuilder(): Builder<Item, Value> {\n    return Value.builder();\n  }\n\n  override recordBuilder(): Builder<Item, Value> {\n    return Record.create();\n  }\n\n  override dataOutput(): Output<Value> {\n    return Data.output();\n  }\n\n  override textOutput(): Output<Value> {\n    return Text.output();\n  }\n\n  override ident(value: Value): Value {\n    if (value instanceof Text) {\n      const string = value.stringValue();\n      if (string === \"true\") {\n        return Bool.from(true);\n      } else if (string === \"false\") {\n        return Bool.from(false);\n      }\n    }\n    return value;\n  }\n\n  override num(value: number | string): Value {\n    if (typeof value === \"number\") {\n      return Num.from(value);\n    } else if (typeof value === \"string\") {\n      return Num.from(+value);\n    } else {\n      throw new TypeError(\"\" + value);\n    }\n  }\n\n  override uint32(value: number): Value {\n    return Num.uint32(value);\n  }\n\n  override uint64(value: number): Value {\n    return Num.uint64(value);\n  }\n\n  override bool(value: boolean): Value {\n    return Bool.from(value);\n  }\n\n  override selector(): Value {\n    return Selector.identity();\n  }\n\n  override extant(): Value {\n    return Value.extant();\n  }\n\n  override absent(): Value {\n    return Value.absent();\n  }\n\n  override conditional(ifTerm: Value, thenTerm: Value, elseTerm: Value): Value {\n    return ifTerm.conditional(thenTerm, elseTerm);\n  }\n\n  override or(lhs: Value, rhs: Value): Value {\n    return new OrOperator(lhs, rhs);\n  }\n\n  override and(lhs: Value, rhs: Value): Value {\n    return new AndOperator(lhs, rhs);\n  }\n\n  override bitwiseOr(lhs: Value, rhs: Value): Value {\n    return new BitwiseOrOperator(lhs, rhs);\n  }\n\n  override bitwiseXor(lhs: Value, rhs: Value): Value {\n    return new BitwiseXorOperator(lhs, rhs);\n  }\n\n  override bitwiseAnd(lhs: Value, rhs: Value): Value {\n    return new BitwiseAndOperator(lhs, rhs);\n  }\n\n  override lt(lhs: Value, rhs: Value): Value {\n    return new LtOperator(lhs, rhs);\n  }\n\n  override le(lhs: Value, rhs: Value): Value {\n    return new LeOperator(lhs, rhs);\n  }\n\n  override eq(lhs: Value, rhs: Value): Value {\n    return new EqOperator(lhs, rhs);\n  }\n\n  override ne(lhs: Value, rhs: Value): Value {\n    return new NeOperator(lhs, rhs);\n  }\n\n  override ge(lhs: Value, rhs: Value): Value {\n    return new GeOperator(lhs, rhs);\n  }\n\n  override gt(lhs: Value, rhs: Value): Value {\n    return new GtOperator(lhs, rhs);\n  }\n\n  override plus(lhs: Value, rhs: Value): Value {\n    return new PlusOperator(lhs, rhs);\n  }\n\n  override minus(lhs: Value, rhs: Value): Value {\n    return new MinusOperator(lhs, rhs);\n  }\n\n  override times(lhs: Value, rhs: Value): Value {\n    return new TimesOperator(lhs, rhs);\n  }\n\n  override divide(lhs: Value, rhs: Value): Value {\n    return new DivideOperator(lhs, rhs);\n  }\n\n  override modulo(lhs: Value, rhs: Value): Value {\n    return new ModuloOperator(lhs, rhs);\n  }\n\n  override not(rhs: Value): Value {\n    return new NotOperator(rhs);\n  }\n\n  override bitwiseNot(rhs: Value): Value {\n    return new BitwiseNotOperator(rhs);\n  }\n\n  override negative(rhs: Value): Value {\n    if (rhs instanceof Num) {\n      return rhs.negative();\n    } else {\n      return new NegativeOperator(rhs);\n    }\n  }\n\n  override positive(rhs: Value): Value {\n    return new PositiveOperator(rhs);\n  }\n\n  override invoke(func: Value, args: Value): Value {\n    return new InvokeOperator(func, args);\n  }\n\n  override lambda(bindings: Value, template: Value): Value {\n    return bindings.lambda(template);\n  }\n\n  override get(selector: Value, key: Value): Value {\n    return selector.get(key);\n  }\n\n  override getAttr(selector: Value, key: Value): Value {\n    return selector.getAttr(key as Text);\n  }\n\n  override getItem(selector: Value, index: Value): Item {\n    return selector.getItem(index as Num);\n  }\n\n  override children(selector: Value): Value {\n    return Selector.literal(selector).children();\n  }\n\n  override descendants(selector: Value): Value {\n    return Selector.literal(selector).descendants();\n  }\n\n  override keys(selector: Value): Value {\n    return Selector.literal(selector).keys();\n  }\n\n  override values(selector: Value): Value {\n    return Selector.literal(selector).values();\n  }\n\n  override filter(selector: Value, predicate: Value): Value {\n    return selector.filter(predicate);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class AttrWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly key: V;\n  private readonly value: V;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, key: V, value: V, part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.key = key;\n    this.value = value;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return AttrWriter.write(output, this.recon, this.key, this.value, this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, key: V, value: V): number {\n    let size = 0;\n    size += 1; // '@'\n    size += recon.sizeOfValue(key);\n    if (!recon.isExtant(recon.item(value))) {\n      size += 1; // '(';\n      size += recon.sizeOfBlockValue(value);\n      size += 1; // ')';\n    }\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, key: V, value: V,\n                     part?: Writer, step: number = 1): Writer {\n    if (step === 1 && output.isCont()) {\n      output = output.write(64/*'@'*/);\n      step = 2;\n    }\n    if (step === 2) {\n      if (part === void 0) {\n        part = recon.writeValue(output, key);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        if (recon.isExtant(recon.item(value))) {\n          return Writer.end();\n        } else {\n          step = 3;\n        }\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 3 && output.isCont()) {\n      output = output.write(40/*'('*/);\n      step = 4;\n    }\n    if (step === 4) {\n      if (part === void 0) {\n        part = recon.writeBlockValue(output, value);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 5;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 5 && output.isCont()) {\n      output = output.write(41/*')'*/);\n      return Writer.end();\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new AttrWriter<I, V>(recon, key, value, part, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class SlotWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly key: V;\n  private readonly value: V;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, key: V, value: V, part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.key = key;\n    this.value = value;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return SlotWriter.write(output, this.recon, this.key, this.value, this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, key: V, value: V): number {\n    let size = 0;\n    size += recon.sizeOfValue(key);\n    size += 1; // ':'\n    if (!recon.isExtant(recon.item(value))) {\n      size += recon.sizeOfValue(value);\n    }\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, key: V, value: V,\n                     part?: Writer, step: number = 1): Writer {\n    if (step === 1) {\n      if (part === void 0) {\n        part = recon.writeValue(output, key);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 2;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 2 && output.isCont()) {\n      output = output.write(58/*':'*/);\n      if (recon.isExtant(recon.item(value))) {\n        return Writer.end();\n      } else {\n        step = 3;\n      }\n    }\n    if (step === 3) {\n      if (part === void 0) {\n        part = recon.writeValue(output, value);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        return Writer.end();\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new SlotWriter<I, V>(recon, key, value, part, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Cursor} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class BlockWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly items: Cursor<I>;\n  private readonly inBlock: boolean;\n  private readonly inMarkup: boolean;\n  private readonly inBraces: boolean | undefined;\n  private readonly inBrackets: boolean | undefined;\n  private readonly first: boolean | undefined;\n  private readonly markupSafe: boolean | undefined;\n  private readonly item: I | undefined;\n  private readonly next: I | undefined;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, items: Cursor<I>, inBlock: boolean, inMarkup: boolean,\n              inBraces?: boolean, inBrackets?: boolean, first?: boolean, markupSafe?: boolean,\n              item?: I, next?: I, part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.items = items;\n    this.inBlock = inBlock;\n    this.inMarkup = inMarkup;\n    this.inBraces = inBraces;\n    this.inBrackets = inBrackets;\n    this.first = first;\n    this.markupSafe = markupSafe;\n    this.item = item;\n    this.next = next;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return BlockWriter.write(output, this.recon, this.items, this.inBlock, this.inMarkup,\n                             this.inBraces, this.inBrackets, this.first, this.markupSafe,\n                             this.item, this.next, this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, items: Cursor<I>,\n                      inBlock: boolean, inMarkup: boolean): number {\n    let size = 0;\n    let inBraces = false;\n    let inBrackets = false;\n    let first = true;\n    let markupSafe = true;\n    let next: I | undefined;\n    while (next !== void 0 || items.hasNext()) {\n      let item: I | undefined;\n      if (next === void 0) {\n        item = items.next().value as I;\n      } else {\n        item = next;\n        next = void 0;\n      }\n      if (items.hasNext()) {\n        next = items.next().value as I;\n      }\n      if (recon.isExpression(item)) {\n        markupSafe = false;\n      }\n      if (inBrackets && recon.isAttr(item)) {\n        if (inBraces) {\n          size += 1; // '}'\n          inBraces = false;\n        }\n        size += 1; // ']'\n        inBrackets = false;\n      }\n      if (recon.isAttr(item)) {\n        if (inBraces) {\n          size += 1; // '}'\n          inBraces = false;\n        } else if (inBrackets) { // Case already covered?\n          size += 1; // ']'\n          inBrackets = false;\n        }\n        size += recon.sizeOfItem(item);\n        first = false;\n      } else if (inBrackets && recon.isText(item)) {\n        if (inBraces) {\n          size += 1; // '}'\n          inBraces = false;\n        }\n        size += recon.sizeOfMarkupText(item);\n      } else if (inBraces) {\n        if (!first) {\n          size += 1; // ','\n        } else {\n          first = false;\n        }\n        size += BlockWriter.sizeOfBlockItem(recon, item);\n      } else if (inBrackets) {\n        if (recon.isRecord(item) && recon.isMarkupSafe(recon.items(item))) {\n          size += recon.sizeOfBlock(recon.items(item), false, true);\n          if (next !== void 0 && recon.isText(next)) {\n            size += recon.sizeOfMarkupText(next);\n            next = void 0;\n          } else if (next !== void 0 && !recon.isAttr(next)) {\n            size += 1; // '{'\n            inBraces = true;\n            first = true;\n          } else {\n            size += 1; // ']'\n            inBrackets = false;\n          }\n        } else {\n          size += 1; // '{'\n          size += recon.sizeOfItem(item);\n          inBraces = true;\n          first = false;\n        }\n      } else if (markupSafe && recon.isText(item) && next !== void 0 && !recon.isField(next)\n              && !recon.isText(next) && !recon.isBool(next)) {\n        size += 1; // '['\n        size += recon.sizeOfMarkupText(item);\n        inBrackets = true;\n      } else if (inBlock && !inBraces) {\n        if (!first) {\n          size += 1; // ','\n        } else {\n          first = false;\n        }\n        size += BlockWriter.sizeOfBlockItem(recon, item);\n      } else if (inMarkup && recon.isText(item) && next === void 0) {\n        size += 1; // '['\n        size += recon.sizeOfMarkupText(item);\n        size += 1; // ']'\n      } else if (!inMarkup && recon.isValue(item) && !recon.isRecord(item)\n             && (!first && next === void 0 || next !== void 0 && recon.isAttr(next))) {\n        if (!first && (recon.isText(item) && recon.isIdent(item)\n                    || recon.isNum(item) || recon.isBool(item))) {\n          size += 1; // ' '\n        }\n        size += recon.sizeOfItem(item);\n      } else {\n        size += 1; // '{'\n        size += recon.sizeOfItem(item);\n        inBraces = true;\n        first = false;\n      }\n    }\n    if (inBraces) {\n      size += 1; // '}'\n    }\n    if (inBrackets) {\n      size += 1; // ']'\n    }\n    return size;\n  }\n\n  static sizeOfBlockItem<I, V>(recon: ReconWriter<I, V>, item: I): number {\n    let size = 0;\n    if (recon.isField(item)) {\n      size += recon.sizeOfSlot(recon.key(item), recon.value(item));\n    } else {\n      size += recon.sizeOfItem(item);\n    }\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, items: Cursor<I>,\n                     inBlock: boolean, inMarkup: boolean, inBraces: boolean = false,\n                     inBrackets: boolean = false, first: boolean = true, markupSafe: boolean = true,\n                     item?: I, next?: I, part?: Writer, step: number = 1): Writer {\n    do {\n      if (step === 1) {\n        if (next === void 0 && !items.hasNext()) {\n          step = 10;\n          break;\n        } else {\n          if (next === void 0) {\n            item = items.next().value as I;\n          } else {\n            item = next;\n            next = void 0;\n          }\n          if (items.hasNext()) {\n            next = items.next().value as I;\n          }\n          if (recon.isExpression(item)) {\n            markupSafe = false;\n          }\n          step = 2;\n        }\n      }\n      if (step === 2 && output.isCont()) {\n        if (inBrackets && recon.isAttr(item!)) {\n          if (inBraces) {\n            output = output.write(125/*'}'*/);\n            inBraces = false;\n          }\n          step = 3;\n        } else {\n          step = 4;\n        }\n      }\n      if (step === 3 && output.isCont()) {\n        output = output.write(93/*']'*/);\n        inBrackets = false;\n        step = 4;\n      }\n      if (step === 4 && output.isCont()) {\n        if (recon.isAttr(item!)) {\n          if (inBraces) {\n            output = output.write(125/*'}'*/);\n            inBraces = false;\n          } else if (inBrackets) {\n            output = output.write(93/*']'*/);\n            inBrackets = false;\n          }\n          part = recon.writeItem(output, item!);\n          first = false;\n          step = 7;\n        } else if (inBrackets && recon.isText(item!)) {\n          if (inBraces) {\n            output = output.write(125/*'}'*/);\n            inBraces = false;\n          }\n          part = recon.writeMarkupText(output, item!);\n          step = 7;\n        } else if (inBraces) {\n          if (!first) {\n            output = output.write(44/*','*/);\n          } else {\n            first = false;\n          }\n          part = BlockWriter.writeBlockItem(output, recon, item!);\n          step = 7;\n        } else if (inBrackets) {\n          if (recon.isRecord(item!) && recon.isMarkupSafe(recon.items(item!))) {\n            part = recon.writeBlock(output, recon.items(item!), false, true);\n            step = 5;\n          } else {\n            output = output.write(123/*'{'*/);\n            part = recon.writeItem(output, item!);\n            inBraces = true;\n            first = false;\n            step = 7;\n          }\n        } else if (markupSafe && recon.isText(item!) && next !== void 0 && !recon.isField(next)\n                && !recon.isText(next) && !recon.isBool(next)) {\n          output = output.write(91/*'['*/);\n          part = recon.writeMarkupText(output, item!);\n          inBrackets = true;\n          step = 7;\n        } else if (inBlock && !inBraces) {\n          if (!first) {\n            output = output.write(44/*','*/);\n          } else {\n            first = false;\n          }\n          part = BlockWriter.writeBlockItem(output, recon, item!);\n          step = 7;\n        } else if (inMarkup && recon.isText(item!) && next === void 0) {\n          output = output.write(91/*'['*/);\n          part = recon.writeMarkupText(output, item!);\n          step = 8;\n        } else if (!inMarkup && recon.isValue(item!) && !recon.isRecord(item!)\n               && (!first && next === void 0 || next !== void 0 && recon.isAttr(next))) {\n          if (!first && (recon.isText(item!) && recon.isIdent(item!)\n                      || recon.isNum(item!) || recon.isBool(item!))) {\n            output = output.write(32/*' '*/);\n          }\n          part = recon.writeItem(output, item!);\n          step = 7;\n        } else {\n          output = output.write(123/*'{'*/);\n          part = recon.writeItem(output, item!);\n          inBraces = true;\n          first = false;\n          step = 7;\n        }\n      }\n      if (step === 5) {\n        part = part!.pull(output);\n        if (part.isDone()) {\n          part = void 0;\n          step = 6;\n        } else if (part.isError()) {\n          return part.asError();\n        }\n      }\n      if (step === 6 && output.isCont()) {\n        if (next !== void 0 && recon.isText(next)) {\n          part = recon.writeMarkupText(output, next);\n          next = void 0;\n          step = 7;\n        } else if (next !== void 0 && !recon.isAttr(next)) {\n          output = output.write(123/*'{'*/);\n          inBraces = true;\n          first = true;\n          step = 1;\n          continue;\n        } else {\n          output = output.write(93/*']'*/);\n          inBrackets = false;\n          step = 1;\n          continue;\n        }\n      }\n      if (step === 7) {\n        part = part!.pull(output);\n        if (part.isDone()) {\n          part = void 0;\n          step = 1;\n          continue;\n        } else if (part.isError()) {\n          return part.asError();\n        }\n      }\n      if (step === 8) {\n        part = part!.pull(output);\n        if (part.isDone()) {\n          part = void 0;\n          step = 9;\n        } else if (part.isError()) {\n          return part.asError();\n        }\n      }\n      if (step === 9 && output.isCont()) {\n        output = output.write(93/*']'*/);\n        step = 1;\n        continue;\n      }\n      break;\n    } while (true);\n    if (step === 10) {\n      if (inBraces) {\n        if (output.isCont()) {\n          output = output.write(125/*'}'*/);\n          step = 11;\n        }\n      } else {\n        step = 11;\n      }\n    }\n    if (step === 11) {\n      if (inBrackets) {\n        if (output.isCont()) {\n          output = output.write(93/*']'*/);\n          return Writer.end();\n        }\n      } else {\n        return Writer.end();\n      }\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new BlockWriter<I, V>(recon, items, inBlock, inMarkup, inBraces, inBrackets,\n                                 first, markupSafe, item, next, part, step);\n  }\n\n  static writeBlockItem<I, V>(output: Output, recon: ReconWriter<I, V>, item: I): Writer {\n    if (recon.isField(item)) {\n      return recon.writeSlot(output, recon.key(item), recon.value(item));\n    } else {\n      return recon.writeItem(output, item);\n    }\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Cursor} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class PrimaryWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly items: Cursor<I>;\n  private readonly inParens: boolean | undefined;\n  private readonly first: boolean | undefined;\n  private readonly item: I | undefined;\n  private readonly next: I | undefined;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, items: Cursor<I>, inParens?: boolean,\n              first?: boolean, item?: I, next?: I, part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.items = items;\n    this.inParens = inParens;\n    this.first = first;\n    this.item = item;\n    this.next = next;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return PrimaryWriter.write(output, this.recon, this.items, this.inParens, this.first,\n                               this.item, this.next, this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, items: Cursor<I>): number {\n    let size = 0;\n    let inParens = false;\n    let first = true;\n    let next: I | undefined;\n    while (next !== void 0 || items.hasNext()) {\n      let item: I | undefined;\n      if (next === void 0) {\n        item = items.next().value as I;\n      } else {\n        item = next;\n        next = void 0;\n      }\n      if (items.hasNext()) {\n        next = items.next().value as I;\n      }\n      if (!inParens && !first) {\n        size += 1; // ' '\n      }\n      if (recon.isAttr(item)) {\n        if (inParens) {\n          size += 1; // ')'\n          inParens = false;\n        }\n        size += recon.sizeOfItem(item);\n        first = false;\n      } else if (inParens) {\n        if (!first) {\n          size += 1; // ','\n        } else {\n          first = false;\n        }\n        size += recon.sizeOfBlockItem(item);\n      } else if (recon.isValue(item) && !recon.isRecord(item)\n             && (!first && next === void 0 || next !== void 0 && recon.isAttr(next))) {\n        size += recon.sizeOfItem(item);\n      } else {\n        size += 1; // '('\n        size += recon.sizeOfItem(item);\n        inParens = true;\n        first = false;\n      }\n    }\n    if (inParens) {\n      size += 1; // ')'\n    }\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, items: Cursor<I>,\n                     inParens: boolean = false, first: boolean = true, item?: I,\n                     next?: I, part?: Writer, step: number = 1): Writer {\n    do {\n      if (step === 1) {\n        if (next === void 0 && !items.hasNext()) {\n          step = 5;\n          break;\n        } else {\n          if (next === void 0) {\n            item = items.next().value!;\n          } else {\n            item = next;\n            next = void 0;\n          }\n          if (items.hasNext()) {\n            next = items.next().value!;\n          }\n          step = 2;\n        }\n      }\n      if (step === 2 && output.isCont()) {\n        if (!inParens && !first) {\n          output = output.write(32/*' '*/);\n        }\n        step = 3;\n      }\n      if (step === 3 && output.isCont()) {\n        if (recon.isAttr(item!)) {\n          if (inParens) {\n            output = output.write(41/*')'*/);\n            inParens = false;\n          }\n          part = recon.writeItem(output, item!);\n          first = false;\n          step = 4;\n        } else if (inParens) {\n          if (!first) {\n            output = output.write(44/*','*/);\n          } else {\n            first = false;\n          }\n          part = recon.writeBlockItem(output, item!);\n          step = 4;\n        } else if (recon.isValue(item!) && !recon.isRecord(item!)\n               && (!first && next === void 0 || next !== void 0 && recon.isAttr(next))) {\n          part = recon.writeItem(output, item!);\n          step = 4;\n        } else {\n          output = output.write(40/*'('*/);\n          part = recon.writeItem(output, item!);\n          inParens = true;\n          first = false;\n          step = 4;\n        }\n      }\n      if (step === 4) {\n        part = part!.pull(output);\n        if (part.isDone()) {\n          part = void 0;\n          step = 1;\n          continue;\n        } else if (part.isError()) {\n          return part.asError();\n        }\n      }\n      break;\n    } while (true);\n    if (step === 5) {\n      if (inParens) {\n        if (output.isCont()) {\n          output = output.write(41/*')'*/);\n          return Writer.end();\n        }\n      } else {\n        return Writer.end();\n      }\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new PrimaryWriter<I, V>(recon, items, inParens, first, item, next, part, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Strings} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport {Utf8} from \"@swim/codec\";\nimport {Base16} from \"@swim/codec\";\n\n/** @internal */\nexport class MarkupTextWriter extends Writer {\n  private readonly text: string;\n  private readonly index: number | undefined;\n  private readonly escape: number | undefined;\n  private readonly step: number | undefined;\n\n  constructor(text: string, index?: number, escape?: number, step?: number) {\n    super();\n    this.text = text;\n    this.index = index;\n    this.escape = escape;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return MarkupTextWriter.write(output, this.text, this.index, this.escape, this.step);\n  }\n\n  static sizeOf(text: string): number {\n    let size = 0;\n    for (let i = 0; i < text.length; i = Strings.offsetByCodePoints(text, i, 1)) {\n      let c = text.codePointAt(i);\n      if (c === void 0) {\n        c = text.charCodeAt(i);\n      }\n      if (c === 36/*'$'*/ || c === 64/*'@'*/ || c === 91/*'['*/ || c === 92/*'\\\\'*/\n          || c === 93/*']'*/ || c === 123/*'{'*/ || c === 125/*'}'*/ || c === 8/*'\\b'*/\n          || c === 12/*'\\f'*/ || c === 10/*'\\n'*/ || c === 13/*'\\r'*/ || c === 9/*'\\t'*/) {\n        size += 2;\n      } else if (c < 0x20) {\n        size += 6;\n      } else {\n        size += Utf8.sizeOf(c);\n      }\n    }\n    return size;\n  }\n\n  static write(output: Output, text: string, index: number = 0,\n               escape: number = 0, step: number = 1): Writer {\n    const length = text.length;\n    while (output.isCont()) {\n      if (step === 1) {\n        if (index < length) {\n          let c = text.codePointAt(index);\n          if (c === void 0) {\n            c = text.charCodeAt(index);\n          }\n          index = Strings.offsetByCodePoints(text, index, 1);\n          if (c === 36/*'$'*/ || c === 64/*'@'*/ || c === 91/*'['*/ || c === 92/*'\\\\'*/\n              || c === 93/*']'*/ || c === 123/*'{'*/ || c === 125/*'}'*/) {\n            output = output.write(92/*'\\\\'*/);\n            escape = c;\n            step = 2;\n          } else if (c === 8/*'\\b'*/) {\n            output = output.write(92/*'\\\\'*/);\n            escape = 98/*'b'*/;\n            step = 2;\n          } else if (c === 12/*'\\f'*/) {\n            output = output.write(92/*'\\\\'*/);\n            escape = 102/*'f'*/;\n            step = 2;\n          } else if (c === 10/*'\\n'*/) {\n            output = output.write(92/*'\\\\'*/);\n            escape = 110/*'n'*/;\n            step = 2;\n          } else if (c === 13/*'\\r'*/) {\n            output = output.write(92/*'\\\\'*/);\n            escape = 114/*'r'*/;\n            step = 2;\n          } else if (c === 9/*'\\t'*/) {\n            output = output.write(92/*'\\\\'*/);\n            escape = 116/*'t'*/;\n            step = 2;\n          } else if (c < 0x20) {\n            output = output.write(92/*'\\\\'*/);\n            escape = c;\n            step = 3;\n          } else {\n            output = output.write(c);\n          }\n        } else {\n          return Writer.end();\n        }\n      } else if (step === 2) {\n        output = output.write(escape);\n        escape = 0;\n        step = 1;\n      } else if (step === 3) {\n        output = output.write(117/*'u'*/);\n        step = 4;\n      } else if (step === 4) {\n        output = output.write(Base16.uppercase.encodeDigit((escape >>> 12) & 0xf));\n        step = 5;\n      } else if (step === 5) {\n        output = output.write(Base16.uppercase.encodeDigit((escape >>> 8) & 0xf));\n        step = 6;\n      } else if (step === 6) {\n        output = output.write(Base16.uppercase.encodeDigit((escape >>> 4) & 0xf));\n        step = 7;\n      } else if (step === 7) {\n        output = output.write(Base16.uppercase.encodeDigit(escape & 0xf));\n        escape = 0;\n        step = 1;\n      }\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new MarkupTextWriter(text, index, escape, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport {Base64} from \"@swim/codec\";\n\n/** @internal */\nexport class DataWriter extends Writer {\n  private readonly array: Uint8Array;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(array: Uint8Array, part?: Writer, step?: number) {\n    super();\n    this.array = array;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return DataWriter.write(output, this.array, this.part, this.step);\n  }\n\n  static sizeOf(length: number): number {\n    return 1 + ((Math.floor(length * 4 / 3) + 3) & ~3);\n  }\n\n  static write(output: Output, array: Uint8Array, part?: Writer,\n               step: number = 1): Writer {\n    if (step === 1 && output.isCont()) {\n      output = output.write(37/*'%'*/);\n      step = 2;\n    }\n    if (step === 2) {\n      if (part === void 0) {\n        part = Base64.standard().writeUint8Array(output, array);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        return Writer.end();\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new DataWriter(array, part, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Strings} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport {Utf8} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\n\n/** @internal */\nexport class IdentWriter extends Writer {\n  private readonly ident: string;\n  private readonly index: number | undefined;\n\n  constructor(ident: string, index?: number) {\n    super();\n    this.ident = ident;\n    this.index = index;\n  }\n\n  override pull(output: Output): Writer {\n    return IdentWriter.write(output, this.ident, this.index);\n  }\n\n  static sizeOf(ident: string): number {\n    return Utf8.sizeOf(ident);\n  }\n\n  static write(output: Output, ident: string, index: number = 0): Writer {\n    let c: number | undefined;\n    const length = ident.length;\n    if (length === 0) {\n      return Writer.error(new WriterException(\"empty identifier\"));\n    }\n    if (index === 0 && output.isCont()) {\n      c = ident.codePointAt(0);\n      if (c === void 0) {\n        c = ident.charCodeAt(0);\n      }\n      if (Recon.isIdentStartChar(c)) {\n        output = output.write(c);\n        index = Strings.offsetByCodePoints(ident, 0, 1);\n      }\n    }\n    while (index < length && output.isCont()) {\n      c = ident.codePointAt(index);\n      if (c === void 0) {\n        c = ident.charCodeAt(index);\n      }\n      if (Recon.isIdentChar(c)) {\n        output = output.write(c);\n        index = Strings.offsetByCodePoints(ident, index, 1);\n      } else {\n        return Writer.error(new WriterException(\"invalid identifier\"));\n      }\n    }\n    if (index >= length) {\n      return Writer.end();\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new IdentWriter(ident, index);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Strings} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport {Utf8} from \"@swim/codec\";\nimport {Base16} from \"@swim/codec\";\n\n/** @internal */\nexport class StringWriter extends Writer {\n  private readonly string: string;\n  private readonly index: number | undefined;\n  private readonly escape: number | undefined;\n  private readonly step: number | undefined;\n\n  constructor(string: string, index?: number, escape?: number, step?: number) {\n    super();\n    this.string = string;\n    this.index = index;\n    this.escape = escape;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return StringWriter.write(output, this.string, this.index, this.escape, this.step);\n  }\n\n  static sizeOf(string: string): number {\n    let size = 0;\n    size += 1; // '\"';\n    for (let i = 0; i < string.length; i = Strings.offsetByCodePoints(string, i, 1)) {\n      let c = string.codePointAt(i);\n      if (c === void 0) {\n        c = string.charCodeAt(i);\n      }\n      if (c === 34/*'\"'*/ || c === 92/*'\\\\'*/ || c === 8/*'\\b'*/ || c === 12/*'\\f'*/\n          || c === 10/*'\\n'*/ || c === 13/*'\\r'*/ || c === 9/*'\\t'*/) {\n        size += 2;\n      } else if (c < 0x20) {\n        size += 6;\n      } else {\n        size += Utf8.sizeOf(c);\n      }\n    }\n    size += 1; // '\"';\n    return size;\n  }\n\n  static write(output: Output, string: string, index: number = 0, escape: number = 0,\n               step: number = 1): Writer {\n    if (step === 1 && output.isCont()) {\n      output = output.write(34/*'\"'*/);\n      step = 2;\n    }\n    const length = string.length;\n    while (step >= 2 && step <= 8 && output.isCont()) {\n      if (step === 2) {\n        if (index < length) {\n          let c = string.codePointAt(index);\n          if (c === void 0) {\n            c = string.charCodeAt(index);\n          }\n          index = Strings.offsetByCodePoints(string, index, 1);\n          if (c === 34/*'\"'*/ || c === 92/*'\\\\'*/) {\n            output = output.write(92/*'\\\\'*/);\n            escape = c;\n            step = 3;\n          } else if (c === 8/*'\\b'*/) {\n            output = output.write(92/*'\\\\'*/);\n            escape = 98/*'b'*/;\n            step = 3;\n          } else if (c === 12/*'\\f'*/) {\n            output = output.write(92/*'\\\\'*/);\n            escape = 102/*'f'*/;\n            step = 3;\n          } else if (c === 10/*'\\n'*/) {\n            output = output.write(92/*'\\\\'*/);\n            escape = 110/*'n'*/;\n            step = 3;\n          } else if (c === 13/*'\\r'*/) {\n            output = output.write(92/*'\\\\'*/);\n            escape = 114/*'r'*/;\n            step = 3;\n          } else if (c === 9/*'\\t'*/) {\n            output = output.write(92/*'\\\\'*/);\n            escape = 116/*'t'*/;\n            step = 3;\n          } else if (c < 0x20) {\n            output = output.write('\\\\');\n            escape = c;\n            step = 4;\n          } else {\n            output = output.write(c);\n          }\n        } else {\n          step = 9;\n          break;\n        }\n      } else if (step === 3) {\n        output = output.write(escape);\n        escape = 0;\n        step = 2;\n      } else if (step === 4) {\n        output = output.write(117/*'u'*/);\n        step = 5;\n      } else if (step === 5) {\n        output = output.write(Base16.uppercase.encodeDigit((escape >>> 12) & 0xf));\n        step = 6;\n      } else if (step === 6) {\n        output = output.write(Base16.uppercase.encodeDigit((escape >>> 8) & 0xf));\n        step = 7;\n      } else if (step === 7) {\n        output = output.write(Base16.uppercase.encodeDigit((escape >>> 4) & 0xf));\n        step = 8;\n      } else if (step === 8) {\n        output = output.write(Base16.uppercase.encodeDigit(escape & 0xf));\n        escape = 0;\n        step = 2;\n      }\n    }\n    if (step === 9 && output.isCont()) {\n      output = output.write(34/*'\"'*/);\n      return Writer.end();\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new StringWriter(string, index, escape, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class LambdaFuncWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly bindings: V;\n  private readonly template: V;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, bindings: V, template: V,\n              part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.bindings = bindings;\n    this.template = template;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return LambdaFuncWriter.write(output, this.recon, this.bindings, this.template,\n                                  this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, bindings: V, template: V): number {\n    let size = 0;\n    size += recon.sizeOfPrimary(bindings);\n    size += 4; // \" => \"\n    size += recon.sizeOfValue(template);\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, bindings: V, template: V,\n                     part?: Writer, step: number = 1): Writer {\n    if (step === 1) {\n      if (part === void 0) {\n        part = recon.writePrimary(output, bindings);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 2;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 2 && output.isCont()) {\n      output = output.write(32/*' '*/);\n      step = 3;\n    }\n    if (step === 3 && output.isCont()) {\n      output = output.write(61/*'='*/);\n      step = 4;\n    }\n    if (step === 4 && output.isCont()) {\n      output = output.write(62/*'>'*/);\n      step = 5;\n    }\n    if (step === 5 && output.isCont()) {\n      output = output.write(32/*' '*/);\n      step = 6;\n    }\n    if (step === 6) {\n      if (part === void 0) {\n        part = recon.writeValue(output, template);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        return Writer.end();\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new LambdaFuncWriter<I, V>(recon, bindings, template, part, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class ConditionalOperatorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly ifTerm: I;\n  private readonly thenTerm: I;\n  private readonly elseTerm: I;\n  private readonly precedence: number;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, ifTerm: I, thenTerm: I, elseTerm: I,\n              precedence: number, part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.ifTerm = ifTerm;\n    this.thenTerm = thenTerm;\n    this.elseTerm = elseTerm;\n    this.precedence = precedence;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return ConditionalOperatorWriter.write(output, this.recon, this.ifTerm, this.thenTerm,\n                                           this.elseTerm, this.precedence, this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, ifTerm: I, thenTerm: I,\n                      elseTerm: I, precedence: number): number {\n    let size = 0;\n    if (recon.precedence(ifTerm) > 0 && recon.precedence(ifTerm) <= precedence) {\n      size += 1; // '('\n      size += recon.sizeOfItem(ifTerm);\n      size += 1; // ')'\n    } else {\n      size += recon.sizeOfItem(ifTerm);\n    }\n    size += 3; // \" ? \"\n    size += recon.sizeOfItem(thenTerm);\n    size += 3; // \" : \"\n    size += recon.sizeOfItem(elseTerm);\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, ifTerm: I, thenTerm: I, elseTerm: I,\n                     precedence: number, part?: Writer, step: number = 1): Writer {\n    if (step === 1) {\n      if (recon.precedence(ifTerm) > 0 && recon.precedence(ifTerm) <= precedence) {\n        if (output.isCont()) {\n          output = output.write(40/*'('*/);\n          step = 2;\n        }\n      } else {\n        step = 2;\n      }\n    }\n    if (step === 2) {\n      if (part === void 0) {\n        part = recon.writeItem(output, ifTerm);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 3;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 3) {\n      if (recon.precedence(ifTerm) > 0 && recon.precedence(ifTerm) <= precedence) {\n        if (output.isCont()) {\n          output = output.write(41/*')'*/);\n          step = 4;\n        }\n      } else {\n        step = 4;\n      }\n    }\n    if (step === 4 && output.isCont()) {\n      output = output.write(32/*' '*/);\n      step = 5;\n    }\n    if (step === 5 && output.isCont()) {\n      output = output.write(63/*'?'*/);\n      step = 6;\n    }\n    if (step === 6 && output.isCont()) {\n      output = output.write(32/*' '*/);\n      step = 7;\n    }\n    if (step === 7) {\n      if (part === void 0) {\n        part = recon.writeItem(output, thenTerm);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 8;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 8 && output.isCont()) {\n      output = output.write(32/*' '*/);\n      step = 9;\n    }\n    if (step === 9 && output.isCont()) {\n      output = output.write(58/*':'*/);\n      step = 10;\n    }\n    if (step === 10 && output.isCont()) {\n      output = output.write(32/*' '*/);\n      step = 11;\n    }\n    if (step === 11) {\n      if (part === void 0) {\n        part = recon.writeItem(output, elseTerm);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        return Writer.end();\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new ConditionalOperatorWriter<I, V>(recon, ifTerm, thenTerm, elseTerm,\n                                               precedence, part, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport {Unicode} from \"@swim/codec\";\nimport {Utf8} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class InfixOperatorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly lhs: I;\n  private readonly operator: string;\n  private readonly rhs: I;\n  private readonly precedence: number;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, lhs: I, operator: string, rhs: I,\n              precedence: number, part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.lhs = lhs;\n    this.operator = operator;\n    this.rhs = rhs;\n    this.precedence = precedence;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return InfixOperatorWriter.write(output, this.recon, this.lhs, this.operator, this.rhs,\n                                     this.precedence, this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, lhs: I, operator: string, rhs: I, precedence: number): number {\n    let size = 0;\n    if (recon.precedence(lhs) < precedence) {\n      size += 1; // '('\n      size += recon.sizeOfItem(lhs);\n      size += 1; // ')'\n    } else {\n      size += recon.sizeOfItem(lhs);\n    }\n    size += 1; // ' '\n    size += Utf8.sizeOf(operator);\n    size += 1; // ' '\n    if (recon.precedence(rhs) < precedence) {\n      size += 1; // '('\n      size += recon.sizeOfItem(rhs);\n      size += 1; // ')'\n    } else {\n      size += recon.sizeOfItem(rhs);\n    }\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, lhs: I, operator: string, rhs: I,\n                     precedence: number, part?: Writer, step: number = 1): Writer {\n    if (step === 1) {\n      if (recon.precedence(lhs) < precedence) {\n        if (output.isCont()) {\n          output = output.write(40/*'('*/);\n          step = 2;\n        }\n      } else {\n        step = 2;\n      }\n    }\n    if (step === 2) {\n      if (part === void 0) {\n        part = recon.writeItem(output, lhs);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 3;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 3) {\n      if (recon.precedence(lhs) < precedence) {\n        if (output.isCont()) {\n          output = output.write(41/*')'*/);\n          step = 4;\n        }\n      } else {\n        step = 4;\n      }\n    }\n    if (step === 4 && output.isCont()) {\n      output = output.write(32/*' '*/);\n      step = 5;\n    }\n    if (step === 5) {\n      if (part === void 0) {\n        part = Unicode.writeString(output, operator);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 6;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 6 && output.isCont()) {\n      output = output.write(32/*' '*/);\n      step = 7;\n    }\n    if (step === 7) {\n      if (recon.precedence(rhs) < precedence) {\n        if (output.isCont()) {\n          output = output.write(40/*'('*/);\n          step = 8;\n        }\n      } else {\n        step = 8;\n      }\n    }\n    if (step === 8) {\n      if (part === void 0) {\n        part = recon.writeItem(output, rhs);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 9;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 9) {\n      if (recon.precedence(rhs) < precedence) {\n        if (output.isCont()) {\n          output = output.write(41/*')'*/);\n          return Writer.end();\n        }\n      } else {\n        return Writer.end();\n      }\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new InfixOperatorWriter<I, V>(recon, lhs, operator, rhs, precedence, part, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport {Unicode} from \"@swim/codec\";\nimport {Utf8} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class PrefixOperatorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly operator: string;\n  private readonly rhs: I;\n  private readonly precedence: number;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, operator: string, rhs: I,\n              precedence: number, part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.operator = operator;\n    this.rhs = rhs;\n    this.precedence = precedence;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return PrefixOperatorWriter.write(output, this.recon, this.operator, this.rhs,\n                                      this.precedence, this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, operator: string, rhs: I, precedence: number): number {\n    let size = 0;\n    size += Utf8.sizeOf(operator);\n    if (recon.precedence(rhs) < precedence) {\n      size += 1; // '('\n      size += recon.sizeOfItem(rhs);\n      size += 1; // ')'\n    } else {\n      size += recon.sizeOfItem(rhs);\n    }\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, operator: string, rhs: I,\n                     precedence: number, part?: Writer, step: number = 1): Writer {\n    if (step === 1) {\n      if (part === void 0) {\n        part = Unicode.writeString(output, operator);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 2;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 2) {\n      if (recon.precedence(rhs) < precedence) {\n        if (output.isCont()) {\n          output = output.write(40/*'('*/);\n          step = 3;\n        }\n      } else {\n        step = 3;\n      }\n    }\n    if (step === 3) {\n      if (part === void 0) {\n        part = recon.writeItem(output, rhs);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 4;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 4) {\n      if (recon.precedence(rhs) < precedence) {\n        if (output.isCont()) {\n          output = output.write(41/*')'*/);\n          return Writer.end();\n        }\n      } else {\n        return Writer.end();\n      }\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new PrefixOperatorWriter<I, V>(recon, operator, rhs, precedence, part, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class InvokeOperatorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly func: V;\n  private readonly args: V;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, func: V, args: V, part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.func = func;\n    this.args = args;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return InvokeOperatorWriter.write(output, this.recon, this.func, this.args,\n                                      this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, func: V, args: V): number {\n    let size = 0;\n    size += recon.sizeOfValue(func);\n    size += 1; // '('\n    size += recon.sizeOfBlockValue(args);\n    size += 1; // ')'\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, func: V, args: V,\n                     part?: Writer, step: number = 1): Writer {\n    if (step === 1) {\n      if (part === void 0) {\n        part = recon.writeValue(output, func);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 2;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 2 && output.isCont()) {\n      output = output.write(40/*'('*/);\n      step = 3;\n    }\n    if (step === 3) {\n      if (part === void 0) {\n        part = recon.writeBlockValue(output, args);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 4;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 4 && output.isCont()) {\n      output = output.write(41/*')'*/);\n      return Writer.end();\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new InvokeOperatorWriter<I, V>(recon, func, args, part, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class LiteralSelectorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly item: I;\n  private readonly then: V;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, item: I, then: V, part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.item = item;\n    this.then = then;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return LiteralSelectorWriter.write(output, this.recon, this.item, this.then,\n                                       this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, item: I, then: V): number {\n    let size = 0;\n    if (recon.precedence(item) < recon.precedence(recon.item(then))) {\n      size += 1; // '('\n      size += recon.sizeOfItem(item);\n      size += 1; // ')'\n    } else {\n      size += recon.sizeOfItem(item);\n    }\n    size += recon.sizeOfThen(then);\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, item: I, then: V,\n                     part?: Writer, step: number = 1): Writer {\n    if (step === 1) {\n      if (recon.precedence(item) < recon.precedence(recon.item(then))) {\n        if (output.isCont()) {\n          output = output.write(40/*'('*/);\n          step = 2;\n        }\n      } else {\n        step = 2;\n      }\n    }\n    if (step === 2) {\n      if (part === void 0) {\n        part = recon.writeItem(output, item);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 3;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 3) {\n      if (recon.precedence(item) < recon.precedence(recon.item(then))) {\n        if (output.isCont()) {\n          output = output.write(41/*')'*/);\n          step = 4;\n        }\n      } else {\n        step = 4;\n      }\n    }\n    if (step === 4) {\n      return recon.writeThen(output, then);\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new LiteralSelectorWriter<I, V>(recon, item, then, part, step);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class GetSelectorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly key: V;\n  private readonly then: V;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, key: V, then: V, part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.key = key;\n    this.then = then;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return GetSelectorWriter.write(output, this.recon, this.key, this.then, this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, key: V, then: V): number {\n    let size = 1; // '$' | '.'\n    if (recon.isRecord(recon.item(key))) {\n      size += 1; // '{'\n      size += recon.sizeOfBlockValue(key);\n      size += 1; // '}'\n    } else {\n      size += recon.sizeOfValue(key);\n    }\n    size += recon.sizeOfThen(then);\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, key: V, then: V,\n                     part?: Writer, step: number = 1): Writer {\n    if (step === 1 && output.isCont()) {\n      output = output.write(36/*'$'*/);\n      step = 3;\n    } else if (step === 2 && output.isCont()) {\n      output = output.write(46/*'.'*/);\n      step = 3;\n    }\n    if (step === 3) {\n      if (recon.isRecord(recon.item(key))) {\n        if (output.isCont()) {\n          output = output.write(123/*'{'*/);\n          step = 4;\n        }\n      } else {\n        step = 4;\n      }\n    }\n    if (step === 4) {\n      if (part === void 0) {\n        if (recon.isRecord(recon.item(key))) {\n          part = recon.writeBlockValue(output, key);\n        } else {\n          part = recon.writeValue(output, key);\n        }\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 5;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 5) {\n      if (recon.isRecord(recon.item(key))) {\n        if (output.isCont()) {\n          output = output.write(125/*'}'*/);\n          step = 6;\n        }\n      } else {\n        step = 6;\n      }\n    }\n    if (step === 6) {\n      return recon.writeThen(output, then);\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new GetSelectorWriter<I, V>(recon, key, then, part, step);\n  }\n\n  static writeThen<I, V>(output: Output, recon: ReconWriter<I, V>, key: V, then: V): Writer {\n    return GetSelectorWriter.write(output, recon, key, then, void 0, 2);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class GetAttrSelectorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly key: V;\n  private readonly then: V;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, key: V, then: V, part?: Writer, step?: number) {\n    super();\n    this.recon  = recon;\n    this.key = key;\n    this.then = then;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return GetAttrSelectorWriter.write(output, this.recon, this.key, this.then,\n                                       this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, key: V, then: V): number {\n    let size = 2; // ('$' | '.') '@'\n    size += recon.sizeOfValue(key);\n    size += recon.sizeOfThen(then);\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, key: V, then: V,\n                     part?: Writer, step: number = 1): Writer {\n    if (step === 1 && output.isCont()) {\n      output = output.write(36/*'$'*/);\n      step = 3;\n    } else if (step === 2 && output.isCont()) {\n      output = output.write(46/*'.'*/);\n      step = 3;\n    }\n    if (step === 3 && output.isCont()) {\n      output = output.write(64/*'@'*/);\n      step = 4;\n    }\n    if (step === 4) {\n      if (part === void 0) {\n        part = recon.writeValue(output, key);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        return recon.writeThen(output, then);\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new GetAttrSelectorWriter<I, V>(recon, key, then, part, step);\n  }\n\n  static writeThen<I, V>(output: Output, recon: ReconWriter<I, V>, key: V, then: V): Writer {\n    return GetAttrSelectorWriter.write(output, recon, key, then, void 0, 2);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class GetItemSelectorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly index: V;\n  private readonly then: V;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, index: V, then: V, part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.index = index;\n    this.then = then;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return GetItemSelectorWriter.write(output, this.recon, this.index, this.then,\n                                       this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, index: V, then: V): number {\n    let size = 2; // \"$#\"\n    size += recon.sizeOfValue(index);\n    size += recon.sizeOfThen(then);\n    return size;\n  }\n\n  static sizeOfThen<I, V>(recon: ReconWriter<I, V>, index: V, then: V): number {\n    let size = 1; // '#'\n    size += recon.sizeOfValue(index);\n    size += recon.sizeOfThen(then);\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, index: V, then: V,\n                     part?: Writer, step: number = 1): Writer {\n    if (step === 1 && output.isCont()) {\n      output = output.write(36/*'$'*/);\n      step = 2;\n    }\n    if (step === 2 && output.isCont()) {\n      output = output.write(35/*'#'*/);\n      step = 3;\n    }\n    if (step === 3) {\n      if (part === void 0) {\n        part = recon.writeValue(output, index);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        return recon.writeThen(output, then);\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new GetItemSelectorWriter<I, V>(recon, index, then, part, step);\n  }\n\n  static writeThen<I, V>(output: Output, recon: ReconWriter<I, V>, index: V, then: V): Writer {\n    return GetItemSelectorWriter.write(output, recon, index, then, void 0, 2);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class KeysSelectorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly then: V;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, then: V, step?: number) {\n    super();\n    this.recon = recon;\n    this.then = then;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return KeysSelectorWriter.write(output, this.recon, this.then, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, then: V): number {\n    let size = 3; // ('$' | '.') '*' ':'\n    size += recon.sizeOfThen(then);\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, then: V,\n                     step: number = 1): Writer {\n    if (step === 1 && output.isCont()) {\n      output = output.write(36/*'$'*/);\n      step = 3;\n    } else if (step === 2 && output.isCont()) {\n      output = output.write(46/*'.'*/);\n      step = 3;\n    }\n    if (step === 3 && output.isCont()) {\n      output = output.write(42/*'*'*/);\n      step = 4;\n    }\n    if (step === 4 && output.isCont()) {\n      output = output.write(58/*':'*/);\n      return recon.writeThen(output, then);\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new KeysSelectorWriter<I, V>(recon, then, step);\n  }\n\n  static writeThen<I, V>(output: Output, recon: ReconWriter<I, V>, then: V): Writer {\n    return KeysSelectorWriter.write(output, recon, then, 2);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class ValuesSelectorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly then: V;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, then: V, step?: number) {\n    super();\n    this.recon = recon;\n    this.then = then;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return ValuesSelectorWriter.write(output, this.recon, this.then, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, then: V): number {\n    let size = 3; // ('$' | '.') ':' '*'\n    size += recon.sizeOfThen(then);\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, then: V,\n                     step: number = 1): Writer {\n    if (step === 1 && output.isCont()) {\n      output = output.write(36/*'$'*/);\n      step = 3;\n    } else if (step === 2 && output.isCont()) {\n      output = output.write(46/*'.'*/);\n      step = 3;\n    }\n    if (step === 3 && output.isCont()) {\n      output = output.write(58/*':'*/);\n      step = 4;\n    }\n    if (step === 4 && output.isCont()) {\n      output = output.write(42/*'*'*/);\n      return recon.writeThen(output, then);\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new ValuesSelectorWriter<I, V>(recon, then, step);\n  }\n\n  static writeThen<I, V>(output: Output, recon: ReconWriter<I, V>, then: V): Writer {\n    return ValuesSelectorWriter.write(output, recon, then, 2);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class ChildrenSelectorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly then: V;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, then: V, step?: number) {\n    super();\n    this.recon = recon;\n    this.then = then;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return ChildrenSelectorWriter.write(output, this.recon, this.then, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, then: V): number {\n    let size = 2; // ('$' | '.') '*'\n    size += recon.sizeOfThen(then);\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, then: V,\n                     step: number = 1): Writer {\n    if (step === 1 && output.isCont()) {\n      output = output.write(36/*'$'*/);\n      step = 3;\n    } else if (step === 2 && output.isCont()) {\n      output = output.write(46/*'.'*/);\n      step = 3;\n    }\n    if (step === 3 && output.isCont()) {\n      output = output.write(42/*'*'*/);\n      return recon.writeThen(output, then);\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new ChildrenSelectorWriter<I, V>(recon, then, step);\n  }\n\n  static writeThen<I, V>(output: Output, recon: ReconWriter<I, V>, then: V): Writer {\n    return ChildrenSelectorWriter.write(output, recon, then, 2);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class DescendantsSelectorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly then: V;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, then: V, step?: number) {\n    super();\n    this.recon = recon;\n    this.then = then;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return DescendantsSelectorWriter.write(output, this.recon, this.then, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, then: V): number {\n    let size = 3; // ('$' | '.') '*' '*'\n    size += recon.sizeOfThen(then);\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, then: V,\n                     step: number = 1): Writer {\n    if (step === 1 && output.isCont()) {\n      output = output.write(36/*'$'*/);\n      step = 3;\n    } else if (step === 2 && output.isCont()) {\n      output = output.write(46/*'.'*/);\n      step = 3;\n    }\n    if (step === 3 && output.isCont()) {\n      output = output.write(42/*'*'*/);\n      step = 4;\n    }\n    if (step === 4 && output.isCont()) {\n      output = output.write(42/*'*'*/);\n      return recon.writeThen(output, then);\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new DescendantsSelectorWriter<I, V>(recon, then, step);\n  }\n\n  static writeThen<I, V>(output: Output, recon: ReconWriter<I, V>, then: V): Writer {\n    return DescendantsSelectorWriter.write(output, recon, then, 2);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {ReconWriter} from \"./ReconWriter\";\n\n/** @internal */\nexport class FilterSelectorWriter<I, V> extends Writer {\n  private readonly recon: ReconWriter<I, V>;\n  private readonly predicate: V;\n  private readonly then: V;\n  private readonly part: Writer | undefined;\n  private readonly step: number | undefined;\n\n  constructor(recon: ReconWriter<I, V>, predicate: V, then: V,\n              part?: Writer, step?: number) {\n    super();\n    this.recon = recon;\n    this.predicate = predicate;\n    this.then = then;\n    this.part = part;\n    this.step = step;\n  }\n\n  override pull(output: Output): Writer {\n    return FilterSelectorWriter.write(output, this.recon, this.predicate,\n                                      this.then, this.part, this.step);\n  }\n\n  static sizeOf<I, V>(recon: ReconWriter<I, V>, predicate: V, then: V): number {\n    let size = 2; // '$' '['\n    size += recon.sizeOfValue(predicate);\n    size += 1; // ']'\n    size += recon.sizeOfThen(then);\n    return size;\n  }\n\n  static sizeOfThen<I, V>(recon: ReconWriter<I, V>, predicate: V, then: V): number {\n    let size = 1; // '['\n    size += recon.sizeOfValue(predicate);\n    size += 1; // ']'\n    size += recon.sizeOfThen(then);\n    return size;\n  }\n\n  static write<I, V>(output: Output, recon: ReconWriter<I, V>, predicate: V, then: V,\n                     part?: Writer, step: number = 1): Writer {\n    if (step === 1 && output.isCont()) {\n      output = output.write(36/*'$'*/);\n      step = 2;\n    }\n    if (step === 2 && output.isCont()) {\n      output = output.write(91/*'['*/);\n      step = 3;\n    }\n    if (step === 3) {\n      if (part === void 0) {\n        part = recon.writeValue(output, predicate);\n      } else {\n        part = part.pull(output);\n      }\n      if (part.isDone()) {\n        part = void 0;\n        step = 4;\n      } else if (part.isError()) {\n        return part.asError();\n      }\n    }\n    if (step === 4 && output.isCont()) {\n      output = output.write(93/*']'*/);\n      return recon.writeThen(output, then);\n    }\n    if (output.isDone()) {\n      return Writer.error(new WriterException(\"truncated\"));\n    } else if (output.isError()) {\n      return Writer.error(output.trap());\n    }\n    return new FilterSelectorWriter<I, V>(recon, predicate, then, part, step);\n  }\n\n  static writeThen<I, V>(output: Output, recon: ReconWriter<I, V>,\n                         predicate: V, then: V): Writer {\n    return FilterSelectorWriter.write(output, recon, predicate, then, void 0, 2);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Strings} from \"@swim/util\";\nimport type {Cursor} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport {Unicode} from \"@swim/codec\";\nimport {Base10} from \"@swim/codec\";\nimport {Base16} from \"@swim/codec\";\nimport {Recon} from \"../Recon\";\nimport {AttrWriter} from \"./AttrWriter\";\nimport {SlotWriter} from \"./SlotWriter\";\nimport {BlockWriter} from \"./BlockWriter\";\nimport {PrimaryWriter} from \"./PrimaryWriter\";\nimport {MarkupTextWriter} from \"./MarkupTextWriter\";\nimport {DataWriter} from \"./DataWriter\";\nimport {IdentWriter} from \"./IdentWriter\";\nimport {StringWriter} from \"./StringWriter\";\nimport {LambdaFuncWriter} from \"./LambdaFuncWriter\";\nimport {ConditionalOperatorWriter} from \"./ConditionalOperatorWriter\";\nimport {InfixOperatorWriter} from \"./InfixOperatorWriter\";\nimport {PrefixOperatorWriter} from \"./PrefixOperatorWriter\";\nimport {InvokeOperatorWriter} from \"./InvokeOperatorWriter\";\nimport {LiteralSelectorWriter} from \"./LiteralSelectorWriter\";\nimport {GetSelectorWriter} from \"./GetSelectorWriter\";\nimport {GetAttrSelectorWriter} from \"./GetAttrSelectorWriter\";\nimport {GetItemSelectorWriter} from \"./GetItemSelectorWriter\";\nimport {KeysSelectorWriter} from \"./KeysSelectorWriter\";\nimport {ValuesSelectorWriter} from \"./ValuesSelectorWriter\";\nimport {ChildrenSelectorWriter} from \"./ChildrenSelectorWriter\";\nimport {DescendantsSelectorWriter} from \"./DescendantsSelectorWriter\";\nimport {FilterSelectorWriter} from \"./FilterSelectorWriter\";\n\n/**\n * Factory for constructing Recon writers.\n * @public\n */\nexport abstract class ReconWriter<I, V> {\n  abstract isField(item: I): boolean;\n\n  abstract isAttr(item: I): boolean;\n\n  abstract isSlot(item: I): boolean;\n\n  abstract isValue(item: I): boolean;\n\n  abstract isRecord(item: I): boolean;\n\n  abstract isText(item: I): boolean;\n\n  abstract isNum(item: I): boolean;\n\n  abstract isBool(item: I): boolean;\n\n  abstract isExpression(item: I): boolean;\n\n  abstract isExtant(item: I): boolean;\n\n  abstract items(item: I): Cursor<I>;\n\n  abstract item(value: V): I;\n\n  abstract key(item: I): V;\n\n  abstract value(item: I): V;\n\n  abstract string(item: I): string;\n\n  abstract precedence(item: I): number;\n\n  abstract sizeOfItem(item: I): number;\n\n  abstract writeItem(output: Output, item: I): Writer;\n\n  abstract sizeOfValue(value: V): number;\n\n  abstract writeValue(output: Output, value: V): Writer;\n\n  abstract sizeOfBlockValue(value: V): number;\n\n  abstract writeBlockValue(output: Output, value: V): Writer;\n\n  sizeOfAttr(key: V, value: V): number {\n    return AttrWriter.sizeOf(this, key, value);\n  }\n\n  writeAttr(output: Output, key: V, value: V): Writer {\n    return AttrWriter.write(output, this, key, value);\n  }\n\n  sizeOfSlot(key: V, value: V): number {\n    return SlotWriter.sizeOf(this, key, value);\n  }\n\n  writeSlot(output: Output, key: V, value: V): Writer {\n    return SlotWriter.write(output, this, key, value);\n  }\n\n  abstract sizeOfBlockItem(item: I): number;\n\n  abstract writeBlockItem(output: Output, item: I): Writer;\n\n  sizeOfBlock(item: I): number;\n  sizeOfBlock(items: Cursor<I>, inBlock: boolean, inMarkup: boolean): number;\n  sizeOfBlock(item: I | Cursor<I>, inBlock?: boolean, inMarkup?: boolean): number {\n    if (arguments.length === 3) {\n      return BlockWriter.sizeOf(this, item as Cursor<I>, inBlock!, inMarkup!);\n    } else {\n      const items = this.items(item as I);\n      if (items.hasNext()) {\n        return BlockWriter.sizeOf(this, items, this.isBlockSafe(this.items(item as I)), false);\n      } else {\n        return 2; // \"{}\"\n      }\n    }\n  }\n\n  writeBlock(output: Output, item: I): Writer;\n  writeBlock(output: Output, items: Cursor<I>, inBlock: boolean, inMarkup: boolean): Writer;\n  writeBlock(output: Output, item: I | Cursor<I>, inBlock?: boolean, inMarkup?: boolean): Writer {\n    if (arguments.length === 4) {\n      return BlockWriter.write(output, this, item as Cursor<I>, inBlock!, inMarkup!);\n    } else {\n      const items = this.items(item as I);\n      if (items.hasNext()) {\n        return BlockWriter.write(output, this, items, this.isBlockSafe(this.items(item as I)), false);\n      } else {\n        return Unicode.writeString(output, \"{}\");\n      }\n    }\n  }\n\n  sizeOfRecord(item: I): number {\n    const items = this.items(item);\n    if (items.hasNext()) {\n      return BlockWriter.sizeOf(this, items, false, false);\n    } else {\n      return 2; // \"{}\"\n    }\n  }\n\n  writeRecord(output: Output, item: I): Writer {\n    const items = this.items(item);\n    if (items.hasNext()) {\n      return BlockWriter.write(output, this, items, false, false);\n    } else {\n      return Unicode.writeString(output, \"{}\");\n    }\n  }\n\n  sizeOfPrimary(value: V): number {\n    if (this.isRecord(this.item(value))) {\n      const items = this.items(this.item(value));\n      if (items.hasNext()) {\n        return PrimaryWriter.sizeOf(this, items);\n      }\n    } else if (!this.isExtant(this.item(value))) {\n      return this.sizeOfValue(value);\n    }\n    return 2; // \"()\"\n  }\n\n  writePrimary(output: Output, value: V): Writer {\n    if (this.isRecord(this.item(value))) {\n      const items = this.items(this.item(value));\n      if (items.hasNext()) {\n        return PrimaryWriter.write(output, this, items);\n      }\n    } else if (!this.isExtant(this.item(value))) {\n      return this.writeValue(output, value);\n    }\n    return Unicode.writeString(output, \"()\");\n  }\n\n  isBlockSafe(items: Cursor<I>): boolean {\n    while (items.hasNext()) {\n      if (this.isAttr(items.next().value!)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  isMarkupSafe(items: Cursor<I>): boolean {\n    if (!items.hasNext() || !this.isAttr(items.next().value!)) {\n      return false;\n    }\n    while (items.hasNext()) {\n      if (this.isAttr(items.next().value!)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  sizeOfMarkupText(item: I | string): number {\n    if (typeof item !== \"string\") {\n      item = this.string(item);\n    }\n    return MarkupTextWriter.sizeOf(item);\n  }\n\n  writeMarkupText(output: Output, item: I | string): Writer {\n    if (typeof item !== \"string\") {\n      item = this.string(item);\n    }\n    return MarkupTextWriter.write(output, item);\n  }\n\n  sizeOfData(length: number): number {\n    return DataWriter.sizeOf(length);\n  }\n\n  writeData(output: Output, value: Uint8Array | undefined): Writer {\n    if (value !== void 0) {\n      return DataWriter.write(output, value);\n    } else {\n      return Unicode.writeString(output, \"%\");\n    }\n  }\n\n  isIdent(value: I | string): boolean {\n    if (typeof value !== \"string\") {\n      value = this.string(value);\n    }\n    const n = value.length;\n    let c: number | undefined;\n    if (n === 0 || (c = value.codePointAt(0), c !== void 0 && !Recon.isIdentStartChar(c))) {\n      return false;\n    }\n    for (let i = Strings.offsetByCodePoints(value, 0, 1); i < n; i = Strings.offsetByCodePoints(value, i, 1)) {\n      c = value.codePointAt(i);\n      if (c === void 0 || !Recon.isIdentChar(c)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  sizeOfText(value: string): number {\n    if (this.isIdent(value)) {\n      return IdentWriter.sizeOf(value);\n    } else {\n      return StringWriter.sizeOf(value);\n    }\n  }\n\n  writeText(output: Output, value: string): Writer {\n    if (this.isIdent(value)) {\n      return IdentWriter.write(output, value);\n    } else {\n      return StringWriter.write(output, value);\n    }\n  }\n\n  sizeOfNum(value: number): number {\n    if (isFinite(value) && Math.floor(value) === value && Math.abs(value) < 2147483648) {\n      let size = Base10.countDigits(value);\n      if (value < 0) {\n        size += 1;\n      }\n      return size;\n    } else {\n      return (\"\" + value).length;\n    }\n  }\n\n  writeNum(output: Output, value: number): Writer {\n    if (isFinite(value) && Math.floor(value) === value && Math.abs(value) < 2147483648) {\n      return Base10.writeInteger(output, value);\n    } else {\n      return Unicode.writeString(output, \"\" + value);\n    }\n  }\n\n  sizeOfUint32(value: number): number {\n    return 10;\n  }\n\n  writeUint32(output: Output, value: number): Writer {\n    return Base16.lowercase.writeIntegerLiteral(output, value, 8);\n  }\n\n  sizeOfUint64(value: number): number {\n    return 18;\n  }\n\n  writeUint64(output: Output, value: number): Writer {\n    return Base16.lowercase.writeIntegerLiteral(output, value, 16);\n  }\n\n  sizeOfBool(value: boolean): number {\n    return value ? 4 : 5;\n  }\n\n  writeBool(output: Output, value: boolean): Writer {\n    return Unicode.writeString(output, value ? \"true\" : \"false\");\n  }\n\n  sizeOfLambdaFunc(bindings: V, template: V): number {\n    return LambdaFuncWriter.sizeOf(this, bindings, template);\n  }\n\n  writeLambdaFunc(output: Output, bindings: V, template: V): Writer {\n    return LambdaFuncWriter.write(output, this, bindings, template);\n  }\n\n  sizeOfConditionalOperator(ifTerm: I, thenTerm: I, elseTerm: I, precedence: number): number {\n    return ConditionalOperatorWriter.sizeOf(this, ifTerm, thenTerm, elseTerm, precedence);\n  }\n\n  writeConditionalOperator(output: Output, ifTerm: I, thenTerm: I, elseTerm: I, precedence: number): Writer {\n    return ConditionalOperatorWriter.write(output, this, ifTerm, thenTerm, elseTerm, precedence);\n  }\n\n  sizeOfInfixOperator(lhs: I, operator: string, rhs: I, precedence: number): number {\n    return InfixOperatorWriter.sizeOf(this, lhs, operator, rhs, precedence);\n  }\n\n  writeInfixOperator(output: Output, lhs: I, operator: string, rhs: I, precedence: number): Writer {\n    return InfixOperatorWriter.write(output, this, lhs, operator, rhs, precedence);\n  }\n\n  sizeOfPrefixOperator(operator: string, rhs: I, precedence: number): number {\n    return PrefixOperatorWriter.sizeOf(this, operator, rhs, precedence);\n  }\n\n  writePrefixOperator(output: Output, operator: string, rhs: I, precedence: number): Writer {\n    return PrefixOperatorWriter.write(output, this, operator, rhs, precedence);\n  }\n\n  sizeOfInvokeOperator(func: V, args: V): number {\n    return InvokeOperatorWriter.sizeOf(this, func, args);\n  }\n\n  writeInvokeOperator(output: Output, func: V, args: V): Writer {\n    return InvokeOperatorWriter.write(output, this, func, args);\n  }\n\n  abstract sizeOfThen(then: V): number;\n\n  abstract writeThen(output: Output, then: V): Writer;\n\n  sizeOfIdentitySelector(): number {\n    return 0;\n  }\n\n  writeIdentitySelector(output: Output): Writer {\n    return Writer.end();\n  }\n\n  sizeOfThenIdentitySelector(): number {\n    return 0;\n  }\n\n  writeThenIdentitySelector(output: Output): Writer {\n    return Writer.end();\n  }\n\n  sizeOfLiteralSelector(item: I, then: V): number {\n    return LiteralSelectorWriter.sizeOf(this, item, then);\n  }\n\n  writeLiteralSelector(output: Output, item: I, then: V): Writer {\n    return LiteralSelectorWriter.write(output, this, item, then);\n  }\n\n  sizeOfThenLiteralSelector(item: I, then: V): number {\n    return 0;\n  }\n\n  writeThenLiteralSelector(output: Output, item: I, then: V): Writer {\n    return Writer.end();\n  }\n\n  sizeOfGetSelector(key: V, then: V): number {\n    return GetSelectorWriter.sizeOf(this, key, then);\n  }\n\n  writeGetSelector(output: Output, key: V, then: V): Writer {\n    return GetSelectorWriter.write(output, this, key, then);\n  }\n\n  sizeOfThenGetSelector(key: V, then: V): number {\n    return GetSelectorWriter.sizeOf(this, key, then);\n  }\n\n  writeThenGetSelector(output: Output, key: V, then: V): Writer {\n    return GetSelectorWriter.writeThen(output, this, key, then);\n  }\n\n  sizeOfGetAttrSelector(key: V, then: V): number {\n    return GetAttrSelectorWriter.sizeOf(this, key, then);\n  }\n\n  writeGetAttrSelector(output: Output, key: V, then: V): Writer {\n    return GetAttrSelectorWriter.write(output, this, key, then);\n  }\n\n  sizeOfThenGetAttrSelector(key: V, then: V): number {\n    return GetAttrSelectorWriter.sizeOf(this, key, then);\n  }\n\n  writeThenGetAttrSelector(output: Output, key: V, then: V): Writer {\n    return GetAttrSelectorWriter.writeThen(output, this, key, then);\n  }\n\n  sizeOfGetItemSelector(index: V, then: V): number {\n    return GetItemSelectorWriter.sizeOf(this, index, then);\n  }\n\n  writeGetItemSelector(output: Output, index: V, then: V): Writer {\n    return GetItemSelectorWriter.write(output, this, index, then);\n  }\n\n  sizeOfThenGetItemSelector(index: V, then: V): number {\n    return GetItemSelectorWriter.sizeOfThen(this, index, then);\n  }\n\n  writeThenGetItemSelector(output: Output, index: V, then: V): Writer {\n    return GetItemSelectorWriter.writeThen(output, this, index, then);\n  }\n\n  sizeOfKeysSelector(then: V): number {\n    return KeysSelectorWriter.sizeOf(this, then);\n  }\n\n  writeKeysSelector(output: Output, then: V): Writer {\n    return KeysSelectorWriter.write(output, this, then);\n  }\n\n  sizeOfThenKeysSelector(then: V): number {\n    return KeysSelectorWriter.sizeOf(this, then);\n  }\n\n  writeThenKeysSelector(output: Output, then: V): Writer {\n    return KeysSelectorWriter.writeThen(output, this, then);\n  }\n\n  sizeOfValuesSelector(then: V): number {\n    return ValuesSelectorWriter.sizeOf(this, then);\n  }\n\n  writeValuesSelector(output: Output, then: V): Writer {\n    return ValuesSelectorWriter.write(output, this, then);\n  }\n\n  sizeOfThenValuesSelector(then: V): number {\n    return ValuesSelectorWriter.sizeOf(this, then);\n  }\n\n  writeThenValuesSelector(output: Output, then: V): Writer {\n    return ValuesSelectorWriter.writeThen(output, this, then);\n  }\n\n  sizeOfChildrenSelector(then: V): number {\n    return ChildrenSelectorWriter.sizeOf(this, then);\n  }\n\n  writeChildrenSelector(output: Output, then: V): Writer {\n    return ChildrenSelectorWriter.write(output, this, then);\n  }\n\n  sizeOfThenChildrenSelector(then: V): number {\n    return ChildrenSelectorWriter.sizeOf(this, then);\n  }\n\n  writeThenChildrenSelector(output: Output, then: V): Writer {\n    return ChildrenSelectorWriter.writeThen(output, this, then);\n  }\n\n  sizeOfDescendantsSelector(then: V): number {\n    return DescendantsSelectorWriter.sizeOf(this, then);\n  }\n\n  writeDescendantsSelector(output: Output, then: V): Writer {\n    return DescendantsSelectorWriter.write(output, this, then);\n  }\n\n  sizeOfThenDescendantsSelector(then: V): number {\n    return DescendantsSelectorWriter.sizeOf(this, then);\n  }\n\n  writeThenDescendantsSelector(output: Output, then: V): Writer {\n    return DescendantsSelectorWriter.writeThen(output, this, then);\n  }\n\n  sizeOfFilterSelector(predicate: V, then: V): number {\n    return FilterSelectorWriter.sizeOf(this, predicate, then);\n  }\n\n  writeFilterSelector(output: Output, predicate: V, then: V): Writer {\n    return FilterSelectorWriter.write(output, this, predicate, then);\n  }\n\n  sizeOfThenFilterSelector(predicate: V, then: V): number {\n    return FilterSelectorWriter.sizeOfThen(this, predicate, then);\n  }\n\n  writeThenFilterSelector(output: Output, predicate: V, then: V): Writer {\n    return FilterSelectorWriter.writeThen(output, this, predicate, then);\n  }\n\n  sizeOfExtant(): number {\n    return 0;\n  }\n\n  writeExtant(output: Output): Writer {\n    return Writer.end();\n  }\n\n  sizeOfAbsent(): number {\n    return 0;\n  }\n\n  writeAbsent(output: Output): Writer {\n    return Writer.end();\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Cursor} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {WriterException} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport type {Item} from \"@swim/structure\";\nimport {Field} from \"@swim/structure\";\nimport {Attr} from \"@swim/structure\";\nimport {Slot} from \"@swim/structure\";\nimport {Value} from \"@swim/structure\";\nimport {Record} from \"@swim/structure\";\nimport {Data} from \"@swim/structure\";\nimport {Text} from \"@swim/structure\";\nimport {Num} from \"@swim/structure\";\nimport {Bool} from \"@swim/structure\";\nimport {Expression} from \"@swim/structure\";\nimport {Operator} from \"@swim/structure\";\nimport {Selector} from \"@swim/structure\";\nimport {Func} from \"@swim/structure\";\nimport {Extant} from \"@swim/structure\";\nimport {Absent} from \"@swim/structure\";\nimport {ChildrenSelector} from \"@swim/structure\";\nimport {DescendantsSelector} from \"@swim/structure\";\nimport {FilterSelector} from \"@swim/structure\";\nimport {GetAttrSelector} from \"@swim/structure\";\nimport {GetItemSelector} from \"@swim/structure\";\nimport {GetSelector} from \"@swim/structure\";\nimport {IdentitySelector} from \"@swim/structure\";\nimport {KeysSelector} from \"@swim/structure\";\nimport {LiteralSelector} from \"@swim/structure\";\nimport {ValuesSelector} from \"@swim/structure\";\nimport {BinaryOperator} from \"@swim/structure\";\nimport {ConditionalOperator} from \"@swim/structure\";\nimport {InvokeOperator} from \"@swim/structure\";\nimport {UnaryOperator} from \"@swim/structure\";\nimport {BridgeFunc} from \"@swim/structure\";\nimport {LambdaFunc} from \"@swim/structure\";\nimport {ReconWriter} from \"./ReconWriter\";\n\n/** @public */\nexport class ReconStructureWriter extends ReconWriter<Item, Value> {\n  override isField(item: Item): boolean {\n    return item instanceof Field;\n  }\n\n  override isAttr(item: Item): boolean {\n    return item instanceof Attr;\n  }\n\n  override isSlot(item: Item): boolean {\n    return item instanceof Slot;\n  }\n\n  override isValue(item: Item): boolean {\n    return item instanceof Value;\n  }\n\n  override isRecord(item: Item): boolean {\n    return item instanceof Record;\n  }\n\n  override isText(item: Item): boolean {\n    return item instanceof Text;\n  }\n\n  override isNum(item: Item): boolean {\n    return item instanceof Num;\n  }\n\n  override isBool(item: Item): boolean {\n    return item instanceof Bool;\n  }\n\n  override isExpression(item: Item): boolean {\n    return item instanceof Expression;\n  }\n\n  override isExtant(item: Item): boolean {\n    return item instanceof Extant;\n  }\n\n  override items(item: Item): Cursor<Item> {\n    return item.iterator();\n  }\n\n  override item(value: Value): Item {\n    return value;\n  }\n\n  override key(item: Item): Value {\n    return item.key;\n  }\n\n  override value(item: Item): Value {\n    return item.toValue();\n  }\n\n  override string(item: Item): string {\n    return item.stringValue(\"\");\n  }\n\n  override precedence(item: Item): number {\n    return item.precedence;\n  }\n\n  override sizeOfItem(item: Item): number {\n    if (item instanceof Field) {\n      if (item instanceof Attr) {\n        return this.sizeOfAttr(item.key, item.value);\n      } else if (item instanceof Slot) {\n        return this.sizeOfSlot(item.key, item.value);\n      }\n    } else if (item instanceof Value) {\n      return this.sizeOfValue(item);\n    }\n    throw new WriterException(\"No Recon serialization for \" + item);\n  }\n\n  override writeItem(output: Output, item: Item): Writer {\n    if (item instanceof Field) {\n      if (item instanceof Attr) {\n        return this.writeAttr(output, item.key, item.value);\n      } else if (item instanceof Slot) {\n        return this.writeSlot(output, item.key, item.value);\n      }\n    } else if (item instanceof Value) {\n      return this.writeValue(output, item);\n    }\n    return Writer.error(new WriterException(\"No Recon serialization for \" + item));\n  }\n\n  override sizeOfValue(value: Value): number {\n    if (value instanceof Record) {\n      return this.sizeOfRecord(value);\n    } else if (value instanceof Data) {\n      return this.sizeOfData(value.size);\n    } else if (value instanceof Text) {\n      return this.sizeOfText(value.value);\n    } else if (value instanceof Num) {\n      if (value.isUint32()) {\n        return this.sizeOfUint32(value.value);\n      } else if (value.isUint64()) {\n        return this.sizeOfUint64(value.value);\n      } else {\n        return this.sizeOfNum(value.value);\n      }\n    } else if (value instanceof Bool) {\n      return this.sizeOfBool(value.value);\n    } else if (value instanceof Selector) {\n      return this.sizeOfSelector(value);\n    } else if (value instanceof Operator) {\n      return this.sizeOfOperator(value);\n    } else if (value instanceof Func) {\n      return this.sizeOfFunc(value);\n    } else if (value instanceof Extant) {\n      return this.sizeOfExtant();\n    } else if (value instanceof Absent) {\n      return this.sizeOfAbsent();\n    }\n    throw new WriterException(\"No Recon serialization for \" + value);\n  }\n\n  override writeValue(output: Output, value: Value): Writer {\n    if (value instanceof Record) {\n      return this.writeRecord(output, value);\n    } else if (value instanceof Data) {\n      return this.writeData(output, value.asUint8Array());\n    } else if (value instanceof Text) {\n      return this.writeText(output, value.value);\n    } else if (value instanceof Num) {\n      if (value.isUint32()) {\n        return this.writeUint32(output, value.value);\n      } else if (value.isUint64()) {\n        return this.writeUint64(output, value.value);\n      } else {\n        return this.writeNum(output, value.value);\n      }\n    } else if (value instanceof Bool) {\n      return this.writeBool(output, value.value);\n    } else if (value instanceof Selector) {\n      return this.writeSelector(output, value);\n    } else if (value instanceof Operator) {\n      return this.writeOperator(output, value);\n    } else if (value instanceof Func) {\n      return this.writeFunc(output, value);\n    } else if (value instanceof Extant) {\n      return this.writeExtant(output);\n    } else if (value instanceof Absent) {\n      return this.writeAbsent(output);\n    }\n    return Writer.error(new WriterException(\"No Recon serialization for \" + value));\n  }\n\n  sizeOfSelector(selector: Selector): number {\n    if (selector instanceof IdentitySelector) {\n      return this.sizeOfIdentitySelector();\n    } else if (selector instanceof LiteralSelector) {\n      return this.sizeOfLiteralSelector(selector.item, selector.then);\n    } else if (selector instanceof GetSelector) {\n      return this.sizeOfGetSelector(selector.item, selector.then);\n    } else if (selector instanceof GetAttrSelector) {\n      return this.sizeOfGetAttrSelector(selector.item, selector.then);\n    } else if (selector instanceof GetItemSelector) {\n      return this.sizeOfGetItemSelector(selector.item, selector.then);\n    } else if (selector instanceof KeysSelector) {\n      return this.sizeOfKeysSelector(selector.then);\n    } else if (selector instanceof ValuesSelector) {\n      return this.sizeOfValuesSelector(selector.then);\n    } else if (selector instanceof ChildrenSelector) {\n      return this.sizeOfChildrenSelector(selector.then);\n    } else if (selector instanceof DescendantsSelector) {\n      return this.sizeOfDescendantsSelector(selector.then);\n    } else if (selector instanceof FilterSelector) {\n      return this.sizeOfFilterSelector(selector.predicate, selector.then);\n    }\n    throw new WriterException(\"No Recon serialization for \" + selector);\n  }\n\n  writeSelector(output: Output, selector: Selector): Writer {\n    if (selector instanceof IdentitySelector) {\n      return this.writeIdentitySelector(output);\n    } else if (selector instanceof LiteralSelector) {\n      return this.writeLiteralSelector(output, selector.item, selector.then);\n    } else if (selector instanceof GetSelector) {\n      return this.writeGetSelector(output, selector.item, selector.then);\n    } else if (selector instanceof GetAttrSelector) {\n      return this.writeGetAttrSelector(output, selector.item, selector.then);\n    } else if (selector instanceof GetItemSelector) {\n      return this.writeGetItemSelector(output, selector.item, selector.then);\n    } else if (selector instanceof KeysSelector) {\n      return this.writeKeysSelector(output, selector.then);\n    } else if (selector instanceof ValuesSelector) {\n      return this.writeValuesSelector(output, selector.then);\n    } else if (selector instanceof ChildrenSelector) {\n      return this.writeChildrenSelector(output, selector.then);\n    } else if (selector instanceof DescendantsSelector) {\n      return this.writeDescendantsSelector(output, selector.then);\n    } else if (selector instanceof FilterSelector) {\n      return this.writeFilterSelector(output, selector.predicate, selector.then);\n    }\n    return Writer.error(new WriterException(\"No Recon serialization for \" + selector));\n  }\n\n  sizeOfOperator(operator: Operator): number {\n    if (operator instanceof BinaryOperator) {\n      return this.sizeOfInfixOperator(operator.operand1, operator.operator, operator.operand2, operator.precedence);\n    } else if (operator instanceof UnaryOperator) {\n      return this.sizeOfPrefixOperator(operator.operator, operator.operand, operator.precedence);\n    } else if (operator instanceof InvokeOperator) {\n      return this.sizeOfInvokeOperator(operator.func, operator.args);\n    } else if (operator instanceof ConditionalOperator) {\n      return this.sizeOfConditionalOperator(operator.ifTerm, operator.thenTerm, operator.elseTerm, operator.precedence);\n    }\n    throw new WriterException(\"No Recon serialization for \" + operator);\n  }\n\n  writeOperator(output: Output, operator: Operator): Writer {\n    if (operator instanceof BinaryOperator) {\n      return this.writeInfixOperator(output, operator.operand1, operator.operator, operator.operand2, operator.precedence);\n    } else if (operator instanceof UnaryOperator) {\n      return this.writePrefixOperator(output, operator.operator, operator.operand, operator.precedence);\n    } else if (operator instanceof InvokeOperator) {\n      return this.writeInvokeOperator(output, operator.func, operator.args);\n    } else if (operator instanceof ConditionalOperator) {\n      return this.writeConditionalOperator(output, operator.ifTerm, operator.thenTerm, operator.elseTerm, operator.precedence);\n    }\n    return Writer.error(new WriterException(\"No Recon serialization for \" + operator));\n  }\n\n  sizeOfFunc(func: Func): number {\n    if (func instanceof LambdaFunc) {\n      return this.sizeOfLambdaFunc(func.bindings, func.template);\n    } else if (func instanceof BridgeFunc) {\n      return 0;\n    }\n    throw new WriterException(\"No Recon serialization for \" + func);\n  }\n\n  writeFunc(output: Output, func: Func): Writer {\n    if (func instanceof LambdaFunc) {\n      return this.writeLambdaFunc(output, func.bindings, func.template);\n    } else if (func instanceof BridgeFunc) {\n      return Writer.end();\n    }\n    return Writer.error(new WriterException(\"No Recon serialization for \" + func));\n  }\n\n  override sizeOfBlockItem(item: Item): number {\n    if (item instanceof Field) {\n      return this.sizeOfItem(item);\n    } else if (item instanceof Value) {\n      return this.sizeOfBlockValue(item);\n    }\n    throw new WriterException(\"No Recon serialization for \" + item);\n  }\n\n  override writeBlockItem(output: Output, item: Item): Writer {\n    if (item instanceof Field) {\n      return this.writeItem(output, item);\n    } else if (item instanceof Value) {\n      return this.writeBlockValue(output, item);\n    }\n    return Writer.error(new WriterException(\"No Recon serialization for \" + item));\n  }\n\n  override sizeOfBlockValue(value: Value): number {\n    if (value instanceof Record) {\n      return this.sizeOfBlock(value);\n    }\n    return this.sizeOfValue(value);\n  }\n\n  override writeBlockValue(output: Output, value: Value): Writer {\n    if (value instanceof Record) {\n      return this.writeBlock(output, value);\n    }\n    return this.writeValue(output, value);\n  }\n\n  override sizeOfThen(then: Value): number {\n    if (then instanceof Selector) {\n      if (then instanceof IdentitySelector) {\n        return this.sizeOfThenIdentitySelector();\n      } else if (then instanceof LiteralSelector) {\n        return this.sizeOfThenLiteralSelector(then.item, then.then);\n      } else if (then instanceof GetSelector) {\n        return this.sizeOfThenGetSelector(then.item, then.then);\n      } else if (then instanceof GetAttrSelector) {\n        return this.sizeOfThenGetAttrSelector(then.item, then.then);\n      } else if (then instanceof GetItemSelector) {\n        return this.sizeOfThenGetItemSelector(then.item, then.then);\n      } else if (then instanceof KeysSelector) {\n        return this.sizeOfThenKeysSelector(then.then);\n      } else if (then instanceof ValuesSelector) {\n        return this.sizeOfThenValuesSelector(then.then);\n      } else if (then instanceof ChildrenSelector) {\n        return this.sizeOfThenChildrenSelector(then.then);\n      } else if (then instanceof DescendantsSelector) {\n        return this.sizeOfThenDescendantsSelector(then.then);\n      } else if (then instanceof FilterSelector) {\n        return this.sizeOfThenFilterSelector(then.predicate, then.then);\n      }\n    }\n    throw new WriterException(\"No Recon serialization for \" + then);\n  }\n\n  override writeThen(output: Output, then: Value): Writer {\n    if (then instanceof Selector) {\n      if (then instanceof IdentitySelector) {\n        return this.writeThenIdentitySelector(output);\n      } else if (then instanceof LiteralSelector) {\n        return this.writeThenLiteralSelector(output, then.item, then.then);\n      } else if (then instanceof GetSelector) {\n        return this.writeThenGetSelector(output, then.item, then.then);\n      } else if (then instanceof GetAttrSelector) {\n        return this.writeThenGetAttrSelector(output, then.item, then.then);\n      } else if (then instanceof GetItemSelector) {\n        return this.writeThenGetItemSelector(output, then.item, then.then);\n      } else if (then instanceof KeysSelector) {\n        return this.writeThenKeysSelector(output, then.then);\n      } else if (then instanceof ValuesSelector) {\n        return this.writeThenValuesSelector(output, then.then);\n      } else if (then instanceof ChildrenSelector) {\n        return this.writeThenChildrenSelector(output, then.then);\n      } else if (then instanceof DescendantsSelector) {\n        return this.writeThenDescendantsSelector(output, then.then);\n      } else if (then instanceof FilterSelector) {\n        return this.writeThenFilterSelector(output, then.predicate, then.then);\n      }\n    }\n    return Writer.error(new WriterException(\"No Recon serialization for \" + then));\n  }\n}\n"],"names":["Recon","Object","defineProperty","value","structureParser","ReconStructureParser","enumerable","configurable","structureWriter","ReconStructureWriter","parse","recon","parseBlockString","parser","blockParser","sizeOf","item","sizeOfItem","sizeOfBlock","sizeOfBlockItem","write","output","writeItem","writeBlock","writeBlockItem","toString","Unicode","stringOutput","writer","isDone","Output","error","trap","bind","toBlockString","toData","Utf8","encodedOutput","Data","toBlockData","isSpace","c","isNewline","isWhitespace","isIdentStartChar","isIdentChar","Item","prototype","toRecon","this","toReconBlock","Value","parseRecon","BlockParser","Parser","constructor","builder","keyParser","valueParser","step","super","feed","input","block","isCont","head","valueBuilder","done","build","absent","parseBlockExpression","isEmpty","isError","push","slot","AttrParser","Diagnostic","expected","parseString","parseIdent","asError","attr","parseBlock","BlockItemParser","fieldParser","parseAttr","recordBuilder","parseRecord","parseMarkup","parseRawString","parseNumber","parseData","parseSelector","extant","InlineItemParser","RecordParser","MarkupParser","textOutput","parseInlineItem","unexpected","DataParser","base64Parser","Base64","standard","dataOutput","IdentParser","ident","StringParser","quote","code","string","Base16","isDigit","decodeDigit","RawStringParser","count","message","NumberParser","sign","mode","newValue","num","DecimalParser","HexadecimalParser","parseInteger","parseDecimal","size","uint32","uint64","LambdaFuncParser","bindingsParser","templateParser","parseConditionalOperator","bindings","template","lambda","ConditionalOperatorParser","ifParser","thenParser","elseParser","parseOrOperator","ifTerm","thenTerm","elseTerm","conditional","OrOperatorParser","lhsParser","rhsParser","parseAndOperator","lhs","rhs","or","AndOperatorParser","parseBitwiseOrOperator","and","BitwiseOrOperatorParser","parseBitwiseXorOperator","bitwiseOr","BitwiseXorOperatorParser","parseBitwiseAndOperator","bitwiseXor","BitwiseAndOperatorParser","parseComparisonOperator","bitwiseAnd","ComparisonOperatorParser","operator","parseAttrExpression","lt","le","eq","ne","ge","gt","AttrExpressionParser","parseAdditiveOperator","AdditiveOperatorParser","parseMultiplicativeOperator","plus","minus","MultiplicativeOperatorParser","parsePrefixOperator","times","divide","modulo","PrefixOperatorParser","operandParser","parseInvokeOperator","operand","isDistinct","not","bitwiseNot","negative","positive","InvokeOperatorParser","exprParser","argsParser","parsePrimary","expr","invoke","args","PrimaryParser","parseLiteral","LiteralParser","SelectorParser","selector","get","getItem","keys","descendants","children","values","getAttr","filter","ReconParser","parseBlockItem","parseLambdaFunc","stringInput","toValue","key","arguments","length","Attr","of","Slot","Record","create","Text","stringValue","Bool","from","Num","TypeError","bool","Selector","identity","OrOperator","AndOperator","BitwiseOrOperator","BitwiseXorOperator","BitwiseAndOperator","LtOperator","LeOperator","EqOperator","NeOperator","GeOperator","GtOperator","PlusOperator","MinusOperator","TimesOperator","DivideOperator","ModuloOperator","NotOperator","BitwiseNotOperator","NegativeOperator","PositiveOperator","func","InvokeOperator","index","literal","predicate","AttrWriter","Writer","part","pull","sizeOfValue","isExtant","sizeOfBlockValue","writeValue","end","writeBlockValue","WriterException","SlotWriter","BlockWriter","items","inBlock","inMarkup","inBraces","inBrackets","first","markupSafe","next","hasNext","isExpression","isAttr","isText","sizeOfMarkupText","isRecord","isMarkupSafe","isField","isBool","isValue","isIdent","isNum","sizeOfSlot","writeMarkupText","writeSlot","PrimaryWriter","inParens","MarkupTextWriter","text","escape","i","Strings","offsetByCodePoints","codePointAt","charCodeAt","uppercase","encodeDigit","DataWriter","array","Math","floor","writeUint8Array","IdentWriter","StringWriter","LambdaFuncWriter","sizeOfPrimary","writePrimary","ConditionalOperatorWriter","precedence","InfixOperatorWriter","writeString","PrefixOperatorWriter","InvokeOperatorWriter","LiteralSelectorWriter","then","sizeOfThen","writeThen","GetSelectorWriter","GetAttrSelectorWriter","GetItemSelectorWriter","KeysSelectorWriter","ValuesSelectorWriter","ChildrenSelectorWriter","DescendantsSelectorWriter","FilterSelectorWriter","ReconWriter","sizeOfAttr","writeAttr","isBlockSafe","sizeOfRecord","writeRecord","sizeOfData","writeData","n","sizeOfText","writeText","sizeOfNum","isFinite","abs","Base10","countDigits","writeNum","writeInteger","sizeOfUint32","writeUint32","lowercase","writeIntegerLiteral","sizeOfUint64","writeUint64","sizeOfBool","writeBool","sizeOfLambdaFunc","writeLambdaFunc","sizeOfConditionalOperator","writeConditionalOperator","sizeOfInfixOperator","writeInfixOperator","sizeOfPrefixOperator","writePrefixOperator","sizeOfInvokeOperator","writeInvokeOperator","sizeOfIdentitySelector","writeIdentitySelector","sizeOfThenIdentitySelector","writeThenIdentitySelector","sizeOfLiteralSelector","writeLiteralSelector","sizeOfThenLiteralSelector","writeThenLiteralSelector","sizeOfGetSelector","writeGetSelector","sizeOfThenGetSelector","writeThenGetSelector","sizeOfGetAttrSelector","writeGetAttrSelector","sizeOfThenGetAttrSelector","writeThenGetAttrSelector","sizeOfGetItemSelector","writeGetItemSelector","sizeOfThenGetItemSelector","writeThenGetItemSelector","sizeOfKeysSelector","writeKeysSelector","sizeOfThenKeysSelector","writeThenKeysSelector","sizeOfValuesSelector","writeValuesSelector","sizeOfThenValuesSelector","writeThenValuesSelector","sizeOfChildrenSelector","writeChildrenSelector","sizeOfThenChildrenSelector","writeThenChildrenSelector","sizeOfDescendantsSelector","writeDescendantsSelector","sizeOfThenDescendantsSelector","writeThenDescendantsSelector","sizeOfFilterSelector","writeFilterSelector","sizeOfThenFilterSelector","writeThenFilterSelector","sizeOfExtant","writeExtant","sizeOfAbsent","writeAbsent","Field","isSlot","Expression","Extant","iterator","isUint32","isUint64","sizeOfSelector","Operator","sizeOfOperator","Func","sizeOfFunc","Absent","asUint8Array","writeSelector","writeOperator","writeFunc","IdentitySelector","LiteralSelector","GetSelector","GetAttrSelector","GetItemSelector","KeysSelector","ValuesSelector","ChildrenSelector","DescendantsSelector","FilterSelector","BinaryOperator","operand1","operand2","UnaryOperator","ConditionalOperator","LambdaFunc","BridgeFunc"],"mappings":"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"}