@atproto/repo 0.3.8 → 0.3.9-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/block-map.d.ts +1 -0
- package/dist/block-map.d.ts.map +1 -0
- package/dist/block-map.js +119 -0
- package/dist/block-map.js.map +1 -0
- package/dist/cid-set.d.ts +1 -0
- package/dist/cid-set.d.ts.map +1 -0
- package/dist/cid-set.js +48 -0
- package/dist/cid-set.js.map +1 -0
- package/dist/data-diff.d.ts +1 -0
- package/dist/data-diff.d.ts.map +1 -0
- package/dist/data-diff.js +134 -0
- package/dist/data-diff.js.map +1 -0
- package/dist/error.d.ts +1 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +76 -0
- package/dist/error.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -27225
- package/dist/index.js.map +1 -7
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +7 -0
- package/dist/logger.js.map +1 -0
- package/dist/mst/diff.d.ts +1 -0
- package/dist/mst/diff.d.ts.map +1 -0
- package/dist/mst/diff.js +120 -0
- package/dist/mst/diff.js.map +1 -0
- package/dist/mst/index.d.ts +1 -0
- package/dist/mst/index.d.ts.map +1 -0
- package/dist/mst/index.js +34 -0
- package/dist/mst/index.js.map +1 -0
- package/dist/mst/mst.d.ts +6 -5
- package/dist/mst/mst.d.ts.map +1 -0
- package/dist/mst/mst.js +770 -0
- package/dist/mst/mst.js.map +1 -0
- package/dist/mst/util.d.ts +1 -0
- package/dist/mst/util.d.ts.map +1 -0
- package/dist/mst/util.js +167 -0
- package/dist/mst/util.js.map +1 -0
- package/dist/mst/walker.d.ts +1 -0
- package/dist/mst/walker.d.ts.map +1 -0
- package/dist/mst/walker.js +123 -0
- package/dist/mst/walker.js.map +1 -0
- package/dist/parse.d.ts +1 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +35 -0
- package/dist/parse.js.map +1 -0
- package/dist/readable-repo.d.ts +1 -0
- package/dist/readable-repo.d.ts.map +1 -0
- package/dist/readable-repo.js +117 -0
- package/dist/readable-repo.js.map +1 -0
- package/dist/repo.d.ts +1 -0
- package/dist/repo.d.ts.map +1 -0
- package/dist/repo.js +190 -0
- package/dist/repo.js.map +1 -0
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +21 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/memory-blockstore.d.ts +1 -0
- package/dist/storage/memory-blockstore.d.ts.map +1 -0
- package/dist/storage/memory-blockstore.js +80 -0
- package/dist/storage/memory-blockstore.js.map +1 -0
- package/dist/storage/readable-blockstore.d.ts +1 -0
- package/dist/storage/readable-blockstore.d.ts.map +1 -0
- package/dist/storage/readable-blockstore.js +66 -0
- package/dist/storage/readable-blockstore.js.map +1 -0
- package/dist/storage/sync-storage.d.ts +1 -0
- package/dist/storage/sync-storage.d.ts.map +1 -0
- package/dist/storage/sync-storage.js +46 -0
- package/dist/storage/sync-storage.js.map +1 -0
- package/dist/storage/types.d.ts +1 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +7 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/sync/consumer.d.ts +1 -0
- package/dist/sync/consumer.d.ts.map +1 -0
- package/dist/sync/consumer.js +178 -0
- package/dist/sync/consumer.js.map +1 -0
- package/dist/sync/index.d.ts +1 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +19 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/provider.d.ts +1 -0
- package/dist/sync/provider.d.ts.map +1 -0
- package/dist/sync/provider.js +67 -0
- package/dist/sync/provider.js.map +1 -0
- package/dist/types.d.ts +22 -19
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +62 -0
- package/dist/types.js.map +1 -0
- package/dist/util.d.ts +2 -1
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +219 -0
- package/dist/util.js.map +1 -0
- package/jest.config.js +3 -3
- package/package.json +11 -14
- package/src/mst/mst.ts +1 -1
- package/src/types.ts +4 -2
- package/src/util.ts +1 -1
- package/tests/_util.ts +4 -0
- package/tsconfig.build.json +6 -2
- package/tsconfig.json +3 -11
- package/tsconfig.tests.json +7 -0
- package/babel.config.js +0 -1
- package/build.js +0 -14
- package/jest.bench.config.js +0 -8
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../node_modules/.pnpm/graphemer@1.4.0/node_modules/graphemer/lib/boundaries.js", "../../../node_modules/.pnpm/graphemer@1.4.0/node_modules/graphemer/lib/GraphemerHelper.js", "../../../node_modules/.pnpm/graphemer@1.4.0/node_modules/graphemer/lib/GraphemerIterator.js", "../../../node_modules/.pnpm/graphemer@1.4.0/node_modules/graphemer/lib/Graphemer.js", "../../../node_modules/.pnpm/graphemer@1.4.0/node_modules/graphemer/lib/index.js", "../../../node_modules/.pnpm/iso-datestring-validator@2.2.2/node_modules/iso-datestring-validator/dist/index.js", "../../../node_modules/.pnpm/detect-libc@2.0.2/node_modules/detect-libc/lib/process.js", "../../../node_modules/.pnpm/detect-libc@2.0.2/node_modules/detect-libc/lib/filesystem.js", "../../../node_modules/.pnpm/detect-libc@2.0.2/node_modules/detect-libc/lib/detect-libc.js", "../../../node_modules/.pnpm/node-gyp-build-optional-packages@5.1.1/node_modules/node-gyp-build-optional-packages/index.js", "../../../node_modules/.pnpm/cbor-extract@2.2.0/node_modules/cbor-extract/index.js", "../../../node_modules/.pnpm/pino-std-serializers@6.2.2/node_modules/pino-std-serializers/lib/err-helpers.js", "../../../node_modules/.pnpm/pino-std-serializers@6.2.2/node_modules/pino-std-serializers/lib/err-proto.js", "../../../node_modules/.pnpm/pino-std-serializers@6.2.2/node_modules/pino-std-serializers/lib/err.js", "../../../node_modules/.pnpm/pino-std-serializers@6.2.2/node_modules/pino-std-serializers/lib/err-with-cause.js", "../../../node_modules/.pnpm/pino-std-serializers@6.2.2/node_modules/pino-std-serializers/lib/req.js", "../../../node_modules/.pnpm/pino-std-serializers@6.2.2/node_modules/pino-std-serializers/lib/res.js", "../../../node_modules/.pnpm/pino-std-serializers@6.2.2/node_modules/pino-std-serializers/index.js", "../../../node_modules/.pnpm/pino@8.15.0/node_modules/pino/lib/caller.js", "../../../node_modules/.pnpm/fast-redact@3.3.0/node_modules/fast-redact/lib/validator.js", "../../../node_modules/.pnpm/fast-redact@3.3.0/node_modules/fast-redact/lib/rx.js", "../../../node_modules/.pnpm/fast-redact@3.3.0/node_modules/fast-redact/lib/parse.js", "../../../node_modules/.pnpm/fast-redact@3.3.0/node_modules/fast-redact/lib/redactor.js", "../../../node_modules/.pnpm/fast-redact@3.3.0/node_modules/fast-redact/lib/modifiers.js", "../../../node_modules/.pnpm/fast-redact@3.3.0/node_modules/fast-redact/lib/restorer.js", "../../../node_modules/.pnpm/fast-redact@3.3.0/node_modules/fast-redact/lib/state.js", "../../../node_modules/.pnpm/fast-redact@3.3.0/node_modules/fast-redact/index.js", "../../../node_modules/.pnpm/pino@8.15.0/node_modules/pino/lib/symbols.js", "../../../node_modules/.pnpm/pino@8.15.0/node_modules/pino/lib/redaction.js", "../../../node_modules/.pnpm/pino@8.15.0/node_modules/pino/lib/time.js", "../../../node_modules/.pnpm/quick-format-unescaped@4.0.4/node_modules/quick-format-unescaped/index.js", "../../../node_modules/.pnpm/atomic-sleep@1.0.0/node_modules/atomic-sleep/index.js", "../../../node_modules/.pnpm/sonic-boom@3.3.0/node_modules/sonic-boom/index.js", "../../../node_modules/.pnpm/on-exit-leak-free@2.1.0/node_modules/on-exit-leak-free/index.js", "../../../node_modules/.pnpm/thread-stream@2.4.0/node_modules/thread-stream/lib/wait.js", "../../../node_modules/.pnpm/thread-stream@2.4.0/node_modules/thread-stream/lib/indexes.js", "../../../node_modules/.pnpm/thread-stream@2.4.0/node_modules/thread-stream/index.js", "../../../node_modules/.pnpm/pino@8.15.0/node_modules/pino/lib/transport.js", "../../../node_modules/.pnpm/pino@8.15.0/node_modules/pino/lib/tools.js", "../../../node_modules/.pnpm/pino@8.15.0/node_modules/pino/lib/levels.js", "../../../node_modules/.pnpm/pino@8.15.0/node_modules/pino/lib/meta.js", "../../../node_modules/.pnpm/pino@8.15.0/node_modules/pino/lib/proto.js", "../../../node_modules/.pnpm/safe-stable-stringify@2.4.3/node_modules/safe-stable-stringify/index.js", "../../../node_modules/.pnpm/pino@8.15.0/node_modules/pino/lib/multistream.js", "../../../node_modules/.pnpm/pino@8.15.0/node_modules/pino/pino.js", "../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/encode.js", "../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/decode.js", "../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/length.js", "../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/index.js", "../src/index.ts", "../../../node_modules/.pnpm/zod@3.21.4/node_modules/zod/lib/index.mjs", "../../syntax/src/nsid.ts", "../../common-web/src/check.ts", "../../common-web/src/util.ts", "../../common-web/src/tid.ts", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/vendor/varint.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/varint.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bytes.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/digest.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base58.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/vendor/base-x.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base32.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/cid.js", "../../../node_modules/.pnpm/uint8arrays@3.0.0/node_modules/uint8arrays/esm/src/equals.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/identity.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base2.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base8.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base10.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base16.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base36.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base64.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base256emoji.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/sha2.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/hasher.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/identity.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/codecs/json.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/basics.js", "../../../node_modules/.pnpm/uint8arrays@3.0.0/node_modules/uint8arrays/esm/src/util/bases.js", "../../../node_modules/.pnpm/uint8arrays@3.0.0/node_modules/uint8arrays/esm/src/from-string.js", "../../../node_modules/.pnpm/uint8arrays@3.0.0/node_modules/uint8arrays/esm/src/to-string.js", "../../common-web/src/ipld.ts", "../../common-web/src/types.ts", "../../common-web/src/times.ts", "../../common-web/src/strings.ts", "../../common-web/src/did-doc.ts", "../../lexicon/src/validators/formats.ts", "../../lexicon/src/blob-refs.ts", "../../lexicon/src/util.ts", "../../lexicon/src/types.ts", "../../lexicon/src/serialize.ts", "../../common/src/dates.ts", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/block.js", "../../../node_modules/.pnpm/@ipld+dag-cbor@7.0.3/node_modules/@ipld/dag-cbor/esm/index.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/is.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/token.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/byte-utils.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/bl.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/common.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/0uint.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/1negint.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/2bytes.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/3string.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/4array.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/5map.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/6tag.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/7float.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/jump.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/encode.js", "../../../node_modules/.pnpm/cborg@1.10.2/node_modules/cborg/esm/lib/decode.js", "../../common/src/ipld.ts", "../../../node_modules/.pnpm/cbor-x@1.5.1/node_modules/cbor-x/decode.js", "../../../node_modules/.pnpm/cbor-x@1.5.1/node_modules/cbor-x/encode.js", "../../../node_modules/.pnpm/cbor-x@1.5.1/node_modules/cbor-x/node-index.js", "../../common/src/ipld-multi.ts", "../../common/src/logger.ts", "../../common/src/streams.ts", "../src/block-map.ts", "../src/cid-set.ts", "../src/types.ts", "../src/mst/util.ts", "../../crypto/src/const.ts", "../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/src/_assert.ts", "../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/src/cryptoNode.ts", "../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/src/utils.ts", "../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/src/hmac.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/abstract/utils.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/abstract/modular.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/abstract/curve.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/abstract/weierstrass.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/_shortw_utils.ts", "../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/src/_sha2.ts", "../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/src/sha256.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/p256.ts", "../../crypto/src/p256/encoding.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/secp256k1.ts", "../../crypto/src/secp256k1/encoding.ts", "../../crypto/src/p256/operations.ts", "../../crypto/src/p256/plugin.ts", "../../crypto/src/secp256k1/operations.ts", "../../crypto/src/secp256k1/plugin.ts", "../../crypto/src/plugins.ts", "../../crypto/src/did.ts", "../../crypto/src/sha.ts", "../../crypto/src/verify.ts", "../src/error.ts", "../src/util.ts", "../../../node_modules/.pnpm/@ipld+car@3.2.3/node_modules/@ipld/car/esm/lib/reader.js", "../../../node_modules/.pnpm/@ipld+car@3.2.3/node_modules/@ipld/car/esm/lib/decoder.js", "../../../node_modules/.pnpm/@ipld+car@3.2.3/node_modules/@ipld/car/esm/lib/indexer.js", "../../../node_modules/.pnpm/@ipld+car@3.2.3/node_modules/@ipld/car/esm/lib/iterator.js", "../../../node_modules/.pnpm/@ipld+car@3.2.3/node_modules/@ipld/car/esm/lib/writer.js", "../../../node_modules/.pnpm/@ipld+car@3.2.3/node_modules/@ipld/car/esm/lib/encoder.js", "../../../node_modules/.pnpm/@ipld+car@3.2.3/node_modules/@ipld/car/esm/lib/iterator-channel.js", "../../../node_modules/.pnpm/@ipld+car@3.2.3/node_modules/@ipld/car/esm/lib/writer-browser.js", "../src/parse.ts", "../src/mst/mst.ts", "../src/data-diff.ts", "../src/mst/walker.ts", "../src/mst/diff.ts", "../src/logger.ts", "../src/readable-repo.ts", "../src/repo.ts", "../src/storage/readable-blockstore.ts", "../src/storage/memory-blockstore.ts", "../src/storage/sync-storage.ts", "../src/storage/types.ts", "../src/sync/consumer.ts", "../src/sync/provider.ts"],
|
|
4
|
-
"sourcesContent": ["\"use strict\";\n/**\n * The Grapheme_Cluster_Break property value\n * @see https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EXTENDED_PICTOGRAPHIC = exports.CLUSTER_BREAK = void 0;\nvar CLUSTER_BREAK;\n(function (CLUSTER_BREAK) {\n CLUSTER_BREAK[CLUSTER_BREAK[\"CR\"] = 0] = \"CR\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"LF\"] = 1] = \"LF\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"CONTROL\"] = 2] = \"CONTROL\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"EXTEND\"] = 3] = \"EXTEND\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"REGIONAL_INDICATOR\"] = 4] = \"REGIONAL_INDICATOR\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"SPACINGMARK\"] = 5] = \"SPACINGMARK\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"L\"] = 6] = \"L\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"V\"] = 7] = \"V\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"T\"] = 8] = \"T\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"LV\"] = 9] = \"LV\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"LVT\"] = 10] = \"LVT\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"OTHER\"] = 11] = \"OTHER\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"PREPEND\"] = 12] = \"PREPEND\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"E_BASE\"] = 13] = \"E_BASE\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"E_MODIFIER\"] = 14] = \"E_MODIFIER\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"ZWJ\"] = 15] = \"ZWJ\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"GLUE_AFTER_ZWJ\"] = 16] = \"GLUE_AFTER_ZWJ\";\n CLUSTER_BREAK[CLUSTER_BREAK[\"E_BASE_GAZ\"] = 17] = \"E_BASE_GAZ\";\n})(CLUSTER_BREAK = exports.CLUSTER_BREAK || (exports.CLUSTER_BREAK = {}));\n/**\n * The Emoji character property is an extension of UCD but shares the same namespace and structure\n * @see http://www.unicode.org/reports/tr51/tr51-14.html#Emoji_Properties_and_Data_Files\n *\n * Here we model Extended_Pictograhpic only to implement UAX #29 GB11\n * \\p{Extended_Pictographic} Extend* ZWJ\t\u00D7\t\\p{Extended_Pictographic}\n *\n * The Emoji character property should not be mixed with Grapheme_Cluster_Break since they are not exclusive\n */\nexports.EXTENDED_PICTOGRAPHIC = 101;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst boundaries_1 = require(\"./boundaries\");\n// BreakTypes\n// @type {BreakType}\nconst NotBreak = 0;\nconst BreakStart = 1;\nconst Break = 2;\nconst BreakLastRegional = 3;\nconst BreakPenultimateRegional = 4;\nclass GraphemerHelper {\n /**\n * Check if the the character at the position {pos} of the string is surrogate\n * @param str {string}\n * @param pos {number}\n * @returns {boolean}\n */\n static isSurrogate(str, pos) {\n return (0xd800 <= str.charCodeAt(pos) &&\n str.charCodeAt(pos) <= 0xdbff &&\n 0xdc00 <= str.charCodeAt(pos + 1) &&\n str.charCodeAt(pos + 1) <= 0xdfff);\n }\n /**\n * The String.prototype.codePointAt polyfill\n * Private function, gets a Unicode code point from a JavaScript UTF-16 string\n * handling surrogate pairs appropriately\n * @param str {string}\n * @param idx {number}\n * @returns {number}\n */\n static codePointAt(str, idx) {\n if (idx === undefined) {\n idx = 0;\n }\n const code = str.charCodeAt(idx);\n // if a high surrogate\n if (0xd800 <= code && code <= 0xdbff && idx < str.length - 1) {\n const hi = code;\n const low = str.charCodeAt(idx + 1);\n if (0xdc00 <= low && low <= 0xdfff) {\n return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;\n }\n return hi;\n }\n // if a low surrogate\n if (0xdc00 <= code && code <= 0xdfff && idx >= 1) {\n const hi = str.charCodeAt(idx - 1);\n const low = code;\n if (0xd800 <= hi && hi <= 0xdbff) {\n return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;\n }\n return low;\n }\n // just return the char if an unmatched surrogate half or a\n // single-char codepoint\n return code;\n }\n //\n /**\n * Private function, returns whether a break is allowed between the two given grapheme breaking classes\n * Implemented the UAX #29 3.1.1 Grapheme Cluster Boundary Rules on extended grapheme clusters\n * @param start {number}\n * @param mid {Array<number>}\n * @param end {number}\n * @param startEmoji {number}\n * @param midEmoji {Array<number>}\n * @param endEmoji {number}\n * @returns {number}\n */\n static shouldBreak(start, mid, end, startEmoji, midEmoji, endEmoji) {\n const all = [start].concat(mid).concat([end]);\n const allEmoji = [startEmoji].concat(midEmoji).concat([endEmoji]);\n const previous = all[all.length - 2];\n const next = end;\n const nextEmoji = endEmoji;\n // Lookahead terminator for:\n // GB12. ^ (RI RI)* RI ? RI\n // GB13. [^RI] (RI RI)* RI ? RI\n const rIIndex = all.lastIndexOf(boundaries_1.CLUSTER_BREAK.REGIONAL_INDICATOR);\n if (rIIndex > 0 &&\n all.slice(1, rIIndex).every(function (c) {\n return c === boundaries_1.CLUSTER_BREAK.REGIONAL_INDICATOR;\n }) &&\n [boundaries_1.CLUSTER_BREAK.PREPEND, boundaries_1.CLUSTER_BREAK.REGIONAL_INDICATOR].indexOf(previous) === -1) {\n if (all.filter(function (c) {\n return c === boundaries_1.CLUSTER_BREAK.REGIONAL_INDICATOR;\n }).length %\n 2 ===\n 1) {\n return BreakLastRegional;\n }\n else {\n return BreakPenultimateRegional;\n }\n }\n // GB3. CR \u00D7 LF\n if (previous === boundaries_1.CLUSTER_BREAK.CR && next === boundaries_1.CLUSTER_BREAK.LF) {\n return NotBreak;\n }\n // GB4. (Control|CR|LF) \u00F7\n else if (previous === boundaries_1.CLUSTER_BREAK.CONTROL ||\n previous === boundaries_1.CLUSTER_BREAK.CR ||\n previous === boundaries_1.CLUSTER_BREAK.LF) {\n return BreakStart;\n }\n // GB5. \u00F7 (Control|CR|LF)\n else if (next === boundaries_1.CLUSTER_BREAK.CONTROL ||\n next === boundaries_1.CLUSTER_BREAK.CR ||\n next === boundaries_1.CLUSTER_BREAK.LF) {\n return BreakStart;\n }\n // GB6. L \u00D7 (L|V|LV|LVT)\n else if (previous === boundaries_1.CLUSTER_BREAK.L &&\n (next === boundaries_1.CLUSTER_BREAK.L ||\n next === boundaries_1.CLUSTER_BREAK.V ||\n next === boundaries_1.CLUSTER_BREAK.LV ||\n next === boundaries_1.CLUSTER_BREAK.LVT)) {\n return NotBreak;\n }\n // GB7. (LV|V) \u00D7 (V|T)\n else if ((previous === boundaries_1.CLUSTER_BREAK.LV || previous === boundaries_1.CLUSTER_BREAK.V) &&\n (next === boundaries_1.CLUSTER_BREAK.V || next === boundaries_1.CLUSTER_BREAK.T)) {\n return NotBreak;\n }\n // GB8. (LVT|T) \u00D7 (T)\n else if ((previous === boundaries_1.CLUSTER_BREAK.LVT || previous === boundaries_1.CLUSTER_BREAK.T) &&\n next === boundaries_1.CLUSTER_BREAK.T) {\n return NotBreak;\n }\n // GB9. \u00D7 (Extend|ZWJ)\n else if (next === boundaries_1.CLUSTER_BREAK.EXTEND || next === boundaries_1.CLUSTER_BREAK.ZWJ) {\n return NotBreak;\n }\n // GB9a. \u00D7 SpacingMark\n else if (next === boundaries_1.CLUSTER_BREAK.SPACINGMARK) {\n return NotBreak;\n }\n // GB9b. Prepend \u00D7\n else if (previous === boundaries_1.CLUSTER_BREAK.PREPEND) {\n return NotBreak;\n }\n // GB11. \\p{Extended_Pictographic} Extend* ZWJ \u00D7 \\p{Extended_Pictographic}\n const previousNonExtendIndex = allEmoji\n .slice(0, -1)\n .lastIndexOf(boundaries_1.EXTENDED_PICTOGRAPHIC);\n if (previousNonExtendIndex !== -1 &&\n allEmoji[previousNonExtendIndex] === boundaries_1.EXTENDED_PICTOGRAPHIC &&\n all.slice(previousNonExtendIndex + 1, -2).every(function (c) {\n return c === boundaries_1.CLUSTER_BREAK.EXTEND;\n }) &&\n previous === boundaries_1.CLUSTER_BREAK.ZWJ &&\n nextEmoji === boundaries_1.EXTENDED_PICTOGRAPHIC) {\n return NotBreak;\n }\n // GB12. ^ (RI RI)* RI \u00D7 RI\n // GB13. [^RI] (RI RI)* RI \u00D7 RI\n if (mid.indexOf(boundaries_1.CLUSTER_BREAK.REGIONAL_INDICATOR) !== -1) {\n return Break;\n }\n if (previous === boundaries_1.CLUSTER_BREAK.REGIONAL_INDICATOR &&\n next === boundaries_1.CLUSTER_BREAK.REGIONAL_INDICATOR) {\n return NotBreak;\n }\n // GB999. Any ? Any\n return BreakStart;\n }\n}\nexports.default = GraphemerHelper;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * GraphemerIterator\n *\n * Takes a string and a \"BreakHandler\" method during initialisation\n * and creates an iterable object that returns individual graphemes.\n *\n * @param str {string}\n * @return GraphemerIterator\n */\nclass GraphemerIterator {\n constructor(str, nextBreak) {\n this._index = 0;\n this._str = str;\n this._nextBreak = nextBreak;\n }\n [Symbol.iterator]() {\n return this;\n }\n next() {\n let brk;\n if ((brk = this._nextBreak(this._str, this._index)) < this._str.length) {\n const value = this._str.slice(this._index, brk);\n this._index = brk;\n return { value: value, done: false };\n }\n if (this._index < this._str.length) {\n const value = this._str.slice(this._index);\n this._index = this._str.length;\n return { value: value, done: false };\n }\n return { value: undefined, done: true };\n }\n}\nexports.default = GraphemerIterator;\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst boundaries_1 = require(\"./boundaries\");\nconst GraphemerHelper_1 = __importDefault(require(\"./GraphemerHelper\"));\nconst GraphemerIterator_1 = __importDefault(require(\"./GraphemerIterator\"));\nclass Graphemer {\n /**\n * Returns the next grapheme break in the string after the given index\n * @param string {string}\n * @param index {number}\n * @returns {number}\n */\n static nextBreak(string, index) {\n if (index === undefined) {\n index = 0;\n }\n if (index < 0) {\n return 0;\n }\n if (index >= string.length - 1) {\n return string.length;\n }\n const prevCP = GraphemerHelper_1.default.codePointAt(string, index);\n const prev = Graphemer.getGraphemeBreakProperty(prevCP);\n const prevEmoji = Graphemer.getEmojiProperty(prevCP);\n const mid = [];\n const midEmoji = [];\n for (let i = index + 1; i < string.length; i++) {\n // check for already processed low surrogates\n if (GraphemerHelper_1.default.isSurrogate(string, i - 1)) {\n continue;\n }\n const nextCP = GraphemerHelper_1.default.codePointAt(string, i);\n const next = Graphemer.getGraphemeBreakProperty(nextCP);\n const nextEmoji = Graphemer.getEmojiProperty(nextCP);\n if (GraphemerHelper_1.default.shouldBreak(prev, mid, next, prevEmoji, midEmoji, nextEmoji)) {\n return i;\n }\n mid.push(next);\n midEmoji.push(nextEmoji);\n }\n return string.length;\n }\n /**\n * Breaks the given string into an array of grapheme clusters\n * @param str {string}\n * @returns {string[]}\n */\n splitGraphemes(str) {\n const res = [];\n let index = 0;\n let brk;\n while ((brk = Graphemer.nextBreak(str, index)) < str.length) {\n res.push(str.slice(index, brk));\n index = brk;\n }\n if (index < str.length) {\n res.push(str.slice(index));\n }\n return res;\n }\n /**\n * Returns an iterator of grapheme clusters in the given string\n * @param str {string}\n * @returns {GraphemerIterator}\n */\n iterateGraphemes(str) {\n return new GraphemerIterator_1.default(str, Graphemer.nextBreak);\n }\n /**\n * Returns the number of grapheme clusters in the given string\n * @param str {string}\n * @returns {number}\n */\n countGraphemes(str) {\n let count = 0;\n let index = 0;\n let brk;\n while ((brk = Graphemer.nextBreak(str, index)) < str.length) {\n index = brk;\n count++;\n }\n if (index < str.length) {\n count++;\n }\n return count;\n }\n /**\n * Given a Unicode code point, determines this symbol's grapheme break property\n * @param code {number} Unicode code point\n * @returns {number}\n */\n static getGraphemeBreakProperty(code) {\n // Grapheme break property taken from:\n // https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt\n // and generated by\n // node ./scripts/generate-grapheme-break.js\n if (code < 0xbf09) {\n if (code < 0xac54) {\n if (code < 0x102d) {\n if (code < 0xb02) {\n if (code < 0x93b) {\n if (code < 0x6df) {\n if (code < 0x5bf) {\n if (code < 0x7f) {\n if (code < 0xb) {\n if (code < 0xa) {\n // Cc [10] <control-0000>..<control-0009>\n if (0x0 <= code && code <= 0x9) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n else {\n // Cc <control-000A>\n if (0xa === code) {\n return boundaries_1.CLUSTER_BREAK.LF;\n }\n }\n }\n else {\n if (code < 0xd) {\n // Cc [2] <control-000B>..<control-000C>\n if (0xb <= code && code <= 0xc) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n else {\n if (code < 0xe) {\n // Cc <control-000D>\n if (0xd === code) {\n return boundaries_1.CLUSTER_BREAK.CR;\n }\n }\n else {\n // Cc [18] <control-000E>..<control-001F>\n if (0xe <= code && code <= 0x1f) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n }\n }\n }\n else {\n if (code < 0x300) {\n if (code < 0xad) {\n // Cc [33] <control-007F>..<control-009F>\n if (0x7f <= code && code <= 0x9f) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n else {\n // Cf SOFT HYPHEN\n if (0xad === code) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n }\n else {\n if (code < 0x483) {\n // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X\n if (0x300 <= code && code <= 0x36f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x591) {\n // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE\n // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN\n if (0x483 <= code && code <= 0x489) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG\n if (0x591 <= code && code <= 0x5bd) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x610) {\n if (code < 0x5c4) {\n if (code < 0x5c1) {\n // Mn HEBREW POINT RAFE\n if (0x5bf === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT\n if (0x5c1 <= code && code <= 0x5c2) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x5c7) {\n // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT\n if (0x5c4 <= code && code <= 0x5c5) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x600) {\n // Mn HEBREW POINT QAMATS QATAN\n if (0x5c7 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE\n if (0x600 <= code && code <= 0x605) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x670) {\n if (code < 0x61c) {\n // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA\n if (0x610 <= code && code <= 0x61a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x64b) {\n // Cf ARABIC LETTER MARK\n if (0x61c === code) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n else {\n // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW\n if (0x64b <= code && code <= 0x65f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x6d6) {\n // Mn ARABIC LETTER SUPERSCRIPT ALEF\n if (0x670 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x6dd) {\n // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN\n if (0x6d6 <= code && code <= 0x6dc) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Cf ARABIC END OF AYAH\n if (0x6dd === code) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x81b) {\n if (code < 0x730) {\n if (code < 0x6ea) {\n if (code < 0x6e7) {\n // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA\n if (0x6df <= code && code <= 0x6e4) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON\n if (0x6e7 <= code && code <= 0x6e8) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x70f) {\n // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM\n if (0x6ea <= code && code <= 0x6ed) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Cf SYRIAC ABBREVIATION MARK\n if (0x70f === code) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n // Mn SYRIAC LETTER SUPERSCRIPT ALAPH\n if (0x711 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x7eb) {\n if (code < 0x7a6) {\n // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH\n if (0x730 <= code && code <= 0x74a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [11] THAANA ABAFILI..THAANA SUKUN\n if (0x7a6 <= code && code <= 0x7b0) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x7fd) {\n // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE\n if (0x7eb <= code && code <= 0x7f3) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x816) {\n // Mn NKO DANTAYALAN\n if (0x7fd === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH\n if (0x816 <= code && code <= 0x819) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x898) {\n if (code < 0x829) {\n if (code < 0x825) {\n // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A\n if (0x81b <= code && code <= 0x823) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U\n if (0x825 <= code && code <= 0x827) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x859) {\n // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA\n if (0x829 <= code && code <= 0x82d) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x890) {\n // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK\n if (0x859 <= code && code <= 0x85b) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE\n if (0x890 <= code && code <= 0x891) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x8e3) {\n if (code < 0x8ca) {\n // Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA\n if (0x898 <= code && code <= 0x89f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x8e2) {\n // Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA\n if (0x8ca <= code && code <= 0x8e1) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Cf ARABIC DISPUTED END OF AYAH\n if (0x8e2 === code) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n }\n }\n }\n else {\n if (code < 0x903) {\n // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA\n if (0x8e3 <= code && code <= 0x902) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc DEVANAGARI SIGN VISARGA\n if (0x903 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn DEVANAGARI VOWEL SIGN OE\n if (0x93a === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xa01) {\n if (code < 0x982) {\n if (code < 0x94d) {\n if (code < 0x93e) {\n // Mc DEVANAGARI VOWEL SIGN OOE\n if (0x93b === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn DEVANAGARI SIGN NUKTA\n if (0x93c === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x941) {\n // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II\n if (0x93e <= code && code <= 0x940) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x949) {\n // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI\n if (0x941 <= code && code <= 0x948) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU\n if (0x949 <= code && code <= 0x94c) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0x951) {\n if (code < 0x94e) {\n // Mn DEVANAGARI SIGN VIRAMA\n if (0x94d === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW\n if (0x94e <= code && code <= 0x94f) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x962) {\n // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE\n if (0x951 <= code && code <= 0x957) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x981) {\n // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL\n if (0x962 <= code && code <= 0x963) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn BENGALI SIGN CANDRABINDU\n if (0x981 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x9c7) {\n if (code < 0x9be) {\n if (code < 0x9bc) {\n // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA\n if (0x982 <= code && code <= 0x983) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn BENGALI SIGN NUKTA\n if (0x9bc === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x9bf) {\n // Mc BENGALI VOWEL SIGN AA\n if (0x9be === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x9c1) {\n // Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II\n if (0x9bf <= code && code <= 0x9c0) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR\n if (0x9c1 <= code && code <= 0x9c4) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x9d7) {\n if (code < 0x9cb) {\n // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI\n if (0x9c7 <= code && code <= 0x9c8) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x9cd) {\n // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU\n if (0x9cb <= code && code <= 0x9cc) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn BENGALI SIGN VIRAMA\n if (0x9cd === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x9e2) {\n // Mc BENGALI AU LENGTH MARK\n if (0x9d7 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x9fe) {\n // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL\n if (0x9e2 <= code && code <= 0x9e3) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn BENGALI SANDHI MARK\n if (0x9fe === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xa83) {\n if (code < 0xa47) {\n if (code < 0xa3c) {\n if (code < 0xa03) {\n // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI\n if (0xa01 <= code && code <= 0xa02) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc GURMUKHI SIGN VISARGA\n if (0xa03 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0xa3e) {\n // Mn GURMUKHI SIGN NUKTA\n if (0xa3c === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xa41) {\n // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II\n if (0xa3e <= code && code <= 0xa40) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU\n if (0xa41 <= code && code <= 0xa42) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0xa70) {\n if (code < 0xa4b) {\n // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI\n if (0xa47 <= code && code <= 0xa48) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xa51) {\n // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA\n if (0xa4b <= code && code <= 0xa4d) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn GURMUKHI SIGN UDAAT\n if (0xa51 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0xa75) {\n // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK\n if (0xa70 <= code && code <= 0xa71) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xa81) {\n // Mn GURMUKHI SIGN YAKASH\n if (0xa75 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA\n if (0xa81 <= code && code <= 0xa82) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xac9) {\n if (code < 0xabe) {\n // Mc GUJARATI SIGN VISARGA\n if (0xa83 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn GUJARATI SIGN NUKTA\n if (0xabc === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xac1) {\n // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II\n if (0xabe <= code && code <= 0xac0) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0xac7) {\n // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E\n if (0xac1 <= code && code <= 0xac5) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI\n if (0xac7 <= code && code <= 0xac8) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0xae2) {\n if (code < 0xacb) {\n // Mc GUJARATI VOWEL SIGN CANDRA O\n if (0xac9 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0xacd) {\n // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU\n if (0xacb <= code && code <= 0xacc) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn GUJARATI SIGN VIRAMA\n if (0xacd === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0xafa) {\n // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL\n if (0xae2 <= code && code <= 0xae3) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xb01) {\n // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE\n if (0xafa <= code && code <= 0xaff) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn ORIYA SIGN CANDRABINDU\n if (0xb01 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xcf3) {\n if (code < 0xc04) {\n if (code < 0xb82) {\n if (code < 0xb47) {\n if (code < 0xb3e) {\n if (code < 0xb3c) {\n // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA\n if (0xb02 <= code && code <= 0xb03) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn ORIYA SIGN NUKTA\n if (0xb3c === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0xb40) {\n // Mc ORIYA VOWEL SIGN AA\n // Mn ORIYA VOWEL SIGN I\n if (0xb3e <= code && code <= 0xb3f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xb41) {\n // Mc ORIYA VOWEL SIGN II\n if (0xb40 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR\n if (0xb41 <= code && code <= 0xb44) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb4d) {\n if (code < 0xb4b) {\n // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI\n if (0xb47 <= code && code <= 0xb48) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU\n if (0xb4b <= code && code <= 0xb4c) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0xb55) {\n // Mn ORIYA SIGN VIRAMA\n if (0xb4d === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xb62) {\n // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK\n // Mc ORIYA AU LENGTH MARK\n if (0xb55 <= code && code <= 0xb57) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL\n if (0xb62 <= code && code <= 0xb63) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xbc6) {\n if (code < 0xbbf) {\n // Mn TAMIL SIGN ANUSVARA\n if (0xb82 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mc TAMIL VOWEL SIGN AA\n if (0xbbe === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xbc0) {\n // Mc TAMIL VOWEL SIGN I\n if (0xbbf === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0xbc1) {\n // Mn TAMIL VOWEL SIGN II\n if (0xbc0 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU\n if (0xbc1 <= code && code <= 0xbc2) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0xbd7) {\n if (code < 0xbca) {\n // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI\n if (0xbc6 <= code && code <= 0xbc8) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0xbcd) {\n // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU\n if (0xbca <= code && code <= 0xbcc) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn TAMIL SIGN VIRAMA\n if (0xbcd === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0xc00) {\n // Mc TAMIL AU LENGTH MARK\n if (0xbd7 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xc01) {\n // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE\n if (0xc00 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA\n if (0xc01 <= code && code <= 0xc03) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xcbe) {\n if (code < 0xc4a) {\n if (code < 0xc3e) {\n // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE\n if (0xc04 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mn TELUGU SIGN NUKTA\n if (0xc3c === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xc41) {\n // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II\n if (0xc3e <= code && code <= 0xc40) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xc46) {\n // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR\n if (0xc41 <= code && code <= 0xc44) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI\n if (0xc46 <= code && code <= 0xc48) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc81) {\n if (code < 0xc55) {\n // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA\n if (0xc4a <= code && code <= 0xc4d) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xc62) {\n // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK\n if (0xc55 <= code && code <= 0xc56) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL\n if (0xc62 <= code && code <= 0xc63) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0xc82) {\n // Mn KANNADA SIGN CANDRABINDU\n if (0xc81 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xcbc) {\n // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA\n if (0xc82 <= code && code <= 0xc83) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn KANNADA SIGN NUKTA\n if (0xcbc === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xcc6) {\n if (code < 0xcc0) {\n // Mc KANNADA VOWEL SIGN AA\n if (0xcbe === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn KANNADA VOWEL SIGN I\n if (0xcbf === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xcc2) {\n // Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U\n if (0xcc0 <= code && code <= 0xcc1) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0xcc3) {\n // Mc KANNADA VOWEL SIGN UU\n if (0xcc2 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR\n if (0xcc3 <= code && code <= 0xcc4) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0xccc) {\n if (code < 0xcc7) {\n // Mn KANNADA VOWEL SIGN E\n if (0xcc6 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xcca) {\n // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI\n if (0xcc7 <= code && code <= 0xcc8) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO\n if (0xcca <= code && code <= 0xccb) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0xcd5) {\n // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA\n if (0xccc <= code && code <= 0xccd) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xce2) {\n // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK\n if (0xcd5 <= code && code <= 0xcd6) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL\n if (0xce2 <= code && code <= 0xce3) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xddf) {\n if (code < 0xd4e) {\n if (code < 0xd3f) {\n if (code < 0xd02) {\n if (code < 0xd00) {\n // Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT\n if (0xcf3 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU\n if (0xd00 <= code && code <= 0xd01) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0xd3b) {\n // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA\n if (0xd02 <= code && code <= 0xd03) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0xd3e) {\n // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA\n if (0xd3b <= code && code <= 0xd3c) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc MALAYALAM VOWEL SIGN AA\n if (0xd3e === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd46) {\n if (code < 0xd41) {\n // Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II\n if (0xd3f <= code && code <= 0xd40) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR\n if (0xd41 <= code && code <= 0xd44) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0xd4a) {\n // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI\n if (0xd46 <= code && code <= 0xd48) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0xd4d) {\n // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU\n if (0xd4a <= code && code <= 0xd4c) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn MALAYALAM SIGN VIRAMA\n if (0xd4d === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xdca) {\n if (code < 0xd62) {\n // Lo MALAYALAM LETTER DOT REPH\n if (0xd4e === code) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n // Mc MALAYALAM AU LENGTH MARK\n if (0xd57 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xd81) {\n // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL\n if (0xd62 <= code && code <= 0xd63) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xd82) {\n // Mn SINHALA SIGN CANDRABINDU\n if (0xd81 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA\n if (0xd82 <= code && code <= 0xd83) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0xdd2) {\n if (code < 0xdcf) {\n // Mn SINHALA SIGN AL-LAKUNA\n if (0xdca === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xdd0) {\n // Mc SINHALA VOWEL SIGN AELA-PILLA\n if (0xdcf === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA\n if (0xdd0 <= code && code <= 0xdd1) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0xdd6) {\n // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA\n if (0xdd2 <= code && code <= 0xdd4) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xdd8) {\n // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA\n if (0xdd6 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA\n if (0xdd8 <= code && code <= 0xdde) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xf35) {\n if (code < 0xe47) {\n if (code < 0xe31) {\n if (code < 0xdf2) {\n // Mc SINHALA VOWEL SIGN GAYANUKITTA\n if (0xddf === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA\n if (0xdf2 <= code && code <= 0xdf3) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0xe33) {\n // Mn THAI CHARACTER MAI HAN-AKAT\n if (0xe31 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xe34) {\n // Lo THAI CHARACTER SARA AM\n if (0xe33 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU\n if (0xe34 <= code && code <= 0xe3a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0xeb4) {\n if (code < 0xeb1) {\n // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN\n if (0xe47 <= code && code <= 0xe4e) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn LAO VOWEL SIGN MAI KAN\n if (0xeb1 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Lo LAO VOWEL SIGN AM\n if (0xeb3 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0xec8) {\n // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO\n if (0xeb4 <= code && code <= 0xebc) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xf18) {\n // Mn [7] LAO TONE MAI EK..LAO YAMAKKAN\n if (0xec8 <= code && code <= 0xece) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS\n if (0xf18 <= code && code <= 0xf19) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xf7f) {\n if (code < 0xf39) {\n // Mn TIBETAN MARK NGAS BZUNG NYI ZLA\n if (0xf35 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS\n if (0xf37 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xf3e) {\n // Mn TIBETAN MARK TSA -PHRU\n if (0xf39 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xf71) {\n // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES\n if (0xf3e <= code && code <= 0xf3f) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO\n if (0xf71 <= code && code <= 0xf7e) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0xf8d) {\n if (code < 0xf80) {\n // Mc TIBETAN SIGN RNAM BCAD\n if (0xf7f === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0xf86) {\n // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA\n if (0xf80 <= code && code <= 0xf84) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS\n if (0xf86 <= code && code <= 0xf87) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0xf99) {\n // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA\n if (0xf8d <= code && code <= 0xf97) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xfc6) {\n // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA\n if (0xf99 <= code && code <= 0xfbc) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn TIBETAN SYMBOL PADMA GDAN\n if (0xfc6 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1c24) {\n if (code < 0x1930) {\n if (code < 0x1732) {\n if (code < 0x1082) {\n if (code < 0x103d) {\n if (code < 0x1032) {\n if (code < 0x1031) {\n // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU\n if (0x102d <= code && code <= 0x1030) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc MYANMAR VOWEL SIGN E\n if (0x1031 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x1039) {\n // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW\n if (0x1032 <= code && code <= 0x1037) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x103b) {\n // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT\n if (0x1039 <= code && code <= 0x103a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA\n if (0x103b <= code && code <= 0x103c) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1058) {\n if (code < 0x1056) {\n // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA\n if (0x103d <= code && code <= 0x103e) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR\n if (0x1056 <= code && code <= 0x1057) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x105e) {\n // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL\n if (0x1058 <= code && code <= 0x1059) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1071) {\n // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA\n if (0x105e <= code && code <= 0x1060) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE\n if (0x1071 <= code && code <= 0x1074) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1100) {\n if (code < 0x1085) {\n // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA\n if (0x1082 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mc MYANMAR VOWEL SIGN SHAN E\n if (0x1084 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x108d) {\n // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y\n if (0x1085 <= code && code <= 0x1086) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE\n if (0x108d === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mn MYANMAR VOWEL SIGN AITON AI\n if (0x109d === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x135d) {\n if (code < 0x1160) {\n // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER\n if (0x1100 <= code && code <= 0x115f) {\n return boundaries_1.CLUSTER_BREAK.L;\n }\n }\n else {\n if (code < 0x11a8) {\n // Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE\n if (0x1160 <= code && code <= 0x11a7) {\n return boundaries_1.CLUSTER_BREAK.V;\n }\n }\n else {\n // Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN\n if (0x11a8 <= code && code <= 0x11ff) {\n return boundaries_1.CLUSTER_BREAK.T;\n }\n }\n }\n }\n else {\n if (code < 0x1712) {\n // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK\n if (0x135d <= code && code <= 0x135f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1715) {\n // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA\n if (0x1712 <= code && code <= 0x1714) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc TAGALOG SIGN PAMUDPOD\n if (0x1715 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x17c9) {\n if (code < 0x17b6) {\n if (code < 0x1752) {\n if (code < 0x1734) {\n // Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U\n if (0x1732 <= code && code <= 0x1733) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc HANUNOO SIGN PAMUDPOD\n if (0x1734 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x1772) {\n // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U\n if (0x1752 <= code && code <= 0x1753) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x17b4) {\n // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U\n if (0x1772 <= code && code <= 0x1773) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA\n if (0x17b4 <= code && code <= 0x17b5) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x17be) {\n if (code < 0x17b7) {\n // Mc KHMER VOWEL SIGN AA\n if (0x17b6 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA\n if (0x17b7 <= code && code <= 0x17bd) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x17c6) {\n // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU\n if (0x17be <= code && code <= 0x17c5) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x17c7) {\n // Mn KHMER SIGN NIKAHIT\n if (0x17c6 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU\n if (0x17c7 <= code && code <= 0x17c8) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1885) {\n if (code < 0x180b) {\n if (code < 0x17dd) {\n // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT\n if (0x17c9 <= code && code <= 0x17d3) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn KHMER SIGN ATTHACAN\n if (0x17dd === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x180e) {\n // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE\n if (0x180b <= code && code <= 0x180d) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Cf MONGOLIAN VOWEL SEPARATOR\n if (0x180e === code) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n // Mn MONGOLIAN FREE VARIATION SELECTOR FOUR\n if (0x180f === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x1923) {\n if (code < 0x18a9) {\n // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA\n if (0x1885 <= code && code <= 0x1886) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1920) {\n // Mn MONGOLIAN LETTER ALI GALI DAGALGA\n if (0x18a9 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U\n if (0x1920 <= code && code <= 0x1922) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x1927) {\n // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU\n if (0x1923 <= code && code <= 0x1926) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x1929) {\n // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O\n if (0x1927 <= code && code <= 0x1928) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA\n if (0x1929 <= code && code <= 0x192b) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1b3b) {\n if (code < 0x1a58) {\n if (code < 0x1a19) {\n if (code < 0x1933) {\n if (code < 0x1932) {\n // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA\n if (0x1930 <= code && code <= 0x1931) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn LIMBU SMALL LETTER ANUSVARA\n if (0x1932 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x1939) {\n // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA\n if (0x1933 <= code && code <= 0x1938) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x1a17) {\n // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I\n if (0x1939 <= code && code <= 0x193b) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U\n if (0x1a17 <= code && code <= 0x1a18) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1a55) {\n if (code < 0x1a1b) {\n // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O\n if (0x1a19 <= code && code <= 0x1a1a) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn BUGINESE VOWEL SIGN AE\n if (0x1a1b === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x1a56) {\n // Mc TAI THAM CONSONANT SIGN MEDIAL RA\n if (0x1a55 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn TAI THAM CONSONANT SIGN MEDIAL LA\n if (0x1a56 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mc TAI THAM CONSONANT SIGN LA TANG LAI\n if (0x1a57 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1a73) {\n if (code < 0x1a62) {\n if (code < 0x1a60) {\n // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA\n if (0x1a58 <= code && code <= 0x1a5e) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn TAI THAM SIGN SAKOT\n if (0x1a60 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x1a65) {\n // Mn TAI THAM VOWEL SIGN MAI SAT\n if (0x1a62 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1a6d) {\n // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW\n if (0x1a65 <= code && code <= 0x1a6c) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI\n if (0x1a6d <= code && code <= 0x1a72) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1b00) {\n if (code < 0x1a7f) {\n // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN\n if (0x1a73 <= code && code <= 0x1a7c) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1ab0) {\n // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT\n if (0x1a7f === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW\n // Me COMBINING PARENTHESES OVERLAY\n // Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T\n if (0x1ab0 <= code && code <= 0x1ace) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x1b04) {\n // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG\n if (0x1b00 <= code && code <= 0x1b03) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1b34) {\n // Mc BALINESE SIGN BISAH\n if (0x1b04 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn BALINESE SIGN REREKAN\n // Mc BALINESE VOWEL SIGN TEDUNG\n // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA\n if (0x1b34 <= code && code <= 0x1b3a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1ba8) {\n if (code < 0x1b6b) {\n if (code < 0x1b3d) {\n // Mc BALINESE VOWEL SIGN RA REPA TEDUNG\n if (0x1b3b === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn BALINESE VOWEL SIGN LA LENGA\n if (0x1b3c === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1b42) {\n // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG\n if (0x1b3d <= code && code <= 0x1b41) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x1b43) {\n // Mn BALINESE VOWEL SIGN PEPET\n if (0x1b42 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG\n if (0x1b43 <= code && code <= 0x1b44) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1ba1) {\n if (code < 0x1b80) {\n // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG\n if (0x1b6b <= code && code <= 0x1b73) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1b82) {\n // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR\n if (0x1b80 <= code && code <= 0x1b81) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc SUNDANESE SIGN PANGWISAD\n if (0x1b82 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0x1ba2) {\n // Mc SUNDANESE CONSONANT SIGN PAMINGKAL\n if (0x1ba1 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x1ba6) {\n // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU\n if (0x1ba2 <= code && code <= 0x1ba5) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG\n if (0x1ba6 <= code && code <= 0x1ba7) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1be8) {\n if (code < 0x1bab) {\n if (code < 0x1baa) {\n // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG\n if (0x1ba8 <= code && code <= 0x1ba9) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc SUNDANESE SIGN PAMAAEH\n if (0x1baa === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x1be6) {\n // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA\n if (0x1bab <= code && code <= 0x1bad) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn BATAK SIGN TOMPI\n if (0x1be6 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mc BATAK VOWEL SIGN E\n if (0x1be7 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0x1bee) {\n if (code < 0x1bea) {\n // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE\n if (0x1be8 <= code && code <= 0x1be9) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1bed) {\n // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O\n if (0x1bea <= code && code <= 0x1bec) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn BATAK VOWEL SIGN KARO O\n if (0x1bed === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x1bef) {\n // Mc BATAK VOWEL SIGN U\n if (0x1bee === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x1bf2) {\n // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H\n if (0x1bef <= code && code <= 0x1bf1) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN\n if (0x1bf2 <= code && code <= 0x1bf3) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xa952) {\n if (code < 0x2d7f) {\n if (code < 0x1cf7) {\n if (code < 0x1cd4) {\n if (code < 0x1c34) {\n if (code < 0x1c2c) {\n // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU\n if (0x1c24 <= code && code <= 0x1c2b) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T\n if (0x1c2c <= code && code <= 0x1c33) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x1c36) {\n // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG\n if (0x1c34 <= code && code <= 0x1c35) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x1cd0) {\n // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA\n if (0x1c36 <= code && code <= 0x1c37) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA\n if (0x1cd0 <= code && code <= 0x1cd2) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1ce2) {\n if (code < 0x1ce1) {\n // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA\n if (0x1cd4 <= code && code <= 0x1ce0) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA\n if (0x1ce1 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x1ced) {\n // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL\n if (0x1ce2 <= code && code <= 0x1ce8) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn VEDIC SIGN TIRYAK\n if (0x1ced === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mn VEDIC TONE CANDRA ABOVE\n if (0x1cf4 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x200d) {\n if (code < 0x1dc0) {\n if (code < 0x1cf8) {\n // Mc VEDIC SIGN ATIKRAMA\n if (0x1cf7 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE\n if (0x1cf8 <= code && code <= 0x1cf9) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x200b) {\n // Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW\n if (0x1dc0 <= code && code <= 0x1dff) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Cf ZERO WIDTH SPACE\n if (0x200b === code) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n // Cf ZERO WIDTH NON-JOINER\n if (0x200c === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x2060) {\n if (code < 0x200e) {\n // Cf ZERO WIDTH JOINER\n if (0x200d === code) {\n return boundaries_1.CLUSTER_BREAK.ZWJ;\n }\n }\n else {\n if (code < 0x2028) {\n // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK\n if (0x200e <= code && code <= 0x200f) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n else {\n // Zl LINE SEPARATOR\n // Zp PARAGRAPH SEPARATOR\n // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE\n if (0x2028 <= code && code <= 0x202e) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n }\n }\n else {\n if (code < 0x20d0) {\n // Cf [5] WORD JOINER..INVISIBLE PLUS\n // Cn <reserved-2065>\n // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES\n if (0x2060 <= code && code <= 0x206f) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n else {\n if (code < 0x2cef) {\n // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE\n // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH\n // Mn COMBINING LEFT RIGHT ARROW ABOVE\n // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE\n // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE\n if (0x20d0 <= code && code <= 0x20f0) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS\n if (0x2cef <= code && code <= 0x2cf1) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xa823) {\n if (code < 0xa674) {\n if (code < 0x302a) {\n if (code < 0x2de0) {\n // Mn TIFINAGH CONSONANT JOINER\n if (0x2d7f === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS\n if (0x2de0 <= code && code <= 0x2dff) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x3099) {\n // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK\n // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK\n if (0x302a <= code && code <= 0x302f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xa66f) {\n // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK\n if (0x3099 <= code && code <= 0x309a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn COMBINING CYRILLIC VZMET\n // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN\n if (0xa66f <= code && code <= 0xa672) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0xa802) {\n if (code < 0xa69e) {\n // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK\n if (0xa674 <= code && code <= 0xa67d) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xa6f0) {\n // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E\n if (0xa69e <= code && code <= 0xa69f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS\n if (0xa6f0 <= code && code <= 0xa6f1) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0xa806) {\n // Mn SYLOTI NAGRI SIGN DVISVARA\n if (0xa802 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn SYLOTI NAGRI SIGN HASANTA\n if (0xa806 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mn SYLOTI NAGRI SIGN ANUSVARA\n if (0xa80b === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0xa8b4) {\n if (code < 0xa827) {\n if (code < 0xa825) {\n // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I\n if (0xa823 <= code && code <= 0xa824) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E\n if (0xa825 <= code && code <= 0xa826) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0xa82c) {\n // Mc SYLOTI NAGRI VOWEL SIGN OO\n if (0xa827 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0xa880) {\n // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA\n if (0xa82c === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA\n if (0xa880 <= code && code <= 0xa881) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0xa8ff) {\n if (code < 0xa8c4) {\n // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU\n if (0xa8b4 <= code && code <= 0xa8c3) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0xa8e0) {\n // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU\n if (0xa8c4 <= code && code <= 0xa8c5) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA\n if (0xa8e0 <= code && code <= 0xa8f1) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0xa926) {\n // Mn DEVANAGARI VOWEL SIGN AY\n if (0xa8ff === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xa947) {\n // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU\n if (0xa926 <= code && code <= 0xa92d) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R\n if (0xa947 <= code && code <= 0xa951) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xaab2) {\n if (code < 0xa9e5) {\n if (code < 0xa9b4) {\n if (code < 0xa980) {\n if (code < 0xa960) {\n // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA\n if (0xa952 <= code && code <= 0xa953) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH\n if (0xa960 <= code && code <= 0xa97c) {\n return boundaries_1.CLUSTER_BREAK.L;\n }\n }\n }\n else {\n if (code < 0xa983) {\n // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR\n if (0xa980 <= code && code <= 0xa982) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc JAVANESE SIGN WIGNYAN\n if (0xa983 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn JAVANESE SIGN CECAK TELU\n if (0xa9b3 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0xa9ba) {\n if (code < 0xa9b6) {\n // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG\n if (0xa9b4 <= code && code <= 0xa9b5) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT\n if (0xa9b6 <= code && code <= 0xa9b9) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0xa9bc) {\n // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE\n if (0xa9ba <= code && code <= 0xa9bb) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0xa9be) {\n // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET\n if (0xa9bc <= code && code <= 0xa9bd) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON\n if (0xa9be <= code && code <= 0xa9c0) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xaa35) {\n if (code < 0xaa2f) {\n if (code < 0xaa29) {\n // Mn MYANMAR SIGN SHAN SAW\n if (0xa9e5 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE\n if (0xaa29 <= code && code <= 0xaa2e) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0xaa31) {\n // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI\n if (0xaa2f <= code && code <= 0xaa30) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0xaa33) {\n // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE\n if (0xaa31 <= code && code <= 0xaa32) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA\n if (0xaa33 <= code && code <= 0xaa34) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0xaa4d) {\n if (code < 0xaa43) {\n // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA\n if (0xaa35 <= code && code <= 0xaa36) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn CHAM CONSONANT SIGN FINAL NG\n if (0xaa43 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mn CHAM CONSONANT SIGN FINAL M\n if (0xaa4c === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0xaa7c) {\n // Mc CHAM CONSONANT SIGN FINAL H\n if (0xaa4d === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn MYANMAR SIGN TAI LAING TONE-2\n if (0xaa7c === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mn TAI VIET MAI KANG\n if (0xaab0 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xabe6) {\n if (code < 0xaaec) {\n if (code < 0xaabe) {\n if (code < 0xaab7) {\n // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U\n if (0xaab2 <= code && code <= 0xaab4) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA\n if (0xaab7 <= code && code <= 0xaab8) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0xaac1) {\n // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK\n if (0xaabe <= code && code <= 0xaabf) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn TAI VIET TONE MAI THO\n if (0xaac1 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mc MEETEI MAYEK VOWEL SIGN II\n if (0xaaeb === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0xaaf6) {\n if (code < 0xaaee) {\n // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI\n if (0xaaec <= code && code <= 0xaaed) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xaaf5) {\n // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU\n if (0xaaee <= code && code <= 0xaaef) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mc MEETEI MAYEK VOWEL SIGN VISARGA\n if (0xaaf5 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0xabe3) {\n // Mn MEETEI MAYEK VIRAMA\n if (0xaaf6 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xabe5) {\n // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP\n if (0xabe3 <= code && code <= 0xabe4) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn MEETEI MAYEK VOWEL SIGN ANAP\n if (0xabe5 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xac00) {\n if (code < 0xabe9) {\n if (code < 0xabe8) {\n // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP\n if (0xabe6 <= code && code <= 0xabe7) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn MEETEI MAYEK VOWEL SIGN UNAP\n if (0xabe8 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0xabec) {\n // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG\n if (0xabe9 <= code && code <= 0xabea) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mc MEETEI MAYEK LUM IYEK\n if (0xabec === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn MEETEI MAYEK APUN IYEK\n if (0xabed === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0xac1d) {\n if (code < 0xac01) {\n // Lo HANGUL SYLLABLE GA\n if (0xac00 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xac1c) {\n // Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH\n if (0xac01 <= code && code <= 0xac1b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GAE\n if (0xac1c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xac38) {\n // Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH\n if (0xac1d <= code && code <= 0xac37) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xac39) {\n // Lo HANGUL SYLLABLE GYA\n if (0xac38 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH\n if (0xac39 <= code && code <= 0xac53) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb5a1) {\n if (code < 0xb0ed) {\n if (code < 0xaea0) {\n if (code < 0xad6d) {\n if (code < 0xace0) {\n if (code < 0xac8d) {\n if (code < 0xac70) {\n if (code < 0xac55) {\n // Lo HANGUL SYLLABLE GYAE\n if (0xac54 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH\n if (0xac55 <= code && code <= 0xac6f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xac71) {\n // Lo HANGUL SYLLABLE GEO\n if (0xac70 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xac8c) {\n // Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH\n if (0xac71 <= code && code <= 0xac8b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GE\n if (0xac8c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xaca9) {\n if (code < 0xaca8) {\n // Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH\n if (0xac8d <= code && code <= 0xaca7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GYEO\n if (0xaca8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xacc4) {\n // Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH\n if (0xaca9 <= code && code <= 0xacc3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xacc5) {\n // Lo HANGUL SYLLABLE GYE\n if (0xacc4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH\n if (0xacc5 <= code && code <= 0xacdf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xad19) {\n if (code < 0xacfc) {\n if (code < 0xace1) {\n // Lo HANGUL SYLLABLE GO\n if (0xace0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH\n if (0xace1 <= code && code <= 0xacfb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xacfd) {\n // Lo HANGUL SYLLABLE GWA\n if (0xacfc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xad18) {\n // Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH\n if (0xacfd <= code && code <= 0xad17) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GWAE\n if (0xad18 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xad50) {\n if (code < 0xad34) {\n // Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH\n if (0xad19 <= code && code <= 0xad33) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xad35) {\n // Lo HANGUL SYLLABLE GOE\n if (0xad34 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH\n if (0xad35 <= code && code <= 0xad4f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xad51) {\n // Lo HANGUL SYLLABLE GYO\n if (0xad50 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xad6c) {\n // Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH\n if (0xad51 <= code && code <= 0xad6b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GU\n if (0xad6c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xadf9) {\n if (code < 0xadc0) {\n if (code < 0xad89) {\n if (code < 0xad88) {\n // Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH\n if (0xad6d <= code && code <= 0xad87) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GWEO\n if (0xad88 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xada4) {\n // Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH\n if (0xad89 <= code && code <= 0xada3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xada5) {\n // Lo HANGUL SYLLABLE GWE\n if (0xada4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH\n if (0xada5 <= code && code <= 0xadbf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xaddc) {\n if (code < 0xadc1) {\n // Lo HANGUL SYLLABLE GWI\n if (0xadc0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH\n if (0xadc1 <= code && code <= 0xaddb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xaddd) {\n // Lo HANGUL SYLLABLE GYU\n if (0xaddc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xadf8) {\n // Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH\n if (0xaddd <= code && code <= 0xadf7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GEU\n if (0xadf8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xae4c) {\n if (code < 0xae15) {\n if (code < 0xae14) {\n // Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH\n if (0xadf9 <= code && code <= 0xae13) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GYI\n if (0xae14 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xae30) {\n // Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH\n if (0xae15 <= code && code <= 0xae2f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xae31) {\n // Lo HANGUL SYLLABLE GI\n if (0xae30 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH\n if (0xae31 <= code && code <= 0xae4b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xae69) {\n if (code < 0xae4d) {\n // Lo HANGUL SYLLABLE GGA\n if (0xae4c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xae68) {\n // Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH\n if (0xae4d <= code && code <= 0xae67) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GGAE\n if (0xae68 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xae84) {\n // Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH\n if (0xae69 <= code && code <= 0xae83) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xae85) {\n // Lo HANGUL SYLLABLE GGYA\n if (0xae84 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH\n if (0xae85 <= code && code <= 0xae9f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xafb9) {\n if (code < 0xaf2c) {\n if (code < 0xaed9) {\n if (code < 0xaebc) {\n if (code < 0xaea1) {\n // Lo HANGUL SYLLABLE GGYAE\n if (0xaea0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH\n if (0xaea1 <= code && code <= 0xaebb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xaebd) {\n // Lo HANGUL SYLLABLE GGEO\n if (0xaebc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xaed8) {\n // Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH\n if (0xaebd <= code && code <= 0xaed7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GGE\n if (0xaed8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xaef5) {\n if (code < 0xaef4) {\n // Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH\n if (0xaed9 <= code && code <= 0xaef3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GGYEO\n if (0xaef4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xaf10) {\n // Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH\n if (0xaef5 <= code && code <= 0xaf0f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xaf11) {\n // Lo HANGUL SYLLABLE GGYE\n if (0xaf10 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH\n if (0xaf11 <= code && code <= 0xaf2b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xaf65) {\n if (code < 0xaf48) {\n if (code < 0xaf2d) {\n // Lo HANGUL SYLLABLE GGO\n if (0xaf2c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH\n if (0xaf2d <= code && code <= 0xaf47) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xaf49) {\n // Lo HANGUL SYLLABLE GGWA\n if (0xaf48 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xaf64) {\n // Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH\n if (0xaf49 <= code && code <= 0xaf63) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GGWAE\n if (0xaf64 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xaf9c) {\n if (code < 0xaf80) {\n // Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH\n if (0xaf65 <= code && code <= 0xaf7f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xaf81) {\n // Lo HANGUL SYLLABLE GGOE\n if (0xaf80 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH\n if (0xaf81 <= code && code <= 0xaf9b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xaf9d) {\n // Lo HANGUL SYLLABLE GGYO\n if (0xaf9c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xafb8) {\n // Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH\n if (0xaf9d <= code && code <= 0xafb7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GGU\n if (0xafb8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb060) {\n if (code < 0xb00c) {\n if (code < 0xafd5) {\n if (code < 0xafd4) {\n // Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH\n if (0xafb9 <= code && code <= 0xafd3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GGWEO\n if (0xafd4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xaff0) {\n // Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH\n if (0xafd5 <= code && code <= 0xafef) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xaff1) {\n // Lo HANGUL SYLLABLE GGWE\n if (0xaff0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH\n if (0xaff1 <= code && code <= 0xb00b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb029) {\n if (code < 0xb00d) {\n // Lo HANGUL SYLLABLE GGWI\n if (0xb00c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb028) {\n // Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH\n if (0xb00d <= code && code <= 0xb027) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE GGYU\n if (0xb028 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xb044) {\n // Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH\n if (0xb029 <= code && code <= 0xb043) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb045) {\n // Lo HANGUL SYLLABLE GGEU\n if (0xb044 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH\n if (0xb045 <= code && code <= 0xb05f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb099) {\n if (code < 0xb07c) {\n if (code < 0xb061) {\n // Lo HANGUL SYLLABLE GGYI\n if (0xb060 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH\n if (0xb061 <= code && code <= 0xb07b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xb07d) {\n // Lo HANGUL SYLLABLE GGI\n if (0xb07c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb098) {\n // Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH\n if (0xb07d <= code && code <= 0xb097) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE NA\n if (0xb098 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb0d0) {\n if (code < 0xb0b4) {\n // Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH\n if (0xb099 <= code && code <= 0xb0b3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb0b5) {\n // Lo HANGUL SYLLABLE NAE\n if (0xb0b4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH\n if (0xb0b5 <= code && code <= 0xb0cf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xb0d1) {\n // Lo HANGUL SYLLABLE NYA\n if (0xb0d0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb0ec) {\n // Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH\n if (0xb0d1 <= code && code <= 0xb0eb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE NYAE\n if (0xb0ec === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb354) {\n if (code < 0xb220) {\n if (code < 0xb179) {\n if (code < 0xb140) {\n if (code < 0xb109) {\n if (code < 0xb108) {\n // Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH\n if (0xb0ed <= code && code <= 0xb107) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE NEO\n if (0xb108 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xb124) {\n // Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH\n if (0xb109 <= code && code <= 0xb123) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb125) {\n // Lo HANGUL SYLLABLE NE\n if (0xb124 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH\n if (0xb125 <= code && code <= 0xb13f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb15c) {\n if (code < 0xb141) {\n // Lo HANGUL SYLLABLE NYEO\n if (0xb140 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH\n if (0xb141 <= code && code <= 0xb15b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xb15d) {\n // Lo HANGUL SYLLABLE NYE\n if (0xb15c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb178) {\n // Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH\n if (0xb15d <= code && code <= 0xb177) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE NO\n if (0xb178 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb1cc) {\n if (code < 0xb195) {\n if (code < 0xb194) {\n // Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH\n if (0xb179 <= code && code <= 0xb193) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE NWA\n if (0xb194 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xb1b0) {\n // Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH\n if (0xb195 <= code && code <= 0xb1af) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb1b1) {\n // Lo HANGUL SYLLABLE NWAE\n if (0xb1b0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH\n if (0xb1b1 <= code && code <= 0xb1cb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb1e9) {\n if (code < 0xb1cd) {\n // Lo HANGUL SYLLABLE NOE\n if (0xb1cc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb1e8) {\n // Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH\n if (0xb1cd <= code && code <= 0xb1e7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE NYO\n if (0xb1e8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xb204) {\n // Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH\n if (0xb1e9 <= code && code <= 0xb203) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb205) {\n // Lo HANGUL SYLLABLE NU\n if (0xb204 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH\n if (0xb205 <= code && code <= 0xb21f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb2ad) {\n if (code < 0xb259) {\n if (code < 0xb23c) {\n if (code < 0xb221) {\n // Lo HANGUL SYLLABLE NWEO\n if (0xb220 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH\n if (0xb221 <= code && code <= 0xb23b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xb23d) {\n // Lo HANGUL SYLLABLE NWE\n if (0xb23c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb258) {\n // Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH\n if (0xb23d <= code && code <= 0xb257) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE NWI\n if (0xb258 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb290) {\n if (code < 0xb274) {\n // Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH\n if (0xb259 <= code && code <= 0xb273) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb275) {\n // Lo HANGUL SYLLABLE NYU\n if (0xb274 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH\n if (0xb275 <= code && code <= 0xb28f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xb291) {\n // Lo HANGUL SYLLABLE NEU\n if (0xb290 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb2ac) {\n // Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH\n if (0xb291 <= code && code <= 0xb2ab) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE NYI\n if (0xb2ac === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb300) {\n if (code < 0xb2c9) {\n if (code < 0xb2c8) {\n // Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH\n if (0xb2ad <= code && code <= 0xb2c7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE NI\n if (0xb2c8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xb2e4) {\n // Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH\n if (0xb2c9 <= code && code <= 0xb2e3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb2e5) {\n // Lo HANGUL SYLLABLE DA\n if (0xb2e4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH\n if (0xb2e5 <= code && code <= 0xb2ff) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb31d) {\n if (code < 0xb301) {\n // Lo HANGUL SYLLABLE DAE\n if (0xb300 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb31c) {\n // Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH\n if (0xb301 <= code && code <= 0xb31b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DYA\n if (0xb31c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xb338) {\n // Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH\n if (0xb31d <= code && code <= 0xb337) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb339) {\n // Lo HANGUL SYLLABLE DYAE\n if (0xb338 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH\n if (0xb339 <= code && code <= 0xb353) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb46d) {\n if (code < 0xb3e0) {\n if (code < 0xb38d) {\n if (code < 0xb370) {\n if (code < 0xb355) {\n // Lo HANGUL SYLLABLE DEO\n if (0xb354 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH\n if (0xb355 <= code && code <= 0xb36f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xb371) {\n // Lo HANGUL SYLLABLE DE\n if (0xb370 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb38c) {\n // Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH\n if (0xb371 <= code && code <= 0xb38b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DYEO\n if (0xb38c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb3a9) {\n if (code < 0xb3a8) {\n // Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH\n if (0xb38d <= code && code <= 0xb3a7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DYE\n if (0xb3a8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xb3c4) {\n // Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH\n if (0xb3a9 <= code && code <= 0xb3c3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb3c5) {\n // Lo HANGUL SYLLABLE DO\n if (0xb3c4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH\n if (0xb3c5 <= code && code <= 0xb3df) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb419) {\n if (code < 0xb3fc) {\n if (code < 0xb3e1) {\n // Lo HANGUL SYLLABLE DWA\n if (0xb3e0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH\n if (0xb3e1 <= code && code <= 0xb3fb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xb3fd) {\n // Lo HANGUL SYLLABLE DWAE\n if (0xb3fc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb418) {\n // Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH\n if (0xb3fd <= code && code <= 0xb417) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DOE\n if (0xb418 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb450) {\n if (code < 0xb434) {\n // Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH\n if (0xb419 <= code && code <= 0xb433) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb435) {\n // Lo HANGUL SYLLABLE DYO\n if (0xb434 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH\n if (0xb435 <= code && code <= 0xb44f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xb451) {\n // Lo HANGUL SYLLABLE DU\n if (0xb450 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb46c) {\n // Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH\n if (0xb451 <= code && code <= 0xb46b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DWEO\n if (0xb46c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb514) {\n if (code < 0xb4c0) {\n if (code < 0xb489) {\n if (code < 0xb488) {\n // Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH\n if (0xb46d <= code && code <= 0xb487) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DWE\n if (0xb488 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xb4a4) {\n // Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH\n if (0xb489 <= code && code <= 0xb4a3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb4a5) {\n // Lo HANGUL SYLLABLE DWI\n if (0xb4a4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH\n if (0xb4a5 <= code && code <= 0xb4bf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb4dd) {\n if (code < 0xb4c1) {\n // Lo HANGUL SYLLABLE DYU\n if (0xb4c0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb4dc) {\n // Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH\n if (0xb4c1 <= code && code <= 0xb4db) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DEU\n if (0xb4dc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xb4f8) {\n // Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH\n if (0xb4dd <= code && code <= 0xb4f7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb4f9) {\n // Lo HANGUL SYLLABLE DYI\n if (0xb4f8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH\n if (0xb4f9 <= code && code <= 0xb513) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb54d) {\n if (code < 0xb530) {\n if (code < 0xb515) {\n // Lo HANGUL SYLLABLE DI\n if (0xb514 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH\n if (0xb515 <= code && code <= 0xb52f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xb531) {\n // Lo HANGUL SYLLABLE DDA\n if (0xb530 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb54c) {\n // Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH\n if (0xb531 <= code && code <= 0xb54b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DDAE\n if (0xb54c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb584) {\n if (code < 0xb568) {\n // Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH\n if (0xb54d <= code && code <= 0xb567) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb569) {\n // Lo HANGUL SYLLABLE DDYA\n if (0xb568 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH\n if (0xb569 <= code && code <= 0xb583) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xb585) {\n // Lo HANGUL SYLLABLE DDYAE\n if (0xb584 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb5a0) {\n // Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH\n if (0xb585 <= code && code <= 0xb59f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DDEO\n if (0xb5a0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xba55) {\n if (code < 0xb808) {\n if (code < 0xb6d4) {\n if (code < 0xb62d) {\n if (code < 0xb5f4) {\n if (code < 0xb5bd) {\n if (code < 0xb5bc) {\n // Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH\n if (0xb5a1 <= code && code <= 0xb5bb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DDE\n if (0xb5bc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xb5d8) {\n // Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH\n if (0xb5bd <= code && code <= 0xb5d7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb5d9) {\n // Lo HANGUL SYLLABLE DDYEO\n if (0xb5d8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH\n if (0xb5d9 <= code && code <= 0xb5f3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb610) {\n if (code < 0xb5f5) {\n // Lo HANGUL SYLLABLE DDYE\n if (0xb5f4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH\n if (0xb5f5 <= code && code <= 0xb60f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xb611) {\n // Lo HANGUL SYLLABLE DDO\n if (0xb610 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb62c) {\n // Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH\n if (0xb611 <= code && code <= 0xb62b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DDWA\n if (0xb62c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb680) {\n if (code < 0xb649) {\n if (code < 0xb648) {\n // Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH\n if (0xb62d <= code && code <= 0xb647) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DDWAE\n if (0xb648 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xb664) {\n // Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH\n if (0xb649 <= code && code <= 0xb663) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb665) {\n // Lo HANGUL SYLLABLE DDOE\n if (0xb664 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH\n if (0xb665 <= code && code <= 0xb67f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb69d) {\n if (code < 0xb681) {\n // Lo HANGUL SYLLABLE DDYO\n if (0xb680 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb69c) {\n // Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH\n if (0xb681 <= code && code <= 0xb69b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DDU\n if (0xb69c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xb6b8) {\n // Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH\n if (0xb69d <= code && code <= 0xb6b7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb6b9) {\n // Lo HANGUL SYLLABLE DDWEO\n if (0xb6b8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH\n if (0xb6b9 <= code && code <= 0xb6d3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb761) {\n if (code < 0xb70d) {\n if (code < 0xb6f0) {\n if (code < 0xb6d5) {\n // Lo HANGUL SYLLABLE DDWE\n if (0xb6d4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH\n if (0xb6d5 <= code && code <= 0xb6ef) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xb6f1) {\n // Lo HANGUL SYLLABLE DDWI\n if (0xb6f0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb70c) {\n // Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH\n if (0xb6f1 <= code && code <= 0xb70b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DDYU\n if (0xb70c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb744) {\n if (code < 0xb728) {\n // Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH\n if (0xb70d <= code && code <= 0xb727) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb729) {\n // Lo HANGUL SYLLABLE DDEU\n if (0xb728 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH\n if (0xb729 <= code && code <= 0xb743) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xb745) {\n // Lo HANGUL SYLLABLE DDYI\n if (0xb744 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb760) {\n // Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH\n if (0xb745 <= code && code <= 0xb75f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE DDI\n if (0xb760 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb7b4) {\n if (code < 0xb77d) {\n if (code < 0xb77c) {\n // Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH\n if (0xb761 <= code && code <= 0xb77b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE RA\n if (0xb77c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xb798) {\n // Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH\n if (0xb77d <= code && code <= 0xb797) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb799) {\n // Lo HANGUL SYLLABLE RAE\n if (0xb798 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH\n if (0xb799 <= code && code <= 0xb7b3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb7d1) {\n if (code < 0xb7b5) {\n // Lo HANGUL SYLLABLE RYA\n if (0xb7b4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb7d0) {\n // Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH\n if (0xb7b5 <= code && code <= 0xb7cf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE RYAE\n if (0xb7d0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xb7ec) {\n // Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH\n if (0xb7d1 <= code && code <= 0xb7eb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb7ed) {\n // Lo HANGUL SYLLABLE REO\n if (0xb7ec === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH\n if (0xb7ed <= code && code <= 0xb807) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb921) {\n if (code < 0xb894) {\n if (code < 0xb841) {\n if (code < 0xb824) {\n if (code < 0xb809) {\n // Lo HANGUL SYLLABLE RE\n if (0xb808 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH\n if (0xb809 <= code && code <= 0xb823) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xb825) {\n // Lo HANGUL SYLLABLE RYEO\n if (0xb824 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb840) {\n // Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH\n if (0xb825 <= code && code <= 0xb83f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE RYE\n if (0xb840 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb85d) {\n if (code < 0xb85c) {\n // Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH\n if (0xb841 <= code && code <= 0xb85b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE RO\n if (0xb85c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xb878) {\n // Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH\n if (0xb85d <= code && code <= 0xb877) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb879) {\n // Lo HANGUL SYLLABLE RWA\n if (0xb878 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH\n if (0xb879 <= code && code <= 0xb893) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb8cd) {\n if (code < 0xb8b0) {\n if (code < 0xb895) {\n // Lo HANGUL SYLLABLE RWAE\n if (0xb894 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH\n if (0xb895 <= code && code <= 0xb8af) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xb8b1) {\n // Lo HANGUL SYLLABLE ROE\n if (0xb8b0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb8cc) {\n // Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH\n if (0xb8b1 <= code && code <= 0xb8cb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE RYO\n if (0xb8cc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb904) {\n if (code < 0xb8e8) {\n // Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH\n if (0xb8cd <= code && code <= 0xb8e7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb8e9) {\n // Lo HANGUL SYLLABLE RU\n if (0xb8e8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH\n if (0xb8e9 <= code && code <= 0xb903) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xb905) {\n // Lo HANGUL SYLLABLE RWEO\n if (0xb904 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb920) {\n // Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH\n if (0xb905 <= code && code <= 0xb91f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE RWE\n if (0xb920 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xb9c8) {\n if (code < 0xb974) {\n if (code < 0xb93d) {\n if (code < 0xb93c) {\n // Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH\n if (0xb921 <= code && code <= 0xb93b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE RWI\n if (0xb93c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xb958) {\n // Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH\n if (0xb93d <= code && code <= 0xb957) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb959) {\n // Lo HANGUL SYLLABLE RYU\n if (0xb958 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH\n if (0xb959 <= code && code <= 0xb973) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xb991) {\n if (code < 0xb975) {\n // Lo HANGUL SYLLABLE REU\n if (0xb974 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xb990) {\n // Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH\n if (0xb975 <= code && code <= 0xb98f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE RYI\n if (0xb990 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xb9ac) {\n // Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH\n if (0xb991 <= code && code <= 0xb9ab) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xb9ad) {\n // Lo HANGUL SYLLABLE RI\n if (0xb9ac === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH\n if (0xb9ad <= code && code <= 0xb9c7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xba01) {\n if (code < 0xb9e4) {\n if (code < 0xb9c9) {\n // Lo HANGUL SYLLABLE MA\n if (0xb9c8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH\n if (0xb9c9 <= code && code <= 0xb9e3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xb9e5) {\n // Lo HANGUL SYLLABLE MAE\n if (0xb9e4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xba00) {\n // Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH\n if (0xb9e5 <= code && code <= 0xb9ff) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE MYA\n if (0xba00 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xba38) {\n if (code < 0xba1c) {\n // Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH\n if (0xba01 <= code && code <= 0xba1b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xba1d) {\n // Lo HANGUL SYLLABLE MYAE\n if (0xba1c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH\n if (0xba1d <= code && code <= 0xba37) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xba39) {\n // Lo HANGUL SYLLABLE MEO\n if (0xba38 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xba54) {\n // Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH\n if (0xba39 <= code && code <= 0xba53) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE ME\n if (0xba54 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xbcbc) {\n if (code < 0xbb88) {\n if (code < 0xbae1) {\n if (code < 0xbaa8) {\n if (code < 0xba71) {\n if (code < 0xba70) {\n // Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH\n if (0xba55 <= code && code <= 0xba6f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE MYEO\n if (0xba70 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xba8c) {\n // Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH\n if (0xba71 <= code && code <= 0xba8b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xba8d) {\n // Lo HANGUL SYLLABLE MYE\n if (0xba8c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH\n if (0xba8d <= code && code <= 0xbaa7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xbac4) {\n if (code < 0xbaa9) {\n // Lo HANGUL SYLLABLE MO\n if (0xbaa8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH\n if (0xbaa9 <= code && code <= 0xbac3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xbac5) {\n // Lo HANGUL SYLLABLE MWA\n if (0xbac4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xbae0) {\n // Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH\n if (0xbac5 <= code && code <= 0xbadf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE MWAE\n if (0xbae0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xbb34) {\n if (code < 0xbafd) {\n if (code < 0xbafc) {\n // Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH\n if (0xbae1 <= code && code <= 0xbafb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE MOE\n if (0xbafc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xbb18) {\n // Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH\n if (0xbafd <= code && code <= 0xbb17) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xbb19) {\n // Lo HANGUL SYLLABLE MYO\n if (0xbb18 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH\n if (0xbb19 <= code && code <= 0xbb33) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xbb51) {\n if (code < 0xbb35) {\n // Lo HANGUL SYLLABLE MU\n if (0xbb34 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xbb50) {\n // Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH\n if (0xbb35 <= code && code <= 0xbb4f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE MWEO\n if (0xbb50 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xbb6c) {\n // Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH\n if (0xbb51 <= code && code <= 0xbb6b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xbb6d) {\n // Lo HANGUL SYLLABLE MWE\n if (0xbb6c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH\n if (0xbb6d <= code && code <= 0xbb87) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xbc15) {\n if (code < 0xbbc1) {\n if (code < 0xbba4) {\n if (code < 0xbb89) {\n // Lo HANGUL SYLLABLE MWI\n if (0xbb88 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH\n if (0xbb89 <= code && code <= 0xbba3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xbba5) {\n // Lo HANGUL SYLLABLE MYU\n if (0xbba4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xbbc0) {\n // Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH\n if (0xbba5 <= code && code <= 0xbbbf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE MEU\n if (0xbbc0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xbbf8) {\n if (code < 0xbbdc) {\n // Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH\n if (0xbbc1 <= code && code <= 0xbbdb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xbbdd) {\n // Lo HANGUL SYLLABLE MYI\n if (0xbbdc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH\n if (0xbbdd <= code && code <= 0xbbf7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xbbf9) {\n // Lo HANGUL SYLLABLE MI\n if (0xbbf8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xbc14) {\n // Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH\n if (0xbbf9 <= code && code <= 0xbc13) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BA\n if (0xbc14 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xbc68) {\n if (code < 0xbc31) {\n if (code < 0xbc30) {\n // Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH\n if (0xbc15 <= code && code <= 0xbc2f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BAE\n if (0xbc30 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xbc4c) {\n // Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH\n if (0xbc31 <= code && code <= 0xbc4b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xbc4d) {\n // Lo HANGUL SYLLABLE BYA\n if (0xbc4c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH\n if (0xbc4d <= code && code <= 0xbc67) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xbc85) {\n if (code < 0xbc69) {\n // Lo HANGUL SYLLABLE BYAE\n if (0xbc68 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xbc84) {\n // Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH\n if (0xbc69 <= code && code <= 0xbc83) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BEO\n if (0xbc84 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xbca0) {\n // Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH\n if (0xbc85 <= code && code <= 0xbc9f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xbca1) {\n // Lo HANGUL SYLLABLE BE\n if (0xbca0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH\n if (0xbca1 <= code && code <= 0xbcbb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xbdd5) {\n if (code < 0xbd48) {\n if (code < 0xbcf5) {\n if (code < 0xbcd8) {\n if (code < 0xbcbd) {\n // Lo HANGUL SYLLABLE BYEO\n if (0xbcbc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH\n if (0xbcbd <= code && code <= 0xbcd7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xbcd9) {\n // Lo HANGUL SYLLABLE BYE\n if (0xbcd8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xbcf4) {\n // Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH\n if (0xbcd9 <= code && code <= 0xbcf3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BO\n if (0xbcf4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xbd11) {\n if (code < 0xbd10) {\n // Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH\n if (0xbcf5 <= code && code <= 0xbd0f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BWA\n if (0xbd10 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xbd2c) {\n // Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH\n if (0xbd11 <= code && code <= 0xbd2b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xbd2d) {\n // Lo HANGUL SYLLABLE BWAE\n if (0xbd2c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH\n if (0xbd2d <= code && code <= 0xbd47) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xbd81) {\n if (code < 0xbd64) {\n if (code < 0xbd49) {\n // Lo HANGUL SYLLABLE BOE\n if (0xbd48 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH\n if (0xbd49 <= code && code <= 0xbd63) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xbd65) {\n // Lo HANGUL SYLLABLE BYO\n if (0xbd64 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xbd80) {\n // Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH\n if (0xbd65 <= code && code <= 0xbd7f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BU\n if (0xbd80 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xbdb8) {\n if (code < 0xbd9c) {\n // Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH\n if (0xbd81 <= code && code <= 0xbd9b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xbd9d) {\n // Lo HANGUL SYLLABLE BWEO\n if (0xbd9c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH\n if (0xbd9d <= code && code <= 0xbdb7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xbdb9) {\n // Lo HANGUL SYLLABLE BWE\n if (0xbdb8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xbdd4) {\n // Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH\n if (0xbdb9 <= code && code <= 0xbdd3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BWI\n if (0xbdd4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xbe7c) {\n if (code < 0xbe28) {\n if (code < 0xbdf1) {\n if (code < 0xbdf0) {\n // Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH\n if (0xbdd5 <= code && code <= 0xbdef) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BYU\n if (0xbdf0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xbe0c) {\n // Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH\n if (0xbdf1 <= code && code <= 0xbe0b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xbe0d) {\n // Lo HANGUL SYLLABLE BEU\n if (0xbe0c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH\n if (0xbe0d <= code && code <= 0xbe27) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xbe45) {\n if (code < 0xbe29) {\n // Lo HANGUL SYLLABLE BYI\n if (0xbe28 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xbe44) {\n // Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH\n if (0xbe29 <= code && code <= 0xbe43) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BI\n if (0xbe44 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xbe60) {\n // Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH\n if (0xbe45 <= code && code <= 0xbe5f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xbe61) {\n // Lo HANGUL SYLLABLE BBA\n if (0xbe60 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH\n if (0xbe61 <= code && code <= 0xbe7b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xbeb5) {\n if (code < 0xbe98) {\n if (code < 0xbe7d) {\n // Lo HANGUL SYLLABLE BBAE\n if (0xbe7c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH\n if (0xbe7d <= code && code <= 0xbe97) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xbe99) {\n // Lo HANGUL SYLLABLE BBYA\n if (0xbe98 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xbeb4) {\n // Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH\n if (0xbe99 <= code && code <= 0xbeb3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BBYAE\n if (0xbeb4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xbeec) {\n if (code < 0xbed0) {\n // Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH\n if (0xbeb5 <= code && code <= 0xbecf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xbed1) {\n // Lo HANGUL SYLLABLE BBEO\n if (0xbed0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH\n if (0xbed1 <= code && code <= 0xbeeb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xbeed) {\n // Lo HANGUL SYLLABLE BBE\n if (0xbeec === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xbf08) {\n // Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH\n if (0xbeed <= code && code <= 0xbf07) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BBYEO\n if (0xbf08 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd1d8) {\n if (code < 0xc870) {\n if (code < 0xc3bc) {\n if (code < 0xc155) {\n if (code < 0xc03c) {\n if (code < 0xbf95) {\n if (code < 0xbf5c) {\n if (code < 0xbf25) {\n if (code < 0xbf24) {\n // Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH\n if (0xbf09 <= code && code <= 0xbf23) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BBYE\n if (0xbf24 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xbf40) {\n // Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH\n if (0xbf25 <= code && code <= 0xbf3f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xbf41) {\n // Lo HANGUL SYLLABLE BBO\n if (0xbf40 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH\n if (0xbf41 <= code && code <= 0xbf5b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xbf78) {\n if (code < 0xbf5d) {\n // Lo HANGUL SYLLABLE BBWA\n if (0xbf5c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH\n if (0xbf5d <= code && code <= 0xbf77) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xbf79) {\n // Lo HANGUL SYLLABLE BBWAE\n if (0xbf78 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xbf94) {\n // Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH\n if (0xbf79 <= code && code <= 0xbf93) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BBOE\n if (0xbf94 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xbfe8) {\n if (code < 0xbfb1) {\n if (code < 0xbfb0) {\n // Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH\n if (0xbf95 <= code && code <= 0xbfaf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BBYO\n if (0xbfb0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xbfcc) {\n // Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH\n if (0xbfb1 <= code && code <= 0xbfcb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xbfcd) {\n // Lo HANGUL SYLLABLE BBU\n if (0xbfcc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH\n if (0xbfcd <= code && code <= 0xbfe7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc005) {\n if (code < 0xbfe9) {\n // Lo HANGUL SYLLABLE BBWEO\n if (0xbfe8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc004) {\n // Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH\n if (0xbfe9 <= code && code <= 0xc003) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BBWE\n if (0xc004 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xc020) {\n // Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH\n if (0xc005 <= code && code <= 0xc01f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc021) {\n // Lo HANGUL SYLLABLE BBWI\n if (0xc020 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH\n if (0xc021 <= code && code <= 0xc03b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc0c8) {\n if (code < 0xc075) {\n if (code < 0xc058) {\n if (code < 0xc03d) {\n // Lo HANGUL SYLLABLE BBYU\n if (0xc03c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH\n if (0xc03d <= code && code <= 0xc057) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xc059) {\n // Lo HANGUL SYLLABLE BBEU\n if (0xc058 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc074) {\n // Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH\n if (0xc059 <= code && code <= 0xc073) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BBYI\n if (0xc074 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc091) {\n if (code < 0xc090) {\n // Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH\n if (0xc075 <= code && code <= 0xc08f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE BBI\n if (0xc090 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xc0ac) {\n // Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH\n if (0xc091 <= code && code <= 0xc0ab) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc0ad) {\n // Lo HANGUL SYLLABLE SA\n if (0xc0ac === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH\n if (0xc0ad <= code && code <= 0xc0c7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc101) {\n if (code < 0xc0e4) {\n if (code < 0xc0c9) {\n // Lo HANGUL SYLLABLE SAE\n if (0xc0c8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH\n if (0xc0c9 <= code && code <= 0xc0e3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xc0e5) {\n // Lo HANGUL SYLLABLE SYA\n if (0xc0e4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc100) {\n // Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH\n if (0xc0e5 <= code && code <= 0xc0ff) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SYAE\n if (0xc100 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc138) {\n if (code < 0xc11c) {\n // Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH\n if (0xc101 <= code && code <= 0xc11b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc11d) {\n // Lo HANGUL SYLLABLE SEO\n if (0xc11c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH\n if (0xc11d <= code && code <= 0xc137) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xc139) {\n // Lo HANGUL SYLLABLE SE\n if (0xc138 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc154) {\n // Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH\n if (0xc139 <= code && code <= 0xc153) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SYEO\n if (0xc154 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc288) {\n if (code < 0xc1e1) {\n if (code < 0xc1a8) {\n if (code < 0xc171) {\n if (code < 0xc170) {\n // Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH\n if (0xc155 <= code && code <= 0xc16f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SYE\n if (0xc170 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xc18c) {\n // Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH\n if (0xc171 <= code && code <= 0xc18b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc18d) {\n // Lo HANGUL SYLLABLE SO\n if (0xc18c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH\n if (0xc18d <= code && code <= 0xc1a7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc1c4) {\n if (code < 0xc1a9) {\n // Lo HANGUL SYLLABLE SWA\n if (0xc1a8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH\n if (0xc1a9 <= code && code <= 0xc1c3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xc1c5) {\n // Lo HANGUL SYLLABLE SWAE\n if (0xc1c4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc1e0) {\n // Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH\n if (0xc1c5 <= code && code <= 0xc1df) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SOE\n if (0xc1e0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc234) {\n if (code < 0xc1fd) {\n if (code < 0xc1fc) {\n // Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH\n if (0xc1e1 <= code && code <= 0xc1fb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SYO\n if (0xc1fc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xc218) {\n // Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH\n if (0xc1fd <= code && code <= 0xc217) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc219) {\n // Lo HANGUL SYLLABLE SU\n if (0xc218 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH\n if (0xc219 <= code && code <= 0xc233) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc251) {\n if (code < 0xc235) {\n // Lo HANGUL SYLLABLE SWEO\n if (0xc234 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc250) {\n // Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH\n if (0xc235 <= code && code <= 0xc24f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SWE\n if (0xc250 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xc26c) {\n // Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH\n if (0xc251 <= code && code <= 0xc26b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc26d) {\n // Lo HANGUL SYLLABLE SWI\n if (0xc26c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH\n if (0xc26d <= code && code <= 0xc287) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc315) {\n if (code < 0xc2c1) {\n if (code < 0xc2a4) {\n if (code < 0xc289) {\n // Lo HANGUL SYLLABLE SYU\n if (0xc288 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH\n if (0xc289 <= code && code <= 0xc2a3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xc2a5) {\n // Lo HANGUL SYLLABLE SEU\n if (0xc2a4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc2c0) {\n // Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH\n if (0xc2a5 <= code && code <= 0xc2bf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SYI\n if (0xc2c0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc2f8) {\n if (code < 0xc2dc) {\n // Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH\n if (0xc2c1 <= code && code <= 0xc2db) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc2dd) {\n // Lo HANGUL SYLLABLE SI\n if (0xc2dc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH\n if (0xc2dd <= code && code <= 0xc2f7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xc2f9) {\n // Lo HANGUL SYLLABLE SSA\n if (0xc2f8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc314) {\n // Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH\n if (0xc2f9 <= code && code <= 0xc313) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SSAE\n if (0xc314 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc368) {\n if (code < 0xc331) {\n if (code < 0xc330) {\n // Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH\n if (0xc315 <= code && code <= 0xc32f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SSYA\n if (0xc330 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xc34c) {\n // Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH\n if (0xc331 <= code && code <= 0xc34b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc34d) {\n // Lo HANGUL SYLLABLE SSYAE\n if (0xc34c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH\n if (0xc34d <= code && code <= 0xc367) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc385) {\n if (code < 0xc369) {\n // Lo HANGUL SYLLABLE SSEO\n if (0xc368 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc384) {\n // Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH\n if (0xc369 <= code && code <= 0xc383) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SSE\n if (0xc384 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xc3a0) {\n // Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH\n if (0xc385 <= code && code <= 0xc39f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc3a1) {\n // Lo HANGUL SYLLABLE SSYEO\n if (0xc3a0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH\n if (0xc3a1 <= code && code <= 0xc3bb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc609) {\n if (code < 0xc4d5) {\n if (code < 0xc448) {\n if (code < 0xc3f5) {\n if (code < 0xc3d8) {\n if (code < 0xc3bd) {\n // Lo HANGUL SYLLABLE SSYE\n if (0xc3bc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH\n if (0xc3bd <= code && code <= 0xc3d7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xc3d9) {\n // Lo HANGUL SYLLABLE SSO\n if (0xc3d8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc3f4) {\n // Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH\n if (0xc3d9 <= code && code <= 0xc3f3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SSWA\n if (0xc3f4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc411) {\n if (code < 0xc410) {\n // Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH\n if (0xc3f5 <= code && code <= 0xc40f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SSWAE\n if (0xc410 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xc42c) {\n // Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH\n if (0xc411 <= code && code <= 0xc42b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc42d) {\n // Lo HANGUL SYLLABLE SSOE\n if (0xc42c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH\n if (0xc42d <= code && code <= 0xc447) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc481) {\n if (code < 0xc464) {\n if (code < 0xc449) {\n // Lo HANGUL SYLLABLE SSYO\n if (0xc448 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH\n if (0xc449 <= code && code <= 0xc463) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xc465) {\n // Lo HANGUL SYLLABLE SSU\n if (0xc464 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc480) {\n // Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH\n if (0xc465 <= code && code <= 0xc47f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SSWEO\n if (0xc480 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc4b8) {\n if (code < 0xc49c) {\n // Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH\n if (0xc481 <= code && code <= 0xc49b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc49d) {\n // Lo HANGUL SYLLABLE SSWE\n if (0xc49c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH\n if (0xc49d <= code && code <= 0xc4b7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xc4b9) {\n // Lo HANGUL SYLLABLE SSWI\n if (0xc4b8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc4d4) {\n // Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH\n if (0xc4b9 <= code && code <= 0xc4d3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SSYU\n if (0xc4d4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc57c) {\n if (code < 0xc528) {\n if (code < 0xc4f1) {\n if (code < 0xc4f0) {\n // Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH\n if (0xc4d5 <= code && code <= 0xc4ef) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE SSEU\n if (0xc4f0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xc50c) {\n // Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH\n if (0xc4f1 <= code && code <= 0xc50b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc50d) {\n // Lo HANGUL SYLLABLE SSYI\n if (0xc50c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH\n if (0xc50d <= code && code <= 0xc527) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc545) {\n if (code < 0xc529) {\n // Lo HANGUL SYLLABLE SSI\n if (0xc528 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc544) {\n // Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH\n if (0xc529 <= code && code <= 0xc543) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE A\n if (0xc544 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xc560) {\n // Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH\n if (0xc545 <= code && code <= 0xc55f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc561) {\n // Lo HANGUL SYLLABLE AE\n if (0xc560 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH\n if (0xc561 <= code && code <= 0xc57b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc5b5) {\n if (code < 0xc598) {\n if (code < 0xc57d) {\n // Lo HANGUL SYLLABLE YA\n if (0xc57c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH\n if (0xc57d <= code && code <= 0xc597) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xc599) {\n // Lo HANGUL SYLLABLE YAE\n if (0xc598 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc5b4) {\n // Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH\n if (0xc599 <= code && code <= 0xc5b3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE EO\n if (0xc5b4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc5ec) {\n if (code < 0xc5d0) {\n // Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH\n if (0xc5b5 <= code && code <= 0xc5cf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc5d1) {\n // Lo HANGUL SYLLABLE E\n if (0xc5d0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH\n if (0xc5d1 <= code && code <= 0xc5eb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xc5ed) {\n // Lo HANGUL SYLLABLE YEO\n if (0xc5ec === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc608) {\n // Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH\n if (0xc5ed <= code && code <= 0xc607) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE YE\n if (0xc608 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc73c) {\n if (code < 0xc695) {\n if (code < 0xc65c) {\n if (code < 0xc625) {\n if (code < 0xc624) {\n // Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH\n if (0xc609 <= code && code <= 0xc623) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE O\n if (0xc624 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xc640) {\n // Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH\n if (0xc625 <= code && code <= 0xc63f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc641) {\n // Lo HANGUL SYLLABLE WA\n if (0xc640 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH\n if (0xc641 <= code && code <= 0xc65b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc678) {\n if (code < 0xc65d) {\n // Lo HANGUL SYLLABLE WAE\n if (0xc65c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH\n if (0xc65d <= code && code <= 0xc677) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xc679) {\n // Lo HANGUL SYLLABLE OE\n if (0xc678 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc694) {\n // Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH\n if (0xc679 <= code && code <= 0xc693) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE YO\n if (0xc694 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc6e8) {\n if (code < 0xc6b1) {\n if (code < 0xc6b0) {\n // Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH\n if (0xc695 <= code && code <= 0xc6af) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE U\n if (0xc6b0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xc6cc) {\n // Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH\n if (0xc6b1 <= code && code <= 0xc6cb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc6cd) {\n // Lo HANGUL SYLLABLE WEO\n if (0xc6cc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH\n if (0xc6cd <= code && code <= 0xc6e7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc705) {\n if (code < 0xc6e9) {\n // Lo HANGUL SYLLABLE WE\n if (0xc6e8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc704) {\n // Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH\n if (0xc6e9 <= code && code <= 0xc703) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE WI\n if (0xc704 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xc720) {\n // Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH\n if (0xc705 <= code && code <= 0xc71f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc721) {\n // Lo HANGUL SYLLABLE YU\n if (0xc720 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH\n if (0xc721 <= code && code <= 0xc73b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc7c9) {\n if (code < 0xc775) {\n if (code < 0xc758) {\n if (code < 0xc73d) {\n // Lo HANGUL SYLLABLE EU\n if (0xc73c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH\n if (0xc73d <= code && code <= 0xc757) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xc759) {\n // Lo HANGUL SYLLABLE YI\n if (0xc758 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc774) {\n // Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH\n if (0xc759 <= code && code <= 0xc773) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE I\n if (0xc774 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc7ac) {\n if (code < 0xc790) {\n // Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH\n if (0xc775 <= code && code <= 0xc78f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc791) {\n // Lo HANGUL SYLLABLE JA\n if (0xc790 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH\n if (0xc791 <= code && code <= 0xc7ab) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xc7ad) {\n // Lo HANGUL SYLLABLE JAE\n if (0xc7ac === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc7c8) {\n // Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH\n if (0xc7ad <= code && code <= 0xc7c7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JYA\n if (0xc7c8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc81c) {\n if (code < 0xc7e5) {\n if (code < 0xc7e4) {\n // Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH\n if (0xc7c9 <= code && code <= 0xc7e3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JYAE\n if (0xc7e4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xc800) {\n // Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH\n if (0xc7e5 <= code && code <= 0xc7ff) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc801) {\n // Lo HANGUL SYLLABLE JEO\n if (0xc800 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH\n if (0xc801 <= code && code <= 0xc81b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc839) {\n if (code < 0xc81d) {\n // Lo HANGUL SYLLABLE JE\n if (0xc81c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc838) {\n // Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH\n if (0xc81d <= code && code <= 0xc837) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JYEO\n if (0xc838 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xc854) {\n // Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH\n if (0xc839 <= code && code <= 0xc853) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc855) {\n // Lo HANGUL SYLLABLE JYE\n if (0xc854 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH\n if (0xc855 <= code && code <= 0xc86f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xcd24) {\n if (code < 0xcabd) {\n if (code < 0xc989) {\n if (code < 0xc8fc) {\n if (code < 0xc8a9) {\n if (code < 0xc88c) {\n if (code < 0xc871) {\n // Lo HANGUL SYLLABLE JO\n if (0xc870 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH\n if (0xc871 <= code && code <= 0xc88b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xc88d) {\n // Lo HANGUL SYLLABLE JWA\n if (0xc88c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc8a8) {\n // Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH\n if (0xc88d <= code && code <= 0xc8a7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JWAE\n if (0xc8a8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc8c5) {\n if (code < 0xc8c4) {\n // Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH\n if (0xc8a9 <= code && code <= 0xc8c3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JOE\n if (0xc8c4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xc8e0) {\n // Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH\n if (0xc8c5 <= code && code <= 0xc8df) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc8e1) {\n // Lo HANGUL SYLLABLE JYO\n if (0xc8e0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH\n if (0xc8e1 <= code && code <= 0xc8fb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xc935) {\n if (code < 0xc918) {\n if (code < 0xc8fd) {\n // Lo HANGUL SYLLABLE JU\n if (0xc8fc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH\n if (0xc8fd <= code && code <= 0xc917) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xc919) {\n // Lo HANGUL SYLLABLE JWEO\n if (0xc918 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc934) {\n // Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH\n if (0xc919 <= code && code <= 0xc933) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JWE\n if (0xc934 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc96c) {\n if (code < 0xc950) {\n // Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH\n if (0xc935 <= code && code <= 0xc94f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc951) {\n // Lo HANGUL SYLLABLE JWI\n if (0xc950 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH\n if (0xc951 <= code && code <= 0xc96b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xc96d) {\n // Lo HANGUL SYLLABLE JYU\n if (0xc96c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc988) {\n // Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH\n if (0xc96d <= code && code <= 0xc987) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JEU\n if (0xc988 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xca30) {\n if (code < 0xc9dc) {\n if (code < 0xc9a5) {\n if (code < 0xc9a4) {\n // Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH\n if (0xc989 <= code && code <= 0xc9a3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JYI\n if (0xc9a4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xc9c0) {\n // Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH\n if (0xc9a5 <= code && code <= 0xc9bf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xc9c1) {\n // Lo HANGUL SYLLABLE JI\n if (0xc9c0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH\n if (0xc9c1 <= code && code <= 0xc9db) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xc9f9) {\n if (code < 0xc9dd) {\n // Lo HANGUL SYLLABLE JJA\n if (0xc9dc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xc9f8) {\n // Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH\n if (0xc9dd <= code && code <= 0xc9f7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JJAE\n if (0xc9f8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xca14) {\n // Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH\n if (0xc9f9 <= code && code <= 0xca13) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xca15) {\n // Lo HANGUL SYLLABLE JJYA\n if (0xca14 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH\n if (0xca15 <= code && code <= 0xca2f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xca69) {\n if (code < 0xca4c) {\n if (code < 0xca31) {\n // Lo HANGUL SYLLABLE JJYAE\n if (0xca30 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH\n if (0xca31 <= code && code <= 0xca4b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xca4d) {\n // Lo HANGUL SYLLABLE JJEO\n if (0xca4c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xca68) {\n // Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH\n if (0xca4d <= code && code <= 0xca67) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JJE\n if (0xca68 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xcaa0) {\n if (code < 0xca84) {\n // Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH\n if (0xca69 <= code && code <= 0xca83) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xca85) {\n // Lo HANGUL SYLLABLE JJYEO\n if (0xca84 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH\n if (0xca85 <= code && code <= 0xca9f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xcaa1) {\n // Lo HANGUL SYLLABLE JJYE\n if (0xcaa0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xcabc) {\n // Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH\n if (0xcaa1 <= code && code <= 0xcabb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JJO\n if (0xcabc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xcbf0) {\n if (code < 0xcb49) {\n if (code < 0xcb10) {\n if (code < 0xcad9) {\n if (code < 0xcad8) {\n // Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH\n if (0xcabd <= code && code <= 0xcad7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JJWA\n if (0xcad8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xcaf4) {\n // Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH\n if (0xcad9 <= code && code <= 0xcaf3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xcaf5) {\n // Lo HANGUL SYLLABLE JJWAE\n if (0xcaf4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH\n if (0xcaf5 <= code && code <= 0xcb0f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xcb2c) {\n if (code < 0xcb11) {\n // Lo HANGUL SYLLABLE JJOE\n if (0xcb10 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH\n if (0xcb11 <= code && code <= 0xcb2b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xcb2d) {\n // Lo HANGUL SYLLABLE JJYO\n if (0xcb2c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xcb48) {\n // Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH\n if (0xcb2d <= code && code <= 0xcb47) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JJU\n if (0xcb48 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xcb9c) {\n if (code < 0xcb65) {\n if (code < 0xcb64) {\n // Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH\n if (0xcb49 <= code && code <= 0xcb63) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JJWEO\n if (0xcb64 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xcb80) {\n // Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH\n if (0xcb65 <= code && code <= 0xcb7f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xcb81) {\n // Lo HANGUL SYLLABLE JJWE\n if (0xcb80 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH\n if (0xcb81 <= code && code <= 0xcb9b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xcbb9) {\n if (code < 0xcb9d) {\n // Lo HANGUL SYLLABLE JJWI\n if (0xcb9c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xcbb8) {\n // Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH\n if (0xcb9d <= code && code <= 0xcbb7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE JJYU\n if (0xcbb8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xcbd4) {\n // Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH\n if (0xcbb9 <= code && code <= 0xcbd3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xcbd5) {\n // Lo HANGUL SYLLABLE JJEU\n if (0xcbd4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH\n if (0xcbd5 <= code && code <= 0xcbef) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xcc7d) {\n if (code < 0xcc29) {\n if (code < 0xcc0c) {\n if (code < 0xcbf1) {\n // Lo HANGUL SYLLABLE JJYI\n if (0xcbf0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH\n if (0xcbf1 <= code && code <= 0xcc0b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xcc0d) {\n // Lo HANGUL SYLLABLE JJI\n if (0xcc0c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xcc28) {\n // Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH\n if (0xcc0d <= code && code <= 0xcc27) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE CA\n if (0xcc28 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xcc60) {\n if (code < 0xcc44) {\n // Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH\n if (0xcc29 <= code && code <= 0xcc43) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xcc45) {\n // Lo HANGUL SYLLABLE CAE\n if (0xcc44 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH\n if (0xcc45 <= code && code <= 0xcc5f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xcc61) {\n // Lo HANGUL SYLLABLE CYA\n if (0xcc60 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xcc7c) {\n // Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH\n if (0xcc61 <= code && code <= 0xcc7b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE CYAE\n if (0xcc7c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xccd0) {\n if (code < 0xcc99) {\n if (code < 0xcc98) {\n // Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH\n if (0xcc7d <= code && code <= 0xcc97) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE CEO\n if (0xcc98 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xccb4) {\n // Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH\n if (0xcc99 <= code && code <= 0xccb3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xccb5) {\n // Lo HANGUL SYLLABLE CE\n if (0xccb4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH\n if (0xccb5 <= code && code <= 0xcccf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xcced) {\n if (code < 0xccd1) {\n // Lo HANGUL SYLLABLE CYEO\n if (0xccd0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xccec) {\n // Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH\n if (0xccd1 <= code && code <= 0xcceb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE CYE\n if (0xccec === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xcd08) {\n // Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH\n if (0xcced <= code && code <= 0xcd07) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xcd09) {\n // Lo HANGUL SYLLABLE CO\n if (0xcd08 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH\n if (0xcd09 <= code && code <= 0xcd23) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xcf71) {\n if (code < 0xce3d) {\n if (code < 0xcdb0) {\n if (code < 0xcd5d) {\n if (code < 0xcd40) {\n if (code < 0xcd25) {\n // Lo HANGUL SYLLABLE CWA\n if (0xcd24 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH\n if (0xcd25 <= code && code <= 0xcd3f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xcd41) {\n // Lo HANGUL SYLLABLE CWAE\n if (0xcd40 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xcd5c) {\n // Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH\n if (0xcd41 <= code && code <= 0xcd5b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE COE\n if (0xcd5c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xcd79) {\n if (code < 0xcd78) {\n // Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH\n if (0xcd5d <= code && code <= 0xcd77) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE CYO\n if (0xcd78 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xcd94) {\n // Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH\n if (0xcd79 <= code && code <= 0xcd93) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xcd95) {\n // Lo HANGUL SYLLABLE CU\n if (0xcd94 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH\n if (0xcd95 <= code && code <= 0xcdaf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xcde9) {\n if (code < 0xcdcc) {\n if (code < 0xcdb1) {\n // Lo HANGUL SYLLABLE CWEO\n if (0xcdb0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH\n if (0xcdb1 <= code && code <= 0xcdcb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xcdcd) {\n // Lo HANGUL SYLLABLE CWE\n if (0xcdcc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xcde8) {\n // Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH\n if (0xcdcd <= code && code <= 0xcde7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE CWI\n if (0xcde8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xce20) {\n if (code < 0xce04) {\n // Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH\n if (0xcde9 <= code && code <= 0xce03) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xce05) {\n // Lo HANGUL SYLLABLE CYU\n if (0xce04 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH\n if (0xce05 <= code && code <= 0xce1f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xce21) {\n // Lo HANGUL SYLLABLE CEU\n if (0xce20 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xce3c) {\n // Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH\n if (0xce21 <= code && code <= 0xce3b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE CYI\n if (0xce3c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xcee4) {\n if (code < 0xce90) {\n if (code < 0xce59) {\n if (code < 0xce58) {\n // Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH\n if (0xce3d <= code && code <= 0xce57) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE CI\n if (0xce58 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xce74) {\n // Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH\n if (0xce59 <= code && code <= 0xce73) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xce75) {\n // Lo HANGUL SYLLABLE KA\n if (0xce74 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH\n if (0xce75 <= code && code <= 0xce8f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xcead) {\n if (code < 0xce91) {\n // Lo HANGUL SYLLABLE KAE\n if (0xce90 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xceac) {\n // Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH\n if (0xce91 <= code && code <= 0xceab) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE KYA\n if (0xceac === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xcec8) {\n // Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH\n if (0xcead <= code && code <= 0xcec7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xcec9) {\n // Lo HANGUL SYLLABLE KYAE\n if (0xcec8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH\n if (0xcec9 <= code && code <= 0xcee3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xcf1d) {\n if (code < 0xcf00) {\n if (code < 0xcee5) {\n // Lo HANGUL SYLLABLE KEO\n if (0xcee4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH\n if (0xcee5 <= code && code <= 0xceff) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xcf01) {\n // Lo HANGUL SYLLABLE KE\n if (0xcf00 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xcf1c) {\n // Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH\n if (0xcf01 <= code && code <= 0xcf1b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE KYEO\n if (0xcf1c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xcf54) {\n if (code < 0xcf38) {\n // Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH\n if (0xcf1d <= code && code <= 0xcf37) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xcf39) {\n // Lo HANGUL SYLLABLE KYE\n if (0xcf38 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH\n if (0xcf39 <= code && code <= 0xcf53) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xcf55) {\n // Lo HANGUL SYLLABLE KO\n if (0xcf54 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xcf70) {\n // Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH\n if (0xcf55 <= code && code <= 0xcf6f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE KWA\n if (0xcf70 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd0a4) {\n if (code < 0xcffd) {\n if (code < 0xcfc4) {\n if (code < 0xcf8d) {\n if (code < 0xcf8c) {\n // Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH\n if (0xcf71 <= code && code <= 0xcf8b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE KWAE\n if (0xcf8c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xcfa8) {\n // Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH\n if (0xcf8d <= code && code <= 0xcfa7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xcfa9) {\n // Lo HANGUL SYLLABLE KOE\n if (0xcfa8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH\n if (0xcfa9 <= code && code <= 0xcfc3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xcfe0) {\n if (code < 0xcfc5) {\n // Lo HANGUL SYLLABLE KYO\n if (0xcfc4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH\n if (0xcfc5 <= code && code <= 0xcfdf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xcfe1) {\n // Lo HANGUL SYLLABLE KU\n if (0xcfe0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xcffc) {\n // Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH\n if (0xcfe1 <= code && code <= 0xcffb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE KWEO\n if (0xcffc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd050) {\n if (code < 0xd019) {\n if (code < 0xd018) {\n // Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH\n if (0xcffd <= code && code <= 0xd017) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE KWE\n if (0xd018 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xd034) {\n // Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH\n if (0xd019 <= code && code <= 0xd033) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd035) {\n // Lo HANGUL SYLLABLE KWI\n if (0xd034 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH\n if (0xd035 <= code && code <= 0xd04f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd06d) {\n if (code < 0xd051) {\n // Lo HANGUL SYLLABLE KYU\n if (0xd050 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd06c) {\n // Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH\n if (0xd051 <= code && code <= 0xd06b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE KEU\n if (0xd06c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xd088) {\n // Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH\n if (0xd06d <= code && code <= 0xd087) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd089) {\n // Lo HANGUL SYLLABLE KYI\n if (0xd088 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH\n if (0xd089 <= code && code <= 0xd0a3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd131) {\n if (code < 0xd0dd) {\n if (code < 0xd0c0) {\n if (code < 0xd0a5) {\n // Lo HANGUL SYLLABLE KI\n if (0xd0a4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH\n if (0xd0a5 <= code && code <= 0xd0bf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xd0c1) {\n // Lo HANGUL SYLLABLE TA\n if (0xd0c0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd0dc) {\n // Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH\n if (0xd0c1 <= code && code <= 0xd0db) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE TAE\n if (0xd0dc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd114) {\n if (code < 0xd0f8) {\n // Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH\n if (0xd0dd <= code && code <= 0xd0f7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd0f9) {\n // Lo HANGUL SYLLABLE TYA\n if (0xd0f8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH\n if (0xd0f9 <= code && code <= 0xd113) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xd115) {\n // Lo HANGUL SYLLABLE TYAE\n if (0xd114 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd130) {\n // Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH\n if (0xd115 <= code && code <= 0xd12f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE TEO\n if (0xd130 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd184) {\n if (code < 0xd14d) {\n if (code < 0xd14c) {\n // Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH\n if (0xd131 <= code && code <= 0xd14b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE TE\n if (0xd14c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xd168) {\n // Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH\n if (0xd14d <= code && code <= 0xd167) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd169) {\n // Lo HANGUL SYLLABLE TYEO\n if (0xd168 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH\n if (0xd169 <= code && code <= 0xd183) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd1a1) {\n if (code < 0xd185) {\n // Lo HANGUL SYLLABLE TYE\n if (0xd184 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd1a0) {\n // Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH\n if (0xd185 <= code && code <= 0xd19f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE TO\n if (0xd1a0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xd1bc) {\n // Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH\n if (0xd1a1 <= code && code <= 0xd1bb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd1bd) {\n // Lo HANGUL SYLLABLE TWA\n if (0xd1bc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH\n if (0xd1bd <= code && code <= 0xd1d7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1133b) {\n if (code < 0xd671) {\n if (code < 0xd424) {\n if (code < 0xd2f1) {\n if (code < 0xd264) {\n if (code < 0xd211) {\n if (code < 0xd1f4) {\n if (code < 0xd1d9) {\n // Lo HANGUL SYLLABLE TWAE\n if (0xd1d8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH\n if (0xd1d9 <= code && code <= 0xd1f3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xd1f5) {\n // Lo HANGUL SYLLABLE TOE\n if (0xd1f4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd210) {\n // Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH\n if (0xd1f5 <= code && code <= 0xd20f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE TYO\n if (0xd210 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd22d) {\n if (code < 0xd22c) {\n // Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH\n if (0xd211 <= code && code <= 0xd22b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE TU\n if (0xd22c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xd248) {\n // Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH\n if (0xd22d <= code && code <= 0xd247) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd249) {\n // Lo HANGUL SYLLABLE TWEO\n if (0xd248 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH\n if (0xd249 <= code && code <= 0xd263) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd29d) {\n if (code < 0xd280) {\n if (code < 0xd265) {\n // Lo HANGUL SYLLABLE TWE\n if (0xd264 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH\n if (0xd265 <= code && code <= 0xd27f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xd281) {\n // Lo HANGUL SYLLABLE TWI\n if (0xd280 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd29c) {\n // Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH\n if (0xd281 <= code && code <= 0xd29b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE TYU\n if (0xd29c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd2d4) {\n if (code < 0xd2b8) {\n // Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH\n if (0xd29d <= code && code <= 0xd2b7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd2b9) {\n // Lo HANGUL SYLLABLE TEU\n if (0xd2b8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH\n if (0xd2b9 <= code && code <= 0xd2d3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xd2d5) {\n // Lo HANGUL SYLLABLE TYI\n if (0xd2d4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd2f0) {\n // Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH\n if (0xd2d5 <= code && code <= 0xd2ef) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE TI\n if (0xd2f0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd37d) {\n if (code < 0xd344) {\n if (code < 0xd30d) {\n if (code < 0xd30c) {\n // Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH\n if (0xd2f1 <= code && code <= 0xd30b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE PA\n if (0xd30c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xd328) {\n // Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH\n if (0xd30d <= code && code <= 0xd327) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd329) {\n // Lo HANGUL SYLLABLE PAE\n if (0xd328 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH\n if (0xd329 <= code && code <= 0xd343) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd360) {\n if (code < 0xd345) {\n // Lo HANGUL SYLLABLE PYA\n if (0xd344 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH\n if (0xd345 <= code && code <= 0xd35f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xd361) {\n // Lo HANGUL SYLLABLE PYAE\n if (0xd360 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd37c) {\n // Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH\n if (0xd361 <= code && code <= 0xd37b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE PEO\n if (0xd37c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd3d0) {\n if (code < 0xd399) {\n if (code < 0xd398) {\n // Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH\n if (0xd37d <= code && code <= 0xd397) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE PE\n if (0xd398 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xd3b4) {\n // Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH\n if (0xd399 <= code && code <= 0xd3b3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd3b5) {\n // Lo HANGUL SYLLABLE PYEO\n if (0xd3b4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH\n if (0xd3b5 <= code && code <= 0xd3cf) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd3ed) {\n if (code < 0xd3d1) {\n // Lo HANGUL SYLLABLE PYE\n if (0xd3d0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd3ec) {\n // Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH\n if (0xd3d1 <= code && code <= 0xd3eb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE PO\n if (0xd3ec === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xd408) {\n // Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH\n if (0xd3ed <= code && code <= 0xd407) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd409) {\n // Lo HANGUL SYLLABLE PWA\n if (0xd408 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH\n if (0xd409 <= code && code <= 0xd423) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd53d) {\n if (code < 0xd4b0) {\n if (code < 0xd45d) {\n if (code < 0xd440) {\n if (code < 0xd425) {\n // Lo HANGUL SYLLABLE PWAE\n if (0xd424 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH\n if (0xd425 <= code && code <= 0xd43f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xd441) {\n // Lo HANGUL SYLLABLE POE\n if (0xd440 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd45c) {\n // Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH\n if (0xd441 <= code && code <= 0xd45b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE PYO\n if (0xd45c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd479) {\n if (code < 0xd478) {\n // Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH\n if (0xd45d <= code && code <= 0xd477) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE PU\n if (0xd478 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xd494) {\n // Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH\n if (0xd479 <= code && code <= 0xd493) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd495) {\n // Lo HANGUL SYLLABLE PWEO\n if (0xd494 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH\n if (0xd495 <= code && code <= 0xd4af) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd4e9) {\n if (code < 0xd4cc) {\n if (code < 0xd4b1) {\n // Lo HANGUL SYLLABLE PWE\n if (0xd4b0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH\n if (0xd4b1 <= code && code <= 0xd4cb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xd4cd) {\n // Lo HANGUL SYLLABLE PWI\n if (0xd4cc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd4e8) {\n // Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH\n if (0xd4cd <= code && code <= 0xd4e7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE PYU\n if (0xd4e8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd520) {\n if (code < 0xd504) {\n // Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH\n if (0xd4e9 <= code && code <= 0xd503) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd505) {\n // Lo HANGUL SYLLABLE PEU\n if (0xd504 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH\n if (0xd505 <= code && code <= 0xd51f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xd521) {\n // Lo HANGUL SYLLABLE PYI\n if (0xd520 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd53c) {\n // Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH\n if (0xd521 <= code && code <= 0xd53b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE PI\n if (0xd53c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd5e4) {\n if (code < 0xd590) {\n if (code < 0xd559) {\n if (code < 0xd558) {\n // Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH\n if (0xd53d <= code && code <= 0xd557) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE HA\n if (0xd558 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xd574) {\n // Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH\n if (0xd559 <= code && code <= 0xd573) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd575) {\n // Lo HANGUL SYLLABLE HAE\n if (0xd574 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH\n if (0xd575 <= code && code <= 0xd58f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd5ad) {\n if (code < 0xd591) {\n // Lo HANGUL SYLLABLE HYA\n if (0xd590 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd5ac) {\n // Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH\n if (0xd591 <= code && code <= 0xd5ab) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE HYAE\n if (0xd5ac === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xd5c8) {\n // Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH\n if (0xd5ad <= code && code <= 0xd5c7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd5c9) {\n // Lo HANGUL SYLLABLE HEO\n if (0xd5c8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH\n if (0xd5c9 <= code && code <= 0xd5e3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd61d) {\n if (code < 0xd600) {\n if (code < 0xd5e5) {\n // Lo HANGUL SYLLABLE HE\n if (0xd5e4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH\n if (0xd5e5 <= code && code <= 0xd5ff) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xd601) {\n // Lo HANGUL SYLLABLE HYEO\n if (0xd600 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd61c) {\n // Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH\n if (0xd601 <= code && code <= 0xd61b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE HYE\n if (0xd61c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd654) {\n if (code < 0xd638) {\n // Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH\n if (0xd61d <= code && code <= 0xd637) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd639) {\n // Lo HANGUL SYLLABLE HO\n if (0xd638 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH\n if (0xd639 <= code && code <= 0xd653) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n else {\n if (code < 0xd655) {\n // Lo HANGUL SYLLABLE HWA\n if (0xd654 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd670) {\n // Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH\n if (0xd655 <= code && code <= 0xd66f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE HWAE\n if (0xd670 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x11000) {\n if (code < 0xd7b0) {\n if (code < 0xd6fd) {\n if (code < 0xd6c4) {\n if (code < 0xd68d) {\n if (code < 0xd68c) {\n // Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH\n if (0xd671 <= code && code <= 0xd68b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE HOE\n if (0xd68c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xd6a8) {\n // Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH\n if (0xd68d <= code && code <= 0xd6a7) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd6a9) {\n // Lo HANGUL SYLLABLE HYO\n if (0xd6a8 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH\n if (0xd6a9 <= code && code <= 0xd6c3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd6e0) {\n if (code < 0xd6c5) {\n // Lo HANGUL SYLLABLE HU\n if (0xd6c4 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH\n if (0xd6c5 <= code && code <= 0xd6df) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n else {\n if (code < 0xd6e1) {\n // Lo HANGUL SYLLABLE HWEO\n if (0xd6e0 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd6fc) {\n // Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH\n if (0xd6e1 <= code && code <= 0xd6fb) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE HWE\n if (0xd6fc === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0xd750) {\n if (code < 0xd719) {\n if (code < 0xd718) {\n // Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH\n if (0xd6fd <= code && code <= 0xd717) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE HWI\n if (0xd718 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n else {\n if (code < 0xd734) {\n // Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH\n if (0xd719 <= code && code <= 0xd733) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd735) {\n // Lo HANGUL SYLLABLE HYU\n if (0xd734 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH\n if (0xd735 <= code && code <= 0xd74f) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n else {\n if (code < 0xd76d) {\n if (code < 0xd751) {\n // Lo HANGUL SYLLABLE HEU\n if (0xd750 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n if (code < 0xd76c) {\n // Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH\n if (0xd751 <= code && code <= 0xd76b) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n // Lo HANGUL SYLLABLE HYI\n if (0xd76c === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n }\n }\n else {\n if (code < 0xd788) {\n // Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH\n if (0xd76d <= code && code <= 0xd787) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n else {\n if (code < 0xd789) {\n // Lo HANGUL SYLLABLE HI\n if (0xd788 === code) {\n return boundaries_1.CLUSTER_BREAK.LV;\n }\n }\n else {\n // Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH\n if (0xd789 <= code && code <= 0xd7a3) {\n return boundaries_1.CLUSTER_BREAK.LVT;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x10a01) {\n if (code < 0xfeff) {\n if (code < 0xfb1e) {\n if (code < 0xd7cb) {\n // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E\n if (0xd7b0 <= code && code <= 0xd7c6) {\n return boundaries_1.CLUSTER_BREAK.V;\n }\n }\n else {\n // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH\n if (0xd7cb <= code && code <= 0xd7fb) {\n return boundaries_1.CLUSTER_BREAK.T;\n }\n }\n }\n else {\n if (code < 0xfe00) {\n // Mn HEBREW POINT JUDEO-SPANISH VARIKA\n if (0xfb1e === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xfe20) {\n // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16\n if (0xfe00 <= code && code <= 0xfe0f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF\n if (0xfe20 <= code && code <= 0xfe2f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x101fd) {\n if (code < 0xff9e) {\n // Cf ZERO WIDTH NO-BREAK SPACE\n if (0xfeff === code) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n else {\n if (code < 0xfff0) {\n // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK\n if (0xff9e <= code && code <= 0xff9f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Cn [9] <reserved-FFF0>..<reserved-FFF8>\n // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR\n if (0xfff0 <= code && code <= 0xfffb) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n }\n }\n else {\n if (code < 0x102e0) {\n // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE\n if (0x101fd === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x10376) {\n // Mn COPTIC EPACT THOUSANDS MARK\n if (0x102e0 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII\n if (0x10376 <= code && code <= 0x1037a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x10ae5) {\n if (code < 0x10a0c) {\n if (code < 0x10a05) {\n // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R\n if (0x10a01 <= code && code <= 0x10a03) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O\n if (0x10a05 <= code && code <= 0x10a06) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x10a38) {\n // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA\n if (0x10a0c <= code && code <= 0x10a0f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x10a3f) {\n // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW\n if (0x10a38 <= code && code <= 0x10a3a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn KHAROSHTHI VIRAMA\n if (0x10a3f === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x10efd) {\n if (code < 0x10d24) {\n // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW\n if (0x10ae5 <= code && code <= 0x10ae6) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x10eab) {\n // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI\n if (0x10d24 <= code && code <= 0x10d27) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK\n if (0x10eab <= code && code <= 0x10eac) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x10f46) {\n // Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA\n if (0x10efd <= code && code <= 0x10eff) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x10f82) {\n // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW\n if (0x10f46 <= code && code <= 0x10f50) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW\n if (0x10f82 <= code && code <= 0x10f85) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x11180) {\n if (code < 0x110b7) {\n if (code < 0x11073) {\n if (code < 0x11002) {\n // Mc BRAHMI SIGN CANDRABINDU\n if (0x11000 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn BRAHMI SIGN ANUSVARA\n if (0x11001 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11038) {\n // Mc BRAHMI SIGN VISARGA\n if (0x11002 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x11070) {\n // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA\n if (0x11038 <= code && code <= 0x11046) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn BRAHMI SIGN OLD TAMIL VIRAMA\n if (0x11070 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x11082) {\n if (code < 0x1107f) {\n // Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O\n if (0x11073 <= code && code <= 0x11074) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA\n if (0x1107f <= code && code <= 0x11081) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x110b0) {\n // Mc KAITHI SIGN VISARGA\n if (0x11082 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x110b3) {\n // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II\n if (0x110b0 <= code && code <= 0x110b2) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI\n if (0x110b3 <= code && code <= 0x110b6) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x11100) {\n if (code < 0x110bd) {\n if (code < 0x110b9) {\n // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU\n if (0x110b7 <= code && code <= 0x110b8) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA\n if (0x110b9 <= code && code <= 0x110ba) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x110c2) {\n // Cf KAITHI NUMBER SIGN\n if (0x110bd === code) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n }\n else {\n // Mn KAITHI VOWEL SIGN VOCALIC R\n if (0x110c2 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Cf KAITHI NUMBER SIGN ABOVE\n if (0x110cd === code) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n }\n }\n }\n else {\n if (code < 0x1112d) {\n if (code < 0x11127) {\n // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA\n if (0x11100 <= code && code <= 0x11102) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1112c) {\n // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU\n if (0x11127 <= code && code <= 0x1112b) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc CHAKMA VOWEL SIGN E\n if (0x1112c === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0x11145) {\n // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA\n if (0x1112d <= code && code <= 0x11134) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11173) {\n // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI\n if (0x11145 <= code && code <= 0x11146) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn MAHAJANI SIGN NUKTA\n if (0x11173 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x11232) {\n if (code < 0x111c2) {\n if (code < 0x111b3) {\n if (code < 0x11182) {\n // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA\n if (0x11180 <= code && code <= 0x11181) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc SHARADA SIGN VISARGA\n if (0x11182 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x111b6) {\n // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II\n if (0x111b3 <= code && code <= 0x111b5) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x111bf) {\n // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O\n if (0x111b6 <= code && code <= 0x111be) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA\n if (0x111bf <= code && code <= 0x111c0) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0x111cf) {\n if (code < 0x111c9) {\n // Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA\n if (0x111c2 <= code && code <= 0x111c3) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n }\n else {\n if (code < 0x111ce) {\n // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK\n if (0x111c9 <= code && code <= 0x111cc) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E\n if (0x111ce === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0x1122c) {\n // Mn SHARADA SIGN INVERTED CANDRABINDU\n if (0x111cf === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1122f) {\n // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II\n if (0x1122c <= code && code <= 0x1122e) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI\n if (0x1122f <= code && code <= 0x11231) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x11241) {\n if (code < 0x11235) {\n if (code < 0x11234) {\n // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU\n if (0x11232 <= code && code <= 0x11233) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn KHOJKI SIGN ANUSVARA\n if (0x11234 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x11236) {\n // Mc KHOJKI SIGN VIRAMA\n if (0x11235 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x1123e) {\n // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA\n if (0x11236 <= code && code <= 0x11237) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn KHOJKI SIGN SUKUN\n if (0x1123e === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x112e3) {\n if (code < 0x112df) {\n // Mn KHOJKI VOWEL SIGN VOCALIC R\n if (0x11241 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x112e0) {\n // Mn KHUDAWADI SIGN ANUSVARA\n if (0x112df === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II\n if (0x112e0 <= code && code <= 0x112e2) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0x11300) {\n // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA\n if (0x112e3 <= code && code <= 0x112ea) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11302) {\n // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU\n if (0x11300 <= code && code <= 0x11301) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA\n if (0x11302 <= code && code <= 0x11303) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x11a97) {\n if (code < 0x116ab) {\n if (code < 0x114b9) {\n if (code < 0x11370) {\n if (code < 0x11347) {\n if (code < 0x1133f) {\n if (code < 0x1133e) {\n // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA\n if (0x1133b <= code && code <= 0x1133c) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc GRANTHA VOWEL SIGN AA\n if (0x1133e === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x11340) {\n // Mc GRANTHA VOWEL SIGN I\n if (0x1133f === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x11341) {\n // Mn GRANTHA VOWEL SIGN II\n if (0x11340 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR\n if (0x11341 <= code && code <= 0x11344) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0x11357) {\n if (code < 0x1134b) {\n // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI\n if (0x11347 <= code && code <= 0x11348) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA\n if (0x1134b <= code && code <= 0x1134d) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x11362) {\n // Mc GRANTHA AU LENGTH MARK\n if (0x11357 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11366) {\n // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL\n if (0x11362 <= code && code <= 0x11363) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX\n if (0x11366 <= code && code <= 0x1136c) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x11445) {\n if (code < 0x11438) {\n if (code < 0x11435) {\n // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA\n if (0x11370 <= code && code <= 0x11374) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II\n if (0x11435 <= code && code <= 0x11437) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x11440) {\n // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI\n if (0x11438 <= code && code <= 0x1143f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11442) {\n // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU\n if (0x11440 <= code && code <= 0x11441) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA\n if (0x11442 <= code && code <= 0x11444) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x114b0) {\n if (code < 0x11446) {\n // Mc NEWA SIGN VISARGA\n if (0x11445 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn NEWA SIGN NUKTA\n if (0x11446 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mn NEWA SANDHI MARK\n if (0x1145e === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x114b1) {\n // Mc TIRHUTA VOWEL SIGN AA\n if (0x114b0 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x114b3) {\n // Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II\n if (0x114b1 <= code && code <= 0x114b2) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL\n if (0x114b3 <= code && code <= 0x114b8) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x115b8) {\n if (code < 0x114bf) {\n if (code < 0x114bb) {\n // Mc TIRHUTA VOWEL SIGN E\n if (0x114b9 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn TIRHUTA VOWEL SIGN SHORT E\n if (0x114ba === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x114bd) {\n // Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O\n if (0x114bb <= code && code <= 0x114bc) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mc TIRHUTA VOWEL SIGN SHORT O\n if (0x114bd === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mc TIRHUTA VOWEL SIGN AU\n if (0x114be === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0x115af) {\n if (code < 0x114c1) {\n // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA\n if (0x114bf <= code && code <= 0x114c0) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x114c2) {\n // Mc TIRHUTA SIGN VISARGA\n if (0x114c1 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA\n if (0x114c2 <= code && code <= 0x114c3) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x115b0) {\n // Mc SIDDHAM VOWEL SIGN AA\n if (0x115af === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x115b2) {\n // Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II\n if (0x115b0 <= code && code <= 0x115b1) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR\n if (0x115b2 <= code && code <= 0x115b5) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x11630) {\n if (code < 0x115be) {\n if (code < 0x115bc) {\n // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU\n if (0x115b8 <= code && code <= 0x115bb) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA\n if (0x115bc <= code && code <= 0x115bd) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x115bf) {\n // Mc SIDDHAM SIGN VISARGA\n if (0x115be === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x115dc) {\n // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA\n if (0x115bf <= code && code <= 0x115c0) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU\n if (0x115dc <= code && code <= 0x115dd) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1163d) {\n if (code < 0x11633) {\n // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II\n if (0x11630 <= code && code <= 0x11632) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x1163b) {\n // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI\n if (0x11633 <= code && code <= 0x1163a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU\n if (0x1163b <= code && code <= 0x1163c) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0x1163e) {\n // Mn MODI SIGN ANUSVARA\n if (0x1163d === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1163f) {\n // Mc MODI SIGN VISARGA\n if (0x1163e === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA\n if (0x1163f <= code && code <= 0x11640) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1193f) {\n if (code < 0x11727) {\n if (code < 0x116b6) {\n if (code < 0x116ad) {\n // Mn TAKRI SIGN ANUSVARA\n if (0x116ab === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mc TAKRI SIGN VISARGA\n if (0x116ac === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x116ae) {\n // Mn TAKRI VOWEL SIGN AA\n if (0x116ad === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x116b0) {\n // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II\n if (0x116ae <= code && code <= 0x116af) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU\n if (0x116b0 <= code && code <= 0x116b5) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1171d) {\n // Mc TAKRI SIGN VIRAMA\n if (0x116b6 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn TAKRI SIGN NUKTA\n if (0x116b7 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11722) {\n // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA\n if (0x1171d <= code && code <= 0x1171f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11726) {\n // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU\n if (0x11722 <= code && code <= 0x11725) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc AHOM VOWEL SIGN E\n if (0x11726 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x11930) {\n if (code < 0x1182f) {\n if (code < 0x1182c) {\n // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER\n if (0x11727 <= code && code <= 0x1172b) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II\n if (0x1182c <= code && code <= 0x1182e) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x11838) {\n // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA\n if (0x1182f <= code && code <= 0x11837) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11839) {\n // Mc DOGRA SIGN VISARGA\n if (0x11838 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA\n if (0x11839 <= code && code <= 0x1183a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1193b) {\n if (code < 0x11931) {\n // Mc DIVES AKURU VOWEL SIGN AA\n if (0x11930 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11937) {\n // Mc [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E\n if (0x11931 <= code && code <= 0x11935) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O\n if (0x11937 <= code && code <= 0x11938) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0x1193d) {\n // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU\n if (0x1193b <= code && code <= 0x1193c) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc DIVES AKURU SIGN HALANTA\n if (0x1193d === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn DIVES AKURU VIRAMA\n if (0x1193e === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x11a01) {\n if (code < 0x119d1) {\n if (code < 0x11941) {\n // Lo DIVES AKURU PREFIXED NASAL SIGN\n if (0x1193f === code) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n // Mc DIVES AKURU MEDIAL YA\n if (0x11940 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x11942) {\n // Lo DIVES AKURU INITIAL RA\n if (0x11941 === code) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n }\n else {\n // Mc DIVES AKURU MEDIAL RA\n if (0x11942 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn DIVES AKURU SIGN NUKTA\n if (0x11943 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x119dc) {\n if (code < 0x119d4) {\n // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II\n if (0x119d1 <= code && code <= 0x119d3) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x119da) {\n // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR\n if (0x119d4 <= code && code <= 0x119d7) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI\n if (0x119da <= code && code <= 0x119db) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x119e0) {\n // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA\n if (0x119dc <= code && code <= 0x119df) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn NANDINAGARI SIGN VIRAMA\n if (0x119e0 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E\n if (0x119e4 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0x11a47) {\n if (code < 0x11a39) {\n if (code < 0x11a33) {\n // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK\n if (0x11a01 <= code && code <= 0x11a0a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA\n if (0x11a33 <= code && code <= 0x11a38) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x11a3a) {\n // Mc ZANABAZAR SQUARE SIGN VISARGA\n if (0x11a39 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x11a3b) {\n // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA\n if (0x11a3a === code) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n }\n else {\n // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA\n if (0x11a3b <= code && code <= 0x11a3e) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x11a59) {\n if (code < 0x11a51) {\n // Mn ZANABAZAR SQUARE SUBJOINER\n if (0x11a47 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11a57) {\n // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE\n if (0x11a51 <= code && code <= 0x11a56) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU\n if (0x11a57 <= code && code <= 0x11a58) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n else {\n if (code < 0x11a84) {\n // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK\n if (0x11a59 <= code && code <= 0x11a5b) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11a8a) {\n // Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA\n if (0x11a84 <= code && code <= 0x11a89) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n }\n else {\n // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA\n if (0x11a8a <= code && code <= 0x11a96) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x16f51) {\n if (code < 0x11d90) {\n if (code < 0x11cb1) {\n if (code < 0x11c3e) {\n if (code < 0x11c2f) {\n if (code < 0x11a98) {\n // Mc SOYOMBO SIGN VISARGA\n if (0x11a97 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER\n if (0x11a98 <= code && code <= 0x11a99) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x11c30) {\n // Mc BHAIKSUKI VOWEL SIGN AA\n if (0x11c2f === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x11c38) {\n // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L\n if (0x11c30 <= code && code <= 0x11c36) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA\n if (0x11c38 <= code && code <= 0x11c3d) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x11c92) {\n // Mc BHAIKSUKI SIGN VISARGA\n if (0x11c3e === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn BHAIKSUKI SIGN VIRAMA\n if (0x11c3f === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11ca9) {\n // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA\n if (0x11c92 <= code && code <= 0x11ca7) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11caa) {\n // Mc MARCHEN SUBJOINED LETTER YA\n if (0x11ca9 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA\n if (0x11caa <= code && code <= 0x11cb0) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x11d3a) {\n if (code < 0x11cb4) {\n if (code < 0x11cb2) {\n // Mc MARCHEN VOWEL SIGN I\n if (0x11cb1 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E\n if (0x11cb2 <= code && code <= 0x11cb3) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x11cb5) {\n // Mc MARCHEN VOWEL SIGN O\n if (0x11cb4 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n if (code < 0x11d31) {\n // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU\n if (0x11cb5 <= code && code <= 0x11cb6) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R\n if (0x11d31 <= code && code <= 0x11d36) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x11d46) {\n if (code < 0x11d3c) {\n // Mn MASARAM GONDI VOWEL SIGN E\n if (0x11d3a === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11d3f) {\n // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O\n if (0x11d3c <= code && code <= 0x11d3d) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA\n if (0x11d3f <= code && code <= 0x11d45) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x11d47) {\n // Lo MASARAM GONDI REPHA\n if (0x11d46 === code) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n }\n else {\n if (code < 0x11d8a) {\n // Mn MASARAM GONDI RA-KARA\n if (0x11d47 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU\n if (0x11d8a <= code && code <= 0x11d8e) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x11f36) {\n if (code < 0x11ef3) {\n if (code < 0x11d95) {\n if (code < 0x11d93) {\n // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI\n if (0x11d90 <= code && code <= 0x11d91) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU\n if (0x11d93 <= code && code <= 0x11d94) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x11d96) {\n // Mn GUNJALA GONDI SIGN ANUSVARA\n if (0x11d95 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc GUNJALA GONDI SIGN VISARGA\n if (0x11d96 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn GUNJALA GONDI VIRAMA\n if (0x11d97 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x11f02) {\n if (code < 0x11ef5) {\n // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U\n if (0x11ef3 <= code && code <= 0x11ef4) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x11f00) {\n // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O\n if (0x11ef5 <= code && code <= 0x11ef6) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA\n if (0x11f00 <= code && code <= 0x11f01) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x11f03) {\n // Lo KAWI SIGN REPHA\n if (0x11f02 === code) {\n return boundaries_1.CLUSTER_BREAK.PREPEND;\n }\n }\n else {\n if (code < 0x11f34) {\n // Mc KAWI SIGN VISARGA\n if (0x11f03 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA\n if (0x11f34 <= code && code <= 0x11f35) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x13430) {\n if (code < 0x11f40) {\n if (code < 0x11f3e) {\n // Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R\n if (0x11f36 <= code && code <= 0x11f3a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI\n if (0x11f3e <= code && code <= 0x11f3f) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x11f41) {\n // Mn KAWI VOWEL SIGN EU\n if (0x11f40 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc KAWI SIGN KILLER\n if (0x11f41 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n // Mn KAWI CONJOINER\n if (0x11f42 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x16af0) {\n if (code < 0x13440) {\n // Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE\n if (0x13430 <= code && code <= 0x1343f) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n else {\n if (code < 0x13447) {\n // Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY\n if (0x13440 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED\n if (0x13447 <= code && code <= 0x13455) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x16b30) {\n // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE\n if (0x16af0 <= code && code <= 0x16af4) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x16f4f) {\n // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM\n if (0x16b30 <= code && code <= 0x16b36) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn MIAO SIGN CONSONANT MODIFIER BAR\n if (0x16f4f === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1da84) {\n if (code < 0x1d167) {\n if (code < 0x1bca0) {\n if (code < 0x16fe4) {\n if (code < 0x16f8f) {\n // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI\n if (0x16f51 <= code && code <= 0x16f87) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW\n if (0x16f8f <= code && code <= 0x16f92) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x16ff0) {\n // Mn KHITAN SMALL SCRIPT FILLER\n if (0x16fe4 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1bc9d) {\n // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY\n if (0x16ff0 <= code && code <= 0x16ff1) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n else {\n // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK\n if (0x1bc9d <= code && code <= 0x1bc9e) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1cf30) {\n if (code < 0x1cf00) {\n // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP\n if (0x1bca0 <= code && code <= 0x1bca3) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n else {\n // Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT\n if (0x1cf00 <= code && code <= 0x1cf2d) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x1d165) {\n // Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG\n if (0x1cf30 <= code && code <= 0x1cf46) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc MUSICAL SYMBOL COMBINING STEM\n if (0x1d165 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n // Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM\n if (0x1d166 === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1d185) {\n if (code < 0x1d16e) {\n if (code < 0x1d16d) {\n // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3\n if (0x1d167 <= code && code <= 0x1d169) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT\n if (0x1d16d === code) {\n return boundaries_1.CLUSTER_BREAK.SPACINGMARK;\n }\n }\n }\n else {\n if (code < 0x1d173) {\n // Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5\n if (0x1d16e <= code && code <= 0x1d172) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1d17b) {\n // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE\n if (0x1d173 <= code && code <= 0x1d17a) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n else {\n // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE\n if (0x1d17b <= code && code <= 0x1d182) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1da00) {\n if (code < 0x1d1aa) {\n // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE\n if (0x1d185 <= code && code <= 0x1d18b) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1d242) {\n // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO\n if (0x1d1aa <= code && code <= 0x1d1ad) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME\n if (0x1d242 <= code && code <= 0x1d244) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x1da3b) {\n // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN\n if (0x1da00 <= code && code <= 0x1da36) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1da75) {\n // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT\n if (0x1da3b <= code && code <= 0x1da6c) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS\n if (0x1da75 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1e2ec) {\n if (code < 0x1e01b) {\n if (code < 0x1daa1) {\n if (code < 0x1da9b) {\n // Mn SIGNWRITING LOCATION HEAD NECK\n if (0x1da84 === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6\n if (0x1da9b <= code && code <= 0x1da9f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x1e000) {\n // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16\n if (0x1daa1 <= code && code <= 0x1daaf) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1e008) {\n // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE\n if (0x1e000 <= code && code <= 0x1e006) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU\n if (0x1e008 <= code && code <= 0x1e018) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1e08f) {\n if (code < 0x1e023) {\n // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI\n if (0x1e01b <= code && code <= 0x1e021) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1e026) {\n // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS\n if (0x1e023 <= code && code <= 0x1e024) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA\n if (0x1e026 <= code && code <= 0x1e02a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0x1e130) {\n // Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I\n if (0x1e08f === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1e2ae) {\n // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D\n if (0x1e130 <= code && code <= 0x1e136) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn TOTO SIGN RISING TONE\n if (0x1e2ae === code) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1f3fb) {\n if (code < 0x1e8d0) {\n if (code < 0x1e4ec) {\n // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI\n if (0x1e2ec <= code && code <= 0x1e2ef) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH\n if (0x1e4ec <= code && code <= 0x1e4ef) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n else {\n if (code < 0x1e944) {\n // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS\n if (0x1e8d0 <= code && code <= 0x1e8d6) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0x1f1e6) {\n // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA\n if (0x1e944 <= code && code <= 0x1e94a) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z\n if (0x1f1e6 <= code && code <= 0x1f1ff) {\n return boundaries_1.CLUSTER_BREAK.REGIONAL_INDICATOR;\n }\n }\n }\n }\n }\n else {\n if (code < 0xe0080) {\n if (code < 0xe0000) {\n // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6\n if (0x1f3fb <= code && code <= 0x1f3ff) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n if (code < 0xe0020) {\n // Cn <reserved-E0000>\n // Cf LANGUAGE TAG\n // Cn [30] <reserved-E0002>..<reserved-E001F>\n if (0xe0000 <= code && code <= 0xe001f) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n else {\n // Cf [96] TAG SPACE..CANCEL TAG\n if (0xe0020 <= code && code <= 0xe007f) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n }\n }\n else {\n if (code < 0xe0100) {\n // Cn [128] <reserved-E0080>..<reserved-E00FF>\n if (0xe0080 <= code && code <= 0xe00ff) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n else {\n if (code < 0xe01f0) {\n // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256\n if (0xe0100 <= code && code <= 0xe01ef) {\n return boundaries_1.CLUSTER_BREAK.EXTEND;\n }\n }\n else {\n // Cn [3600] <reserved-E01F0>..<reserved-E0FFF>\n if (0xe01f0 <= code && code <= 0xe0fff) {\n return boundaries_1.CLUSTER_BREAK.CONTROL;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n // unlisted code points are treated as a break property of \"Other\"\n return boundaries_1.CLUSTER_BREAK.OTHER;\n }\n /**\n * Given a Unicode code point, returns if symbol is an extended pictographic or some other break\n * @param code {number} Unicode code point\n * @returns {number}\n */\n static getEmojiProperty(code) {\n // emoji property taken from:\n // https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt\n // and generated by\n // node ./scripts/generate-emoji-extended-pictographic.js\n if (code < 0x27b0) {\n if (code < 0x2600) {\n if (code < 0x2328) {\n if (code < 0x2122) {\n if (code < 0x203c) {\n // E0.6 [1] (\u00A9\uFE0F) copyright\n if (0xa9 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n // E0.6 [1] (\u00AE\uFE0F) registered\n if (0xae === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [1] (\u203C\uFE0F) double exclamation mark\n if (0x203c === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n // E0.6 [1] (\u2049\uFE0F) exclamation question mark\n if (0x2049 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n else {\n if (code < 0x2194) {\n // E0.6 [1] (\u2122\uFE0F) trade mark\n if (0x2122 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n // E0.6 [1] (\u2139\uFE0F) information\n if (0x2139 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x21a9) {\n // E0.6 [6] (\u2194\uFE0F..\u2199\uFE0F) left-right arrow..down-left arrow\n if (0x2194 <= code && code <= 0x2199) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x231a) {\n // E0.6 [2] (\u21A9\uFE0F..\u21AA\uFE0F) right arrow curving left..left arrow curving right\n if (0x21a9 <= code && code <= 0x21aa) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [2] (\u231A..\u231B) watch..hourglass done\n if (0x231a <= code && code <= 0x231b) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x24c2) {\n if (code < 0x23cf) {\n // E1.0 [1] (\u2328\uFE0F) keyboard\n if (0x2328 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n // E0.0 [1] (\u2388) HELM SYMBOL\n if (0x2388 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x23e9) {\n // E1.0 [1] (\u23CF\uFE0F) eject button\n if (0x23cf === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x23f8) {\n // E0.6 [4] (\u23E9..\u23EC) fast-forward button..fast down button\n // E0.7 [2] (\u23ED\uFE0F..\u23EE\uFE0F) next track button..last track button\n // E1.0 [1] (\u23EF\uFE0F) play or pause button\n // E0.6 [1] (\u23F0) alarm clock\n // E1.0 [2] (\u23F1\uFE0F..\u23F2\uFE0F) stopwatch..timer clock\n // E0.6 [1] (\u23F3) hourglass not done\n if (0x23e9 <= code && code <= 0x23f3) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.7 [3] (\u23F8\uFE0F..\u23FA\uFE0F) pause button..record button\n if (0x23f8 <= code && code <= 0x23fa) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n else {\n if (code < 0x25b6) {\n if (code < 0x25aa) {\n // E0.6 [1] (\u24C2\uFE0F) circled M\n if (0x24c2 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [2] (\u25AA\uFE0F..\u25AB\uFE0F) black small square..white small square\n if (0x25aa <= code && code <= 0x25ab) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n else {\n if (code < 0x25c0) {\n // E0.6 [1] (\u25B6\uFE0F) play button\n if (0x25b6 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x25fb) {\n // E0.6 [1] (\u25C0\uFE0F) reverse button\n if (0x25c0 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [4] (\u25FB\uFE0F..\u25FE) white medium square..black medium-small square\n if (0x25fb <= code && code <= 0x25fe) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x2733) {\n if (code < 0x2714) {\n if (code < 0x2614) {\n if (code < 0x2607) {\n // E0.6 [2] (\u2600\uFE0F..\u2601\uFE0F) sun..cloud\n // E0.7 [2] (\u2602\uFE0F..\u2603\uFE0F) umbrella..snowman\n // E1.0 [1] (\u2604\uFE0F) comet\n // E0.0 [1] (\u2605) BLACK STAR\n if (0x2600 <= code && code <= 0x2605) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.0 [7] (\u2607..\u260D) LIGHTNING..OPPOSITION\n // E0.6 [1] (\u260E\uFE0F) telephone\n // E0.0 [2] (\u260F..\u2610) WHITE TELEPHONE..BALLOT BOX\n // E0.6 [1] (\u2611\uFE0F) check box with check\n // E0.0 [1] (\u2612) BALLOT BOX WITH X\n if (0x2607 <= code && code <= 0x2612) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n else {\n if (code < 0x2690) {\n // E0.6 [2] (\u2614..\u2615) umbrella with rain drops..hot beverage\n // E0.0 [2] (\u2616..\u2617) WHITE SHOGI PIECE..BLACK SHOGI PIECE\n // E1.0 [1] (\u2618\uFE0F) shamrock\n // E0.0 [4] (\u2619..\u261C) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX\n // E0.6 [1] (\u261D\uFE0F) index pointing up\n // E0.0 [2] (\u261E..\u261F) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX\n // E1.0 [1] (\u2620\uFE0F) skull and crossbones\n // E0.0 [1] (\u2621) CAUTION SIGN\n // E1.0 [2] (\u2622\uFE0F..\u2623\uFE0F) radioactive..biohazard\n // E0.0 [2] (\u2624..\u2625) CADUCEUS..ANKH\n // E1.0 [1] (\u2626\uFE0F) orthodox cross\n // E0.0 [3] (\u2627..\u2629) CHI RHO..CROSS OF JERUSALEM\n // E0.7 [1] (\u262A\uFE0F) star and crescent\n // E0.0 [3] (\u262B..\u262D) FARSI SYMBOL..HAMMER AND SICKLE\n // E1.0 [1] (\u262E\uFE0F) peace symbol\n // E0.7 [1] (\u262F\uFE0F) yin yang\n // E0.0 [8] (\u2630..\u2637) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH\n // E0.7 [2] (\u2638\uFE0F..\u2639\uFE0F) wheel of dharma..frowning face\n // E0.6 [1] (\u263A\uFE0F) smiling face\n // E0.0 [5] (\u263B..\u263F) BLACK SMILING FACE..MERCURY\n // E4.0 [1] (\u2640\uFE0F) female sign\n // E0.0 [1] (\u2641) EARTH\n // E4.0 [1] (\u2642\uFE0F) male sign\n // E0.0 [5] (\u2643..\u2647) JUPITER..PLUTO\n // E0.6 [12] (\u2648..\u2653) Aries..Pisces\n // E0.0 [11] (\u2654..\u265E) WHITE CHESS KING..BLACK CHESS KNIGHT\n // E11.0 [1] (\u265F\uFE0F) chess pawn\n // E0.6 [1] (\u2660\uFE0F) spade suit\n // E0.0 [2] (\u2661..\u2662) WHITE HEART SUIT..WHITE DIAMOND SUIT\n // E0.6 [1] (\u2663\uFE0F) club suit\n // E0.0 [1] (\u2664) WHITE SPADE SUIT\n // E0.6 [2] (\u2665\uFE0F..\u2666\uFE0F) heart suit..diamond suit\n // E0.0 [1] (\u2667) WHITE CLUB SUIT\n // E0.6 [1] (\u2668\uFE0F) hot springs\n // E0.0 [18] (\u2669..\u267A) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS\n // E0.6 [1] (\u267B\uFE0F) recycling symbol\n // E0.0 [2] (\u267C..\u267D) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL\n // E11.0 [1] (\u267E\uFE0F) infinity\n // E0.6 [1] (\u267F) wheelchair symbol\n // E0.0 [6] (\u2680..\u2685) DIE FACE-1..DIE FACE-6\n if (0x2614 <= code && code <= 0x2685) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x2708) {\n // E0.0 [2] (\u2690..\u2691) WHITE FLAG..BLACK FLAG\n // E1.0 [1] (\u2692\uFE0F) hammer and pick\n // E0.6 [1] (\u2693) anchor\n // E1.0 [1] (\u2694\uFE0F) crossed swords\n // E4.0 [1] (\u2695\uFE0F) medical symbol\n // E1.0 [2] (\u2696\uFE0F..\u2697\uFE0F) balance scale..alembic\n // E0.0 [1] (\u2698) FLOWER\n // E1.0 [1] (\u2699\uFE0F) gear\n // E0.0 [1] (\u269A) STAFF OF HERMES\n // E1.0 [2] (\u269B\uFE0F..\u269C\uFE0F) atom symbol..fleur-de-lis\n // E0.0 [3] (\u269D..\u269F) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT\n // E0.6 [2] (\u26A0\uFE0F..\u26A1) warning..high voltage\n // E0.0 [5] (\u26A2..\u26A6) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN\n // E13.0 [1] (\u26A7\uFE0F) transgender symbol\n // E0.0 [2] (\u26A8..\u26A9) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN\n // E0.6 [2] (\u26AA..\u26AB) white circle..black circle\n // E0.0 [4] (\u26AC..\u26AF) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL\n // E1.0 [2] (\u26B0\uFE0F..\u26B1\uFE0F) coffin..funeral urn\n // E0.0 [11] (\u26B2..\u26BC) NEUTER..SESQUIQUADRATE\n // E0.6 [2] (\u26BD..\u26BE) soccer ball..baseball\n // E0.0 [5] (\u26BF..\u26C3) SQUARED KEY..BLACK DRAUGHTS KING\n // E0.6 [2] (\u26C4..\u26C5) snowman without snow..sun behind cloud\n // E0.0 [2] (\u26C6..\u26C7) RAIN..BLACK SNOWMAN\n // E0.7 [1] (\u26C8\uFE0F) cloud with lightning and rain\n // E0.0 [5] (\u26C9..\u26CD) TURNED WHITE SHOGI PIECE..DISABLED CAR\n // E0.6 [1] (\u26CE) Ophiuchus\n // E0.7 [1] (\u26CF\uFE0F) pick\n // E0.0 [1] (\u26D0) CAR SLIDING\n // E0.7 [1] (\u26D1\uFE0F) rescue worker\u2019s helmet\n // E0.0 [1] (\u26D2) CIRCLED CROSSING LANES\n // E0.7 [1] (\u26D3\uFE0F) chains\n // E0.6 [1] (\u26D4) no entry\n // E0.0 [20] (\u26D5..\u26E8) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD\n // E0.7 [1] (\u26E9\uFE0F) shinto shrine\n // E0.6 [1] (\u26EA) church\n // E0.0 [5] (\u26EB..\u26EF) CASTLE..MAP SYMBOL FOR LIGHTHOUSE\n // E0.7 [2] (\u26F0\uFE0F..\u26F1\uFE0F) mountain..umbrella on ground\n // E0.6 [2] (\u26F2..\u26F3) fountain..flag in hole\n // E0.7 [1] (\u26F4\uFE0F) ferry\n // E0.6 [1] (\u26F5) sailboat\n // E0.0 [1] (\u26F6) SQUARE FOUR CORNERS\n // E0.7 [3] (\u26F7\uFE0F..\u26F9\uFE0F) skier..person bouncing ball\n // E0.6 [1] (\u26FA) tent\n // E0.0 [2] (\u26FB..\u26FC) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL\n // E0.6 [1] (\u26FD) fuel pump\n // E0.0 [4] (\u26FE..\u2701) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS\n // E0.6 [1] (\u2702\uFE0F) scissors\n // E0.0 [2] (\u2703..\u2704) LOWER BLADE SCISSORS..WHITE SCISSORS\n // E0.6 [1] (\u2705) check mark button\n if (0x2690 <= code && code <= 0x2705) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [5] (\u2708\uFE0F..\u270C\uFE0F) airplane..victory hand\n // E0.7 [1] (\u270D\uFE0F) writing hand\n // E0.0 [1] (\u270E) LOWER RIGHT PENCIL\n // E0.6 [1] (\u270F\uFE0F) pencil\n // E0.0 [2] (\u2710..\u2711) UPPER RIGHT PENCIL..WHITE NIB\n // E0.6 [1] (\u2712\uFE0F) black nib\n if (0x2708 <= code && code <= 0x2712) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n else {\n if (code < 0x271d) {\n // E0.6 [1] (\u2714\uFE0F) check mark\n if (0x2714 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n // E0.6 [1] (\u2716\uFE0F) multiply\n if (0x2716 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x2721) {\n // E0.7 [1] (\u271D\uFE0F) latin cross\n if (0x271d === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.7 [1] (\u2721\uFE0F) star of David\n if (0x2721 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n // E0.6 [1] (\u2728) sparkles\n if (0x2728 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n else {\n if (code < 0x2753) {\n if (code < 0x2747) {\n if (code < 0x2744) {\n // E0.6 [2] (\u2733\uFE0F..\u2734\uFE0F) eight-spoked asterisk..eight-pointed star\n if (0x2733 <= code && code <= 0x2734) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [1] (\u2744\uFE0F) snowflake\n if (0x2744 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n else {\n if (code < 0x274c) {\n // E0.6 [1] (\u2747\uFE0F) sparkle\n if (0x2747 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [1] (\u274C) cross mark\n if (0x274c === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n // E0.6 [1] (\u274E) cross mark button\n if (0x274e === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n else {\n if (code < 0x2763) {\n if (code < 0x2757) {\n // E0.6 [3] (\u2753..\u2755) red question mark..white exclamation mark\n if (0x2753 <= code && code <= 0x2755) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [1] (\u2757) red exclamation mark\n if (0x2757 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n else {\n if (code < 0x2795) {\n // E1.0 [1] (\u2763\uFE0F) heart exclamation\n // E0.6 [1] (\u2764\uFE0F) red heart\n // E0.0 [3] (\u2765..\u2767) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET\n if (0x2763 <= code && code <= 0x2767) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x27a1) {\n // E0.6 [3] (\u2795..\u2797) plus..divide\n if (0x2795 <= code && code <= 0x2797) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [1] (\u27A1\uFE0F) right arrow\n if (0x27a1 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1f201) {\n if (code < 0x3297) {\n if (code < 0x2b1b) {\n if (code < 0x2934) {\n // E0.6 [1] (\u27B0) curly loop\n if (0x27b0 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n // E1.0 [1] (\u27BF) double curly loop\n if (0x27bf === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x2b05) {\n // E0.6 [2] (\u2934\uFE0F..\u2935\uFE0F) right arrow curving up..right arrow curving down\n if (0x2934 <= code && code <= 0x2935) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [3] (\u2B05\uFE0F..\u2B07\uFE0F) left arrow..down arrow\n if (0x2b05 <= code && code <= 0x2b07) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n else {\n if (code < 0x2b55) {\n if (code < 0x2b50) {\n // E0.6 [2] (\u2B1B..\u2B1C) black large square..white large square\n if (0x2b1b <= code && code <= 0x2b1c) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [1] (\u2B50) star\n if (0x2b50 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n else {\n if (code < 0x3030) {\n // E0.6 [1] (\u2B55) hollow red circle\n if (0x2b55 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [1] (\u3030\uFE0F) wavy dash\n if (0x3030 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n // E0.6 [1] (\u303D\uFE0F) part alternation mark\n if (0x303d === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1f16c) {\n if (code < 0x1f000) {\n // E0.6 [1] (\u3297\uFE0F) Japanese \u201Ccongratulations\u201D button\n if (0x3297 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n // E0.6 [1] (\u3299\uFE0F) Japanese \u201Csecret\u201D button\n if (0x3299 === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x1f10d) {\n // E0.0 [4] (\uD83C\uDC00..\uD83C\uDC03) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND\n // E0.6 [1] (\uD83C\uDC04) mahjong red dragon\n // E0.0 [202] (\uD83C\uDC05..\uD83C\uDCCE) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS\n // E0.6 [1] (\uD83C\uDCCF) joker\n // E0.0 [48] (\uD83C\uDCD0..\uD83C\uDCFF) <reserved-1F0D0>..<reserved-1F0FF>\n if (0x1f000 <= code && code <= 0x1f0ff) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x1f12f) {\n // E0.0 [3] (\uD83C\uDD0D..\uD83C\uDD0F) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH\n if (0x1f10d <= code && code <= 0x1f10f) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.0 [1] (\uD83C\uDD2F) COPYLEFT SYMBOL\n if (0x1f12f === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1f18e) {\n if (code < 0x1f17e) {\n // E0.0 [4] (\uD83C\uDD6C..\uD83C\uDD6F) RAISED MR SIGN..CIRCLED HUMAN FIGURE\n // E0.6 [2] (\uD83C\uDD70\uFE0F..\uD83C\uDD71\uFE0F) A button (blood type)..B button (blood type)\n if (0x1f16c <= code && code <= 0x1f171) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [2] (\uD83C\uDD7E\uFE0F..\uD83C\uDD7F\uFE0F) O button (blood type)..P button\n if (0x1f17e <= code && code <= 0x1f17f) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n else {\n if (code < 0x1f191) {\n // E0.6 [1] (\uD83C\uDD8E) AB button (blood type)\n if (0x1f18e === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x1f1ad) {\n // E0.6 [10] (\uD83C\uDD91..\uD83C\uDD9A) CL button..VS button\n if (0x1f191 <= code && code <= 0x1f19a) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.0 [57] (\uD83C\uDDAD..\uD83C\uDDE5) MASK WORK SYMBOL..<reserved-1F1E5>\n if (0x1f1ad <= code && code <= 0x1f1e5) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1f7d5) {\n if (code < 0x1f249) {\n if (code < 0x1f22f) {\n if (code < 0x1f21a) {\n // E0.6 [2] (\uD83C\uDE01..\uD83C\uDE02\uFE0F) Japanese \u201Chere\u201D button..Japanese \u201Cservice charge\u201D button\n // E0.0 [13] (\uD83C\uDE03..\uD83C\uDE0F) <reserved-1F203>..<reserved-1F20F>\n if (0x1f201 <= code && code <= 0x1f20f) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.6 [1] (\uD83C\uDE1A) Japanese \u201Cfree of charge\u201D button\n if (0x1f21a === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n else {\n if (code < 0x1f232) {\n // E0.6 [1] (\uD83C\uDE2F) Japanese \u201Creserved\u201D button\n if (0x1f22f === code) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x1f23c) {\n // E0.6 [9] (\uD83C\uDE32..\uD83C\uDE3A) Japanese \u201Cprohibited\u201D button..Japanese \u201Copen for business\u201D button\n if (0x1f232 <= code && code <= 0x1f23a) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.0 [4] (\uD83C\uDE3C..\uD83C\uDE3F) <reserved-1F23C>..<reserved-1F23F>\n if (0x1f23c <= code && code <= 0x1f23f) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1f546) {\n if (code < 0x1f400) {\n // E0.0 [7] (\uD83C\uDE49..\uD83C\uDE4F) <reserved-1F249>..<reserved-1F24F>\n // E0.6 [2] (\uD83C\uDE50..\uD83C\uDE51) Japanese \u201Cbargain\u201D button..Japanese \u201Cacceptable\u201D button\n // E0.0 [174] (\uD83C\uDE52..\uD83C\uDEFF) <reserved-1F252>..<reserved-1F2FF>\n // E0.6 [13] (\uD83C\uDF00..\uD83C\uDF0C) cyclone..milky way\n // E0.7 [2] (\uD83C\uDF0D..\uD83C\uDF0E) globe showing Europe-Africa..globe showing Americas\n // E0.6 [1] (\uD83C\uDF0F) globe showing Asia-Australia\n // E1.0 [1] (\uD83C\uDF10) globe with meridians\n // E0.6 [1] (\uD83C\uDF11) new moon\n // E1.0 [1] (\uD83C\uDF12) waxing crescent moon\n // E0.6 [3] (\uD83C\uDF13..\uD83C\uDF15) first quarter moon..full moon\n // E1.0 [3] (\uD83C\uDF16..\uD83C\uDF18) waning gibbous moon..waning crescent moon\n // E0.6 [1] (\uD83C\uDF19) crescent moon\n // E1.0 [1] (\uD83C\uDF1A) new moon face\n // E0.6 [1] (\uD83C\uDF1B) first quarter moon face\n // E0.7 [1] (\uD83C\uDF1C) last quarter moon face\n // E1.0 [2] (\uD83C\uDF1D..\uD83C\uDF1E) full moon face..sun with face\n // E0.6 [2] (\uD83C\uDF1F..\uD83C\uDF20) glowing star..shooting star\n // E0.7 [1] (\uD83C\uDF21\uFE0F) thermometer\n // E0.0 [2] (\uD83C\uDF22..\uD83C\uDF23) BLACK DROPLET..WHITE SUN\n // E0.7 [9] (\uD83C\uDF24\uFE0F..\uD83C\uDF2C\uFE0F) sun behind small cloud..wind face\n // E1.0 [3] (\uD83C\uDF2D..\uD83C\uDF2F) hot dog..burrito\n // E0.6 [2] (\uD83C\uDF30..\uD83C\uDF31) chestnut..seedling\n // E1.0 [2] (\uD83C\uDF32..\uD83C\uDF33) evergreen tree..deciduous tree\n // E0.6 [2] (\uD83C\uDF34..\uD83C\uDF35) palm tree..cactus\n // E0.7 [1] (\uD83C\uDF36\uFE0F) hot pepper\n // E0.6 [20] (\uD83C\uDF37..\uD83C\uDF4A) tulip..tangerine\n // E1.0 [1] (\uD83C\uDF4B) lemon\n // E0.6 [4] (\uD83C\uDF4C..\uD83C\uDF4F) banana..green apple\n // E1.0 [1] (\uD83C\uDF50) pear\n // E0.6 [43] (\uD83C\uDF51..\uD83C\uDF7B) peach..clinking beer mugs\n // E1.0 [1] (\uD83C\uDF7C) baby bottle\n // E0.7 [1] (\uD83C\uDF7D\uFE0F) fork and knife with plate\n // E1.0 [2] (\uD83C\uDF7E..\uD83C\uDF7F) bottle with popping cork..popcorn\n // E0.6 [20] (\uD83C\uDF80..\uD83C\uDF93) ribbon..graduation cap\n // E0.0 [2] (\uD83C\uDF94..\uD83C\uDF95) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS\n // E0.7 [2] (\uD83C\uDF96\uFE0F..\uD83C\uDF97\uFE0F) military medal..reminder ribbon\n // E0.0 [1] (\uD83C\uDF98) MUSICAL KEYBOARD WITH JACKS\n // E0.7 [3] (\uD83C\uDF99\uFE0F..\uD83C\uDF9B\uFE0F) studio microphone..control knobs\n // E0.0 [2] (\uD83C\uDF9C..\uD83C\uDF9D) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES\n // E0.7 [2] (\uD83C\uDF9E\uFE0F..\uD83C\uDF9F\uFE0F) film frames..admission tickets\n // E0.6 [37] (\uD83C\uDFA0..\uD83C\uDFC4) carousel horse..person surfing\n // E1.0 [1] (\uD83C\uDFC5) sports medal\n // E0.6 [1] (\uD83C\uDFC6) trophy\n // E1.0 [1] (\uD83C\uDFC7) horse racing\n // E0.6 [1] (\uD83C\uDFC8) american football\n // E1.0 [1] (\uD83C\uDFC9) rugby football\n // E0.6 [1] (\uD83C\uDFCA) person swimming\n // E0.7 [4] (\uD83C\uDFCB\uFE0F..\uD83C\uDFCE\uFE0F) person lifting weights..racing car\n // E1.0 [5] (\uD83C\uDFCF..\uD83C\uDFD3) cricket game..ping pong\n // E0.7 [12] (\uD83C\uDFD4\uFE0F..\uD83C\uDFDF\uFE0F) snow-capped mountain..stadium\n // E0.6 [4] (\uD83C\uDFE0..\uD83C\uDFE3) house..Japanese post office\n // E1.0 [1] (\uD83C\uDFE4) post office\n // E0.6 [12] (\uD83C\uDFE5..\uD83C\uDFF0) hospital..castle\n // E0.0 [2] (\uD83C\uDFF1..\uD83C\uDFF2) WHITE PENNANT..BLACK PENNANT\n // E0.7 [1] (\uD83C\uDFF3\uFE0F) white flag\n // E1.0 [1] (\uD83C\uDFF4) black flag\n // E0.7 [1] (\uD83C\uDFF5\uFE0F) rosette\n // E0.0 [1] (\uD83C\uDFF6) BLACK ROSETTE\n // E0.7 [1] (\uD83C\uDFF7\uFE0F) label\n // E1.0 [3] (\uD83C\uDFF8..\uD83C\uDFFA) badminton..amphora\n if (0x1f249 <= code && code <= 0x1f3fa) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E1.0 [8] (\uD83D\uDC00..\uD83D\uDC07) rat..rabbit\n // E0.7 [1] (\uD83D\uDC08) cat\n // E1.0 [3] (\uD83D\uDC09..\uD83D\uDC0B) dragon..whale\n // E0.6 [3] (\uD83D\uDC0C..\uD83D\uDC0E) snail..horse\n // E1.0 [2] (\uD83D\uDC0F..\uD83D\uDC10) ram..goat\n // E0.6 [2] (\uD83D\uDC11..\uD83D\uDC12) ewe..monkey\n // E1.0 [1] (\uD83D\uDC13) rooster\n // E0.6 [1] (\uD83D\uDC14) chicken\n // E0.7 [1] (\uD83D\uDC15) dog\n // E1.0 [1] (\uD83D\uDC16) pig\n // E0.6 [19] (\uD83D\uDC17..\uD83D\uDC29) boar..poodle\n // E1.0 [1] (\uD83D\uDC2A) camel\n // E0.6 [20] (\uD83D\uDC2B..\uD83D\uDC3E) two-hump camel..paw prints\n // E0.7 [1] (\uD83D\uDC3F\uFE0F) chipmunk\n // E0.6 [1] (\uD83D\uDC40) eyes\n // E0.7 [1] (\uD83D\uDC41\uFE0F) eye\n // E0.6 [35] (\uD83D\uDC42..\uD83D\uDC64) ear..bust in silhouette\n // E1.0 [1] (\uD83D\uDC65) busts in silhouette\n // E0.6 [6] (\uD83D\uDC66..\uD83D\uDC6B) boy..woman and man holding hands\n // E1.0 [2] (\uD83D\uDC6C..\uD83D\uDC6D) men holding hands..women holding hands\n // E0.6 [63] (\uD83D\uDC6E..\uD83D\uDCAC) police officer..speech balloon\n // E1.0 [1] (\uD83D\uDCAD) thought balloon\n // E0.6 [8] (\uD83D\uDCAE..\uD83D\uDCB5) white flower..dollar banknote\n // E1.0 [2] (\uD83D\uDCB6..\uD83D\uDCB7) euro banknote..pound banknote\n // E0.6 [52] (\uD83D\uDCB8..\uD83D\uDCEB) money with wings..closed mailbox with raised flag\n // E0.7 [2] (\uD83D\uDCEC..\uD83D\uDCED) open mailbox with raised flag..open mailbox with lowered flag\n // E0.6 [1] (\uD83D\uDCEE) postbox\n // E1.0 [1] (\uD83D\uDCEF) postal horn\n // E0.6 [5] (\uD83D\uDCF0..\uD83D\uDCF4) newspaper..mobile phone off\n // E1.0 [1] (\uD83D\uDCF5) no mobile phones\n // E0.6 [2] (\uD83D\uDCF6..\uD83D\uDCF7) antenna bars..camera\n // E1.0 [1] (\uD83D\uDCF8) camera with flash\n // E0.6 [4] (\uD83D\uDCF9..\uD83D\uDCFC) video camera..videocassette\n // E0.7 [1] (\uD83D\uDCFD\uFE0F) film projector\n // E0.0 [1] (\uD83D\uDCFE) PORTABLE STEREO\n // E1.0 [4] (\uD83D\uDCFF..\uD83D\uDD02) prayer beads..repeat single button\n // E0.6 [1] (\uD83D\uDD03) clockwise vertical arrows\n // E1.0 [4] (\uD83D\uDD04..\uD83D\uDD07) counterclockwise arrows button..muted speaker\n // E0.7 [1] (\uD83D\uDD08) speaker low volume\n // E1.0 [1] (\uD83D\uDD09) speaker medium volume\n // E0.6 [11] (\uD83D\uDD0A..\uD83D\uDD14) speaker high volume..bell\n // E1.0 [1] (\uD83D\uDD15) bell with slash\n // E0.6 [22] (\uD83D\uDD16..\uD83D\uDD2B) bookmark..water pistol\n // E1.0 [2] (\uD83D\uDD2C..\uD83D\uDD2D) microscope..telescope\n // E0.6 [16] (\uD83D\uDD2E..\uD83D\uDD3D) crystal ball..downwards button\n if (0x1f400 <= code && code <= 0x1f53d) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n else {\n if (code < 0x1f680) {\n // E0.0 [3] (\uD83D\uDD46..\uD83D\uDD48) WHITE LATIN CROSS..CELTIC CROSS\n // E0.7 [2] (\uD83D\uDD49\uFE0F..\uD83D\uDD4A\uFE0F) om..dove\n // E1.0 [4] (\uD83D\uDD4B..\uD83D\uDD4E) kaaba..menorah\n // E0.0 [1] (\uD83D\uDD4F) BOWL OF HYGIEIA\n // E0.6 [12] (\uD83D\uDD50..\uD83D\uDD5B) one o\u2019clock..twelve o\u2019clock\n // E0.7 [12] (\uD83D\uDD5C..\uD83D\uDD67) one-thirty..twelve-thirty\n // E0.0 [7] (\uD83D\uDD68..\uD83D\uDD6E) RIGHT SPEAKER..BOOK\n // E0.7 [2] (\uD83D\uDD6F\uFE0F..\uD83D\uDD70\uFE0F) candle..mantelpiece clock\n // E0.0 [2] (\uD83D\uDD71..\uD83D\uDD72) BLACK SKULL AND CROSSBONES..NO PIRACY\n // E0.7 [7] (\uD83D\uDD73\uFE0F..\uD83D\uDD79\uFE0F) hole..joystick\n // E3.0 [1] (\uD83D\uDD7A) man dancing\n // E0.0 [12] (\uD83D\uDD7B..\uD83D\uDD86) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE\n // E0.7 [1] (\uD83D\uDD87\uFE0F) linked paperclips\n // E0.0 [2] (\uD83D\uDD88..\uD83D\uDD89) BLACK PUSHPIN..LOWER LEFT PENCIL\n // E0.7 [4] (\uD83D\uDD8A\uFE0F..\uD83D\uDD8D\uFE0F) pen..crayon\n // E0.0 [2] (\uD83D\uDD8E..\uD83D\uDD8F) LEFT WRITING HAND..TURNED OK HAND SIGN\n // E0.7 [1] (\uD83D\uDD90\uFE0F) hand with fingers splayed\n // E0.0 [4] (\uD83D\uDD91..\uD83D\uDD94) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND\n // E1.0 [2] (\uD83D\uDD95..\uD83D\uDD96) middle finger..vulcan salute\n // E0.0 [13] (\uD83D\uDD97..\uD83D\uDDA3) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX\n // E3.0 [1] (\uD83D\uDDA4) black heart\n // E0.7 [1] (\uD83D\uDDA5\uFE0F) desktop computer\n // E0.0 [2] (\uD83D\uDDA6..\uD83D\uDDA7) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS\n // E0.7 [1] (\uD83D\uDDA8\uFE0F) printer\n // E0.0 [8] (\uD83D\uDDA9..\uD83D\uDDB0) POCKET CALCULATOR..TWO BUTTON MOUSE\n // E0.7 [2] (\uD83D\uDDB1\uFE0F..\uD83D\uDDB2\uFE0F) computer mouse..trackball\n // E0.0 [9] (\uD83D\uDDB3..\uD83D\uDDBB) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE\n // E0.7 [1] (\uD83D\uDDBC\uFE0F) framed picture\n // E0.0 [5] (\uD83D\uDDBD..\uD83D\uDDC1) FRAME WITH TILES..OPEN FOLDER\n // E0.7 [3] (\uD83D\uDDC2\uFE0F..\uD83D\uDDC4\uFE0F) card index dividers..file cabinet\n // E0.0 [12] (\uD83D\uDDC5..\uD83D\uDDD0) EMPTY NOTE..PAGES\n // E0.7 [3] (\uD83D\uDDD1\uFE0F..\uD83D\uDDD3\uFE0F) wastebasket..spiral calendar\n // E0.0 [8] (\uD83D\uDDD4..\uD83D\uDDDB) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL\n // E0.7 [3] (\uD83D\uDDDC\uFE0F..\uD83D\uDDDE\uFE0F) clamp..rolled-up newspaper\n // E0.0 [2] (\uD83D\uDDDF..\uD83D\uDDE0) PAGE WITH CIRCLED TEXT..STOCK CHART\n // E0.7 [1] (\uD83D\uDDE1\uFE0F) dagger\n // E0.0 [1] (\uD83D\uDDE2) LIPS\n // E0.7 [1] (\uD83D\uDDE3\uFE0F) speaking head\n // E0.0 [4] (\uD83D\uDDE4..\uD83D\uDDE7) THREE RAYS ABOVE..THREE RAYS RIGHT\n // E2.0 [1] (\uD83D\uDDE8\uFE0F) left speech bubble\n // E0.0 [6] (\uD83D\uDDE9..\uD83D\uDDEE) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE\n // E0.7 [1] (\uD83D\uDDEF\uFE0F) right anger bubble\n // E0.0 [3] (\uD83D\uDDF0..\uD83D\uDDF2) MOOD BUBBLE..LIGHTNING MOOD\n // E0.7 [1] (\uD83D\uDDF3\uFE0F) ballot box with ballot\n // E0.0 [6] (\uD83D\uDDF4..\uD83D\uDDF9) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK\n // E0.7 [1] (\uD83D\uDDFA\uFE0F) world map\n // E0.6 [5] (\uD83D\uDDFB..\uD83D\uDDFF) mount fuji..moai\n // E1.0 [1] (\uD83D\uDE00) grinning face\n // E0.6 [6] (\uD83D\uDE01..\uD83D\uDE06) beaming face with smiling eyes..grinning squinting face\n // E1.0 [2] (\uD83D\uDE07..\uD83D\uDE08) smiling face with halo..smiling face with horns\n // E0.6 [5] (\uD83D\uDE09..\uD83D\uDE0D) winking face..smiling face with heart-eyes\n // E1.0 [1] (\uD83D\uDE0E) smiling face with sunglasses\n // E0.6 [1] (\uD83D\uDE0F) smirking face\n // E0.7 [1] (\uD83D\uDE10) neutral face\n // E1.0 [1] (\uD83D\uDE11) expressionless face\n // E0.6 [3] (\uD83D\uDE12..\uD83D\uDE14) unamused face..pensive face\n // E1.0 [1] (\uD83D\uDE15) confused face\n // E0.6 [1] (\uD83D\uDE16) confounded face\n // E1.0 [1] (\uD83D\uDE17) kissing face\n // E0.6 [1] (\uD83D\uDE18) face blowing a kiss\n // E1.0 [1] (\uD83D\uDE19) kissing face with smiling eyes\n // E0.6 [1] (\uD83D\uDE1A) kissing face with closed eyes\n // E1.0 [1] (\uD83D\uDE1B) face with tongue\n // E0.6 [3] (\uD83D\uDE1C..\uD83D\uDE1E) winking face with tongue..disappointed face\n // E1.0 [1] (\uD83D\uDE1F) worried face\n // E0.6 [6] (\uD83D\uDE20..\uD83D\uDE25) angry face..sad but relieved face\n // E1.0 [2] (\uD83D\uDE26..\uD83D\uDE27) frowning face with open mouth..anguished face\n // E0.6 [4] (\uD83D\uDE28..\uD83D\uDE2B) fearful face..tired face\n // E1.0 [1] (\uD83D\uDE2C) grimacing face\n // E0.6 [1] (\uD83D\uDE2D) loudly crying face\n // E1.0 [2] (\uD83D\uDE2E..\uD83D\uDE2F) face with open mouth..hushed face\n // E0.6 [4] (\uD83D\uDE30..\uD83D\uDE33) anxious face with sweat..flushed face\n // E1.0 [1] (\uD83D\uDE34) sleeping face\n // E0.6 [1] (\uD83D\uDE35) face with crossed-out eyes\n // E1.0 [1] (\uD83D\uDE36) face without mouth\n // E0.6 [10] (\uD83D\uDE37..\uD83D\uDE40) face with medical mask..weary cat\n // E1.0 [4] (\uD83D\uDE41..\uD83D\uDE44) slightly frowning face..face with rolling eyes\n // E0.6 [11] (\uD83D\uDE45..\uD83D\uDE4F) person gesturing NO..folded hands\n if (0x1f546 <= code && code <= 0x1f64f) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x1f774) {\n // E0.6 [1] (\uD83D\uDE80) rocket\n // E1.0 [2] (\uD83D\uDE81..\uD83D\uDE82) helicopter..locomotive\n // E0.6 [3] (\uD83D\uDE83..\uD83D\uDE85) railway car..bullet train\n // E1.0 [1] (\uD83D\uDE86) train\n // E0.6 [1] (\uD83D\uDE87) metro\n // E1.0 [1] (\uD83D\uDE88) light rail\n // E0.6 [1] (\uD83D\uDE89) station\n // E1.0 [2] (\uD83D\uDE8A..\uD83D\uDE8B) tram..tram car\n // E0.6 [1] (\uD83D\uDE8C) bus\n // E0.7 [1] (\uD83D\uDE8D) oncoming bus\n // E1.0 [1] (\uD83D\uDE8E) trolleybus\n // E0.6 [1] (\uD83D\uDE8F) bus stop\n // E1.0 [1] (\uD83D\uDE90) minibus\n // E0.6 [3] (\uD83D\uDE91..\uD83D\uDE93) ambulance..police car\n // E0.7 [1] (\uD83D\uDE94) oncoming police car\n // E0.6 [1] (\uD83D\uDE95) taxi\n // E1.0 [1] (\uD83D\uDE96) oncoming taxi\n // E0.6 [1] (\uD83D\uDE97) automobile\n // E0.7 [1] (\uD83D\uDE98) oncoming automobile\n // E0.6 [2] (\uD83D\uDE99..\uD83D\uDE9A) sport utility vehicle..delivery truck\n // E1.0 [7] (\uD83D\uDE9B..\uD83D\uDEA1) articulated lorry..aerial tramway\n // E0.6 [1] (\uD83D\uDEA2) ship\n // E1.0 [1] (\uD83D\uDEA3) person rowing boat\n // E0.6 [2] (\uD83D\uDEA4..\uD83D\uDEA5) speedboat..horizontal traffic light\n // E1.0 [1] (\uD83D\uDEA6) vertical traffic light\n // E0.6 [7] (\uD83D\uDEA7..\uD83D\uDEAD) construction..no smoking\n // E1.0 [4] (\uD83D\uDEAE..\uD83D\uDEB1) litter in bin sign..non-potable water\n // E0.6 [1] (\uD83D\uDEB2) bicycle\n // E1.0 [3] (\uD83D\uDEB3..\uD83D\uDEB5) no bicycles..person mountain biking\n // E0.6 [1] (\uD83D\uDEB6) person walking\n // E1.0 [2] (\uD83D\uDEB7..\uD83D\uDEB8) no pedestrians..children crossing\n // E0.6 [6] (\uD83D\uDEB9..\uD83D\uDEBE) men\u2019s room..water closet\n // E1.0 [1] (\uD83D\uDEBF) shower\n // E0.6 [1] (\uD83D\uDEC0) person taking bath\n // E1.0 [5] (\uD83D\uDEC1..\uD83D\uDEC5) bathtub..left luggage\n // E0.0 [5] (\uD83D\uDEC6..\uD83D\uDECA) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL\n // E0.7 [1] (\uD83D\uDECB\uFE0F) couch and lamp\n // E1.0 [1] (\uD83D\uDECC) person in bed\n // E0.7 [3] (\uD83D\uDECD\uFE0F..\uD83D\uDECF\uFE0F) shopping bags..bed\n // E1.0 [1] (\uD83D\uDED0) place of worship\n // E3.0 [2] (\uD83D\uDED1..\uD83D\uDED2) stop sign..shopping cart\n // E0.0 [2] (\uD83D\uDED3..\uD83D\uDED4) STUPA..PAGODA\n // E12.0 [1] (\uD83D\uDED5) hindu temple\n // E13.0 [2] (\uD83D\uDED6..\uD83D\uDED7) hut..elevator\n // E0.0 [4] (\uD83D\uDED8..\uD83D\uDEDB) <reserved-1F6D8>..<reserved-1F6DB>\n // E15.0 [1] (\uD83D\uDEDC) wireless\n // E14.0 [3] (\uD83D\uDEDD..\uD83D\uDEDF) playground slide..ring buoy\n // E0.7 [6] (\uD83D\uDEE0\uFE0F..\uD83D\uDEE5\uFE0F) hammer and wrench..motor boat\n // E0.0 [3] (\uD83D\uDEE6..\uD83D\uDEE8) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE\n // E0.7 [1] (\uD83D\uDEE9\uFE0F) small airplane\n // E0.0 [1] (\uD83D\uDEEA) NORTHEAST-POINTING AIRPLANE\n // E1.0 [2] (\uD83D\uDEEB..\uD83D\uDEEC) airplane departure..airplane arrival\n // E0.0 [3] (\uD83D\uDEED..\uD83D\uDEEF) <reserved-1F6ED>..<reserved-1F6EF>\n // E0.7 [1] (\uD83D\uDEF0\uFE0F) satellite\n // E0.0 [2] (\uD83D\uDEF1..\uD83D\uDEF2) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE\n // E0.7 [1] (\uD83D\uDEF3\uFE0F) passenger ship\n // E3.0 [3] (\uD83D\uDEF4..\uD83D\uDEF6) kick scooter..canoe\n // E5.0 [2] (\uD83D\uDEF7..\uD83D\uDEF8) sled..flying saucer\n // E11.0 [1] (\uD83D\uDEF9) skateboard\n // E12.0 [1] (\uD83D\uDEFA) auto rickshaw\n // E13.0 [2] (\uD83D\uDEFB..\uD83D\uDEFC) pickup truck..roller skate\n // E0.0 [3] (\uD83D\uDEFD..\uD83D\uDEFF) <reserved-1F6FD>..<reserved-1F6FF>\n if (0x1f680 <= code && code <= 0x1f6ff) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.0 [12] (\uD83D\uDF74..\uD83D\uDF7F) LOT OF FORTUNE..ORCUS\n if (0x1f774 <= code && code <= 0x1f77f) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n }\n else {\n if (code < 0x1f8ae) {\n if (code < 0x1f848) {\n if (code < 0x1f80c) {\n // E0.0 [11] (\uD83D\uDFD5..\uD83D\uDFDF) CIRCLED TRIANGLE..<reserved-1F7DF>\n // E12.0 [12] (\uD83D\uDFE0..\uD83D\uDFEB) orange circle..brown square\n // E0.0 [4] (\uD83D\uDFEC..\uD83D\uDFEF) <reserved-1F7EC>..<reserved-1F7EF>\n // E14.0 [1] (\uD83D\uDFF0) heavy equals sign\n // E0.0 [15] (\uD83D\uDFF1..\uD83D\uDFFF) <reserved-1F7F1>..<reserved-1F7FF>\n if (0x1f7d5 <= code && code <= 0x1f7ff) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.0 [4] (\uD83E\uDC0C..\uD83E\uDC0F) <reserved-1F80C>..<reserved-1F80F>\n if (0x1f80c <= code && code <= 0x1f80f) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n else {\n if (code < 0x1f85a) {\n // E0.0 [8] (\uD83E\uDC48..\uD83E\uDC4F) <reserved-1F848>..<reserved-1F84F>\n if (0x1f848 <= code && code <= 0x1f84f) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x1f888) {\n // E0.0 [6] (\uD83E\uDC5A..\uD83E\uDC5F) <reserved-1F85A>..<reserved-1F85F>\n if (0x1f85a <= code && code <= 0x1f85f) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.0 [8] (\uD83E\uDC88..\uD83E\uDC8F) <reserved-1F888>..<reserved-1F88F>\n if (0x1f888 <= code && code <= 0x1f88f) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n else {\n if (code < 0x1f93c) {\n if (code < 0x1f90c) {\n // E0.0 [82] (\uD83E\uDCAE..\uD83E\uDCFF) <reserved-1F8AE>..<reserved-1F8FF>\n if (0x1f8ae <= code && code <= 0x1f8ff) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E13.0 [1] (\uD83E\uDD0C) pinched fingers\n // E12.0 [3] (\uD83E\uDD0D..\uD83E\uDD0F) white heart..pinching hand\n // E1.0 [9] (\uD83E\uDD10..\uD83E\uDD18) zipper-mouth face..sign of the horns\n // E3.0 [6] (\uD83E\uDD19..\uD83E\uDD1E) call me hand..crossed fingers\n // E5.0 [1] (\uD83E\uDD1F) love-you gesture\n // E3.0 [8] (\uD83E\uDD20..\uD83E\uDD27) cowboy hat face..sneezing face\n // E5.0 [8] (\uD83E\uDD28..\uD83E\uDD2F) face with raised eyebrow..exploding head\n // E3.0 [1] (\uD83E\uDD30) pregnant woman\n // E5.0 [2] (\uD83E\uDD31..\uD83E\uDD32) breast-feeding..palms up together\n // E3.0 [8] (\uD83E\uDD33..\uD83E\uDD3A) selfie..person fencing\n if (0x1f90c <= code && code <= 0x1f93a) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n else {\n if (code < 0x1f947) {\n // E3.0 [3] (\uD83E\uDD3C..\uD83E\uDD3E) people wrestling..person playing handball\n // E12.0 [1] (\uD83E\uDD3F) diving mask\n // E3.0 [6] (\uD83E\uDD40..\uD83E\uDD45) wilted flower..goal net\n if (0x1f93c <= code && code <= 0x1f945) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n if (code < 0x1fc00) {\n // E3.0 [5] (\uD83E\uDD47..\uD83E\uDD4B) 1st place medal..martial arts uniform\n // E5.0 [1] (\uD83E\uDD4C) curling stone\n // E11.0 [3] (\uD83E\uDD4D..\uD83E\uDD4F) lacrosse..flying disc\n // E3.0 [15] (\uD83E\uDD50..\uD83E\uDD5E) croissant..pancakes\n // E5.0 [13] (\uD83E\uDD5F..\uD83E\uDD6B) dumpling..canned food\n // E11.0 [5] (\uD83E\uDD6C..\uD83E\uDD70) leafy green..smiling face with hearts\n // E12.0 [1] (\uD83E\uDD71) yawning face\n // E13.0 [1] (\uD83E\uDD72) smiling face with tear\n // E11.0 [4] (\uD83E\uDD73..\uD83E\uDD76) partying face..cold face\n // E13.0 [2] (\uD83E\uDD77..\uD83E\uDD78) ninja..disguised face\n // E14.0 [1] (\uD83E\uDD79) face holding back tears\n // E11.0 [1] (\uD83E\uDD7A) pleading face\n // E12.0 [1] (\uD83E\uDD7B) sari\n // E11.0 [4] (\uD83E\uDD7C..\uD83E\uDD7F) lab coat..flat shoe\n // E1.0 [5] (\uD83E\uDD80..\uD83E\uDD84) crab..unicorn\n // E3.0 [13] (\uD83E\uDD85..\uD83E\uDD91) eagle..squid\n // E5.0 [6] (\uD83E\uDD92..\uD83E\uDD97) giraffe..cricket\n // E11.0 [11] (\uD83E\uDD98..\uD83E\uDDA2) kangaroo..swan\n // E13.0 [2] (\uD83E\uDDA3..\uD83E\uDDA4) mammoth..dodo\n // E12.0 [6] (\uD83E\uDDA5..\uD83E\uDDAA) sloth..oyster\n // E13.0 [3] (\uD83E\uDDAB..\uD83E\uDDAD) beaver..seal\n // E12.0 [2] (\uD83E\uDDAE..\uD83E\uDDAF) guide dog..white cane\n // E11.0 [10] (\uD83E\uDDB0..\uD83E\uDDB9) red hair..supervillain\n // E12.0 [6] (\uD83E\uDDBA..\uD83E\uDDBF) safety vest..mechanical leg\n // E1.0 [1] (\uD83E\uDDC0) cheese wedge\n // E11.0 [2] (\uD83E\uDDC1..\uD83E\uDDC2) cupcake..salt\n // E12.0 [8] (\uD83E\uDDC3..\uD83E\uDDCA) beverage box..ice\n // E13.0 [1] (\uD83E\uDDCB) bubble tea\n // E14.0 [1] (\uD83E\uDDCC) troll\n // E12.0 [3] (\uD83E\uDDCD..\uD83E\uDDCF) person standing..deaf person\n // E5.0 [23] (\uD83E\uDDD0..\uD83E\uDDE6) face with monocle..socks\n // E11.0 [25] (\uD83E\uDDE7..\uD83E\uDDFF) red envelope..nazar amulet\n // E0.0 [112] (\uD83E\uDE00..\uD83E\uDE6F) NEUTRAL CHESS KING..<reserved-1FA6F>\n // E12.0 [4] (\uD83E\uDE70..\uD83E\uDE73) ballet shoes..shorts\n // E13.0 [1] (\uD83E\uDE74) thong sandal\n // E15.0 [3] (\uD83E\uDE75..\uD83E\uDE77) light blue heart..pink heart\n // E12.0 [3] (\uD83E\uDE78..\uD83E\uDE7A) drop of blood..stethoscope\n // E14.0 [2] (\uD83E\uDE7B..\uD83E\uDE7C) x-ray..crutch\n // E0.0 [3] (\uD83E\uDE7D..\uD83E\uDE7F) <reserved-1FA7D>..<reserved-1FA7F>\n // E12.0 [3] (\uD83E\uDE80..\uD83E\uDE82) yo-yo..parachute\n // E13.0 [4] (\uD83E\uDE83..\uD83E\uDE86) boomerang..nesting dolls\n // E15.0 [2] (\uD83E\uDE87..\uD83E\uDE88) maracas..flute\n // E0.0 [7] (\uD83E\uDE89..\uD83E\uDE8F) <reserved-1FA89>..<reserved-1FA8F>\n // E12.0 [6] (\uD83E\uDE90..\uD83E\uDE95) ringed planet..banjo\n // E13.0 [19] (\uD83E\uDE96..\uD83E\uDEA8) military helmet..rock\n // E14.0 [4] (\uD83E\uDEA9..\uD83E\uDEAC) mirror ball..hamsa\n // E15.0 [3] (\uD83E\uDEAD..\uD83E\uDEAF) folding hand fan..khanda\n // E13.0 [7] (\uD83E\uDEB0..\uD83E\uDEB6) fly..feather\n // E14.0 [4] (\uD83E\uDEB7..\uD83E\uDEBA) lotus..nest with eggs\n // E15.0 [3] (\uD83E\uDEBB..\uD83E\uDEBD) hyacinth..wing\n // E0.0 [1] (\uD83E\uDEBE) <reserved-1FABE>\n // E15.0 [1] (\uD83E\uDEBF) goose\n // E13.0 [3] (\uD83E\uDEC0..\uD83E\uDEC2) anatomical heart..people hugging\n // E14.0 [3] (\uD83E\uDEC3..\uD83E\uDEC5) pregnant man..person with crown\n // E0.0 [8] (\uD83E\uDEC6..\uD83E\uDECD) <reserved-1FAC6>..<reserved-1FACD>\n // E15.0 [2] (\uD83E\uDECE..\uD83E\uDECF) moose..donkey\n // E13.0 [7] (\uD83E\uDED0..\uD83E\uDED6) blueberries..teapot\n // E14.0 [3] (\uD83E\uDED7..\uD83E\uDED9) pouring liquid..jar\n // E15.0 [2] (\uD83E\uDEDA..\uD83E\uDEDB) ginger root..pea pod\n // E0.0 [4] (\uD83E\uDEDC..\uD83E\uDEDF) <reserved-1FADC>..<reserved-1FADF>\n // E14.0 [8] (\uD83E\uDEE0..\uD83E\uDEE7) melting face..bubbles\n // E15.0 [1] (\uD83E\uDEE8) shaking face\n // E0.0 [7] (\uD83E\uDEE9..\uD83E\uDEEF) <reserved-1FAE9>..<reserved-1FAEF>\n // E14.0 [7] (\uD83E\uDEF0..\uD83E\uDEF6) hand with index finger and thumb crossed..heart hands\n // E15.0 [2] (\uD83E\uDEF7..\uD83E\uDEF8) leftwards pushing hand..rightwards pushing hand\n // E0.0 [7] (\uD83E\uDEF9..\uD83E\uDEFF) <reserved-1FAF9>..<reserved-1FAFF>\n if (0x1f947 <= code && code <= 0x1faff) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n else {\n // E0.0[1022] (\uD83F\uDC00..\uD83F\uDFFD) <reserved-1FC00>..<reserved-1FFFD>\n if (0x1fc00 <= code && code <= 0x1fffd) {\n return boundaries_1.EXTENDED_PICTOGRAPHIC;\n }\n }\n }\n }\n }\n }\n }\n }\n // unlisted code points are treated as a break property of \"Other\"\n return boundaries_1.CLUSTER_BREAK.OTHER;\n }\n}\nexports.default = Graphemer;\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Graphemer_1 = __importDefault(require(\"./Graphemer\"));\nexports.default = Graphemer_1.default;\n", "(()=>{\"use strict\";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})}},t={};function r(e,t){return void 0===t&&(t=\"-\"),new RegExp(\"^(?!0{4}\"+t+\"0{2}\"+t+\"0{2})((?=[0-9]{4}\"+t+\"(((0[^2])|1[0-2])|02(?=\"+t+\"(([0-1][0-9])|2[0-8])))\"+t+\"[0-9]{2})|(?=((([13579][26])|([2468][048])|(0[48]))0{2})|([0-9]{2}((((0|[2468])[48])|[2468][048])|([13579][26])))\"+t+\"02\"+t+\"29))([0-9]{4})\"+t+\"(?!((0[469])|11)\"+t+\"31)((0[1,3-9]|1[0-2])|(02(?!\"+t+\"3)))\"+t+\"(0[1-9]|[1-2][0-9]|3[0-1])$\").test(e)}function n(e){var t=/\\D/.exec(e);return t?t[0]:\"\"}function i(e,t,r){void 0===t&&(t=\":\"),void 0===r&&(r=!1);var i=new RegExp(\"^([0-1]|2(?=([0-3])|4\"+t+\"00))[0-9]\"+t+\"[0-5][0-9](\"+t+\"([0-5]|6(?=0))[0-9])?(.[0-9]{1,9})?$\");if(!r||!/[Z+\\-]/.test(e))return i.test(e);if(/Z$/.test(e))return i.test(e.replace(\"Z\",\"\"));var o=e.includes(\"+\"),a=e.split(/[+-]/),u=a[0],d=a[1];return i.test(u)&&function(e,t,r){return void 0===r&&(r=\":\"),new RegExp(t?\"^(0(?!(2\"+r+\"4)|0\"+r+\"3)|1(?=([0-1]|2(?=\"+r+\"[04])|[34](?=\"+r+\"0))))([03469](?=\"+r+\"[03])|[17](?=\"+r+\"0)|2(?=\"+r+\"[04])|5(?=\"+r+\"[034])|8(?=\"+r+\"[04]))\"+r+\"([03](?=0)|4(?=5))[05]$\":\"^(0(?=[^0])|1(?=[0-2]))([39](?=\"+r+\"[03])|[0-24-8](?=\"+r+\"00))\"+r+\"[03]0$\").test(e)}(d,o,n(d))}function o(e){var t=e.split(\"T\"),o=t[0],a=t[1],u=r(o,n(o));if(!a)return!1;var d,s=(d=a.match(/([^Z+\\-\\d])(?=\\d+\\1)/),Array.isArray(d)?d[0]:\"\");return u&&i(a,s,!0)}function a(e,t){return void 0===t&&(t=\"-\"),new RegExp(\"^[0-9]{4}\"+t+\"(0(?=[^0])|1(?=[0-2]))[0-9]$\").test(e)}e.r(t),e.d(t,{isValidDate:()=>r,isValidISODateString:()=>o,isValidTime:()=>i,isValidYearMonth:()=>a});var u=exports;for(var d in t)u[d]=t[d];t.__esModule&&Object.defineProperty(u,\"__esModule\",{value:!0})})();", "// Copyright 2017 Lovell Fuller and others.\n// SPDX-License-Identifier: Apache-2.0\n\n'use strict';\n\nconst isLinux = () => process.platform === 'linux';\n\nlet report = null;\nconst getReport = () => {\n if (!report) {\n /* istanbul ignore next */\n report = isLinux() && process.report\n ? process.report.getReport()\n : {};\n }\n return report;\n};\n\nmodule.exports = { isLinux, getReport };\n", "// Copyright 2017 Lovell Fuller and others.\n// SPDX-License-Identifier: Apache-2.0\n\n'use strict';\n\nconst fs = require('fs');\n\n/**\n * The path where we can find the ldd\n */\nconst LDD_PATH = '/usr/bin/ldd';\n\n/**\n * Read the content of a file synchronous\n *\n * @param {string} path\n * @returns {string}\n */\nconst readFileSync = (path) => fs.readFileSync(path, 'utf-8');\n\n/**\n * Read the content of a file\n *\n * @param {string} path\n * @returns {Promise<string>}\n */\nconst readFile = (path) => new Promise((resolve, reject) => {\n fs.readFile(path, 'utf-8', (err, data) => {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n });\n});\n\nmodule.exports = {\n LDD_PATH,\n readFileSync,\n readFile\n};\n", "// Copyright 2017 Lovell Fuller and others.\n// SPDX-License-Identifier: Apache-2.0\n\n'use strict';\n\nconst childProcess = require('child_process');\nconst { isLinux, getReport } = require('./process');\nconst { LDD_PATH, readFile, readFileSync } = require('./filesystem');\n\nlet cachedFamilyFilesystem;\nlet cachedVersionFilesystem;\n\nconst command = 'getconf GNU_LIBC_VERSION 2>&1 || true; ldd --version 2>&1 || true';\nlet commandOut = '';\n\nconst safeCommand = () => {\n if (!commandOut) {\n return new Promise((resolve) => {\n childProcess.exec(command, (err, out) => {\n commandOut = err ? ' ' : out;\n resolve(commandOut);\n });\n });\n }\n return commandOut;\n};\n\nconst safeCommandSync = () => {\n if (!commandOut) {\n try {\n commandOut = childProcess.execSync(command, { encoding: 'utf8' });\n } catch (_err) {\n commandOut = ' ';\n }\n }\n return commandOut;\n};\n\n/**\n * A String constant containing the value `glibc`.\n * @type {string}\n * @public\n */\nconst GLIBC = 'glibc';\n\n/**\n * A Regexp constant to get the GLIBC Version.\n * @type {string}\n */\nconst RE_GLIBC_VERSION = /GLIBC\\s(\\d+\\.\\d+)/;\n\n/**\n * A String constant containing the value `musl`.\n * @type {string}\n * @public\n */\nconst MUSL = 'musl';\n\n/**\n * This string is used to find if the {@link LDD_PATH} is GLIBC\n * @type {string}\n */\nconst GLIBC_ON_LDD = GLIBC.toUpperCase();\n\n/**\n * This string is used to find if the {@link LDD_PATH} is musl\n * @type {string}\n */\nconst MUSL_ON_LDD = MUSL.toLowerCase();\n\nconst isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-');\n\nconst familyFromReport = () => {\n const report = getReport();\n if (report.header && report.header.glibcVersionRuntime) {\n return GLIBC;\n }\n if (Array.isArray(report.sharedObjects)) {\n if (report.sharedObjects.some(isFileMusl)) {\n return MUSL;\n }\n }\n return null;\n};\n\nconst familyFromCommand = (out) => {\n const [getconf, ldd1] = out.split(/[\\r\\n]+/);\n if (getconf && getconf.includes(GLIBC)) {\n return GLIBC;\n }\n if (ldd1 && ldd1.includes(MUSL)) {\n return MUSL;\n }\n return null;\n};\n\nconst getFamilyFromLddContent = (content) => {\n if (content.includes(MUSL_ON_LDD)) {\n return MUSL;\n }\n if (content.includes(GLIBC_ON_LDD)) {\n return GLIBC;\n }\n return null;\n};\n\nconst familyFromFilesystem = async () => {\n if (cachedFamilyFilesystem !== undefined) {\n return cachedFamilyFilesystem;\n }\n cachedFamilyFilesystem = null;\n try {\n const lddContent = await readFile(LDD_PATH);\n cachedFamilyFilesystem = getFamilyFromLddContent(lddContent);\n } catch (e) {}\n return cachedFamilyFilesystem;\n};\n\nconst familyFromFilesystemSync = () => {\n if (cachedFamilyFilesystem !== undefined) {\n return cachedFamilyFilesystem;\n }\n cachedFamilyFilesystem = null;\n try {\n const lddContent = readFileSync(LDD_PATH);\n cachedFamilyFilesystem = getFamilyFromLddContent(lddContent);\n } catch (e) {}\n return cachedFamilyFilesystem;\n};\n\n/**\n * Resolves with the libc family when it can be determined, `null` otherwise.\n * @returns {Promise<?string>}\n */\nconst family = async () => {\n let family = null;\n if (isLinux()) {\n family = await familyFromFilesystem();\n if (!family) {\n family = familyFromReport();\n }\n if (!family) {\n const out = await safeCommand();\n family = familyFromCommand(out);\n }\n }\n return family;\n};\n\n/**\n * Returns the libc family when it can be determined, `null` otherwise.\n * @returns {?string}\n */\nconst familySync = () => {\n let family = null;\n if (isLinux()) {\n family = familyFromFilesystemSync();\n if (!family) {\n family = familyFromReport();\n }\n if (!family) {\n const out = safeCommandSync();\n family = familyFromCommand(out);\n }\n }\n return family;\n};\n\n/**\n * Resolves `true` only when the platform is Linux and the libc family is not `glibc`.\n * @returns {Promise<boolean>}\n */\nconst isNonGlibcLinux = async () => isLinux() && await family() !== GLIBC;\n\n/**\n * Returns `true` only when the platform is Linux and the libc family is not `glibc`.\n * @returns {boolean}\n */\nconst isNonGlibcLinuxSync = () => isLinux() && familySync() !== GLIBC;\n\nconst versionFromFilesystem = async () => {\n if (cachedVersionFilesystem !== undefined) {\n return cachedVersionFilesystem;\n }\n cachedVersionFilesystem = null;\n try {\n const lddContent = await readFile(LDD_PATH);\n const versionMatch = lddContent.match(RE_GLIBC_VERSION);\n if (versionMatch) {\n cachedVersionFilesystem = versionMatch[1];\n }\n } catch (e) {}\n return cachedVersionFilesystem;\n};\n\nconst versionFromFilesystemSync = () => {\n if (cachedVersionFilesystem !== undefined) {\n return cachedVersionFilesystem;\n }\n cachedVersionFilesystem = null;\n try {\n const lddContent = readFileSync(LDD_PATH);\n const versionMatch = lddContent.match(RE_GLIBC_VERSION);\n if (versionMatch) {\n cachedVersionFilesystem = versionMatch[1];\n }\n } catch (e) {}\n return cachedVersionFilesystem;\n};\n\nconst versionFromReport = () => {\n const report = getReport();\n if (report.header && report.header.glibcVersionRuntime) {\n return report.header.glibcVersionRuntime;\n }\n return null;\n};\n\nconst versionSuffix = (s) => s.trim().split(/\\s+/)[1];\n\nconst versionFromCommand = (out) => {\n const [getconf, ldd1, ldd2] = out.split(/[\\r\\n]+/);\n if (getconf && getconf.includes(GLIBC)) {\n return versionSuffix(getconf);\n }\n if (ldd1 && ldd2 && ldd1.includes(MUSL)) {\n return versionSuffix(ldd2);\n }\n return null;\n};\n\n/**\n * Resolves with the libc version when it can be determined, `null` otherwise.\n * @returns {Promise<?string>}\n */\nconst version = async () => {\n let version = null;\n if (isLinux()) {\n version = await versionFromFilesystem();\n if (!version) {\n version = versionFromReport();\n }\n if (!version) {\n const out = await safeCommand();\n version = versionFromCommand(out);\n }\n }\n return version;\n};\n\n/**\n * Returns the libc version when it can be determined, `null` otherwise.\n * @returns {?string}\n */\nconst versionSync = () => {\n let version = null;\n if (isLinux()) {\n version = versionFromFilesystemSync();\n if (!version) {\n version = versionFromReport();\n }\n if (!version) {\n const out = safeCommandSync();\n version = versionFromCommand(out);\n }\n }\n return version;\n};\n\nmodule.exports = {\n GLIBC,\n MUSL,\n family,\n familySync,\n isNonGlibcLinux,\n isNonGlibcLinuxSync,\n version,\n versionSync\n};\n", "var fs = require('fs')\nvar path = require('path')\nvar url = require('url')\n\nvar vars = (process.config && process.config.variables) || {}\nvar prebuildsOnly = !!process.env.PREBUILDS_ONLY\nvar versions = process.versions\nvar abi = versions.modules\nif (versions.deno || process.isBun) {\n // both Deno and Bun made the very poor decision to shoot themselves in the foot and lie about support for ABI\n // (which they do not have)\n abi = 'unsupported'\n}\nvar runtime = isElectron() ? 'electron' : 'node'\nvar arch = process.arch\nvar platform = process.platform\nvar libc = process.env.LIBC || (isMusl(platform) ? 'musl' : 'glibc')\nvar armv = process.env.ARM_VERSION || (arch === 'arm64' ? '8' : vars.arm_version) || ''\nvar uv = (versions.uv || '').split('.')[0]\n\nmodule.exports = load\n\nfunction load (dir) {\n // Workaround to fix webpack's build warnings: 'the request of a dependency is an expression', but without\n // reassigning require in a way that breaks Bun.\n if (typeof __webpack_require__ === 'function')\n return __non_webpack_require__(load.path(dir))\n else\n return require(load.path(dir))\n}\n\nload.path = function (dir) {\n dir = path.resolve(dir || '.')\n var packageName = ''\n try {\n // explanation above\n if (typeof __webpack_require__ === 'function')\n packageName = __non_webpack_require__(path.join(dir, 'package.json')).name\n else\n packageName = require(path.join(dir, 'package.json')).name\n var varName = packageName.toUpperCase().replace(/-/g, '_') + '_PREBUILD'\n if (process.env[varName]) dir = process.env[varName]\n } catch (err) {}\n if (!prebuildsOnly) {\n var release = getFirst(path.join(dir, 'build/Release'), matchBuild)\n if (release) return release\n\n var debug = getFirst(path.join(dir, 'build/Debug'), matchBuild)\n if (debug) return debug\n }\n\n var prebuild = resolve(dir)\n if (prebuild) return prebuild\n\n var nearby = resolve(path.dirname(process.execPath))\n if (nearby) return nearby\n\n var platformPackage = (packageName[0] == '@' ? '' : '@' + packageName + '/') + packageName + '-' + platform + '-' + arch\n try {\n var prebuildPackage = path.dirname(require('module').createRequire(url.pathToFileURL(path.join(dir, 'package.json'))).resolve(platformPackage))\n return resolveFile(prebuildPackage)\n } catch(error) {}\n\n var target = [\n 'platform=' + platform,\n 'arch=' + arch,\n 'runtime=' + runtime,\n 'abi=' + abi,\n 'uv=' + uv,\n armv ? 'armv=' + armv : '',\n 'libc=' + libc,\n 'node=' + process.versions.node,\n process.versions.electron ? 'electron=' + process.versions.electron : '',\n typeof __webpack_require__ === 'function' ? 'webpack=true' : '' // eslint-disable-line\n ].filter(Boolean).join(' ')\n\n throw new Error('No native build was found for ' + target + '\\n attempted loading from: ' + dir + ' and package:' +\n ' ' + platformPackage + '\\n')\n\n function resolve (dir) {\n // Find matching \"prebuilds/<platform>-<arch>\" directory\n var tuples = readdirSync(path.join(dir, 'prebuilds')).map(parseTuple)\n var tuple = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0]\n if (!tuple) return\n return resolveFile(path.join(dir, 'prebuilds', tuple.name))\n }\n function resolveFile (prebuilds) {\n // Find most specific flavor first\n var parsed = readdirSync(prebuilds).map(parseTags)\n var candidates = parsed.filter(matchTags(runtime, abi))\n var winner = candidates.sort(compareTags(runtime))[0]\n if (winner) return path.join(prebuilds, winner.file)\n }\n}\n\nfunction readdirSync (dir) {\n try {\n return fs.readdirSync(dir)\n } catch (err) {\n return []\n }\n}\n\nfunction getFirst (dir, filter) {\n var files = readdirSync(dir).filter(filter)\n return files[0] && path.join(dir, files[0])\n}\n\nfunction matchBuild (name) {\n return /\\.node$/.test(name)\n}\n\nfunction parseTuple (name) {\n // Example: darwin-x64+arm64\n var arr = name.split('-')\n if (arr.length !== 2) return\n\n var platform = arr[0]\n var architectures = arr[1].split('+')\n\n if (!platform) return\n if (!architectures.length) return\n if (!architectures.every(Boolean)) return\n\n return { name, platform, architectures }\n}\n\nfunction matchTuple (platform, arch) {\n return function (tuple) {\n if (tuple == null) return false\n if (tuple.platform !== platform) return false\n return tuple.architectures.includes(arch)\n }\n}\n\nfunction compareTuples (a, b) {\n // Prefer single-arch prebuilds over multi-arch\n return a.architectures.length - b.architectures.length\n}\n\nfunction parseTags (file) {\n var arr = file.split('.')\n var extension = arr.pop()\n var tags = { file: file, specificity: 0 }\n\n if (extension !== 'node') return\n\n for (var i = 0; i < arr.length; i++) {\n var tag = arr[i]\n\n if (tag === 'node' || tag === 'electron' || tag === 'node-webkit') {\n tags.runtime = tag\n } else if (tag === 'napi') {\n tags.napi = true\n } else if (tag.slice(0, 3) === 'abi') {\n tags.abi = tag.slice(3)\n } else if (tag.slice(0, 2) === 'uv') {\n tags.uv = tag.slice(2)\n } else if (tag.slice(0, 4) === 'armv') {\n tags.armv = tag.slice(4)\n } else if (tag === 'glibc' || tag === 'musl') {\n tags.libc = tag\n } else {\n continue\n }\n\n tags.specificity++\n }\n\n return tags\n}\n\nfunction matchTags (runtime, abi) {\n return function (tags) {\n if (tags == null) return false\n if (tags.runtime !== runtime && !runtimeAgnostic(tags)) return false\n if (tags.abi !== abi && !tags.napi) return false\n if (tags.uv && tags.uv !== uv) return false\n if (tags.armv && tags.armv !== armv) return false\n if (tags.libc && tags.libc !== libc) return false\n\n return true\n }\n}\n\nfunction runtimeAgnostic (tags) {\n return tags.runtime === 'node' && tags.napi\n}\n\nfunction compareTags (runtime) {\n // Precedence: non-agnostic runtime, abi over napi, then by specificity.\n return function (a, b) {\n if (a.runtime !== b.runtime) {\n return a.runtime === runtime ? -1 : 1\n } else if (a.abi !== b.abi) {\n return a.abi ? -1 : 1\n } else if (a.specificity !== b.specificity) {\n return a.specificity > b.specificity ? -1 : 1\n } else {\n return 0\n }\n }\n}\n\nfunction isElectron () {\n if (process.versions && process.versions.electron) return true\n if (process.env.ELECTRON_RUN_AS_NODE) return true\n return typeof window !== 'undefined' && window.process && window.process.type === 'renderer'\n}\n\nfunction isMusl (platform) {\n if (platform !== 'linux') return false;\n const { familySync, MUSL } = require('detect-libc');\n return familySync() === MUSL;\n}\n\n// Exposed for unit tests\n// TODO: move to lib\nload.parseTags = parseTags\nload.matchTags = matchTags\nload.compareTags = compareTags\nload.parseTuple = parseTuple\nload.matchTuple = matchTuple\nload.compareTuples = compareTuples", "module.exports = require('node-gyp-build-optional-packages')(__dirname)\n", "'use strict'\n\n// **************************************************************\n// * Code initially copied/adapted from \"pony-cause\" npm module *\n// * Please upstream improvements there *\n// **************************************************************\n\nconst isErrorLike = (err) => {\n return err && typeof err.message === 'string'\n}\n\n/**\n * @param {Error|{ cause?: unknown|(()=>err)}} err\n * @returns {Error|Object|undefined}\n */\nconst getErrorCause = (err) => {\n if (!err) return\n\n /** @type {unknown} */\n // @ts-ignore\n const cause = err.cause\n\n // VError / NError style causes\n if (typeof cause === 'function') {\n // @ts-ignore\n const causeResult = err.cause()\n\n return isErrorLike(causeResult)\n ? causeResult\n : undefined\n } else {\n return isErrorLike(cause)\n ? cause\n : undefined\n }\n}\n\n/**\n * Internal method that keeps a track of which error we have already added, to avoid circular recursion\n *\n * @private\n * @param {Error} err\n * @param {Set<Error>} seen\n * @returns {string}\n */\nconst _stackWithCauses = (err, seen) => {\n if (!isErrorLike(err)) return ''\n\n const stack = err.stack || ''\n\n // Ensure we don't go circular or crazily deep\n if (seen.has(err)) {\n return stack + '\\ncauses have become circular...'\n }\n\n const cause = getErrorCause(err)\n\n if (cause) {\n seen.add(err)\n return (stack + '\\ncaused by: ' + _stackWithCauses(cause, seen))\n } else {\n return stack\n }\n}\n\n/**\n * @param {Error} err\n * @returns {string}\n */\nconst stackWithCauses = (err) => _stackWithCauses(err, new Set())\n\n/**\n * Internal method that keeps a track of which error we have already added, to avoid circular recursion\n *\n * @private\n * @param {Error} err\n * @param {Set<Error>} seen\n * @param {boolean} [skip]\n * @returns {string}\n */\nconst _messageWithCauses = (err, seen, skip) => {\n if (!isErrorLike(err)) return ''\n\n const message = skip ? '' : (err.message || '')\n\n // Ensure we don't go circular or crazily deep\n if (seen.has(err)) {\n return message + ': ...'\n }\n\n const cause = getErrorCause(err)\n\n if (cause) {\n seen.add(err)\n\n // @ts-ignore\n const skipIfVErrorStyleCause = typeof err.cause === 'function'\n\n return (message +\n (skipIfVErrorStyleCause ? '' : ': ') +\n _messageWithCauses(cause, seen, skipIfVErrorStyleCause))\n } else {\n return message\n }\n}\n\n/**\n * @param {Error} err\n * @returns {string}\n */\nconst messageWithCauses = (err) => _messageWithCauses(err, new Set())\n\nmodule.exports = {\n isErrorLike,\n getErrorCause,\n stackWithCauses,\n messageWithCauses\n}\n", "'use strict'\n\nconst seen = Symbol('circular-ref-tag')\nconst rawSymbol = Symbol('pino-raw-err-ref')\n\nconst pinoErrProto = Object.create({}, {\n type: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n message: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n stack: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n aggregateErrors: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoErrProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nmodule.exports = {\n pinoErrProto,\n pinoErrorSymbols: {\n seen,\n rawSymbol\n }\n}\n", "'use strict'\n\nmodule.exports = errSerializer\n\nconst { messageWithCauses, stackWithCauses, isErrorLike } = require('./err-helpers')\nconst { pinoErrProto, pinoErrorSymbols } = require('./err-proto')\nconst { seen } = pinoErrorSymbols\n\nconst { toString } = Object.prototype\n\nfunction errSerializer (err) {\n if (!isErrorLike(err)) {\n return err\n }\n\n err[seen] = undefined // tag to prevent re-looking at this\n const _err = Object.create(pinoErrProto)\n _err.type = toString.call(err.constructor) === '[object Function]'\n ? err.constructor.name\n : err.name\n _err.message = messageWithCauses(err)\n _err.stack = stackWithCauses(err)\n\n if (Array.isArray(err.errors)) {\n _err.aggregateErrors = err.errors.map(err => errSerializer(err))\n }\n\n for (const key in err) {\n if (_err[key] === undefined) {\n const val = err[key]\n if (isErrorLike(val)) {\n // We append cause messages and stacks to _err, therefore skipping causes here\n if (key !== 'cause' && !Object.prototype.hasOwnProperty.call(val, seen)) {\n _err[key] = errSerializer(val)\n }\n } else {\n _err[key] = val\n }\n }\n }\n\n delete err[seen] // clean up tag in case err is serialized again later\n _err.raw = err\n return _err\n}\n", "'use strict'\n\nmodule.exports = errWithCauseSerializer\n\nconst { isErrorLike } = require('./err-helpers')\nconst { pinoErrProto, pinoErrorSymbols } = require('./err-proto')\nconst { seen } = pinoErrorSymbols\n\nconst { toString } = Object.prototype\n\nfunction errWithCauseSerializer (err) {\n if (!isErrorLike(err)) {\n return err\n }\n\n err[seen] = undefined // tag to prevent re-looking at this\n const _err = Object.create(pinoErrProto)\n _err.type = toString.call(err.constructor) === '[object Function]'\n ? err.constructor.name\n : err.name\n _err.message = err.message\n _err.stack = err.stack\n\n if (Array.isArray(err.errors)) {\n _err.aggregateErrors = err.errors.map(err => errWithCauseSerializer(err))\n }\n\n if (isErrorLike(err.cause) && !Object.prototype.hasOwnProperty.call(err.cause, seen)) {\n _err.cause = errWithCauseSerializer(err.cause)\n }\n\n for (const key in err) {\n if (_err[key] === undefined) {\n const val = err[key]\n if (isErrorLike(val)) {\n if (!Object.prototype.hasOwnProperty.call(val, seen)) {\n _err[key] = errWithCauseSerializer(val)\n }\n } else {\n _err[key] = val\n }\n }\n }\n\n delete err[seen] // clean up tag in case err is serialized again later\n _err.raw = err\n return _err\n}\n", "'use strict'\n\nmodule.exports = {\n mapHttpRequest,\n reqSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-req-ref')\nconst pinoReqProto = Object.create({}, {\n id: {\n enumerable: true,\n writable: true,\n value: ''\n },\n method: {\n enumerable: true,\n writable: true,\n value: ''\n },\n url: {\n enumerable: true,\n writable: true,\n value: ''\n },\n query: {\n enumerable: true,\n writable: true,\n value: ''\n },\n params: {\n enumerable: true,\n writable: true,\n value: ''\n },\n headers: {\n enumerable: true,\n writable: true,\n value: {}\n },\n remoteAddress: {\n enumerable: true,\n writable: true,\n value: ''\n },\n remotePort: {\n enumerable: true,\n writable: true,\n value: ''\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoReqProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nfunction reqSerializer (req) {\n // req.info is for hapi compat.\n const connection = req.info || req.socket\n const _req = Object.create(pinoReqProto)\n _req.id = (typeof req.id === 'function' ? req.id() : (req.id || (req.info ? req.info.id : undefined)))\n _req.method = req.method\n // req.originalUrl is for expressjs compat.\n if (req.originalUrl) {\n _req.url = req.originalUrl\n } else {\n const path = req.path\n // path for safe hapi compat.\n _req.url = typeof path === 'string' ? path : (req.url ? req.url.path || req.url : undefined)\n }\n\n if (req.query) {\n _req.query = req.query\n }\n\n if (req.params) {\n _req.params = req.params\n }\n\n _req.headers = req.headers\n _req.remoteAddress = connection && connection.remoteAddress\n _req.remotePort = connection && connection.remotePort\n // req.raw is for hapi compat/equivalence\n _req.raw = req.raw || req\n return _req\n}\n\nfunction mapHttpRequest (req) {\n return {\n req: reqSerializer(req)\n }\n}\n", "'use strict'\n\nmodule.exports = {\n mapHttpResponse,\n resSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-res-ref')\nconst pinoResProto = Object.create({}, {\n statusCode: {\n enumerable: true,\n writable: true,\n value: 0\n },\n headers: {\n enumerable: true,\n writable: true,\n value: ''\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoResProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nfunction resSerializer (res) {\n const _res = Object.create(pinoResProto)\n _res.statusCode = res.headersSent ? res.statusCode : null\n _res.headers = res.getHeaders ? res.getHeaders() : res._headers\n _res.raw = res\n return _res\n}\n\nfunction mapHttpResponse (res) {\n return {\n res: resSerializer(res)\n }\n}\n", "'use strict'\n\nconst errSerializer = require('./lib/err')\nconst errWithCauseSerializer = require('./lib/err-with-cause')\nconst reqSerializers = require('./lib/req')\nconst resSerializers = require('./lib/res')\n\nmodule.exports = {\n err: errSerializer,\n errWithCause: errWithCauseSerializer,\n mapHttpRequest: reqSerializers.mapHttpRequest,\n mapHttpResponse: resSerializers.mapHttpResponse,\n req: reqSerializers.reqSerializer,\n res: resSerializers.resSerializer,\n\n wrapErrorSerializer: function wrapErrorSerializer (customSerializer) {\n if (customSerializer === errSerializer) return customSerializer\n return function wrapErrSerializer (err) {\n return customSerializer(errSerializer(err))\n }\n },\n\n wrapRequestSerializer: function wrapRequestSerializer (customSerializer) {\n if (customSerializer === reqSerializers.reqSerializer) return customSerializer\n return function wrappedReqSerializer (req) {\n return customSerializer(reqSerializers.reqSerializer(req))\n }\n },\n\n wrapResponseSerializer: function wrapResponseSerializer (customSerializer) {\n if (customSerializer === resSerializers.resSerializer) return customSerializer\n return function wrappedResSerializer (res) {\n return customSerializer(resSerializers.resSerializer(res))\n }\n }\n}\n", "'use strict'\n\nfunction noOpPrepareStackTrace (_, stack) {\n return stack\n}\n\nmodule.exports = function getCallers () {\n const originalPrepare = Error.prepareStackTrace\n Error.prepareStackTrace = noOpPrepareStackTrace\n const stack = new Error().stack\n Error.prepareStackTrace = originalPrepare\n\n if (!Array.isArray(stack)) {\n return undefined\n }\n\n const entries = stack.slice(2)\n\n const fileNames = []\n\n for (const entry of entries) {\n if (!entry) {\n continue\n }\n\n fileNames.push(entry.getFileName())\n }\n\n return fileNames\n}\n", "'use strict'\n\nmodule.exports = validator\n\nfunction validator (opts = {}) {\n const {\n ERR_PATHS_MUST_BE_STRINGS = () => 'fast-redact - Paths must be (non-empty) strings',\n ERR_INVALID_PATH = (s) => `fast-redact \u2013 Invalid path (${s})`\n } = opts\n\n return function validate ({ paths }) {\n paths.forEach((s) => {\n if (typeof s !== 'string') {\n throw Error(ERR_PATHS_MUST_BE_STRINGS())\n }\n try {\n if (/\u3007/.test(s)) throw Error()\n const expr = (s[0] === '[' ? '' : '.') + s.replace(/^\\*/, '\u3007').replace(/\\.\\*/g, '.\u3007').replace(/\\[\\*\\]/g, '[\u3007]')\n if (/\\n|\\r|;/.test(expr)) throw Error()\n if (/\\/\\*/.test(expr)) throw Error()\n /* eslint-disable-next-line */\n Function(`\n 'use strict'\n const o = new Proxy({}, { get: () => o, set: () => { throw Error() } });\n const \u3007 = null;\n o${expr}\n if ([o${expr}].length !== 1) throw Error()`)()\n } catch (e) {\n throw Error(ERR_INVALID_PATH(s))\n }\n })\n }\n}\n", "'use strict'\n\nmodule.exports = /[^.[\\]]+|\\[((?:.)*?)\\]/g\n\n/*\nRegular expression explanation:\n\nAlt 1: /[^.[\\]]+/ - Match one or more characters that are *not* a dot (.)\n opening square bracket ([) or closing square bracket (])\n\nAlt 2: /\\[((?:.)*?)\\]/ - If the char IS dot or square bracket, then create a capture\n group (which will be capture group $1) that matches anything\n within square brackets. Expansion is lazy so it will\n stop matching as soon as the first closing bracket is met `]`\n (rather than continuing to match until the final closing bracket).\n*/\n", "'use strict'\n\nconst rx = require('./rx')\n\nmodule.exports = parse\n\nfunction parse ({ paths }) {\n const wildcards = []\n var wcLen = 0\n const secret = paths.reduce(function (o, strPath, ix) {\n var path = strPath.match(rx).map((p) => p.replace(/'|\"|`/g, ''))\n const leadingBracket = strPath[0] === '['\n path = path.map((p) => {\n if (p[0] === '[') return p.substr(1, p.length - 2)\n else return p\n })\n const star = path.indexOf('*')\n if (star > -1) {\n const before = path.slice(0, star)\n const beforeStr = before.join('.')\n const after = path.slice(star + 1, path.length)\n const nested = after.length > 0\n wcLen++\n wildcards.push({\n before,\n beforeStr,\n after,\n nested\n })\n } else {\n o[strPath] = {\n path: path,\n val: undefined,\n precensored: false,\n circle: '',\n escPath: JSON.stringify(strPath),\n leadingBracket: leadingBracket\n }\n }\n return o\n }, {})\n\n return { wildcards, wcLen, secret }\n}\n", "'use strict'\n\nconst rx = require('./rx')\n\nmodule.exports = redactor\n\nfunction redactor ({ secret, serialize, wcLen, strict, isCensorFct, censorFctTakesPath }, state) {\n /* eslint-disable-next-line */\n const redact = Function('o', `\n if (typeof o !== 'object' || o == null) {\n ${strictImpl(strict, serialize)}\n }\n const { censor, secret } = this\n ${redactTmpl(secret, isCensorFct, censorFctTakesPath)}\n this.compileRestore()\n ${dynamicRedactTmpl(wcLen > 0, isCensorFct, censorFctTakesPath)}\n ${resultTmpl(serialize)}\n `).bind(state)\n\n if (serialize === false) {\n redact.restore = (o) => state.restore(o)\n }\n\n return redact\n}\n\nfunction redactTmpl (secret, isCensorFct, censorFctTakesPath) {\n return Object.keys(secret).map((path) => {\n const { escPath, leadingBracket, path: arrPath } = secret[path]\n const skip = leadingBracket ? 1 : 0\n const delim = leadingBracket ? '' : '.'\n const hops = []\n var match\n while ((match = rx.exec(path)) !== null) {\n const [ , ix ] = match\n const { index, input } = match\n if (index > skip) hops.push(input.substring(0, index - (ix ? 0 : 1)))\n }\n var existence = hops.map((p) => `o${delim}${p}`).join(' && ')\n if (existence.length === 0) existence += `o${delim}${path} != null`\n else existence += ` && o${delim}${path} != null`\n\n const circularDetection = `\n switch (true) {\n ${hops.reverse().map((p) => `\n case o${delim}${p} === censor:\n secret[${escPath}].circle = ${JSON.stringify(p)}\n break\n `).join('\\n')}\n }\n `\n\n const censorArgs = censorFctTakesPath\n ? `val, ${JSON.stringify(arrPath)}`\n : `val`\n\n return `\n if (${existence}) {\n const val = o${delim}${path}\n if (val === censor) {\n secret[${escPath}].precensored = true\n } else {\n secret[${escPath}].val = val\n o${delim}${path} = ${isCensorFct ? `censor(${censorArgs})` : 'censor'}\n ${circularDetection}\n }\n }\n `\n }).join('\\n')\n}\n\nfunction dynamicRedactTmpl (hasWildcards, isCensorFct, censorFctTakesPath) {\n return hasWildcards === true ? `\n {\n const { wildcards, wcLen, groupRedact, nestedRedact } = this\n for (var i = 0; i < wcLen; i++) {\n const { before, beforeStr, after, nested } = wildcards[i]\n if (nested === true) {\n secret[beforeStr] = secret[beforeStr] || []\n nestedRedact(secret[beforeStr], o, before, after, censor, ${isCensorFct}, ${censorFctTakesPath})\n } else secret[beforeStr] = groupRedact(o, before, censor, ${isCensorFct}, ${censorFctTakesPath})\n }\n }\n ` : ''\n}\n\nfunction resultTmpl (serialize) {\n return serialize === false ? `return o` : `\n var s = this.serialize(o)\n this.restore(o)\n return s\n `\n}\n\nfunction strictImpl (strict, serialize) {\n return strict === true\n ? `throw Error('fast-redact: primitives cannot be redacted')`\n : serialize === false ? `return o` : `return this.serialize(o)`\n}\n", "'use strict'\n\nmodule.exports = {\n groupRedact,\n groupRestore,\n nestedRedact,\n nestedRestore\n}\n\nfunction groupRestore ({ keys, values, target }) {\n if (target == null) return\n const length = keys.length\n for (var i = 0; i < length; i++) {\n const k = keys[i]\n target[k] = values[i]\n }\n}\n\nfunction groupRedact (o, path, censor, isCensorFct, censorFctTakesPath) {\n const target = get(o, path)\n if (target == null) return { keys: null, values: null, target: null, flat: true }\n const keys = Object.keys(target)\n const keysLength = keys.length\n const pathLength = path.length\n const pathWithKey = censorFctTakesPath ? [...path] : undefined\n const values = new Array(keysLength)\n\n for (var i = 0; i < keysLength; i++) {\n const key = keys[i]\n values[i] = target[key]\n\n if (censorFctTakesPath) {\n pathWithKey[pathLength] = key\n target[key] = censor(target[key], pathWithKey)\n } else if (isCensorFct) {\n target[key] = censor(target[key])\n } else {\n target[key] = censor\n }\n }\n return { keys, values, target, flat: true }\n}\n\n/**\n * @param {RestoreInstruction[]} instructions a set of instructions for restoring values to objects\n */\nfunction nestedRestore (instructions) {\n for (let i = 0; i < instructions.length; i++) {\n const { target, path, value } = instructions[i]\n let current = target\n for (let i = path.length - 1; i > 0; i--) {\n current = current[path[i]]\n }\n current[path[0]] = value\n }\n}\n\nfunction nestedRedact (store, o, path, ns, censor, isCensorFct, censorFctTakesPath) {\n const target = get(o, path)\n if (target == null) return\n const keys = Object.keys(target)\n const keysLength = keys.length\n for (var i = 0; i < keysLength; i++) {\n const key = keys[i]\n specialSet(store, target, key, path, ns, censor, isCensorFct, censorFctTakesPath)\n }\n return store\n}\n\nfunction has (obj, prop) {\n return obj !== undefined && obj !== null\n ? ('hasOwn' in Object ? Object.hasOwn(obj, prop) : Object.prototype.hasOwnProperty.call(obj, prop))\n : false\n}\n\nfunction specialSet (store, o, k, path, afterPath, censor, isCensorFct, censorFctTakesPath) {\n const afterPathLen = afterPath.length\n const lastPathIndex = afterPathLen - 1\n const originalKey = k\n var i = -1\n var n\n var nv\n var ov\n var oov = null\n var wc = null\n var kIsWc\n var wcov\n var consecutive = false\n var level = 0\n // need to track depth of the `redactPath` tree\n var depth = 0\n var redactPathCurrent = tree()\n ov = n = o[k]\n if (typeof n !== 'object') return\n while (n != null && ++i < afterPathLen) {\n depth += 1\n k = afterPath[i]\n oov = ov\n if (k !== '*' && !wc && !(typeof n === 'object' && k in n)) {\n break\n }\n if (k === '*') {\n if (wc === '*') {\n consecutive = true\n }\n wc = k\n if (i !== lastPathIndex) {\n continue\n }\n }\n if (wc) {\n const wcKeys = Object.keys(n)\n for (var j = 0; j < wcKeys.length; j++) {\n const wck = wcKeys[j]\n wcov = n[wck]\n kIsWc = k === '*'\n if (consecutive) {\n redactPathCurrent = node(redactPathCurrent, wck, depth)\n level = i\n ov = iterateNthLevel(wcov, level - 1, k, path, afterPath, censor, isCensorFct, censorFctTakesPath, originalKey, n, nv, ov, kIsWc, wck, i, lastPathIndex, redactPathCurrent, store, o[originalKey], depth + 1)\n } else {\n if (kIsWc || (typeof wcov === 'object' && wcov !== null && k in wcov)) {\n if (kIsWc) {\n ov = wcov\n } else {\n ov = wcov[k]\n }\n nv = (i !== lastPathIndex)\n ? ov\n : (isCensorFct\n ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov))\n : censor)\n if (kIsWc) {\n const rv = restoreInstr(node(redactPathCurrent, wck, depth), ov, o[originalKey])\n store.push(rv)\n n[wck] = nv\n } else {\n if (wcov[k] === nv) {\n // pass\n } else if ((nv === undefined && censor !== undefined) || (has(wcov, k) && nv === ov)) {\n redactPathCurrent = node(redactPathCurrent, wck, depth)\n } else {\n redactPathCurrent = node(redactPathCurrent, wck, depth)\n const rv = restoreInstr(node(redactPathCurrent, k, depth + 1), ov, o[originalKey])\n store.push(rv)\n wcov[k] = nv\n }\n }\n }\n }\n }\n wc = null\n } else {\n ov = n[k]\n redactPathCurrent = node(redactPathCurrent, k, depth)\n nv = (i !== lastPathIndex)\n ? ov\n : (isCensorFct\n ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov))\n : censor)\n if ((has(n, k) && nv === ov) || (nv === undefined && censor !== undefined)) {\n // pass\n } else {\n const rv = restoreInstr(redactPathCurrent, ov, o[originalKey])\n store.push(rv)\n n[k] = nv\n }\n n = n[k]\n }\n if (typeof n !== 'object') break\n // prevent circular structure, see https://github.com/pinojs/pino/issues/1513\n if (ov === oov || typeof ov === 'undefined') {\n // pass\n }\n }\n}\n\nfunction get (o, p) {\n var i = -1\n var l = p.length\n var n = o\n while (n != null && ++i < l) {\n n = n[p[i]]\n }\n return n\n}\n\nfunction iterateNthLevel (wcov, level, k, path, afterPath, censor, isCensorFct, censorFctTakesPath, originalKey, n, nv, ov, kIsWc, wck, i, lastPathIndex, redactPathCurrent, store, parent, depth) {\n if (level === 0) {\n if (kIsWc || (typeof wcov === 'object' && wcov !== null && k in wcov)) {\n if (kIsWc) {\n ov = wcov\n } else {\n ov = wcov[k]\n }\n nv = (i !== lastPathIndex)\n ? ov\n : (isCensorFct\n ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov))\n : censor)\n if (kIsWc) {\n const rv = restoreInstr(redactPathCurrent, ov, parent)\n store.push(rv)\n n[wck] = nv\n } else {\n if (wcov[k] === nv) {\n // pass\n } else if ((nv === undefined && censor !== undefined) || (has(wcov, k) && nv === ov)) {\n // pass\n } else {\n const rv = restoreInstr(node(redactPathCurrent, k, depth + 1), ov, parent)\n store.push(rv)\n wcov[k] = nv\n }\n }\n }\n }\n for (const key in wcov) {\n if (typeof wcov[key] === 'object') {\n redactPathCurrent = node(redactPathCurrent, key, depth)\n iterateNthLevel(wcov[key], level - 1, k, path, afterPath, censor, isCensorFct, censorFctTakesPath, originalKey, n, nv, ov, kIsWc, wck, i, lastPathIndex, redactPathCurrent, store, parent, depth + 1)\n }\n }\n}\n\n/**\n * @typedef {object} TreeNode\n * @prop {TreeNode} [parent] reference to the parent of this node in the tree, or `null` if there is no parent\n * @prop {string} key the key that this node represents (key here being part of the path being redacted\n * @prop {TreeNode[]} children the child nodes of this node\n * @prop {number} depth the depth of this node in the tree\n */\n\n/**\n * instantiate a new, empty tree\n * @returns {TreeNode}\n */\nfunction tree () {\n return { parent: null, key: null, children: [], depth: 0 }\n}\n\n/**\n * creates a new node in the tree, attaching it as a child of the provided parent node\n * if the specified depth matches the parent depth, adds the new node as a _sibling_ of the parent instead\n * @param {TreeNode} parent the parent node to add a new node to (if the parent depth matches the provided `depth` value, will instead add as a sibling of this\n * @param {string} key the key that the new node represents (key here being part of the path being redacted)\n * @param {number} depth the depth of the new node in the tree - used to determing whether to add the new node as a child or sibling of the provided `parent` node\n * @returns {TreeNode} a reference to the newly created node in the tree\n */\nfunction node (parent, key, depth) {\n if (parent.depth === depth) {\n return node(parent.parent, key, depth)\n }\n\n var child = {\n parent,\n key,\n depth,\n children: []\n }\n\n parent.children.push(child)\n\n return child\n}\n\n/**\n * @typedef {object} RestoreInstruction\n * @prop {string[]} path a reverse-order path that can be used to find the correct insertion point to restore a `value` for the given `parent` object\n * @prop {*} value the value to restore\n * @prop {object} target the object to restore the `value` in\n */\n\n/**\n * create a restore instruction for the given redactPath node\n * generates a path in reverse order by walking up the redactPath tree\n * @param {TreeNode} node a tree node that should be at the bottom of the redact path (i.e. have no children) - this will be used to walk up the redact path tree to construct the path needed to restore\n * @param {*} value the value to restore\n * @param {object} target a reference to the parent object to apply the restore instruction to\n * @returns {RestoreInstruction} an instruction used to restore a nested value for a specific object\n */\nfunction restoreInstr (node, value, target) {\n let current = node\n const path = []\n do {\n path.push(current.key)\n current = current.parent\n } while (current.parent != null)\n\n return { path, value, target }\n}\n", "'use strict'\n\nconst { groupRestore, nestedRestore } = require('./modifiers')\n\nmodule.exports = restorer\n\nfunction restorer ({ secret, wcLen }) {\n return function compileRestore () {\n if (this.restore) return\n const paths = Object.keys(secret)\n const resetters = resetTmpl(secret, paths)\n const hasWildcards = wcLen > 0\n const state = hasWildcards ? { secret, groupRestore, nestedRestore } : { secret }\n /* eslint-disable-next-line */\n this.restore = Function(\n 'o',\n restoreTmpl(resetters, paths, hasWildcards)\n ).bind(state)\n }\n}\n\n/**\n * Mutates the original object to be censored by restoring its original values\n * prior to censoring.\n *\n * @param {object} secret Compiled object describing which target fields should\n * be censored and the field states.\n * @param {string[]} paths The list of paths to censor as provided at\n * initialization time.\n *\n * @returns {string} String of JavaScript to be used by `Function()`. The\n * string compiles to the function that does the work in the description.\n */\nfunction resetTmpl (secret, paths) {\n return paths.map((path) => {\n const { circle, escPath, leadingBracket } = secret[path]\n const delim = leadingBracket ? '' : '.'\n const reset = circle\n ? `o.${circle} = secret[${escPath}].val`\n : `o${delim}${path} = secret[${escPath}].val`\n const clear = `secret[${escPath}].val = undefined`\n return `\n if (secret[${escPath}].val !== undefined) {\n try { ${reset} } catch (e) {}\n ${clear}\n }\n `\n }).join('')\n}\n\n/**\n * Creates the body of the restore function\n *\n * Restoration of the redacted object happens\n * backwards, in reverse order of redactions,\n * so that repeated redactions on the same object\n * property can be eventually rolled back to the\n * original value.\n *\n * This way dynamic redactions are restored first,\n * starting from the last one working backwards and\n * followed by the static ones.\n *\n * @returns {string} the body of the restore function\n */\nfunction restoreTmpl (resetters, paths, hasWildcards) {\n const dynamicReset = hasWildcards === true ? `\n const keys = Object.keys(secret)\n const len = keys.length\n for (var i = len - 1; i >= ${paths.length}; i--) {\n const k = keys[i]\n const o = secret[k]\n if (o.flat === true) this.groupRestore(o)\n else this.nestedRestore(o)\n secret[k] = null\n }\n ` : ''\n\n return `\n const secret = this.secret\n ${dynamicReset}\n ${resetters}\n return o\n `\n}\n", "'use strict'\n\nmodule.exports = state\n\nfunction state (o) {\n const {\n secret,\n censor,\n compileRestore,\n serialize,\n groupRedact,\n nestedRedact,\n wildcards,\n wcLen\n } = o\n const builder = [{ secret, censor, compileRestore }]\n if (serialize !== false) builder.push({ serialize })\n if (wcLen > 0) builder.push({ groupRedact, nestedRedact, wildcards, wcLen })\n return Object.assign(...builder)\n}\n", "'use strict'\n\nconst validator = require('./lib/validator')\nconst parse = require('./lib/parse')\nconst redactor = require('./lib/redactor')\nconst restorer = require('./lib/restorer')\nconst { groupRedact, nestedRedact } = require('./lib/modifiers')\nconst state = require('./lib/state')\nconst rx = require('./lib/rx')\nconst validate = validator()\nconst noop = (o) => o\nnoop.restore = noop\n\nconst DEFAULT_CENSOR = '[REDACTED]'\nfastRedact.rx = rx\nfastRedact.validator = validator\n\nmodule.exports = fastRedact\n\nfunction fastRedact (opts = {}) {\n const paths = Array.from(new Set(opts.paths || []))\n const serialize = 'serialize' in opts ? (\n opts.serialize === false ? opts.serialize\n : (typeof opts.serialize === 'function' ? opts.serialize : JSON.stringify)\n ) : JSON.stringify\n const remove = opts.remove\n if (remove === true && serialize !== JSON.stringify) {\n throw Error('fast-redact \u2013 remove option may only be set when serializer is JSON.stringify')\n }\n const censor = remove === true\n ? undefined\n : 'censor' in opts ? opts.censor : DEFAULT_CENSOR\n\n const isCensorFct = typeof censor === 'function'\n const censorFctTakesPath = isCensorFct && censor.length > 1\n\n if (paths.length === 0) return serialize || noop\n\n validate({ paths, serialize, censor })\n\n const { wildcards, wcLen, secret } = parse({ paths, censor })\n\n const compileRestore = restorer({ secret, wcLen })\n const strict = 'strict' in opts ? opts.strict : true\n\n return redactor({ secret, wcLen, serialize, strict, isCensorFct, censorFctTakesPath }, state({\n secret,\n censor,\n compileRestore,\n serialize,\n groupRedact,\n nestedRedact,\n wildcards,\n wcLen\n }))\n}\n", "'use strict'\n\nconst setLevelSym = Symbol('pino.setLevel')\nconst getLevelSym = Symbol('pino.getLevel')\nconst levelValSym = Symbol('pino.levelVal')\nconst useLevelLabelsSym = Symbol('pino.useLevelLabels')\nconst useOnlyCustomLevelsSym = Symbol('pino.useOnlyCustomLevels')\nconst mixinSym = Symbol('pino.mixin')\n\nconst lsCacheSym = Symbol('pino.lsCache')\nconst chindingsSym = Symbol('pino.chindings')\n\nconst asJsonSym = Symbol('pino.asJson')\nconst writeSym = Symbol('pino.write')\nconst redactFmtSym = Symbol('pino.redactFmt')\n\nconst timeSym = Symbol('pino.time')\nconst timeSliceIndexSym = Symbol('pino.timeSliceIndex')\nconst streamSym = Symbol('pino.stream')\nconst stringifySym = Symbol('pino.stringify')\nconst stringifySafeSym = Symbol('pino.stringifySafe')\nconst stringifiersSym = Symbol('pino.stringifiers')\nconst endSym = Symbol('pino.end')\nconst formatOptsSym = Symbol('pino.formatOpts')\nconst messageKeySym = Symbol('pino.messageKey')\nconst errorKeySym = Symbol('pino.errorKey')\nconst nestedKeySym = Symbol('pino.nestedKey')\nconst nestedKeyStrSym = Symbol('pino.nestedKeyStr')\nconst mixinMergeStrategySym = Symbol('pino.mixinMergeStrategy')\nconst msgPrefixSym = Symbol('pino.msgPrefix')\n\nconst wildcardFirstSym = Symbol('pino.wildcardFirst')\n\n// public symbols, no need to use the same pino\n// version for these\nconst serializersSym = Symbol.for('pino.serializers')\nconst formattersSym = Symbol.for('pino.formatters')\nconst hooksSym = Symbol.for('pino.hooks')\nconst needsMetadataGsym = Symbol.for('pino.metadata')\n\nmodule.exports = {\n setLevelSym,\n getLevelSym,\n levelValSym,\n useLevelLabelsSym,\n mixinSym,\n lsCacheSym,\n chindingsSym,\n asJsonSym,\n writeSym,\n serializersSym,\n redactFmtSym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n stringifySym,\n stringifySafeSym,\n stringifiersSym,\n endSym,\n formatOptsSym,\n messageKeySym,\n errorKeySym,\n nestedKeySym,\n wildcardFirstSym,\n needsMetadataGsym,\n useOnlyCustomLevelsSym,\n formattersSym,\n hooksSym,\n nestedKeyStrSym,\n mixinMergeStrategySym,\n msgPrefixSym\n}\n", "'use strict'\n\nconst fastRedact = require('fast-redact')\nconst { redactFmtSym, wildcardFirstSym } = require('./symbols')\nconst { rx, validator } = fastRedact\n\nconst validate = validator({\n ERR_PATHS_MUST_BE_STRINGS: () => 'pino \u2013 redacted paths must be strings',\n ERR_INVALID_PATH: (s) => `pino \u2013 redact paths array contains an invalid path (${s})`\n})\n\nconst CENSOR = '[Redacted]'\nconst strict = false // TODO should this be configurable?\n\nfunction redaction (opts, serialize) {\n const { paths, censor } = handle(opts)\n\n const shape = paths.reduce((o, str) => {\n rx.lastIndex = 0\n const first = rx.exec(str)\n const next = rx.exec(str)\n\n // ns is the top-level path segment, brackets + quoting removed.\n let ns = first[1] !== undefined\n ? first[1].replace(/^(?:\"|'|`)(.*)(?:\"|'|`)$/, '$1')\n : first[0]\n\n if (ns === '*') {\n ns = wildcardFirstSym\n }\n\n // top level key:\n if (next === null) {\n o[ns] = null\n return o\n }\n\n // path with at least two segments:\n // if ns is already redacted at the top level, ignore lower level redactions\n if (o[ns] === null) {\n return o\n }\n\n const { index } = next\n const nextPath = `${str.substr(index, str.length - 1)}`\n\n o[ns] = o[ns] || []\n\n // shape is a mix of paths beginning with literal values and wildcard\n // paths [ \"a.b.c\", \"*.b.z\" ] should reduce to a shape of\n // { \"a\": [ \"b.c\", \"b.z\" ], *: [ \"b.z\" ] }\n // note: \"b.z\" is in both \"a\" and * arrays because \"a\" matches the wildcard.\n // (* entry has wildcardFirstSym as key)\n if (ns !== wildcardFirstSym && o[ns].length === 0) {\n // first time ns's get all '*' redactions so far\n o[ns].push(...(o[wildcardFirstSym] || []))\n }\n\n if (ns === wildcardFirstSym) {\n // new * path gets added to all previously registered literal ns's.\n Object.keys(o).forEach(function (k) {\n if (o[k]) {\n o[k].push(nextPath)\n }\n })\n }\n\n o[ns].push(nextPath)\n return o\n }, {})\n\n // the redactor assigned to the format symbol key\n // provides top level redaction for instances where\n // an object is interpolated into the msg string\n const result = {\n [redactFmtSym]: fastRedact({ paths, censor, serialize, strict })\n }\n\n const topCensor = (...args) => {\n return typeof censor === 'function' ? serialize(censor(...args)) : serialize(censor)\n }\n\n return [...Object.keys(shape), ...Object.getOwnPropertySymbols(shape)].reduce((o, k) => {\n // top level key:\n if (shape[k] === null) {\n o[k] = (value) => topCensor(value, [k])\n } else {\n const wrappedCensor = typeof censor === 'function'\n ? (value, path) => {\n return censor(value, [k, ...path])\n }\n : censor\n o[k] = fastRedact({\n paths: shape[k],\n censor: wrappedCensor,\n serialize,\n strict\n })\n }\n return o\n }, result)\n}\n\nfunction handle (opts) {\n if (Array.isArray(opts)) {\n opts = { paths: opts, censor: CENSOR }\n validate(opts)\n return opts\n }\n let { paths, censor = CENSOR, remove } = opts\n if (Array.isArray(paths) === false) { throw Error('pino \u2013 redact must contain an array of strings') }\n if (remove === true) censor = undefined\n validate({ paths, censor })\n\n return { paths, censor }\n}\n\nmodule.exports = redaction\n", "'use strict'\n\nconst nullTime = () => ''\n\nconst epochTime = () => `,\"time\":${Date.now()}`\n\nconst unixTime = () => `,\"time\":${Math.round(Date.now() / 1000.0)}`\n\nconst isoTime = () => `,\"time\":\"${new Date(Date.now()).toISOString()}\"` // using Date.now() for testability\n\nmodule.exports = { nullTime, epochTime, unixTime, isoTime }\n", "'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || '<anonymous>'\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n", "'use strict'\n\n/* global SharedArrayBuffer, Atomics */\n\nif (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {\n const nil = new Int32Array(new SharedArrayBuffer(4))\n\n function sleep (ms) {\n // also filters out NaN, non-number types, including empty strings, but allows bigints\n const valid = ms > 0 && ms < Infinity \n if (valid === false) {\n if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n throw TypeError('sleep: ms must be a number')\n }\n throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n }\n\n Atomics.wait(nil, 0, 0, Number(ms))\n }\n module.exports = sleep\n} else {\n\n function sleep (ms) {\n // also filters out NaN, non-number types, including empty strings, but allows bigints\n const valid = ms > 0 && ms < Infinity \n if (valid === false) {\n if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n throw TypeError('sleep: ms must be a number')\n }\n throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n }\n const target = Date.now() + Number(ms)\n while (target > Date.now()){}\n }\n\n module.exports = sleep\n\n}\n", "'use strict'\n\nconst fs = require('fs')\nconst EventEmitter = require('events')\nconst inherits = require('util').inherits\nconst path = require('path')\nconst sleep = require('atomic-sleep')\n\nconst BUSY_WRITE_TIMEOUT = 100\n\n// 16 KB. Don't write more than docker buffer size.\n// https://github.com/moby/moby/blob/513ec73831269947d38a644c278ce3cac36783b2/daemon/logger/copier.go#L13\nconst MAX_WRITE = 16 * 1024\n\nfunction openFile (file, sonic) {\n sonic._opening = true\n sonic._writing = true\n sonic._asyncDrainScheduled = false\n\n // NOTE: 'error' and 'ready' events emitted below only relevant when sonic.sync===false\n // for sync mode, there is no way to add a listener that will receive these\n\n function fileOpened (err, fd) {\n if (err) {\n sonic._reopening = false\n sonic._writing = false\n sonic._opening = false\n\n if (sonic.sync) {\n process.nextTick(() => {\n if (sonic.listenerCount('error') > 0) {\n sonic.emit('error', err)\n }\n })\n } else {\n sonic.emit('error', err)\n }\n return\n }\n\n sonic.fd = fd\n sonic.file = file\n sonic._reopening = false\n sonic._opening = false\n sonic._writing = false\n\n if (sonic.sync) {\n process.nextTick(() => sonic.emit('ready'))\n } else {\n sonic.emit('ready')\n }\n\n if (sonic._reopening) {\n return\n }\n\n // start\n if (!sonic._writing && sonic._len > sonic.minLength && !sonic.destroyed) {\n actualWrite(sonic)\n }\n }\n\n const flags = sonic.append ? 'a' : 'w'\n const mode = sonic.mode\n\n if (sonic.sync) {\n try {\n if (sonic.mkdir) fs.mkdirSync(path.dirname(file), { recursive: true })\n const fd = fs.openSync(file, flags, mode)\n fileOpened(null, fd)\n } catch (err) {\n fileOpened(err)\n throw err\n }\n } else if (sonic.mkdir) {\n fs.mkdir(path.dirname(file), { recursive: true }, (err) => {\n if (err) return fileOpened(err)\n fs.open(file, flags, mode, fileOpened)\n })\n } else {\n fs.open(file, flags, mode, fileOpened)\n }\n}\n\nfunction SonicBoom (opts) {\n if (!(this instanceof SonicBoom)) {\n return new SonicBoom(opts)\n }\n\n let { fd, dest, minLength, maxLength, maxWrite, sync, append = true, mode, mkdir, retryEAGAIN, fsync } = opts || {}\n\n fd = fd || dest\n\n this._bufs = []\n this._len = 0\n this.fd = -1\n this._writing = false\n this._writingBuf = ''\n this._ending = false\n this._reopening = false\n this._asyncDrainScheduled = false\n this._hwm = Math.max(minLength || 0, 16387)\n this.file = null\n this.destroyed = false\n this.minLength = minLength || 0\n this.maxLength = maxLength || 0\n this.maxWrite = maxWrite || MAX_WRITE\n this.sync = sync || false\n this._fsync = fsync || false\n this.append = append || false\n this.mode = mode\n this.retryEAGAIN = retryEAGAIN || (() => true)\n this.mkdir = mkdir || false\n\n if (typeof fd === 'number') {\n this.fd = fd\n process.nextTick(() => this.emit('ready'))\n } else if (typeof fd === 'string') {\n openFile(fd, this)\n } else {\n throw new Error('SonicBoom supports only file descriptors and files')\n }\n if (this.minLength >= this.maxWrite) {\n throw new Error(`minLength should be smaller than maxWrite (${this.maxWrite})`)\n }\n\n this.release = (err, n) => {\n if (err) {\n if ((err.code === 'EAGAIN' || err.code === 'EBUSY') && this.retryEAGAIN(err, this._writingBuf.length, this._len - this._writingBuf.length)) {\n if (this.sync) {\n // This error code should not happen in sync mode, because it is\n // not using the underlining operating system asynchronous functions.\n // However it happens, and so we handle it.\n // Ref: https://github.com/pinojs/pino/issues/783\n try {\n sleep(BUSY_WRITE_TIMEOUT)\n this.release(undefined, 0)\n } catch (err) {\n this.release(err)\n }\n } else {\n // Let's give the destination some time to process the chunk.\n setTimeout(() => {\n fs.write(this.fd, this._writingBuf, 'utf8', this.release)\n }, BUSY_WRITE_TIMEOUT)\n }\n } else {\n this._writing = false\n\n this.emit('error', err)\n }\n return\n }\n\n this.emit('write', n)\n\n this._len -= n\n // In case of multi-byte characters, the length of the written buffer\n // may be different from the length of the string. Let's make sure\n // we do not have an accumulated string with a negative length.\n // This also mean that ._len is not precise, but it's not a problem as some\n // writes might be triggered earlier than ._minLength.\n if (this._len < 0) {\n this._len = 0\n }\n\n // TODO if we have a multi-byte character in the buffer, we need to\n // n might not be the same as this._writingBuf.length, so we might loose\n // characters here. The solution to this problem is to use a Buffer for _writingBuf.\n this._writingBuf = this._writingBuf.slice(n)\n\n if (this._writingBuf.length) {\n if (!this.sync) {\n fs.write(this.fd, this._writingBuf, 'utf8', this.release)\n return\n }\n\n try {\n do {\n const n = fs.writeSync(this.fd, this._writingBuf, 'utf8')\n this._len -= n\n this._writingBuf = this._writingBuf.slice(n)\n } while (this._writingBuf)\n } catch (err) {\n this.release(err)\n return\n }\n }\n\n if (this._fsync) {\n fs.fsyncSync(this.fd)\n }\n\n const len = this._len\n if (this._reopening) {\n this._writing = false\n this._reopening = false\n this.reopen()\n } else if (len > this.minLength) {\n actualWrite(this)\n } else if (this._ending) {\n if (len > 0) {\n actualWrite(this)\n } else {\n this._writing = false\n actualClose(this)\n }\n } else {\n this._writing = false\n if (this.sync) {\n if (!this._asyncDrainScheduled) {\n this._asyncDrainScheduled = true\n process.nextTick(emitDrain, this)\n }\n } else {\n this.emit('drain')\n }\n }\n }\n\n this.on('newListener', function (name) {\n if (name === 'drain') {\n this._asyncDrainScheduled = false\n }\n })\n}\n\nfunction emitDrain (sonic) {\n const hasListeners = sonic.listenerCount('drain') > 0\n if (!hasListeners) return\n sonic._asyncDrainScheduled = false\n sonic.emit('drain')\n}\n\ninherits(SonicBoom, EventEmitter)\n\nSonicBoom.prototype.write = function (data) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n const len = this._len + data.length\n const bufs = this._bufs\n\n if (this.maxLength && len > this.maxLength) {\n this.emit('drop', data)\n return this._len < this._hwm\n }\n\n if (\n bufs.length === 0 ||\n bufs[bufs.length - 1].length + data.length > this.maxWrite\n ) {\n bufs.push('' + data)\n } else {\n bufs[bufs.length - 1] += data\n }\n\n this._len = len\n\n if (!this._writing && this._len >= this.minLength) {\n actualWrite(this)\n }\n\n return this._len < this._hwm\n}\n\nSonicBoom.prototype.flush = function () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this._writing || this.minLength <= 0) {\n return\n }\n\n if (this._bufs.length === 0) {\n this._bufs.push('')\n }\n\n actualWrite(this)\n}\n\nSonicBoom.prototype.reopen = function (file) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this._opening) {\n this.once('ready', () => {\n this.reopen(file)\n })\n return\n }\n\n if (this._ending) {\n return\n }\n\n if (!this.file) {\n throw new Error('Unable to reopen a file descriptor, you must pass a file to SonicBoom')\n }\n\n this._reopening = true\n\n if (this._writing) {\n return\n }\n\n const fd = this.fd\n this.once('ready', () => {\n if (fd !== this.fd) {\n fs.close(fd, (err) => {\n if (err) {\n return this.emit('error', err)\n }\n })\n }\n })\n\n openFile(file || this.file, this)\n}\n\nSonicBoom.prototype.end = function () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this._opening) {\n this.once('ready', () => {\n this.end()\n })\n return\n }\n\n if (this._ending) {\n return\n }\n\n this._ending = true\n\n if (this._writing) {\n return\n }\n\n if (this._len > 0 && this.fd >= 0) {\n actualWrite(this)\n } else {\n actualClose(this)\n }\n}\n\nSonicBoom.prototype.flushSync = function () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this.fd < 0) {\n throw new Error('sonic boom is not ready yet')\n }\n\n if (!this._writing && this._writingBuf.length > 0) {\n this._bufs.unshift(this._writingBuf)\n this._writingBuf = ''\n }\n\n let buf = ''\n while (this._bufs.length || buf.length) {\n if (buf.length <= 0) {\n buf = this._bufs[0]\n }\n try {\n const n = fs.writeSync(this.fd, buf, 'utf8')\n buf = buf.slice(n)\n this._len = Math.max(this._len - n, 0)\n if (buf.length <= 0) {\n this._bufs.shift()\n }\n } catch (err) {\n const shouldRetry = err.code === 'EAGAIN' || err.code === 'EBUSY'\n if (shouldRetry && !this.retryEAGAIN(err, buf.length, this._len - buf.length)) {\n throw err\n }\n\n sleep(BUSY_WRITE_TIMEOUT)\n }\n }\n}\n\nSonicBoom.prototype.destroy = function () {\n if (this.destroyed) {\n return\n }\n actualClose(this)\n}\n\nfunction actualWrite (sonic) {\n const release = sonic.release\n sonic._writing = true\n sonic._writingBuf = sonic._writingBuf || sonic._bufs.shift() || ''\n\n if (sonic.sync) {\n try {\n const written = fs.writeSync(sonic.fd, sonic._writingBuf, 'utf8')\n release(null, written)\n } catch (err) {\n release(err)\n }\n } else {\n fs.write(sonic.fd, sonic._writingBuf, 'utf8', release)\n }\n}\n\nfunction actualClose (sonic) {\n if (sonic.fd === -1) {\n sonic.once('ready', actualClose.bind(null, sonic))\n return\n }\n\n sonic.destroyed = true\n sonic._bufs = []\n\n if (sonic.fd !== 1 && sonic.fd !== 2) {\n fs.close(sonic.fd, done)\n } else {\n setImmediate(done)\n }\n\n function done (err) {\n if (err) {\n sonic.emit('error', err)\n return\n }\n\n if (sonic._ending && !sonic._writing) {\n sonic.emit('finish')\n }\n sonic.emit('close')\n }\n}\n\n/**\n * These export configurations enable JS and TS developers\n * to consumer SonicBoom in whatever way best suits their needs.\n * Some examples of supported import syntax includes:\n * - `const SonicBoom = require('SonicBoom')`\n * - `const { SonicBoom } = require('SonicBoom')`\n * - `import * as SonicBoom from 'SonicBoom'`\n * - `import { SonicBoom } from 'SonicBoom'`\n * - `import SonicBoom from 'SonicBoom'`\n */\nSonicBoom.SonicBoom = SonicBoom\nSonicBoom.default = SonicBoom\nmodule.exports = SonicBoom\n", "'use strict'\n\nconst refs = {\n exit: [],\n beforeExit: []\n}\nconst functions = {\n exit: onExit,\n beforeExit: onBeforeExit\n}\nconst registry = new FinalizationRegistry(clear)\n\nfunction install (event) {\n if (refs[event].length > 0) {\n return\n }\n\n process.on(event, functions[event])\n}\n\nfunction uninstall (event) {\n if (refs[event].length > 0) {\n return\n }\n process.removeListener(event, functions[event])\n}\n\nfunction onExit () {\n callRefs('exit')\n}\n\nfunction onBeforeExit () {\n callRefs('beforeExit')\n}\n\nfunction callRefs (event) {\n for (const ref of refs[event]) {\n const obj = ref.deref()\n const fn = ref.fn\n\n // This should always happen, however GC is\n // undeterministic so it might not happen.\n /* istanbul ignore else */\n if (obj !== undefined) {\n fn(obj, event)\n }\n }\n}\n\nfunction clear (ref) {\n for (const event of ['exit', 'beforeExit']) {\n const index = refs[event].indexOf(ref)\n refs[event].splice(index, index + 1)\n uninstall(event)\n }\n}\n\nfunction _register (event, obj, fn) {\n if (obj === undefined) {\n throw new Error('the object can\\'t be undefined')\n }\n install(event)\n const ref = new WeakRef(obj)\n ref.fn = fn\n\n registry.register(obj, ref)\n refs[event].push(ref)\n}\n\nfunction register (obj, fn) {\n _register('exit', obj, fn)\n}\n\nfunction registerBeforeExit (obj, fn) {\n _register('beforeExit', obj, fn)\n}\n\nfunction unregister (obj) {\n registry.unregister(obj)\n for (const event of ['exit', 'beforeExit']) {\n refs[event] = refs[event].filter((ref) => {\n const _obj = ref.deref()\n return _obj && _obj !== obj\n })\n uninstall(event)\n }\n}\n\nmodule.exports = {\n register,\n registerBeforeExit,\n unregister\n}\n", "'use strict'\n\nconst MAX_TIMEOUT = 1000\n\nfunction wait (state, index, expected, timeout, done) {\n const max = Date.now() + timeout\n let current = Atomics.load(state, index)\n if (current === expected) {\n done(null, 'ok')\n return\n }\n let prior = current\n const check = (backoff) => {\n if (Date.now() > max) {\n done(null, 'timed-out')\n } else {\n setTimeout(() => {\n prior = current\n current = Atomics.load(state, index)\n if (current === prior) {\n check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2)\n } else {\n if (current === expected) done(null, 'ok')\n else done(null, 'not-equal')\n }\n }, backoff)\n }\n }\n check(1)\n}\n\n// let waitDiffCount = 0\nfunction waitDiff (state, index, expected, timeout, done) {\n // const id = waitDiffCount++\n // process._rawDebug(`>>> waitDiff ${id}`)\n const max = Date.now() + timeout\n let current = Atomics.load(state, index)\n if (current !== expected) {\n done(null, 'ok')\n return\n }\n const check = (backoff) => {\n // process._rawDebug(`${id} ${index} current ${current} expected ${expected}`)\n // process._rawDebug('' + backoff)\n if (Date.now() > max) {\n done(null, 'timed-out')\n } else {\n setTimeout(() => {\n current = Atomics.load(state, index)\n if (current !== expected) {\n done(null, 'ok')\n } else {\n check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2)\n }\n }, backoff)\n }\n }\n check(1)\n}\n\nmodule.exports = { wait, waitDiff }\n", "'use strict'\n\nconst WRITE_INDEX = 4\nconst READ_INDEX = 8\n\nmodule.exports = {\n WRITE_INDEX,\n READ_INDEX\n}\n", "'use strict'\n\nconst { version } = require('./package.json')\nconst { EventEmitter } = require('events')\nconst { Worker } = require('worker_threads')\nconst { join } = require('path')\nconst { pathToFileURL } = require('url')\nconst { wait } = require('./lib/wait')\nconst {\n WRITE_INDEX,\n READ_INDEX\n} = require('./lib/indexes')\nconst buffer = require('buffer')\nconst assert = require('assert')\n\nconst kImpl = Symbol('kImpl')\n\n// V8 limit for string size\nconst MAX_STRING = buffer.constants.MAX_STRING_LENGTH\n\nclass FakeWeakRef {\n constructor (value) {\n this._value = value\n }\n\n deref () {\n return this._value\n }\n}\n\nconst FinalizationRegistry = global.FinalizationRegistry || class FakeFinalizationRegistry {\n register () {}\n\n unregister () {}\n}\n\nconst WeakRef = global.WeakRef || FakeWeakRef\n\nconst registry = new FinalizationRegistry((worker) => {\n if (worker.exited) {\n return\n }\n worker.terminate()\n})\n\nfunction createWorker (stream, opts) {\n const { filename, workerData } = opts\n\n const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {}\n const toExecute = bundlerOverrides['thread-stream-worker'] || join(__dirname, 'lib', 'worker.js')\n\n const worker = new Worker(toExecute, {\n ...opts.workerOpts,\n trackUnmanagedFds: false,\n workerData: {\n filename: filename.indexOf('file://') === 0\n ? filename\n : pathToFileURL(filename).href,\n dataBuf: stream[kImpl].dataBuf,\n stateBuf: stream[kImpl].stateBuf,\n workerData: {\n $context: {\n threadStreamVersion: version\n },\n ...workerData\n }\n }\n })\n\n // We keep a strong reference for now,\n // we need to start writing first\n worker.stream = new FakeWeakRef(stream)\n\n worker.on('message', onWorkerMessage)\n worker.on('exit', onWorkerExit)\n registry.register(stream, worker)\n\n return worker\n}\n\nfunction drain (stream) {\n assert(!stream[kImpl].sync)\n if (stream[kImpl].needDrain) {\n stream[kImpl].needDrain = false\n stream.emit('drain')\n }\n}\n\nfunction nextFlush (stream) {\n const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n let leftover = stream[kImpl].data.length - writeIndex\n\n if (leftover > 0) {\n if (stream[kImpl].buf.length === 0) {\n stream[kImpl].flushing = false\n\n if (stream[kImpl].ending) {\n end(stream)\n } else if (stream[kImpl].needDrain) {\n process.nextTick(drain, stream)\n }\n\n return\n }\n\n let toWrite = stream[kImpl].buf.slice(0, leftover)\n let toWriteBytes = Buffer.byteLength(toWrite)\n if (toWriteBytes <= leftover) {\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n // process._rawDebug('writing ' + toWrite.length)\n write(stream, toWrite, nextFlush.bind(null, stream))\n } else {\n // multi-byte utf-8\n stream.flush(() => {\n // err is already handled in flush()\n if (stream.destroyed) {\n return\n }\n\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n\n // Find a toWrite length that fits the buffer\n // it must exists as the buffer is at least 4 bytes length\n // and the max utf-8 length for a char is 4 bytes.\n while (toWriteBytes > stream[kImpl].data.length) {\n leftover = leftover / 2\n toWrite = stream[kImpl].buf.slice(0, leftover)\n toWriteBytes = Buffer.byteLength(toWrite)\n }\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n write(stream, toWrite, nextFlush.bind(null, stream))\n })\n }\n } else if (leftover === 0) {\n if (writeIndex === 0 && stream[kImpl].buf.length === 0) {\n // we had a flushSync in the meanwhile\n return\n }\n stream.flush(() => {\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n nextFlush(stream)\n })\n } else {\n // This should never happen\n destroy(stream, new Error('overwritten'))\n }\n}\n\nfunction onWorkerMessage (msg) {\n const stream = this.stream.deref()\n if (stream === undefined) {\n this.exited = true\n // Terminate the worker.\n this.terminate()\n return\n }\n\n switch (msg.code) {\n case 'READY':\n // Replace the FakeWeakRef with a\n // proper one.\n this.stream = new WeakRef(stream)\n\n stream.flush(() => {\n stream[kImpl].ready = true\n stream.emit('ready')\n })\n break\n case 'ERROR':\n destroy(stream, msg.err)\n break\n case 'EVENT':\n if (Array.isArray(msg.args)) {\n stream.emit(msg.name, ...msg.args)\n } else {\n stream.emit(msg.name, msg.args)\n }\n break\n case 'WARNING':\n process.emitWarning(msg.err)\n break\n default:\n destroy(stream, new Error('this should not happen: ' + msg.code))\n }\n}\n\nfunction onWorkerExit (code) {\n const stream = this.stream.deref()\n if (stream === undefined) {\n // Nothing to do, the worker already exit\n return\n }\n registry.unregister(stream)\n stream.worker.exited = true\n stream.worker.off('exit', onWorkerExit)\n destroy(stream, code !== 0 ? new Error('the worker thread exited') : null)\n}\n\nclass ThreadStream extends EventEmitter {\n constructor (opts = {}) {\n super()\n\n if (opts.bufferSize < 4) {\n throw new Error('bufferSize must at least fit a 4-byte utf-8 char')\n }\n\n this[kImpl] = {}\n this[kImpl].stateBuf = new SharedArrayBuffer(128)\n this[kImpl].state = new Int32Array(this[kImpl].stateBuf)\n this[kImpl].dataBuf = new SharedArrayBuffer(opts.bufferSize || 4 * 1024 * 1024)\n this[kImpl].data = Buffer.from(this[kImpl].dataBuf)\n this[kImpl].sync = opts.sync || false\n this[kImpl].ending = false\n this[kImpl].ended = false\n this[kImpl].needDrain = false\n this[kImpl].destroyed = false\n this[kImpl].flushing = false\n this[kImpl].ready = false\n this[kImpl].finished = false\n this[kImpl].errored = null\n this[kImpl].closed = false\n this[kImpl].buf = ''\n\n // TODO (fix): Make private?\n this.worker = createWorker(this, opts) // TODO (fix): make private\n }\n\n write (data) {\n if (this[kImpl].destroyed) {\n error(this, new Error('the worker has exited'))\n return false\n }\n\n if (this[kImpl].ending) {\n error(this, new Error('the worker is ending'))\n return false\n }\n\n if (this[kImpl].flushing && this[kImpl].buf.length + data.length >= MAX_STRING) {\n try {\n writeSync(this)\n this[kImpl].flushing = true\n } catch (err) {\n destroy(this, err)\n return false\n }\n }\n\n this[kImpl].buf += data\n\n if (this[kImpl].sync) {\n try {\n writeSync(this)\n return true\n } catch (err) {\n destroy(this, err)\n return false\n }\n }\n\n if (!this[kImpl].flushing) {\n this[kImpl].flushing = true\n setImmediate(nextFlush, this)\n }\n\n this[kImpl].needDrain = this[kImpl].data.length - this[kImpl].buf.length - Atomics.load(this[kImpl].state, WRITE_INDEX) <= 0\n return !this[kImpl].needDrain\n }\n\n end () {\n if (this[kImpl].destroyed) {\n return\n }\n\n this[kImpl].ending = true\n end(this)\n }\n\n flush (cb) {\n if (this[kImpl].destroyed) {\n if (typeof cb === 'function') {\n process.nextTick(cb, new Error('the worker has exited'))\n }\n return\n }\n\n // TODO write all .buf\n const writeIndex = Atomics.load(this[kImpl].state, WRITE_INDEX)\n // process._rawDebug(`(flush) readIndex (${Atomics.load(this.state, READ_INDEX)}) writeIndex (${Atomics.load(this.state, WRITE_INDEX)})`)\n wait(this[kImpl].state, READ_INDEX, writeIndex, Infinity, (err, res) => {\n if (err) {\n destroy(this, err)\n process.nextTick(cb, err)\n return\n }\n if (res === 'not-equal') {\n // TODO handle deadlock\n this.flush(cb)\n return\n }\n process.nextTick(cb)\n })\n }\n\n flushSync () {\n if (this[kImpl].destroyed) {\n return\n }\n\n writeSync(this)\n flushSync(this)\n }\n\n unref () {\n this.worker.unref()\n }\n\n ref () {\n this.worker.ref()\n }\n\n get ready () {\n return this[kImpl].ready\n }\n\n get destroyed () {\n return this[kImpl].destroyed\n }\n\n get closed () {\n return this[kImpl].closed\n }\n\n get writable () {\n return !this[kImpl].destroyed && !this[kImpl].ending\n }\n\n get writableEnded () {\n return this[kImpl].ending\n }\n\n get writableFinished () {\n return this[kImpl].finished\n }\n\n get writableNeedDrain () {\n return this[kImpl].needDrain\n }\n\n get writableObjectMode () {\n return false\n }\n\n get writableErrored () {\n return this[kImpl].errored\n }\n}\n\nfunction error (stream, err) {\n setImmediate(() => {\n stream.emit('error', err)\n })\n}\n\nfunction destroy (stream, err) {\n if (stream[kImpl].destroyed) {\n return\n }\n stream[kImpl].destroyed = true\n\n if (err) {\n stream[kImpl].errored = err\n error(stream, err)\n }\n\n if (!stream.worker.exited) {\n stream.worker.terminate()\n .catch(() => {})\n .then(() => {\n stream[kImpl].closed = true\n stream.emit('close')\n })\n } else {\n setImmediate(() => {\n stream[kImpl].closed = true\n stream.emit('close')\n })\n }\n}\n\nfunction write (stream, data, cb) {\n // data is smaller than the shared buffer length\n const current = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n const length = Buffer.byteLength(data)\n stream[kImpl].data.write(data, current)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, current + length)\n Atomics.notify(stream[kImpl].state, WRITE_INDEX)\n cb()\n return true\n}\n\nfunction end (stream) {\n if (stream[kImpl].ended || !stream[kImpl].ending || stream[kImpl].flushing) {\n return\n }\n stream[kImpl].ended = true\n\n try {\n stream.flushSync()\n\n let readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n // process._rawDebug('writing index')\n Atomics.store(stream[kImpl].state, WRITE_INDEX, -1)\n // process._rawDebug(`(end) readIndex (${Atomics.load(stream.state, READ_INDEX)}) writeIndex (${Atomics.load(stream.state, WRITE_INDEX)})`)\n Atomics.notify(stream[kImpl].state, WRITE_INDEX)\n\n // Wait for the process to complete\n let spins = 0\n while (readIndex !== -1) {\n // process._rawDebug(`read = ${read}`)\n Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000)\n readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n if (readIndex === -2) {\n destroy(stream, new Error('end() failed'))\n return\n }\n\n if (++spins === 10) {\n destroy(stream, new Error('end() took too long (10s)'))\n return\n }\n }\n\n process.nextTick(() => {\n stream[kImpl].finished = true\n stream.emit('finish')\n })\n } catch (err) {\n destroy(stream, err)\n }\n // process._rawDebug('end finished...')\n}\n\nfunction writeSync (stream) {\n const cb = () => {\n if (stream[kImpl].ending) {\n end(stream)\n } else if (stream[kImpl].needDrain) {\n process.nextTick(drain, stream)\n }\n }\n stream[kImpl].flushing = false\n\n while (stream[kImpl].buf.length !== 0) {\n const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n let leftover = stream[kImpl].data.length - writeIndex\n if (leftover === 0) {\n flushSync(stream)\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n continue\n } else if (leftover < 0) {\n // stream should never happen\n throw new Error('overwritten')\n }\n\n let toWrite = stream[kImpl].buf.slice(0, leftover)\n let toWriteBytes = Buffer.byteLength(toWrite)\n if (toWriteBytes <= leftover) {\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n // process._rawDebug('writing ' + toWrite.length)\n write(stream, toWrite, cb)\n } else {\n // multi-byte utf-8\n flushSync(stream)\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n\n // Find a toWrite length that fits the buffer\n // it must exists as the buffer is at least 4 bytes length\n // and the max utf-8 length for a char is 4 bytes.\n while (toWriteBytes > stream[kImpl].buf.length) {\n leftover = leftover / 2\n toWrite = stream[kImpl].buf.slice(0, leftover)\n toWriteBytes = Buffer.byteLength(toWrite)\n }\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n write(stream, toWrite, cb)\n }\n }\n}\n\nfunction flushSync (stream) {\n if (stream[kImpl].flushing) {\n throw new Error('unable to flush while flushing')\n }\n\n // process._rawDebug('flushSync started')\n\n const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n\n let spins = 0\n\n // TODO handle deadlock\n while (true) {\n const readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n if (readIndex === -2) {\n throw Error('_flushSync failed')\n }\n\n // process._rawDebug(`(flushSync) readIndex (${readIndex}) writeIndex (${writeIndex})`)\n if (readIndex !== writeIndex) {\n // TODO stream timeouts for some reason.\n Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000)\n } else {\n break\n }\n\n if (++spins === 10) {\n throw new Error('_flushSync took too long (10s)')\n }\n }\n // process._rawDebug('flushSync finished')\n}\n\nmodule.exports = ThreadStream\n", "'use strict'\n\nconst { createRequire } = require('module')\nconst getCallers = require('./caller')\nconst { join, isAbsolute, sep } = require('path')\nconst sleep = require('atomic-sleep')\nconst onExit = require('on-exit-leak-free')\nconst ThreadStream = require('thread-stream')\n\nfunction setupOnExit (stream) {\n // This is leak free, it does not leave event handlers\n onExit.register(stream, autoEnd)\n onExit.registerBeforeExit(stream, flush)\n\n stream.on('close', function () {\n onExit.unregister(stream)\n })\n}\n\nfunction buildStream (filename, workerData, workerOpts) {\n const stream = new ThreadStream({\n filename,\n workerData,\n workerOpts\n })\n\n stream.on('ready', onReady)\n stream.on('close', function () {\n process.removeListener('exit', onExit)\n })\n\n process.on('exit', onExit)\n\n function onReady () {\n process.removeListener('exit', onExit)\n stream.unref()\n\n if (workerOpts.autoEnd !== false) {\n setupOnExit(stream)\n }\n }\n\n function onExit () {\n /* istanbul ignore next */\n if (stream.closed) {\n return\n }\n stream.flushSync()\n // Apparently there is a very sporadic race condition\n // that in certain OS would prevent the messages to be flushed\n // because the thread might not have been created still.\n // Unfortunately we need to sleep(100) in this case.\n sleep(100)\n stream.end()\n }\n\n return stream\n}\n\nfunction autoEnd (stream) {\n stream.ref()\n stream.flushSync()\n stream.end()\n stream.once('close', function () {\n stream.unref()\n })\n}\n\nfunction flush (stream) {\n stream.flushSync()\n}\n\nfunction transport (fullOptions) {\n const { pipeline, targets, levels, dedupe, options = {}, worker = {}, caller = getCallers() } = fullOptions\n\n // Backwards compatibility\n const callers = typeof caller === 'string' ? [caller] : caller\n\n // This will be eventually modified by bundlers\n const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {}\n\n let target = fullOptions.target\n\n if (target && targets) {\n throw new Error('only one of target or targets can be specified')\n }\n\n if (targets) {\n target = bundlerOverrides['pino-worker'] || join(__dirname, 'worker.js')\n options.targets = targets.map((dest) => {\n return {\n ...dest,\n target: fixTarget(dest.target)\n }\n })\n } else if (pipeline) {\n target = bundlerOverrides['pino-pipeline-worker'] || join(__dirname, 'worker-pipeline.js')\n options.targets = pipeline.map((dest) => {\n return {\n ...dest,\n target: fixTarget(dest.target)\n }\n })\n }\n\n if (levels) {\n options.levels = levels\n }\n\n if (dedupe) {\n options.dedupe = dedupe\n }\n\n return buildStream(fixTarget(target), options, worker)\n\n function fixTarget (origin) {\n origin = bundlerOverrides[origin] || origin\n\n if (isAbsolute(origin) || origin.indexOf('file://') === 0) {\n return origin\n }\n\n if (origin === 'pino/file') {\n return join(__dirname, '..', 'file.js')\n }\n\n let fixTarget\n\n for (const filePath of callers) {\n try {\n const context = filePath === 'node:repl'\n ? process.cwd() + sep\n : filePath\n\n fixTarget = createRequire(context).resolve(origin)\n break\n } catch (err) {\n // Silent catch\n continue\n }\n }\n\n if (!fixTarget) {\n throw new Error(`unable to determine transport target for \"${origin}\"`)\n }\n\n return fixTarget\n }\n}\n\nmodule.exports = transport\n", "'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst format = require('quick-format-unescaped')\nconst { mapHttpRequest, mapHttpResponse } = require('pino-std-serializers')\nconst SonicBoom = require('sonic-boom')\nconst onExit = require('on-exit-leak-free')\nconst {\n lsCacheSym,\n chindingsSym,\n writeSym,\n serializersSym,\n formatOptsSym,\n endSym,\n stringifiersSym,\n stringifySym,\n stringifySafeSym,\n wildcardFirstSym,\n nestedKeySym,\n formattersSym,\n messageKeySym,\n errorKeySym,\n nestedKeyStrSym,\n msgPrefixSym\n} = require('./symbols')\nconst { isMainThread } = require('worker_threads')\nconst transport = require('./transport')\n\nfunction noop () {\n}\n\nfunction genLog (level, hook) {\n if (!hook) return LOG\n\n return function hookWrappedLog (...args) {\n hook.call(this, args, LOG, level)\n }\n\n function LOG (o, ...n) {\n if (typeof o === 'object') {\n let msg = o\n if (o !== null) {\n if (o.method && o.headers && o.socket) {\n o = mapHttpRequest(o)\n } else if (typeof o.setHeader === 'function') {\n o = mapHttpResponse(o)\n }\n }\n let formatParams\n if (msg === null && n.length === 0) {\n formatParams = [null]\n } else {\n msg = n.shift()\n formatParams = n\n }\n // We do not use a coercive check for `msg` as it is\n // measurably slower than the explicit checks.\n if (typeof this[msgPrefixSym] === 'string' && msg !== undefined && msg !== null) {\n msg = this[msgPrefixSym] + msg\n }\n this[writeSym](o, format(msg, formatParams, this[formatOptsSym]), level)\n } else {\n let msg = o === undefined ? n.shift() : o\n\n // We do not use a coercive check for `msg` as it is\n // measurably slower than the explicit checks.\n if (typeof this[msgPrefixSym] === 'string' && msg !== undefined && msg !== null) {\n msg = this[msgPrefixSym] + msg\n }\n this[writeSym](null, format(msg, n, this[formatOptsSym]), level)\n }\n }\n}\n\n// magically escape strings for json\n// relying on their charCodeAt\n// everything below 32 needs JSON.stringify()\n// 34 and 92 happens all the time, so we\n// have a fast case for them\nfunction asString (str) {\n let result = ''\n let last = 0\n let found = false\n let point = 255\n const l = str.length\n if (l > 100) {\n return JSON.stringify(str)\n }\n for (var i = 0; i < l && point >= 32; i++) {\n point = str.charCodeAt(i)\n if (point === 34 || point === 92) {\n result += str.slice(last, i) + '\\\\'\n last = i\n found = true\n }\n }\n if (!found) {\n result = str\n } else {\n result += str.slice(last)\n }\n return point < 32 ? JSON.stringify(str) : '\"' + result + '\"'\n}\n\nfunction asJson (obj, msg, num, time) {\n const stringify = this[stringifySym]\n const stringifySafe = this[stringifySafeSym]\n const stringifiers = this[stringifiersSym]\n const end = this[endSym]\n const chindings = this[chindingsSym]\n const serializers = this[serializersSym]\n const formatters = this[formattersSym]\n const messageKey = this[messageKeySym]\n const errorKey = this[errorKeySym]\n let data = this[lsCacheSym][num] + time\n\n // we need the child bindings added to the output first so instance logged\n // objects can take precedence when JSON.parse-ing the resulting log line\n data = data + chindings\n\n let value\n if (formatters.log) {\n obj = formatters.log(obj)\n }\n const wildcardStringifier = stringifiers[wildcardFirstSym]\n let propStr = ''\n for (const key in obj) {\n value = obj[key]\n if (Object.prototype.hasOwnProperty.call(obj, key) && value !== undefined) {\n if (serializers[key]) {\n value = serializers[key](value)\n } else if (key === errorKey && serializers.err) {\n value = serializers.err(value)\n }\n\n const stringifier = stringifiers[key] || wildcardStringifier\n\n switch (typeof value) {\n case 'undefined':\n case 'function':\n continue\n case 'number':\n /* eslint no-fallthrough: \"off\" */\n if (Number.isFinite(value) === false) {\n value = null\n }\n // this case explicitly falls through to the next one\n case 'boolean':\n if (stringifier) value = stringifier(value)\n break\n case 'string':\n value = (stringifier || asString)(value)\n break\n default:\n value = (stringifier || stringify)(value, stringifySafe)\n }\n if (value === undefined) continue\n propStr += ',\"' + key + '\":' + value\n }\n }\n\n let msgStr = ''\n if (msg !== undefined) {\n value = serializers[messageKey] ? serializers[messageKey](msg) : msg\n const stringifier = stringifiers[messageKey] || wildcardStringifier\n\n switch (typeof value) {\n case 'function':\n break\n case 'number':\n /* eslint no-fallthrough: \"off\" */\n if (Number.isFinite(value) === false) {\n value = null\n }\n // this case explicitly falls through to the next one\n case 'boolean':\n if (stringifier) value = stringifier(value)\n msgStr = ',\"' + messageKey + '\":' + value\n break\n case 'string':\n value = (stringifier || asString)(value)\n msgStr = ',\"' + messageKey + '\":' + value\n break\n default:\n value = (stringifier || stringify)(value, stringifySafe)\n msgStr = ',\"' + messageKey + '\":' + value\n }\n }\n\n if (this[nestedKeySym] && propStr) {\n // place all the obj properties under the specified key\n // the nested key is already formatted from the constructor\n return data + this[nestedKeyStrSym] + propStr.slice(1) + '}' + msgStr + end\n } else {\n return data + propStr + msgStr + end\n }\n}\n\nfunction asChindings (instance, bindings) {\n let value\n let data = instance[chindingsSym]\n const stringify = instance[stringifySym]\n const stringifySafe = instance[stringifySafeSym]\n const stringifiers = instance[stringifiersSym]\n const wildcardStringifier = stringifiers[wildcardFirstSym]\n const serializers = instance[serializersSym]\n const formatter = instance[formattersSym].bindings\n bindings = formatter(bindings)\n\n for (const key in bindings) {\n value = bindings[key]\n const valid = key !== 'level' &&\n key !== 'serializers' &&\n key !== 'formatters' &&\n key !== 'customLevels' &&\n bindings.hasOwnProperty(key) &&\n value !== undefined\n if (valid === true) {\n value = serializers[key] ? serializers[key](value) : value\n value = (stringifiers[key] || wildcardStringifier || stringify)(value, stringifySafe)\n if (value === undefined) continue\n data += ',\"' + key + '\":' + value\n }\n }\n return data\n}\n\nfunction hasBeenTampered (stream) {\n return stream.write !== stream.constructor.prototype.write\n}\n\nfunction buildSafeSonicBoom (opts) {\n const stream = new SonicBoom(opts)\n stream.on('error', filterBrokenPipe)\n // if we are sync: false, we must flush on exit\n if (!opts.sync && isMainThread) {\n onExit.register(stream, autoEnd)\n\n stream.on('close', function () {\n onExit.unregister(stream)\n })\n }\n return stream\n\n function filterBrokenPipe (err) {\n // Impossible to replicate across all operating systems\n /* istanbul ignore next */\n if (err.code === 'EPIPE') {\n // If we get EPIPE, we should stop logging here\n // however we have no control to the consumer of\n // SonicBoom, so we just overwrite the write method\n stream.write = noop\n stream.end = noop\n stream.flushSync = noop\n stream.destroy = noop\n return\n }\n stream.removeListener('error', filterBrokenPipe)\n stream.emit('error', err)\n }\n}\n\nfunction autoEnd (stream, eventName) {\n // This check is needed only on some platforms\n /* istanbul ignore next */\n if (stream.destroyed) {\n return\n }\n\n if (eventName === 'beforeExit') {\n // We still have an event loop, let's use it\n stream.flush()\n stream.on('drain', function () {\n stream.end()\n })\n } else {\n // For some reason istanbul is not detecting this, but it's there\n /* istanbul ignore next */\n // We do not have an event loop, so flush synchronously\n stream.flushSync()\n }\n}\n\nfunction createArgsNormalizer (defaultOptions) {\n return function normalizeArgs (instance, caller, opts = {}, stream) {\n // support stream as a string\n if (typeof opts === 'string') {\n stream = buildSafeSonicBoom({ dest: opts })\n opts = {}\n } else if (typeof stream === 'string') {\n if (opts && opts.transport) {\n throw Error('only one of option.transport or stream can be specified')\n }\n stream = buildSafeSonicBoom({ dest: stream })\n } else if (opts instanceof SonicBoom || opts.writable || opts._writableState) {\n stream = opts\n opts = {}\n } else if (opts.transport) {\n if (opts.transport instanceof SonicBoom || opts.transport.writable || opts.transport._writableState) {\n throw Error('option.transport do not allow stream, please pass to option directly. e.g. pino(transport)')\n }\n if (opts.transport.targets && opts.transport.targets.length && opts.formatters && typeof opts.formatters.level === 'function') {\n throw Error('option.transport.targets do not allow custom level formatters')\n }\n\n let customLevels\n if (opts.customLevels) {\n customLevels = opts.useOnlyCustomLevels ? opts.customLevels : Object.assign({}, opts.levels, opts.customLevels)\n }\n stream = transport({ caller, ...opts.transport, levels: customLevels })\n }\n opts = Object.assign({}, defaultOptions, opts)\n opts.serializers = Object.assign({}, defaultOptions.serializers, opts.serializers)\n opts.formatters = Object.assign({}, defaultOptions.formatters, opts.formatters)\n\n if (opts.prettyPrint) {\n throw new Error('prettyPrint option is no longer supported, see the pino-pretty package (https://github.com/pinojs/pino-pretty)')\n }\n\n const { enabled, onChild } = opts\n if (enabled === false) opts.level = 'silent'\n if (!onChild) opts.onChild = noop\n if (!stream) {\n if (!hasBeenTampered(process.stdout)) {\n // If process.stdout.fd is undefined, it means that we are running\n // in a worker thread. Let's assume we are logging to file descriptor 1.\n stream = buildSafeSonicBoom({ fd: process.stdout.fd || 1 })\n } else {\n stream = process.stdout\n }\n }\n return { opts, stream }\n }\n}\n\nfunction stringify (obj, stringifySafeFn) {\n try {\n return JSON.stringify(obj)\n } catch (_) {\n try {\n const stringify = stringifySafeFn || this[stringifySafeSym]\n return stringify(obj)\n } catch (_) {\n return '\"[unable to serialize, circular reference is too complex to analyze]\"'\n }\n }\n}\n\nfunction buildFormatters (level, bindings, log) {\n return {\n level,\n bindings,\n log\n }\n}\n\n/**\n * Convert a string integer file descriptor to a proper native integer\n * file descriptor.\n *\n * @param {string} destination The file descriptor string to attempt to convert.\n *\n * @returns {Number}\n */\nfunction normalizeDestFileDescriptor (destination) {\n const fd = Number(destination)\n if (typeof destination === 'string' && Number.isFinite(fd)) {\n return fd\n }\n // destination could be undefined if we are in a worker\n if (destination === undefined) {\n // This is stdout in UNIX systems\n return 1\n }\n return destination\n}\n\nmodule.exports = {\n noop,\n buildSafeSonicBoom,\n asChindings,\n asJson,\n genLog,\n createArgsNormalizer,\n stringify,\n buildFormatters,\n normalizeDestFileDescriptor\n}\n", "'use strict'\n/* eslint no-prototype-builtins: 0 */\nconst {\n lsCacheSym,\n levelValSym,\n useOnlyCustomLevelsSym,\n streamSym,\n formattersSym,\n hooksSym\n} = require('./symbols')\nconst { noop, genLog } = require('./tools')\n\nconst levels = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60\n}\nconst levelMethods = {\n fatal: (hook) => {\n const logFatal = genLog(levels.fatal, hook)\n return function (...args) {\n const stream = this[streamSym]\n logFatal.call(this, ...args)\n if (typeof stream.flushSync === 'function') {\n try {\n stream.flushSync()\n } catch (e) {\n // https://github.com/pinojs/pino/pull/740#discussion_r346788313\n }\n }\n }\n },\n error: (hook) => genLog(levels.error, hook),\n warn: (hook) => genLog(levels.warn, hook),\n info: (hook) => genLog(levels.info, hook),\n debug: (hook) => genLog(levels.debug, hook),\n trace: (hook) => genLog(levels.trace, hook)\n}\n\nconst nums = Object.keys(levels).reduce((o, k) => {\n o[levels[k]] = k\n return o\n}, {})\n\nconst initialLsCache = Object.keys(nums).reduce((o, k) => {\n o[k] = '{\"level\":' + Number(k)\n return o\n}, {})\n\nfunction genLsCache (instance) {\n const formatter = instance[formattersSym].level\n const { labels } = instance.levels\n const cache = {}\n for (const label in labels) {\n const level = formatter(labels[label], Number(label))\n cache[label] = JSON.stringify(level).slice(0, -1)\n }\n instance[lsCacheSym] = cache\n return instance\n}\n\nfunction isStandardLevel (level, useOnlyCustomLevels) {\n if (useOnlyCustomLevels) {\n return false\n }\n\n switch (level) {\n case 'fatal':\n case 'error':\n case 'warn':\n case 'info':\n case 'debug':\n case 'trace':\n return true\n default:\n return false\n }\n}\n\nfunction setLevel (level) {\n const { labels, values } = this.levels\n if (typeof level === 'number') {\n if (labels[level] === undefined) throw Error('unknown level value' + level)\n level = labels[level]\n }\n if (values[level] === undefined) throw Error('unknown level ' + level)\n const preLevelVal = this[levelValSym]\n const levelVal = this[levelValSym] = values[level]\n const useOnlyCustomLevelsVal = this[useOnlyCustomLevelsSym]\n const hook = this[hooksSym].logMethod\n\n for (const key in values) {\n if (levelVal > values[key]) {\n this[key] = noop\n continue\n }\n this[key] = isStandardLevel(key, useOnlyCustomLevelsVal) ? levelMethods[key](hook) : genLog(values[key], hook)\n }\n\n this.emit(\n 'level-change',\n level,\n levelVal,\n labels[preLevelVal],\n preLevelVal,\n this\n )\n}\n\nfunction getLevel (level) {\n const { levels, levelVal } = this\n // protection against potential loss of Pino scope from serializers (edge case with circular refs - https://github.com/pinojs/pino/issues/833)\n return (levels && levels.labels) ? levels.labels[levelVal] : ''\n}\n\nfunction isLevelEnabled (logLevel) {\n const { values } = this.levels\n const logLevelVal = values[logLevel]\n return logLevelVal !== undefined && (logLevelVal >= this[levelValSym])\n}\n\nfunction mappings (customLevels = null, useOnlyCustomLevels = false) {\n const customNums = customLevels\n /* eslint-disable */\n ? Object.keys(customLevels).reduce((o, k) => {\n o[customLevels[k]] = k\n return o\n }, {})\n : null\n /* eslint-enable */\n\n const labels = Object.assign(\n Object.create(Object.prototype, { Infinity: { value: 'silent' } }),\n useOnlyCustomLevels ? null : nums,\n customNums\n )\n const values = Object.assign(\n Object.create(Object.prototype, { silent: { value: Infinity } }),\n useOnlyCustomLevels ? null : levels,\n customLevels\n )\n return { labels, values }\n}\n\nfunction assertDefaultLevelFound (defaultLevel, customLevels, useOnlyCustomLevels) {\n if (typeof defaultLevel === 'number') {\n const values = [].concat(\n Object.keys(customLevels || {}).map(key => customLevels[key]),\n useOnlyCustomLevels ? [] : Object.keys(nums).map(level => +level),\n Infinity\n )\n if (!values.includes(defaultLevel)) {\n throw Error(`default level:${defaultLevel} must be included in custom levels`)\n }\n return\n }\n\n const labels = Object.assign(\n Object.create(Object.prototype, { silent: { value: Infinity } }),\n useOnlyCustomLevels ? null : levels,\n customLevels\n )\n if (!(defaultLevel in labels)) {\n throw Error(`default level:${defaultLevel} must be included in custom levels`)\n }\n}\n\nfunction assertNoLevelCollisions (levels, customLevels) {\n const { labels, values } = levels\n for (const k in customLevels) {\n if (k in values) {\n throw Error('levels cannot be overridden')\n }\n if (customLevels[k] in labels) {\n throw Error('pre-existing level values cannot be used for new levels')\n }\n }\n}\n\nmodule.exports = {\n initialLsCache,\n genLsCache,\n levelMethods,\n getLevel,\n setLevel,\n isLevelEnabled,\n mappings,\n levels,\n assertNoLevelCollisions,\n assertDefaultLevelFound\n}\n", "'use strict'\n\nmodule.exports = { version: '8.15.0' }\n", "'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst { EventEmitter } = require('events')\nconst {\n lsCacheSym,\n levelValSym,\n setLevelSym,\n getLevelSym,\n chindingsSym,\n parsedChindingsSym,\n mixinSym,\n asJsonSym,\n writeSym,\n mixinMergeStrategySym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n serializersSym,\n formattersSym,\n errorKeySym,\n messageKeySym,\n useOnlyCustomLevelsSym,\n needsMetadataGsym,\n redactFmtSym,\n stringifySym,\n formatOptsSym,\n stringifiersSym,\n msgPrefixSym\n} = require('./symbols')\nconst {\n getLevel,\n setLevel,\n isLevelEnabled,\n mappings,\n initialLsCache,\n genLsCache,\n assertNoLevelCollisions\n} = require('./levels')\nconst {\n asChindings,\n asJson,\n buildFormatters,\n stringify\n} = require('./tools')\nconst {\n version\n} = require('./meta')\nconst redaction = require('./redaction')\n\n// note: use of class is satirical\n// https://github.com/pinojs/pino/pull/433#pullrequestreview-127703127\nconst constructor = class Pino {}\nconst prototype = {\n constructor,\n child,\n bindings,\n setBindings,\n flush,\n isLevelEnabled,\n version,\n get level () { return this[getLevelSym]() },\n set level (lvl) { this[setLevelSym](lvl) },\n get levelVal () { return this[levelValSym] },\n set levelVal (n) { throw Error('levelVal is read-only') },\n [lsCacheSym]: initialLsCache,\n [writeSym]: write,\n [asJsonSym]: asJson,\n [getLevelSym]: getLevel,\n [setLevelSym]: setLevel\n}\n\nObject.setPrototypeOf(prototype, EventEmitter.prototype)\n\n// exporting and consuming the prototype object using factory pattern fixes scoping issues with getters when serializing\nmodule.exports = function () {\n return Object.create(prototype)\n}\n\nconst resetChildingsFormatter = bindings => bindings\nfunction child (bindings, options) {\n if (!bindings) {\n throw Error('missing bindings for child Pino')\n }\n options = options || {} // default options to empty object\n const serializers = this[serializersSym]\n const formatters = this[formattersSym]\n const instance = Object.create(this)\n\n if (options.hasOwnProperty('serializers') === true) {\n instance[serializersSym] = Object.create(null)\n\n for (const k in serializers) {\n instance[serializersSym][k] = serializers[k]\n }\n const parentSymbols = Object.getOwnPropertySymbols(serializers)\n /* eslint no-var: off */\n for (var i = 0; i < parentSymbols.length; i++) {\n const ks = parentSymbols[i]\n instance[serializersSym][ks] = serializers[ks]\n }\n\n for (const bk in options.serializers) {\n instance[serializersSym][bk] = options.serializers[bk]\n }\n const bindingsSymbols = Object.getOwnPropertySymbols(options.serializers)\n for (var bi = 0; bi < bindingsSymbols.length; bi++) {\n const bks = bindingsSymbols[bi]\n instance[serializersSym][bks] = options.serializers[bks]\n }\n } else instance[serializersSym] = serializers\n if (options.hasOwnProperty('formatters')) {\n const { level, bindings: chindings, log } = options.formatters\n instance[formattersSym] = buildFormatters(\n level || formatters.level,\n chindings || resetChildingsFormatter,\n log || formatters.log\n )\n } else {\n instance[formattersSym] = buildFormatters(\n formatters.level,\n resetChildingsFormatter,\n formatters.log\n )\n }\n if (options.hasOwnProperty('customLevels') === true) {\n assertNoLevelCollisions(this.levels, options.customLevels)\n instance.levels = mappings(options.customLevels, instance[useOnlyCustomLevelsSym])\n genLsCache(instance)\n }\n\n // redact must place before asChindings and only replace if exist\n if ((typeof options.redact === 'object' && options.redact !== null) || Array.isArray(options.redact)) {\n instance.redact = options.redact // replace redact directly\n const stringifiers = redaction(instance.redact, stringify)\n const formatOpts = { stringify: stringifiers[redactFmtSym] }\n instance[stringifySym] = stringify\n instance[stringifiersSym] = stringifiers\n instance[formatOptsSym] = formatOpts\n }\n\n if (typeof options.msgPrefix === 'string') {\n instance[msgPrefixSym] = (this[msgPrefixSym] || '') + options.msgPrefix\n }\n\n instance[chindingsSym] = asChindings(instance, bindings)\n const childLevel = options.level || this.level\n instance[setLevelSym](childLevel)\n this.onChild(instance)\n return instance\n}\n\nfunction bindings () {\n const chindings = this[chindingsSym]\n const chindingsJson = `{${chindings.substr(1)}}` // at least contains ,\"pid\":7068,\"hostname\":\"myMac\"\n const bindingsFromJson = JSON.parse(chindingsJson)\n delete bindingsFromJson.pid\n delete bindingsFromJson.hostname\n return bindingsFromJson\n}\n\nfunction setBindings (newBindings) {\n const chindings = asChindings(this, newBindings)\n this[chindingsSym] = chindings\n delete this[parsedChindingsSym]\n}\n\n/**\n * Default strategy for creating `mergeObject` from arguments and the result from `mixin()`.\n * Fields from `mergeObject` have higher priority in this strategy.\n *\n * @param {Object} mergeObject The object a user has supplied to the logging function.\n * @param {Object} mixinObject The result of the `mixin` method.\n * @return {Object}\n */\nfunction defaultMixinMergeStrategy (mergeObject, mixinObject) {\n return Object.assign(mixinObject, mergeObject)\n}\n\nfunction write (_obj, msg, num) {\n const t = this[timeSym]()\n const mixin = this[mixinSym]\n const errorKey = this[errorKeySym]\n const messageKey = this[messageKeySym]\n const mixinMergeStrategy = this[mixinMergeStrategySym] || defaultMixinMergeStrategy\n let obj\n\n if (_obj === undefined || _obj === null) {\n obj = {}\n } else if (_obj instanceof Error) {\n obj = { [errorKey]: _obj }\n if (msg === undefined) {\n msg = _obj.message\n }\n } else {\n obj = _obj\n if (msg === undefined && _obj[messageKey] === undefined && _obj[errorKey]) {\n msg = _obj[errorKey].message\n }\n }\n\n if (mixin) {\n obj = mixinMergeStrategy(obj, mixin(obj, num, this))\n }\n\n const s = this[asJsonSym](obj, msg, num, t)\n\n const stream = this[streamSym]\n if (stream[needsMetadataGsym] === true) {\n stream.lastLevel = num\n stream.lastObj = obj\n stream.lastMsg = msg\n stream.lastTime = t.slice(this[timeSliceIndexSym])\n stream.lastLogger = this // for child loggers\n }\n stream.write(s)\n}\n\nfunction noop () {}\n\nfunction flush () {\n const stream = this[streamSym]\n if ('flush' in stream) stream.flush(noop)\n}\n", "'use strict'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst stringify = configure()\n\n// @ts-expect-error\nstringify.configure = configure\n// @ts-expect-error\nstringify.stringify = stringify\n\n// @ts-expect-error\nstringify.default = stringify\n\n// @ts-expect-error used for named export\nexports.stringify = stringify\n// @ts-expect-error used for named export\nexports.configure = configure\n\nmodule.exports = stringify\n\n// eslint-disable-next-line no-control-regex\nconst strEscapeSequencesRegExp = /[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]|[\\ud800-\\udbff](?![\\udc00-\\udfff])|(?:[^\\ud800-\\udbff]|^)[\\udc00-\\udfff]/\n\n// Escape C0 control characters, double quotes, the backslash and every code\n// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF.\nfunction strEscape (str) {\n // Some magic numbers that worked out fine while benchmarking with v8 8.0\n if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) {\n return `\"${str}\"`\n }\n return JSON.stringify(str)\n}\n\nfunction insertSort (array) {\n // Insertion sort is very efficient for small input sizes but it has a bad\n // worst case complexity. Thus, use native array sort for bigger values.\n if (array.length > 2e2) {\n return array.sort()\n }\n for (let i = 1; i < array.length; i++) {\n const currentValue = array[i]\n let position = i\n while (position !== 0 && array[position - 1] > currentValue) {\n array[position] = array[position - 1]\n position--\n }\n array[position] = currentValue\n }\n return array\n}\n\nconst typedArrayPrototypeGetSymbolToStringTag =\n Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(\n Object.getPrototypeOf(\n new Int8Array()\n )\n ),\n Symbol.toStringTag\n ).get\n\nfunction isTypedArrayWithEntries (value) {\n return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0\n}\n\nfunction stringifyTypedArray (array, separator, maximumBreadth) {\n if (array.length < maximumBreadth) {\n maximumBreadth = array.length\n }\n const whitespace = separator === ',' ? '' : ' '\n let res = `\"0\":${whitespace}${array[0]}`\n for (let i = 1; i < maximumBreadth; i++) {\n res += `${separator}\"${i}\":${whitespace}${array[i]}`\n }\n return res\n}\n\nfunction getCircularValueOption (options) {\n if (hasOwnProperty.call(options, 'circularValue')) {\n const circularValue = options.circularValue\n if (typeof circularValue === 'string') {\n return `\"${circularValue}\"`\n }\n if (circularValue == null) {\n return circularValue\n }\n if (circularValue === Error || circularValue === TypeError) {\n return {\n toString () {\n throw new TypeError('Converting circular structure to JSON')\n }\n }\n }\n throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')\n }\n return '\"[Circular]\"'\n}\n\nfunction getBooleanOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'boolean') {\n throw new TypeError(`The \"${key}\" argument must be of type boolean`)\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getPositiveIntegerOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'number') {\n throw new TypeError(`The \"${key}\" argument must be of type number`)\n }\n if (!Number.isInteger(value)) {\n throw new TypeError(`The \"${key}\" argument must be an integer`)\n }\n if (value < 1) {\n throw new RangeError(`The \"${key}\" argument must be >= 1`)\n }\n }\n return value === undefined ? Infinity : value\n}\n\nfunction getItemCount (number) {\n if (number === 1) {\n return '1 item'\n }\n return `${number} items`\n}\n\nfunction getUniqueReplacerSet (replacerArray) {\n const replacerSet = new Set()\n for (const value of replacerArray) {\n if (typeof value === 'string' || typeof value === 'number') {\n replacerSet.add(String(value))\n }\n }\n return replacerSet\n}\n\nfunction getStrictOption (options) {\n if (hasOwnProperty.call(options, 'strict')) {\n const value = options.strict\n if (typeof value !== 'boolean') {\n throw new TypeError('The \"strict\" argument must be of type boolean')\n }\n if (value) {\n return (value) => {\n let message = `Object can not safely be stringified. Received type ${typeof value}`\n if (typeof value !== 'function') message += ` (${value.toString()})`\n throw new Error(message)\n }\n }\n }\n}\n\nfunction configure (options) {\n options = { ...options }\n const fail = getStrictOption(options)\n if (fail) {\n if (options.bigint === undefined) {\n options.bigint = false\n }\n if (!('circularValue' in options)) {\n options.circularValue = Error\n }\n }\n const circularValue = getCircularValueOption(options)\n const bigint = getBooleanOption(options, 'bigint')\n const deterministic = getBooleanOption(options, 'deterministic')\n const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth')\n const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth')\n\n function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) {\n let value = parent[key]\n\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n value = replacer.call(parent, key, value)\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n let join = ','\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let whitespace = ''\n let separator = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (deterministic && !isTypedArrayWithEntries(value)) {\n keys = insertSort(keys)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":${whitespace}\"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) {\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n const originalIndentation = indentation\n let res = ''\n let join = ','\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n stack.push(value)\n let whitespace = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n let separator = ''\n for (const key of replacer) {\n const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyIndent (key, value, stack, spacer, indentation) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again.\n if (typeof value !== 'object') {\n return stringifyIndent(key, value, stack, spacer, indentation)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n indentation += spacer\n let res = `\\n${indentation}`\n const join = `,\\n${indentation}`\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n res += `\\n${originalIndentation}`\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n indentation += spacer\n const join = `,\\n${indentation}`\n let res = ''\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, join, maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = join\n }\n if (deterministic) {\n keys = insertSort(keys)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyIndent(key, value[key], stack, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}: ${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\": \"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (separator !== '') {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifySimple (key, value, stack) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again\n if (typeof value !== 'object') {\n return stringifySimple(key, value, stack)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n res += ','\n }\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `,\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, ',', maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = ','\n }\n if (deterministic) {\n keys = insertSort(keys)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifySimple(key, value[key], stack)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${tmp}`\n separator = ','\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":\"${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringify (value, replacer, space) {\n if (arguments.length > 1) {\n let spacer = ''\n if (typeof space === 'number') {\n spacer = ' '.repeat(Math.min(space, 10))\n } else if (typeof space === 'string') {\n spacer = space.slice(0, 10)\n }\n if (replacer != null) {\n if (typeof replacer === 'function') {\n return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '')\n }\n if (Array.isArray(replacer)) {\n return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '')\n }\n }\n if (spacer.length !== 0) {\n return stringifyIndent('', value, [], spacer, '')\n }\n }\n return stringifySimple('', value, [])\n }\n\n return stringify\n}\n", "'use strict'\n\nconst metadata = Symbol.for('pino.metadata')\nconst { levels } = require('./levels')\n\nconst DEFAULT_INFO_LEVEL = levels.info\n\nfunction multistream (streamsArray, opts) {\n let counter = 0\n streamsArray = streamsArray || []\n opts = opts || { dedupe: false }\n\n const streamLevels = Object.create(levels)\n streamLevels.silent = Infinity\n if (opts.levels && typeof opts.levels === 'object') {\n Object.keys(opts.levels).forEach(i => {\n streamLevels[i] = opts.levels[i]\n })\n }\n\n const res = {\n write,\n add,\n flushSync,\n end,\n minLevel: 0,\n streams: [],\n clone,\n [metadata]: true,\n streamLevels\n }\n\n if (Array.isArray(streamsArray)) {\n streamsArray.forEach(add, res)\n } else {\n add.call(res, streamsArray)\n }\n\n // clean this object up\n // or it will stay allocated forever\n // as it is closed on the following closures\n streamsArray = null\n\n return res\n\n // we can exit early because the streams are ordered by level\n function write (data) {\n let dest\n const level = this.lastLevel\n const { streams } = this\n // for handling situation when several streams has the same level\n let recordedLevel = 0\n let stream\n\n // if dedupe set to true we send logs to the stream with the highest level\n // therefore, we have to change sorting order\n for (let i = initLoopVar(streams.length, opts.dedupe); checkLoopVar(i, streams.length, opts.dedupe); i = adjustLoopVar(i, opts.dedupe)) {\n dest = streams[i]\n if (dest.level <= level) {\n if (recordedLevel !== 0 && recordedLevel !== dest.level) {\n break\n }\n stream = dest.stream\n if (stream[metadata]) {\n const { lastTime, lastMsg, lastObj, lastLogger } = this\n stream.lastLevel = level\n stream.lastTime = lastTime\n stream.lastMsg = lastMsg\n stream.lastObj = lastObj\n stream.lastLogger = lastLogger\n }\n stream.write(data)\n if (opts.dedupe) {\n recordedLevel = dest.level\n }\n } else if (!opts.dedupe) {\n break\n }\n }\n }\n\n function flushSync () {\n for (const { stream } of this.streams) {\n if (typeof stream.flushSync === 'function') {\n stream.flushSync()\n }\n }\n }\n\n function add (dest) {\n if (!dest) {\n return res\n }\n\n // Check that dest implements either StreamEntry or DestinationStream\n const isStream = typeof dest.write === 'function' || dest.stream\n const stream_ = dest.write ? dest : dest.stream\n // This is necessary to provide a meaningful error message, otherwise it throws somewhere inside write()\n if (!isStream) {\n throw Error('stream object needs to implement either StreamEntry or DestinationStream interface')\n }\n\n const { streams, streamLevels } = this\n\n let level\n if (typeof dest.levelVal === 'number') {\n level = dest.levelVal\n } else if (typeof dest.level === 'string') {\n level = streamLevels[dest.level]\n } else if (typeof dest.level === 'number') {\n level = dest.level\n } else {\n level = DEFAULT_INFO_LEVEL\n }\n\n const dest_ = {\n stream: stream_,\n level,\n levelVal: undefined,\n id: counter++\n }\n\n streams.unshift(dest_)\n streams.sort(compareByLevel)\n\n this.minLevel = streams[0].level\n\n return res\n }\n\n function end () {\n for (const { stream } of this.streams) {\n if (typeof stream.flushSync === 'function') {\n stream.flushSync()\n }\n stream.end()\n }\n }\n\n function clone (level) {\n const streams = new Array(this.streams.length)\n\n for (let i = 0; i < streams.length; i++) {\n streams[i] = {\n level,\n stream: this.streams[i].stream\n }\n }\n\n return {\n write,\n add,\n minLevel: level,\n streams,\n clone,\n flushSync,\n [metadata]: true\n }\n }\n}\n\nfunction compareByLevel (a, b) {\n return a.level - b.level\n}\n\nfunction initLoopVar (length, dedupe) {\n return dedupe ? length - 1 : 0\n}\n\nfunction adjustLoopVar (i, dedupe) {\n return dedupe ? i - 1 : i + 1\n}\n\nfunction checkLoopVar (i, length, dedupe) {\n return dedupe ? i >= 0 : i < length\n}\n\nmodule.exports = multistream\n", "'use strict'\n/* eslint no-prototype-builtins: 0 */\nconst os = require('os')\nconst stdSerializers = require('pino-std-serializers')\nconst caller = require('./lib/caller')\nconst redaction = require('./lib/redaction')\nconst time = require('./lib/time')\nconst proto = require('./lib/proto')\nconst symbols = require('./lib/symbols')\nconst { configure } = require('safe-stable-stringify')\nconst { assertDefaultLevelFound, mappings, genLsCache, levels } = require('./lib/levels')\nconst {\n createArgsNormalizer,\n asChindings,\n buildSafeSonicBoom,\n buildFormatters,\n stringify,\n normalizeDestFileDescriptor,\n noop\n} = require('./lib/tools')\nconst { version } = require('./lib/meta')\nconst {\n chindingsSym,\n redactFmtSym,\n serializersSym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n stringifySym,\n stringifySafeSym,\n stringifiersSym,\n setLevelSym,\n endSym,\n formatOptsSym,\n messageKeySym,\n errorKeySym,\n nestedKeySym,\n mixinSym,\n useOnlyCustomLevelsSym,\n formattersSym,\n hooksSym,\n nestedKeyStrSym,\n mixinMergeStrategySym,\n msgPrefixSym\n} = symbols\nconst { epochTime, nullTime } = time\nconst { pid } = process\nconst hostname = os.hostname()\nconst defaultErrorSerializer = stdSerializers.err\nconst defaultOptions = {\n level: 'info',\n levels,\n messageKey: 'msg',\n errorKey: 'err',\n nestedKey: null,\n enabled: true,\n base: { pid, hostname },\n serializers: Object.assign(Object.create(null), {\n err: defaultErrorSerializer\n }),\n formatters: Object.assign(Object.create(null), {\n bindings (bindings) {\n return bindings\n },\n level (label, number) {\n return { level: number }\n }\n }),\n hooks: {\n logMethod: undefined\n },\n timestamp: epochTime,\n name: undefined,\n redact: null,\n customLevels: null,\n useOnlyCustomLevels: false,\n depthLimit: 5,\n edgeLimit: 100\n}\n\nconst normalize = createArgsNormalizer(defaultOptions)\n\nconst serializers = Object.assign(Object.create(null), stdSerializers)\n\nfunction pino (...args) {\n const instance = {}\n const { opts, stream } = normalize(instance, caller(), ...args)\n const {\n redact,\n crlf,\n serializers,\n timestamp,\n messageKey,\n errorKey,\n nestedKey,\n base,\n name,\n level,\n customLevels,\n mixin,\n mixinMergeStrategy,\n useOnlyCustomLevels,\n formatters,\n hooks,\n depthLimit,\n edgeLimit,\n onChild,\n msgPrefix\n } = opts\n\n const stringifySafe = configure({\n maximumDepth: depthLimit,\n maximumBreadth: edgeLimit\n })\n\n const allFormatters = buildFormatters(\n formatters.level,\n formatters.bindings,\n formatters.log\n )\n\n const stringifyFn = stringify.bind({\n [stringifySafeSym]: stringifySafe\n })\n const stringifiers = redact ? redaction(redact, stringifyFn) : {}\n const formatOpts = redact\n ? { stringify: stringifiers[redactFmtSym] }\n : { stringify: stringifyFn }\n const end = '}' + (crlf ? '\\r\\n' : '\\n')\n const coreChindings = asChindings.bind(null, {\n [chindingsSym]: '',\n [serializersSym]: serializers,\n [stringifiersSym]: stringifiers,\n [stringifySym]: stringify,\n [stringifySafeSym]: stringifySafe,\n [formattersSym]: allFormatters\n })\n\n let chindings = ''\n if (base !== null) {\n if (name === undefined) {\n chindings = coreChindings(base)\n } else {\n chindings = coreChindings(Object.assign({}, base, { name }))\n }\n }\n\n const time = (timestamp instanceof Function)\n ? timestamp\n : (timestamp ? epochTime : nullTime)\n const timeSliceIndex = time().indexOf(':') + 1\n\n if (useOnlyCustomLevels && !customLevels) throw Error('customLevels is required if useOnlyCustomLevels is set true')\n if (mixin && typeof mixin !== 'function') throw Error(`Unknown mixin type \"${typeof mixin}\" - expected \"function\"`)\n if (msgPrefix && typeof msgPrefix !== 'string') throw Error(`Unknown msgPrefix type \"${typeof msgPrefix}\" - expected \"string\"`)\n\n assertDefaultLevelFound(level, customLevels, useOnlyCustomLevels)\n const levels = mappings(customLevels, useOnlyCustomLevels)\n\n Object.assign(instance, {\n levels,\n [useOnlyCustomLevelsSym]: useOnlyCustomLevels,\n [streamSym]: stream,\n [timeSym]: time,\n [timeSliceIndexSym]: timeSliceIndex,\n [stringifySym]: stringify,\n [stringifySafeSym]: stringifySafe,\n [stringifiersSym]: stringifiers,\n [endSym]: end,\n [formatOptsSym]: formatOpts,\n [messageKeySym]: messageKey,\n [errorKeySym]: errorKey,\n [nestedKeySym]: nestedKey,\n // protect against injection\n [nestedKeyStrSym]: nestedKey ? `,${JSON.stringify(nestedKey)}:{` : '',\n [serializersSym]: serializers,\n [mixinSym]: mixin,\n [mixinMergeStrategySym]: mixinMergeStrategy,\n [chindingsSym]: chindings,\n [formattersSym]: allFormatters,\n [hooksSym]: hooks,\n silent: noop,\n onChild,\n [msgPrefixSym]: msgPrefix\n })\n\n Object.setPrototypeOf(instance, proto())\n\n genLsCache(instance)\n\n instance[setLevelSym](level)\n\n return instance\n}\n\nmodule.exports = pino\n\nmodule.exports.destination = (dest = process.stdout.fd) => {\n if (typeof dest === 'object') {\n dest.dest = normalizeDestFileDescriptor(dest.dest || process.stdout.fd)\n return buildSafeSonicBoom(dest)\n } else {\n return buildSafeSonicBoom({ dest: normalizeDestFileDescriptor(dest), minLength: 0 })\n }\n}\n\nmodule.exports.transport = require('./lib/transport')\nmodule.exports.multistream = require('./lib/multistream')\n\nmodule.exports.levels = mappings()\nmodule.exports.stdSerializers = serializers\nmodule.exports.stdTimeFunctions = Object.assign({}, time)\nmodule.exports.symbols = symbols\nmodule.exports.version = version\n\n// Enables default and name export with TypeScript and Babel\nmodule.exports.default = pino\nmodule.exports.pino = pino\n", "module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n if (Number.MAX_SAFE_INTEGER && num > Number.MAX_SAFE_INTEGER) {\n encode.bytes = 0\n throw new RangeError('Could not encode varint')\n }\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n", "module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l || shift > 49) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n", "\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n", "module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n", "export * from './block-map'\nexport * from './cid-set'\nexport * from './repo'\nexport * from './mst'\nexport * from './parse'\nexport * from './storage'\nexport * from './sync'\nexport * from './types'\nexport * from './data-diff'\nexport * from './util'\n", "var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message || errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n syncPairs.push({\n key: await pair.key,\n value: await pair.value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (typeof value.value !== \"undefined\" || pair.alwaysSet) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n if (typeof ctx.data === \"undefined\") {\n return { message: required_error !== null && required_error !== void 0 ? required_error : ctx.defaultError };\n }\n return { message: invalid_type_error !== null && invalid_type_error !== void 0 ? invalid_type_error : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[a-z][a-z0-9]*$/;\nconst ulidRegex = /[0-9A-HJKMNP-TV-Z]{26}/;\nconst uuidRegex = /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\nconst emailRegex = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst emojiRegex = /^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$/u;\nconst ipv4Regex = /^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/;\nconst ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\n// Adapted from https://stackoverflow.com/a/3143231\nconst datetimeRegex = (args) => {\n if (args.precision) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}Z$`);\n }\n }\n else if (args.precision === 0) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}Z$`);\n }\n }\n else {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?Z$`);\n }\n }\n};\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n constructor() {\n super(...arguments);\n this._regex = (regex, validation, message) => this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n this.nonempty = (message) => this.min(1, errorUtil.errToObj(message));\n this.trim = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n this.toLowerCase = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n this.toUpperCase = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n }\n //\n );\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n syncPairs.push({\n key,\n value: await pair.value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return Object.keys(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else {\n return null;\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n return OK(async (...args) => {\n const error = new ZodError([]);\n const parsedArgs = await this._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await fn(...parsedArgs);\n const parsedReturns = await this._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n return OK((...args) => {\n const parsedArgs = this._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = fn(...parsedArgs.data);\n const parsedReturns = this._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (this._def.values.indexOf(input.data) === -1) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values) {\n return ZodEnum.create(values);\n }\n exclude(values) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)));\n }\n}\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (nativeEnumValues.indexOf(input.data) === -1) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data);\n if (ctx.common.async) {\n return Promise.resolve(processed).then((processed) => {\n return this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n });\n }\n else {\n return this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc\n // effect: RefinementEffect<any>\n ) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nconst custom = (check, params = {}, \n/*\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) => {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n};\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n", "/*\nGrammar:\n\nalpha = \"a\" / \"b\" / \"c\" / \"d\" / \"e\" / \"f\" / \"g\" / \"h\" / \"i\" / \"j\" / \"k\" / \"l\" / \"m\" / \"n\" / \"o\" / \"p\" / \"q\" / \"r\" / \"s\" / \"t\" / \"u\" / \"v\" / \"w\" / \"x\" / \"y\" / \"z\" / \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\" / \"G\" / \"H\" / \"I\" / \"J\" / \"K\" / \"L\" / \"M\" / \"N\" / \"O\" / \"P\" / \"Q\" / \"R\" / \"S\" / \"T\" / \"U\" / \"V\" / \"W\" / \"X\" / \"Y\" / \"Z\"\nnumber = \"1\" / \"2\" / \"3\" / \"4\" / \"5\" / \"6\" / \"7\" / \"8\" / \"9\" / \"0\"\ndelim = \".\"\nsegment = alpha *( alpha / number / \"-\" )\nauthority = segment *( delim segment )\nname = alpha *( alpha )\nnsid = authority delim name\n\n*/\n\nexport class NSID {\n segments: string[] = []\n\n static parse(nsid: string): NSID {\n return new NSID(nsid)\n }\n\n static create(authority: string, name: string): NSID {\n const segments = [...authority.split('.').reverse(), name].join('.')\n return new NSID(segments)\n }\n\n static isValid(nsid: string): boolean {\n try {\n NSID.parse(nsid)\n return true\n } catch (e) {\n return false\n }\n }\n\n constructor(nsid: string) {\n ensureValidNsid(nsid)\n this.segments = nsid.split('.')\n }\n\n get authority() {\n return this.segments\n .slice(0, this.segments.length - 1)\n .reverse()\n .join('.')\n }\n\n get name() {\n return this.segments.at(this.segments.length - 1)\n }\n\n toString() {\n return this.segments.join('.')\n }\n}\n\n// Human readable constraints on NSID:\n// - a valid domain in reversed notation\n// - followed by an additional period-separated name, which is camel-case letters\nexport const ensureValidNsid = (nsid: string): void => {\n const toCheck = nsid\n\n // check that all chars are boring ASCII\n if (!/^[a-zA-Z0-9.-]*$/.test(toCheck)) {\n throw new InvalidNsidError(\n 'Disallowed characters in NSID (ASCII letters, digits, dashes, periods only)',\n )\n }\n\n if (toCheck.length > 253 + 1 + 63) {\n throw new InvalidNsidError('NSID is too long (317 chars max)')\n }\n const labels = toCheck.split('.')\n if (labels.length < 3) {\n throw new InvalidNsidError('NSID needs at least three parts')\n }\n for (let i = 0; i < labels.length; i++) {\n const l = labels[i]\n if (l.length < 1) {\n throw new InvalidNsidError('NSID parts can not be empty')\n }\n if (l.length > 63) {\n throw new InvalidNsidError('NSID part too long (max 63 chars)')\n }\n if (l.endsWith('-') || l.startsWith('-')) {\n throw new InvalidNsidError('NSID parts can not start or end with hyphen')\n }\n if (/^[0-9]/.test(l) && i == 0) {\n throw new InvalidNsidError('NSID first part may not start with a digit')\n }\n if (!/^[a-zA-Z]+$/.test(l) && i + 1 == labels.length) {\n throw new InvalidNsidError('NSID name part must be only letters')\n }\n }\n}\n\nexport const ensureValidNsidRegex = (nsid: string): void => {\n // simple regex to enforce most constraints via just regex and length.\n // hand wrote this regex based on above constraints\n if (\n !/^[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(\\.[a-zA-Z]([a-zA-Z]{0,61}[a-zA-Z])?)$/.test(\n nsid,\n )\n ) {\n throw new InvalidNsidError(\"NSID didn't validate via regex\")\n }\n if (nsid.length > 253 + 1 + 63) {\n throw new InvalidNsidError('NSID is too long (317 chars max)')\n }\n}\n\nexport class InvalidNsidError extends Error {}\n", "import { ZodError } from 'zod'\n\nexport interface Checkable<T> {\n parse: (obj: unknown) => T\n safeParse: (\n obj: unknown,\n ) => { success: true; data: T } | { success: false; error: ZodError }\n}\n\nexport interface Def<T> {\n name: string\n schema: Checkable<T>\n}\n\nexport const is = <T>(obj: unknown, def: Checkable<T>): obj is T => {\n return def.safeParse(obj).success\n}\n\nexport const assure = <T>(def: Checkable<T>, obj: unknown): T => {\n return def.parse(obj)\n}\n\nexport const isObject = (obj: unknown): obj is Record<string, unknown> => {\n return typeof obj === 'object' && obj !== null\n}\n", "export const noUndefinedVals = <T>(\n obj: Record<string, T | undefined>,\n): Record<string, T> => {\n Object.keys(obj).forEach((k) => {\n if (obj[k] === undefined) {\n delete obj[k]\n }\n })\n return obj as Record<string, T>\n}\n\nexport const jitter = (maxMs: number) => {\n return Math.round((Math.random() - 0.5) * maxMs * 2)\n}\n\nexport const wait = (ms: number) => {\n return new Promise((res) => setTimeout(res, ms))\n}\n\nexport type BailableWait = {\n bail: () => void\n wait: () => Promise<void>\n}\n\nexport const bailableWait = (ms: number): BailableWait => {\n let bail\n const waitPromise = new Promise<void>((res) => {\n const timeout = setTimeout(res, ms)\n bail = () => {\n clearTimeout(timeout)\n res()\n }\n })\n return { bail, wait: () => waitPromise }\n}\n\nexport const flattenUint8Arrays = (arrs: Uint8Array[]): Uint8Array => {\n const length = arrs.reduce((acc, cur) => {\n return acc + cur.length\n }, 0)\n const flattened = new Uint8Array(length)\n let offset = 0\n arrs.forEach((arr) => {\n flattened.set(arr, offset)\n offset += arr.length\n })\n return flattened\n}\n\nexport const streamToBuffer = async (\n stream: AsyncIterable<Uint8Array>,\n): Promise<Uint8Array> => {\n const arrays: Uint8Array[] = []\n for await (const chunk of stream) {\n arrays.push(chunk)\n }\n return flattenUint8Arrays(arrays)\n}\n\nconst S32_CHAR = '234567abcdefghijklmnopqrstuvwxyz'\n\nexport const s32encode = (i: number): string => {\n let s = ''\n while (i) {\n const c = i % 32\n i = Math.floor(i / 32)\n s = S32_CHAR.charAt(c) + s\n }\n return s\n}\n\nexport const s32decode = (s: string): number => {\n let i = 0\n for (const c of s) {\n i = i * 32 + S32_CHAR.indexOf(c)\n }\n return i\n}\n\nexport const asyncFilter = async <T>(\n arr: T[],\n fn: (t: T) => Promise<boolean>,\n) => {\n const results = await Promise.all(arr.map((t) => fn(t)))\n return arr.filter((_, i) => results[i])\n}\n\nexport const isErrnoException = (\n err: unknown,\n): err is NodeJS.ErrnoException => {\n return !!err && err['code']\n}\n\nexport const errHasMsg = (err: unknown, msg: string): boolean => {\n return !!err && typeof err === 'object' && err['message'] === msg\n}\n\nexport const chunkArray = <T>(arr: T[], chunkSize: number): T[][] => {\n return arr.reduce((acc, cur, i) => {\n const chunkI = Math.floor(i / chunkSize)\n if (!acc[chunkI]) {\n acc[chunkI] = []\n }\n acc[chunkI].push(cur)\n return acc\n }, [] as T[][])\n}\n\nexport const range = (num: number): number[] => {\n const nums: number[] = []\n for (let i = 0; i < num; i++) {\n nums.push(i)\n }\n return nums\n}\n\nexport const dedupeStrs = (strs: string[]): string[] => {\n return [...new Set(strs)]\n}\n\nexport const parseIntWithFallback = <T>(\n value: string | undefined,\n fallback: T,\n): number | T => {\n const parsed = parseInt(value || '', 10)\n return isNaN(parsed) ? fallback : parsed\n}\n", "import { s32encode, s32decode } from './util'\n\nconst TID_LEN = 13\n\nlet lastTimestamp = 0\nlet timestampCount = 0\nlet clockid: number | null = null\n\nfunction dedash(str: string): string {\n return str.replaceAll('-', '')\n}\n\nexport class TID {\n str: string\n\n constructor(str: string) {\n const noDashes = dedash(str)\n if (noDashes.length !== TID_LEN) {\n throw new Error(`Poorly formatted TID: ${noDashes.length} length`)\n }\n this.str = noDashes\n }\n\n static next(prev?: TID): TID {\n // javascript does not have microsecond precision\n // instead, we append a counter to the timestamp to indicate if multiple timestamps were created within the same millisecond\n // take max of current time & last timestamp to prevent tids moving backwards if system clock drifts backwards\n const time = Math.max(Date.now(), lastTimestamp)\n if (time === lastTimestamp) {\n timestampCount++\n }\n lastTimestamp = time\n const timestamp = time * 1000 + timestampCount\n // the bottom 32 clock ids can be randomized & are not guaranteed to be collision resistant\n // we use the same clockid for all tids coming from this machine\n if (clockid === null) {\n clockid = Math.floor(Math.random() * 32)\n }\n const tid = TID.fromTime(timestamp, clockid)\n if (!prev || tid.newerThan(prev)) {\n return tid\n }\n return TID.fromTime(prev.timestamp() + 1, clockid)\n }\n\n static nextStr(prev?: string): string {\n return TID.next(prev ? new TID(prev) : undefined).toString()\n }\n\n static fromTime(timestamp: number, clockid: number): TID {\n // base32 encode with encoding variant sort (s32)\n const str = `${s32encode(timestamp)}${s32encode(clockid).padStart(2, '2')}`\n return new TID(str)\n }\n\n static fromStr(str: string): TID {\n return new TID(str)\n }\n\n static oldestFirst(a: TID, b: TID): number {\n return a.compareTo(b)\n }\n\n static newestFirst(a: TID, b: TID): number {\n return b.compareTo(a)\n }\n\n static is(str: string): boolean {\n return dedash(str).length === TID_LEN\n }\n\n timestamp(): number {\n return s32decode(this.str.slice(0, 11))\n }\n\n clockid(): number {\n return s32decode(this.str.slice(11, 13))\n }\n\n formatted(): string {\n const str = this.toString()\n return `${str.slice(0, 4)}-${str.slice(4, 7)}-${str.slice(\n 7,\n 11,\n )}-${str.slice(11, 13)}`\n }\n\n toString(): string {\n return this.str\n }\n\n // newer > older\n compareTo(other: TID): number {\n if (this.str > other.str) return 1\n if (this.str < other.str) return -1\n return 0\n }\n\n equals(other: TID): boolean {\n return this.str === other.str\n }\n\n newerThan(other: TID): boolean {\n return this.compareTo(other) > 0\n }\n\n olderThan(other: TID): boolean {\n return this.compareTo(other) < 0\n }\n}\n\nexport default TID\n", "var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = num & 255 | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = num & 255 | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;", "import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset);\n return [\n code,\n varint.decode.bytes\n ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset);\n return target;\n};\nexport const encodingLength = int => {\n return varint.encodingLength(int);\n};", "const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};", "import {\n coerce,\n equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n if (a === b) {\n return true;\n } else {\n return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n }\n};\nexport class Digest {\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}", "import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});", "function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256);\n var iFACTOR = Math.log(256) / Math.log(BASE);\n function encode(source) {\n if (source instanceof Uint8Array);\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n carry += 256 * b58[it1] >>> 0;\n b58[it1] = carry % BASE >>> 0;\n carry = carry / BASE >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n carry += BASE * b256[it3] >>> 0;\n b256[it3] = carry % 256 >>> 0;\n carry = carry / 256 >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;", "import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};", "import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});", "import * as varint from './varint.js';\nimport * as Digest from './hashes/digest.js';\nimport { base58btc } from './bases/base58.js';\nimport { base32 } from './bases/base32.js';\nimport { coerce } from './bytes.js';\nexport class CID {\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n this.byteOffset = bytes.byteOffset;\n this.byteLength = bytes.byteLength;\n this.asCID = this;\n this._baseCache = new Map();\n Object.defineProperties(this, {\n byteOffset: hidden,\n byteLength: hidden,\n code: readonly,\n version: readonly,\n multihash: readonly,\n bytes: readonly,\n _baseCache: hidden,\n asCID: hidden\n });\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n default: {\n const {code, multihash} = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return CID.createV0(multihash);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const {code, digest} = this.multihash;\n const multihash = Digest.create(code, digest);\n return CID.createV1(this.code, multihash);\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${ this.version } to version 0. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return other && this.code === other.code && this.version === other.version && Digest.equals(this.multihash, other.multihash);\n }\n toString(base) {\n const {bytes, version, _baseCache} = this;\n switch (version) {\n case 0:\n return toStringV0(bytes, _baseCache, base || base58btc.encoder);\n default:\n return toStringV1(bytes, _baseCache, base || base32.encoder);\n }\n }\n toJSON() {\n return {\n code: this.code,\n version: this.version,\n hash: this.multihash.bytes\n };\n }\n get [Symbol.toStringTag]() {\n return 'CID';\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return 'CID(' + this.toString() + ')';\n }\n static isCID(value) {\n deprecate(/^0\\.0/, IS_CID_DEPRECATION);\n return !!(value && (value[cidSymbol] || value.asCID === value));\n }\n get toBaseEncodedString() {\n throw new Error('Deprecated, use .toString()');\n }\n get codec() {\n throw new Error('\"codec\" property is deprecated, use integer \"code\" property instead');\n }\n get buffer() {\n throw new Error('Deprecated .buffer property, use .bytes to get Uint8Array instead');\n }\n get multibaseName() {\n throw new Error('\"multibaseName\" property is deprecated');\n }\n get prefix() {\n throw new Error('\"prefix\" property is deprecated');\n }\n static asCID(value) {\n if (value instanceof CID) {\n return value;\n } else if (value != null && value.asCID === value) {\n const {version, code, multihash, bytes} = value;\n return new CID(version, code, multihash, bytes || encodeCID(version, code, multihash.bytes));\n } else if (value != null && value[cidSymbol] === true) {\n const {version, multihash, code} = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n } else {\n return null;\n }\n }\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${ DAG_PB_CODE }) block encoding`);\n } else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0 ? CID.createV0(digest) : CID.createV1(specs.codec, digest);\n return [\n cid,\n bytes.subarray(specs.size)\n ];\n }\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n version = 0;\n offset = 0;\n } else if (version === 1) {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${ version }`);\n }\n const prefixSize = offset;\n const multihashCode = next();\n const digestSize = next();\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return {\n version,\n codec,\n multihashCode,\n digestSize,\n multihashSize,\n size\n };\n }\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n cid._baseCache.set(prefix, source);\n return cid;\n }\n}\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n case 'Q': {\n const decoder = base || base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${ base58btc.prefix }${ source }`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base || base58btc;\n return [\n base58btc.prefix,\n decoder.decode(source)\n ];\n }\n case base32.prefix: {\n const decoder = base || base32;\n return [\n base32.prefix,\n decoder.decode(source)\n ];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [\n source[0],\n base.decode(source)\n ];\n }\n }\n};\nconst toStringV0 = (bytes, cache, base) => {\n const {prefix} = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${ base.name } encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n } else {\n return cid;\n }\n};\nconst toStringV1 = (bytes, cache, base) => {\n const {prefix} = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n } else {\n return cid;\n }\n};\nconst DAG_PB_CODE = 112;\nconst SHA_256_CODE = 18;\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n};\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\nconst readonly = {\n writable: false,\n configurable: false,\n enumerable: true\n};\nconst hidden = {\n writable: false,\n enumerable: false,\n configurable: false\n};\nconst version = '0.0.0-dev';\nconst deprecate = (range, message) => {\n if (range.test(version)) {\n console.warn(message);\n } else {\n throw new Error(message);\n }\n};\nconst IS_CID_DEPRECATION = `CID.isCID(v) is deprecated and will be removed in the next major release.\nFollowing code pattern:\n\nif (CID.isCID(value)) {\n doSomethingWithCID(value)\n}\n\nIs replaced with:\n\nconst cid = CID.asCID(value)\nif (cid) {\n // Make sure to use cid instead of value\n doSomethingWithCID(cid)\n}\n`;", "export function equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}", "import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});", "import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});", "import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});", "import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});", "import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});", "import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});", "import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});", "import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});", "import crypto from 'crypto';\nimport { from } from './hasher.js';\nimport { coerce } from '../bytes.js';\nexport const sha256 = from({\n name: 'sha2-256',\n code: 18,\n encode: input => coerce(crypto.createHash('sha256').update(input).digest())\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 19,\n encode: input => coerce(crypto.createHash('sha512').update(input).digest())\n});", "import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}", "import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n code,\n name,\n encode,\n digest\n};", "const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));", "import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};", "import { bases } from 'multiformats/basics';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;", "import bases from './util/bases.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}", "import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n return base.encoder.encode(array).substring(1);\n}", "import { CID } from 'multiformats/cid'\nimport * as ui8 from 'uint8arrays'\n\nexport type JsonValue =\n | boolean\n | number\n | string\n | null\n | undefined\n | unknown\n | Array<JsonValue>\n | { [key: string]: JsonValue }\n\nexport type IpldValue =\n | JsonValue\n | CID\n | Uint8Array\n | Array<IpldValue>\n | { [key: string]: IpldValue }\n\n// @NOTE avoiding use of check.is() here only because it makes\n// these implementations slow, and they often live in hot paths.\n\nexport const jsonToIpld = (val: JsonValue): IpldValue => {\n // walk arrays\n if (Array.isArray(val)) {\n return val.map((item) => jsonToIpld(item))\n }\n // objects\n if (val && typeof val === 'object') {\n // check for dag json values\n if (typeof val['$link'] === 'string' && Object.keys(val).length === 1) {\n return CID.parse(val['$link'])\n }\n if (typeof val['$bytes'] === 'string' && Object.keys(val).length === 1) {\n return ui8.fromString(val['$bytes'], 'base64')\n }\n // walk plain objects\n const toReturn = {}\n for (const key of Object.keys(val)) {\n toReturn[key] = jsonToIpld(val[key])\n }\n return toReturn\n }\n // pass through\n return val\n}\n\nexport const ipldToJson = (val: IpldValue): JsonValue => {\n // walk arrays\n if (Array.isArray(val)) {\n return val.map((item) => ipldToJson(item))\n }\n // objects\n if (val && typeof val === 'object') {\n // convert bytes\n if (val instanceof Uint8Array) {\n return {\n $bytes: ui8.toString(val, 'base64'),\n }\n }\n // convert cids\n if (CID.asCID(val)) {\n return {\n $link: (val as CID).toString(),\n }\n }\n // walk plain objects\n const toReturn = {}\n for (const key of Object.keys(val)) {\n toReturn[key] = ipldToJson(val[key])\n }\n return toReturn\n }\n // pass through\n return val as JsonValue\n}\n\nexport const ipldEquals = (a: IpldValue, b: IpldValue): boolean => {\n // walk arrays\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (!ipldEquals(a[i], b[i])) return false\n }\n return true\n }\n // objects\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n // check bytes\n if (a instanceof Uint8Array && b instanceof Uint8Array) {\n return ui8.equals(a, b)\n }\n // check cids\n if (CID.asCID(a) && CID.asCID(b)) {\n return CID.asCID(a)?.equals(CID.asCID(b))\n }\n // walk plain objects\n if (Object.keys(a).length !== Object.keys(b).length) return false\n for (const key of Object.keys(a)) {\n if (!ipldEquals(a[key], b[key])) return false\n }\n return true\n }\n return a === b\n}\n", "import { CID } from 'multiformats/cid'\nimport { z } from 'zod'\nimport { Def } from './check'\n\nconst cidSchema = z\n .any()\n .refine((obj: unknown) => CID.asCID(obj) !== null, {\n message: 'Not a CID',\n })\n .transform((obj: unknown) => CID.asCID(obj) as CID)\n\nexport const schema = {\n cid: cidSchema,\n bytes: z.instanceof(Uint8Array),\n string: z.string(),\n array: z.array(z.unknown()),\n map: z.record(z.string(), z.unknown()),\n unknown: z.unknown(),\n}\n\nexport const def = {\n cid: {\n name: 'cid',\n schema: schema.cid,\n } as Def<CID>,\n bytes: {\n name: 'bytes',\n schema: schema.bytes,\n } as Def<Uint8Array>,\n string: {\n name: 'string',\n schema: schema.string,\n } as Def<string>,\n map: {\n name: 'map',\n schema: schema.map,\n } as Def<Record<string, unknown>>,\n unknown: {\n name: 'unknown',\n schema: schema.unknown,\n } as Def<unknown>,\n}\n\nexport type ArrayEl<A> = A extends readonly (infer T)[] ? T : never\n\nexport type NotEmptyArray<T> = [T, ...T[]]\n", "export const SECOND = 1000\nexport const MINUTE = SECOND * 60\nexport const HOUR = MINUTE * 60\nexport const DAY = HOUR * 24\n\nexport const lessThanAgoMs = (time: Date, range: number) => {\n return Date.now() < time.getTime() + range\n}\n\nexport const addHoursToDate = (hours: number, startingDate?: Date): Date => {\n // When date is passed, clone before calling `setHours()` so that we are not mutating the original date\n const currentDate = startingDate ? new Date(startingDate) : new Date()\n currentDate.setHours(currentDate.getHours() + hours)\n return currentDate\n}\n", "import Graphemer from 'graphemer'\nimport * as ui8 from 'uint8arrays'\n\n// counts the number of bytes in a utf8 string\nexport const utf8Len = (str: string): number => {\n return new TextEncoder().encode(str).byteLength\n}\n\n// counts the number of graphemes (user-displayed characters) in a string\nexport const graphemeLen = (str: string): number => {\n const splitter = new Graphemer()\n return splitter.countGraphemes(str)\n}\n\nexport const utf8ToB64Url = (utf8: string): string => {\n return ui8.toString(ui8.fromString(utf8, 'utf8'), 'base64url')\n}\n\nexport const b64UrlToUtf8 = (b64: string): string => {\n return ui8.toString(ui8.fromString(b64, 'base64url'), 'utf8')\n}\n\nexport const parseLanguage = (langTag: string): LanguageTag | null => {\n const parsed = langTag.match(bcp47Regexp)\n if (!parsed?.groups) return null\n const parts = parsed.groups\n return {\n grandfathered: parts.grandfathered,\n language: parts.language,\n extlang: parts.extlang,\n script: parts.script,\n region: parts.region,\n variant: parts.variant,\n extension: parts.extension,\n privateUse: parts.privateUseA || parts.privateUseB,\n }\n}\n\nexport const validateLanguage = (langTag: string): boolean => {\n return bcp47Regexp.test(langTag)\n}\n\nexport type LanguageTag = {\n grandfathered?: string\n language?: string\n extlang?: string\n script?: string\n region?: string\n variant?: string\n extension?: string\n privateUse?: string\n}\n\n// Validates well-formed BCP 47 syntax: https://www.rfc-editor.org/rfc/rfc5646.html#section-2.1\nconst bcp47Regexp =\n /^((?<grandfathered>(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang))|((?<language>([A-Za-z]{2,3}(-(?<extlang>[A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-(?<script>[A-Za-z]{4}))?(-(?<region>[A-Za-z]{2}|[0-9]{3}))?(-(?<variant>[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-(?<extension>[0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(?<privateUseA>x(-[A-Za-z0-9]{1,8})+))?)|(?<privateUseB>x(-[A-Za-z0-9]{1,8})+))$/\n", "import { z } from 'zod'\n\n// Parsing atproto data\n// --------\n\nexport const isValidDidDoc = (doc: unknown): doc is DidDocument => {\n return didDocument.safeParse(doc).success\n}\n\nexport const getDid = (doc: DidDocument): string => {\n const id = doc.id\n if (typeof id !== 'string') {\n throw new Error('No `id` on document')\n }\n return id\n}\n\nexport const getHandle = (doc: DidDocument): string | undefined => {\n const aka = doc.alsoKnownAs\n if (!aka) return undefined\n const found = aka.find((name) => name.startsWith('at://'))\n if (!found) return undefined\n // strip off at:// prefix\n return found.slice(5)\n}\n\n// @NOTE we parse to type/publicKeyMultibase to avoid the dependency on @atproto/crypto\nexport const getSigningKey = (\n doc: DidDocument,\n): { type: string; publicKeyMultibase: string } | undefined => {\n const did = getDid(doc)\n let keys = doc.verificationMethod\n if (!keys) return undefined\n if (typeof keys !== 'object') return undefined\n if (!Array.isArray(keys)) {\n keys = [keys]\n }\n const found = keys.find(\n (key) => key.id === '#atproto' || key.id === `${did}#atproto`,\n )\n if (!found?.publicKeyMultibase) return undefined\n return {\n type: found.type,\n publicKeyMultibase: found.publicKeyMultibase,\n }\n}\nexport const getSigningDidKey = (doc: DidDocument): string | undefined => {\n const parsed = getSigningKey(doc)\n if (!parsed) return\n return `did:key:${parsed.publicKeyMultibase}`\n}\n\nexport const getPdsEndpoint = (doc: DidDocument): string | undefined => {\n return getServiceEndpoint(doc, {\n id: '#atproto_pds',\n type: 'AtprotoPersonalDataServer',\n })\n}\n\nexport const getFeedGenEndpoint = (doc: DidDocument): string | undefined => {\n return getServiceEndpoint(doc, {\n id: '#bsky_fg',\n type: 'BskyFeedGenerator',\n })\n}\n\nexport const getNotifEndpoint = (doc: DidDocument): string | undefined => {\n return getServiceEndpoint(doc, {\n id: '#bsky_notif',\n type: 'BskyNotificationService',\n })\n}\n\nexport const getServiceEndpoint = (\n doc: DidDocument,\n opts: { id: string; type: string },\n) => {\n const did = getDid(doc)\n let services = doc.service\n if (!services) return undefined\n if (typeof services !== 'object') return undefined\n if (!Array.isArray(services)) {\n services = [services]\n }\n const found = services.find(\n (service) => service.id === opts.id || service.id === `${did}${opts.id}`,\n )\n if (!found) return undefined\n if (found.type !== opts.type) {\n return undefined\n }\n if (typeof found.serviceEndpoint !== 'string') {\n return undefined\n }\n return validateUrl(found.serviceEndpoint)\n}\n\n// Check protocol and hostname to prevent potential SSRF\nconst validateUrl = (urlStr: string): string | undefined => {\n let url\n try {\n url = new URL(urlStr)\n } catch {\n return undefined\n }\n if (!['http:', 'https:'].includes(url.protocol)) {\n return undefined\n } else if (!url.hostname) {\n return undefined\n } else {\n return urlStr\n }\n}\n\n// Types\n// --------\n\nconst verificationMethod = z.object({\n id: z.string(),\n type: z.string(),\n controller: z.string(),\n publicKeyMultibase: z.string().optional(),\n})\n\nconst service = z.object({\n id: z.string(),\n type: z.string(),\n serviceEndpoint: z.union([z.string(), z.record(z.unknown())]),\n})\n\nexport const didDocument = z.object({\n id: z.string(),\n alsoKnownAs: z.array(z.string()).optional(),\n verificationMethod: z.array(verificationMethod).optional(),\n service: z.array(service).optional(),\n})\n\nexport type DidDocument = z.infer<typeof didDocument>\n", "import { isValidISODateString } from 'iso-datestring-validator'\nimport { CID } from 'multiformats/cid'\nimport { ValidationResult, ValidationError } from '../types'\nimport {\n ensureValidDid,\n ensureValidHandle,\n ensureValidNsid,\n ensureValidAtUri,\n} from '@atproto/syntax'\nimport { validateLanguage } from '@atproto/common-web'\n\nexport function datetime(path: string, value: string): ValidationResult {\n try {\n if (!isValidISODateString(value)) {\n throw new Error()\n }\n } catch {\n return {\n success: false,\n error: new ValidationError(\n `${path} must be an valid atproto datetime (both RFC-3339 and ISO-8601)`,\n ),\n }\n }\n return { success: true, value }\n}\n\nexport function uri(path: string, value: string): ValidationResult {\n const isUri = value.match(/^\\w+:(?:\\/\\/)?[^\\s/][^\\s]*$/) !== null\n if (!isUri) {\n return {\n success: false,\n error: new ValidationError(`${path} must be a uri`),\n }\n }\n return { success: true, value }\n}\n\nexport function atUri(path: string, value: string): ValidationResult {\n try {\n ensureValidAtUri(value)\n } catch {\n return {\n success: false,\n error: new ValidationError(`${path} must be a valid at-uri`),\n }\n }\n return { success: true, value }\n}\n\nexport function did(path: string, value: string): ValidationResult {\n try {\n ensureValidDid(value)\n } catch {\n return {\n success: false,\n error: new ValidationError(`${path} must be a valid did`),\n }\n }\n return { success: true, value }\n}\n\nexport function handle(path: string, value: string): ValidationResult {\n try {\n ensureValidHandle(value)\n } catch {\n return {\n success: false,\n error: new ValidationError(`${path} must be a valid handle`),\n }\n }\n return { success: true, value }\n}\n\nexport function atIdentifier(path: string, value: string): ValidationResult {\n const isDid = did(path, value)\n if (!isDid.success) {\n const isHandle = handle(path, value)\n if (!isHandle.success) {\n return {\n success: false,\n error: new ValidationError(`${path} must be a valid did or a handle`),\n }\n }\n }\n return { success: true, value }\n}\n\nexport function nsid(path: string, value: string): ValidationResult {\n try {\n ensureValidNsid(value)\n } catch {\n return {\n success: false,\n error: new ValidationError(`${path} must be a valid nsid`),\n }\n }\n return { success: true, value }\n}\n\nexport function cid(path: string, value: string): ValidationResult {\n try {\n CID.parse(value)\n } catch {\n return {\n success: false,\n error: new ValidationError(`${path} must be a cid string`),\n }\n }\n return { success: true, value }\n}\n\n// The language format validates well-formed BCP 47 language tags: https://www.rfc-editor.org/info/bcp47\nexport function language(path: string, value: string): ValidationResult {\n if (validateLanguage(value)) {\n return { success: true, value }\n }\n return {\n success: false,\n error: new ValidationError(\n `${path} must be a well-formed BCP 47 language tag`,\n ),\n }\n}\n", "import { check, ipldToJson, schema } from '@atproto/common-web'\nimport { CID } from 'multiformats/cid'\nimport { z } from 'zod'\n\nexport const typedJsonBlobRef = z\n .object({\n $type: z.literal('blob'),\n ref: schema.cid,\n mimeType: z.string(),\n size: z.number(),\n })\n .strict()\nexport type TypedJsonBlobRef = z.infer<typeof typedJsonBlobRef>\n\nexport const untypedJsonBlobRef = z\n .object({\n cid: z.string(),\n mimeType: z.string(),\n })\n .strict()\nexport type UntypedJsonBlobRef = z.infer<typeof untypedJsonBlobRef>\n\nexport const jsonBlobRef = z.union([typedJsonBlobRef, untypedJsonBlobRef])\nexport type JsonBlobRef = z.infer<typeof jsonBlobRef>\n\nexport class BlobRef {\n public original: JsonBlobRef\n\n constructor(\n public ref: CID,\n public mimeType: string,\n public size: number,\n original?: JsonBlobRef,\n ) {\n this.original = original ?? {\n $type: 'blob',\n ref,\n mimeType,\n size,\n }\n }\n\n static asBlobRef(obj: unknown): BlobRef | null {\n if (check.is(obj, jsonBlobRef)) {\n return BlobRef.fromJsonRef(obj)\n }\n return null\n }\n\n static fromJsonRef(json: JsonBlobRef): BlobRef {\n if (check.is(json, typedJsonBlobRef)) {\n return new BlobRef(json.ref, json.mimeType, json.size)\n } else {\n return new BlobRef(CID.parse(json.cid), json.mimeType, -1, json)\n }\n }\n\n ipld(): TypedJsonBlobRef {\n return {\n $type: 'blob',\n ref: this.ref,\n mimeType: this.mimeType,\n size: this.size,\n }\n }\n\n toJSON() {\n return ipldToJson(this.ipld())\n }\n}\n", "import { Lexicons } from './lexicons'\nimport * as ComplexValidators from './validators/complex'\nimport {\n LexUserType,\n LexRefVariant,\n ValidationError,\n ValidationResult,\n isDiscriminatedObject,\n} from './types'\nimport { z } from 'zod'\n\nexport function toLexUri(str: string, baseUri?: string): string {\n if (str.split('#').length > 2) {\n throw new Error('Uri can only have one hash segment')\n }\n\n if (str.startsWith('lex:')) {\n return str\n }\n if (str.startsWith('#')) {\n if (!baseUri) {\n throw new Error(`Unable to resolve uri without anchor: ${str}`)\n }\n return `${baseUri}${str}`\n }\n return `lex:${str}`\n}\n\nexport function validateOneOf(\n lexicons: Lexicons,\n path: string,\n def: LexRefVariant | LexUserType,\n value: unknown,\n mustBeObj = false, // this is the only type constraint we need currently (used by xrpc body schema validators)\n): ValidationResult {\n let error\n\n let concreteDefs\n if (def.type === 'union') {\n if (!isDiscriminatedObject(value)) {\n return {\n success: false,\n error: new ValidationError(\n `${path} must be an object which includes the \"$type\" property`,\n ),\n }\n }\n if (!refsContainType(def.refs, value.$type)) {\n if (def.closed) {\n return {\n success: false,\n error: new ValidationError(\n `${path} $type must be one of ${def.refs.join(', ')}`,\n ),\n }\n }\n return { success: true, value }\n } else {\n concreteDefs = toConcreteTypes(lexicons, {\n type: 'ref',\n ref: value.$type,\n })\n }\n } else {\n concreteDefs = toConcreteTypes(lexicons, def)\n }\n\n for (const concreteDef of concreteDefs) {\n const result = mustBeObj\n ? ComplexValidators.object(lexicons, path, concreteDef, value)\n : ComplexValidators.validate(lexicons, path, concreteDef, value)\n if (result.success) {\n return result\n }\n error ??= result.error\n }\n if (concreteDefs.length > 1) {\n return {\n success: false,\n error: new ValidationError(\n `${path} did not match any of the expected definitions`,\n ),\n }\n }\n return { success: false, error }\n}\n\nexport function assertValidOneOf(\n lexicons: Lexicons,\n path: string,\n def: LexRefVariant | LexUserType,\n value: unknown,\n mustBeObj = false,\n) {\n const res = validateOneOf(lexicons, path, def, value, mustBeObj)\n if (!res.success) throw res.error\n return res.value\n}\n\nexport function toConcreteTypes(\n lexicons: Lexicons,\n def: LexRefVariant | LexUserType,\n): LexUserType[] {\n if (def.type === 'ref') {\n return [lexicons.getDefOrThrow(def.ref)]\n } else if (def.type === 'union') {\n return def.refs.map((ref) => lexicons.getDefOrThrow(ref)).flat()\n } else {\n return [def]\n }\n}\n\nexport function requiredPropertiesRefinement<\n ObjectType extends {\n required?: string[]\n properties?: Record<string, unknown>\n },\n>(object: ObjectType, ctx: z.RefinementCtx) {\n // Required fields check\n if (object.required === undefined) {\n return\n }\n\n if (!Array.isArray(object.required)) {\n ctx.addIssue({\n code: z.ZodIssueCode.invalid_type,\n received: typeof object.required,\n expected: 'array',\n })\n return\n }\n\n if (object.properties === undefined) {\n if (object.required.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Required fields defined but no properties defined`,\n })\n }\n return\n }\n\n for (const field of object.required) {\n if (object.properties[field] === undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Required field \"${field}\" not defined`,\n })\n }\n }\n}\n\n// to avoid bugs like #0189 this needs to handle both\n// explicit and implicit #main\nconst refsContainType = (refs: string[], type: string) => {\n const lexUri = toLexUri(type)\n if (refs.includes(lexUri)) {\n return true\n }\n\n if (lexUri.endsWith('#main')) {\n return refs.includes(lexUri.replace('#main', ''))\n } else {\n return refs.includes(lexUri + '#main')\n }\n}\n", "import { z } from 'zod'\nimport { NSID } from '@atproto/syntax'\nimport { requiredPropertiesRefinement } from './util'\n\n// primitives\n// =\n\nexport const lexBoolean = z\n .object({\n type: z.literal('boolean'),\n description: z.string().optional(),\n default: z.boolean().optional(),\n const: z.boolean().optional(),\n })\n .strict()\nexport type LexBoolean = z.infer<typeof lexBoolean>\n\nexport const lexInteger = z\n .object({\n type: z.literal('integer'),\n description: z.string().optional(),\n default: z.number().int().optional(),\n minimum: z.number().int().optional(),\n maximum: z.number().int().optional(),\n enum: z.number().int().array().optional(),\n const: z.number().int().optional(),\n })\n .strict()\nexport type LexInteger = z.infer<typeof lexInteger>\n\nexport const lexStringFormat = z.enum([\n 'datetime',\n 'uri',\n 'at-uri',\n 'did',\n 'handle',\n 'at-identifier',\n 'nsid',\n 'cid',\n 'language',\n])\nexport type LexStringFormat = z.infer<typeof lexStringFormat>\n\nexport const lexString = z\n .object({\n type: z.literal('string'),\n format: lexStringFormat.optional(),\n description: z.string().optional(),\n default: z.string().optional(),\n minLength: z.number().int().optional(),\n maxLength: z.number().int().optional(),\n minGraphemes: z.number().int().optional(),\n maxGraphemes: z.number().int().optional(),\n enum: z.string().array().optional(),\n const: z.string().optional(),\n knownValues: z.string().array().optional(),\n })\n .strict()\nexport type LexString = z.infer<typeof lexString>\n\nexport const lexUnknown = z\n .object({\n type: z.literal('unknown'),\n description: z.string().optional(),\n })\n .strict()\nexport type LexUnknown = z.infer<typeof lexUnknown>\n\nexport const lexPrimitive = z.discriminatedUnion('type', [\n lexBoolean,\n lexInteger,\n lexString,\n lexUnknown,\n])\nexport type LexPrimitive = z.infer<typeof lexPrimitive>\n\n// ipld types\n// =\n\nexport const lexBytes = z\n .object({\n type: z.literal('bytes'),\n description: z.string().optional(),\n maxLength: z.number().optional(),\n minLength: z.number().optional(),\n })\n .strict()\nexport type LexBytes = z.infer<typeof lexBytes>\n\nexport const lexCidLink = z\n .object({\n type: z.literal('cid-link'),\n description: z.string().optional(),\n })\n .strict()\nexport type LexCidLink = z.infer<typeof lexCidLink>\n\nexport const lexIpldType = z.discriminatedUnion('type', [lexBytes, lexCidLink])\nexport type LexIpldType = z.infer<typeof lexIpldType>\n\n// references\n// =\n\nexport const lexRef = z\n .object({\n type: z.literal('ref'),\n description: z.string().optional(),\n ref: z.string(),\n })\n .strict()\nexport type LexRef = z.infer<typeof lexRef>\n\nexport const lexRefUnion = z\n .object({\n type: z.literal('union'),\n description: z.string().optional(),\n refs: z.string().array(),\n closed: z.boolean().optional(),\n })\n .strict()\nexport type LexRefUnion = z.infer<typeof lexRefUnion>\n\nexport const lexRefVariant = z.discriminatedUnion('type', [lexRef, lexRefUnion])\nexport type LexRefVariant = z.infer<typeof lexRefVariant>\n\n// blobs\n// =\n\nexport const lexBlob = z\n .object({\n type: z.literal('blob'),\n description: z.string().optional(),\n accept: z.string().array().optional(),\n maxSize: z.number().optional(),\n })\n .strict()\nexport type LexBlob = z.infer<typeof lexBlob>\n\n// complex types\n// =\n\nexport const lexArray = z\n .object({\n type: z.literal('array'),\n description: z.string().optional(),\n items: z.union([lexPrimitive, lexIpldType, lexBlob, lexRefVariant]),\n minLength: z.number().int().optional(),\n maxLength: z.number().int().optional(),\n })\n .strict()\nexport type LexArray = z.infer<typeof lexArray>\n\nexport const lexPrimitiveArray = lexArray.merge(\n z\n .object({\n items: lexPrimitive,\n })\n .strict(),\n)\nexport type LexPrimitiveArray = z.infer<typeof lexPrimitiveArray>\n\nexport const lexToken = z\n .object({\n type: z.literal('token'),\n description: z.string().optional(),\n })\n .strict()\nexport type LexToken = z.infer<typeof lexToken>\n\nexport const lexObject = z\n .object({\n type: z.literal('object'),\n description: z.string().optional(),\n required: z.string().array().optional(),\n nullable: z.string().array().optional(),\n properties: z.record(\n z.union([lexRefVariant, lexIpldType, lexArray, lexBlob, lexPrimitive]),\n ),\n })\n .strict()\n .superRefine(requiredPropertiesRefinement)\nexport type LexObject = z.infer<typeof lexObject>\n\n// xrpc\n// =\n\nexport const lexXrpcParameters = z\n .object({\n type: z.literal('params'),\n description: z.string().optional(),\n required: z.string().array().optional(),\n properties: z.record(z.union([lexPrimitive, lexPrimitiveArray])),\n })\n .strict()\n .superRefine(requiredPropertiesRefinement)\nexport type LexXrpcParameters = z.infer<typeof lexXrpcParameters>\n\nexport const lexXrpcBody = z\n .object({\n description: z.string().optional(),\n encoding: z.string(),\n schema: z.union([lexRefVariant, lexObject]).optional(),\n })\n .strict()\nexport type LexXrpcBody = z.infer<typeof lexXrpcBody>\n\nexport const lexXrpcSubscriptionMessage = z\n .object({\n description: z.string().optional(),\n schema: z.union([lexRefVariant, lexObject]).optional(),\n })\n .strict()\nexport type LexXrpcSubscriptionMessage = z.infer<\n typeof lexXrpcSubscriptionMessage\n>\n\nexport const lexXrpcError = z\n .object({\n name: z.string(),\n description: z.string().optional(),\n })\n .strict()\nexport type LexXrpcError = z.infer<typeof lexXrpcError>\n\nexport const lexXrpcQuery = z\n .object({\n type: z.literal('query'),\n description: z.string().optional(),\n parameters: lexXrpcParameters.optional(),\n output: lexXrpcBody.optional(),\n errors: lexXrpcError.array().optional(),\n })\n .strict()\nexport type LexXrpcQuery = z.infer<typeof lexXrpcQuery>\n\nexport const lexXrpcProcedure = z\n .object({\n type: z.literal('procedure'),\n description: z.string().optional(),\n parameters: lexXrpcParameters.optional(),\n input: lexXrpcBody.optional(),\n output: lexXrpcBody.optional(),\n errors: lexXrpcError.array().optional(),\n })\n .strict()\nexport type LexXrpcProcedure = z.infer<typeof lexXrpcProcedure>\n\nexport const lexXrpcSubscription = z\n .object({\n type: z.literal('subscription'),\n description: z.string().optional(),\n parameters: lexXrpcParameters.optional(),\n message: lexXrpcSubscriptionMessage.optional(),\n errors: lexXrpcError.array().optional(),\n })\n .strict()\nexport type LexXrpcSubscription = z.infer<typeof lexXrpcSubscription>\n\n// database\n// =\n\nexport const lexRecord = z\n .object({\n type: z.literal('record'),\n description: z.string().optional(),\n key: z.string().optional(),\n record: lexObject,\n })\n .strict()\nexport type LexRecord = z.infer<typeof lexRecord>\n\n// core\n// =\n\n// We need to use `z.custom` here because\n// lexXrpcProperty and lexObject are refined\n// `z.union` would work, but it's too slow\n// see #915 for details\nexport const lexUserType = z.custom<\n | LexRecord\n | LexXrpcQuery\n | LexXrpcProcedure\n | LexXrpcSubscription\n | LexBlob\n | LexArray\n | LexToken\n | LexObject\n | LexBoolean\n | LexInteger\n | LexString\n | LexBytes\n | LexCidLink\n | LexUnknown\n>(\n (val) => {\n if (!val || typeof val !== 'object') {\n return\n }\n\n if (val['type'] === undefined) {\n return\n }\n\n switch (val['type']) {\n case 'record':\n return lexRecord.parse(val)\n\n case 'query':\n return lexXrpcQuery.parse(val)\n case 'procedure':\n return lexXrpcProcedure.parse(val)\n case 'subscription':\n return lexXrpcSubscription.parse(val)\n\n case 'blob':\n return lexBlob.parse(val)\n\n case 'array':\n return lexArray.parse(val)\n case 'token':\n return lexToken.parse(val)\n case 'object':\n return lexObject.parse(val)\n\n case 'boolean':\n return lexBoolean.parse(val)\n case 'integer':\n return lexInteger.parse(val)\n case 'string':\n return lexString.parse(val)\n case 'bytes':\n return lexBytes.parse(val)\n case 'cid-link':\n return lexCidLink.parse(val)\n case 'unknown':\n return lexUnknown.parse(val)\n }\n },\n (val) => {\n if (!val || typeof val !== 'object') {\n return {\n message: 'Must be an object',\n fatal: true,\n }\n }\n\n if (val['type'] === undefined) {\n return {\n message: 'Must have a type',\n fatal: true,\n }\n }\n\n return {\n message: `Invalid type: ${val['type']} must be one of: record, query, procedure, subscription, blob, array, token, object, boolean, integer, string, bytes, cid-link, unknown`,\n fatal: true,\n }\n },\n)\nexport type LexUserType = z.infer<typeof lexUserType>\n\nexport const lexiconDoc = z\n .object({\n lexicon: z.literal(1),\n id: z.string().refine((v: string) => NSID.isValid(v), {\n message: 'Must be a valid NSID',\n }),\n revision: z.number().optional(),\n description: z.string().optional(),\n defs: z.record(lexUserType),\n })\n .strict()\n .superRefine((doc, ctx) => {\n for (const defId in doc.defs) {\n const def = doc.defs[defId]\n if (\n defId !== 'main' &&\n (def.type === 'record' ||\n def.type === 'procedure' ||\n def.type === 'query' ||\n def.type === 'subscription')\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Records, procedures, queries, and subscriptions must be the main definition.`,\n })\n }\n }\n })\nexport type LexiconDoc = z.infer<typeof lexiconDoc>\n\n// helpers\n// =\n\nexport function isValidLexiconDoc(v: unknown): v is LexiconDoc {\n return lexiconDoc.safeParse(v).success\n}\n\nexport function isObj(obj: unknown): obj is Record<string, unknown> {\n return obj !== null && typeof obj === 'object'\n}\n\nexport function hasProp<K extends PropertyKey>(\n data: object,\n prop: K,\n): data is Record<K, unknown> {\n return prop in data\n}\n\nexport const discriminatedObject = z.object({ $type: z.string() })\nexport type DiscriminatedObject = z.infer<typeof discriminatedObject>\nexport function isDiscriminatedObject(\n value: unknown,\n): value is DiscriminatedObject {\n return discriminatedObject.safeParse(value).success\n}\n\nexport function parseLexiconDoc(v: unknown): LexiconDoc {\n lexiconDoc.parse(v)\n return v as LexiconDoc\n}\n\nexport type ValidationResult =\n | {\n success: true\n value: unknown\n }\n | {\n success: false\n error: ValidationError\n }\n\nexport class ValidationError extends Error {}\nexport class InvalidLexiconError extends Error {}\nexport class LexiconDefNotFoundError extends Error {}\n", "import {\n check,\n IpldValue,\n ipldToJson,\n jsonToIpld,\n JsonValue,\n} from '@atproto/common-web'\nimport { CID } from 'multiformats/cid'\nimport { BlobRef, jsonBlobRef } from './blob-refs'\n\nexport type LexValue =\n | IpldValue\n | BlobRef\n | Array<LexValue>\n | { [key: string]: LexValue }\n\nexport type RepoRecord = Record<string, LexValue>\n\n// @NOTE avoiding use of check.is() here only because it makes\n// these implementations slow, and they often live in hot paths.\n\nexport const lexToIpld = (val: LexValue): IpldValue => {\n // walk arrays\n if (Array.isArray(val)) {\n return val.map((item) => lexToIpld(item))\n }\n // objects\n if (val && typeof val === 'object') {\n // convert blobs, leaving the original encoding so that we don't change CIDs on re-encode\n if (val instanceof BlobRef) {\n return val.original\n }\n // retain cids & bytes\n if (CID.asCID(val) || val instanceof Uint8Array) {\n return val\n }\n // walk plain objects\n const toReturn = {}\n for (const key of Object.keys(val)) {\n toReturn[key] = lexToIpld(val[key])\n }\n return toReturn\n }\n // pass through\n return val\n}\n\nexport const ipldToLex = (val: IpldValue): LexValue => {\n // map arrays\n if (Array.isArray(val)) {\n return val.map((item) => ipldToLex(item))\n }\n // objects\n if (val && typeof val === 'object') {\n // convert blobs, using hints to avoid expensive is() check\n if (\n (val['$type'] === 'blob' ||\n (typeof val['cid'] === 'string' &&\n typeof val['mimeType'] === 'string')) &&\n check.is(val, jsonBlobRef)\n ) {\n return BlobRef.fromJsonRef(val)\n }\n // retain cids, bytes\n if (CID.asCID(val) || val instanceof Uint8Array) {\n return val\n }\n // map plain objects\n const toReturn = {}\n for (const key of Object.keys(val)) {\n toReturn[key] = ipldToLex(val[key])\n }\n return toReturn\n }\n // pass through\n return val\n}\n\nexport const lexToJson = (val: LexValue): JsonValue => {\n return ipldToJson(lexToIpld(val))\n}\n\nexport const stringifyLex = (val: LexValue): string => {\n return JSON.stringify(lexToJson(val))\n}\n\nexport const jsonToLex = (val: JsonValue): LexValue => {\n return ipldToLex(jsonToIpld(val))\n}\n\nexport const jsonStringToLex = (val: string): LexValue => {\n return jsonToLex(JSON.parse(val))\n}\n", "import { isValidISODateString } from 'iso-datestring-validator'\n\n// Normalize date strings to simplified ISO so that the lexical sort preserves temporal sort.\n// Rather than failing on an invalid date format, returns valid unix epoch.\nexport function toSimplifiedISOSafe(dateStr: string) {\n const date = new Date(dateStr)\n if (isNaN(date.getTime())) {\n return new Date(0).toISOString()\n }\n const iso = date.toISOString()\n if (!isValidISODateString(iso)) {\n // Occurs in rare cases, e.g. where resulting UTC year is negative. These also don't preserve lexical sort.\n return new Date(0).toISOString()\n }\n return iso // YYYY-MM-DDTHH:mm:ss.sssZ\n}\n", "import {\n bytes as binary,\n CID\n} from './index.js';\nconst readonly = ({enumerable = true, configurable = false} = {}) => ({\n enumerable,\n configurable,\n writable: false\n});\nconst links = function* (source, base) {\n if (source == null)\n return;\n if (source instanceof Uint8Array)\n return;\n for (const [key, value] of Object.entries(source)) {\n const path = [\n ...base,\n key\n ];\n if (value != null && typeof value === 'object') {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [\n ...path,\n index\n ];\n const cid = CID.asCID(element);\n if (cid) {\n yield [\n elementPath.join('/'),\n cid\n ];\n } else if (typeof element === 'object') {\n yield* links(element, elementPath);\n }\n }\n } else {\n const cid = CID.asCID(value);\n if (cid) {\n yield [\n path.join('/'),\n cid\n ];\n } else {\n yield* links(value, path);\n }\n }\n }\n }\n};\nconst tree = function* (source, base) {\n if (source == null)\n return;\n for (const [key, value] of Object.entries(source)) {\n const path = [\n ...base,\n key\n ];\n yield path.join('/');\n if (value != null && !(value instanceof Uint8Array) && typeof value === 'object' && !CID.asCID(value)) {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [\n ...path,\n index\n ];\n yield elementPath.join('/');\n if (typeof element === 'object' && !CID.asCID(element)) {\n yield* tree(element, elementPath);\n }\n }\n } else {\n yield* tree(value, path);\n }\n }\n }\n};\nconst get = (source, path) => {\n let node = source;\n for (const [index, key] of path.entries()) {\n node = node[key];\n if (node == null) {\n throw new Error(`Object has no property at ${ path.slice(0, index + 1).map(part => `[${ JSON.stringify(part) }]`).join('') }`);\n }\n const cid = CID.asCID(node);\n if (cid) {\n return {\n value: cid,\n remaining: path.slice(index + 1).join('/')\n };\n }\n }\n return { value: node };\n};\nclass Block {\n constructor({cid, bytes, value}) {\n if (!cid || !bytes || typeof value === 'undefined')\n throw new Error('Missing required argument');\n this.cid = cid;\n this.bytes = bytes;\n this.value = value;\n this.asBlock = this;\n Object.defineProperties(this, {\n cid: readonly(),\n bytes: readonly(),\n value: readonly(),\n asBlock: readonly()\n });\n }\n links() {\n return links(this.value, []);\n }\n tree() {\n return tree(this.value, []);\n }\n get(path = '/') {\n return get(this.value, path.split('/').filter(Boolean));\n }\n}\nconst encode = async ({value, codec, hasher}) => {\n if (typeof value === 'undefined')\n throw new Error('Missing required argument \"value\"');\n if (!codec || !hasher)\n throw new Error('Missing required argument: codec or hasher');\n const bytes = codec.encode(value);\n const hash = await hasher.digest(bytes);\n const cid = CID.create(1, codec.code, hash);\n return new Block({\n value,\n bytes,\n cid\n });\n};\nconst decode = async ({bytes, codec, hasher}) => {\n if (!bytes)\n throw new Error('Missing required argument \"bytes\"');\n if (!codec || !hasher)\n throw new Error('Missing required argument: codec or hasher');\n const value = codec.decode(bytes);\n const hash = await hasher.digest(bytes);\n const cid = CID.create(1, codec.code, hash);\n return new Block({\n value,\n bytes,\n cid\n });\n};\nconst createUnsafe = ({\n bytes,\n cid,\n value: maybeValue,\n codec\n}) => {\n const value = maybeValue !== undefined ? maybeValue : codec && codec.decode(bytes);\n if (value === undefined)\n throw new Error('Missing required argument, must either provide \"value\" or \"codec\"');\n return new Block({\n cid,\n bytes,\n value\n });\n};\nconst create = async ({bytes, cid, hasher, codec}) => {\n if (!bytes)\n throw new Error('Missing required argument \"bytes\"');\n if (!hasher)\n throw new Error('Missing required argument \"hasher\"');\n const value = codec.decode(bytes);\n const hash = await hasher.digest(bytes);\n if (!binary.equals(cid.multihash.bytes, hash.bytes)) {\n throw new Error('CID hash does not match bytes');\n }\n return createUnsafe({\n bytes,\n cid,\n value,\n codec\n });\n};\nexport {\n encode,\n decode,\n create,\n createUnsafe,\n Block\n};", "import * as cborg from 'cborg';\nimport { CID } from 'multiformats/cid';\nconst CID_CBOR_TAG = 42;\nfunction cidEncoder(obj) {\n if (obj.asCID !== obj) {\n return null;\n }\n const cid = CID.asCID(obj);\n if (!cid) {\n return null;\n }\n const bytes = new Uint8Array(cid.bytes.byteLength + 1);\n bytes.set(cid.bytes, 1);\n return [\n new cborg.Token(cborg.Type.tag, CID_CBOR_TAG),\n new cborg.Token(cborg.Type.bytes, bytes)\n ];\n}\nfunction undefinedEncoder() {\n throw new Error('`undefined` is not supported by the IPLD Data Model and cannot be encoded');\n}\nfunction numberEncoder(num) {\n if (Number.isNaN(num)) {\n throw new Error('`NaN` is not supported by the IPLD Data Model and cannot be encoded');\n }\n if (num === Infinity || num === -Infinity) {\n throw new Error('`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded');\n }\n return null;\n}\nconst encodeOptions = {\n float64: true,\n typeEncoders: {\n Object: cidEncoder,\n undefined: undefinedEncoder,\n number: numberEncoder\n }\n};\nfunction cidDecoder(bytes) {\n if (bytes[0] !== 0) {\n throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00');\n }\n return CID.decode(bytes.subarray(1));\n}\nconst decodeOptions = {\n allowIndefinite: false,\n coerceUndefinedToNull: true,\n allowNaN: false,\n allowInfinity: false,\n allowBigInt: true,\n strict: true,\n useMaps: false,\n tags: []\n};\ndecodeOptions.tags[CID_CBOR_TAG] = cidDecoder;\nexport const name = 'dag-cbor';\nexport const code = 113;\nexport const encode = node => cborg.encode(node, encodeOptions);\nexport const decode = data => cborg.decode(data, decodeOptions);", "const typeofs = [\n 'string',\n 'number',\n 'bigint',\n 'symbol'\n];\nconst objectTypeNames = [\n 'Function',\n 'Generator',\n 'AsyncGenerator',\n 'GeneratorFunction',\n 'AsyncGeneratorFunction',\n 'AsyncFunction',\n 'Observable',\n 'Array',\n 'Buffer',\n 'Object',\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'HTMLElement',\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array'\n];\nexport function is(value) {\n if (value === null) {\n return 'null';\n }\n if (value === undefined) {\n return 'undefined';\n }\n if (value === true || value === false) {\n return 'boolean';\n }\n const typeOf = typeof value;\n if (typeofs.includes(typeOf)) {\n return typeOf;\n }\n if (typeOf === 'function') {\n return 'Function';\n }\n if (Array.isArray(value)) {\n return 'Array';\n }\n if (isBuffer(value)) {\n return 'Buffer';\n }\n const objectType = getObjectType(value);\n if (objectType) {\n return objectType;\n }\n return 'Object';\n}\nfunction isBuffer(value) {\n return value && value.constructor && value.constructor.isBuffer && value.constructor.isBuffer.call(null, value);\n}\nfunction getObjectType(value) {\n const objectTypeName = Object.prototype.toString.call(value).slice(8, -1);\n if (objectTypeNames.includes(objectTypeName)) {\n return objectTypeName;\n }\n return undefined;\n}", "class Type {\n constructor(major, name, terminal) {\n this.major = major;\n this.majorEncoded = major << 5;\n this.name = name;\n this.terminal = terminal;\n }\n toString() {\n return `Type[${ this.major }].${ this.name }`;\n }\n compare(typ) {\n return this.major < typ.major ? -1 : this.major > typ.major ? 1 : 0;\n }\n}\nType.uint = new Type(0, 'uint', true);\nType.negint = new Type(1, 'negint', true);\nType.bytes = new Type(2, 'bytes', true);\nType.string = new Type(3, 'string', true);\nType.array = new Type(4, 'array', false);\nType.map = new Type(5, 'map', false);\nType.tag = new Type(6, 'tag', false);\nType.float = new Type(7, 'float', true);\nType.false = new Type(7, 'false', true);\nType.true = new Type(7, 'true', true);\nType.null = new Type(7, 'null', true);\nType.undefined = new Type(7, 'undefined', true);\nType.break = new Type(7, 'break', true);\nclass Token {\n constructor(type, value, encodedLength) {\n this.type = type;\n this.value = value;\n this.encodedLength = encodedLength;\n this.encodedBytes = undefined;\n this.byteValue = undefined;\n }\n toString() {\n return `Token[${ this.type }].${ this.value }`;\n }\n}\nexport {\n Type,\n Token\n};", "export const useBuffer = globalThis.process && !globalThis.process.browser && globalThis.Buffer && typeof globalThis.Buffer.isBuffer === 'function';\nconst textDecoder = new TextDecoder();\nconst textEncoder = new TextEncoder();\nfunction isBuffer(buf) {\n return useBuffer && globalThis.Buffer.isBuffer(buf);\n}\nexport function asU8A(buf) {\n if (!(buf instanceof Uint8Array)) {\n return Uint8Array.from(buf);\n }\n return isBuffer(buf) ? new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength) : buf;\n}\nexport const toString = useBuffer ? (bytes, start, end) => {\n return end - start > 64 ? globalThis.Buffer.from(bytes.subarray(start, end)).toString('utf8') : utf8Slice(bytes, start, end);\n} : (bytes, start, end) => {\n return end - start > 64 ? textDecoder.decode(bytes.subarray(start, end)) : utf8Slice(bytes, start, end);\n};\nexport const fromString = useBuffer ? string => {\n return string.length > 64 ? globalThis.Buffer.from(string) : utf8ToBytes(string);\n} : string => {\n return string.length > 64 ? textEncoder.encode(string) : utf8ToBytes(string);\n};\nexport const fromArray = arr => {\n return Uint8Array.from(arr);\n};\nexport const slice = useBuffer ? (bytes, start, end) => {\n if (isBuffer(bytes)) {\n return new Uint8Array(bytes.subarray(start, end));\n }\n return bytes.slice(start, end);\n} : (bytes, start, end) => {\n return bytes.slice(start, end);\n};\nexport const concat = useBuffer ? (chunks, length) => {\n chunks = chunks.map(c => c instanceof Uint8Array ? c : globalThis.Buffer.from(c));\n return asU8A(globalThis.Buffer.concat(chunks, length));\n} : (chunks, length) => {\n const out = new Uint8Array(length);\n let off = 0;\n for (let b of chunks) {\n if (off + b.length > out.length) {\n b = b.subarray(0, out.length - off);\n }\n out.set(b, off);\n off += b.length;\n }\n return out;\n};\nexport const alloc = useBuffer ? size => {\n return globalThis.Buffer.allocUnsafe(size);\n} : size => {\n return new Uint8Array(size);\n};\nexport const toHex = useBuffer ? d => {\n if (typeof d === 'string') {\n return d;\n }\n return globalThis.Buffer.from(toBytes(d)).toString('hex');\n} : d => {\n if (typeof d === 'string') {\n return d;\n }\n return Array.prototype.reduce.call(toBytes(d), (p, c) => `${ p }${ c.toString(16).padStart(2, '0') }`, '');\n};\nexport const fromHex = useBuffer ? hex => {\n if (hex instanceof Uint8Array) {\n return hex;\n }\n return globalThis.Buffer.from(hex, 'hex');\n} : hex => {\n if (hex instanceof Uint8Array) {\n return hex;\n }\n if (!hex.length) {\n return new Uint8Array(0);\n }\n return new Uint8Array(hex.split('').map((c, i, d) => i % 2 === 0 ? `0x${ c }${ d[i + 1] }` : '').filter(Boolean).map(e => parseInt(e, 16)));\n};\nfunction toBytes(obj) {\n if (obj instanceof Uint8Array && obj.constructor.name === 'Uint8Array') {\n return obj;\n }\n if (obj instanceof ArrayBuffer) {\n return new Uint8Array(obj);\n }\n if (ArrayBuffer.isView(obj)) {\n return new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function compare(b1, b2) {\n if (isBuffer(b1) && isBuffer(b2)) {\n return b1.compare(b2);\n }\n for (let i = 0; i < b1.length; i++) {\n if (b1[i] === b2[i]) {\n continue;\n }\n return b1[i] < b2[i] ? -1 : 1;\n }\n return 0;\n}\nfunction utf8ToBytes(string, units = Infinity) {\n let codePoint;\n const length = string.length;\n let leadSurrogate = null;\n const bytes = [];\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n if (codePoint > 55295 && codePoint < 57344) {\n if (!leadSurrogate) {\n if (codePoint > 56319) {\n if ((units -= 3) > -1)\n bytes.push(239, 191, 189);\n continue;\n } else if (i + 1 === length) {\n if ((units -= 3) > -1)\n bytes.push(239, 191, 189);\n continue;\n }\n leadSurrogate = codePoint;\n continue;\n }\n if (codePoint < 56320) {\n if ((units -= 3) > -1)\n bytes.push(239, 191, 189);\n leadSurrogate = codePoint;\n continue;\n }\n codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n } else if (leadSurrogate) {\n if ((units -= 3) > -1)\n bytes.push(239, 191, 189);\n }\n leadSurrogate = null;\n if (codePoint < 128) {\n if ((units -= 1) < 0)\n break;\n bytes.push(codePoint);\n } else if (codePoint < 2048) {\n if ((units -= 2) < 0)\n break;\n bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n } else if (codePoint < 65536) {\n if ((units -= 3) < 0)\n break;\n bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n } else if (codePoint < 1114112) {\n if ((units -= 4) < 0)\n break;\n bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n } else {\n throw new Error('Invalid code point');\n }\n }\n return bytes;\n}\nfunction utf8Slice(buf, offset, end) {\n const res = [];\n while (offset < end) {\n const firstByte = buf[offset];\n let codePoint = null;\n let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n if (offset + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint;\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 128) {\n codePoint = firstByte;\n }\n break;\n case 2:\n secondByte = buf[offset + 1];\n if ((secondByte & 192) === 128) {\n tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n if (tempCodePoint > 127) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 3:\n secondByte = buf[offset + 1];\n thirdByte = buf[offset + 2];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 4:\n secondByte = buf[offset + 1];\n thirdByte = buf[offset + 2];\n fourthByte = buf[offset + 3];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n if (codePoint === null) {\n codePoint = 65533;\n bytesPerSequence = 1;\n } else if (codePoint > 65535) {\n codePoint -= 65536;\n res.push(codePoint >>> 10 & 1023 | 55296);\n codePoint = 56320 | codePoint & 1023;\n }\n res.push(codePoint);\n offset += bytesPerSequence;\n }\n return decodeCodePointsArray(res);\n}\nconst MAX_ARGUMENTS_LENGTH = 4096;\nexport function decodeCodePointsArray(codePoints) {\n const len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints);\n }\n let res = '';\n let i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n return res;\n}", "import {\n alloc,\n concat,\n slice\n} from './byte-utils.js';\nconst defaultChunkSize = 256;\nexport class Bl {\n constructor(chunkSize = defaultChunkSize) {\n this.chunkSize = chunkSize;\n this.cursor = 0;\n this.maxCursor = -1;\n this.chunks = [];\n this._initReuseChunk = null;\n }\n reset() {\n this.cursor = 0;\n this.maxCursor = -1;\n if (this.chunks.length) {\n this.chunks = [];\n }\n if (this._initReuseChunk !== null) {\n this.chunks.push(this._initReuseChunk);\n this.maxCursor = this._initReuseChunk.length - 1;\n }\n }\n push(bytes) {\n let topChunk = this.chunks[this.chunks.length - 1];\n const newMax = this.cursor + bytes.length;\n if (newMax <= this.maxCursor + 1) {\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1;\n topChunk.set(bytes, chunkPos);\n } else {\n if (topChunk) {\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1;\n if (chunkPos < topChunk.length) {\n this.chunks[this.chunks.length - 1] = topChunk.subarray(0, chunkPos);\n this.maxCursor = this.cursor - 1;\n }\n }\n if (bytes.length < 64 && bytes.length < this.chunkSize) {\n topChunk = alloc(this.chunkSize);\n this.chunks.push(topChunk);\n this.maxCursor += topChunk.length;\n if (this._initReuseChunk === null) {\n this._initReuseChunk = topChunk;\n }\n topChunk.set(bytes, 0);\n } else {\n this.chunks.push(bytes);\n this.maxCursor += bytes.length;\n }\n }\n this.cursor += bytes.length;\n }\n toBytes(reset = false) {\n let byts;\n if (this.chunks.length === 1) {\n const chunk = this.chunks[0];\n if (reset && this.cursor > chunk.length / 2) {\n byts = this.cursor === chunk.length ? chunk : chunk.subarray(0, this.cursor);\n this._initReuseChunk = null;\n this.chunks = [];\n } else {\n byts = slice(chunk, 0, this.cursor);\n }\n } else {\n byts = concat(this.chunks, this.cursor);\n }\n if (reset) {\n this.reset();\n }\n return byts;\n }\n}", "const decodeErrPrefix = 'CBOR decode error:';\nconst encodeErrPrefix = 'CBOR encode error:';\nconst uintMinorPrefixBytes = [];\nuintMinorPrefixBytes[23] = 1;\nuintMinorPrefixBytes[24] = 2;\nuintMinorPrefixBytes[25] = 3;\nuintMinorPrefixBytes[26] = 5;\nuintMinorPrefixBytes[27] = 9;\nfunction assertEnoughData(data, pos, need) {\n if (data.length - pos < need) {\n throw new Error(`${ decodeErrPrefix } not enough data for type`);\n }\n}\nexport {\n decodeErrPrefix,\n encodeErrPrefix,\n uintMinorPrefixBytes,\n assertEnoughData\n};", "import {\n Token,\n Type\n} from './token.js';\nimport {\n decodeErrPrefix,\n assertEnoughData\n} from './common.js';\nexport const uintBoundaries = [\n 24,\n 256,\n 65536,\n 4294967296,\n BigInt('18446744073709551616')\n];\nexport function readUint8(data, offset, options) {\n assertEnoughData(data, offset, 1);\n const value = data[offset];\n if (options.strict === true && value < uintBoundaries[0]) {\n throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n }\n return value;\n}\nexport function readUint16(data, offset, options) {\n assertEnoughData(data, offset, 2);\n const value = data[offset] << 8 | data[offset + 1];\n if (options.strict === true && value < uintBoundaries[1]) {\n throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n }\n return value;\n}\nexport function readUint32(data, offset, options) {\n assertEnoughData(data, offset, 4);\n const value = data[offset] * 16777216 + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3];\n if (options.strict === true && value < uintBoundaries[2]) {\n throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n }\n return value;\n}\nexport function readUint64(data, offset, options) {\n assertEnoughData(data, offset, 8);\n const hi = data[offset] * 16777216 + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3];\n const lo = data[offset + 4] * 16777216 + (data[offset + 5] << 16) + (data[offset + 6] << 8) + data[offset + 7];\n const value = (BigInt(hi) << BigInt(32)) + BigInt(lo);\n if (options.strict === true && value < uintBoundaries[3]) {\n throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n }\n if (value <= Number.MAX_SAFE_INTEGER) {\n return Number(value);\n }\n if (options.allowBigInt === true) {\n return value;\n }\n throw new Error(`${ decodeErrPrefix } integers outside of the safe integer range are not supported`);\n}\nexport function decodeUint8(data, pos, _minor, options) {\n return new Token(Type.uint, readUint8(data, pos + 1, options), 2);\n}\nexport function decodeUint16(data, pos, _minor, options) {\n return new Token(Type.uint, readUint16(data, pos + 1, options), 3);\n}\nexport function decodeUint32(data, pos, _minor, options) {\n return new Token(Type.uint, readUint32(data, pos + 1, options), 5);\n}\nexport function decodeUint64(data, pos, _minor, options) {\n return new Token(Type.uint, readUint64(data, pos + 1, options), 9);\n}\nexport function encodeUint(buf, token) {\n return encodeUintValue(buf, 0, token.value);\n}\nexport function encodeUintValue(buf, major, uint) {\n if (uint < uintBoundaries[0]) {\n const nuint = Number(uint);\n buf.push([major | nuint]);\n } else if (uint < uintBoundaries[1]) {\n const nuint = Number(uint);\n buf.push([\n major | 24,\n nuint\n ]);\n } else if (uint < uintBoundaries[2]) {\n const nuint = Number(uint);\n buf.push([\n major | 25,\n nuint >>> 8,\n nuint & 255\n ]);\n } else if (uint < uintBoundaries[3]) {\n const nuint = Number(uint);\n buf.push([\n major | 26,\n nuint >>> 24 & 255,\n nuint >>> 16 & 255,\n nuint >>> 8 & 255,\n nuint & 255\n ]);\n } else {\n const buint = BigInt(uint);\n if (buint < uintBoundaries[4]) {\n const set = [\n major | 27,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n let lo = Number(buint & BigInt(4294967295));\n let hi = Number(buint >> BigInt(32) & BigInt(4294967295));\n set[8] = lo & 255;\n lo = lo >> 8;\n set[7] = lo & 255;\n lo = lo >> 8;\n set[6] = lo & 255;\n lo = lo >> 8;\n set[5] = lo & 255;\n set[4] = hi & 255;\n hi = hi >> 8;\n set[3] = hi & 255;\n hi = hi >> 8;\n set[2] = hi & 255;\n hi = hi >> 8;\n set[1] = hi & 255;\n buf.push(set);\n } else {\n throw new Error(`${ decodeErrPrefix } encountered BigInt larger than allowable range`);\n }\n }\n}\nencodeUint.encodedSize = function encodedSize(token) {\n return encodeUintValue.encodedSize(token.value);\n};\nencodeUintValue.encodedSize = function encodedSize(uint) {\n if (uint < uintBoundaries[0]) {\n return 1;\n }\n if (uint < uintBoundaries[1]) {\n return 2;\n }\n if (uint < uintBoundaries[2]) {\n return 3;\n }\n if (uint < uintBoundaries[3]) {\n return 5;\n }\n return 9;\n};\nencodeUint.compareTokens = function compareTokens(tok1, tok2) {\n return tok1.value < tok2.value ? -1 : tok1.value > tok2.value ? 1 : 0;\n};", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nexport function decodeNegint8(data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint8(data, pos + 1, options), 2);\n}\nexport function decodeNegint16(data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint16(data, pos + 1, options), 3);\n}\nexport function decodeNegint32(data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint32(data, pos + 1, options), 5);\n}\nconst neg1b = BigInt(-1);\nconst pos1b = BigInt(1);\nexport function decodeNegint64(data, pos, _minor, options) {\n const int = uint.readUint64(data, pos + 1, options);\n if (typeof int !== 'bigint') {\n const value = -1 - int;\n if (value >= Number.MIN_SAFE_INTEGER) {\n return new Token(Type.negint, value, 9);\n }\n }\n if (options.allowBigInt !== true) {\n throw new Error(`${ decodeErrPrefix } integers outside of the safe integer range are not supported`);\n }\n return new Token(Type.negint, neg1b - BigInt(int), 9);\n}\nexport function encodeNegint(buf, token) {\n const negint = token.value;\n const unsigned = typeof negint === 'bigint' ? negint * neg1b - pos1b : negint * -1 - 1;\n uint.encodeUintValue(buf, token.type.majorEncoded, unsigned);\n}\nencodeNegint.encodedSize = function encodedSize(token) {\n const negint = token.value;\n const unsigned = typeof negint === 'bigint' ? negint * neg1b - pos1b : negint * -1 - 1;\n if (unsigned < uint.uintBoundaries[0]) {\n return 1;\n }\n if (unsigned < uint.uintBoundaries[1]) {\n return 2;\n }\n if (unsigned < uint.uintBoundaries[2]) {\n return 3;\n }\n if (unsigned < uint.uintBoundaries[3]) {\n return 5;\n }\n return 9;\n};\nencodeNegint.compareTokens = function compareTokens(tok1, tok2) {\n return tok1.value < tok2.value ? 1 : tok1.value > tok2.value ? -1 : 0;\n};", "import {\n Token,\n Type\n} from './token.js';\nimport {\n assertEnoughData,\n decodeErrPrefix\n} from './common.js';\nimport * as uint from './0uint.js';\nimport {\n compare,\n fromString,\n slice\n} from './byte-utils.js';\nfunction toToken(data, pos, prefix, length) {\n assertEnoughData(data, pos, prefix + length);\n const buf = slice(data, pos + prefix, pos + prefix + length);\n return new Token(Type.bytes, buf, prefix + length);\n}\nexport function decodeBytesCompact(data, pos, minor, _options) {\n return toToken(data, pos, 1, minor);\n}\nexport function decodeBytes8(data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeBytes16(data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeBytes32(data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeBytes64(data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options);\n if (typeof l === 'bigint') {\n throw new Error(`${ decodeErrPrefix } 64-bit integer bytes lengths not supported`);\n }\n return toToken(data, pos, 9, l);\n}\nfunction tokenBytes(token) {\n if (token.encodedBytes === undefined) {\n token.encodedBytes = token.type === Type.string ? fromString(token.value) : token.value;\n }\n return token.encodedBytes;\n}\nexport function encodeBytes(buf, token) {\n const bytes = tokenBytes(token);\n uint.encodeUintValue(buf, token.type.majorEncoded, bytes.length);\n buf.push(bytes);\n}\nencodeBytes.encodedSize = function encodedSize(token) {\n const bytes = tokenBytes(token);\n return uint.encodeUintValue.encodedSize(bytes.length) + bytes.length;\n};\nencodeBytes.compareTokens = function compareTokens(tok1, tok2) {\n return compareBytes(tokenBytes(tok1), tokenBytes(tok2));\n};\nexport function compareBytes(b1, b2) {\n return b1.length < b2.length ? -1 : b1.length > b2.length ? 1 : compare(b1, b2);\n}", "import {\n Token,\n Type\n} from './token.js';\nimport {\n assertEnoughData,\n decodeErrPrefix\n} from './common.js';\nimport * as uint from './0uint.js';\nimport { encodeBytes } from './2bytes.js';\nimport {\n toString,\n slice\n} from './byte-utils.js';\nfunction toToken(data, pos, prefix, length, options) {\n const totLength = prefix + length;\n assertEnoughData(data, pos, totLength);\n const tok = new Token(Type.string, toString(data, pos + prefix, pos + totLength), totLength);\n if (options.retainStringBytes === true) {\n tok.byteValue = slice(data, pos + prefix, pos + totLength);\n }\n return tok;\n}\nexport function decodeStringCompact(data, pos, minor, options) {\n return toToken(data, pos, 1, minor, options);\n}\nexport function decodeString8(data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options), options);\n}\nexport function decodeString16(data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options), options);\n}\nexport function decodeString32(data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options), options);\n}\nexport function decodeString64(data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options);\n if (typeof l === 'bigint') {\n throw new Error(`${ decodeErrPrefix } 64-bit integer string lengths not supported`);\n }\n return toToken(data, pos, 9, l, options);\n}\nexport const encodeString = encodeBytes;", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nfunction toToken(_data, _pos, prefix, length) {\n return new Token(Type.array, length, prefix);\n}\nexport function decodeArrayCompact(data, pos, minor, _options) {\n return toToken(data, pos, 1, minor);\n}\nexport function decodeArray8(data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeArray16(data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeArray32(data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeArray64(data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options);\n if (typeof l === 'bigint') {\n throw new Error(`${ decodeErrPrefix } 64-bit integer array lengths not supported`);\n }\n return toToken(data, pos, 9, l);\n}\nexport function decodeArrayIndefinite(data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n }\n return toToken(data, pos, 1, Infinity);\n}\nexport function encodeArray(buf, token) {\n uint.encodeUintValue(buf, Type.array.majorEncoded, token.value);\n}\nencodeArray.compareTokens = uint.encodeUint.compareTokens;\nencodeArray.encodedSize = function encodedSize(token) {\n return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nfunction toToken(_data, _pos, prefix, length) {\n return new Token(Type.map, length, prefix);\n}\nexport function decodeMapCompact(data, pos, minor, _options) {\n return toToken(data, pos, 1, minor);\n}\nexport function decodeMap8(data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeMap16(data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeMap32(data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeMap64(data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options);\n if (typeof l === 'bigint') {\n throw new Error(`${ decodeErrPrefix } 64-bit integer map lengths not supported`);\n }\n return toToken(data, pos, 9, l);\n}\nexport function decodeMapIndefinite(data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n }\n return toToken(data, pos, 1, Infinity);\n}\nexport function encodeMap(buf, token) {\n uint.encodeUintValue(buf, Type.map.majorEncoded, token.value);\n}\nencodeMap.compareTokens = uint.encodeUint.compareTokens;\nencodeMap.encodedSize = function encodedSize(token) {\n return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nexport function decodeTagCompact(_data, _pos, minor, _options) {\n return new Token(Type.tag, minor, 1);\n}\nexport function decodeTag8(data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint8(data, pos + 1, options), 2);\n}\nexport function decodeTag16(data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint16(data, pos + 1, options), 3);\n}\nexport function decodeTag32(data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint32(data, pos + 1, options), 5);\n}\nexport function decodeTag64(data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint64(data, pos + 1, options), 9);\n}\nexport function encodeTag(buf, token) {\n uint.encodeUintValue(buf, Type.tag.majorEncoded, token.value);\n}\nencodeTag.compareTokens = uint.encodeUint.compareTokens;\nencodeTag.encodedSize = function encodedSize(token) {\n return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n Token,\n Type\n} from './token.js';\nimport { decodeErrPrefix } from './common.js';\nimport { encodeUint } from './0uint.js';\nconst MINOR_FALSE = 20;\nconst MINOR_TRUE = 21;\nconst MINOR_NULL = 22;\nconst MINOR_UNDEFINED = 23;\nexport function decodeUndefined(_data, _pos, _minor, options) {\n if (options.allowUndefined === false) {\n throw new Error(`${ decodeErrPrefix } undefined values are not supported`);\n } else if (options.coerceUndefinedToNull === true) {\n return new Token(Type.null, null, 1);\n }\n return new Token(Type.undefined, undefined, 1);\n}\nexport function decodeBreak(_data, _pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n }\n return new Token(Type.break, undefined, 1);\n}\nfunction createToken(value, bytes, options) {\n if (options) {\n if (options.allowNaN === false && Number.isNaN(value)) {\n throw new Error(`${ decodeErrPrefix } NaN values are not supported`);\n }\n if (options.allowInfinity === false && (value === Infinity || value === -Infinity)) {\n throw new Error(`${ decodeErrPrefix } Infinity values are not supported`);\n }\n }\n return new Token(Type.float, value, bytes);\n}\nexport function decodeFloat16(data, pos, _minor, options) {\n return createToken(readFloat16(data, pos + 1), 3, options);\n}\nexport function decodeFloat32(data, pos, _minor, options) {\n return createToken(readFloat32(data, pos + 1), 5, options);\n}\nexport function decodeFloat64(data, pos, _minor, options) {\n return createToken(readFloat64(data, pos + 1), 9, options);\n}\nexport function encodeFloat(buf, token, options) {\n const float = token.value;\n if (float === false) {\n buf.push([Type.float.majorEncoded | MINOR_FALSE]);\n } else if (float === true) {\n buf.push([Type.float.majorEncoded | MINOR_TRUE]);\n } else if (float === null) {\n buf.push([Type.float.majorEncoded | MINOR_NULL]);\n } else if (float === undefined) {\n buf.push([Type.float.majorEncoded | MINOR_UNDEFINED]);\n } else {\n let decoded;\n let success = false;\n if (!options || options.float64 !== true) {\n encodeFloat16(float);\n decoded = readFloat16(ui8a, 1);\n if (float === decoded || Number.isNaN(float)) {\n ui8a[0] = 249;\n buf.push(ui8a.slice(0, 3));\n success = true;\n } else {\n encodeFloat32(float);\n decoded = readFloat32(ui8a, 1);\n if (float === decoded) {\n ui8a[0] = 250;\n buf.push(ui8a.slice(0, 5));\n success = true;\n }\n }\n }\n if (!success) {\n encodeFloat64(float);\n decoded = readFloat64(ui8a, 1);\n ui8a[0] = 251;\n buf.push(ui8a.slice(0, 9));\n }\n }\n}\nencodeFloat.encodedSize = function encodedSize(token, options) {\n const float = token.value;\n if (float === false || float === true || float === null || float === undefined) {\n return 1;\n }\n if (!options || options.float64 !== true) {\n encodeFloat16(float);\n let decoded = readFloat16(ui8a, 1);\n if (float === decoded || Number.isNaN(float)) {\n return 3;\n }\n encodeFloat32(float);\n decoded = readFloat32(ui8a, 1);\n if (float === decoded) {\n return 5;\n }\n }\n return 9;\n};\nconst buffer = new ArrayBuffer(9);\nconst dataView = new DataView(buffer, 1);\nconst ui8a = new Uint8Array(buffer, 0);\nfunction encodeFloat16(inp) {\n if (inp === Infinity) {\n dataView.setUint16(0, 31744, false);\n } else if (inp === -Infinity) {\n dataView.setUint16(0, 64512, false);\n } else if (Number.isNaN(inp)) {\n dataView.setUint16(0, 32256, false);\n } else {\n dataView.setFloat32(0, inp);\n const valu32 = dataView.getUint32(0);\n const exponent = (valu32 & 2139095040) >> 23;\n const mantissa = valu32 & 8388607;\n if (exponent === 255) {\n dataView.setUint16(0, 31744, false);\n } else if (exponent === 0) {\n dataView.setUint16(0, (inp & 2147483648) >> 16 | mantissa >> 13, false);\n } else {\n const logicalExponent = exponent - 127;\n if (logicalExponent < -24) {\n dataView.setUint16(0, 0);\n } else if (logicalExponent < -14) {\n dataView.setUint16(0, (valu32 & 2147483648) >> 16 | 1 << 24 + logicalExponent, false);\n } else {\n dataView.setUint16(0, (valu32 & 2147483648) >> 16 | logicalExponent + 15 << 10 | mantissa >> 13, false);\n }\n }\n }\n}\nfunction readFloat16(ui8a, pos) {\n if (ui8a.length - pos < 2) {\n throw new Error(`${ decodeErrPrefix } not enough data for float16`);\n }\n const half = (ui8a[pos] << 8) + ui8a[pos + 1];\n if (half === 31744) {\n return Infinity;\n }\n if (half === 64512) {\n return -Infinity;\n }\n if (half === 32256) {\n return NaN;\n }\n const exp = half >> 10 & 31;\n const mant = half & 1023;\n let val;\n if (exp === 0) {\n val = mant * 2 ** -24;\n } else if (exp !== 31) {\n val = (mant + 1024) * 2 ** (exp - 25);\n } else {\n val = mant === 0 ? Infinity : NaN;\n }\n return half & 32768 ? -val : val;\n}\nfunction encodeFloat32(inp) {\n dataView.setFloat32(0, inp, false);\n}\nfunction readFloat32(ui8a, pos) {\n if (ui8a.length - pos < 4) {\n throw new Error(`${ decodeErrPrefix } not enough data for float32`);\n }\n const offset = (ui8a.byteOffset || 0) + pos;\n return new DataView(ui8a.buffer, offset, 4).getFloat32(0, false);\n}\nfunction encodeFloat64(inp) {\n dataView.setFloat64(0, inp, false);\n}\nfunction readFloat64(ui8a, pos) {\n if (ui8a.length - pos < 8) {\n throw new Error(`${ decodeErrPrefix } not enough data for float64`);\n }\n const offset = (ui8a.byteOffset || 0) + pos;\n return new DataView(ui8a.buffer, offset, 8).getFloat64(0, false);\n}\nencodeFloat.compareTokens = encodeUint.compareTokens;", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport * as negint from './1negint.js';\nimport * as bytes from './2bytes.js';\nimport * as string from './3string.js';\nimport * as array from './4array.js';\nimport * as map from './5map.js';\nimport * as tag from './6tag.js';\nimport * as float from './7float.js';\nimport { decodeErrPrefix } from './common.js';\nimport { fromArray } from './byte-utils.js';\nfunction invalidMinor(data, pos, minor) {\n throw new Error(`${ decodeErrPrefix } encountered invalid minor (${ minor }) for major ${ data[pos] >>> 5 }`);\n}\nfunction errorer(msg) {\n return () => {\n throw new Error(`${ decodeErrPrefix } ${ msg }`);\n };\n}\nexport const jump = [];\nfor (let i = 0; i <= 23; i++) {\n jump[i] = invalidMinor;\n}\njump[24] = uint.decodeUint8;\njump[25] = uint.decodeUint16;\njump[26] = uint.decodeUint32;\njump[27] = uint.decodeUint64;\njump[28] = invalidMinor;\njump[29] = invalidMinor;\njump[30] = invalidMinor;\njump[31] = invalidMinor;\nfor (let i = 32; i <= 55; i++) {\n jump[i] = invalidMinor;\n}\njump[56] = negint.decodeNegint8;\njump[57] = negint.decodeNegint16;\njump[58] = negint.decodeNegint32;\njump[59] = negint.decodeNegint64;\njump[60] = invalidMinor;\njump[61] = invalidMinor;\njump[62] = invalidMinor;\njump[63] = invalidMinor;\nfor (let i = 64; i <= 87; i++) {\n jump[i] = bytes.decodeBytesCompact;\n}\njump[88] = bytes.decodeBytes8;\njump[89] = bytes.decodeBytes16;\njump[90] = bytes.decodeBytes32;\njump[91] = bytes.decodeBytes64;\njump[92] = invalidMinor;\njump[93] = invalidMinor;\njump[94] = invalidMinor;\njump[95] = errorer('indefinite length bytes/strings are not supported');\nfor (let i = 96; i <= 119; i++) {\n jump[i] = string.decodeStringCompact;\n}\njump[120] = string.decodeString8;\njump[121] = string.decodeString16;\njump[122] = string.decodeString32;\njump[123] = string.decodeString64;\njump[124] = invalidMinor;\njump[125] = invalidMinor;\njump[126] = invalidMinor;\njump[127] = errorer('indefinite length bytes/strings are not supported');\nfor (let i = 128; i <= 151; i++) {\n jump[i] = array.decodeArrayCompact;\n}\njump[152] = array.decodeArray8;\njump[153] = array.decodeArray16;\njump[154] = array.decodeArray32;\njump[155] = array.decodeArray64;\njump[156] = invalidMinor;\njump[157] = invalidMinor;\njump[158] = invalidMinor;\njump[159] = array.decodeArrayIndefinite;\nfor (let i = 160; i <= 183; i++) {\n jump[i] = map.decodeMapCompact;\n}\njump[184] = map.decodeMap8;\njump[185] = map.decodeMap16;\njump[186] = map.decodeMap32;\njump[187] = map.decodeMap64;\njump[188] = invalidMinor;\njump[189] = invalidMinor;\njump[190] = invalidMinor;\njump[191] = map.decodeMapIndefinite;\nfor (let i = 192; i <= 215; i++) {\n jump[i] = tag.decodeTagCompact;\n}\njump[216] = tag.decodeTag8;\njump[217] = tag.decodeTag16;\njump[218] = tag.decodeTag32;\njump[219] = tag.decodeTag64;\njump[220] = invalidMinor;\njump[221] = invalidMinor;\njump[222] = invalidMinor;\njump[223] = invalidMinor;\nfor (let i = 224; i <= 243; i++) {\n jump[i] = errorer('simple values are not supported');\n}\njump[244] = invalidMinor;\njump[245] = invalidMinor;\njump[246] = invalidMinor;\njump[247] = float.decodeUndefined;\njump[248] = errorer('simple values are not supported');\njump[249] = float.decodeFloat16;\njump[250] = float.decodeFloat32;\njump[251] = float.decodeFloat64;\njump[252] = invalidMinor;\njump[253] = invalidMinor;\njump[254] = invalidMinor;\njump[255] = float.decodeBreak;\nexport const quick = [];\nfor (let i = 0; i < 24; i++) {\n quick[i] = new Token(Type.uint, i, 1);\n}\nfor (let i = -1; i >= -24; i--) {\n quick[31 - i] = new Token(Type.negint, i, 1);\n}\nquick[64] = new Token(Type.bytes, new Uint8Array(0), 1);\nquick[96] = new Token(Type.string, '', 1);\nquick[128] = new Token(Type.array, 0, 1);\nquick[160] = new Token(Type.map, 0, 1);\nquick[244] = new Token(Type.false, false, 1);\nquick[245] = new Token(Type.true, true, 1);\nquick[246] = new Token(Type.null, null, 1);\nexport function quickEncodeToken(token) {\n switch (token.type) {\n case Type.false:\n return fromArray([244]);\n case Type.true:\n return fromArray([245]);\n case Type.null:\n return fromArray([246]);\n case Type.bytes:\n if (!token.value.length) {\n return fromArray([64]);\n }\n return;\n case Type.string:\n if (token.value === '') {\n return fromArray([96]);\n }\n return;\n case Type.array:\n if (token.value === 0) {\n return fromArray([128]);\n }\n return;\n case Type.map:\n if (token.value === 0) {\n return fromArray([160]);\n }\n return;\n case Type.uint:\n if (token.value < 24) {\n return fromArray([Number(token.value)]);\n }\n return;\n case Type.negint:\n if (token.value >= -24) {\n return fromArray([31 - Number(token.value)]);\n }\n }\n}", "import { is } from './is.js';\nimport {\n Token,\n Type\n} from './token.js';\nimport { Bl } from './bl.js';\nimport { encodeErrPrefix } from './common.js';\nimport { quickEncodeToken } from './jump.js';\nimport { asU8A } from './byte-utils.js';\nimport { encodeUint } from './0uint.js';\nimport { encodeNegint } from './1negint.js';\nimport { encodeBytes } from './2bytes.js';\nimport { encodeString } from './3string.js';\nimport { encodeArray } from './4array.js';\nimport { encodeMap } from './5map.js';\nimport { encodeTag } from './6tag.js';\nimport { encodeFloat } from './7float.js';\nconst defaultEncodeOptions = {\n float64: false,\n mapSorter,\n quickEncodeToken\n};\nexport function makeCborEncoders() {\n const encoders = [];\n encoders[Type.uint.major] = encodeUint;\n encoders[Type.negint.major] = encodeNegint;\n encoders[Type.bytes.major] = encodeBytes;\n encoders[Type.string.major] = encodeString;\n encoders[Type.array.major] = encodeArray;\n encoders[Type.map.major] = encodeMap;\n encoders[Type.tag.major] = encodeTag;\n encoders[Type.float.major] = encodeFloat;\n return encoders;\n}\nconst cborEncoders = makeCborEncoders();\nconst buf = new Bl();\nclass Ref {\n constructor(obj, parent) {\n this.obj = obj;\n this.parent = parent;\n }\n includes(obj) {\n let p = this;\n do {\n if (p.obj === obj) {\n return true;\n }\n } while (p = p.parent);\n return false;\n }\n static createCheck(stack, obj) {\n if (stack && stack.includes(obj)) {\n throw new Error(`${ encodeErrPrefix } object contains circular references`);\n }\n return new Ref(obj, stack);\n }\n}\nconst simpleTokens = {\n null: new Token(Type.null, null),\n undefined: new Token(Type.undefined, undefined),\n true: new Token(Type.true, true),\n false: new Token(Type.false, false),\n emptyArray: new Token(Type.array, 0),\n emptyMap: new Token(Type.map, 0)\n};\nconst typeEncoders = {\n number(obj, _typ, _options, _refStack) {\n if (!Number.isInteger(obj) || !Number.isSafeInteger(obj)) {\n return new Token(Type.float, obj);\n } else if (obj >= 0) {\n return new Token(Type.uint, obj);\n } else {\n return new Token(Type.negint, obj);\n }\n },\n bigint(obj, _typ, _options, _refStack) {\n if (obj >= BigInt(0)) {\n return new Token(Type.uint, obj);\n } else {\n return new Token(Type.negint, obj);\n }\n },\n Uint8Array(obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, obj);\n },\n string(obj, _typ, _options, _refStack) {\n return new Token(Type.string, obj);\n },\n boolean(obj, _typ, _options, _refStack) {\n return obj ? simpleTokens.true : simpleTokens.false;\n },\n null(_obj, _typ, _options, _refStack) {\n return simpleTokens.null;\n },\n undefined(_obj, _typ, _options, _refStack) {\n return simpleTokens.undefined;\n },\n ArrayBuffer(obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj));\n },\n DataView(obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength));\n },\n Array(obj, _typ, options, refStack) {\n if (!obj.length) {\n if (options.addBreakTokens === true) {\n return [\n simpleTokens.emptyArray,\n new Token(Type.break)\n ];\n }\n return simpleTokens.emptyArray;\n }\n refStack = Ref.createCheck(refStack, obj);\n const entries = [];\n let i = 0;\n for (const e of obj) {\n entries[i++] = objectToTokens(e, options, refStack);\n }\n if (options.addBreakTokens) {\n return [\n new Token(Type.array, obj.length),\n entries,\n new Token(Type.break)\n ];\n }\n return [\n new Token(Type.array, obj.length),\n entries\n ];\n },\n Object(obj, typ, options, refStack) {\n const isMap = typ !== 'Object';\n const keys = isMap ? obj.keys() : Object.keys(obj);\n const length = isMap ? obj.size : keys.length;\n if (!length) {\n if (options.addBreakTokens === true) {\n return [\n simpleTokens.emptyMap,\n new Token(Type.break)\n ];\n }\n return simpleTokens.emptyMap;\n }\n refStack = Ref.createCheck(refStack, obj);\n const entries = [];\n let i = 0;\n for (const key of keys) {\n entries[i++] = [\n objectToTokens(key, options, refStack),\n objectToTokens(isMap ? obj.get(key) : obj[key], options, refStack)\n ];\n }\n sortMapEntries(entries, options);\n if (options.addBreakTokens) {\n return [\n new Token(Type.map, length),\n entries,\n new Token(Type.break)\n ];\n }\n return [\n new Token(Type.map, length),\n entries\n ];\n }\n};\ntypeEncoders.Map = typeEncoders.Object;\ntypeEncoders.Buffer = typeEncoders.Uint8Array;\nfor (const typ of 'Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64'.split(' ')) {\n typeEncoders[`${ typ }Array`] = typeEncoders.DataView;\n}\nfunction objectToTokens(obj, options = {}, refStack) {\n const typ = is(obj);\n const customTypeEncoder = options && options.typeEncoders && options.typeEncoders[typ] || typeEncoders[typ];\n if (typeof customTypeEncoder === 'function') {\n const tokens = customTypeEncoder(obj, typ, options, refStack);\n if (tokens != null) {\n return tokens;\n }\n }\n const typeEncoder = typeEncoders[typ];\n if (!typeEncoder) {\n throw new Error(`${ encodeErrPrefix } unsupported type: ${ typ }`);\n }\n return typeEncoder(obj, typ, options, refStack);\n}\nfunction sortMapEntries(entries, options) {\n if (options.mapSorter) {\n entries.sort(options.mapSorter);\n }\n}\nfunction mapSorter(e1, e2) {\n const keyToken1 = Array.isArray(e1[0]) ? e1[0][0] : e1[0];\n const keyToken2 = Array.isArray(e2[0]) ? e2[0][0] : e2[0];\n if (keyToken1.type !== keyToken2.type) {\n return keyToken1.type.compare(keyToken2.type);\n }\n const major = keyToken1.type.major;\n const tcmp = cborEncoders[major].compareTokens(keyToken1, keyToken2);\n if (tcmp === 0) {\n console.warn('WARNING: complex key types used, CBOR key sorting guarantees are gone');\n }\n return tcmp;\n}\nfunction tokensToEncoded(buf, tokens, encoders, options) {\n if (Array.isArray(tokens)) {\n for (const token of tokens) {\n tokensToEncoded(buf, token, encoders, options);\n }\n } else {\n encoders[tokens.type.major](buf, tokens, options);\n }\n}\nfunction encodeCustom(data, encoders, options) {\n const tokens = objectToTokens(data, options);\n if (!Array.isArray(tokens) && options.quickEncodeToken) {\n const quickBytes = options.quickEncodeToken(tokens);\n if (quickBytes) {\n return quickBytes;\n }\n const encoder = encoders[tokens.type.major];\n if (encoder.encodedSize) {\n const size = encoder.encodedSize(tokens, options);\n const buf = new Bl(size);\n encoder(buf, tokens, options);\n if (buf.chunks.length !== 1) {\n throw new Error(`Unexpected error: pre-calculated length for ${ tokens } was wrong`);\n }\n return asU8A(buf.chunks[0]);\n }\n }\n buf.reset();\n tokensToEncoded(buf, tokens, encoders, options);\n return buf.toBytes(true);\n}\nfunction encode(data, options) {\n options = Object.assign({}, defaultEncodeOptions, options);\n return encodeCustom(data, cborEncoders, options);\n}\nexport {\n objectToTokens,\n encode,\n encodeCustom,\n Ref\n};", "import { decodeErrPrefix } from './common.js';\nimport { Type } from './token.js';\nimport {\n jump,\n quick\n} from './jump.js';\nconst defaultDecodeOptions = {\n strict: false,\n allowIndefinite: true,\n allowUndefined: true,\n allowBigInt: true\n};\nclass Tokeniser {\n constructor(data, options = {}) {\n this.pos = 0;\n this.data = data;\n this.options = options;\n }\n done() {\n return this.pos >= this.data.length;\n }\n next() {\n const byt = this.data[this.pos];\n let token = quick[byt];\n if (token === undefined) {\n const decoder = jump[byt];\n if (!decoder) {\n throw new Error(`${ decodeErrPrefix } no decoder for major type ${ byt >>> 5 } (byte 0x${ byt.toString(16).padStart(2, '0') })`);\n }\n const minor = byt & 31;\n token = decoder(this.data, this.pos, minor, this.options);\n }\n this.pos += token.encodedLength;\n return token;\n }\n}\nconst DONE = Symbol.for('DONE');\nconst BREAK = Symbol.for('BREAK');\nfunction tokenToArray(token, tokeniser, options) {\n const arr = [];\n for (let i = 0; i < token.value; i++) {\n const value = tokensToObject(tokeniser, options);\n if (value === BREAK) {\n if (token.value === Infinity) {\n break;\n }\n throw new Error(`${ decodeErrPrefix } got unexpected break to lengthed array`);\n }\n if (value === DONE) {\n throw new Error(`${ decodeErrPrefix } found array but not enough entries (got ${ i }, expected ${ token.value })`);\n }\n arr[i] = value;\n }\n return arr;\n}\nfunction tokenToMap(token, tokeniser, options) {\n const useMaps = options.useMaps === true;\n const obj = useMaps ? undefined : {};\n const m = useMaps ? new Map() : undefined;\n for (let i = 0; i < token.value; i++) {\n const key = tokensToObject(tokeniser, options);\n if (key === BREAK) {\n if (token.value === Infinity) {\n break;\n }\n throw new Error(`${ decodeErrPrefix } got unexpected break to lengthed map`);\n }\n if (key === DONE) {\n throw new Error(`${ decodeErrPrefix } found map but not enough entries (got ${ i } [no key], expected ${ token.value })`);\n }\n if (useMaps !== true && typeof key !== 'string') {\n throw new Error(`${ decodeErrPrefix } non-string keys not supported (got ${ typeof key })`);\n }\n if (options.rejectDuplicateMapKeys === true) {\n if (useMaps && m.has(key) || !useMaps && key in obj) {\n throw new Error(`${ decodeErrPrefix } found repeat map key \"${ key }\"`);\n }\n }\n const value = tokensToObject(tokeniser, options);\n if (value === DONE) {\n throw new Error(`${ decodeErrPrefix } found map but not enough entries (got ${ i } [no value], expected ${ token.value })`);\n }\n if (useMaps) {\n m.set(key, value);\n } else {\n obj[key] = value;\n }\n }\n return useMaps ? m : obj;\n}\nfunction tokensToObject(tokeniser, options) {\n if (tokeniser.done()) {\n return DONE;\n }\n const token = tokeniser.next();\n if (token.type === Type.break) {\n return BREAK;\n }\n if (token.type.terminal) {\n return token.value;\n }\n if (token.type === Type.array) {\n return tokenToArray(token, tokeniser, options);\n }\n if (token.type === Type.map) {\n return tokenToMap(token, tokeniser, options);\n }\n if (token.type === Type.tag) {\n if (options.tags && typeof options.tags[token.value] === 'function') {\n const tagged = tokensToObject(tokeniser, options);\n return options.tags[token.value](tagged);\n }\n throw new Error(`${ decodeErrPrefix } tag not supported (${ token.value })`);\n }\n throw new Error('unsupported');\n}\nfunction decode(data, options) {\n if (!(data instanceof Uint8Array)) {\n throw new Error(`${ decodeErrPrefix } data to decode must be a Uint8Array`);\n }\n options = Object.assign({}, defaultDecodeOptions, options);\n const tokeniser = options.tokenizer || new Tokeniser(data, options);\n const decoded = tokensToObject(tokeniser, options);\n if (decoded === DONE) {\n throw new Error(`${ decodeErrPrefix } did not find any content to decode`);\n }\n if (decoded === BREAK) {\n throw new Error(`${ decodeErrPrefix } got unexpected break`);\n }\n if (!tokeniser.done()) {\n throw new Error(`${ decodeErrPrefix } too many terminals, data makes no sense`);\n }\n return decoded;\n}\nexport {\n Tokeniser,\n tokensToObject,\n decode\n};", "import crypto from 'crypto'\nimport { Transform, TransformCallback } from 'stream'\nimport { check, schema } from '@atproto/common-web'\nimport { CID } from 'multiformats/cid'\nimport * as Block from 'multiformats/block'\nimport * as rawCodec from 'multiformats/codecs/raw'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport * as mf from 'multiformats'\nimport * as cborCodec from '@ipld/dag-cbor'\n\nexport const cborEncode = cborCodec.encode\nexport const cborDecode = cborCodec.decode\n\nexport const dataToCborBlock = async (data: unknown) => {\n return Block.encode({\n value: data,\n codec: cborCodec,\n hasher: sha256,\n })\n}\n\nexport const cidForCbor = async (data: unknown): Promise<CID> => {\n const block = await dataToCborBlock(data)\n return block.cid\n}\n\nexport const isValidCid = async (cidStr: string): Promise<boolean> => {\n try {\n const parsed = CID.parse(cidStr)\n return parsed.toString() === cidStr\n } catch (err) {\n return false\n }\n}\n\nexport const cborBytesToRecord = (\n bytes: Uint8Array,\n): Record<string, unknown> => {\n const val = cborDecode(bytes)\n if (!check.is(val, schema.map)) {\n throw new Error(`Expected object, got: ${val}`)\n }\n return val\n}\n\nexport const verifyCidForBytes = async (cid: CID, bytes: Uint8Array) => {\n const digest = await sha256.digest(bytes)\n const expected = CID.createV1(cid.code, digest)\n if (!cid.equals(expected)) {\n throw new Error(\n `Not a valid CID for bytes. Expected: ${expected.toString()} Got: ${cid.toString()}`,\n )\n }\n}\n\nexport const sha256ToCid = (hash: Uint8Array, codec: number): CID => {\n const digest = mf.digest.create(sha256.code, hash)\n return CID.createV1(codec, digest)\n}\n\nexport const sha256RawToCid = (hash: Uint8Array): CID => {\n return sha256ToCid(hash, rawCodec.code)\n}\n\nexport class VerifyCidTransform extends Transform {\n hasher = crypto.createHash('sha256')\n constructor(public cid: CID) {\n super()\n }\n\n _transform(chunk: Uint8Array, _enc: BufferEncoding, cb: TransformCallback) {\n this.hasher.update(chunk)\n cb(null, chunk)\n }\n\n _flush(cb: TransformCallback) {\n try {\n const cid = sha256RawToCid(this.hasher.digest())\n if (this.cid.equals(cid)) {\n return cb()\n } else {\n return cb(new VerifyCidError(this.cid, cid))\n }\n } catch (_err) {\n const err =\n _err instanceof Error\n ? _err\n : new Error('Unexpected error', { cause: _err })\n return cb(err)\n }\n }\n}\n\nexport class VerifyCidError extends Error {\n constructor(public expected: CID, public actual: CID) {\n super('Bad cid check')\n }\n}\n", "let decoder\ntry {\n\tdecoder = new TextDecoder()\n} catch(error) {}\nlet src\nlet srcEnd\nlet position = 0\nlet alreadySet\nconst EMPTY_ARRAY = []\nconst LEGACY_RECORD_INLINE_ID = 105\nconst RECORD_DEFINITIONS_ID = 0xdffe\nconst RECORD_INLINE_ID = 0xdfff // temporary first-come first-serve tag // proposed tag: 0x7265 // 're'\nconst BUNDLED_STRINGS_ID = 0xdff9\nconst PACKED_TABLE_TAG_ID = 51\nconst PACKED_REFERENCE_TAG_ID = 6\nconst STOP_CODE = {}\nlet strings = EMPTY_ARRAY\nlet stringPosition = 0\nlet currentDecoder = {}\nlet currentStructures\nlet srcString\nlet srcStringStart = 0\nlet srcStringEnd = 0\nlet bundledStrings\nlet referenceMap\nlet currentExtensions = []\nlet currentExtensionRanges = []\nlet packedValues\nlet dataView\nlet restoreMapsAsObject\nlet defaultOptions = {\n\tuseRecords: false,\n\tmapsAsObjects: true\n}\nlet sequentialMode = false\n\nexport class Decoder {\n\tconstructor(options) {\n\t\tif (options) {\n\t\t\tif ((options.keyMap || options._keyMap) && !options.useRecords) {\n\t\t\t\toptions.useRecords = false\n\t\t\t\toptions.mapsAsObjects = true\n\t\t\t}\n\t\t\tif (options.useRecords === false && options.mapsAsObjects === undefined)\n\t\t\t\toptions.mapsAsObjects = true\n\t\t\tif (options.getStructures)\n\t\t\t\toptions.getShared = options.getStructures\n\t\t\tif (options.getShared && !options.structures)\n\t\t\t\t(options.structures = []).uninitialized = true // this is what we use to denote an uninitialized structures\n\t\t\tif (options.keyMap) {\n\t\t\t\tthis.mapKey = new Map()\n\t\t\t\tfor (let [k,v] of Object.entries(options.keyMap)) this.mapKey.set(v,k)\n\t\t\t}\n\t\t}\n\t\tObject.assign(this, options)\n\t}\n\t/*\n\tdecodeKey(key) {\n\t\treturn this.keyMap\n\t\t\t? Object.keys(this.keyMap)[Object.values(this.keyMap).indexOf(key)] || key\n\t\t\t: key\n\t}\n\t*/\n\tdecodeKey(key) {\n\t\treturn this.keyMap ? this.mapKey.get(key) || key : key\n\t}\n\t\n\tencodeKey(key) {\n\t\treturn this.keyMap && this.keyMap.hasOwnProperty(key) ? this.keyMap[key] : key\n\t}\n\n\tencodeKeys(rec) {\n\t\tif (!this._keyMap) return rec\n\t\tlet map = new Map()\n\t\tfor (let [k,v] of Object.entries(rec)) map.set((this._keyMap.hasOwnProperty(k) ? this._keyMap[k] : k), v)\n\t\treturn map\n\t}\n\n\tdecodeKeys(map) {\n\t\tif (!this._keyMap || map.constructor.name != 'Map') return map\n\t\tif (!this._mapKey) {\n\t\t\tthis._mapKey = new Map()\n\t\t\tfor (let [k,v] of Object.entries(this._keyMap)) this._mapKey.set(v,k)\n\t\t}\n\t\tlet res = {}\n\t\t//map.forEach((v,k) => res[Object.keys(this._keyMap)[Object.values(this._keyMap).indexOf(k)] || k] = v)\n\t\tmap.forEach((v,k) => res[safeKey(this._mapKey.has(k) ? this._mapKey.get(k) : k)] = v)\n\t\treturn res\n\t}\n\t\n\tmapDecode(source, end) {\n\t\n\t\tlet res = this.decode(source)\n\t\tif (this._keyMap) { \n\t\t\t//Experiemntal support for Optimised KeyMap decoding \n\t\t\tswitch (res.constructor.name) {\n\t\t\t\tcase 'Array': return res.map(r => this.decodeKeys(r))\n\t\t\t\t//case 'Map': return this.decodeKeys(res)\n\t\t\t}\n\t\t}\n\t\treturn res\n\t}\n\n\tdecode(source, end) {\n\t\tif (src) {\n\t\t\t// re-entrant execution, save the state and restore it after we do this decode\n\t\t\treturn saveState(() => {\n\t\t\t\tclearSource()\n\t\t\t\treturn this ? this.decode(source, end) : Decoder.prototype.decode.call(defaultOptions, source, end)\n\t\t\t})\n\t\t}\n\t\tsrcEnd = end > -1 ? end : source.length\n\t\tposition = 0\n\t\tstringPosition = 0\n\t\tsrcStringEnd = 0\n\t\tsrcString = null\n\t\tstrings = EMPTY_ARRAY\n\t\tbundledStrings = null\n\t\tsrc = source\n\t\t// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend\n\t\t// technique for getting data from a database where it can be copied into an existing buffer instead of creating\n\t\t// new ones\n\t\ttry {\n\t\t\tdataView = source.dataView || (source.dataView = new DataView(source.buffer, source.byteOffset, source.byteLength))\n\t\t} catch(error) {\n\t\t\t// if it doesn't have a buffer, maybe it is the wrong type of object\n\t\t\tsrc = null\n\t\t\tif (source instanceof Uint8Array)\n\t\t\t\tthrow error\n\t\t\tthrow new Error('Source must be a Uint8Array or Buffer but was a ' + ((source && typeof source == 'object') ? source.constructor.name : typeof source))\n\t\t}\n\t\tif (this instanceof Decoder) {\n\t\t\tcurrentDecoder = this\n\t\t\tpackedValues = this.sharedValues &&\n\t\t\t\t(this.pack ? new Array(this.maxPrivatePackedValues || 16).concat(this.sharedValues) :\n\t\t\t\tthis.sharedValues)\n\t\t\tif (this.structures) {\n\t\t\t\tcurrentStructures = this.structures\n\t\t\t\treturn checkedRead()\n\t\t\t} else if (!currentStructures || currentStructures.length > 0) {\n\t\t\t\tcurrentStructures = []\n\t\t\t}\n\t\t} else {\n\t\t\tcurrentDecoder = defaultOptions\n\t\t\tif (!currentStructures || currentStructures.length > 0)\n\t\t\t\tcurrentStructures = []\n\t\t\tpackedValues = null\n\t\t}\n\t\treturn checkedRead()\n\t}\n\tdecodeMultiple(source, forEach) {\n\t\tlet values, lastPosition = 0\n\t\ttry {\n\t\t\tlet size = source.length\n\t\t\tsequentialMode = true\n\t\t\tlet value = this ? this.decode(source, size) : defaultDecoder.decode(source, size)\n\t\t\tif (forEach) {\n\t\t\t\tif (forEach(value) === false) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\twhile(position < size) {\n\t\t\t\t\tlastPosition = position\n\t\t\t\t\tif (forEach(checkedRead()) === false) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvalues = [ value ]\n\t\t\t\twhile(position < size) {\n\t\t\t\t\tlastPosition = position\n\t\t\t\t\tvalues.push(checkedRead())\n\t\t\t\t}\n\t\t\t\treturn values\n\t\t\t}\n\t\t} catch(error) {\n\t\t\terror.lastPosition = lastPosition\n\t\t\terror.values = values\n\t\t\tthrow error\n\t\t} finally {\n\t\t\tsequentialMode = false\n\t\t\tclearSource()\n\t\t}\n\t}\n}\nexport function getPosition() {\n\treturn position\n}\nexport function checkedRead() {\n\ttry {\n\t\tlet result = read()\n\t\tif (bundledStrings) {\n\t\t\tif (position >= bundledStrings.postBundlePosition) {\n\t\t\t\tlet error = new Error('Unexpected bundle position');\n\t\t\t\terror.incomplete = true;\n\t\t\t\tthrow error\n\t\t\t}\n\t\t\t// bundled strings to skip past\n\t\t\tposition = bundledStrings.postBundlePosition;\n\t\t\tbundledStrings = null;\n\t\t}\n\n\t\tif (position == srcEnd) {\n\t\t\t// finished reading this source, cleanup references\n\t\t\tcurrentStructures = null\n\t\t\tsrc = null\n\t\t\tif (referenceMap)\n\t\t\t\treferenceMap = null\n\t\t} else if (position > srcEnd) {\n\t\t\t// over read\n\t\t\tlet error = new Error('Unexpected end of CBOR data')\n\t\t\terror.incomplete = true\n\t\t\tthrow error\n\t\t} else if (!sequentialMode) {\n\t\t\tthrow new Error('Data read, but end of buffer not reached')\n\t\t}\n\t\t// else more to read, but we are reading sequentially, so don't clear source yet\n\t\treturn result\n\t} catch(error) {\n\t\tclearSource()\n\t\tif (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer')) {\n\t\t\terror.incomplete = true\n\t\t}\n\t\tthrow error\n\t}\n}\n\nexport function read() {\n\tlet token = src[position++]\n\tlet majorType = token >> 5\n\ttoken = token & 0x1f\n\tif (token > 0x17) {\n\t\tswitch (token) {\n\t\t\tcase 0x18:\n\t\t\t\ttoken = src[position++]\n\t\t\t\tbreak\n\t\t\tcase 0x19:\n\t\t\t\tif (majorType == 7) {\n\t\t\t\t\treturn getFloat16()\n\t\t\t\t}\n\t\t\t\ttoken = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\tbreak\n\t\t\tcase 0x1a:\n\t\t\t\tif (majorType == 7) {\n\t\t\t\t\tlet value = dataView.getFloat32(position)\n\t\t\t\t\tif (currentDecoder.useFloat32 > 2) {\n\t\t\t\t\t\t// this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\n\t\t\t\t\t\tlet multiplier = mult10[((src[position] & 0x7f) << 1) | (src[position + 1] >> 7)]\n\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\treturn ((multiplier * value + (value > 0 ? 0.5 : -0.5)) >> 0) / multiplier\n\t\t\t\t\t}\n\t\t\t\t\tposition += 4\n\t\t\t\t\treturn value\n\t\t\t\t}\n\t\t\t\ttoken = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\tbreak\n\t\t\tcase 0x1b:\n\t\t\t\tif (majorType == 7) {\n\t\t\t\t\tlet value = dataView.getFloat64(position)\n\t\t\t\t\tposition += 8\n\t\t\t\t\treturn value\n\t\t\t\t}\n\t\t\t\tif (majorType > 1) {\n\t\t\t\t\tif (dataView.getUint32(position) > 0)\n\t\t\t\t\t\tthrow new Error('JavaScript does not support arrays, maps, or strings with length over 4294967295')\n\t\t\t\t\ttoken = dataView.getUint32(position + 4)\n\t\t\t\t} else if (currentDecoder.int64AsNumber) {\n\t\t\t\t\ttoken = dataView.getUint32(position) * 0x100000000\n\t\t\t\t\ttoken += dataView.getUint32(position + 4)\n\t\t\t\t} else\n\t\t\t\t\ttoken = dataView.getBigUint64(position)\n\t\t\t\tposition += 8\n\t\t\t\tbreak\n\t\t\tcase 0x1f: \n\t\t\t\t// indefinite length\n\t\t\t\tswitch(majorType) {\n\t\t\t\t\tcase 2: // byte string\n\t\t\t\t\tcase 3: // text string\n\t\t\t\t\t\tthrow new Error('Indefinite length not supported for byte or text strings')\n\t\t\t\t\tcase 4: // array\n\t\t\t\t\t\tlet array = []\n\t\t\t\t\t\tlet value, i = 0\n\t\t\t\t\t\twhile ((value = read()) != STOP_CODE) {\n\t\t\t\t\t\t\tarray[i++] = value\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn majorType == 4 ? array : majorType == 3 ? array.join('') : Buffer.concat(array)\n\t\t\t\t\tcase 5: // map\n\t\t\t\t\t\tlet key\n\t\t\t\t\t\tif (currentDecoder.mapsAsObjects) {\n\t\t\t\t\t\t\tlet object = {}\n\t\t\t\t\t\t\tif (currentDecoder.keyMap) while((key = read()) != STOP_CODE) object[safeKey(currentDecoder.decodeKey(key))] = read()\n\t\t\t\t\t\t\telse while ((key = read()) != STOP_CODE) object[safeKey(key)] = read()\n\t\t\t\t\t\t\treturn object\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (restoreMapsAsObject) {\n\t\t\t\t\t\t\t\tcurrentDecoder.mapsAsObjects = true\n\t\t\t\t\t\t\t\trestoreMapsAsObject = false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlet map = new Map()\n\t\t\t\t\t\t\tif (currentDecoder.keyMap) while((key = read()) != STOP_CODE) map.set(currentDecoder.decodeKey(key), read())\n\t\t\t\t\t\t\telse while ((key = read()) != STOP_CODE) map.set(key, read())\n\t\t\t\t\t\t\treturn map\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\treturn STOP_CODE\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error('Invalid major type for indefinite length ' + majorType)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Unknown token ' + token)\n\t\t}\n\t}\n\tswitch (majorType) {\n\t\tcase 0: // positive int\n\t\t\treturn token\n\t\tcase 1: // negative int\n\t\t\treturn ~token\n\t\tcase 2: // buffer\n\t\t\treturn readBin(token)\n\t\tcase 3: // string\n\t\t\tif (srcStringEnd >= position) {\n\t\t\t\treturn srcString.slice(position - srcStringStart, (position += token) - srcStringStart)\n\t\t\t}\n\t\t\tif (srcStringEnd == 0 && srcEnd < 140 && token < 32) {\n\t\t\t\t// for small blocks, avoiding the overhead of the extract call is helpful\n\t\t\t\tlet string = token < 16 ? shortStringInJS(token) : longStringInJS(token)\n\t\t\t\tif (string != null)\n\t\t\t\t\treturn string\n\t\t\t}\n\t\t\treturn readFixedString(token)\n\t\tcase 4: // array\n\t\t\tlet array = new Array(token)\n\t\t //if (currentDecoder.keyMap) for (let i = 0; i < token; i++) array[i] = currentDecoder.decodeKey(read())\t\n\t\t\t//else \n\t\t\tfor (let i = 0; i < token; i++) array[i] = read()\n\t\t\treturn array\n\t\tcase 5: // map\n\t\t\tif (currentDecoder.mapsAsObjects) {\n\t\t\t\tlet object = {}\n\t\t\t\tif (currentDecoder.keyMap) for (let i = 0; i < token; i++) object[safeKey(currentDecoder.decodeKey(read()))] = read()\n\t\t\t\telse for (let i = 0; i < token; i++) object[safeKey(read())] = read()\n\t\t\t\treturn object\n\t\t\t} else {\n\t\t\t\tif (restoreMapsAsObject) {\n\t\t\t\t\tcurrentDecoder.mapsAsObjects = true\n\t\t\t\t\trestoreMapsAsObject = false\n\t\t\t\t}\n\t\t\t\tlet map = new Map()\n\t\t\t\tif (currentDecoder.keyMap) for (let i = 0; i < token; i++) map.set(currentDecoder.decodeKey(read()),read())\n\t\t\t\telse for (let i = 0; i < token; i++) map.set(read(), read())\n\t\t\t\treturn map\n\t\t\t}\n\t\tcase 6: // extension\n\t\t\tif (token >= BUNDLED_STRINGS_ID) {\n\t\t\t\tlet structure = currentStructures[token & 0x1fff] // check record structures first\n\t\t\t\t// At some point we may provide an option for dynamic tag assignment with a range like token >= 8 && (token < 16 || (token > 0x80 && token < 0xc0) || (token > 0x130 && token < 0x4000))\n\t\t\t\tif (structure) {\n\t\t\t\t\tif (!structure.read) structure.read = createStructureReader(structure)\n\t\t\t\t\treturn structure.read()\n\t\t\t\t}\n\t\t\t\tif (token < 0x10000) {\n\t\t\t\t\tif (token == RECORD_INLINE_ID) { // we do a special check for this so that we can keep the\n\t\t\t\t\t\t// currentExtensions as densely stored array (v8 stores arrays densely under about 3000 elements)\n\t\t\t\t\t\tlet length = readJustLength()\n\t\t\t\t\t\tlet id = read()\n\t\t\t\t\t\tlet structure = read()\n\t\t\t\t\t\trecordDefinition(id, structure)\n\t\t\t\t\t\tlet object = {}\n\t\t\t\t\t\tif (currentDecoder.keyMap) for (let i = 2; i < length; i++) {\n\t\t\t\t\t\t\tlet key = currentDecoder.decodeKey(structure[i - 2])\n\t\t\t\t\t\t\tobject[safeKey(key)] = read()\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse for (let i = 2; i < length; i++) {\n\t\t\t\t\t\t\tlet key = structure[i - 2]\n\t\t\t\t\t\t\tobject[safeKey(key)] = read()\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn object\n\t\t\t\t\t}\n\t\t\t\t\telse if (token == RECORD_DEFINITIONS_ID) {\n\t\t\t\t\t\tlet length = readJustLength()\n\t\t\t\t\t\tlet id = read()\n\t\t\t\t\t\tfor (let i = 2; i < length; i++) {\n\t\t\t\t\t\t\trecordDefinition(id++, read())\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn read()\n\t\t\t\t\t} else if (token == BUNDLED_STRINGS_ID) {\n\t\t\t\t\t\treturn readBundleExt()\n\t\t\t\t\t}\n\t\t\t\t\tif (currentDecoder.getShared) {\n\t\t\t\t\t\tloadShared()\n\t\t\t\t\t\tstructure = currentStructures[token & 0x1fff]\n\t\t\t\t\t\tif (structure) {\n\t\t\t\t\t\t\tif (!structure.read)\n\t\t\t\t\t\t\t\tstructure.read = createStructureReader(structure)\n\t\t\t\t\t\t\treturn structure.read()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet extension = currentExtensions[token]\n\t\t\tif (extension) {\n\t\t\t\tif (extension.handlesRead)\n\t\t\t\t\treturn extension(read)\n\t\t\t\telse\n\t\t\t\t\treturn extension(read())\n\t\t\t} else {\n\t\t\t\tlet input = read()\n\t\t\t\tfor (let i = 0; i < currentExtensionRanges.length; i++) {\n\t\t\t\t\tlet value = currentExtensionRanges[i](token, input)\n\t\t\t\t\tif (value !== undefined)\n\t\t\t\t\t\treturn value\n\t\t\t\t}\n\t\t\t\treturn new Tag(input, token)\n\t\t\t}\n\t\tcase 7: // fixed value\n\t\t\tswitch (token) {\n\t\t\t\tcase 0x14: return false\n\t\t\t\tcase 0x15: return true\n\t\t\t\tcase 0x16: return null\n\t\t\t\tcase 0x17: return; // undefined\n\t\t\t\tcase 0x1f:\n\t\t\t\tdefault:\n\t\t\t\t\tlet packedValue = (packedValues || getPackedValues())[token]\n\t\t\t\t\tif (packedValue !== undefined)\n\t\t\t\t\t\treturn packedValue\n\t\t\t\t\tthrow new Error('Unknown token ' + token)\n\t\t\t}\n\t\tdefault: // negative int\n\t\t\tif (isNaN(token)) {\n\t\t\t\tlet error = new Error('Unexpected end of CBOR data')\n\t\t\t\terror.incomplete = true\n\t\t\t\tthrow error\n\t\t\t}\n\t\t\tthrow new Error('Unknown CBOR token ' + token)\n\t}\n}\nconst validName = /^[a-zA-Z_$][a-zA-Z\\d_$]*$/\nfunction createStructureReader(structure) {\n\tfunction readObject() {\n\t\t// get the array size from the header\n\t\tlet length = src[position++]\n\t\t//let majorType = token >> 5\n\t\tlength = length & 0x1f\n\t\tif (length > 0x17) {\n\t\t\tswitch (length) {\n\t\t\t\tcase 0x18:\n\t\t\t\t\tlength = src[position++]\n\t\t\t\t\tbreak\n\t\t\t\tcase 0x19:\n\t\t\t\t\tlength = dataView.getUint16(position)\n\t\t\t\t\tposition += 2\n\t\t\t\t\tbreak\n\t\t\t\tcase 0x1a:\n\t\t\t\t\tlength = dataView.getUint32(position)\n\t\t\t\t\tposition += 4\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error('Expected array header, but got ' + src[position - 1])\n\t\t\t}\n\t\t}\n\t\t// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function\n\t\tlet compiledReader = this.compiledReader // first look to see if we have the fast compiled function\n\t\twhile(compiledReader) {\n\t\t\t// we have a fast compiled object literal reader\n\t\t\tif (compiledReader.propertyCount === length)\n\t\t\t\treturn compiledReader(read) // with the right length, so we use it\n\t\t\tcompiledReader = compiledReader.next // see if there is another reader with the right length\n\t\t}\n\t\tif (this.slowReads++ >= 3) { // create a fast compiled reader\n\t\t\tlet array = this.length == length ? this : this.slice(0, length)\n\t\t\tcompiledReader = currentDecoder.keyMap \n\t\t\t? new Function('r', 'return {' + array.map(k => currentDecoder.decodeKey(k)).map(k => validName.test(k) ? safeKey(k) + ':r()' : ('[' + JSON.stringify(k) + ']:r()')).join(',') + '}')\n\t\t\t: new Function('r', 'return {' + array.map(key => validName.test(key) ? safeKey(key) + ':r()' : ('[' + JSON.stringify(key) + ']:r()')).join(',') + '}')\n\t\t\tif (this.compiledReader)\n\t\t\t\tcompiledReader.next = this.compiledReader // if there is an existing one, we store multiple readers as a linked list because it is usually pretty rare to have multiple readers (of different length) for the same structure\n\t\t\tcompiledReader.propertyCount = length\n\t\t\tthis.compiledReader = compiledReader\n\t\t\treturn compiledReader(read)\n\t\t}\n\t\tlet object = {}\n\t\tif (currentDecoder.keyMap) for (let i = 0; i < length; i++) object[safeKey(currentDecoder.decodeKey(this[i]))] = read()\n\t\telse for (let i = 0; i < length; i++) {\n\t\t\tobject[safeKey(this[i])] = read();\n\t\t}\n\t\treturn object\n\t}\n\tstructure.slowReads = 0\n\treturn readObject\n}\n\nfunction safeKey(key) {\n\treturn key === '__proto__' ? '__proto_' : key\n}\n\nlet readFixedString = readStringJS\nlet readString8 = readStringJS\nlet readString16 = readStringJS\nlet readString32 = readStringJS\n\nexport let isNativeAccelerationEnabled = false\nexport function setExtractor(extractStrings) {\n\tisNativeAccelerationEnabled = true\n\treadFixedString = readString(1)\n\treadString8 = readString(2)\n\treadString16 = readString(3)\n\treadString32 = readString(5)\n\tfunction readString(headerLength) {\n\t\treturn function readString(length) {\n\t\t\tlet string = strings[stringPosition++]\n\t\t\tif (string == null) {\n\t\t\t\tif (bundledStrings)\n\t\t\t\t\treturn readStringJS(length)\n\t\t\t\tlet extraction = extractStrings(position, srcEnd, length, src)\n\t\t\t\tif (typeof extraction == 'string') {\n\t\t\t\t\tstring = extraction\n\t\t\t\t\tstrings = EMPTY_ARRAY\n\t\t\t\t} else {\n\t\t\t\t\tstrings = extraction\n\t\t\t\t\tstringPosition = 1\n\t\t\t\t\tsrcStringEnd = 1 // even if a utf-8 string was decoded, must indicate we are in the midst of extracted strings and can't skip strings\n\t\t\t\t\tstring = strings[0]\n\t\t\t\t\tif (string === undefined)\n\t\t\t\t\t\tthrow new Error('Unexpected end of buffer')\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet srcStringLength = string.length\n\t\t\tif (srcStringLength <= length) {\n\t\t\t\tposition += length\n\t\t\t\treturn string\n\t\t\t}\n\t\t\tsrcString = string\n\t\t\tsrcStringStart = position\n\t\t\tsrcStringEnd = position + srcStringLength\n\t\t\tposition += length\n\t\t\treturn string.slice(0, length) // we know we just want the beginning\n\t\t}\n\t}\n}\nfunction readStringJS(length) {\n\tlet result\n\tif (length < 16) {\n\t\tif (result = shortStringInJS(length))\n\t\t\treturn result\n\t}\n\tif (length > 64 && decoder)\n\t\treturn decoder.decode(src.subarray(position, position += length))\n\tconst end = position + length\n\tconst units = []\n\tresult = ''\n\twhile (position < end) {\n\t\tconst byte1 = src[position++]\n\t\tif ((byte1 & 0x80) === 0) {\n\t\t\t// 1 byte\n\t\t\tunits.push(byte1)\n\t\t} else if ((byte1 & 0xe0) === 0xc0) {\n\t\t\t// 2 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f\n\t\t\tunits.push(((byte1 & 0x1f) << 6) | byte2)\n\t\t} else if ((byte1 & 0xf0) === 0xe0) {\n\t\t\t// 3 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f\n\t\t\tconst byte3 = src[position++] & 0x3f\n\t\t\tunits.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3)\n\t\t} else if ((byte1 & 0xf8) === 0xf0) {\n\t\t\t// 4 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f\n\t\t\tconst byte3 = src[position++] & 0x3f\n\t\t\tconst byte4 = src[position++] & 0x3f\n\t\t\tlet unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4\n\t\t\tif (unit > 0xffff) {\n\t\t\t\tunit -= 0x10000\n\t\t\t\tunits.push(((unit >>> 10) & 0x3ff) | 0xd800)\n\t\t\t\tunit = 0xdc00 | (unit & 0x3ff)\n\t\t\t}\n\t\t\tunits.push(unit)\n\t\t} else {\n\t\t\tunits.push(byte1)\n\t\t}\n\n\t\tif (units.length >= 0x1000) {\n\t\t\tresult += fromCharCode.apply(String, units)\n\t\t\tunits.length = 0\n\t\t}\n\t}\n\n\tif (units.length > 0) {\n\t\tresult += fromCharCode.apply(String, units)\n\t}\n\n\treturn result\n}\nlet fromCharCode = String.fromCharCode\nfunction longStringInJS(length) {\n\tlet start = position\n\tlet bytes = new Array(length)\n\tfor (let i = 0; i < length; i++) {\n\t\tconst byte = src[position++];\n\t\tif ((byte & 0x80) > 0) {\n\t\t\tposition = start\n \t\t\treturn\n \t\t}\n \t\tbytes[i] = byte\n \t}\n \treturn fromCharCode.apply(String, bytes)\n}\nfunction shortStringInJS(length) {\n\tif (length < 4) {\n\t\tif (length < 2) {\n\t\t\tif (length === 0)\n\t\t\t\treturn ''\n\t\t\telse {\n\t\t\t\tlet a = src[position++]\n\t\t\t\tif ((a & 0x80) > 1) {\n\t\t\t\t\tposition -= 1\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a)\n\t\t\t}\n\t\t} else {\n\t\t\tlet a = src[position++]\n\t\t\tlet b = src[position++]\n\t\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0) {\n\t\t\t\tposition -= 2\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (length < 3)\n\t\t\t\treturn fromCharCode(a, b)\n\t\t\tlet c = src[position++]\n\t\t\tif ((c & 0x80) > 0) {\n\t\t\t\tposition -= 3\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn fromCharCode(a, b, c)\n\t\t}\n\t} else {\n\t\tlet a = src[position++]\n\t\tlet b = src[position++]\n\t\tlet c = src[position++]\n\t\tlet d = src[position++]\n\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) {\n\t\t\tposition -= 4\n\t\t\treturn\n\t\t}\n\t\tif (length < 6) {\n\t\t\tif (length === 4)\n\t\t\t\treturn fromCharCode(a, b, c, d)\n\t\t\telse {\n\t\t\t\tlet e = src[position++]\n\t\t\t\tif ((e & 0x80) > 0) {\n\t\t\t\t\tposition -= 5\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a, b, c, d, e)\n\t\t\t}\n\t\t} else if (length < 8) {\n\t\t\tlet e = src[position++]\n\t\t\tlet f = src[position++]\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0) {\n\t\t\t\tposition -= 6\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (length < 7)\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f)\n\t\t\tlet g = src[position++]\n\t\t\tif ((g & 0x80) > 0) {\n\t\t\t\tposition -= 7\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn fromCharCode(a, b, c, d, e, f, g)\n\t\t} else {\n\t\t\tlet e = src[position++]\n\t\t\tlet f = src[position++]\n\t\t\tlet g = src[position++]\n\t\t\tlet h = src[position++]\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) {\n\t\t\t\tposition -= 8\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (length < 10) {\n\t\t\t\tif (length === 8)\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h)\n\t\t\t\telse {\n\t\t\t\t\tlet i = src[position++]\n\t\t\t\t\tif ((i & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 9\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i)\n\t\t\t\t}\n\t\t\t} else if (length < 12) {\n\t\t\t\tlet i = src[position++]\n\t\t\t\tlet j = src[position++]\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0) {\n\t\t\t\t\tposition -= 10\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (length < 11)\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j)\n\t\t\t\tlet k = src[position++]\n\t\t\t\tif ((k & 0x80) > 0) {\n\t\t\t\t\tposition -= 11\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k)\n\t\t\t} else {\n\t\t\t\tlet i = src[position++]\n\t\t\t\tlet j = src[position++]\n\t\t\t\tlet k = src[position++]\n\t\t\t\tlet l = src[position++]\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) {\n\t\t\t\t\tposition -= 12\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (length < 14) {\n\t\t\t\t\tif (length === 12)\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l)\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet m = src[position++]\n\t\t\t\t\t\tif ((m & 0x80) > 0) {\n\t\t\t\t\t\t\tposition -= 13\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet m = src[position++]\n\t\t\t\t\tlet n = src[position++]\n\t\t\t\t\tif ((m & 0x80) > 0 || (n & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 14\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tif (length < 15)\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n)\n\t\t\t\t\tlet o = src[position++]\n\t\t\t\t\tif ((o & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 15\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction readBin(length) {\n\treturn currentDecoder.copyBuffers ?\n\t\t// specifically use the copying slice (not the node one)\n\t\tUint8Array.prototype.slice.call(src, position, position += length) :\n\t\tsrc.subarray(position, position += length)\n}\nfunction readExt(length) {\n\tlet type = src[position++]\n\tif (currentExtensions[type]) {\n\t\treturn currentExtensions[type](src.subarray(position, position += length))\n\t}\n\telse\n\t\tthrow new Error('Unknown extension type ' + type)\n}\nlet f32Array = new Float32Array(1)\nlet u8Array = new Uint8Array(f32Array.buffer, 0, 4)\nfunction getFloat16() {\n\tlet byte0 = src[position++]\n\tlet byte1 = src[position++]\n\tlet exponent = (byte0 & 0x7f) >> 2;\n\tif (exponent === 0x1f) { // specials\n\t\tif (byte1 || (byte0 & 3))\n\t\t\treturn NaN;\n\t\treturn (byte0 & 0x80) ? -Infinity : Infinity;\n\t}\n\tif (exponent === 0) { // sub-normals\n\t\t// significand with 10 fractional bits and divided by 2^14\n\t\tlet abs = (((byte0 & 3) << 8) | byte1) / (1 << 24)\n\t\treturn (byte0 & 0x80) ? -abs : abs\n\t}\n\n\tu8Array[3] = (byte0 & 0x80) | // sign bit\n\t\t((exponent >> 1) + 56) // 4 of 5 of the exponent bits, re-offset-ed\n\tu8Array[2] = ((byte0 & 7) << 5) | // last exponent bit and first two mantissa bits\n\t\t(byte1 >> 3) // next 5 bits of mantissa\n\tu8Array[1] = byte1 << 5; // last three bits of mantissa\n\tu8Array[0] = 0;\n\treturn f32Array[0];\n}\n\nlet keyCache = new Array(4096)\nfunction readKey() {\n\tlet length = src[position++]\n\tif (length >= 0x60 && length < 0x78) {\n\t\t// fixstr, potentially use key cache\n\t\tlength = length - 0x60\n\t\tif (srcStringEnd >= position) // if it has been extracted, must use it (and faster anyway)\n\t\t\treturn srcString.slice(position - srcStringStart, (position += length) - srcStringStart)\n\t\telse if (!(srcStringEnd == 0 && srcEnd < 180))\n\t\t\treturn readFixedString(length)\n\t} else { // not cacheable, go back and do a standard read\n\t\tposition--\n\t\treturn read()\n\t}\n\tlet key = ((length << 5) ^ (length > 1 ? dataView.getUint16(position) : length > 0 ? src[position] : 0)) & 0xfff\n\tlet entry = keyCache[key]\n\tlet checkPosition = position\n\tlet end = position + length - 3\n\tlet chunk\n\tlet i = 0\n\tif (entry && entry.bytes == length) {\n\t\twhile (checkPosition < end) {\n\t\t\tchunk = dataView.getUint32(checkPosition)\n\t\t\tif (chunk != entry[i++]) {\n\t\t\t\tcheckPosition = 0x70000000\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcheckPosition += 4\n\t\t}\n\t\tend += 3\n\t\twhile (checkPosition < end) {\n\t\t\tchunk = src[checkPosition++]\n\t\t\tif (chunk != entry[i++]) {\n\t\t\t\tcheckPosition = 0x70000000\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif (checkPosition === end) {\n\t\t\tposition = checkPosition\n\t\t\treturn entry.string\n\t\t}\n\t\tend -= 3\n\t\tcheckPosition = position\n\t}\n\tentry = []\n\tkeyCache[key] = entry\n\tentry.bytes = length\n\twhile (checkPosition < end) {\n\t\tchunk = dataView.getUint32(checkPosition)\n\t\tentry.push(chunk)\n\t\tcheckPosition += 4\n\t}\n\tend += 3\n\twhile (checkPosition < end) {\n\t\tchunk = src[checkPosition++]\n\t\tentry.push(chunk)\n\t}\n\t// for small blocks, avoiding the overhead of the extract call is helpful\n\tlet string = length < 16 ? shortStringInJS(length) : longStringInJS(length)\n\tif (string != null)\n\t\treturn entry.string = string\n\treturn entry.string = readFixedString(length)\n}\n\nexport class Tag {\n\tconstructor(value, tag) {\n\t\tthis.value = value\n\t\tthis.tag = tag\n\t}\n}\n\ncurrentExtensions[0] = (dateString) => {\n\t// string date extension\n\treturn new Date(dateString)\n}\n\ncurrentExtensions[1] = (epochSec) => {\n\t// numeric date extension\n\treturn new Date(Math.round(epochSec * 1000))\n}\n\ncurrentExtensions[2] = (buffer) => {\n\t// bigint extension\n\tlet value = BigInt(0)\n\tfor (let i = 0, l = buffer.byteLength; i < l; i++) {\n\t\tvalue = BigInt(buffer[i]) + value << BigInt(8)\n\t}\n\treturn value\n}\n\ncurrentExtensions[3] = (buffer) => {\n\t// negative bigint extension\n\treturn BigInt(-1) - currentExtensions[2](buffer)\n}\ncurrentExtensions[4] = (fraction) => {\n\t// best to reparse to maintain accuracy\n\treturn +(fraction[1] + 'e' + fraction[0])\n}\n\ncurrentExtensions[5] = (fraction) => {\n\t// probably not sufficiently accurate\n\treturn fraction[1] * Math.exp(fraction[0] * Math.log(2))\n}\n\n// the registration of the record definition extension\nconst recordDefinition = (id, structure) => {\n\tid = id - 0xe000\n\tlet existingStructure = currentStructures[id]\n\tif (existingStructure && existingStructure.isShared) {\n\t\t(currentStructures.restoreStructures || (currentStructures.restoreStructures = []))[id] = existingStructure\n\t}\n\tcurrentStructures[id] = structure\n\n\tstructure.read = createStructureReader(structure)\n}\ncurrentExtensions[LEGACY_RECORD_INLINE_ID] = (data) => {\n\tlet length = data.length\n\tlet structure = data[1]\n\trecordDefinition(data[0], structure)\n\tlet object = {}\n\tfor (let i = 2; i < length; i++) {\n\t\tlet key = structure[i - 2]\n\t\tobject[safeKey(key)] = data[i]\n\t}\n\treturn object\n}\ncurrentExtensions[14] = (value) => {\n\tif (bundledStrings)\n\t\treturn bundledStrings[0].slice(bundledStrings.position0, bundledStrings.position0 += value)\n\treturn new Tag(value, 14)\n}\ncurrentExtensions[15] = (value) => {\n\tif (bundledStrings)\n\t\treturn bundledStrings[1].slice(bundledStrings.position1, bundledStrings.position1 += value)\n\treturn new Tag(value, 15)\n}\nlet glbl = { Error, RegExp }\ncurrentExtensions[27] = (data) => { // http://cbor.schmorp.de/generic-object\n\treturn (glbl[data[0]] || Error)(data[1], data[2])\n}\nconst packedTable = (read) => {\n\tif (src[position++] != 0x84)\n\t\tthrow new Error('Packed values structure must be followed by a 4 element array')\n\tlet newPackedValues = read() // packed values\n\tpackedValues = packedValues ? newPackedValues.concat(packedValues.slice(newPackedValues.length)) : newPackedValues\n\tpackedValues.prefixes = read()\n\tpackedValues.suffixes = read()\n\treturn read() // read the rump\n}\npackedTable.handlesRead = true\ncurrentExtensions[51] = packedTable\n\ncurrentExtensions[PACKED_REFERENCE_TAG_ID] = (data) => { // packed reference\n\tif (!packedValues) {\n\t\tif (currentDecoder.getShared)\n\t\t\tloadShared()\n\t\telse\n\t\t\treturn new Tag(data, PACKED_REFERENCE_TAG_ID)\n\t}\n\tif (typeof data == 'number')\n\t\treturn packedValues[16 + (data >= 0 ? 2 * data : (-2 * data - 1))]\n\tthrow new Error('No support for non-integer packed references yet')\n}\n\n// The following code is an incomplete implementation of http://cbor.schmorp.de/stringref\n// the real thing would need to implemennt more logic to populate the stringRefs table and\n// maintain a stack of stringRef \"namespaces\".\n//\n// currentExtensions[25] = (id) => {\n// \treturn stringRefs[id]\n// }\n// currentExtensions[256] = (read) => {\n// \tstringRefs = []\n// \ttry {\n// \t\treturn read()\n// \t} finally {\n// \t\tstringRefs = null\n// \t}\n// }\n// currentExtensions[256].handlesRead = true\n\ncurrentExtensions[28] = (read) => { \n\t// shareable http://cbor.schmorp.de/value-sharing (for structured clones)\n\tif (!referenceMap) {\n\t\treferenceMap = new Map()\n\t\treferenceMap.id = 0\n\t}\n\tlet id = referenceMap.id++\n\tlet token = src[position]\n\tlet target\n\t// TODO: handle Maps, Sets, and other types that can cycle; this is complicated, because you potentially need to read\n\t// ahead past references to record structure definitions\n\tif ((token >> 5) == 4)\n\t\ttarget = []\n\telse\n\t\ttarget = {}\n\n\tlet refEntry = { target } // a placeholder object\n\treferenceMap.set(id, refEntry)\n\tlet targetProperties = read() // read the next value as the target object to id\n\tif (refEntry.used) // there is a cycle, so we have to assign properties to original target\n\t\treturn Object.assign(target, targetProperties)\n\trefEntry.target = targetProperties // the placeholder wasn't used, replace with the deserialized one\n\treturn targetProperties // no cycle, can just use the returned read object\n}\ncurrentExtensions[28].handlesRead = true\n\ncurrentExtensions[29] = (id) => {\n\t// sharedref http://cbor.schmorp.de/value-sharing (for structured clones)\n\tlet refEntry = referenceMap.get(id)\n\trefEntry.used = true\n\treturn refEntry.target\n}\n\ncurrentExtensions[258] = (array) => new Set(array); // https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md\n(currentExtensions[259] = (read) => {\n\t// https://github.com/shanewholloway/js-cbor-codec/blob/master/docs/CBOR-259-spec\n\t// for decoding as a standard Map\n\tif (currentDecoder.mapsAsObjects) {\n\t\tcurrentDecoder.mapsAsObjects = false\n\t\trestoreMapsAsObject = true\n\t}\n\treturn read()\n}).handlesRead = true\nfunction combine(a, b) {\n\tif (typeof a === 'string')\n\t\treturn a + b\n\tif (a instanceof Array)\n\t\treturn a.concat(b)\n\treturn Object.assign({}, a, b)\n}\nfunction getPackedValues() {\n\tif (!packedValues) {\n\t\tif (currentDecoder.getShared)\n\t\t\tloadShared()\n\t\telse\n\t\t\tthrow new Error('No packed values available')\n\t}\n\treturn packedValues\n}\nconst SHARED_DATA_TAG_ID = 0x53687264 // ascii 'Shrd'\ncurrentExtensionRanges.push((tag, input) => {\n\tif (tag >= 225 && tag <= 255)\n\t\treturn combine(getPackedValues().prefixes[tag - 224], input)\n\tif (tag >= 28704 && tag <= 32767)\n\t\treturn combine(getPackedValues().prefixes[tag - 28672], input)\n\tif (tag >= 1879052288 && tag <= 2147483647)\n\t\treturn combine(getPackedValues().prefixes[tag - 1879048192], input)\n\tif (tag >= 216 && tag <= 223)\n\t\treturn combine(input, getPackedValues().suffixes[tag - 216])\n\tif (tag >= 27647 && tag <= 28671)\n\t\treturn combine(input, getPackedValues().suffixes[tag - 27639])\n\tif (tag >= 1811940352 && tag <= 1879048191)\n\t\treturn combine(input, getPackedValues().suffixes[tag - 1811939328])\n\tif (tag == SHARED_DATA_TAG_ID) {// we do a special check for this so that we can keep the currentExtensions as densely stored array (v8 stores arrays densely under about 3000 elements)\n\t\treturn {\n\t\t\tpackedValues: packedValues,\n\t\t\tstructures: currentStructures.slice(0),\n\t\t\tversion: input,\n\t\t}\n\t}\n\tif (tag == 55799) // self-descriptive CBOR tag, just return input value\n\t\treturn input\n})\n\nconst isLittleEndianMachine = new Uint8Array(new Uint16Array([1]).buffer)[0] == 1\nexport const typedArrays = [Uint8Array, Uint8ClampedArray, Uint16Array, Uint32Array,\n\ttypeof BigUint64Array == 'undefined' ? { name:'BigUint64Array' } : BigUint64Array, Int8Array, Int16Array, Int32Array,\n\ttypeof BigInt64Array == 'undefined' ? { name:'BigInt64Array' } : BigInt64Array, Float32Array, Float64Array]\nconst typedArrayTags = [64, 68, 69, 70, 71, 72, 77, 78, 79, 85, 86]\nfor (let i = 0; i < typedArrays.length; i++) {\n\tregisterTypedArray(typedArrays[i], typedArrayTags[i])\n}\nfunction registerTypedArray(TypedArray, tag) {\n\tlet dvMethod = 'get' + TypedArray.name.slice(0, -5)\n\tif (typeof TypedArray !== 'function')\n\t\tTypedArray = null;\n\tlet bytesPerElement = TypedArray.BYTES_PER_ELEMENT\n\tfor (let littleEndian = 0; littleEndian < 2; littleEndian++) {\n\t\tif (!littleEndian && bytesPerElement == 1)\n\t\t\tcontinue\n\t\tlet sizeShift = bytesPerElement == 2 ? 1 : bytesPerElement == 4 ? 2 : 3\n\t\tcurrentExtensions[littleEndian ? tag : (tag - 4)] = (bytesPerElement == 1 || littleEndian == isLittleEndianMachine) ? (buffer) => {\n\t\t\tif (!TypedArray)\n\t\t\t\tthrow new Error('Could not find typed array for code ' + tag)\n\t\t\t// we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned\n\t\t\treturn new TypedArray(Uint8Array.prototype.slice.call(buffer, 0).buffer)\n\t\t} : buffer => {\n\t\t\tif (!TypedArray)\n\t\t\t\tthrow new Error('Could not find typed array for code ' + tag)\n\t\t\tlet dv = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n\t\t\tlet elements = buffer.length >> sizeShift\n\t\t\tlet ta = new TypedArray(elements)\n\t\t\tlet method = dv[dvMethod]\n\t\t\tfor (let i = 0; i < elements; i++) {\n\t\t\t\tta[i] = method.call(dv, i << sizeShift, littleEndian)\n\t\t\t}\n\t\t\treturn ta\n\t\t}\n\t}\n}\n\nfunction readBundleExt() {\n\tlet length = readJustLength()\n\tlet bundlePosition = position + read()\n\tfor (let i = 2; i < length; i++) {\n\t\t// skip past bundles that were already read\n\t\tlet bundleLength = readJustLength() // this will increment position, so must add to position afterwards\n\t\tposition += bundleLength\n\t}\n\tlet dataPosition = position\n\tposition = bundlePosition\n\tbundledStrings = [readStringJS(readJustLength()), readStringJS(readJustLength())]\n\tbundledStrings.position0 = 0\n\tbundledStrings.position1 = 0\n\tbundledStrings.postBundlePosition = position\n\tposition = dataPosition\n\treturn read()\n}\n\nfunction readJustLength() {\n\tlet token = src[position++] & 0x1f\n\tif (token > 0x17) {\n\t\tswitch (token) {\n\t\t\tcase 0x18:\n\t\t\t\ttoken = src[position++]\n\t\t\t\tbreak\n\t\t\tcase 0x19:\n\t\t\t\ttoken = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\tbreak\n\t\t\tcase 0x1a:\n\t\t\t\ttoken = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\tbreak\n\t\t}\n\t}\n\treturn token\n}\n\nfunction loadShared() {\n\tif (currentDecoder.getShared) {\n\t\tlet sharedData = saveState(() => {\n\t\t\t// save the state in case getShared modifies our buffer\n\t\t\tsrc = null\n\t\t\treturn currentDecoder.getShared()\n\t\t}) || {}\n\t\tlet updatedStructures = sharedData.structures || []\n\t\tcurrentDecoder.sharedVersion = sharedData.version\n\t\tpackedValues = currentDecoder.sharedValues = sharedData.packedValues\n\t\tif (currentStructures === true)\n\t\t\tcurrentDecoder.structures = currentStructures = updatedStructures\n\t\telse\n\t\t\tcurrentStructures.splice.apply(currentStructures, [0, updatedStructures.length].concat(updatedStructures))\n\t}\n}\n\nfunction saveState(callback) {\n\tlet savedSrcEnd = srcEnd\n\tlet savedPosition = position\n\tlet savedStringPosition = stringPosition\n\tlet savedSrcStringStart = srcStringStart\n\tlet savedSrcStringEnd = srcStringEnd\n\tlet savedSrcString = srcString\n\tlet savedStrings = strings\n\tlet savedReferenceMap = referenceMap\n\tlet savedBundledStrings = bundledStrings\n\n\t// TODO: We may need to revisit this if we do more external calls to user code (since it could be slow)\n\tlet savedSrc = new Uint8Array(src.slice(0, srcEnd)) // we copy the data in case it changes while external data is processed\n\tlet savedStructures = currentStructures\n\tlet savedDecoder = currentDecoder\n\tlet savedSequentialMode = sequentialMode\n\tlet value = callback()\n\tsrcEnd = savedSrcEnd\n\tposition = savedPosition\n\tstringPosition = savedStringPosition\n\tsrcStringStart = savedSrcStringStart\n\tsrcStringEnd = savedSrcStringEnd\n\tsrcString = savedSrcString\n\tstrings = savedStrings\n\treferenceMap = savedReferenceMap\n\tbundledStrings = savedBundledStrings\n\tsrc = savedSrc\n\tsequentialMode = savedSequentialMode\n\tcurrentStructures = savedStructures\n\tcurrentDecoder = savedDecoder\n\tdataView = new DataView(src.buffer, src.byteOffset, src.byteLength)\n\treturn value\n}\nexport function clearSource() {\n\tsrc = null\n\treferenceMap = null\n\tcurrentStructures = null\n}\n\nexport function addExtension(extension) {\n\tcurrentExtensions[extension.tag] = extension.decode\n}\n\nexport const mult10 = new Array(147) // this is a table matching binary exponents to the multiplier to determine significant digit rounding\nfor (let i = 0; i < 256; i++) {\n\tmult10[i] = +('1e' + Math.floor(45.15 - i * 0.30103))\n}\nlet defaultDecoder = new Decoder({ useRecords: false })\nexport const decode = defaultDecoder.decode\nexport const decodeMultiple = defaultDecoder.decodeMultiple\nexport const FLOAT32_OPTIONS = {\n\tNEVER: 0,\n\tALWAYS: 1,\n\tDECIMAL_ROUND: 3,\n\tDECIMAL_FIT: 4\n}\nexport function roundFloat32(float32Number) {\n\tf32Array[0] = float32Number\n\tlet multiplier = mult10[((u8Array[3] & 0x7f) << 1) | (u8Array[2] >> 7)]\n\treturn ((multiplier * float32Number + (float32Number > 0 ? 0.5 : -0.5)) >> 0) / multiplier\n}\n", "import { Decoder, mult10, Tag, typedArrays, addExtension as decodeAddExtension } from './decode.js'\nlet textEncoder\ntry {\n\ttextEncoder = new TextEncoder()\n} catch (error) {}\nlet extensions, extensionClasses\nconst Buffer = globalThis.Buffer\nconst hasNodeBuffer = typeof Buffer !== 'undefined'\nconst ByteArrayAllocate = hasNodeBuffer ? Buffer.allocUnsafeSlow : Uint8Array\nconst ByteArray = hasNodeBuffer ? Buffer : Uint8Array\nconst MAX_STRUCTURES = 0x100\nconst MAX_BUFFER_SIZE = hasNodeBuffer ? 0x100000000 : 0x7fd00000\nlet serializationId = 1\nlet throwOnIterable\nlet target\nlet targetView\nlet position = 0\nlet safeEnd\nlet bundledStrings = null\nconst MAX_BUNDLE_SIZE = 0xf000\nconst hasNonLatin = /[\\u0080-\\uFFFF]/\nconst RECORD_SYMBOL = Symbol('record-id')\nexport class Encoder extends Decoder {\n\tconstructor(options) {\n\t\tsuper(options)\n\t\tthis.offset = 0\n\t\tlet typeBuffer\n\t\tlet start\n\t\tlet sharedStructures\n\t\tlet hasSharedUpdate\n\t\tlet structures\n\t\tlet referenceMap\n\t\toptions = options || {}\n\t\tlet encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position, maxBytes) {\n\t\t\treturn target.utf8Write(string, position, maxBytes)\n\t\t} : (textEncoder && textEncoder.encodeInto) ?\n\t\t\tfunction(string, position) {\n\t\t\t\treturn textEncoder.encodeInto(string, target.subarray(position)).written\n\t\t\t} : false\n\n\t\tlet encoder = this\n\t\tlet hasSharedStructures = options.structures || options.saveStructures\n\t\tlet maxSharedStructures = options.maxSharedStructures\n\t\tif (maxSharedStructures == null)\n\t\t\tmaxSharedStructures = hasSharedStructures ? 128 : 0\n\t\tif (maxSharedStructures > 8190)\n\t\t\tthrow new Error('Maximum maxSharedStructure is 8190')\n\t\tlet isSequential = options.sequential\n\t\tif (isSequential) {\n\t\t\tmaxSharedStructures = 0\n\t\t}\n\t\tif (!this.structures)\n\t\t\tthis.structures = []\n\t\tif (this.saveStructures)\n\t\t\tthis.saveShared = this.saveStructures\n\t\tlet samplingPackedValues, packedObjectMap, sharedValues = options.sharedValues\n\t\tlet sharedPackedObjectMap\n\t\tif (sharedValues) {\n\t\t\tsharedPackedObjectMap = Object.create(null)\n\t\t\tfor (let i = 0, l = sharedValues.length; i < l; i++) {\n\t\t\t\tsharedPackedObjectMap[sharedValues[i]] = i\n\t\t\t}\n\t\t}\n\t\tlet recordIdsToRemove = []\n\t\tlet transitionsCount = 0\n\t\tlet serializationsSinceTransitionRebuild = 0\n\t\t\n\t\tthis.mapEncode = function(value, encodeOptions) {\n\t\t\t// Experimental support for premapping keys using _keyMap instad of keyMap - not optiimised yet)\n\t\t\tif (this._keyMap && !this._mapped) {\n\t\t\t\t//console.log('encoding ', value)\n\t\t\t\tswitch (value.constructor.name) {\n\t\t\t\t\tcase 'Array': \n\t\t\t\t\t\tvalue = value.map(r => this.encodeKeys(r))\n\t\t\t\t\t\tbreak\n\t\t\t\t\t//case 'Map': \n\t\t\t\t\t//\tvalue = this.encodeKeys(value)\n\t\t\t\t\t//\tbreak\n\t\t\t\t}\n\t\t\t\t//this._mapped = true\n\t\t\t}\n\t\t\treturn this.encode(value, encodeOptions)\n\t\t}\n\t\t\n\t\tthis.encode = function(value, encodeOptions)\t{\n\t\t\tif (!target) {\n\t\t\t\ttarget = new ByteArrayAllocate(8192)\n\t\t\t\ttargetView = new DataView(target.buffer, 0, 8192)\n\t\t\t\tposition = 0\n\t\t\t}\n\t\t\tsafeEnd = target.length - 10\n\t\t\tif (safeEnd - position < 0x800) {\n\t\t\t\t// don't start too close to the end, \n\t\t\t\ttarget = new ByteArrayAllocate(target.length)\n\t\t\t\ttargetView = new DataView(target.buffer, 0, target.length)\n\t\t\t\tsafeEnd = target.length - 10\n\t\t\t\tposition = 0\n\t\t\t} else if (encodeOptions === REUSE_BUFFER_MODE)\n\t\t\t\tposition = (position + 7) & 0x7ffffff8 // Word align to make any future copying of this buffer faster\n\t\t\tstart = position\n\t\t\tif (encoder.useSelfDescribedHeader) {\n\t\t\t\ttargetView.setUint32(position, 0xd9d9f700) // tag two byte, then self-descriptive tag\n\t\t\t\tposition += 3\n\t\t\t}\n\t\t\treferenceMap = encoder.structuredClone ? new Map() : null\n\t\t\tif (encoder.bundleStrings && typeof value !== 'string') {\n\t\t\t\tbundledStrings = []\n\t\t\t\tbundledStrings.size = Infinity // force a new bundle start on first string\n\t\t\t} else\n\t\t\t\tbundledStrings = null\n\n\t\t\tsharedStructures = encoder.structures\n\t\t\tif (sharedStructures) {\n\t\t\t\tif (sharedStructures.uninitialized) {\n\t\t\t\t\tlet sharedData = encoder.getShared() || {}\n\t\t\t\t\tencoder.structures = sharedStructures = sharedData.structures || []\n\t\t\t\t\tencoder.sharedVersion = sharedData.version\n\t\t\t\t\tlet sharedValues = encoder.sharedValues = sharedData.packedValues\n\t\t\t\t\tif (sharedValues) {\n\t\t\t\t\t\tsharedPackedObjectMap = {}\n\t\t\t\t\t\tfor (let i = 0, l = sharedValues.length; i < l; i++)\n\t\t\t\t\t\t\tsharedPackedObjectMap[sharedValues[i]] = i\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet sharedStructuresLength = sharedStructures.length\n\t\t\t\tif (sharedStructuresLength > maxSharedStructures && !isSequential)\n\t\t\t\t\tsharedStructuresLength = maxSharedStructures\n\t\t\t\tif (!sharedStructures.transitions) {\n\t\t\t\t\t// rebuild our structure transitions\n\t\t\t\t\tsharedStructures.transitions = Object.create(null)\n\t\t\t\t\tfor (let i = 0; i < sharedStructuresLength; i++) {\n\t\t\t\t\t\tlet keys = sharedStructures[i]\n\t\t\t\t\t\t//console.log('shared struct keys:', keys)\n\t\t\t\t\t\tif (!keys)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\tlet nextTransition, transition = sharedStructures.transitions\n\t\t\t\t\t\tfor (let j = 0, l = keys.length; j < l; j++) {\n\t\t\t\t\t\t\tif (transition[RECORD_SYMBOL] === undefined)\n\t\t\t\t\t\t\t\ttransition[RECORD_SYMBOL] = i\n\t\t\t\t\t\t\tlet key = keys[j]\n\t\t\t\t\t\t\tnextTransition = transition[key]\n\t\t\t\t\t\t\tif (!nextTransition) {\n\t\t\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttransition = nextTransition\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttransition[RECORD_SYMBOL] = i | 0x100000\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!isSequential)\n\t\t\t\t\tsharedStructures.nextId = sharedStructuresLength\n\t\t\t}\n\t\t\tif (hasSharedUpdate)\n\t\t\t\thasSharedUpdate = false\n\t\t\tstructures = sharedStructures || []\n\t\t\tpackedObjectMap = sharedPackedObjectMap\n\t\t\tif (options.pack) {\n\t\t\t\tlet packedValues = new Map()\n\t\t\t\tpackedValues.values = []\n\t\t\t\tpackedValues.encoder = encoder\n\t\t\t\tpackedValues.maxValues = options.maxPrivatePackedValues || (sharedPackedObjectMap ? 16 : Infinity)\n\t\t\t\tpackedValues.objectMap = sharedPackedObjectMap || false\n\t\t\t\tpackedValues.samplingPackedValues = samplingPackedValues\n\t\t\t\tfindRepetitiveStrings(value, packedValues)\n\t\t\t\tif (packedValues.values.length > 0) {\n\t\t\t\t\ttarget[position++] = 0xd8 // one-byte tag\n\t\t\t\t\ttarget[position++] = 51 // tag 51 for packed shared structures https://www.potaroo.net/ietf/ids/draft-ietf-cbor-packed-03.txt\n\t\t\t\t\twriteArrayHeader(4)\n\t\t\t\t\tlet valuesArray = packedValues.values\n\t\t\t\t\tencode(valuesArray)\n\t\t\t\t\twriteArrayHeader(0) // prefixes\n\t\t\t\t\twriteArrayHeader(0) // suffixes\n\t\t\t\t\tpackedObjectMap = Object.create(sharedPackedObjectMap || null)\n\t\t\t\t\tfor (let i = 0, l = valuesArray.length; i < l; i++) {\n\t\t\t\t\t\tpackedObjectMap[valuesArray[i]] = i\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrowOnIterable = encodeOptions & THROW_ON_ITERABLE;\n\t\t\ttry {\n\t\t\t\tif (throwOnIterable)\n\t\t\t\t\treturn;\n\t\t\t\tencode(value)\n\t\t\t\tif (bundledStrings) {\n\t\t\t\t\twriteBundles(start, encode)\n\t\t\t\t}\n\t\t\t\tencoder.offset = position // update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially\n\t\t\t\tif (referenceMap && referenceMap.idsToInsert) {\n\t\t\t\t\tposition += referenceMap.idsToInsert.length * 2\n\t\t\t\t\tif (position > safeEnd)\n\t\t\t\t\t\tmakeRoom(position)\n\t\t\t\t\tencoder.offset = position\n\t\t\t\t\tlet serialized = insertIds(target.subarray(start, position), referenceMap.idsToInsert)\n\t\t\t\t\treferenceMap = null\n\t\t\t\t\treturn serialized\n\t\t\t\t}\n\t\t\t\tif (encodeOptions & REUSE_BUFFER_MODE) {\n\t\t\t\t\ttarget.start = start\n\t\t\t\t\ttarget.end = position\n\t\t\t\t\treturn target\n\t\t\t\t}\n\t\t\t\treturn target.subarray(start, position) // position can change if we call encode again in saveShared, so we get the buffer now\n\t\t\t} finally {\n\t\t\t\tif (sharedStructures) {\n\t\t\t\t\tif (serializationsSinceTransitionRebuild < 10)\n\t\t\t\t\t\tserializationsSinceTransitionRebuild++\n\t\t\t\t\tif (sharedStructures.length > maxSharedStructures)\n\t\t\t\t\t\tsharedStructures.length = maxSharedStructures\n\t\t\t\t\tif (transitionsCount > 10000) {\n\t\t\t\t\t\t// force a rebuild occasionally after a lot of transitions so it can get cleaned up\n\t\t\t\t\t\tsharedStructures.transitions = null\n\t\t\t\t\t\tserializationsSinceTransitionRebuild = 0\n\t\t\t\t\t\ttransitionsCount = 0\n\t\t\t\t\t\tif (recordIdsToRemove.length > 0)\n\t\t\t\t\t\t\trecordIdsToRemove = []\n\t\t\t\t\t} else if (recordIdsToRemove.length > 0 && !isSequential) {\n\t\t\t\t\t\tfor (let i = 0, l = recordIdsToRemove.length; i < l; i++) {\n\t\t\t\t\t\t\trecordIdsToRemove[i][RECORD_SYMBOL] = undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\trecordIdsToRemove = []\n\t\t\t\t\t\t//sharedStructures.nextId = maxSharedStructures\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (hasSharedUpdate && encoder.saveShared) {\n\t\t\t\t\tif (encoder.structures.length > maxSharedStructures) {\n\t\t\t\t\t\tencoder.structures = encoder.structures.slice(0, maxSharedStructures)\n\t\t\t\t\t}\n\t\t\t\t\t// we can't rely on start/end with REUSE_BUFFER_MODE since they will (probably) change when we save\n\t\t\t\t\tlet returnBuffer = target.subarray(start, position)\n\t\t\t\t\tif (encoder.updateSharedData() === false)\n\t\t\t\t\t\treturn encoder.encode(value) // re-encode if it fails\n\t\t\t\t\treturn returnBuffer\n\t\t\t\t}\n\t\t\t\tif (encodeOptions & RESET_BUFFER_MODE)\n\t\t\t\t\tposition = start\n\t\t\t}\n\t\t}\n\t\tthis.findCommonStringsToPack = () => {\n\t\t\tsamplingPackedValues = new Map()\n\t\t\tif (!sharedPackedObjectMap)\n\t\t\t\tsharedPackedObjectMap = Object.create(null)\n\t\t\treturn (options) => {\n\t\t\t\tlet threshold = options && options.threshold || 4\n\t\t\t\tlet position = this.pack ? options.maxPrivatePackedValues || 16 : 0\n\t\t\t\tif (!sharedValues)\n\t\t\t\t\tsharedValues = this.sharedValues = []\n\t\t\t\tfor (let [ key, status ] of samplingPackedValues) {\n\t\t\t\t\tif (status.count > threshold) {\n\t\t\t\t\t\tsharedPackedObjectMap[key] = position++\n\t\t\t\t\t\tsharedValues.push(key)\n\t\t\t\t\t\thasSharedUpdate = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\twhile (this.saveShared && this.updateSharedData() === false) {}\n\t\t\t\tsamplingPackedValues = null\n\t\t\t}\n\t\t}\n\t\tconst encode = (value) => {\n\t\t\tif (position > safeEnd)\n\t\t\t\ttarget = makeRoom(position)\n\n\t\t\tvar type = typeof value\n\t\t\tvar length\n\t\t\tif (type === 'string') {\n\t\t\t\tif (packedObjectMap) {\n\t\t\t\t\tlet packedPosition = packedObjectMap[value]\n\t\t\t\t\tif (packedPosition >= 0) {\n\t\t\t\t\t\tif (packedPosition < 16)\n\t\t\t\t\t\t\ttarget[position++] = packedPosition + 0xe0 // simple values, defined in https://www.potaroo.net/ietf/ids/draft-ietf-cbor-packed-03.txt\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\ttarget[position++] = 0xc6 // tag 6 defined in https://www.potaroo.net/ietf/ids/draft-ietf-cbor-packed-03.txt\n\t\t\t\t\t\t\tif (packedPosition & 1)\n\t\t\t\t\t\t\t\tencode((15 - packedPosition) >> 1)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tencode((packedPosition - 16) >> 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn\n/*\t\t\t\t\t\t} else if (packedStatus.serializationId != serializationId) {\n\t\t\t\t\t\t\tpackedStatus.serializationId = serializationId\n\t\t\t\t\t\t\tpackedStatus.count = 1\n\t\t\t\t\t\t\tif (options.sharedPack) {\n\t\t\t\t\t\t\t\tlet sharedCount = packedStatus.sharedCount = (packedStatus.sharedCount || 0) + 1\n\t\t\t\t\t\t\t\tif (shareCount > (options.sharedPack.threshold || 5)) {\n\t\t\t\t\t\t\t\t\tlet sharedPosition = packedStatus.position = packedStatus.nextSharedPosition\n\t\t\t\t\t\t\t\t\thasSharedUpdate = true\n\t\t\t\t\t\t\t\t\tif (sharedPosition < 16)\n\t\t\t\t\t\t\t\t\t\ttarget[position++] = sharedPosition + 0xc0\n\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} // else any in-doc incrementation?*/\n\t\t\t\t\t} else if (samplingPackedValues && !options.pack) {\n\t\t\t\t\t\tlet status = samplingPackedValues.get(value)\n\t\t\t\t\t\tif (status)\n\t\t\t\t\t\t\tstatus.count++\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tsamplingPackedValues.set(value, {\n\t\t\t\t\t\t\t\tcount: 1,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet strLength = value.length\n\t\t\t\tif (bundledStrings && strLength >= 4 && strLength < 0x400) {\n\t\t\t\t\tif ((bundledStrings.size += strLength) > MAX_BUNDLE_SIZE) {\n\t\t\t\t\t\tlet extStart\n\t\t\t\t\t\tlet maxBytes = (bundledStrings[0] ? bundledStrings[0].length * 3 + bundledStrings[1].length : 0) + 10\n\t\t\t\t\t\tif (position + maxBytes > safeEnd)\n\t\t\t\t\t\t\ttarget = makeRoom(position + maxBytes)\n\t\t\t\t\t\ttarget[position++] = 0xd9 // tag 16-bit\n\t\t\t\t\t\ttarget[position++] = 0xdf // tag 0xdff9\n\t\t\t\t\t\ttarget[position++] = 0xf9\n\t\t\t\t\t\t// TODO: If we only have one bundle with any string data, only write one string bundle\n\t\t\t\t\t\ttarget[position++] = bundledStrings.position ? 0x84 : 0x82 // array of 4 or 2 elements depending on if we write bundles\n\t\t\t\t\t\ttarget[position++] = 0x1a // 32-bit unsigned int\n\t\t\t\t\t\textStart = position - start\n\t\t\t\t\t\tposition += 4 // reserve for writing bundle reference\n\t\t\t\t\t\tif (bundledStrings.position) {\n\t\t\t\t\t\t\twriteBundles(start, encode) // write the last bundles\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbundledStrings = ['', ''] // create new ones\n\t\t\t\t\t\tbundledStrings.size = 0\n\t\t\t\t\t\tbundledStrings.position = extStart\n\t\t\t\t\t}\n\t\t\t\t\tlet twoByte = hasNonLatin.test(value)\n\t\t\t\t\tbundledStrings[twoByte ? 0 : 1] += value\n\t\t\t\t\ttarget[position++] = twoByte ? 0xce : 0xcf\n\t\t\t\t\tencode(strLength);\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tlet headerSize\n\t\t\t\t// first we estimate the header size, so we can write to the correct location\n\t\t\t\tif (strLength < 0x20) {\n\t\t\t\t\theaderSize = 1\n\t\t\t\t} else if (strLength < 0x100) {\n\t\t\t\t\theaderSize = 2\n\t\t\t\t} else if (strLength < 0x10000) {\n\t\t\t\t\theaderSize = 3\n\t\t\t\t} else {\n\t\t\t\t\theaderSize = 5\n\t\t\t\t}\n\t\t\t\tlet maxBytes = strLength * 3\n\t\t\t\tif (position + maxBytes > safeEnd)\n\t\t\t\t\ttarget = makeRoom(position + maxBytes)\n\n\t\t\t\tif (strLength < 0x40 || !encodeUtf8) {\n\t\t\t\t\tlet i, c1, c2, strPosition = position + headerSize\n\t\t\t\t\tfor (i = 0; i < strLength; i++) {\n\t\t\t\t\t\tc1 = value.charCodeAt(i)\n\t\t\t\t\t\tif (c1 < 0x80) {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1\n\t\t\t\t\t\t} else if (c1 < 0x800) {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 | 0xc0\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t(c1 & 0xfc00) === 0xd800 &&\n\t\t\t\t\t\t\t((c2 = value.charCodeAt(i + 1)) & 0xfc00) === 0xdc00\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tc1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff)\n\t\t\t\t\t\t\ti++\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 18 | 0xf0\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 & 0x3f | 0x80\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 | 0xe0\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlength = strPosition - position - headerSize\n\t\t\t\t} else {\n\t\t\t\t\tlength = encodeUtf8(value, position + headerSize, maxBytes)\n\t\t\t\t}\n\n\t\t\t\tif (length < 0x18) {\n\t\t\t\t\ttarget[position++] = 0x60 | length\n\t\t\t\t} else if (length < 0x100) {\n\t\t\t\t\tif (headerSize < 2) {\n\t\t\t\t\t\ttarget.copyWithin(position + 2, position + 1, position + 1 + length)\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0x78\n\t\t\t\t\ttarget[position++] = length\n\t\t\t\t} else if (length < 0x10000) {\n\t\t\t\t\tif (headerSize < 3) {\n\t\t\t\t\t\ttarget.copyWithin(position + 3, position + 2, position + 2 + length)\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0x79\n\t\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t\t} else {\n\t\t\t\t\tif (headerSize < 5) {\n\t\t\t\t\t\ttarget.copyWithin(position + 5, position + 3, position + 3 + length)\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0x7a\n\t\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\t\tposition += 4\n\t\t\t\t}\n\t\t\t\tposition += length\n\t\t\t} else if (type === 'number') {\n\t\t\t\tif (value >>> 0 === value) {// positive integer, 32-bit or less\n\t\t\t\t\t// positive uint\n\t\t\t\t\tif (value < 0x18) {\n\t\t\t\t\t\ttarget[position++] = value\n\t\t\t\t\t} else if (value < 0x100) {\n\t\t\t\t\t\ttarget[position++] = 0x18\n\t\t\t\t\t\ttarget[position++] = value\n\t\t\t\t\t} else if (value < 0x10000) {\n\t\t\t\t\t\ttarget[position++] = 0x19\n\t\t\t\t\t\ttarget[position++] = value >> 8\n\t\t\t\t\t\ttarget[position++] = value & 0xff\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget[position++] = 0x1a\n\t\t\t\t\t\ttargetView.setUint32(position, value)\n\t\t\t\t\t\tposition += 4\n\t\t\t\t\t}\n\t\t\t\t} else if (value >> 0 === value) { // negative integer\n\t\t\t\t\tif (value >= -0x18) {\n\t\t\t\t\t\ttarget[position++] = 0x1f - value\n\t\t\t\t\t} else if (value >= -0x100) {\n\t\t\t\t\t\ttarget[position++] = 0x38\n\t\t\t\t\t\ttarget[position++] = ~value\n\t\t\t\t\t} else if (value >= -0x10000) {\n\t\t\t\t\t\ttarget[position++] = 0x39\n\t\t\t\t\t\ttargetView.setUint16(position, ~value)\n\t\t\t\t\t\tposition += 2\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget[position++] = 0x3a\n\t\t\t\t\t\ttargetView.setUint32(position, ~value)\n\t\t\t\t\t\tposition += 4\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet useFloat32\n\t\t\t\t\tif ((useFloat32 = this.useFloat32) > 0 && value < 0x100000000 && value >= -0x80000000) {\n\t\t\t\t\t\ttarget[position++] = 0xfa\n\t\t\t\t\t\ttargetView.setFloat32(position, value)\n\t\t\t\t\t\tlet xShifted\n\t\t\t\t\t\tif (useFloat32 < 4 ||\n\t\t\t\t\t\t\t\t// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\n\t\t\t\t\t\t\t\t((xShifted = value * mult10[((target[position] & 0x7f) << 1) | (target[position + 1] >> 7)]) >> 0) === xShifted) {\n\t\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tposition-- // move back into position for writing a double\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xfb\n\t\t\t\t\ttargetView.setFloat64(position, value)\n\t\t\t\t\tposition += 8\n\t\t\t\t}\n\t\t\t} else if (type === 'object') {\n\t\t\t\tif (!value)\n\t\t\t\t\ttarget[position++] = 0xf6\n\t\t\t\telse {\n\t\t\t\t\tif (referenceMap) {\n\t\t\t\t\t\tlet referee = referenceMap.get(value)\n\t\t\t\t\t\tif (referee) {\n\t\t\t\t\t\t\ttarget[position++] = 0xd8\n\t\t\t\t\t\t\ttarget[position++] = 29 // http://cbor.schmorp.de/value-sharing\n\t\t\t\t\t\t\ttarget[position++] = 0x19 // 16-bit uint\n\t\t\t\t\t\t\tif (!referee.references) {\n\t\t\t\t\t\t\t\tlet idsToInsert = referenceMap.idsToInsert || (referenceMap.idsToInsert = [])\n\t\t\t\t\t\t\t\treferee.references = []\n\t\t\t\t\t\t\t\tidsToInsert.push(referee)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treferee.references.push(position - start)\n\t\t\t\t\t\t\tposition += 2 // TODO: also support 32-bit\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t} else \n\t\t\t\t\t\t\treferenceMap.set(value, { offset: position - start })\n\t\t\t\t\t}\n\t\t\t\t\tlet constructor = value.constructor\n\t\t\t\t\tif (constructor === Object) {\n\t\t\t\t\t\twriteObject(value, true)\n\t\t\t\t\t} else if (constructor === Array) {\n\t\t\t\t\t\tlength = value.length\n\t\t\t\t\t\tif (length < 0x18) {\n\t\t\t\t\t\t\ttarget[position++] = 0x80 | length\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twriteArrayHeader(length)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\t\t\tencode(value[i])\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (constructor === Map) {\n\t\t\t\t\t\tif (this.mapsAsObjects ? this.useTag259ForMaps !== false : this.useTag259ForMaps) {\n\t\t\t\t\t\t\t// use Tag 259 (https://github.com/shanewholloway/js-cbor-codec/blob/master/docs/CBOR-259-spec--explicit-maps.md) for maps if the user wants it that way\n\t\t\t\t\t\t\ttarget[position++] = 0xd9\n\t\t\t\t\t\t\ttarget[position++] = 1\n\t\t\t\t\t\t\ttarget[position++] = 3\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlength = value.size\n\t\t\t\t\t\tif (length < 0x18) {\n\t\t\t\t\t\t\ttarget[position++] = 0xa0 | length\n\t\t\t\t\t\t} else if (length < 0x100) {\n\t\t\t\t\t\t\ttarget[position++] = 0xb8\n\t\t\t\t\t\t\ttarget[position++] = length\n\t\t\t\t\t\t} else if (length < 0x10000) {\n\t\t\t\t\t\t\ttarget[position++] = 0xb9\n\t\t\t\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttarget[position++] = 0xba\n\t\t\t\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (encoder.keyMap) { \n\t\t\t\t\t\t\tfor (let [ key, entryValue ] of value) {\n\t\t\t\t\t\t\t\tencode(encoder.encodeKey(key))\n\t\t\t\t\t\t\t\tencode(entryValue)\n\t\t\t\t\t\t\t} \n\t\t\t\t\t\t} else { \n\t\t\t\t\t\t\tfor (let [ key, entryValue ] of value) {\n\t\t\t\t\t\t\t\tencode(key) \n\t\t\t\t\t\t\t\tencode(entryValue)\n\t\t\t\t\t\t\t} \t\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (let i = 0, l = extensions.length; i < l; i++) {\n\t\t\t\t\t\t\tlet extensionClass = extensionClasses[i]\n\t\t\t\t\t\t\tif (value instanceof extensionClass) {\n\t\t\t\t\t\t\t\tlet extension = extensions[i]\n\t\t\t\t\t\t\t\tlet tag = extension.tag\n\t\t\t\t\t\t\t\tif (tag == undefined)\n\t\t\t\t\t\t\t\t\ttag = extension.getTag && extension.getTag.call(this, value)\n\t\t\t\t\t\t\t\tif (tag < 0x18) {\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xc0 | tag\n\t\t\t\t\t\t\t\t} else if (tag < 0x100) {\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd8\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag\n\t\t\t\t\t\t\t\t} else if (tag < 0x10000) {\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd9\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag >> 8\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag & 0xff\n\t\t\t\t\t\t\t\t} else if (tag > -1) {\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xda\n\t\t\t\t\t\t\t\t\ttargetView.setUint32(position, tag)\n\t\t\t\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\t\t\t} // else undefined, don't write tag\n\t\t\t\t\t\t\t\textension.encode.call(this, value, encode, makeRoom)\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value[Symbol.iterator]) {\n\t\t\t\t\t\t\tif (throwOnIterable) {\n\t\t\t\t\t\t\t\tlet error = new Error('Iterable should be serialized as iterator')\n\t\t\t\t\t\t\t\terror.iteratorNotHandled = true;\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttarget[position++] = 0x9f // indefinite length array\n\t\t\t\t\t\t\tfor (let entry of value) {\n\t\t\t\t\t\t\t\tencode(entry)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttarget[position++] = 0xff // stop-code\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value[Symbol.asyncIterator] || isBlob(value)) {\n\t\t\t\t\t\t\tlet error = new Error('Iterable/blob should be serialized as iterator')\n\t\t\t\t\t\t\terror.iteratorNotHandled = true;\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// no extension found, write as object\n\t\t\t\t\t\twriteObject(value, !value.hasOwnProperty) // if it doesn't have hasOwnProperty, don't do hasOwnProperty checks\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'boolean') {\n\t\t\t\ttarget[position++] = value ? 0xf5 : 0xf4\n\t\t\t} else if (type === 'bigint') {\n\t\t\t\tif (value < (BigInt(1)<<BigInt(64)) && value >= 0) {\n\t\t\t\t\t// use an unsigned int as long as it fits\n\t\t\t\t\ttarget[position++] = 0x1b\n\t\t\t\t\ttargetView.setBigUint64(position, value)\n\t\t\t\t} else if (value > -(BigInt(1)<<BigInt(64)) && value < 0) {\n\t\t\t\t\t// if we can fit an unsigned int, use that\n\t\t\t\t\ttarget[position++] = 0x3b\n\t\t\t\t\ttargetView.setBigUint64(position, -value - BigInt(1))\n\t\t\t\t} else {\n\t\t\t\t\t// overflow\n\t\t\t\t\tif (this.largeBigIntToFloat) {\n\t\t\t\t\t\ttarget[position++] = 0xfb\n\t\t\t\t\t\ttargetView.setFloat64(position, Number(value))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new RangeError(value + ' was too large to fit in CBOR 64-bit integer format, set largeBigIntToFloat to convert to float-64')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tposition += 8\n\t\t\t} else if (type === 'undefined') {\n\t\t\t\ttarget[position++] = 0xf7\n\t\t\t} else {\n\t\t\t\tthrow new Error('Unknown type: ' + type)\n\t\t\t}\n\t\t}\n\n\t\tconst writeObject = this.useRecords === false ? this.variableMapSize ? (object) => {\n\t\t\t// this method is slightly slower, but generates \"preferred serialization\" (optimally small for smaller objects)\n\t\t\tlet keys = Object.keys(object)\n\t\t\tlet vals = Object.values(object)\n\t\t\tlet length = keys.length\n\t\t\tif (length < 0x18) {\n\t\t\t\ttarget[position++] = 0xa0 | length\n\t\t\t} else if (length < 0x100) {\n\t\t\t\ttarget[position++] = 0xb8\n\t\t\t\ttarget[position++] = length\n\t\t\t} else if (length < 0x10000) {\n\t\t\t\ttarget[position++] = 0xb9\n\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t} else {\n\t\t\t\ttarget[position++] = 0xba\n\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\tposition += 4\n\t\t\t}\n\t\t\tlet key\n\t\t\tif (encoder.keyMap) { \n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tencode(encodeKey(keys[i]))\n\t\t\t\t\tencode(vals[i])\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tencode(keys[i])\n\t\t\t\t\tencode(vals[i])\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\t\t(object, safePrototype) => {\n\t\t\ttarget[position++] = 0xb9 // always use map 16, so we can preallocate and set the length afterwards\n\t\t\tlet objectOffset = position - start\n\t\t\tposition += 2\n\t\t\tlet size = 0\n\t\t\tif (encoder.keyMap) { \n\t\t\t\tfor (let key in object) if (safePrototype || object.hasOwnProperty(key)) {\n\t\t\t\t\tencode(encoder.encodeKey(key))\n\t\t\t\t\tencode(object[key])\n\t\t\t\t\tsize++\n\t\t\t\t}\n\t\t\t} else { \n\t\t\t\tfor (let key in object) if (safePrototype || object.hasOwnProperty(key)) {\n\t\t\t\t\t\tencode(key)\n\t\t\t\t\t\tencode(object[key])\n\t\t\t\t\tsize++\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[objectOffset++ + start] = size >> 8\n\t\t\ttarget[objectOffset + start] = size & 0xff\n\t\t} :\n\t\t(object, safePrototype) => {\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null))\n\t\t\tlet newTransitions = 0\n\t\t\tlet length = 0\n\t\t\tlet parentRecordId\n\t\t\tlet keys\n\t\t\tif (this.keyMap) {\n\t\t\t\tkeys = Object.keys(object).map(k => this.encodeKey(k))\n\t\t\t\tlength = keys.length\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tlet key = keys[i]\n\t\t\t\t\tnextTransition = transition[key]\n\t\t\t\t\tif (!nextTransition) {\n\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\n\t\t\t\t\t\tnewTransitions++\n\t\t\t\t\t}\n\t\t\t\t\ttransition = nextTransition\n\t\t\t\t}\t\t\t\t\n\t\t\t} else {\n\t\t\t\tfor (let key in object) if (safePrototype || object.hasOwnProperty(key)) {\n\t\t\t\t\tnextTransition = transition[key]\n\t\t\t\t\tif (!nextTransition) {\n\t\t\t\t\t\tif (transition[RECORD_SYMBOL] & 0x100000) {// this indicates it is a brancheable/extendable terminal node, so we will use this record id and extend it\n\t\t\t\t\t\t\tparentRecordId = transition[RECORD_SYMBOL] & 0xffff\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\n\t\t\t\t\t\tnewTransitions++\n\t\t\t\t\t}\n\t\t\t\t\ttransition = nextTransition\n\t\t\t\t\tlength++\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet recordId = transition[RECORD_SYMBOL]\n\t\t\tif (recordId !== undefined) {\n\t\t\t\trecordId &= 0xffff\n\t\t\t\ttarget[position++] = 0xd9\n\t\t\t\ttarget[position++] = (recordId >> 8) | 0xe0\n\t\t\t\ttarget[position++] = recordId & 0xff\n\t\t\t} else {\n\t\t\t\tif (!keys)\n\t\t\t\t\tkeys = transition.__keys__ || (transition.__keys__ = Object.keys(object))\n\t\t\t\tif (parentRecordId === undefined) {\n\t\t\t\t\trecordId = structures.nextId++\n\t\t\t\t\tif (!recordId) {\n\t\t\t\t\t\trecordId = 0\n\t\t\t\t\t\tstructures.nextId = 1\n\t\t\t\t\t}\n\t\t\t\t\tif (recordId >= MAX_STRUCTURES) {// cycle back around\n\t\t\t\t\t\tstructures.nextId = (recordId = maxSharedStructures) + 1\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\trecordId = parentRecordId\n\t\t\t\t}\n\t\t\t\tstructures[recordId] = keys\n\t\t\t\tif (recordId < maxSharedStructures) {\n\t\t\t\t\ttarget[position++] = 0xd9\n\t\t\t\t\ttarget[position++] = (recordId >> 8) | 0xe0\n\t\t\t\t\ttarget[position++] = recordId & 0xff\n\t\t\t\t\ttransition = structures.transitions\n\t\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\t\tif (transition[RECORD_SYMBOL] === undefined || (transition[RECORD_SYMBOL] & 0x100000))\n\t\t\t\t\t\t\ttransition[RECORD_SYMBOL] = recordId\n\t\t\t\t\t\ttransition = transition[keys[i]]\n\t\t\t\t\t}\n\t\t\t\t\ttransition[RECORD_SYMBOL] = recordId | 0x100000 // indicates it is a extendable terminal\n\t\t\t\t\thasSharedUpdate = true\n\t\t\t\t} else {\n\t\t\t\t\ttransition[RECORD_SYMBOL] = recordId\n\t\t\t\t\ttargetView.setUint32(position, 0xd9dfff00) // tag two byte, then record definition id\n\t\t\t\t\tposition += 3\n\t\t\t\t\tif (newTransitions)\n\t\t\t\t\t\ttransitionsCount += serializationsSinceTransitionRebuild * newTransitions\n\t\t\t\t\t// record the removal of the id, we can maintain our shared structure\n\t\t\t\t\tif (recordIdsToRemove.length >= MAX_STRUCTURES - maxSharedStructures)\n\t\t\t\t\t\trecordIdsToRemove.shift()[RECORD_SYMBOL] = undefined // we are cycling back through, and have to remove old ones\n\t\t\t\t\trecordIdsToRemove.push(transition)\n\t\t\t\t\twriteArrayHeader(length + 2)\n\t\t\t\t\tencode(0xe000 + recordId)\n\t\t\t\t\tencode(keys)\n\t\t\t\t\tif (safePrototype === null) return; // special exit for iterator\n\t\t\t\t\tfor (let key in object)\n\t\t\t\t\t\tif (safePrototype || object.hasOwnProperty(key))\n\t\t\t\t\t\t\tencode(object[key])\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (length < 0x18) { // write the array header\n\t\t\t\ttarget[position++] = 0x80 | length\n\t\t\t} else {\n\t\t\t\twriteArrayHeader(length)\n\t\t\t}\n\t\t\tif (safePrototype === null) return; // special exit for iterator\n\t\t\tfor (let key in object)\n\t\t\t\tif (safePrototype || object.hasOwnProperty(key))\n\t\t\t\t\tencode(object[key])\n\t\t}\n\t\tconst makeRoom = (end) => {\n\t\t\tlet newSize\n\t\t\tif (end > 0x1000000) {\n\t\t\t\t// special handling for really large buffers\n\t\t\t\tif ((end - start) > MAX_BUFFER_SIZE)\n\t\t\t\t\tthrow new Error('Encoded buffer would be larger than maximum buffer size')\n\t\t\t\tnewSize = Math.min(MAX_BUFFER_SIZE,\n\t\t\t\t\tMath.round(Math.max((end - start) * (end > 0x4000000 ? 1.25 : 2), 0x400000) / 0x1000) * 0x1000)\n\t\t\t} else // faster handling for smaller buffers\n\t\t\t\tnewSize = ((Math.max((end - start) << 2, target.length - 1) >> 12) + 1) << 12\n\t\t\tlet newBuffer = new ByteArrayAllocate(newSize)\n\t\t\ttargetView = new DataView(newBuffer.buffer, 0, newSize)\n\t\t\tif (target.copy)\n\t\t\t\ttarget.copy(newBuffer, 0, start, end)\n\t\t\telse\n\t\t\t\tnewBuffer.set(target.slice(start, end))\n\t\t\tposition -= start\n\t\t\tstart = 0\n\t\t\tsafeEnd = newBuffer.length - 10\n\t\t\treturn target = newBuffer\n\t\t}\n\t\tlet chunkThreshold = 100;\n\t\tlet continuedChunkThreshold = 1000;\n\t\tthis.encodeAsIterable = function(value, options) {\n\t\t\treturn startEncoding(value, options, encodeObjectAsIterable);\n\t\t}\n\t\tthis.encodeAsAsyncIterable = function(value, options) {\n\t\t\treturn startEncoding(value, options, encodeObjectAsAsyncIterable);\n\t\t}\n\n\t\tfunction* encodeObjectAsIterable(object, iterateProperties, finalIterable) {\n\t\t\tlet constructor = object.constructor;\n\t\t\tif (constructor === Object) {\n\t\t\t\tlet useRecords = encoder.useRecords !== false;\n\t\t\t\tif (useRecords)\n\t\t\t\t\twriteObject(object, null); // write the record identifier\n\t\t\t\telse\n\t\t\t\t\twriteEntityLength(Object.keys(object).length, 0xa0);\n\t\t\t\tfor (let key in object) {\n\t\t\t\t\tlet value = object[key];\n\t\t\t\t\tif (!useRecords) encode(key);\n\t\t\t\t\tif (value && typeof value === 'object') {\n\t\t\t\t\t\tif (iterateProperties[key])\n\t\t\t\t\t\t\tyield* encodeObjectAsIterable(value, iterateProperties[key]);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tyield* tryEncode(value, iterateProperties, key);\n\t\t\t\t\t} else encode(value);\n\t\t\t\t}\n\t\t\t} else if (constructor === Array) {\n\t\t\t\tlet length = object.length;\n\t\t\t\twriteArrayHeader(length);\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tlet value = object[i];\n\t\t\t\t\tif (value && (typeof value === 'object' || position - start > chunkThreshold)) {\n\t\t\t\t\t\tif (iterateProperties.element)\n\t\t\t\t\t\t\tyield* encodeObjectAsIterable(value, iterateProperties.element);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tyield* tryEncode(value, iterateProperties, 'element');\n\t\t\t\t\t} else encode(value);\n\t\t\t\t}\n\t\t\t} else if (object[Symbol.iterator]) {\n\t\t\t\ttarget[position++] = 0x9f; // start indefinite array\n\t\t\t\tfor (let value of object) {\n\t\t\t\t\tif (value && (typeof value === 'object' || position - start > chunkThreshold)) {\n\t\t\t\t\t\tif (iterateProperties.element)\n\t\t\t\t\t\t\tyield* encodeObjectAsIterable(value, iterateProperties.element);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tyield* tryEncode(value, iterateProperties, 'element');\n\t\t\t\t\t} else encode(value);\n\t\t\t\t}\n\t\t\t\ttarget[position++] = 0xff; // stop byte\n\t\t\t} else if (isBlob(object)){\n\t\t\t\twriteEntityLength(object.size, 0x40); // encode as binary data\n\t\t\t\tyield target.subarray(start, position);\n\t\t\t\tyield object; // directly return blobs, they have to be encoded asynchronously\n\t\t\t\trestartEncoding();\n\t\t\t} else if (object[Symbol.asyncIterator]) {\n\t\t\t\ttarget[position++] = 0x9f; // start indefinite array\n\t\t\t\tyield target.subarray(start, position);\n\t\t\t\tyield object; // directly return async iterators, they have to be encoded asynchronously\n\t\t\t\trestartEncoding();\n\t\t\t\ttarget[position++] = 0xff; // stop byte\n\t\t\t} else {\n\t\t\t\tencode(object);\n\t\t\t}\n\t\t\tif (finalIterable && position > start) yield target.subarray(start, position);\n\t\t\telse if (position - start > chunkThreshold) {\n\t\t\t\tyield target.subarray(start, position);\n\t\t\t\trestartEncoding();\n\t\t\t}\n\t\t}\n\t\tfunction* tryEncode(value, iterateProperties, key) {\n\t\t\tlet restart = position - start;\n\t\t\ttry {\n\t\t\t\tencode(value);\n\t\t\t\tif (position - start > chunkThreshold) {\n\t\t\t\t\tyield target.subarray(start, position);\n\t\t\t\t\trestartEncoding();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (error.iteratorNotHandled) {\n\t\t\t\t\titerateProperties[key] = {};\n\t\t\t\t\tposition = start + restart; // restart our position so we don't have partial data from last encode\n\t\t\t\t\tyield* encodeObjectAsIterable.call(this, value, iterateProperties[key]);\n\t\t\t\t} else throw error;\n\t\t\t}\n\t\t}\n\t\tfunction restartEncoding() {\n\t\t\tchunkThreshold = continuedChunkThreshold;\n\t\t\tencoder.encode(null, THROW_ON_ITERABLE); // restart encoding\n\t\t}\n\t\tfunction startEncoding(value, options, encodeIterable) {\n\t\t\tif (options && options.chunkThreshold) // explicitly specified chunk sizes\n\t\t\t\tchunkThreshold = continuedChunkThreshold = options.chunkThreshold;\n\t\t\telse // we start with a smaller threshold to get initial bytes sent quickly\n\t\t\t\tchunkThreshold = 100;\n\t\t\tif (value && typeof value === 'object') {\n\t\t\t\tencoder.encode(null, THROW_ON_ITERABLE); // start encoding\n\t\t\t\treturn encodeIterable(value, encoder.iterateProperties || (encoder.iterateProperties = {}), true);\n\t\t\t}\n\t\t\treturn [encoder.encode(value)];\n\t\t}\n\n\t\tasync function* encodeObjectAsAsyncIterable(value, iterateProperties) {\n\t\t\tfor (let encodedValue of encodeObjectAsIterable(value, iterateProperties, true)) {\n\t\t\t\tlet constructor = encodedValue.constructor;\n\t\t\t\tif (constructor === ByteArray || constructor === Uint8Array)\n\t\t\t\t\tyield encodedValue;\n\t\t\t\telse if (isBlob(encodedValue)) {\n\t\t\t\t\tlet reader = encodedValue.stream().getReader();\n\t\t\t\t\tlet next;\n\t\t\t\t\twhile (!(next = await reader.read()).done) {\n\t\t\t\t\t\tyield next.value;\n\t\t\t\t\t}\n\t\t\t\t} else if (encodedValue[Symbol.asyncIterator]) {\n\t\t\t\t\tfor await (let asyncValue of encodedValue) {\n\t\t\t\t\t\trestartEncoding();\n\t\t\t\t\t\tif (asyncValue)\n\t\t\t\t\t\t\tyield* encodeObjectAsAsyncIterable(asyncValue, iterateProperties.async || (iterateProperties.async = {}));\n\t\t\t\t\t\telse yield encoder.encode(asyncValue);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tyield encodedValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tuseBuffer(buffer) {\n\t\t// this means we are finished using our own buffer and we can write over it safely\n\t\ttarget = buffer\n\t\ttargetView = new DataView(target.buffer, target.byteOffset, target.byteLength)\n\t\tposition = 0\n\t}\n\tclearSharedData() {\n\t\tif (this.structures)\n\t\t\tthis.structures = []\n\t\tif (this.sharedValues)\n\t\t\tthis.sharedValues = undefined\n\t}\n\tupdateSharedData() {\n\t\tlet lastVersion = this.sharedVersion || 0\n\t\tthis.sharedVersion = lastVersion + 1\n\t\tlet structuresCopy = this.structures.slice(0)\n\t\tlet sharedData = new SharedData(structuresCopy, this.sharedValues, this.sharedVersion)\n\t\tlet saveResults = this.saveShared(sharedData,\n\t\t\t\texistingShared => (existingShared && existingShared.version || 0) == lastVersion)\n\t\tif (saveResults === false) {\n\t\t\t// get updated structures and try again if the update failed\n\t\t\tsharedData = this.getShared() || {}\n\t\t\tthis.structures = sharedData.structures || []\n\t\t\tthis.sharedValues = sharedData.packedValues\n\t\t\tthis.sharedVersion = sharedData.version\n\t\t\tthis.structures.nextId = this.structures.length\n\t\t} else {\n\t\t\t// restore structures\n\t\t\tstructuresCopy.forEach((structure, i) => this.structures[i] = structure)\n\t\t}\n\t\t// saveShared may fail to write and reload, or may have reloaded to check compatibility and overwrite saved data, either way load the correct shared data\n\t\treturn saveResults\n\t}\n}\nfunction writeEntityLength(length, majorValue) {\n\tif (length < 0x18)\n\t\ttarget[position++] = majorValue | length\n\telse if (length < 0x100) {\n\t\ttarget[position++] = majorValue | 0x18\n\t\ttarget[position++] = length\n\t} else if (length < 0x10000) {\n\t\ttarget[position++] = majorValue | 0x19\n\t\ttarget[position++] = length >> 8\n\t\ttarget[position++] = length & 0xff\n\t} else {\n\t\ttarget[position++] = majorValue | 0x1a\n\t\ttargetView.setUint32(position, length)\n\t\tposition += 4\n\t}\n\n}\nclass SharedData {\n\tconstructor(structures, values, version) {\n\t\tthis.structures = structures\n\t\tthis.packedValues = values\n\t\tthis.version = version\n\t}\n}\n\nfunction writeArrayHeader(length) {\n\tif (length < 0x18)\n\t\ttarget[position++] = 0x80 | length\n\telse if (length < 0x100) {\n\t\ttarget[position++] = 0x98\n\t\ttarget[position++] = length\n\t} else if (length < 0x10000) {\n\t\ttarget[position++] = 0x99\n\t\ttarget[position++] = length >> 8\n\t\ttarget[position++] = length & 0xff\n\t} else {\n\t\ttarget[position++] = 0x9a\n\t\ttargetView.setUint32(position, length)\n\t\tposition += 4\n\t}\n}\n\nconst BlobConstructor = typeof Blob === 'undefined' ? function(){} : Blob;\nfunction isBlob(object) {\n\tif (object instanceof BlobConstructor)\n\t\treturn true;\n\tlet tag = object[Symbol.toStringTag];\n\treturn tag === 'Blob' || tag === 'File';\n}\nfunction findRepetitiveStrings(value, packedValues) {\n\tswitch(typeof value) {\n\t\tcase 'string':\n\t\t\tif (value.length > 3) {\n\t\t\t\tif (packedValues.objectMap[value] > -1 || packedValues.values.length >= packedValues.maxValues)\n\t\t\t\t\treturn\n\t\t\t\tlet packedStatus = packedValues.get(value)\n\t\t\t\tif (packedStatus) {\n\t\t\t\t\tif (++packedStatus.count == 2) {\n\t\t\t\t\t\tpackedValues.values.push(value)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpackedValues.set(value, {\n\t\t\t\t\t\tcount: 1,\n\t\t\t\t\t})\n\t\t\t\t\tif (packedValues.samplingPackedValues) {\n\t\t\t\t\t\tlet status = packedValues.samplingPackedValues.get(value)\n\t\t\t\t\t\tif (status)\n\t\t\t\t\t\t\tstatus.count++\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tpackedValues.samplingPackedValues.set(value, {\n\t\t\t\t\t\t\t\tcount: 1,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'object':\n\t\t\tif (value) {\n\t\t\t\tif (value instanceof Array) {\n\t\t\t\t\tfor (let i = 0, l = value.length; i < l; i++) {\n\t\t\t\t\t\tfindRepetitiveStrings(value[i], packedValues)\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tlet includeKeys = !packedValues.encoder.useRecords\n\t\t\t\t\tfor (var key in value) {\n\t\t\t\t\t\tif (value.hasOwnProperty(key)) {\n\t\t\t\t\t\t\tif (includeKeys)\n\t\t\t\t\t\t\t\tfindRepetitiveStrings(key, packedValues)\n\t\t\t\t\t\t\tfindRepetitiveStrings(value[key], packedValues)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'function': console.log(value)\n\t}\n}\nconst isLittleEndianMachine = new Uint8Array(new Uint16Array([1]).buffer)[0] == 1\nextensionClasses = [ Date, Set, Error, RegExp, Tag, ArrayBuffer,\n\tUint8Array, Uint8ClampedArray, Uint16Array, Uint32Array,\n\ttypeof BigUint64Array == 'undefined' ? function() {} : BigUint64Array, Int8Array, Int16Array, Int32Array,\n\ttypeof BigInt64Array == 'undefined' ? function() {} : BigInt64Array,\n\tFloat32Array, Float64Array, SharedData ]\n\n//Object.getPrototypeOf(Uint8Array.prototype).constructor /*TypedArray*/\nextensions = [{ // Date\n\ttag: 1,\n\tencode(date, encode) {\n\t\tlet seconds = date.getTime() / 1000\n\t\tif ((this.useTimestamp32 || date.getMilliseconds() === 0) && seconds >= 0 && seconds < 0x100000000) {\n\t\t\t// Timestamp 32\n\t\t\ttarget[position++] = 0x1a\n\t\t\ttargetView.setUint32(position, seconds)\n\t\t\tposition += 4\n\t\t} else {\n\t\t\t// Timestamp float64\n\t\t\ttarget[position++] = 0xfb\n\t\t\ttargetView.setFloat64(position, seconds)\n\t\t\tposition += 8\n\t\t}\n\t}\n}, { // Set\n\ttag: 258, // https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md\n\tencode(set, encode) {\n\t\tlet array = Array.from(set)\n\t\tencode(array)\n\t}\n}, { // Error\n\ttag: 27, // http://cbor.schmorp.de/generic-object\n\tencode(error, encode) {\n\t\tencode([ error.name, error.message ])\n\t}\n}, { // RegExp\n\ttag: 27, // http://cbor.schmorp.de/generic-object\n\tencode(regex, encode) {\n\t\tencode([ 'RegExp', regex.source, regex.flags ])\n\t}\n}, { // Tag\n\tgetTag(tag) {\n\t\treturn tag.tag\n\t},\n\tencode(tag, encode) {\n\t\tencode(tag.value)\n\t}\n}, { // ArrayBuffer\n\tencode(arrayBuffer, encode, makeRoom) {\n\t\twriteBuffer(arrayBuffer, makeRoom)\n\t}\n}, { // Uint8Array\n\tgetTag(typedArray) {\n\t\tif (typedArray.constructor === Uint8Array) {\n\t\t\tif (this.tagUint8Array || hasNodeBuffer && this.tagUint8Array !== false)\n\t\t\t\treturn 64;\n\t\t} // else no tag\n\t},\n\tencode(typedArray, encode, makeRoom) {\n\t\twriteBuffer(typedArray, makeRoom)\n\t}\n},\n\ttypedArrayEncoder(68, 1),\n\ttypedArrayEncoder(69, 2),\n\ttypedArrayEncoder(70, 4),\n\ttypedArrayEncoder(71, 8),\n\ttypedArrayEncoder(72, 1),\n\ttypedArrayEncoder(77, 2),\n\ttypedArrayEncoder(78, 4),\n\ttypedArrayEncoder(79, 8),\n\ttypedArrayEncoder(85, 4),\n\ttypedArrayEncoder(86, 8),\n{\n\tencode(sharedData, encode) { // write SharedData\n\t\tlet packedValues = sharedData.packedValues || []\n\t\tlet sharedStructures = sharedData.structures || []\n\t\tif (packedValues.values.length > 0) {\n\t\t\ttarget[position++] = 0xd8 // one-byte tag\n\t\t\ttarget[position++] = 51 // tag 51 for packed shared structures https://www.potaroo.net/ietf/ids/draft-ietf-cbor-packed-03.txt\n\t\t\twriteArrayHeader(4)\n\t\t\tlet valuesArray = packedValues.values\n\t\t\tencode(valuesArray)\n\t\t\twriteArrayHeader(0) // prefixes\n\t\t\twriteArrayHeader(0) // suffixes\n\t\t\tpackedObjectMap = Object.create(sharedPackedObjectMap || null)\n\t\t\tfor (let i = 0, l = valuesArray.length; i < l; i++) {\n\t\t\t\tpackedObjectMap[valuesArray[i]] = i\n\t\t\t}\n\t\t}\n\t\tif (sharedStructures) {\n\t\t\ttargetView.setUint32(position, 0xd9dffe00)\n\t\t\tposition += 3\n\t\t\tlet definitions = sharedStructures.slice(0)\n\t\t\tdefinitions.unshift(0xe000)\n\t\t\tdefinitions.push(new Tag(sharedData.version, 0x53687264))\n\t\t\tencode(definitions)\n\t\t} else\n\t\t\tencode(new Tag(sharedData.version, 0x53687264))\n\t\t}\n\t}]\nfunction typedArrayEncoder(tag, size) {\n\tif (!isLittleEndianMachine && size > 1)\n\t\ttag -= 4 // the big endian equivalents are 4 less\n\treturn {\n\t\ttag: tag,\n\t\tencode: function writeExtBuffer(typedArray, encode) {\n\t\t\tlet length = typedArray.byteLength\n\t\t\tlet offset = typedArray.byteOffset || 0\n\t\t\tlet buffer = typedArray.buffer || typedArray\n\t\t\tencode(hasNodeBuffer ? Buffer.from(buffer, offset, length) :\n\t\t\t\tnew Uint8Array(buffer, offset, length))\n\t\t}\n\t}\n}\nfunction writeBuffer(buffer, makeRoom) {\n\tlet length = buffer.byteLength\n\tif (length < 0x18) {\n\t\ttarget[position++] = 0x40 + length\n\t} else if (length < 0x100) {\n\t\ttarget[position++] = 0x58\n\t\ttarget[position++] = length\n\t} else if (length < 0x10000) {\n\t\ttarget[position++] = 0x59\n\t\ttarget[position++] = length >> 8\n\t\ttarget[position++] = length & 0xff\n\t} else {\n\t\ttarget[position++] = 0x5a\n\t\ttargetView.setUint32(position, length)\n\t\tposition += 4\n\t}\n\tif (position + length >= target.length) {\n\t\tmakeRoom(position + length)\n\t}\n\t// if it is already a typed array (has an ArrayBuffer), use that, but if it is an ArrayBuffer itself,\n\t// must wrap it to set it.\n\ttarget.set(buffer.buffer ? buffer : new Uint8Array(buffer), position)\n\tposition += length\n}\n\nfunction insertIds(serialized, idsToInsert) {\n\t// insert the ids that need to be referenced for structured clones\n\tlet nextId\n\tlet distanceToMove = idsToInsert.length * 2\n\tlet lastEnd = serialized.length - distanceToMove\n\tidsToInsert.sort((a, b) => a.offset > b.offset ? 1 : -1)\n\tfor (let id = 0; id < idsToInsert.length; id++) {\n\t\tlet referee = idsToInsert[id]\n\t\treferee.id = id\n\t\tfor (let position of referee.references) {\n\t\t\tserialized[position++] = id >> 8\n\t\t\tserialized[position] = id & 0xff\n\t\t}\n\t}\n\twhile (nextId = idsToInsert.pop()) {\n\t\tlet offset = nextId.offset\n\t\tserialized.copyWithin(offset + distanceToMove, offset, lastEnd)\n\t\tdistanceToMove -= 2\n\t\tlet position = offset + distanceToMove\n\t\tserialized[position++] = 0xd8\n\t\tserialized[position++] = 28 // http://cbor.schmorp.de/value-sharing\n\t\tlastEnd = offset\n\t}\n\treturn serialized\n}\nfunction writeBundles(start, encode) {\n\ttargetView.setUint32(bundledStrings.position + start, position - bundledStrings.position - start + 1) // the offset to bundle\n\tlet writeStrings = bundledStrings\n\tbundledStrings = null\n\tencode(writeStrings[0])\n\tencode(writeStrings[1])\n}\n\nexport function addExtension(extension) {\n\tif (extension.Class) {\n\t\tif (!extension.encode)\n\t\t\tthrow new Error('Extension has no encode function')\n\t\textensionClasses.unshift(extension.Class)\n\t\textensions.unshift(extension)\n\t}\n\tdecodeAddExtension(extension)\n}\nlet defaultEncoder = new Encoder({ useRecords: false })\nexport const encode = defaultEncoder.encode\nexport const encodeAsIterable = defaultEncoder.encodeAsIterable\nexport const encodeAsAsyncIterable = defaultEncoder.encodeAsAsyncIterable\nexport { FLOAT32_OPTIONS } from './decode.js'\nimport { FLOAT32_OPTIONS } from './decode.js'\nexport const { NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT } = FLOAT32_OPTIONS\nexport const REUSE_BUFFER_MODE = 512\nexport const RESET_BUFFER_MODE = 1024\nexport const THROW_ON_ITERABLE = 2048\n\n\n", "export { Encoder, addExtension, encode, encodeAsIterable, encodeAsAsyncIterable, NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT, REUSE_BUFFER_MODE } from './encode.js'\nexport { Tag, Decoder, decodeMultiple, decode, FLOAT32_OPTIONS, clearSource, roundFloat32, isNativeAccelerationEnabled } from './decode.js'\nexport { EncoderStream, DecoderStream } from './stream.js'\nexport { decodeIter, encodeIter } from './iterators.js'\nexport const useRecords = false\nexport const mapsAsObjects = true\nimport { setExtractor } from './decode.js'\nimport { createRequire } from 'module'\n\nconst nativeAccelerationDisabled = process.env.CBOR_NATIVE_ACCELERATION_DISABLED !== undefined && process.env.CBOR_NATIVE_ACCELERATION_DISABLED.toLowerCase() === 'true';\n\nif (!nativeAccelerationDisabled) {\n\tlet extractor\n\ttry {\n\t\tif (typeof require == 'function')\n\t\t\textractor = require('cbor-extract')\n\t\telse\n\t\t\textractor = createRequire(import.meta.url)('cbor-extract')\n\t\tif (extractor)\n\t\t\tsetExtractor(extractor.extractStrings)\n\t} catch (error) {\n\t\t// native module is optional\n\t}\n}\n", "import * as cborx from 'cbor-x'\nimport { CID } from 'multiformats/cid'\n\n// add extension for decoding CIDs\n// decoding code taken from @ipld/dag-cbor\n// does not support encoding cids\ncborx.addExtension({\n Class: CID,\n tag: 42,\n encode: () => {\n throw new Error('cannot encode cids')\n },\n decode: (bytes: Uint8Array): CID => {\n if (bytes[0] !== 0) {\n throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00')\n }\n return CID.decode(bytes.subarray(1)) // ignore leading 0x00\n },\n})\n\nexport const cborDecodeMulti = (encoded: Uint8Array): unknown[] => {\n const decoded: unknown[] = []\n cborx.decodeMultiple(encoded, (value) => {\n decoded.push(value)\n })\n return decoded\n}\n", "import pino from 'pino'\n\nconst allSystemsEnabled = !process.env.LOG_SYSTEMS\nconst enabledSystems = (process.env.LOG_SYSTEMS || '')\n .replace(',', ' ')\n .split(' ')\n\nconst enabledEnv = process.env.LOG_ENABLED\nconst enabled =\n enabledEnv === 'true' || enabledEnv === 't' || enabledEnv === '1'\n\nconst level = process.env.LOG_LEVEL || 'info'\n\nconst config = {\n enabled,\n level,\n}\n\nconst rootLogger = process.env.LOG_DESTINATION\n ? pino(config, pino.destination(process.env.LOG_DESTINATION))\n : pino(config)\n\nconst subsystems: Record<string, pino.Logger> = {}\n\nexport const subsystemLogger = (name: string): pino.Logger => {\n if (subsystems[name]) return subsystems[name]\n const subsystemEnabled =\n enabled && (allSystemsEnabled || enabledSystems.indexOf(name) > -1)\n\n // can't disable child loggers, so we just set their level to fatal to effectively turn them off\n subsystems[name] = rootLogger.child(\n { name },\n { level: subsystemEnabled ? level : 'silent' },\n )\n return subsystems[name]\n}\n", "import {\n Stream,\n Readable,\n PassThrough,\n Transform,\n TransformCallback,\n} from 'stream'\n\nexport const forwardStreamErrors = (...streams: Stream[]) => {\n for (let i = 0; i < streams.length; ++i) {\n const stream = streams[i]\n const next = streams[i + 1]\n if (next) {\n stream.once('error', (err) => next.emit('error', err))\n }\n }\n}\n\nexport const cloneStream = (stream: Readable): Readable => {\n const passthrough = new PassThrough()\n forwardStreamErrors(stream, passthrough)\n return stream.pipe(passthrough)\n}\n\nexport const streamSize = async (stream: Readable): Promise<number> => {\n let size = 0\n for await (const chunk of stream) {\n size += chunk.length\n }\n return size\n}\n\nexport const streamToBytes = async (stream: Readable): Promise<Uint8Array> => {\n const bufs: Buffer[] = []\n for await (const bytes of stream) {\n bufs.push(bytes)\n }\n return new Uint8Array(Buffer.concat(bufs))\n}\n\nexport const byteIterableToStream = (\n iter: AsyncIterable<Uint8Array>,\n): Readable => {\n return Readable.from(iter, { objectMode: false })\n}\n\nexport const bytesToStream = (bytes: Uint8Array): Readable => {\n const stream = new Readable()\n stream.push(bytes)\n stream.push(null)\n return stream\n}\n\nexport class MaxSizeChecker extends Transform {\n totalSize = 0\n constructor(public maxSize: number, public createError: () => Error) {\n super()\n }\n _transform(chunk: Uint8Array, _enc: BufferEncoding, cb: TransformCallback) {\n this.totalSize += chunk.length\n if (this.totalSize > this.maxSize) {\n return this.destroy(this.createError())\n }\n return cb(null, chunk)\n }\n}\n", "import { lexToIpld, LexValue } from '@atproto/lexicon'\nimport { dataToCborBlock } from '@atproto/common'\nimport { CID } from 'multiformats/cid'\nimport * as uint8arrays from 'uint8arrays'\n\nexport class BlockMap {\n private map: Map<string, Uint8Array> = new Map()\n\n async add(value: LexValue): Promise<CID> {\n const block = await dataToCborBlock(lexToIpld(value))\n this.set(block.cid, block.bytes)\n return block.cid\n }\n\n set(cid: CID, bytes: Uint8Array) {\n this.map.set(cid.toString(), bytes)\n }\n\n get(cid: CID): Uint8Array | undefined {\n return this.map.get(cid.toString())\n }\n\n delete(cid: CID) {\n this.map.delete(cid.toString())\n }\n\n getMany(cids: CID[]): { blocks: BlockMap; missing: CID[] } {\n const missing: CID[] = []\n const blocks = new BlockMap()\n for (const cid of cids) {\n const got = this.map.get(cid.toString())\n if (got) {\n blocks.set(cid, got)\n } else {\n missing.push(cid)\n }\n }\n return { blocks, missing }\n }\n\n has(cid: CID): boolean {\n return this.map.has(cid.toString())\n }\n\n clear(): void {\n this.map.clear()\n }\n\n forEach(cb: (bytes: Uint8Array, cid: CID) => void): void {\n this.map.forEach((val, key) => cb(val, CID.parse(key)))\n }\n\n entries(): Entry[] {\n const entries: Entry[] = []\n this.forEach((bytes, cid) => {\n entries.push({ cid, bytes })\n })\n return entries\n }\n\n cids(): CID[] {\n return this.entries().map((e) => e.cid)\n }\n\n addMap(toAdd: BlockMap) {\n toAdd.forEach((bytes, cid) => {\n this.set(cid, bytes)\n })\n }\n\n get size(): number {\n return this.map.size\n }\n\n get byteSize(): number {\n let size = 0\n this.forEach((bytes) => {\n size += bytes.length\n })\n return size\n }\n\n equals(other: BlockMap): boolean {\n if (this.size !== other.size) {\n return false\n }\n for (const entry of this.entries()) {\n const otherBytes = other.get(entry.cid)\n if (!otherBytes) return false\n if (!uint8arrays.equals(entry.bytes, otherBytes)) {\n return false\n }\n }\n return true\n }\n}\n\ntype Entry = {\n cid: CID\n bytes: Uint8Array\n}\n\nexport default BlockMap\n", "import { CID } from 'multiformats'\n\nexport class CidSet {\n private set: Set<string>\n\n constructor(arr: CID[] = []) {\n const strArr = arr.map((c) => c.toString())\n this.set = new Set(strArr)\n }\n\n add(cid: CID): CidSet {\n this.set.add(cid.toString())\n return this\n }\n\n addSet(toMerge: CidSet): CidSet {\n toMerge.toList().map((c) => this.add(c))\n return this\n }\n\n subtractSet(toSubtract: CidSet): CidSet {\n toSubtract.toList().map((c) => this.delete(c))\n return this\n }\n\n delete(cid: CID) {\n this.set.delete(cid.toString())\n return this\n }\n\n has(cid: CID): boolean {\n return this.set.has(cid.toString())\n }\n\n size(): number {\n return this.set.size\n }\n\n clear(): CidSet {\n this.set.clear()\n return this\n }\n\n toList(): CID[] {\n return [...this.set].map((c) => CID.parse(c))\n }\n}\n\nexport default CidSet\n", "import { z } from 'zod'\nimport { def as commonDef } from '@atproto/common-web'\nimport { schema as common } from '@atproto/common'\nimport { CID } from 'multiformats'\nimport * as car from '@ipld/car/api'\nimport BlockMap from './block-map'\nimport { RepoRecord } from '@atproto/lexicon'\nimport CidSet from './cid-set'\n\n// Repo nodes\n// ---------------\n\nconst unsignedCommit = z.object({\n did: z.string(),\n version: z.literal(3),\n data: common.cid,\n rev: z.string(),\n // `prev` added for backwards compatibility with v2, no requirement of keeping around history\n prev: common.cid.nullable(),\n})\nexport type UnsignedCommit = z.infer<typeof unsignedCommit> & { sig?: never }\n\nconst commit = z.object({\n did: z.string(),\n version: z.literal(3),\n data: common.cid,\n rev: z.string(),\n prev: common.cid.nullable(),\n sig: common.bytes,\n})\nexport type Commit = z.infer<typeof commit>\n\nconst legacyV2Commit = z.object({\n did: z.string(),\n version: z.literal(2),\n data: common.cid,\n rev: z.string().optional(),\n prev: common.cid.nullable(),\n sig: common.bytes,\n})\nexport type LegacyV2Commit = z.infer<typeof legacyV2Commit>\n\nconst versionedCommit = z.discriminatedUnion('version', [\n commit,\n legacyV2Commit,\n])\nexport type VersionedCommit = z.infer<typeof versionedCommit>\n\nexport const schema = {\n ...common,\n commit,\n legacyV2Commit,\n versionedCommit,\n}\n\nexport const def = {\n ...commonDef,\n commit: {\n name: 'commit',\n schema: schema.commit,\n },\n versionedCommit: {\n name: 'versioned_commit',\n schema: schema.versionedCommit,\n },\n}\n\n// Repo Operations\n// ---------------\n\nexport enum WriteOpAction {\n Create = 'create',\n Update = 'update',\n Delete = 'delete',\n}\n\nexport type RecordCreateOp = {\n action: WriteOpAction.Create\n collection: string\n rkey: string\n record: RepoRecord\n}\n\nexport type RecordUpdateOp = {\n action: WriteOpAction.Update\n collection: string\n rkey: string\n record: RepoRecord\n}\n\nexport type RecordDeleteOp = {\n action: WriteOpAction.Delete\n collection: string\n rkey: string\n}\n\nexport type RecordWriteOp = RecordCreateOp | RecordUpdateOp | RecordDeleteOp\n\nexport type RecordCreateDescript = {\n action: WriteOpAction.Create\n collection: string\n rkey: string\n cid: CID\n}\n\nexport type RecordUpdateDescript = {\n action: WriteOpAction.Update\n collection: string\n rkey: string\n prev: CID\n cid: CID\n}\n\nexport type RecordDeleteDescript = {\n action: WriteOpAction.Delete\n collection: string\n rkey: string\n cid: CID\n}\n\nexport type RecordWriteDescript =\n | RecordCreateDescript\n | RecordUpdateDescript\n | RecordDeleteDescript\n\nexport type WriteLog = RecordWriteDescript[][]\n\n// Updates/Commits\n// ---------------\n\nexport type CommitData = {\n cid: CID\n rev: string\n since: string | null\n prev: CID | null\n newBlocks: BlockMap\n removedCids: CidSet\n}\n\nexport type RepoUpdate = CommitData & {\n ops: RecordWriteOp[]\n}\n\nexport type CollectionContents = Record<string, RepoRecord>\nexport type RepoContents = Record<string, CollectionContents>\n\nexport type RepoRecordWithCid = { cid: CID; value: RepoRecord }\nexport type CollectionContentsWithCids = Record<string, RepoRecordWithCid>\nexport type RepoContentsWithCids = Record<string, CollectionContentsWithCids>\n\nexport type DatastoreContents = Record<string, CID>\n\nexport type RecordPath = {\n collection: string\n rkey: string\n}\n\nexport type RecordClaim = {\n collection: string\n rkey: string\n record: RepoRecord | null\n}\n\n// Sync\n// ---------------\n\nexport type VerifiedDiff = {\n writes: RecordWriteDescript[]\n commit: CommitData\n}\n\nexport type VerifiedRepo = {\n creates: RecordCreateDescript[]\n commit: CommitData\n}\n\nexport type CarBlock = car.Block\n", "import { CID } from 'multiformats'\nimport * as uint8arrays from 'uint8arrays'\nimport { ReadableBlockstore } from '../storage'\nimport { sha256 } from '@atproto/crypto'\nimport { MST, Leaf, NodeEntry, NodeData, MstOpts } from './mst'\nimport { cidForCbor } from '@atproto/common'\n\nexport const leadingZerosOnHash = async (key: string | Uint8Array) => {\n const hash = await sha256(key)\n let leadingZeros = 0\n for (let i = 0; i < hash.length; i++) {\n const byte = hash[i]\n if (byte < 64) leadingZeros++\n if (byte < 16) leadingZeros++\n if (byte < 4) leadingZeros++\n if (byte === 0) {\n leadingZeros++\n } else {\n break\n }\n }\n return leadingZeros\n}\n\nexport const layerForEntries = async (\n entries: NodeEntry[],\n): Promise<number | null> => {\n const firstLeaf = entries.find((entry) => entry.isLeaf())\n if (!firstLeaf || firstLeaf.isTree()) return null\n return await leadingZerosOnHash(firstLeaf.key)\n}\n\nexport const deserializeNodeData = async (\n storage: ReadableBlockstore,\n data: NodeData,\n opts?: Partial<MstOpts>,\n): Promise<NodeEntry[]> => {\n const { layer } = opts || {}\n const entries: NodeEntry[] = []\n if (data.l !== null) {\n entries.push(\n await MST.load(storage, data.l, {\n layer: layer ? layer - 1 : undefined,\n }),\n )\n }\n let lastKey = ''\n for (const entry of data.e) {\n const keyStr = uint8arrays.toString(entry.k, 'ascii')\n const key = lastKey.slice(0, entry.p) + keyStr\n ensureValidMstKey(key)\n entries.push(new Leaf(key, entry.v))\n lastKey = key\n if (entry.t !== null) {\n entries.push(\n await MST.load(storage, entry.t, {\n layer: layer ? layer - 1 : undefined,\n }),\n )\n }\n }\n return entries\n}\n\nexport const serializeNodeData = (entries: NodeEntry[]): NodeData => {\n const data: NodeData = {\n l: null,\n e: [],\n }\n let i = 0\n if (entries[0]?.isTree()) {\n i++\n data.l = entries[0].pointer\n }\n let lastKey = ''\n while (i < entries.length) {\n const leaf = entries[i]\n const next = entries[i + 1]\n if (!leaf.isLeaf()) {\n throw new Error('Not a valid node: two subtrees next to each other')\n }\n i++\n let subtree: CID | null = null\n if (next?.isTree()) {\n subtree = next.pointer\n i++\n }\n ensureValidMstKey(leaf.key)\n const prefixLen = countPrefixLen(lastKey, leaf.key)\n data.e.push({\n p: prefixLen,\n k: uint8arrays.fromString(leaf.key.slice(prefixLen), 'ascii'),\n v: leaf.value,\n t: subtree,\n })\n\n lastKey = leaf.key\n }\n return data\n}\n\nexport const countPrefixLen = (a: string, b: string): number => {\n let i\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n break\n }\n }\n return i\n}\n\nexport const cidForEntries = async (entries: NodeEntry[]): Promise<CID> => {\n const data = serializeNodeData(entries)\n return cidForCbor(data)\n}\n\nexport const isValidMstKey = (str: string): boolean => {\n const split = str.split('/')\n return (\n str.length <= 256 &&\n split.length === 2 &&\n split[0].length > 0 &&\n split[1].length > 0 &&\n isValidChars(split[0]) &&\n isValidChars(split[1])\n )\n}\n\nexport const validCharsRegex = /^[a-zA-Z0-9_\\-:.]*$/\n\nexport const isValidChars = (str: string): boolean => {\n return str.match(validCharsRegex) !== null\n}\n\nexport const ensureValidMstKey = (str: string) => {\n if (!isValidMstKey(str)) {\n throw new InvalidMstKeyError(str)\n }\n}\n\nexport class InvalidMstKeyError extends Error {\n constructor(public key: string) {\n super(`Not a valid MST key: ${key}`)\n }\n}\n", "export const P256_DID_PREFIX = new Uint8Array([0x80, 0x24])\nexport const SECP256K1_DID_PREFIX = new Uint8Array([0xe7, 0x01])\nexport const BASE58_MULTIBASE_PREFIX = 'z'\nexport const DID_KEY_PREFIX = 'did:key:'\n\nexport const P256_JWT_ALG = 'ES256'\nexport const SECP256K1_JWT_ALG = 'ES256K'\n", null, null, null, null, null, null, null, null, null, null, null, null, "import { p256 } from '@noble/curves/p256'\n\nexport const compressPubkey = (pubkeyBytes: Uint8Array): Uint8Array => {\n const point = p256.ProjectivePoint.fromHex(pubkeyBytes)\n return point.toRawBytes(true)\n}\n\nexport const decompressPubkey = (compressed: Uint8Array): Uint8Array => {\n if (compressed.length !== 33) {\n throw new Error('Expected 33 byte compress pubkey')\n }\n const point = p256.ProjectivePoint.fromHex(compressed)\n return point.toRawBytes(false)\n}\n", null, "import { secp256k1 as k256 } from '@noble/curves/secp256k1'\n\nexport const compressPubkey = (pubkeyBytes: Uint8Array): Uint8Array => {\n const point = k256.ProjectivePoint.fromHex(pubkeyBytes)\n return point.toRawBytes(true)\n}\n\nexport const decompressPubkey = (compressed: Uint8Array): Uint8Array => {\n if (compressed.length !== 33) {\n throw new Error('Expected 33 byte compress pubkey')\n }\n const point = k256.ProjectivePoint.fromHex(compressed)\n return point.toRawBytes(false)\n}\n", "import { p256 } from '@noble/curves/p256'\nimport { sha256 } from '@noble/hashes/sha256'\nimport * as ui8 from 'uint8arrays'\nimport { P256_JWT_ALG } from '../const'\nimport { parseDidKey } from '../did'\nimport { VerifyOptions } from '../types'\n\nexport const verifyDidSig = async (\n did: string,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const { jwtAlg, keyBytes } = parseDidKey(did)\n if (jwtAlg !== P256_JWT_ALG) {\n throw new Error(`Not a P-256 did:key: ${did}`)\n }\n return verifySig(keyBytes, data, sig, opts)\n}\n\nexport const verifySig = async (\n publicKey: Uint8Array,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const allowMalleable = opts?.allowMalleableSig ?? false\n const msgHash = await sha256(data)\n // parse as compact sig to prevent signature malleability\n // library supports sigs in 2 different formats: https://github.com/paulmillr/noble-curves/issues/99\n if (!allowMalleable && !isCompactFormat(sig)) {\n return false\n }\n return p256.verify(sig, msgHash, publicKey, {\n lowS: !allowMalleable,\n })\n}\n\nexport const isCompactFormat = (sig: Uint8Array) => {\n try {\n const parsed = p256.Signature.fromCompact(sig)\n return ui8.equals(parsed.toCompactRawBytes(), sig)\n } catch {\n return false\n }\n}\n", "import * as operations from './operations'\nimport { DidKeyPlugin } from '../types'\nimport { P256_DID_PREFIX, P256_JWT_ALG } from '../const'\n\nexport const p256Plugin: DidKeyPlugin = {\n prefix: P256_DID_PREFIX,\n jwtAlg: P256_JWT_ALG,\n verifySignature: operations.verifyDidSig,\n}\n\nexport default p256Plugin\n", "import { secp256k1 as k256 } from '@noble/curves/secp256k1'\nimport { sha256 } from '@noble/hashes/sha256'\nimport * as ui8 from 'uint8arrays'\nimport { SECP256K1_JWT_ALG } from '../const'\nimport { parseDidKey } from '../did'\nimport { VerifyOptions } from '../types'\n\nexport const verifyDidSig = async (\n did: string,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const { jwtAlg, keyBytes } = parseDidKey(did)\n if (jwtAlg !== SECP256K1_JWT_ALG) {\n throw new Error(`Not a secp256k1 did:key: ${did}`)\n }\n return verifySig(keyBytes, data, sig, opts)\n}\n\nexport const verifySig = async (\n publicKey: Uint8Array,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const allowMalleable = opts?.allowMalleableSig ?? false\n const msgHash = await sha256(data)\n // parse as compact sig to prevent signature malleability\n // library supports sigs in 2 different formats: https://github.com/paulmillr/noble-curves/issues/99\n if (!allowMalleable && !isCompactFormat(sig)) {\n return false\n }\n return k256.verify(sig, msgHash, publicKey, {\n lowS: !allowMalleable,\n })\n}\n\nexport const isCompactFormat = (sig: Uint8Array) => {\n try {\n const parsed = k256.Signature.fromCompact(sig)\n return ui8.equals(parsed.toCompactRawBytes(), sig)\n } catch {\n return false\n }\n}\n", "import * as operations from './operations'\nimport { DidKeyPlugin } from '../types'\nimport { SECP256K1_DID_PREFIX, SECP256K1_JWT_ALG } from '../const'\n\nexport const secp256k1Plugin: DidKeyPlugin = {\n prefix: SECP256K1_DID_PREFIX,\n jwtAlg: SECP256K1_JWT_ALG,\n verifySignature: operations.verifyDidSig,\n}\n\nexport default secp256k1Plugin\n", "import p256Plugin from './p256/plugin'\nimport secp256k1Plugin from './secp256k1/plugin'\n\nexport const plugins = [p256Plugin, secp256k1Plugin]\n\nexport default plugins\n", "import * as uint8arrays from 'uint8arrays'\nimport * as p256 from './p256/encoding'\nimport * as secp from './secp256k1/encoding'\nimport plugins from './plugins'\nimport {\n BASE58_MULTIBASE_PREFIX,\n DID_KEY_PREFIX,\n P256_JWT_ALG,\n SECP256K1_JWT_ALG,\n} from './const'\n\nexport type ParsedMultikey = {\n jwtAlg: string\n keyBytes: Uint8Array\n}\n\nexport const parseMultikey = (multikey: string): ParsedMultikey => {\n if (!multikey.startsWith(BASE58_MULTIBASE_PREFIX)) {\n throw new Error(`Incorrect prefix for multikey: ${multikey}`)\n }\n const prefixedBytes = uint8arrays.fromString(\n multikey.slice(BASE58_MULTIBASE_PREFIX.length),\n 'base58btc',\n )\n const plugin = plugins.find((p) => hasPrefix(prefixedBytes, p.prefix))\n if (!plugin) {\n throw new Error('Unsupported key type')\n }\n let keyBytes = prefixedBytes.slice(plugin.prefix.length)\n if (plugin.jwtAlg === P256_JWT_ALG) {\n keyBytes = p256.decompressPubkey(keyBytes)\n } else if (plugin.jwtAlg === SECP256K1_JWT_ALG) {\n keyBytes = secp.decompressPubkey(keyBytes)\n }\n return {\n jwtAlg: plugin.jwtAlg,\n keyBytes,\n }\n}\n\nexport const formatMultikey = (\n jwtAlg: string,\n keyBytes: Uint8Array,\n): string => {\n const plugin = plugins.find((p) => p.jwtAlg === jwtAlg)\n if (!plugin) {\n throw new Error('Unsupported key type')\n }\n if (jwtAlg === P256_JWT_ALG) {\n keyBytes = p256.compressPubkey(keyBytes)\n } else if (jwtAlg === SECP256K1_JWT_ALG) {\n keyBytes = secp.compressPubkey(keyBytes)\n }\n const prefixedBytes = uint8arrays.concat([plugin.prefix, keyBytes])\n return (\n BASE58_MULTIBASE_PREFIX + uint8arrays.toString(prefixedBytes, 'base58btc')\n )\n}\n\nexport const parseDidKey = (did: string): ParsedMultikey => {\n if (!did.startsWith(DID_KEY_PREFIX)) {\n throw new Error(`Incorrect prefix for did:key: ${did}`)\n }\n return parseMultikey(did.slice(DID_KEY_PREFIX.length))\n}\n\nexport const formatDidKey = (jwtAlg: string, keyBytes: Uint8Array): string => {\n return DID_KEY_PREFIX + formatMultikey(jwtAlg, keyBytes)\n}\n\nconst hasPrefix = (bytes: Uint8Array, prefix: Uint8Array): boolean => {\n return uint8arrays.equals(prefix, bytes.subarray(0, prefix.byteLength))\n}\n", "import * as noble from '@noble/hashes/sha256'\nimport * as uint8arrays from 'uint8arrays'\n\n// takes either bytes of utf8 input\nexport const sha256 = async (\n input: Uint8Array | string,\n): Promise<Uint8Array> => {\n const bytes =\n typeof input === 'string' ? uint8arrays.fromString(input, 'utf8') : input\n return noble.sha256(bytes)\n}\n\nexport const sha256Hex = async (\n input: Uint8Array | string,\n): Promise<string> => {\n const hash = await sha256(input)\n return uint8arrays.toString(hash, 'hex')\n}\n", "import * as uint8arrays from 'uint8arrays'\nimport { parseDidKey } from './did'\nimport plugins from './plugins'\nimport { VerifyOptions } from './types'\n\nexport const verifySignature = (\n didKey: string,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const parsed = parseDidKey(didKey)\n const plugin = plugins.find((p) => p.jwtAlg === parsed.jwtAlg)\n if (!plugin) {\n throw new Error(`Unsupported signature alg: ${parsed.jwtAlg}`)\n }\n return plugin.verifySignature(didKey, data, sig, opts)\n}\n\nexport const verifySignatureUtf8 = async (\n didKey: string,\n data: string,\n sig: string,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const dataBytes = uint8arrays.fromString(data, 'utf8')\n const sigBytes = uint8arrays.fromString(sig, 'base64url')\n return verifySignature(didKey, dataBytes, sigBytes, opts)\n}\n", "import { CID } from 'multiformats/cid'\n\nexport class MissingBlockError extends Error {\n constructor(public cid: CID, def?: string) {\n let msg = `block not found: ${cid.toString()}`\n if (def) {\n msg += `, expected type: ${def}`\n }\n super(msg)\n }\n}\n\nexport class MissingBlocksError extends Error {\n constructor(public context: string, public cids: CID[]) {\n const cidStr = cids.map((c) => c.toString())\n super(`missing ${context} blocks: ${cidStr}`)\n }\n}\n\nexport class MissingCommitBlocksError extends Error {\n constructor(public commit: CID, public cids: CID[]) {\n const cidStr = cids.map((c) => c.toString())\n super(`missing blocks for commit ${commit.toString()}: ${cidStr}`)\n }\n}\n\nexport class UnexpectedObjectError extends Error {\n constructor(public cid: CID, public def: string) {\n super(`unexpected object at ${cid.toString()}, expected: ${def}`)\n }\n}\n", "import { setImmediate } from 'node:timers/promises'\nimport { CID } from 'multiformats/cid'\nimport * as cbor from '@ipld/dag-cbor'\nimport { CarBlockIterator } from '@ipld/car'\nimport { BlockWriter, CarWriter } from '@ipld/car/writer'\nimport {\n streamToBuffer,\n verifyCidForBytes,\n cborDecode,\n check,\n schema,\n cidForCbor,\n byteIterableToStream,\n TID,\n} from '@atproto/common'\nimport { ipldToLex, lexToIpld, LexValue, RepoRecord } from '@atproto/lexicon'\n\nimport * as crypto from '@atproto/crypto'\nimport DataDiff from './data-diff'\nimport {\n CarBlock,\n Commit,\n LegacyV2Commit,\n RecordCreateDescript,\n RecordDeleteDescript,\n RecordPath,\n RecordUpdateDescript,\n RecordWriteDescript,\n UnsignedCommit,\n WriteOpAction,\n} from './types'\nimport BlockMap from './block-map'\nimport { Keypair } from '@atproto/crypto'\nimport { Readable } from 'stream'\n\nexport async function* verifyIncomingCarBlocks(\n car: AsyncIterable<CarBlock>,\n): AsyncIterable<CarBlock> {\n for await (const block of car) {\n await verifyCidForBytes(block.cid, block.bytes)\n yield block\n }\n}\n\n// we have to turn the car writer output into a stream in order to properly handle errors\nexport function writeCarStream(\n root: CID | null,\n fn: (car: BlockWriter) => Promise<void>,\n): Readable {\n const { writer, out } =\n root !== null ? CarWriter.create(root) : CarWriter.create()\n\n const stream = byteIterableToStream(out)\n fn(writer)\n .catch((err) => {\n stream.destroy(err)\n })\n .finally(() => writer.close())\n return stream\n}\n\nexport async function* writeCar(\n root: CID | null,\n fn: (car: BlockWriter) => Promise<void>,\n): AsyncIterable<Uint8Array> {\n const stream = writeCarStream(root, fn)\n for await (const chunk of stream) {\n yield chunk\n }\n}\n\nexport const blocksToCarStream = (\n root: CID | null,\n blocks: BlockMap,\n): AsyncIterable<Uint8Array> => {\n return writeCar(root, async (writer) => {\n for (const entry of blocks.entries()) {\n await writer.put(entry)\n }\n })\n}\n\nexport const blocksToCarFile = (\n root: CID | null,\n blocks: BlockMap,\n): Promise<Uint8Array> => {\n const carStream = blocksToCarStream(root, blocks)\n return streamToBuffer(carStream)\n}\n\nexport const carToBlocks = async (\n car: CarBlockIterator,\n): Promise<{ roots: CID[]; blocks: BlockMap }> => {\n const roots = await car.getRoots()\n const blocks = new BlockMap()\n for await (const block of verifyIncomingCarBlocks(car)) {\n blocks.set(block.cid, block.bytes)\n // break up otherwise \"synchronous\" work in car parsing\n await setImmediate()\n }\n return {\n roots,\n blocks,\n }\n}\n\nexport const readCar = async (\n bytes: Uint8Array,\n): Promise<{ roots: CID[]; blocks: BlockMap }> => {\n const car = await CarBlockIterator.fromBytes(bytes)\n return carToBlocks(car)\n}\n\nexport const readCarStream = async (stream: AsyncIterable<Uint8Array>) => {\n const car = await CarBlockIterator.fromIterable(stream)\n return carToBlocks(car)\n}\n\nexport const readCarWithRoot = async (\n bytes: Uint8Array,\n): Promise<{ root: CID; blocks: BlockMap }> => {\n const { roots, blocks } = await readCar(bytes)\n if (roots.length !== 1) {\n throw new Error(`Expected one root, got ${roots.length}`)\n }\n const root = roots[0]\n return {\n root,\n blocks,\n }\n}\n\nexport const diffToWriteDescripts = (\n diff: DataDiff,\n): Promise<RecordWriteDescript[]> => {\n return Promise.all([\n ...diff.addList().map(async (add) => {\n const { collection, rkey } = parseDataKey(add.key)\n return {\n action: WriteOpAction.Create,\n collection,\n rkey,\n cid: add.cid,\n } as RecordCreateDescript\n }),\n ...diff.updateList().map(async (upd) => {\n const { collection, rkey } = parseDataKey(upd.key)\n return {\n action: WriteOpAction.Update,\n collection,\n rkey,\n cid: upd.cid,\n prev: upd.prev,\n } as RecordUpdateDescript\n }),\n ...diff.deleteList().map((del) => {\n const { collection, rkey } = parseDataKey(del.key)\n return {\n action: WriteOpAction.Delete,\n collection,\n rkey,\n cid: del.cid,\n } as RecordDeleteDescript\n }),\n ])\n}\n\nexport const ensureCreates = (\n descripts: RecordWriteDescript[],\n): RecordCreateDescript[] => {\n const creates: RecordCreateDescript[] = []\n for (const descript of descripts) {\n if (descript.action !== WriteOpAction.Create) {\n throw new Error(`Unexpected action: ${descript.action}`)\n } else {\n creates.push(descript)\n }\n }\n return creates\n}\n\nexport const parseDataKey = (key: string): RecordPath => {\n const parts = key.split('/')\n if (parts.length !== 2) throw new Error(`Invalid record key: ${key}`)\n return { collection: parts[0], rkey: parts[1] }\n}\n\nexport const formatDataKey = (collection: string, rkey: string): string => {\n return collection + '/' + rkey\n}\n\nexport const metaEqual = (a: Commit, b: Commit): boolean => {\n return a.did === b.did && a.version === b.version\n}\n\nexport const signCommit = async (\n unsigned: UnsignedCommit,\n keypair: Keypair,\n): Promise<Commit> => {\n const encoded = cbor.encode(unsigned)\n const sig = await keypair.sign(encoded)\n return {\n ...unsigned,\n sig,\n }\n}\n\nexport const verifyCommitSig = async (\n commit: Commit,\n didKey: string,\n): Promise<boolean> => {\n const { sig, ...rest } = commit\n const encoded = cbor.encode(rest)\n return crypto.verifySignature(didKey, encoded, sig)\n}\n\nexport const cborToLex = (val: Uint8Array): LexValue => {\n return ipldToLex(cborDecode(val))\n}\n\nexport const cborToLexRecord = (val: Uint8Array): RepoRecord => {\n const parsed = cborToLex(val)\n if (!check.is(parsed, schema.map)) {\n throw new Error('lexicon records be a json object')\n }\n return parsed\n}\n\nexport const cidForRecord = async (val: LexValue) => {\n return cidForCbor(lexToIpld(val))\n}\n\nexport const ensureV3Commit = (commit: LegacyV2Commit | Commit): Commit => {\n if (commit.version === 3) {\n return commit\n } else {\n return {\n ...commit,\n version: 3,\n rev: commit.rev ?? TID.nextStr(),\n }\n }\n}\n", "import fs from 'fs';\nimport { promisify } from 'util';\nimport { CarReader as BrowserCarReader } from './reader-browser.js';\nconst fsread = promisify(fs.read);\nexport class CarReader extends BrowserCarReader {\n static async readRaw(fd, blockIndex) {\n const {cid, blockLength, blockOffset} = blockIndex;\n const bytes = new Uint8Array(blockLength);\n let read;\n if (typeof fd === 'number') {\n read = (await fsread(fd, bytes, 0, blockLength, blockOffset)).bytesRead;\n } else if (typeof fd === 'object' && typeof fd.read === 'function') {\n read = (await fd.read(bytes, 0, blockLength, blockOffset)).bytesRead;\n } else {\n throw new TypeError('Bad fd');\n }\n if (read !== blockLength) {\n throw new Error(`Failed to read entire block (${ read } instead of ${ blockLength })`);\n }\n return {\n cid,\n bytes\n };\n }\n}\nexport const __browser = false;", "import varint from 'varint';\nimport { CID } from 'multiformats/cid';\nimport * as Digest from 'multiformats/hashes/digest';\nimport { decode as decodeDagCbor } from '@ipld/dag-cbor';\nconst CIDV0_BYTES = {\n SHA2_256: 18,\n LENGTH: 32,\n DAG_PB: 112\n};\nasync function readVarint(reader) {\n const bytes = await reader.upTo(8);\n const i = varint.decode(bytes);\n reader.seek(varint.decode.bytes);\n return i;\n}\nexport async function readHeader(reader) {\n const length = await readVarint(reader);\n if (length === 0) {\n throw new Error('Invalid CAR header (zero length)');\n }\n const header = await reader.exactly(length);\n reader.seek(length);\n const block = decodeDagCbor(header);\n if (block == null || Array.isArray(block) || typeof block !== 'object') {\n throw new Error('Invalid CAR header format');\n }\n if (block.version !== 1) {\n if (typeof block.version === 'string') {\n throw new Error(`Invalid CAR version: \"${ block.version }\"`);\n }\n throw new Error(`Invalid CAR version: ${ block.version }`);\n }\n if (!Array.isArray(block.roots)) {\n throw new Error('Invalid CAR header format');\n }\n if (Object.keys(block).filter(p => p !== 'roots' && p !== 'version').length) {\n throw new Error('Invalid CAR header format');\n }\n return block;\n}\nasync function readMultihash(reader) {\n const bytes = await reader.upTo(8);\n varint.decode(bytes);\n const codeLength = varint.decode.bytes;\n const length = varint.decode(bytes.subarray(varint.decode.bytes));\n const lengthLength = varint.decode.bytes;\n const mhLength = codeLength + lengthLength + length;\n const multihash = await reader.exactly(mhLength);\n reader.seek(mhLength);\n return multihash;\n}\nasync function readCid(reader) {\n const first = await reader.exactly(2);\n if (first[0] === CIDV0_BYTES.SHA2_256 && first[1] === CIDV0_BYTES.LENGTH) {\n const bytes = await reader.exactly(34);\n reader.seek(34);\n const multihash = Digest.decode(bytes);\n return CID.create(0, CIDV0_BYTES.DAG_PB, multihash);\n }\n const version = await readVarint(reader);\n if (version !== 1) {\n throw new Error(`Unexpected CID version (${ version })`);\n }\n const codec = await readVarint(reader);\n const bytes = await readMultihash(reader);\n const multihash = Digest.decode(bytes);\n return CID.create(version, codec, multihash);\n}\nexport async function readBlockHead(reader) {\n const start = reader.pos;\n let length = await readVarint(reader);\n if (length === 0) {\n throw new Error('Invalid CAR section (zero length)');\n }\n length += reader.pos - start;\n const cid = await readCid(reader);\n const blockLength = length - (reader.pos - start);\n return {\n cid,\n length,\n blockLength\n };\n}\nasync function readBlock(reader) {\n const {cid, blockLength} = await readBlockHead(reader);\n const bytes = await reader.exactly(blockLength);\n reader.seek(blockLength);\n return {\n bytes,\n cid\n };\n}\nasync function readBlockIndex(reader) {\n const offset = reader.pos;\n const {cid, length, blockLength} = await readBlockHead(reader);\n const index = {\n cid,\n length,\n blockLength,\n offset,\n blockOffset: reader.pos\n };\n reader.seek(index.blockLength);\n return index;\n}\nexport function createDecoder(reader) {\n const headerPromise = readHeader(reader);\n return {\n header: () => headerPromise,\n async *blocks() {\n await headerPromise;\n while ((await reader.upTo(8)).length > 0) {\n yield await readBlock(reader);\n }\n },\n async *blocksIndex() {\n await headerPromise;\n while ((await reader.upTo(8)).length > 0) {\n yield await readBlockIndex(reader);\n }\n }\n };\n}\nexport function bytesReader(bytes) {\n let pos = 0;\n return {\n async upTo(length) {\n return bytes.subarray(pos, pos + Math.min(length, bytes.length - pos));\n },\n async exactly(length) {\n if (length > bytes.length - pos) {\n throw new Error('Unexpected end of data');\n }\n return bytes.subarray(pos, pos + length);\n },\n seek(length) {\n pos += length;\n },\n get pos() {\n return pos;\n }\n };\n}\nexport function chunkReader(readChunk) {\n let pos = 0;\n let have = 0;\n let offset = 0;\n let currentChunk = new Uint8Array(0);\n const read = async length => {\n have = currentChunk.length - offset;\n const bufa = [currentChunk.subarray(offset)];\n while (have < length) {\n const chunk = await readChunk();\n if (chunk == null) {\n break;\n }\n if (have < 0) {\n if (chunk.length > have) {\n bufa.push(chunk.subarray(-have));\n }\n } else {\n bufa.push(chunk);\n }\n have += chunk.length;\n }\n currentChunk = new Uint8Array(bufa.reduce((p, c) => p + c.length, 0));\n let off = 0;\n for (const b of bufa) {\n currentChunk.set(b, off);\n off += b.length;\n }\n offset = 0;\n };\n return {\n async upTo(length) {\n if (currentChunk.length - offset < length) {\n await read(length);\n }\n return currentChunk.subarray(offset, offset + Math.min(currentChunk.length - offset, length));\n },\n async exactly(length) {\n if (currentChunk.length - offset < length) {\n await read(length);\n }\n if (currentChunk.length - offset < length) {\n throw new Error('Unexpected end of data');\n }\n return currentChunk.subarray(offset, offset + length);\n },\n seek(length) {\n pos += length;\n offset += length;\n },\n get pos() {\n return pos;\n }\n };\n}\nexport function asyncIterableReader(asyncIterable) {\n const iterator = asyncIterable[Symbol.asyncIterator]();\n async function readChunk() {\n const next = await iterator.next();\n if (next.done) {\n return null;\n }\n return next.value;\n }\n return chunkReader(readChunk);\n}", "import {\n asyncIterableReader,\n bytesReader,\n createDecoder\n} from './decoder.js';\nexport class CarIndexer {\n constructor(version, roots, iterator) {\n this._version = version;\n this._roots = roots;\n this._iterator = iterator;\n }\n get version() {\n return this._version;\n }\n async getRoots() {\n return this._roots;\n }\n [Symbol.asyncIterator]() {\n return this._iterator;\n }\n static async fromBytes(bytes) {\n if (!(bytes instanceof Uint8Array)) {\n throw new TypeError('fromBytes() requires a Uint8Array');\n }\n return decodeIndexerComplete(bytesReader(bytes));\n }\n static async fromIterable(asyncIterable) {\n if (!asyncIterable || !(typeof asyncIterable[Symbol.asyncIterator] === 'function')) {\n throw new TypeError('fromIterable() requires an async iterable');\n }\n return decodeIndexerComplete(asyncIterableReader(asyncIterable));\n }\n}\nasync function decodeIndexerComplete(reader) {\n const decoder = createDecoder(reader);\n const {version, roots} = await decoder.header();\n return new CarIndexer(version, roots, decoder.blocksIndex());\n}", "import {\n asyncIterableReader,\n bytesReader,\n createDecoder\n} from './decoder.js';\nexport class CarIteratorBase {\n constructor(version, roots, iterable) {\n this._version = version;\n this._roots = roots;\n this._iterable = iterable;\n this._decoded = false;\n }\n get version() {\n return this._version;\n }\n async getRoots() {\n return this._roots;\n }\n}\nexport class CarBlockIterator extends CarIteratorBase {\n [Symbol.asyncIterator]() {\n if (this._decoded) {\n throw new Error('Cannot decode more than once');\n }\n if (!this._iterable) {\n throw new Error('Block iterable not found');\n }\n this._decoded = true;\n return this._iterable[Symbol.asyncIterator]();\n }\n static async fromBytes(bytes) {\n const {version, roots, iterator} = await fromBytes(bytes);\n return new CarBlockIterator(version, roots, iterator);\n }\n static async fromIterable(asyncIterable) {\n const {version, roots, iterator} = await fromIterable(asyncIterable);\n return new CarBlockIterator(version, roots, iterator);\n }\n}\nexport class CarCIDIterator extends CarIteratorBase {\n [Symbol.asyncIterator]() {\n if (this._decoded) {\n throw new Error('Cannot decode more than once');\n }\n if (!this._iterable) {\n throw new Error('Block iterable not found');\n }\n this._decoded = true;\n const iterable = this._iterable[Symbol.asyncIterator]();\n return {\n async next() {\n const next = await iterable.next();\n if (next.done) {\n return next;\n }\n return {\n done: false,\n value: next.value.cid\n };\n }\n };\n }\n static async fromBytes(bytes) {\n const {version, roots, iterator} = await fromBytes(bytes);\n return new CarCIDIterator(version, roots, iterator);\n }\n static async fromIterable(asyncIterable) {\n const {version, roots, iterator} = await fromIterable(asyncIterable);\n return new CarCIDIterator(version, roots, iterator);\n }\n}\nasync function fromBytes(bytes) {\n if (!(bytes instanceof Uint8Array)) {\n throw new TypeError('fromBytes() requires a Uint8Array');\n }\n return decodeIterator(bytesReader(bytes));\n}\nasync function fromIterable(asyncIterable) {\n if (!asyncIterable || !(typeof asyncIterable[Symbol.asyncIterator] === 'function')) {\n throw new TypeError('fromIterable() requires an async iterable');\n }\n return decodeIterator(asyncIterableReader(asyncIterable));\n}\nasync function decodeIterator(reader) {\n const decoder = createDecoder(reader);\n const {version, roots} = await decoder.header();\n return {\n version,\n roots,\n iterator: decoder.blocks()\n };\n}", "import fs from 'fs';\nimport { promisify } from 'util';\nimport { CarWriter as BrowserCarWriter } from './writer-browser.js';\nimport {\n readHeader,\n chunkReader\n} from './decoder.js';\nimport { createHeader } from './encoder.js';\nconst fsread = promisify(fs.read);\nconst fswrite = promisify(fs.write);\nexport class CarWriter extends BrowserCarWriter {\n static async updateRootsInFile(fd, roots) {\n const chunkSize = 256;\n let bytes;\n let offset = 0;\n let readChunk;\n if (typeof fd === 'number') {\n readChunk = async () => (await fsread(fd, bytes, 0, chunkSize, offset)).bytesRead;\n } else if (typeof fd === 'object' && typeof fd.read === 'function') {\n readChunk = async () => (await fd.read(bytes, 0, chunkSize, offset)).bytesRead;\n } else {\n throw new TypeError('Bad fd');\n }\n const fdReader = chunkReader(async () => {\n bytes = new Uint8Array(chunkSize);\n const read = await readChunk();\n offset += read;\n return read < chunkSize ? bytes.subarray(0, read) : bytes;\n });\n await readHeader(fdReader);\n const newHeader = createHeader(roots);\n if (fdReader.pos !== newHeader.length) {\n throw new Error(`updateRoots() can only overwrite a header of the same length (old header is ${ fdReader.pos } bytes, new header is ${ newHeader.length } bytes)`);\n }\n if (typeof fd === 'number') {\n await fswrite(fd, newHeader, 0, newHeader.length, 0);\n } else if (typeof fd === 'object' && typeof fd.read === 'function') {\n await fd.write(newHeader, 0, newHeader.length, 0);\n }\n }\n}\nexport const __browser = false;", "import varint from 'varint';\nimport { encode as dagCborEncode } from '@ipld/dag-cbor';\nexport function createHeader(roots) {\n const headerBytes = dagCborEncode({\n version: 1,\n roots\n });\n const varintBytes = varint.encode(headerBytes.length);\n const header = new Uint8Array(varintBytes.length + headerBytes.length);\n header.set(varintBytes, 0);\n header.set(headerBytes, varintBytes.length);\n return header;\n}\nfunction createEncoder(writer) {\n return {\n async setRoots(roots) {\n const bytes = createHeader(roots);\n await writer.write(bytes);\n },\n async writeBlock(block) {\n const {cid, bytes} = block;\n await writer.write(new Uint8Array(varint.encode(cid.bytes.length + bytes.length)));\n await writer.write(cid.bytes);\n if (bytes.length) {\n await writer.write(bytes);\n }\n },\n async close() {\n return writer.end();\n }\n };\n}\nexport {\n createEncoder\n};", "function noop() {\n}\nexport function create() {\n const chunkQueue = [];\n let drainer = null;\n let drainerResolver = noop;\n let ended = false;\n let outWait = null;\n let outWaitResolver = noop;\n const makeDrainer = () => {\n if (!drainer) {\n drainer = new Promise(resolve => {\n drainerResolver = () => {\n drainer = null;\n drainerResolver = noop;\n resolve();\n };\n });\n }\n return drainer;\n };\n const writer = {\n write(chunk) {\n chunkQueue.push(chunk);\n const drainer = makeDrainer();\n outWaitResolver();\n return drainer;\n },\n async end() {\n ended = true;\n const drainer = makeDrainer();\n outWaitResolver();\n return drainer;\n }\n };\n const iterator = {\n async next() {\n const chunk = chunkQueue.shift();\n if (chunk) {\n if (chunkQueue.length === 0) {\n drainerResolver();\n }\n return {\n done: false,\n value: chunk\n };\n }\n if (ended) {\n drainerResolver();\n return {\n done: true,\n value: undefined\n };\n }\n if (!outWait) {\n outWait = new Promise(resolve => {\n outWaitResolver = () => {\n outWait = null;\n outWaitResolver = noop;\n return resolve(iterator.next());\n };\n });\n }\n return outWait;\n }\n };\n return {\n writer,\n iterator\n };\n}", "import { CID } from 'multiformats/cid';\nimport {\n createEncoder,\n createHeader\n} from './encoder.js';\nimport { create as iteratorChannel } from './iterator-channel.js';\nimport {\n bytesReader,\n readHeader\n} from './decoder.js';\nexport class CarWriter {\n constructor(roots, encoder) {\n this._encoder = encoder;\n this._mutex = encoder.setRoots(roots);\n this._ended = false;\n }\n async put(block) {\n if (!(block.bytes instanceof Uint8Array) || !block.cid) {\n throw new TypeError('Can only write {cid, bytes} objects');\n }\n if (this._ended) {\n throw new Error('Already closed');\n }\n const cid = CID.asCID(block.cid);\n if (!cid) {\n throw new TypeError('Can only write {cid, bytes} objects');\n }\n this._mutex = this._mutex.then(() => this._encoder.writeBlock({\n cid,\n bytes: block.bytes\n }));\n return this._mutex;\n }\n async close() {\n if (this._ended) {\n throw new Error('Already closed');\n }\n await this._mutex;\n this._ended = true;\n return this._encoder.close();\n }\n static create(roots) {\n roots = toRoots(roots);\n const {encoder, iterator} = encodeWriter();\n const writer = new CarWriter(roots, encoder);\n const out = new CarWriterOut(iterator);\n return {\n writer,\n out\n };\n }\n static createAppender() {\n const {encoder, iterator} = encodeWriter();\n encoder.setRoots = () => Promise.resolve();\n const writer = new CarWriter([], encoder);\n const out = new CarWriterOut(iterator);\n return {\n writer,\n out\n };\n }\n static async updateRootsInBytes(bytes, roots) {\n const reader = bytesReader(bytes);\n await readHeader(reader);\n const newHeader = createHeader(roots);\n if (reader.pos !== newHeader.length) {\n throw new Error(`updateRoots() can only overwrite a header of the same length (old header is ${ reader.pos } bytes, new header is ${ newHeader.length } bytes)`);\n }\n bytes.set(newHeader, 0);\n return bytes;\n }\n}\nexport class CarWriterOut {\n constructor(iterator) {\n this._iterator = iterator;\n }\n [Symbol.asyncIterator]() {\n if (this._iterating) {\n throw new Error('Multiple iterator not supported');\n }\n this._iterating = true;\n return this._iterator;\n }\n}\nfunction encodeWriter() {\n const iw = iteratorChannel();\n const {writer, iterator} = iw;\n const encoder = createEncoder(writer);\n return {\n encoder,\n iterator\n };\n}\nfunction toRoots(roots) {\n if (roots === undefined) {\n return [];\n }\n if (!Array.isArray(roots)) {\n const cid = CID.asCID(roots);\n if (!cid) {\n throw new TypeError('roots must be a single CID or an array of CIDs');\n }\n return [cid];\n }\n const _roots = [];\n for (const root of roots) {\n const _root = CID.asCID(root);\n if (!_root) {\n throw new TypeError('roots must be a single CID or an array of CIDs');\n }\n _roots.push(_root);\n }\n return _roots;\n}\nexport const __browser = true;", "import { check, cborDecode } from '@atproto/common'\nimport { RepoRecord } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport BlockMap from './block-map'\nimport { MissingBlockError, UnexpectedObjectError } from './error'\nimport { cborToLexRecord } from './util'\n\nexport const getAndParseRecord = async (\n blocks: BlockMap,\n cid: CID,\n): Promise<{ record: RepoRecord; bytes: Uint8Array }> => {\n const bytes = blocks.get(cid)\n if (!bytes) {\n throw new MissingBlockError(cid, 'record')\n }\n const record = await cborToLexRecord(bytes)\n return { record, bytes }\n}\n\nexport const getAndParseByDef = async <T>(\n blocks: BlockMap,\n cid: CID,\n def: check.Def<T>,\n): Promise<{ obj: T; bytes: Uint8Array }> => {\n const bytes = blocks.get(cid)\n if (!bytes) {\n throw new MissingBlockError(cid, def.name)\n }\n return parseObjByDef(bytes, cid, def)\n}\n\nexport const parseObjByDef = <T>(\n bytes: Uint8Array,\n cid: CID,\n def: check.Def<T>,\n): { obj: T; bytes: Uint8Array } => {\n const obj = cborDecode(bytes)\n const res = def.schema.safeParse(obj)\n if (res.success) {\n return { obj: res.data, bytes }\n } else {\n throw new UnexpectedObjectError(cid, def.name)\n }\n}\n", "import z from 'zod'\nimport { CID } from 'multiformats'\n\nimport { ReadableBlockstore } from '../storage'\nimport { schema as common, cidForCbor, dataToCborBlock } from '@atproto/common'\nimport { BlockWriter } from '@ipld/car/api'\nimport * as util from './util'\nimport BlockMap from '../block-map'\nimport CidSet from '../cid-set'\nimport { MissingBlockError, MissingBlocksError } from '../error'\nimport * as parse from '../parse'\n\n/**\n * This is an implementation of a Merkle Search Tree (MST)\n * The data structure is described here: https://hal.inria.fr/hal-02303490/document\n * The MST is an ordered, insert-order-independent, deterministic tree.\n * Keys are laid out in alphabetic order.\n * The key insight of an MST is that each key is hashed and starting 0s are counted\n * to determine which layer it falls on (5 zeros for ~32 fanout).\n * This is a merkle tree, so each subtree is referred to by it's hash (CID).\n * When a leaf is changed, ever tree on the path to that leaf is changed as well,\n * thereby updating the root hash.\n *\n * For atproto, we use SHA-256 as the key hashing algorithm, and ~4 fanout\n * (2-bits of zero per layer).\n */\n\n/**\n * A couple notes on CBOR encoding:\n *\n * There are never two neighboring subtrees.\n * Therefore, we can represent a node as an array of\n * leaves & pointers to their right neighbor (possibly null),\n * along with a pointer to the left-most subtree (also possibly null).\n *\n * Most keys in a subtree will have overlap.\n * We do compression on prefixes by describing keys as:\n * - the length of the prefix that it shares in common with the preceding key\n * - the rest of the string\n *\n * For example:\n * If the first leaf in a tree is `bsky/posts/abcdefg` and the second is `bsky/posts/abcdehi`\n * Then the first will be described as `prefix: 0, key: 'bsky/posts/abcdefg'`,\n * and the second will be described as `prefix: 16, key: 'hi'.`\n */\nconst subTreePointer = z.nullable(common.cid)\nconst treeEntry = z.object({\n p: z.number(), // prefix count of ascii chars that this key shares with the prev key\n k: common.bytes, // the rest of the key outside the shared prefix\n v: common.cid, // value\n t: subTreePointer, // next subtree (to the right of leaf)\n})\nconst nodeData = z.object({\n l: subTreePointer, // left-most subtree\n e: z.array(treeEntry), //entries\n})\nexport type NodeData = z.infer<typeof nodeData>\n\nexport const nodeDataDef = {\n name: 'mst node',\n schema: nodeData,\n}\n\nexport type NodeEntry = MST | Leaf\n\nexport type MstOpts = {\n layer: number\n}\n\nexport class MST {\n storage: ReadableBlockstore\n entries: NodeEntry[] | null\n layer: number | null\n pointer: CID\n outdatedPointer = false\n\n constructor(\n storage: ReadableBlockstore,\n pointer: CID,\n entries: NodeEntry[] | null,\n layer: number | null,\n ) {\n this.storage = storage\n this.entries = entries\n this.layer = layer\n this.pointer = pointer\n }\n\n static async create(\n storage: ReadableBlockstore,\n entries: NodeEntry[] = [],\n opts?: Partial<MstOpts>,\n ): Promise<MST> {\n const pointer = await util.cidForEntries(entries)\n const { layer = null } = opts || {}\n return new MST(storage, pointer, entries, layer)\n }\n\n static async fromData(\n storage: ReadableBlockstore,\n data: NodeData,\n opts?: Partial<MstOpts>,\n ): Promise<MST> {\n const { layer = null } = opts || {}\n const entries = await util.deserializeNodeData(storage, data, opts)\n const pointer = await cidForCbor(data)\n return new MST(storage, pointer, entries, layer)\n }\n\n // this is really a *lazy* load, doesn't actually touch storage\n static load(\n storage: ReadableBlockstore,\n cid: CID,\n opts?: Partial<MstOpts>,\n ): MST {\n const { layer = null } = opts || {}\n return new MST(storage, cid, null, layer)\n }\n\n // Immutability\n // -------------------\n\n // We never mutate an MST, we just return a new MST with updated values\n async newTree(entries: NodeEntry[]): Promise<MST> {\n const mst = new MST(this.storage, this.pointer, entries, this.layer)\n mst.outdatedPointer = true\n return mst\n }\n\n // Getters (lazy load)\n // -------------------\n\n // We don't want to load entries of every subtree, just the ones we need\n async getEntries(): Promise<NodeEntry[]> {\n if (this.entries) return [...this.entries]\n if (this.pointer) {\n const data = await this.storage.readObj(this.pointer, nodeDataDef)\n const firstLeaf = data.e[0]\n const layer =\n firstLeaf !== undefined\n ? await util.leadingZerosOnHash(firstLeaf.k)\n : undefined\n this.entries = await util.deserializeNodeData(this.storage, data, {\n layer,\n })\n\n return this.entries\n }\n throw new Error('No entries or CID provided')\n }\n\n // We don't hash the node on every mutation for performance reasons\n // Instead we keep track of whether the pointer is outdated and only (recursively) calculate when needed\n async getPointer(): Promise<CID> {\n if (!this.outdatedPointer) return this.pointer\n const { cid } = await this.serialize()\n this.pointer = cid\n this.outdatedPointer = false\n return this.pointer\n }\n\n async serialize(): Promise<{ cid: CID; bytes: Uint8Array }> {\n let entries = await this.getEntries()\n const outdated = entries.filter(\n (e) => e.isTree() && e.outdatedPointer,\n ) as MST[]\n if (outdated.length > 0) {\n await Promise.all(outdated.map((e) => e.getPointer()))\n entries = await this.getEntries()\n }\n const data = util.serializeNodeData(entries)\n const block = await dataToCborBlock(data)\n return {\n cid: block.cid,\n bytes: block.bytes,\n }\n }\n\n // In most cases, we get the layer of a node from a hint on creation\n // In the case of the topmost node in the tree, we look for a key in the node & determine the layer\n // In the case where we don't find one, we recurse down until we do.\n // If we still can't find one, then we have an empty tree and the node is layer 0\n async getLayer(): Promise<number> {\n this.layer = await this.attemptGetLayer()\n if (this.layer === null) this.layer = 0\n return this.layer\n }\n\n async attemptGetLayer(): Promise<number | null> {\n if (this.layer !== null) return this.layer\n const entries = await this.getEntries()\n let layer = await util.layerForEntries(entries)\n if (layer === null) {\n for (const entry of entries) {\n if (entry.isTree()) {\n const childLayer = await entry.attemptGetLayer()\n if (childLayer !== null) {\n layer = childLayer + 1\n break\n }\n }\n }\n }\n if (layer !== null) this.layer = layer\n return layer\n }\n\n // Core functionality\n // -------------------\n\n // Return the necessary blocks to persist the MST to repo storage\n async getUnstoredBlocks(): Promise<{ root: CID; blocks: BlockMap }> {\n const blocks = new BlockMap()\n const pointer = await this.getPointer()\n const alreadyHas = await this.storage.has(pointer)\n if (alreadyHas) return { root: pointer, blocks }\n const entries = await this.getEntries()\n const data = util.serializeNodeData(entries)\n await blocks.add(data)\n for (const entry of entries) {\n if (entry.isTree()) {\n const subtree = await entry.getUnstoredBlocks()\n blocks.addMap(subtree.blocks)\n }\n }\n return { root: pointer, blocks: blocks }\n }\n\n // Adds a new leaf for the given key/value pair\n // Throws if a leaf with that key already exists\n async add(key: string, value: CID, knownZeros?: number): Promise<MST> {\n util.ensureValidMstKey(key)\n const keyZeros = knownZeros ?? (await util.leadingZerosOnHash(key))\n const layer = await this.getLayer()\n const newLeaf = new Leaf(key, value)\n if (keyZeros === layer) {\n // it belongs in this layer\n const index = await this.findGtOrEqualLeafIndex(key)\n const found = await this.atIndex(index)\n if (found?.isLeaf() && found.key === key) {\n throw new Error(`There is already a value at key: ${key}`)\n }\n const prevNode = await this.atIndex(index - 1)\n if (!prevNode || prevNode.isLeaf()) {\n // if entry before is a leaf, (or we're on far left) we can just splice in\n return this.spliceIn(newLeaf, index)\n } else {\n // else we try to split the subtree around the key\n const splitSubTree = await prevNode.splitAround(key)\n return this.replaceWithSplit(\n index - 1,\n splitSubTree[0],\n newLeaf,\n splitSubTree[1],\n )\n }\n } else if (keyZeros < layer) {\n // it belongs on a lower layer\n const index = await this.findGtOrEqualLeafIndex(key)\n const prevNode = await this.atIndex(index - 1)\n if (prevNode && prevNode.isTree()) {\n // if entry before is a tree, we add it to that tree\n const newSubtree = await prevNode.add(key, value, keyZeros)\n return this.updateEntry(index - 1, newSubtree)\n } else {\n const subTree = await this.createChild()\n const newSubTree = await subTree.add(key, value, keyZeros)\n return this.spliceIn(newSubTree, index)\n }\n } else {\n // it belongs on a higher layer & we must push the rest of the tree down\n const split = await this.splitAround(key)\n // if the newly added key has >=2 more leading zeros than the current highest layer\n // then we need to add in structural nodes in between as well\n let left: MST | null = split[0]\n let right: MST | null = split[1]\n const layer = await this.getLayer()\n const extraLayersToAdd = keyZeros - layer\n // intentionally starting at 1, since first layer is taken care of by split\n for (let i = 1; i < extraLayersToAdd; i++) {\n if (left !== null) {\n left = await left.createParent()\n }\n if (right !== null) {\n right = await right.createParent()\n }\n }\n const updated: NodeEntry[] = []\n if (left) updated.push(left)\n updated.push(new Leaf(key, value))\n if (right) updated.push(right)\n const newRoot = await MST.create(this.storage, updated, {\n layer: keyZeros,\n })\n newRoot.outdatedPointer = true\n return newRoot\n }\n }\n\n // Gets the value at the given key\n async get(key: string): Promise<CID | null> {\n const index = await this.findGtOrEqualLeafIndex(key)\n const found = await this.atIndex(index)\n if (found && found.isLeaf() && found.key === key) {\n return found.value\n }\n const prev = await this.atIndex(index - 1)\n if (prev && prev.isTree()) {\n return prev.get(key)\n }\n return null\n }\n\n // Edits the value at the given key\n // Throws if the given key does not exist\n async update(key: string, value: CID): Promise<MST> {\n util.ensureValidMstKey(key)\n const index = await this.findGtOrEqualLeafIndex(key)\n const found = await this.atIndex(index)\n if (found && found.isLeaf() && found.key === key) {\n return this.updateEntry(index, new Leaf(key, value))\n }\n const prev = await this.atIndex(index - 1)\n if (prev && prev.isTree()) {\n const updatedTree = await prev.update(key, value)\n return this.updateEntry(index - 1, updatedTree)\n }\n throw new Error(`Could not find a record with key: ${key}`)\n }\n\n // Deletes the value at the given key\n async delete(key: string): Promise<MST> {\n const altered = await this.deleteRecurse(key)\n return altered.trimTop()\n }\n\n async deleteRecurse(key: string): Promise<MST> {\n const index = await this.findGtOrEqualLeafIndex(key)\n const found = await this.atIndex(index)\n // if found, remove it on this level\n if (found?.isLeaf() && found.key === key) {\n const prev = await this.atIndex(index - 1)\n const next = await this.atIndex(index + 1)\n if (prev?.isTree() && next?.isTree()) {\n const merged = await prev.appendMerge(next)\n return this.newTree([\n ...(await this.slice(0, index - 1)),\n merged,\n ...(await this.slice(index + 2)),\n ])\n } else {\n return this.removeEntry(index)\n }\n }\n // else recurse down to find it\n const prev = await this.atIndex(index - 1)\n if (prev?.isTree()) {\n const subtree = await prev.deleteRecurse(key)\n const subTreeEntries = await subtree.getEntries()\n if (subTreeEntries.length === 0) {\n return this.removeEntry(index - 1)\n } else {\n return this.updateEntry(index - 1, subtree)\n }\n } else {\n throw new Error(`Could not find a record with key: ${key}`)\n }\n }\n\n // Simple Operations\n // -------------------\n\n // update entry in place\n async updateEntry(index: number, entry: NodeEntry): Promise<MST> {\n const update = [\n ...(await this.slice(0, index)),\n entry,\n ...(await this.slice(index + 1)),\n ]\n return this.newTree(update)\n }\n\n // remove entry at index\n async removeEntry(index: number): Promise<MST> {\n const updated = [\n ...(await this.slice(0, index)),\n ...(await this.slice(index + 1)),\n ]\n return this.newTree(updated)\n }\n\n // append entry to end of the node\n async append(entry: NodeEntry): Promise<MST> {\n const entries = await this.getEntries()\n return this.newTree([...entries, entry])\n }\n\n // prepend entry to start of the node\n async prepend(entry: NodeEntry): Promise<MST> {\n const entries = await this.getEntries()\n return this.newTree([entry, ...entries])\n }\n\n // returns entry at index\n async atIndex(index: number): Promise<NodeEntry | null> {\n const entries = await this.getEntries()\n return entries[index] ?? null\n }\n\n // returns a slice of the node (like array.slice)\n async slice(\n start?: number | undefined,\n end?: number | undefined,\n ): Promise<NodeEntry[]> {\n const entries = await this.getEntries()\n return entries.slice(start, end)\n }\n\n // inserts entry at index\n async spliceIn(entry: NodeEntry, index: number): Promise<MST> {\n const update = [\n ...(await this.slice(0, index)),\n entry,\n ...(await this.slice(index)),\n ]\n return this.newTree(update)\n }\n\n // replaces an entry with [ Maybe(tree), Leaf, Maybe(tree) ]\n async replaceWithSplit(\n index: number,\n left: MST | null,\n leaf: Leaf,\n right: MST | null,\n ): Promise<MST> {\n const update = await this.slice(0, index)\n if (left) update.push(left)\n update.push(leaf)\n if (right) update.push(right)\n update.push(...(await this.slice(index + 1)))\n return this.newTree(update)\n }\n\n // if the topmost node in the tree only points to another tree, trim the top and return the subtree\n async trimTop(): Promise<MST> {\n const entries = await this.getEntries()\n if (entries.length === 1 && entries[0].isTree()) {\n return entries[0].trimTop()\n } else {\n return this\n }\n }\n\n // Subtree & Splits\n // -------------------\n\n // Recursively splits a sub tree around a given key\n async splitAround(key: string): Promise<[MST | null, MST | null]> {\n const index = await this.findGtOrEqualLeafIndex(key)\n // split tree around key\n const leftData = await this.slice(0, index)\n const rightData = await this.slice(index)\n let left = await this.newTree(leftData)\n let right = await this.newTree(rightData)\n\n // if the far right of the left side is a subtree,\n // we need to split it on the key as well\n const lastInLeft = leftData[leftData.length - 1]\n if (lastInLeft?.isTree()) {\n left = await left.removeEntry(leftData.length - 1)\n const split = await lastInLeft.splitAround(key)\n if (split[0]) {\n left = await left.append(split[0])\n }\n if (split[1]) {\n right = await right.prepend(split[1])\n }\n }\n\n return [\n (await left.getEntries()).length > 0 ? left : null,\n (await right.getEntries()).length > 0 ? right : null,\n ]\n }\n\n // The simple merge case where every key in the right tree is greater than every key in the left tree\n // (used primarily for deletes)\n async appendMerge(toMerge: MST): Promise<MST> {\n if ((await this.getLayer()) !== (await toMerge.getLayer())) {\n throw new Error(\n 'Trying to merge two nodes from different layers of the MST',\n )\n }\n const thisEntries = await this.getEntries()\n const toMergeEntries = await toMerge.getEntries()\n const lastInLeft = thisEntries[thisEntries.length - 1]\n const firstInRight = toMergeEntries[0]\n if (lastInLeft?.isTree() && firstInRight?.isTree()) {\n const merged = await lastInLeft.appendMerge(firstInRight)\n return this.newTree([\n ...thisEntries.slice(0, thisEntries.length - 1),\n merged,\n ...toMergeEntries.slice(1),\n ])\n } else {\n return this.newTree([...thisEntries, ...toMergeEntries])\n }\n }\n\n // Create relatives\n // -------------------\n\n async createChild(): Promise<MST> {\n const layer = await this.getLayer()\n return MST.create(this.storage, [], {\n layer: layer - 1,\n })\n }\n\n async createParent(): Promise<MST> {\n const layer = await this.getLayer()\n const parent = await MST.create(this.storage, [this], {\n layer: layer + 1,\n })\n parent.outdatedPointer = true\n return parent\n }\n\n // Finding insertion points\n // -------------------\n\n // finds index of first leaf node that is greater than or equal to the value\n async findGtOrEqualLeafIndex(key: string): Promise<number> {\n const entries = await this.getEntries()\n const maybeIndex = entries.findIndex(\n (entry) => entry.isLeaf() && entry.key >= key,\n )\n // if we can't find, we're on the end\n return maybeIndex >= 0 ? maybeIndex : entries.length\n }\n\n // List operations (partial tree traversal)\n // -------------------\n\n // @TODO write tests for these\n\n // Walk tree starting at key\n async *walkLeavesFrom(key: string): AsyncIterable<Leaf> {\n const index = await this.findGtOrEqualLeafIndex(key)\n const entries = await this.getEntries()\n const prev = entries[index - 1]\n if (prev && prev.isTree()) {\n for await (const e of prev.walkLeavesFrom(key)) {\n yield e\n }\n }\n for (let i = index; i < entries.length; i++) {\n const entry = entries[i]\n if (entry.isLeaf()) {\n yield entry\n } else {\n for await (const e of entry.walkLeavesFrom(key)) {\n yield e\n }\n }\n }\n }\n\n async list(\n count = Number.MAX_SAFE_INTEGER,\n after?: string,\n before?: string,\n ): Promise<Leaf[]> {\n const vals: Leaf[] = []\n for await (const leaf of this.walkLeavesFrom(after || '')) {\n if (leaf.key === after) continue\n if (vals.length >= count) break\n if (before && leaf.key >= before) break\n vals.push(leaf)\n }\n return vals\n }\n\n async listWithPrefix(\n prefix: string,\n count = Number.MAX_SAFE_INTEGER,\n ): Promise<Leaf[]> {\n const vals: Leaf[] = []\n for await (const leaf of this.walkLeavesFrom(prefix)) {\n if (vals.length >= count || !leaf.key.startsWith(prefix)) break\n vals.push(leaf)\n }\n return vals\n }\n\n // Full tree traversal\n // -------------------\n\n // Walk full tree & emit nodes, consumer can bail at any point by returning false\n async *walk(): AsyncIterable<NodeEntry> {\n yield this\n const entries = await this.getEntries()\n for (const entry of entries) {\n if (entry.isTree()) {\n for await (const e of entry.walk()) {\n yield e\n }\n } else {\n yield entry\n }\n }\n }\n\n // Walk full tree & emit nodes, consumer can bail at any point by returning false\n async paths(): Promise<NodeEntry[][]> {\n const entries = await this.getEntries()\n let paths: NodeEntry[][] = []\n for (const entry of entries) {\n if (entry.isLeaf()) {\n paths.push([entry])\n }\n if (entry.isTree()) {\n const subPaths = await entry.paths()\n paths = [...paths, ...subPaths.map((p) => [entry, ...p])]\n }\n }\n return paths\n }\n\n // Walks tree & returns all nodes\n async allNodes(): Promise<NodeEntry[]> {\n const nodes: NodeEntry[] = []\n for await (const entry of this.walk()) {\n nodes.push(entry)\n }\n return nodes\n }\n\n // Walks tree & returns all cids\n async allCids(): Promise<CidSet> {\n const cids = new CidSet()\n const entries = await this.getEntries()\n for (const entry of entries) {\n if (entry.isLeaf()) {\n cids.add(entry.value)\n } else {\n const subtreeCids = await entry.allCids()\n cids.addSet(subtreeCids)\n }\n }\n cids.add(await this.getPointer())\n return cids\n }\n\n // Walks tree & returns all leaves\n async leaves() {\n const leaves: Leaf[] = []\n for await (const entry of this.walk()) {\n if (entry.isLeaf()) leaves.push(entry)\n }\n return leaves\n }\n\n // Returns total leaf count\n async leafCount(): Promise<number> {\n const leaves = await this.leaves()\n return leaves.length\n }\n\n // Reachable tree traversal\n // -------------------\n\n // Walk reachable branches of tree & emit nodes, consumer can bail at any point by returning false\n async *walkReachable(): AsyncIterable<NodeEntry> {\n yield this\n const entries = await this.getEntries()\n for (const entry of entries) {\n if (entry.isTree()) {\n try {\n for await (const e of entry.walkReachable()) {\n yield e\n }\n } catch (err) {\n if (err instanceof MissingBlockError) {\n continue\n } else {\n throw err\n }\n }\n } else {\n yield entry\n }\n }\n }\n\n async reachableLeaves(): Promise<Leaf[]> {\n const leaves: Leaf[] = []\n for await (const entry of this.walkReachable()) {\n if (entry.isLeaf()) leaves.push(entry)\n }\n return leaves\n }\n\n // Sync Protocol\n\n async writeToCarStream(car: BlockWriter): Promise<void> {\n const leaves = new CidSet()\n let toFetch = new CidSet()\n toFetch.add(await this.getPointer())\n while (toFetch.size() > 0) {\n const nextLayer = new CidSet()\n const fetched = await this.storage.getBlocks(toFetch.toList())\n if (fetched.missing.length > 0) {\n throw new MissingBlocksError('mst node', fetched.missing)\n }\n for (const cid of toFetch.toList()) {\n const found = await parse.getAndParseByDef(\n fetched.blocks,\n cid,\n nodeDataDef,\n )\n await car.put({ cid, bytes: found.bytes })\n const entries = await util.deserializeNodeData(this.storage, found.obj)\n\n for (const entry of entries) {\n if (entry.isLeaf()) {\n leaves.add(entry.value)\n } else {\n nextLayer.add(await entry.getPointer())\n }\n }\n }\n toFetch = nextLayer\n }\n const leafData = await this.storage.getBlocks(leaves.toList())\n if (leafData.missing.length > 0) {\n throw new MissingBlocksError('mst leaf', leafData.missing)\n }\n\n for (const leaf of leafData.blocks.entries()) {\n await car.put(leaf)\n }\n }\n\n async cidsForPath(key: string): Promise<CID[]> {\n const cids: CID[] = [await this.getPointer()]\n const index = await this.findGtOrEqualLeafIndex(key)\n const found = await this.atIndex(index)\n if (found && found.isLeaf() && found.key === key) {\n return [...cids, found.value]\n }\n const prev = await this.atIndex(index - 1)\n if (prev && prev.isTree()) {\n return [...cids, ...(await prev.cidsForPath(key))]\n }\n return cids\n }\n\n // Matching Leaf interface\n // -------------------\n\n isTree(): this is MST {\n return true\n }\n\n isLeaf(): this is Leaf {\n return false\n }\n\n async equals(other: NodeEntry): Promise<boolean> {\n if (other.isLeaf()) return false\n const thisPointer = await this.getPointer()\n const otherPointer = await other.getPointer()\n return thisPointer.equals(otherPointer)\n }\n}\n\nexport class Leaf {\n constructor(public key: string, public value: CID) {}\n\n isTree(): this is MST {\n return false\n }\n\n isLeaf(): this is Leaf {\n return true\n }\n\n equals(entry: NodeEntry): boolean {\n if (entry.isLeaf()) {\n return this.key === entry.key && this.value.equals(entry.value)\n } else {\n return false\n }\n }\n}\n\nexport default MST\n", "import { CID } from 'multiformats'\nimport CidSet from './cid-set'\nimport { MST, NodeEntry, mstDiff } from './mst'\nimport BlockMap from './block-map'\n\nexport class DataDiff {\n adds: Record<string, DataAdd> = {}\n updates: Record<string, DataUpdate> = {}\n deletes: Record<string, DataDelete> = {}\n\n newMstBlocks: BlockMap = new BlockMap()\n newLeafCids: CidSet = new CidSet()\n removedCids: CidSet = new CidSet()\n\n static async of(curr: MST, prev: MST | null): Promise<DataDiff> {\n return mstDiff(curr, prev)\n }\n\n async nodeAdd(node: NodeEntry) {\n if (node.isLeaf()) {\n this.leafAdd(node.key, node.value)\n } else {\n const data = await node.serialize()\n this.treeAdd(data.cid, data.bytes)\n }\n }\n\n async nodeDelete(node: NodeEntry) {\n if (node.isLeaf()) {\n const key = node.key\n const cid = node.value\n this.deletes[key] = { key, cid }\n this.removedCids.add(cid)\n } else {\n const cid = await node.getPointer()\n this.treeDelete(cid)\n }\n }\n\n leafAdd(key: string, cid: CID) {\n this.adds[key] = { key, cid }\n if (this.removedCids.has(cid)) {\n this.removedCids.delete(cid)\n } else {\n this.newLeafCids.add(cid)\n }\n }\n\n leafUpdate(key: string, prev: CID, cid: CID) {\n if (prev.equals(cid)) return\n this.updates[key] = { key, prev, cid }\n this.removedCids.add(prev)\n this.newLeafCids.add(cid)\n }\n\n leafDelete(key: string, cid: CID) {\n this.deletes[key] = { key, cid }\n if (this.newLeafCids.has(cid)) {\n this.newLeafCids.delete(cid)\n } else {\n this.removedCids.add(cid)\n }\n }\n\n treeAdd(cid: CID, bytes: Uint8Array) {\n if (this.removedCids.has(cid)) {\n this.removedCids.delete(cid)\n } else {\n this.newMstBlocks.set(cid, bytes)\n }\n }\n\n treeDelete(cid: CID) {\n if (this.newMstBlocks.has(cid)) {\n this.newMstBlocks.delete(cid)\n } else {\n this.removedCids.add(cid)\n }\n }\n\n addList(): DataAdd[] {\n return Object.values(this.adds)\n }\n\n updateList(): DataUpdate[] {\n return Object.values(this.updates)\n }\n\n deleteList(): DataDelete[] {\n return Object.values(this.deletes)\n }\n\n updatedKeys(): string[] {\n const keys = [\n ...Object.keys(this.adds),\n ...Object.keys(this.updates),\n ...Object.keys(this.deletes),\n ]\n return [...new Set(keys)]\n }\n}\n\nexport type DataAdd = {\n key: string\n cid: CID\n}\n\nexport type DataUpdate = {\n key: string\n prev: CID\n cid: CID\n}\n\nexport type DataDelete = {\n key: string\n cid: CID\n}\n\nexport default DataDiff\n", "import { MST, NodeEntry } from './mst'\n\ntype WalkerStatusDone = {\n done: true\n}\n\ntype WalkerStatusProgress = {\n done: false\n curr: NodeEntry\n walking: MST | null // walking set to null if `curr` is the root of the tree\n index: number\n}\n\ntype WalkerStatus = WalkerStatusDone | WalkerStatusProgress\n\nexport class MstWalker {\n stack: WalkerStatus[] = []\n status: WalkerStatus\n\n constructor(public root: MST) {\n this.status = {\n done: false,\n curr: root,\n walking: null,\n index: 0,\n }\n }\n\n // return the current layer of the node you are walking\n layer(): number {\n if (this.status.done) {\n throw new Error('Walk is done')\n }\n if (this.status.walking) {\n return this.status.walking.layer ?? 0\n }\n // if curr is the root of the tree, add 1\n if (this.status.curr.isTree()) {\n return (this.status.curr.layer ?? 0) + 1\n }\n throw new Error('Could not identify layer of walk')\n }\n\n // move to the next node in the subtree, skipping over the subtree\n async stepOver(): Promise<void> {\n if (this.status.done) return\n // if stepping over the root of the node, we're done\n if (this.status.walking === null) {\n this.status = { done: true }\n return\n }\n const entries = await this.status.walking.getEntries()\n this.status.index++\n const next = entries[this.status.index]\n if (!next) {\n const popped = this.stack.pop()\n if (!popped) {\n this.status = { done: true }\n return\n } else {\n this.status = popped\n await this.stepOver()\n return\n }\n } else {\n this.status.curr = next\n }\n }\n\n // step into a subtree, throws if currently pointed at a leaf\n async stepInto(): Promise<void> {\n if (this.status.done) return\n // edge case for very start of walk\n if (this.status.walking === null) {\n if (!this.status.curr.isTree()) {\n throw new Error('The root of the tree cannot be a leaf')\n }\n const next = await this.status.curr.atIndex(0)\n if (!next) {\n this.status = { done: true }\n } else {\n this.status = {\n done: false,\n walking: this.status.curr,\n curr: next,\n index: 0,\n }\n }\n return\n }\n if (!this.status.curr.isTree()) {\n throw new Error('No tree at pointer, cannot step into')\n }\n\n const next = await this.status.curr.atIndex(0)\n if (!next) {\n throw new Error(\n 'Tried to step into a node with 0 entries which is invalid',\n )\n }\n\n this.stack.push({ ...this.status })\n this.status.walking = this.status.curr\n this.status.curr = next\n this.status.index = 0\n }\n\n // advance the pointer to the next node in the tree,\n // stepping into the current node if necessary\n async advance(): Promise<void> {\n if (this.status.done) return\n if (this.status.curr.isLeaf()) {\n await this.stepOver()\n } else {\n await this.stepInto()\n }\n }\n}\n\nexport default MstWalker\n", "import { DataDiff } from '../data-diff'\nimport MST from './mst'\nimport MstWalker from './walker'\n\nexport const nullDiff = async (tree: MST): Promise<DataDiff> => {\n const diff = new DataDiff()\n for await (const entry of tree.walk()) {\n await diff.nodeAdd(entry)\n }\n return diff\n}\n\nexport const mstDiff = async (\n curr: MST,\n prev: MST | null,\n): Promise<DataDiff> => {\n await curr.getPointer()\n if (prev === null) {\n return nullDiff(curr)\n }\n\n await prev.getPointer()\n const diff = new DataDiff()\n\n const leftWalker = new MstWalker(prev)\n const rightWalker = new MstWalker(curr)\n while (!leftWalker.status.done || !rightWalker.status.done) {\n // if one walker is finished, continue walking the other & logging all nodes\n if (leftWalker.status.done && !rightWalker.status.done) {\n await diff.nodeAdd(rightWalker.status.curr)\n await rightWalker.advance()\n continue\n } else if (!leftWalker.status.done && rightWalker.status.done) {\n await diff.nodeDelete(leftWalker.status.curr)\n await leftWalker.advance()\n continue\n }\n if (leftWalker.status.done || rightWalker.status.done) break\n const left = leftWalker.status.curr\n const right = rightWalker.status.curr\n if (left === null || right === null) break\n\n // if both pointers are leaves, record an update & advance both or record the lowest key and advance that pointer\n if (left.isLeaf() && right.isLeaf()) {\n if (left.key === right.key) {\n if (!left.value.equals(right.value)) {\n diff.leafUpdate(left.key, left.value, right.value)\n }\n await leftWalker.advance()\n await rightWalker.advance()\n } else if (left.key < right.key) {\n diff.leafDelete(left.key, left.value)\n await leftWalker.advance()\n } else {\n diff.leafAdd(right.key, right.value)\n await rightWalker.advance()\n }\n continue\n }\n\n // next, ensure that we're on the same layer\n // if one walker is at a higher layer than the other, we need to do one of two things\n // if the higher walker is pointed at a tree, step into that tree to try to catch up with the lower\n // if the higher walker is pointed at a leaf, then advance the lower walker to try to catch up the higher\n if (leftWalker.layer() > rightWalker.layer()) {\n if (left.isLeaf()) {\n await diff.nodeAdd(right)\n await rightWalker.advance()\n } else {\n await diff.nodeDelete(left)\n await leftWalker.stepInto()\n }\n continue\n } else if (leftWalker.layer() < rightWalker.layer()) {\n if (right.isLeaf()) {\n await diff.nodeDelete(left)\n await leftWalker.advance()\n } else {\n await diff.nodeAdd(right)\n await rightWalker.stepInto()\n }\n continue\n }\n\n // if we're on the same level, and both pointers are trees, do a comparison\n // if they're the same, step over. if they're different, step in to find the subdiff\n if (left.isTree() && right.isTree()) {\n if (left.pointer.equals(right.pointer)) {\n await leftWalker.stepOver()\n await rightWalker.stepOver()\n } else {\n await diff.nodeAdd(right)\n await diff.nodeDelete(left)\n await leftWalker.stepInto()\n await rightWalker.stepInto()\n }\n continue\n }\n\n // finally, if one pointer is a tree and the other is a leaf, simply step into the tree\n if (left.isLeaf() && right.isTree()) {\n await diff.nodeAdd(right)\n await rightWalker.stepInto()\n continue\n } else if (left.isTree() && right.isLeaf()) {\n await diff.nodeDelete(left)\n await leftWalker.stepInto()\n continue\n }\n\n throw new Error('Unidentifiable case in diff walk')\n }\n return diff\n}\n", "import { subsystemLogger } from '@atproto/common'\n\nexport const logger: ReturnType<typeof subsystemLogger> =\n subsystemLogger('repo')\n\nexport default logger\n", "import { CID } from 'multiformats/cid'\nimport { def, RepoContents, Commit } from './types'\nimport { ReadableBlockstore } from './storage'\nimport { MST } from './mst'\nimport log from './logger'\nimport * as util from './util'\nimport * as parse from './parse'\nimport { MissingBlocksError } from './error'\nimport { RepoRecord } from '@atproto/lexicon'\n\ntype Params = {\n storage: ReadableBlockstore\n data: MST\n commit: Commit\n cid: CID\n}\n\nexport class ReadableRepo {\n storage: ReadableBlockstore\n data: MST\n commit: Commit\n cid: CID\n\n constructor(params: Params) {\n this.storage = params.storage\n this.data = params.data\n this.commit = params.commit\n this.cid = params.cid\n }\n\n static async load(storage: ReadableBlockstore, commitCid: CID) {\n const commit = await storage.readObj(commitCid, def.versionedCommit)\n const data = await MST.load(storage, commit.data)\n log.info({ did: commit.did }, 'loaded repo for')\n return new ReadableRepo({\n storage,\n data,\n commit: util.ensureV3Commit(commit),\n cid: commitCid,\n })\n }\n\n get did(): string {\n return this.commit.did\n }\n\n get version(): number {\n return this.commit.version\n }\n\n async *walkRecords(from?: string): AsyncIterable<{\n collection: string\n rkey: string\n cid: CID\n record: RepoRecord\n }> {\n for await (const leaf of this.data.walkLeavesFrom(from ?? '')) {\n const { collection, rkey } = util.parseDataKey(leaf.key)\n const record = await this.storage.readRecord(leaf.value)\n yield { collection, rkey, cid: leaf.value, record }\n }\n }\n\n async getRecord(collection: string, rkey: string): Promise<unknown | null> {\n const dataKey = collection + '/' + rkey\n const cid = await this.data.get(dataKey)\n if (!cid) return null\n return this.storage.readObj(cid, def.unknown)\n }\n\n async getContents(): Promise<RepoContents> {\n const entries = await this.data.list()\n const cids = entries.map((e) => e.value)\n const { blocks, missing } = await this.storage.getBlocks(cids)\n if (missing.length > 0) {\n throw new MissingBlocksError('getContents record', missing)\n }\n const contents: RepoContents = {}\n for (const entry of entries) {\n const { collection, rkey } = util.parseDataKey(entry.key)\n contents[collection] ??= {}\n const parsed = await parse.getAndParseRecord(blocks, entry.value)\n contents[collection][rkey] = parsed.record\n }\n return contents\n }\n}\n\nexport default ReadableRepo\n", "import { CID } from 'multiformats/cid'\nimport { TID } from '@atproto/common'\nimport * as crypto from '@atproto/crypto'\nimport {\n Commit,\n CommitData,\n def,\n RecordCreateOp,\n RecordWriteOp,\n WriteOpAction,\n} from './types'\nimport { RepoStorage } from './storage'\nimport { MST } from './mst'\nimport DataDiff from './data-diff'\nimport log from './logger'\nimport BlockMap from './block-map'\nimport { ReadableRepo } from './readable-repo'\nimport * as util from './util'\nimport CidSet from './cid-set'\n\ntype Params = {\n storage: RepoStorage\n data: MST\n commit: Commit\n cid: CID\n}\n\nexport class Repo extends ReadableRepo {\n storage: RepoStorage\n\n constructor(params: Params) {\n super(params)\n this.storage = params.storage\n }\n\n static async formatInitCommit(\n storage: RepoStorage,\n did: string,\n keypair: crypto.Keypair,\n initialWrites: RecordCreateOp[] = [],\n ): Promise<CommitData> {\n const newBlocks = new BlockMap()\n\n let data = await MST.create(storage)\n for (const record of initialWrites) {\n const cid = await newBlocks.add(record.record)\n const dataKey = util.formatDataKey(record.collection, record.rkey)\n data = await data.add(dataKey, cid)\n }\n const dataCid = await data.getPointer()\n const diff = await DataDiff.of(data, null)\n newBlocks.addMap(diff.newMstBlocks)\n\n const rev = TID.nextStr()\n const commit = await util.signCommit(\n {\n did,\n version: 3,\n rev,\n prev: null, // added for backwards compatibility with v2\n data: dataCid,\n },\n keypair,\n )\n const commitCid = await newBlocks.add(commit)\n return {\n cid: commitCid,\n rev,\n since: null,\n prev: null,\n newBlocks,\n removedCids: diff.removedCids,\n }\n }\n\n static async createFromCommit(\n storage: RepoStorage,\n commit: CommitData,\n ): Promise<Repo> {\n await storage.applyCommit(commit)\n return Repo.load(storage, commit.cid)\n }\n\n static async create(\n storage: RepoStorage,\n did: string,\n keypair: crypto.Keypair,\n initialWrites: RecordCreateOp[] = [],\n ): Promise<Repo> {\n const commit = await Repo.formatInitCommit(\n storage,\n did,\n keypair,\n initialWrites,\n )\n return Repo.createFromCommit(storage, commit)\n }\n\n static async load(storage: RepoStorage, cid?: CID) {\n const commitCid = cid || (await storage.getRoot())\n if (!commitCid) {\n throw new Error('No cid provided and none in storage')\n }\n const commit = await storage.readObj(commitCid, def.versionedCommit)\n const data = await MST.load(storage, commit.data)\n log.info({ did: commit.did }, 'loaded repo for')\n return new Repo({\n storage,\n data,\n commit: util.ensureV3Commit(commit),\n cid: commitCid,\n })\n }\n\n async formatCommit(\n toWrite: RecordWriteOp | RecordWriteOp[],\n keypair: crypto.Keypair,\n ): Promise<CommitData> {\n const writes = Array.isArray(toWrite) ? toWrite : [toWrite]\n const leaves = new BlockMap()\n\n let data = this.data\n for (const write of writes) {\n if (write.action === WriteOpAction.Create) {\n const cid = await leaves.add(write.record)\n const dataKey = write.collection + '/' + write.rkey\n data = await data.add(dataKey, cid)\n } else if (write.action === WriteOpAction.Update) {\n const cid = await leaves.add(write.record)\n const dataKey = write.collection + '/' + write.rkey\n data = await data.update(dataKey, cid)\n } else if (write.action === WriteOpAction.Delete) {\n const dataKey = write.collection + '/' + write.rkey\n data = await data.delete(dataKey)\n }\n }\n\n const dataCid = await data.getPointer()\n const diff = await DataDiff.of(data, this.data)\n const newBlocks = diff.newMstBlocks\n const removedCids = diff.removedCids\n\n const addedLeaves = leaves.getMany(diff.newLeafCids.toList())\n if (addedLeaves.missing.length > 0) {\n throw new Error(`Missing leaf blocks: ${addedLeaves.missing}`)\n }\n newBlocks.addMap(addedLeaves.blocks)\n\n const rev = TID.nextStr(this.commit.rev)\n const commit = await util.signCommit(\n {\n did: this.did,\n version: 3,\n rev,\n prev: null, // added for backwards compatibility with v2\n data: dataCid,\n },\n keypair,\n )\n const commitCid = await newBlocks.add(commit)\n\n // ensure the commit cid actually changed\n if (commitCid.equals(this.cid)) {\n newBlocks.delete(commitCid)\n } else {\n removedCids.add(this.cid)\n }\n\n return {\n cid: commitCid,\n rev,\n since: this.commit.rev,\n prev: this.cid,\n newBlocks,\n removedCids,\n }\n }\n\n async applyCommit(commitData: CommitData): Promise<Repo> {\n await this.storage.applyCommit(commitData)\n return Repo.load(this.storage, commitData.cid)\n }\n\n async applyWrites(\n toWrite: RecordWriteOp | RecordWriteOp[],\n keypair: crypto.Keypair,\n ): Promise<Repo> {\n const commit = await this.formatCommit(toWrite, keypair)\n return this.applyCommit(commit)\n }\n\n async formatResignCommit(rev: string, keypair: crypto.Keypair) {\n const commit = await util.signCommit(\n {\n did: this.did,\n version: 3,\n rev,\n prev: null, // added for backwards compatibility with v2\n data: this.commit.data,\n },\n keypair,\n )\n const newBlocks = new BlockMap()\n const commitCid = await newBlocks.add(commit)\n return {\n cid: commitCid,\n rev,\n since: null,\n prev: null,\n newBlocks,\n removedCids: new CidSet([this.cid]),\n }\n }\n\n async resignCommit(rev: string, keypair: crypto.Keypair) {\n const formatted = await this.formatResignCommit(rev, keypair)\n return this.applyCommit(formatted)\n }\n}\n\nexport default Repo\n", "import { check } from '@atproto/common'\nimport { RepoRecord } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport BlockMap from '../block-map'\nimport { MissingBlockError } from '../error'\nimport * as parse from '../parse'\nimport { cborToLexRecord } from '../util'\n\nexport abstract class ReadableBlockstore {\n abstract getBytes(cid: CID): Promise<Uint8Array | null>\n abstract has(cid: CID): Promise<boolean>\n abstract getBlocks(cids: CID[]): Promise<{ blocks: BlockMap; missing: CID[] }>\n\n async attemptRead<T>(\n cid: CID,\n def: check.Def<T>,\n ): Promise<{ obj: T; bytes: Uint8Array } | null> {\n const bytes = await this.getBytes(cid)\n if (!bytes) return null\n return parse.parseObjByDef(bytes, cid, def)\n }\n\n async readObjAndBytes<T>(\n cid: CID,\n def: check.Def<T>,\n ): Promise<{ obj: T; bytes: Uint8Array }> {\n const read = await this.attemptRead(cid, def)\n if (!read) {\n throw new MissingBlockError(cid, def.name)\n }\n return read\n }\n\n async readObj<T>(cid: CID, def: check.Def<T>): Promise<T> {\n const obj = await this.readObjAndBytes(cid, def)\n return obj.obj\n }\n\n async attemptReadRecord(cid: CID): Promise<RepoRecord | null> {\n try {\n return await this.readRecord(cid)\n } catch {\n return null\n }\n }\n\n async readRecord(cid: CID): Promise<RepoRecord> {\n const bytes = await this.getBytes(cid)\n if (!bytes) {\n throw new MissingBlockError(cid)\n }\n return cborToLexRecord(bytes)\n }\n}\n\nexport default ReadableBlockstore\n", "import { CID } from 'multiformats/cid'\nimport { CommitData } from '../types'\nimport BlockMap from '../block-map'\nimport ReadableBlockstore from './readable-blockstore'\nimport { RepoStorage } from './types'\n\nexport class MemoryBlockstore\n extends ReadableBlockstore\n implements RepoStorage\n{\n blocks: BlockMap\n root: CID | null = null\n rev: string | null = null\n\n constructor(blocks?: BlockMap) {\n super()\n this.blocks = new BlockMap()\n if (blocks) {\n this.blocks.addMap(blocks)\n }\n }\n\n async getRoot(): Promise<CID | null> {\n return this.root\n }\n\n async getBytes(cid: CID): Promise<Uint8Array | null> {\n return this.blocks.get(cid) || null\n }\n\n async has(cid: CID): Promise<boolean> {\n return this.blocks.has(cid)\n }\n\n async getBlocks(cids: CID[]): Promise<{ blocks: BlockMap; missing: CID[] }> {\n return this.blocks.getMany(cids)\n }\n\n async putBlock(cid: CID, block: Uint8Array): Promise<void> {\n this.blocks.set(cid, block)\n }\n\n async putMany(blocks: BlockMap): Promise<void> {\n this.blocks.addMap(blocks)\n }\n\n async updateRoot(cid: CID, rev: string): Promise<void> {\n this.root = cid\n this.rev = rev\n }\n\n async applyCommit(commit: CommitData): Promise<void> {\n this.root = commit.cid\n const rmCids = commit.removedCids.toList()\n for (const cid of rmCids) {\n this.blocks.delete(cid)\n }\n commit.newBlocks.forEach((bytes, cid) => {\n this.blocks.set(cid, bytes)\n })\n }\n\n async sizeInBytes(): Promise<number> {\n let total = 0\n this.blocks.forEach((bytes) => {\n total += bytes.byteLength\n })\n return total\n }\n\n async destroy(): Promise<void> {\n this.blocks.clear()\n }\n}\n\nexport default MemoryBlockstore\n", "import { CID } from 'multiformats/cid'\nimport BlockMap from '../block-map'\nimport ReadableBlockstore from './readable-blockstore'\n\nexport class SyncStorage extends ReadableBlockstore {\n constructor(\n public staged: ReadableBlockstore,\n public saved: ReadableBlockstore,\n ) {\n super()\n }\n\n async getBytes(cid: CID): Promise<Uint8Array | null> {\n const got = await this.staged.getBytes(cid)\n if (got) return got\n return this.saved.getBytes(cid)\n }\n\n async getBlocks(cids: CID[]): Promise<{ blocks: BlockMap; missing: CID[] }> {\n const fromStaged = await this.staged.getBlocks(cids)\n const fromSaved = await this.saved.getBlocks(fromStaged.missing)\n const blocks = fromStaged.blocks\n blocks.addMap(fromSaved.blocks)\n return {\n blocks,\n missing: fromSaved.missing,\n }\n }\n\n async has(cid: CID): Promise<boolean> {\n return (await this.staged.has(cid)) || (await this.saved.has(cid))\n }\n}\n\nexport default SyncStorage\n", "import stream from 'stream'\nimport { CID } from 'multiformats/cid'\nimport { RepoRecord } from '@atproto/lexicon'\nimport { check } from '@atproto/common'\nimport BlockMap from '../block-map'\nimport { CommitData } from '../types'\n\nexport interface RepoStorage {\n // Writable\n getRoot(): Promise<CID | null>\n putBlock(cid: CID, block: Uint8Array, rev: string): Promise<void>\n putMany(blocks: BlockMap, rev: string): Promise<void>\n updateRoot(cid: CID, rev: string): Promise<void>\n applyCommit(commit: CommitData)\n\n // Readable\n getBytes(cid: CID): Promise<Uint8Array | null>\n has(cid: CID): Promise<boolean>\n getBlocks(cids: CID[]): Promise<{ blocks: BlockMap; missing: CID[] }>\n attemptRead<T>(\n cid: CID,\n def: check.Def<T>,\n ): Promise<{ obj: T; bytes: Uint8Array } | null>\n readObjAndBytes<T>(\n cid: CID,\n def: check.Def<T>,\n ): Promise<{ obj: T; bytes: Uint8Array }>\n readObj<T>(cid: CID, def: check.Def<T>): Promise<T>\n attemptReadRecord(cid: CID): Promise<RepoRecord | null>\n readRecord(cid: CID): Promise<RepoRecord>\n}\n\nexport interface BlobStore {\n putTemp(bytes: Uint8Array | stream.Readable): Promise<string>\n makePermanent(key: string, cid: CID): Promise<void>\n putPermanent(cid: CID, bytes: Uint8Array | stream.Readable): Promise<void>\n quarantine(cid: CID): Promise<void>\n unquarantine(cid: CID): Promise<void>\n getBytes(cid: CID): Promise<Uint8Array>\n getStream(cid: CID): Promise<stream.Readable>\n hasTemp(key: string): Promise<boolean>\n hasStored(cid: CID): Promise<boolean>\n delete(cid: CID): Promise<void>\n deleteMany(cid: CID[]): Promise<void>\n}\n\nexport class BlobNotFoundError extends Error {}\n", "import { CID } from 'multiformats/cid'\nimport { MemoryBlockstore, ReadableBlockstore, SyncStorage } from '../storage'\nimport DataDiff from '../data-diff'\nimport ReadableRepo from '../readable-repo'\nimport * as util from '../util'\nimport { RecordClaim, VerifiedDiff, VerifiedRepo } from '../types'\nimport { def } from '../types'\nimport { MST } from '../mst'\nimport { cidForCbor } from '@atproto/common'\nimport BlockMap from '../block-map'\n\nexport const verifyRepoCar = async (\n carBytes: Uint8Array,\n did?: string,\n signingKey?: string,\n): Promise<VerifiedRepo> => {\n const car = await util.readCarWithRoot(carBytes)\n return verifyRepo(car.blocks, car.root, did, signingKey)\n}\n\nexport const verifyRepo = async (\n blocks: BlockMap,\n head: CID,\n did?: string,\n signingKey?: string,\n opts?: { ensureLeaves?: boolean },\n): Promise<VerifiedRepo> => {\n const diff = await verifyDiff(null, blocks, head, did, signingKey, opts)\n const creates = util.ensureCreates(diff.writes)\n return {\n creates,\n commit: diff.commit,\n }\n}\n\nexport const verifyDiffCar = async (\n repo: ReadableRepo | null,\n carBytes: Uint8Array,\n did?: string,\n signingKey?: string,\n opts?: { ensureLeaves?: boolean },\n): Promise<VerifiedDiff> => {\n const car = await util.readCarWithRoot(carBytes)\n return verifyDiff(repo, car.blocks, car.root, did, signingKey, opts)\n}\n\nexport const verifyDiff = async (\n repo: ReadableRepo | null,\n updateBlocks: BlockMap,\n updateRoot: CID,\n did?: string,\n signingKey?: string,\n opts?: { ensureLeaves?: boolean },\n): Promise<VerifiedDiff> => {\n const { ensureLeaves = true } = opts ?? {}\n const stagedStorage = new MemoryBlockstore(updateBlocks)\n const updateStorage = repo\n ? new SyncStorage(stagedStorage, repo.storage)\n : stagedStorage\n const updated = await verifyRepoRoot(\n updateStorage,\n updateRoot,\n did,\n signingKey,\n )\n const diff = await DataDiff.of(updated.data, repo?.data ?? null)\n const writes = await util.diffToWriteDescripts(diff)\n const newBlocks = diff.newMstBlocks\n const leaves = updateBlocks.getMany(diff.newLeafCids.toList())\n if (leaves.missing.length > 0 && ensureLeaves) {\n throw new Error(`missing leaf blocks: ${leaves.missing}`)\n }\n newBlocks.addMap(leaves.blocks)\n const removedCids = diff.removedCids\n const commitCid = await newBlocks.add(updated.commit)\n // ensure the commit cid actually changed\n if (repo) {\n if (commitCid.equals(repo.cid)) {\n newBlocks.delete(commitCid)\n } else {\n removedCids.add(repo.cid)\n }\n }\n return {\n writes,\n commit: {\n cid: updated.cid,\n rev: updated.commit.rev,\n prev: repo?.cid ?? null,\n since: repo?.commit.rev ?? null,\n newBlocks,\n removedCids,\n },\n }\n}\n\n// @NOTE only verifies the root, not the repo contents\nconst verifyRepoRoot = async (\n storage: ReadableBlockstore,\n head: CID,\n did?: string,\n signingKey?: string,\n): Promise<ReadableRepo> => {\n const repo = await ReadableRepo.load(storage, head)\n if (did !== undefined && repo.did !== did) {\n throw new RepoVerificationError(`Invalid repo did: ${repo.did}`)\n }\n if (signingKey !== undefined) {\n const validSig = await util.verifyCommitSig(repo.commit, signingKey)\n if (!validSig) {\n throw new RepoVerificationError(\n `Invalid signature on commit: ${repo.cid.toString()}`,\n )\n }\n }\n return repo\n}\n\nexport const verifyProofs = async (\n proofs: Uint8Array,\n claims: RecordClaim[],\n did: string,\n didKey: string,\n): Promise<{ verified: RecordClaim[]; unverified: RecordClaim[] }> => {\n const car = await util.readCarWithRoot(proofs)\n const blockstore = new MemoryBlockstore(car.blocks)\n const commit = await blockstore.readObj(car.root, def.commit)\n if (commit.did !== did) {\n throw new RepoVerificationError(`Invalid repo did: ${commit.did}`)\n }\n const validSig = await util.verifyCommitSig(commit, didKey)\n if (!validSig) {\n throw new RepoVerificationError(\n `Invalid signature on commit: ${car.root.toString()}`,\n )\n }\n const mst = MST.load(blockstore, commit.data)\n const verified: RecordClaim[] = []\n const unverified: RecordClaim[] = []\n for (const claim of claims) {\n const found = await mst.get(\n util.formatDataKey(claim.collection, claim.rkey),\n )\n const record = found ? await blockstore.readObj(found, def.map) : null\n if (claim.record === null) {\n if (record === null) {\n verified.push(claim)\n } else {\n unverified.push(claim)\n }\n } else {\n const expected = await cidForCbor(claim.record)\n if (expected.equals(found)) {\n verified.push(claim)\n } else {\n unverified.push(claim)\n }\n }\n }\n return { verified, unverified }\n}\n\nexport const verifyRecords = async (\n proofs: Uint8Array,\n did: string,\n signingKey: string,\n): Promise<RecordClaim[]> => {\n const car = await util.readCarWithRoot(proofs)\n const blockstore = new MemoryBlockstore(car.blocks)\n const commit = await blockstore.readObj(car.root, def.commit)\n if (commit.did !== did) {\n throw new RepoVerificationError(`Invalid repo did: ${commit.did}`)\n }\n const validSig = await util.verifyCommitSig(commit, signingKey)\n if (!validSig) {\n throw new RepoVerificationError(\n `Invalid signature on commit: ${car.root.toString()}`,\n )\n }\n const mst = MST.load(blockstore, commit.data)\n\n const records: RecordClaim[] = []\n const leaves = await mst.reachableLeaves()\n for (const leaf of leaves) {\n const { collection, rkey } = util.parseDataKey(leaf.key)\n const record = await blockstore.attemptReadRecord(leaf.value)\n if (record) {\n records.push({\n collection,\n rkey,\n record,\n })\n }\n }\n return records\n}\n\nexport class RepoVerificationError extends Error {}\n", "import { def, RecordPath } from '../types'\nimport { BlockWriter } from '@ipld/car/writer'\nimport { CID } from 'multiformats/cid'\nimport CidSet from '../cid-set'\nimport { MissingBlocksError } from '../error'\nimport { ReadableBlockstore, RepoStorage } from '../storage'\nimport * as util from '../util'\nimport { MST } from '../mst'\n\n// Full Repo\n// -------------\n\nexport const getFullRepo = (\n storage: RepoStorage,\n commitCid: CID,\n): AsyncIterable<Uint8Array> => {\n return util.writeCar(commitCid, async (car: BlockWriter) => {\n const commit = await storage.readObjAndBytes(commitCid, def.commit)\n await car.put({ cid: commitCid, bytes: commit.bytes })\n const mst = MST.load(storage, commit.obj.data)\n await mst.writeToCarStream(car)\n })\n}\n\n// Narrow slices\n// -------------\n\nexport const getRecords = (\n storage: ReadableBlockstore,\n commitCid: CID,\n paths: RecordPath[],\n): AsyncIterable<Uint8Array> => {\n return util.writeCar(commitCid, async (car: BlockWriter) => {\n const commit = await storage.readObjAndBytes(commitCid, def.commit)\n await car.put({ cid: commitCid, bytes: commit.bytes })\n const mst = MST.load(storage, commit.obj.data)\n const cidsForPaths = await Promise.all(\n paths.map((p) =>\n mst.cidsForPath(util.formatDataKey(p.collection, p.rkey)),\n ),\n )\n const allCids = cidsForPaths.reduce((acc, cur) => {\n return acc.addSet(new CidSet(cur))\n }, new CidSet())\n const found = await storage.getBlocks(allCids.toList())\n if (found.missing.length > 0) {\n throw new MissingBlocksError('writeRecordsToCarStream', found.missing)\n }\n for (const block of found.blocks.entries()) {\n await car.put(block)\n }\n })\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,4CAAyB;AACzB,yCAAsB;AACtB,wCAAqB;AACrB,0CAAuB;AACvB,4CAAyB;AACzB,yCAAsB;AACtB,0CAAuB;AACvB,8CAA2B;AAC3B,yCAAsB"}
|